From 6cd7b13db0d3563a76d2afff00814e9c9ff735ef Mon Sep 17 00:00:00 2001 From: Ivor Barhansky Date: Thu, 11 Aug 2022 13:38:38 +0300 Subject: [PATCH 1/5] =?UTF-8?q?=D0=A1=D0=B8=D1=85=D1=80=D0=BE=D0=BD=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D1=81=20=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D1=83=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9=20=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=81=D0=B8=D0=B5=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _incl_data/__config.php | 50 +- _incl_data/class/Insallah/Config.php | 17 + _incl_data/class/Insallah/Core/Math.php | 7 +- .../Insallah/Tournament/TournamentModel.php | 9 +- _incl_data/class/PriemsMain.php | 14 + _incl_data/class/UserStats.php | 36 + _incl_data/class/__battle.php | 18844 +++++++++------- _incl_data/class/__battle.php-cleared | 8360 +++++++ _incl_data/class/__magic.php.bac | 2482 -- _incl_data/class/__seasons.php | 62 +- _incl_data/class/__user.php | 2696 +-- _incl_data/class/_cron_.php | 4959 ++-- _incl_data/class/ai.login.php | 21 - _incl_data/class/dealer.php | 294 - _incl_data/class/dn_editor.php | 63 - _incl_data/class/index.php | 0 _incl_data/class/inf.php | 1122 - _incl_data/class/items_info.php | 1295 -- _incl_data/class/magic/Elemental/Fire.php | 45 + _incl_data/class/magic/yarostzvezd.php | 107 +- _incl_data/class/noob.quests.php | 196 - _incl_data/class/priem/100.php | 8 +- _incl_data/class/priem/101.php | 8 +- _incl_data/class/priem/108.php | 4 +- _incl_data/class/priem/109.php | 4 +- _incl_data/class/priem/110.php | 4 +- _incl_data/class/priem/141.php | 206 +- _incl_data/class/priem/142.php | 251 +- _incl_data/class/priem/144.php | 251 +- _incl_data/class/priem/145.php | 251 +- _incl_data/class/priem/146.php | 251 +- _incl_data/class/priem/15.php | 2 - _incl_data/class/priem/16.php | 3 +- _incl_data/class/priem/161.php | 22 +- _incl_data/class/priem/162.php | 2 +- _incl_data/class/priem/163.php | 2 +- _incl_data/class/priem/17.php | 5 +- _incl_data/class/priem/18.php | 4 +- _incl_data/class/priem/180.php | 2 +- _incl_data/class/priem/243.php | 214 +- _incl_data/class/priem/244.php | 198 +- _incl_data/class/priem/25.php | 86 +- _incl_data/class/priem/250.php | 6 +- _incl_data/class/priem/255.php | 3 +- _incl_data/class/priem/256.php | 16 +- _incl_data/class/priem/259.php | 4 +- _incl_data/class/priem/26.php | 86 +- _incl_data/class/priem/260.php | 78 +- _incl_data/class/priem/261.php | 195 +- _incl_data/class/priem/267.php | 8 +- _incl_data/class/priem/27.php | 86 +- _incl_data/class/priem/28.php | 86 +- _incl_data/class/priem/290.php | 2 +- _incl_data/class/priem/33.php | 179 +- _incl_data/class/priem/34.php | 120 +- _incl_data/class/priem/38.php | 6 +- _incl_data/class/priem/39.php | 7 +- _incl_data/class/priem/50.php | 3 +- _incl_data/class/priem/51.php | 3 +- _incl_data/class/priem/52.php | 20 +- _incl_data/class/priem/53.php | 3 +- _incl_data/class/priem/54.php | 3 +- _incl_data/class/priem/55.php | 3 +- _incl_data/class/priem/56.php | 179 +- _incl_data/class/priem/57.php | 179 +- _incl_data/class/priem/58.php | 182 +- _incl_data/class/priem/59.php | 185 +- _incl_data/class/priem/60.php | 182 +- _incl_data/class/priem/67.php | 119 +- _incl_data/class/priem/68.php | 119 +- _incl_data/class/priem/69.php | 119 +- _incl_data/class/priem/7.php | 15 +- _incl_data/class/priem/91.php | 4 +- _incl_data/class/priem/92.php | 4 +- _incl_data/class/priem/93.php | 4 +- _incl_data/class/priem/94.php | 5 +- _incl_data/class/priem/95.php | 3 +- _incl_data/class/priem/96.php | 4 +- _incl_data/class/priem/97.php | 8 +- _incl_data/class/priem/98.php | 8 +- _incl_data/class/priem/99.php | 8 +- _incl_data/class/priem/_notes/readme.md | 3 + _incl_data/class/priems/_notes/readme.md | 1 + _incl_data/class/priems/fire.php | 2 +- core1/.htaccess | 9 - core1/app/.htaccess | 1 - core1/app/core/.htaccess | 1 - core1/app/core/chat.php | 30 - core1/app/core/database.php | 45 - core1/app/core/generalexception.php | 24 - core1/app/core/item.php | 79 - core1/app/core/route.php | 62 - core1/app/core/user.php | 160 - core1/app/core/utils.php | 376 - core1/app/core/view.php | 16 - core1/app/html/.htaccess | 1 - core1/app/html/admin.html | 31 - core1/app/html/auction.html | 61 - core1/app/html/comission.html | 85 - core1/app/html/debuger.html | 25 - core1/app/init.php | 13 - core1/app/logic/.htaccess | 1 - core1/app/logic/admin.php | 66 - core1/app/logic/auction.php | 551 - core1/app/logic/comission.php | 569 - core1/app/logic/debuger.php | 83 - core1/index.php | 31 - core1/lib/.htaccess | 1 - core1/lib/Twig/.htaccess | 1 - core1/lib/Twig/Autoloader.php | 43 - core1/lib/Twig/Compiler.php | 267 - core1/lib/Twig/CompilerInterface.php | 35 - core1/lib/Twig/Environment.php | 1217 - core1/lib/Twig/Error.php | 232 - core1/lib/Twig/Error/Loader.php | 31 - core1/lib/Twig/Error/Runtime.php | 20 - core1/lib/Twig/Error/Syntax.php | 20 - core1/lib/Twig/ExistsLoaderInterface.php | 28 - core1/lib/Twig/ExpressionParser.php | 600 - core1/lib/Twig/Extension.php | 93 - core1/lib/Twig/Extension/Core.php | 1344 -- core1/lib/Twig/Extension/Debug.php | 70 - core1/lib/Twig/Extension/Escaper.php | 107 - core1/lib/Twig/Extension/Optimizer.php | 35 - core1/lib/Twig/Extension/Sandbox.php | 112 - core1/lib/Twig/Extension/Staging.php | 113 - core1/lib/Twig/Extension/StringLoader.php | 64 - core1/lib/Twig/ExtensionInterface.php | 83 - core1/lib/Twig/Filter.php | 83 - core1/lib/Twig/Filter/Function.php | 37 - core1/lib/Twig/Filter/Method.php | 39 - core1/lib/Twig/Filter/Node.php | 39 - core1/lib/Twig/FilterCallableInterface.php | 23 - core1/lib/Twig/FilterInterface.php | 42 - core1/lib/Twig/Function.php | 71 - core1/lib/Twig/Function/Function.php | 38 - core1/lib/Twig/Function/Method.php | 40 - core1/lib/Twig/Function/Node.php | 39 - core1/lib/Twig/FunctionCallableInterface.php | 23 - core1/lib/Twig/FunctionInterface.php | 39 - core1/lib/Twig/Lexer.php | 408 - core1/lib/Twig/LexerInterface.php | 29 - core1/lib/Twig/Loader/Array.php | 98 - core1/lib/Twig/Loader/Chain.php | 135 - core1/lib/Twig/Loader/Filesystem.php | 220 - core1/lib/Twig/Loader/String.php | 59 - core1/lib/Twig/LoaderInterface.php | 52 - core1/lib/Twig/Markup.php | 37 - core1/lib/Twig/Node.php | 226 - core1/lib/Twig/Node/AutoEscape.php | 39 - core1/lib/Twig/Node/Block.php | 44 - core1/lib/Twig/Node/BlockReference.php | 37 - core1/lib/Twig/Node/Body.php | 19 - core1/lib/Twig/Node/Do.php | 38 - core1/lib/Twig/Node/Embed.php | 38 - core1/lib/Twig/Node/Expression.php | 20 - core1/lib/Twig/Node/Expression/Array.php | 86 - core1/lib/Twig/Node/Expression/AssignName.php | 28 - core1/lib/Twig/Node/Expression/Binary.php | 40 - core1/lib/Twig/Node/Expression/Binary/Add.php | 18 - core1/lib/Twig/Node/Expression/Binary/And.php | 18 - .../Node/Expression/Binary/BitwiseAnd.php | 18 - .../Twig/Node/Expression/Binary/BitwiseOr.php | 18 - .../Node/Expression/Binary/BitwiseXor.php | 18 - .../Twig/Node/Expression/Binary/Concat.php | 18 - core1/lib/Twig/Node/Expression/Binary/Div.php | 18 - .../lib/Twig/Node/Expression/Binary/Equal.php | 17 - .../Twig/Node/Expression/Binary/FloorDiv.php | 29 - .../Twig/Node/Expression/Binary/Greater.php | 17 - .../Node/Expression/Binary/GreaterEqual.php | 17 - core1/lib/Twig/Node/Expression/Binary/In.php | 33 - .../lib/Twig/Node/Expression/Binary/Less.php | 17 - .../Twig/Node/Expression/Binary/LessEqual.php | 17 - core1/lib/Twig/Node/Expression/Binary/Mod.php | 18 - core1/lib/Twig/Node/Expression/Binary/Mul.php | 18 - .../Twig/Node/Expression/Binary/NotEqual.php | 17 - .../lib/Twig/Node/Expression/Binary/NotIn.php | 33 - core1/lib/Twig/Node/Expression/Binary/Or.php | 18 - .../lib/Twig/Node/Expression/Binary/Power.php | 33 - .../lib/Twig/Node/Expression/Binary/Range.php | 33 - core1/lib/Twig/Node/Expression/Binary/Sub.php | 18 - .../Twig/Node/Expression/BlockReference.php | 51 - core1/lib/Twig/Node/Expression/Call.php | 171 - .../lib/Twig/Node/Expression/Conditional.php | 31 - core1/lib/Twig/Node/Expression/Constant.php | 23 - .../Node/Expression/ExtensionReference.php | 33 - core1/lib/Twig/Node/Expression/Filter.php | 36 - .../Twig/Node/Expression/Filter/Default.php | 43 - core1/lib/Twig/Node/Expression/Function.php | 35 - core1/lib/Twig/Node/Expression/GetAttr.php | 53 - core1/lib/Twig/Node/Expression/MethodCall.php | 41 - core1/lib/Twig/Node/Expression/Name.php | 88 - core1/lib/Twig/Node/Expression/Parent.php | 47 - core1/lib/Twig/Node/Expression/TempName.php | 26 - core1/lib/Twig/Node/Expression/Test.php | 32 - .../Twig/Node/Expression/Test/Constant.php | 35 - .../lib/Twig/Node/Expression/Test/Defined.php | 54 - .../Twig/Node/Expression/Test/Divisibleby.php | 33 - core1/lib/Twig/Node/Expression/Test/Even.php | 32 - core1/lib/Twig/Node/Expression/Test/Null.php | 31 - core1/lib/Twig/Node/Expression/Test/Odd.php | 32 - .../lib/Twig/Node/Expression/Test/Sameas.php | 29 - core1/lib/Twig/Node/Expression/Unary.php | 30 - core1/lib/Twig/Node/Expression/Unary/Neg.php | 18 - core1/lib/Twig/Node/Expression/Unary/Not.php | 18 - core1/lib/Twig/Node/Expression/Unary/Pos.php | 18 - core1/lib/Twig/Node/Flush.php | 36 - core1/lib/Twig/Node/For.php | 112 - core1/lib/Twig/Node/ForLoop.php | 55 - core1/lib/Twig/Node/If.php | 66 - core1/lib/Twig/Node/Import.php | 50 - core1/lib/Twig/Node/Include.php | 99 - core1/lib/Twig/Node/Macro.php | 96 - core1/lib/Twig/Node/Module.php | 371 - core1/lib/Twig/Node/Print.php | 39 - core1/lib/Twig/Node/Sandbox.php | 47 - core1/lib/Twig/Node/SandboxedModule.php | 60 - core1/lib/Twig/Node/SandboxedPrint.php | 59 - core1/lib/Twig/Node/Set.php | 101 - core1/lib/Twig/Node/SetTemp.php | 35 - core1/lib/Twig/Node/Spaceless.php | 40 - core1/lib/Twig/Node/Text.php | 39 - core1/lib/Twig/NodeInterface.php | 30 - core1/lib/Twig/NodeOutputInterface.php | 19 - core1/lib/Twig/NodeTraverser.php | 88 - core1/lib/Twig/NodeVisitor/Escaper.php | 167 - core1/lib/Twig/NodeVisitor/Optimizer.php | 246 - core1/lib/Twig/NodeVisitor/SafeAnalysis.php | 133 - core1/lib/Twig/NodeVisitor/Sandbox.php | 92 - core1/lib/Twig/NodeVisitorInterface.php | 47 - core1/lib/Twig/Parser.php | 394 - core1/lib/Twig/ParserInterface.php | 28 - core1/lib/Twig/Sandbox/SecurityError.php | 19 - core1/lib/Twig/Sandbox/SecurityPolicy.php | 119 - .../Twig/Sandbox/SecurityPolicyInterface.php | 24 - core1/lib/Twig/SimpleFilter.php | 96 - core1/lib/Twig/SimpleFunction.php | 84 - core1/lib/Twig/SimpleTest.php | 46 - core1/lib/Twig/Template.php | 453 - core1/lib/Twig/TemplateInterface.php | 47 - core1/lib/Twig/Test.php | 34 - core1/lib/Twig/Test/Function.php | 35 - core1/lib/Twig/Test/IntegrationTestCase.php | 154 - core1/lib/Twig/Test/Method.php | 37 - core1/lib/Twig/Test/Node.php | 37 - core1/lib/Twig/Test/NodeTestCase.php | 58 - core1/lib/Twig/TestCallableInterface.php | 21 - core1/lib/Twig/TestInterface.php | 26 - core1/lib/Twig/Token.php | 218 - core1/lib/Twig/TokenParser.php | 33 - core1/lib/Twig/TokenParser/AutoEscape.php | 89 - core1/lib/Twig/TokenParser/Block.php | 83 - core1/lib/Twig/TokenParser/Do.php | 42 - core1/lib/Twig/TokenParser/Embed.php | 66 - core1/lib/Twig/TokenParser/Extends.php | 54 - core1/lib/Twig/TokenParser/Filter.php | 61 - core1/lib/Twig/TokenParser/Flush.php | 42 - core1/lib/Twig/TokenParser/For.php | 136 - core1/lib/Twig/TokenParser/From.php | 74 - core1/lib/Twig/TokenParser/If.php | 94 - core1/lib/Twig/TokenParser/Import.php | 49 - core1/lib/Twig/TokenParser/Include.php | 80 - core1/lib/Twig/TokenParser/Macro.php | 70 - core1/lib/Twig/TokenParser/Sandbox.php | 68 - core1/lib/Twig/TokenParser/Set.php | 84 - core1/lib/Twig/TokenParser/Spaceless.php | 59 - core1/lib/Twig/TokenParser/Use.php | 84 - core1/lib/Twig/TokenParserBroker.php | 138 - core1/lib/Twig/TokenParserBrokerInterface.php | 45 - core1/lib/Twig/TokenParserInterface.php | 41 - core1/lib/Twig/TokenStream.php | 144 - core1/log/error.log | 492 - core1/static/fonts/ARDESTINE.ttf | Bin 45870 -> 0 bytes core1/static/fonts/ARESSENCE.ttf | Bin 73326 -> 0 bytes core1/static/fonts/Bradley Hand ITC.ttf | Bin 105301 -> 0 bytes core1/static/fonts/CHILLER.ttf | Bin 96457 -> 0 bytes core1/static/fonts/Edgar_da_cool_Regular.ttf | Bin 49620 -> 0 bytes core1/static/fonts/FRSCRIPT.ttf | Bin 58585 -> 0 bytes core1/static/fonts/Fh_Script_Regular.ttf | Bin 30609 -> 0 bytes core1/static/fonts/Gabo4_Gabo4.ttf | Bin 67340 -> 0 bytes core1/static/fonts/Hurryup_Hurryup.ttf | Bin 18184 -> 0 bytes core1/static/fonts/JAMI_Regular.ttf | Bin 44880 -> 0 bytes core1/static/fonts/Justy1_Regular.ttf | Bin 36109 -> 0 bytes core1/static/fonts/cour.ttf | Bin 719849 -> 0 bytes core1/static/fonts/courbd.ttf | Bin 718445 -> 0 bytes core1/static/fonts/courbi.ttf | Bin 523957 -> 0 bytes core1/static/fonts/couri.ttf | Bin 615125 -> 0 bytes core1/static/fonts/de_Manu_2_Regular.ttf | Bin 42408 -> 0 bytes core1/static/image.php | 57 - core1/static/scripts/item.js | 466 - core1/static/scripts/location.line.js | 84 - core1/static/scripts/location/auction.js | 555 - core1/static/scripts/location/comission.js | 463 - core1/static/scripts/location/debuger.js | 33 - core1/static/styles/location/auction.css | 132 - .../static/styles/location/auction_ie_fix.css | 18 - core1/static/styles/location/comission.css | 114 - cron/auction.php | 92 +- cron/battle_optimize.php | 60 +- cron/clear.php | 3 + cron/comission.php | 78 +- cron/comission.php.bac | 70 - cron/rupor.php | 55 +- cron/stats_correct.php | 50 +- err.php | 22 + inf.php | 68 +- items_info.php | 2752 ++- jx/battle/log_text.php | 27 +- logs.php | 3 +- main.php | 90 +- modules_data/1_panel.php | 152 +- modules_data/location/ab/hramOLD.php | 394 + modules_data/location/bank.bac.php | 943 + modules_data/location/btl_.php | 2 +- test1.php | 5 - 315 files changed, 27411 insertions(+), 40772 deletions(-) create mode 100644 _incl_data/class/Insallah/Config.php create mode 100644 _incl_data/class/PriemsMain.php create mode 100644 _incl_data/class/UserStats.php create mode 100644 _incl_data/class/__battle.php-cleared delete mode 100644 _incl_data/class/__magic.php.bac delete mode 100644 _incl_data/class/ai.login.php delete mode 100644 _incl_data/class/dealer.php delete mode 100644 _incl_data/class/dn_editor.php delete mode 100644 _incl_data/class/index.php delete mode 100644 _incl_data/class/inf.php delete mode 100644 _incl_data/class/items_info.php create mode 100644 _incl_data/class/magic/Elemental/Fire.php delete mode 100644 _incl_data/class/noob.quests.php create mode 100644 _incl_data/class/priem/_notes/readme.md create mode 100644 _incl_data/class/priems/_notes/readme.md delete mode 100644 core1/.htaccess delete mode 100644 core1/app/.htaccess delete mode 100644 core1/app/core/.htaccess delete mode 100644 core1/app/core/chat.php delete mode 100644 core1/app/core/database.php delete mode 100644 core1/app/core/generalexception.php delete mode 100644 core1/app/core/item.php delete mode 100644 core1/app/core/route.php delete mode 100644 core1/app/core/user.php delete mode 100644 core1/app/core/utils.php delete mode 100644 core1/app/core/view.php delete mode 100644 core1/app/html/.htaccess delete mode 100644 core1/app/html/admin.html delete mode 100644 core1/app/html/auction.html delete mode 100644 core1/app/html/comission.html delete mode 100644 core1/app/html/debuger.html delete mode 100644 core1/app/init.php delete mode 100644 core1/app/logic/.htaccess delete mode 100644 core1/app/logic/admin.php delete mode 100644 core1/app/logic/auction.php delete mode 100644 core1/app/logic/comission.php delete mode 100644 core1/app/logic/debuger.php delete mode 100644 core1/index.php delete mode 100644 core1/lib/.htaccess delete mode 100644 core1/lib/Twig/.htaccess delete mode 100644 core1/lib/Twig/Autoloader.php delete mode 100644 core1/lib/Twig/Compiler.php delete mode 100644 core1/lib/Twig/CompilerInterface.php delete mode 100644 core1/lib/Twig/Environment.php delete mode 100644 core1/lib/Twig/Error.php delete mode 100644 core1/lib/Twig/Error/Loader.php delete mode 100644 core1/lib/Twig/Error/Runtime.php delete mode 100644 core1/lib/Twig/Error/Syntax.php delete mode 100644 core1/lib/Twig/ExistsLoaderInterface.php delete mode 100644 core1/lib/Twig/ExpressionParser.php delete mode 100644 core1/lib/Twig/Extension.php delete mode 100644 core1/lib/Twig/Extension/Core.php delete mode 100644 core1/lib/Twig/Extension/Debug.php delete mode 100644 core1/lib/Twig/Extension/Escaper.php delete mode 100644 core1/lib/Twig/Extension/Optimizer.php delete mode 100644 core1/lib/Twig/Extension/Sandbox.php delete mode 100644 core1/lib/Twig/Extension/Staging.php delete mode 100644 core1/lib/Twig/Extension/StringLoader.php delete mode 100644 core1/lib/Twig/ExtensionInterface.php delete mode 100644 core1/lib/Twig/Filter.php delete mode 100644 core1/lib/Twig/Filter/Function.php delete mode 100644 core1/lib/Twig/Filter/Method.php delete mode 100644 core1/lib/Twig/Filter/Node.php delete mode 100644 core1/lib/Twig/FilterCallableInterface.php delete mode 100644 core1/lib/Twig/FilterInterface.php delete mode 100644 core1/lib/Twig/Function.php delete mode 100644 core1/lib/Twig/Function/Function.php delete mode 100644 core1/lib/Twig/Function/Method.php delete mode 100644 core1/lib/Twig/Function/Node.php delete mode 100644 core1/lib/Twig/FunctionCallableInterface.php delete mode 100644 core1/lib/Twig/FunctionInterface.php delete mode 100644 core1/lib/Twig/Lexer.php delete mode 100644 core1/lib/Twig/LexerInterface.php delete mode 100644 core1/lib/Twig/Loader/Array.php delete mode 100644 core1/lib/Twig/Loader/Chain.php delete mode 100644 core1/lib/Twig/Loader/Filesystem.php delete mode 100644 core1/lib/Twig/Loader/String.php delete mode 100644 core1/lib/Twig/LoaderInterface.php delete mode 100644 core1/lib/Twig/Markup.php delete mode 100644 core1/lib/Twig/Node.php delete mode 100644 core1/lib/Twig/Node/AutoEscape.php delete mode 100644 core1/lib/Twig/Node/Block.php delete mode 100644 core1/lib/Twig/Node/BlockReference.php delete mode 100644 core1/lib/Twig/Node/Body.php delete mode 100644 core1/lib/Twig/Node/Do.php delete mode 100644 core1/lib/Twig/Node/Embed.php delete mode 100644 core1/lib/Twig/Node/Expression.php delete mode 100644 core1/lib/Twig/Node/Expression/Array.php delete mode 100644 core1/lib/Twig/Node/Expression/AssignName.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/Add.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/And.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/BitwiseAnd.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/BitwiseOr.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/BitwiseXor.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/Concat.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/Div.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/Equal.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/FloorDiv.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/Greater.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/GreaterEqual.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/In.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/Less.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/LessEqual.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/Mod.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/Mul.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/NotEqual.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/NotIn.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/Or.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/Power.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/Range.php delete mode 100644 core1/lib/Twig/Node/Expression/Binary/Sub.php delete mode 100644 core1/lib/Twig/Node/Expression/BlockReference.php delete mode 100644 core1/lib/Twig/Node/Expression/Call.php delete mode 100644 core1/lib/Twig/Node/Expression/Conditional.php delete mode 100644 core1/lib/Twig/Node/Expression/Constant.php delete mode 100644 core1/lib/Twig/Node/Expression/ExtensionReference.php delete mode 100644 core1/lib/Twig/Node/Expression/Filter.php delete mode 100644 core1/lib/Twig/Node/Expression/Filter/Default.php delete mode 100644 core1/lib/Twig/Node/Expression/Function.php delete mode 100644 core1/lib/Twig/Node/Expression/GetAttr.php delete mode 100644 core1/lib/Twig/Node/Expression/MethodCall.php delete mode 100644 core1/lib/Twig/Node/Expression/Name.php delete mode 100644 core1/lib/Twig/Node/Expression/Parent.php delete mode 100644 core1/lib/Twig/Node/Expression/TempName.php delete mode 100644 core1/lib/Twig/Node/Expression/Test.php delete mode 100644 core1/lib/Twig/Node/Expression/Test/Constant.php delete mode 100644 core1/lib/Twig/Node/Expression/Test/Defined.php delete mode 100644 core1/lib/Twig/Node/Expression/Test/Divisibleby.php delete mode 100644 core1/lib/Twig/Node/Expression/Test/Even.php delete mode 100644 core1/lib/Twig/Node/Expression/Test/Null.php delete mode 100644 core1/lib/Twig/Node/Expression/Test/Odd.php delete mode 100644 core1/lib/Twig/Node/Expression/Test/Sameas.php delete mode 100644 core1/lib/Twig/Node/Expression/Unary.php delete mode 100644 core1/lib/Twig/Node/Expression/Unary/Neg.php delete mode 100644 core1/lib/Twig/Node/Expression/Unary/Not.php delete mode 100644 core1/lib/Twig/Node/Expression/Unary/Pos.php delete mode 100644 core1/lib/Twig/Node/Flush.php delete mode 100644 core1/lib/Twig/Node/For.php delete mode 100644 core1/lib/Twig/Node/ForLoop.php delete mode 100644 core1/lib/Twig/Node/If.php delete mode 100644 core1/lib/Twig/Node/Import.php delete mode 100644 core1/lib/Twig/Node/Include.php delete mode 100644 core1/lib/Twig/Node/Macro.php delete mode 100644 core1/lib/Twig/Node/Module.php delete mode 100644 core1/lib/Twig/Node/Print.php delete mode 100644 core1/lib/Twig/Node/Sandbox.php delete mode 100644 core1/lib/Twig/Node/SandboxedModule.php delete mode 100644 core1/lib/Twig/Node/SandboxedPrint.php delete mode 100644 core1/lib/Twig/Node/Set.php delete mode 100644 core1/lib/Twig/Node/SetTemp.php delete mode 100644 core1/lib/Twig/Node/Spaceless.php delete mode 100644 core1/lib/Twig/Node/Text.php delete mode 100644 core1/lib/Twig/NodeInterface.php delete mode 100644 core1/lib/Twig/NodeOutputInterface.php delete mode 100644 core1/lib/Twig/NodeTraverser.php delete mode 100644 core1/lib/Twig/NodeVisitor/Escaper.php delete mode 100644 core1/lib/Twig/NodeVisitor/Optimizer.php delete mode 100644 core1/lib/Twig/NodeVisitor/SafeAnalysis.php delete mode 100644 core1/lib/Twig/NodeVisitor/Sandbox.php delete mode 100644 core1/lib/Twig/NodeVisitorInterface.php delete mode 100644 core1/lib/Twig/Parser.php delete mode 100644 core1/lib/Twig/ParserInterface.php delete mode 100644 core1/lib/Twig/Sandbox/SecurityError.php delete mode 100644 core1/lib/Twig/Sandbox/SecurityPolicy.php delete mode 100644 core1/lib/Twig/Sandbox/SecurityPolicyInterface.php delete mode 100644 core1/lib/Twig/SimpleFilter.php delete mode 100644 core1/lib/Twig/SimpleFunction.php delete mode 100644 core1/lib/Twig/SimpleTest.php delete mode 100644 core1/lib/Twig/Template.php delete mode 100644 core1/lib/Twig/TemplateInterface.php delete mode 100644 core1/lib/Twig/Test.php delete mode 100644 core1/lib/Twig/Test/Function.php delete mode 100644 core1/lib/Twig/Test/IntegrationTestCase.php delete mode 100644 core1/lib/Twig/Test/Method.php delete mode 100644 core1/lib/Twig/Test/Node.php delete mode 100644 core1/lib/Twig/Test/NodeTestCase.php delete mode 100644 core1/lib/Twig/TestCallableInterface.php delete mode 100644 core1/lib/Twig/TestInterface.php delete mode 100644 core1/lib/Twig/Token.php delete mode 100644 core1/lib/Twig/TokenParser.php delete mode 100644 core1/lib/Twig/TokenParser/AutoEscape.php delete mode 100644 core1/lib/Twig/TokenParser/Block.php delete mode 100644 core1/lib/Twig/TokenParser/Do.php delete mode 100644 core1/lib/Twig/TokenParser/Embed.php delete mode 100644 core1/lib/Twig/TokenParser/Extends.php delete mode 100644 core1/lib/Twig/TokenParser/Filter.php delete mode 100644 core1/lib/Twig/TokenParser/Flush.php delete mode 100644 core1/lib/Twig/TokenParser/For.php delete mode 100644 core1/lib/Twig/TokenParser/From.php delete mode 100644 core1/lib/Twig/TokenParser/If.php delete mode 100644 core1/lib/Twig/TokenParser/Import.php delete mode 100644 core1/lib/Twig/TokenParser/Include.php delete mode 100644 core1/lib/Twig/TokenParser/Macro.php delete mode 100644 core1/lib/Twig/TokenParser/Sandbox.php delete mode 100644 core1/lib/Twig/TokenParser/Set.php delete mode 100644 core1/lib/Twig/TokenParser/Spaceless.php delete mode 100644 core1/lib/Twig/TokenParser/Use.php delete mode 100644 core1/lib/Twig/TokenParserBroker.php delete mode 100644 core1/lib/Twig/TokenParserBrokerInterface.php delete mode 100644 core1/lib/Twig/TokenParserInterface.php delete mode 100644 core1/lib/Twig/TokenStream.php delete mode 100644 core1/log/error.log delete mode 100644 core1/static/fonts/ARDESTINE.ttf delete mode 100644 core1/static/fonts/ARESSENCE.ttf delete mode 100644 core1/static/fonts/Bradley Hand ITC.ttf delete mode 100644 core1/static/fonts/CHILLER.ttf delete mode 100644 core1/static/fonts/Edgar_da_cool_Regular.ttf delete mode 100644 core1/static/fonts/FRSCRIPT.ttf delete mode 100644 core1/static/fonts/Fh_Script_Regular.ttf delete mode 100644 core1/static/fonts/Gabo4_Gabo4.ttf delete mode 100644 core1/static/fonts/Hurryup_Hurryup.ttf delete mode 100644 core1/static/fonts/JAMI_Regular.ttf delete mode 100644 core1/static/fonts/Justy1_Regular.ttf delete mode 100644 core1/static/fonts/cour.ttf delete mode 100644 core1/static/fonts/courbd.ttf delete mode 100644 core1/static/fonts/courbi.ttf delete mode 100644 core1/static/fonts/couri.ttf delete mode 100644 core1/static/fonts/de_Manu_2_Regular.ttf delete mode 100644 core1/static/image.php delete mode 100644 core1/static/scripts/item.js delete mode 100644 core1/static/scripts/location.line.js delete mode 100644 core1/static/scripts/location/auction.js delete mode 100644 core1/static/scripts/location/comission.js delete mode 100644 core1/static/scripts/location/debuger.js delete mode 100644 core1/static/styles/location/auction.css delete mode 100644 core1/static/styles/location/auction_ie_fix.css delete mode 100644 core1/static/styles/location/comission.css delete mode 100644 cron/comission.php.bac create mode 100644 err.php create mode 100644 modules_data/location/ab/hramOLD.php create mode 100644 modules_data/location/bank.bac.php delete mode 100644 test1.php diff --git a/_incl_data/__config.php b/_incl_data/__config.php index ecc7f242..ea039956 100644 --- a/_incl_data/__config.php +++ b/_incl_data/__config.php @@ -1,11 +1,12 @@ '1.8.3.7' + 'ver' => '1.8.3.7', ]; /* Конфигурации игры */ $c['name'] = 'Бойцовский Клуб'; @@ -48,45 +49,16 @@ $c['expstop'] = 2999999; //9; // $c['expstopu'] = 2999999; //Опыт на котором останавливаемся $c['noobgade'] = false; //нуб квест (пещера) $c['bonusonline'] = true; //бонус за онлайн -$c['bonusonline_kof'] = 1; //коэфицент кр за лвл $c['level_ransfer'] = 8; //С какого уровня разрешены передачи $c['znahar'] = true; //бесплатный знахарь $c['nolevel'] = false; //лимитирование уровней $c['noitembuy'] = false; //Не требует ресурсы для покупки $c['effz'] = 0; //Скольким секундам равен заряд $c['money_haot'] = true; //кр за хаоты -$c['money_haot_proc'] = 0.10; //сколько процентов от фулла выдает в награду $c['crtoecr'] = 500; //Курс обмена кр на екр (если 0, то выключено) $c['ecrtocr'] = 200; //Курс обмена екр на кр $c['bonuslevel'] = true; //Бонус уровня $c['bonussocial'] = false; //Бонус социальный -$c['exp_limit_many'] = false; //Лимит опыта, если более 5 боев, то 0 опыта даст - -$c['exp_mega'] = false; //Повышенный лимит опыта -$c['exp_mega_val'] = [ - 0 => 1000, - 1 => 1000, - 2 => 1000, - 3 => 1000, - 4 => 1000, - 5 => 1000, - 6 => 1000, - 7 => 1500, - 8 => 0, - 9 => 0, - 10 => 0, - 11 => 0, - 12 => 0, - 13 => 0, - 14 => 0, - 15 => 0, - 16 => 0, - 17 => 0, - 18 => 0, - 19 => 0, - 20 => 0, - 21 => 0 -]; //Повышенный лимит опыта $c['w'] = date('w'); $c['m'] = date('m'); @@ -105,5 +77,19 @@ if (isset($_GET['version'])) { // Для всех доработок, пока нет автозагрузки классов. require_once 'class/Insallah/Config.php'; -//Вместо крона для турнира. -if (\Insallah\Tournament::IS_ENABLED) (new \Insallah\Tournament())->startAllBattles(); \ No newline at end of file +// Попробуем в автозагрузку. +// Никогда не заработает с такими названиями классов и файлов! +// "На потом." +spl_autoload_register(function ($className) { + # 1 with namespaces + # 2 without + $fileName = [ + __DIR__ . '/class/' . str_replace('\\', '/', $className . '.php'), + __DIR__ . '/class/' . $className . '.php' + ]; + foreach ($fileName as $file) + if (file_exists($file)) { + require_once $file; + break; + } +}); diff --git a/_incl_data/class/Insallah/Config.php b/_incl_data/class/Insallah/Config.php new file mode 100644 index 00000000..ab123b1b --- /dev/null +++ b/_incl_data/class/Insallah/Config.php @@ -0,0 +1,17 @@ +startAllBattles(); +} \ No newline at end of file diff --git a/_incl_data/class/Insallah/Core/Math.php b/_incl_data/class/Insallah/Core/Math.php index 790d8573..d8430f07 100644 --- a/_incl_data/class/Insallah/Core/Math.php +++ b/_incl_data/class/Insallah/Core/Math.php @@ -21,7 +21,12 @@ class Math { return [ 'min' => $number * ((100 - 20) / 100), - 'max' => $number * ((100 + 20) / 100) + 'max' => $number * ((100 + 20) / 100), ]; } + + public static function addPercent($num, $percent) + { + return $num + (($percent / 100) * $num); + } } \ No newline at end of file diff --git a/_incl_data/class/Insallah/Tournament/TournamentModel.php b/_incl_data/class/Insallah/Tournament/TournamentModel.php index 3a3b90a6..6a06e5f1 100644 --- a/_incl_data/class/Insallah/Tournament/TournamentModel.php +++ b/_incl_data/class/Insallah/Tournament/TournamentModel.php @@ -207,6 +207,11 @@ class TournamentModel battle_users.battle = last_battle.id and battle_users.team != last_battle.team_win and battle_users.uid in (select uid from tournaments_users where death_time = 0)'; + + $query2 = 'select bu.uid from battle b + inner join battle_users bu on b.team_win != bu.team and b.id = bu.battle + inner join tournaments_users tu on bu.uid = tu.uid + where typeBattle = 25000 and death_time = 0 order by b.time_start desc limit 1'; $db = new Db; $row = $db::getRow($query); return $row['uid']; @@ -222,9 +227,9 @@ class TournamentModel public static function removeFighter($uid, $winner = false) { if (!$uid) return; - $winner_timer_add = $winner? 500 : 0; # Последный ДОЛЖЕН быть последним. + //$winner_timer_add = $winner? 500 : 0; # Последный ДОЛЖЕН быть последним. $db = new Db(); - $db::sql('update tournaments_users set death_time = unix_timestamp() + ? where death_time = 0 and uid = ?', [$winner_timer_add, $uid]); + $db::sql('update tournaments_users set death_time = unix_timestamp() + 500 where death_time = 0 and uid = ?', [$uid]); self::teleport($uid, 9); //fixme: Классы не подключаются друг к другу. Нужно менять архитектуру игры. :( Db::sql("update users_achiv set trn = trn + 1 where id = ?", [$uid]); diff --git a/_incl_data/class/PriemsMain.php b/_incl_data/class/PriemsMain.php new file mode 100644 index 00000000..3843c79c --- /dev/null +++ b/_incl_data/class/PriemsMain.php @@ -0,0 +1,14 @@ + 0 and `delete` = 0 +union all select data from eff_users where uid = ? and `delete` = 0'; + $iData = $db::getColumn($q, [$userId, $userId]); + $params = []; + $params2 = json_decode(str_replace(['=', '|'], ['":', ',"'], '{"' . $iData . '}'), true); + foreach ($iData as $datum) { + foreach (explode('|', $datum) as $inner) { + list($a, $b) = explode('=', $inner); + if (strpos($a, 'add') !== false || strpos($a, 'sv') !== false || $showAll) { + if (isset($params[$a])) { + $params[$a] += $b; + } else { + $params[$a] = $b; + } + } + } + } + return $params; + } +} \ No newline at end of file diff --git a/_incl_data/class/__battle.php b/_incl_data/class/__battle.php index ea503568..a92357d4 100644 --- a/_incl_data/class/__battle.php +++ b/_incl_data/class/__battle.php @@ -1,6 +1,7 @@ users[$this->uids[$u1]]['login']); - $v_z = 0 + $this->stats[$this->uids[$u2]]['zm' . $type]; //защита цели - $v_p = 0 + round(($this->stats[$this->uids[$u1]]['pzm' . $type] + $this->stats[$this->uids[$u1]]['pzm']) * 0.4); //подавление защиты от магии - $v_m = 0 + $this->stats[$this->uids[$u1]]['pm' . $type]; //мощность мага - // - $r = ' magelogin=' . $v_l . ' onMouseOver=top.hi(this,maginfo(' . $v_z . ',' . $v_p . ',' . $v_m . ',this),event,3,1,1,1,null); onMouseOut=top.hic(); onMouseDown=top.hic(); '; + //$r = ' title=('.$u1.','.$u2.','.$type.') '; + $v_l = str_replace(' ', ' ', $this->users[$this->uids[$u1]]['login']); + $v_z = 0 + $this->stats[$this->uids[$u2]]['zm' . $type]; //защита цели + $v_p = 0 + round(($this->stats[$this->uids[$u1]]['pzm' . $type] + $this->stats[$this->uids[$u1]]['pzm']) * 0.4); //подавление защиты от магии + $v_m = 0 + $this->stats[$this->uids[$u1]]['pm' . $type]; //мощность мага + // + return ' magelogin=' . $v_l . ' onMouseOver=top.hi(this,maginfo(' . $v_z . ',' . $v_p . ',' . $v_m . ',this),event,3,1,1,1,null); onMouseOut=top.hic(); onMouseDown=top.hic(); '; + } - return $r; - } + public function typeBattle($x) + { + $r = [0, 0, 'Обычный поединок', 'Кровавый Поединок']; + if ($x < 50000) { + //Обычный бой + } elseif ($x >= 50000 && $x < 100000) { + $r = [25, 50, 'Великая Битва', 'Кровавая Битва']; + } elseif ($x < 500000) { + $r = [50, 75, 'Величайшая Битва', 'Кровавая Резня']; + } elseif ($x < 1000000) { + $r = [75, 100, 'Историческая Битва', 'Кровавая Сеча']; + } elseif ($x < 2500000) { + $r = [100, 125, 'Эпохальная Битва', 'Кровавое Побоище']; + } elseif ($x >= 5000000) { + $r = [150, 150, 'Судный День', 'Судный День']; + } + return $r; + } - public function typeBattle($x) - { - $r = [0, 0, 'Обычный поединок', 'Кровавый Поединок']; - if ($x < 50000) { - //Обычный бой - } elseif ($x >= 50000 && $x < 100000) { - $r = [25, 50, 'Великая Битва', 'Кровавая Битва']; - } elseif ($x < 500000) { - $r = [50, 75, 'Величайшая Битва', 'Кровавая Резня']; - } elseif ($x < 1000000) { - $r = [75, 100, 'Историческая Битва', 'Кровавая Сеча']; - } elseif ($x < 2500000) { - $r = [100, 125, 'Эпохальная Битва', 'Кровавое Побоище']; - } elseif ($x >= 5000000) { - $r = [150, 150, 'Судный День', 'Судный День']; - } - return $r; - } - - public $mncolor = [1 => '006699', 2 => '006699', 3 => '006699', 4 => '006699', 5 => '006699', 6 => '006699', 7 => '006699']; //не крит - public $mcolor = [1 => 'A00000', 2 => '008080', 3 => '0000FF', 4 => 'A52A2A', 5 => '006699', 6 => '006699', 7 => '006699']; //не крит - public $mname = ['огонь' => 1, 'воздух' => 2, 'вода' => 3, 'земля' => 4, 'свет' => 5, 'тьма' => 6, 'серая' => 7]; - public $prm = [ - /* + public $mncolor = [ + 1 => '006699', + 2 => '006699', + 3 => '006699', + 4 => '006699', + 5 => '006699', + 6 => '006699', + 7 => '006699', + ]; //не крит + public $mcolor = [ + 1 => 'A00000', + 2 => '008080', + 3 => '0000FF', + 4 => 'A52A2A', + 5 => '006699', + 6 => '006699', + 7 => '006699', + ]; //не крит + public $mname = [ + 'огонь' => 1, + 'воздух' => 2, + 'вода' => 3, + 'земля' => 4, + 'свет' => 5, + 'тьма' => 6, + 'серая' => 7, + ]; + public $prm = [ + /* act: 1 - когда персонаж получает повреждение 2 - когда персонаж наносит удар type_of: 1 - уворот @@ -59,502 +82,686 @@ class battleClass 4 - защита 5 - прочее */ - 1 => ['name' => 'Прикрыться', 'act' => 1, 'type_of' => 5], - 2 => ['name' => 'Вломить', 'act' => 2, 'type_of' => 3], - 4 => ['name' => 'Сильный удар', 'act' => 2, 'type_of' => 3], - 7 => ['name' => 'Активная защита', 'act' => 1, 'type_of' => 4], + 1 => ['name' => 'Прикрыться', 'act' => 1, 'type_of' => 5], + 2 => ['name' => 'Вломить', 'act' => 2, 'type_of' => 3], + 4 => ['name' => 'Сильный удар', 'act' => 2, 'type_of' => 3], + 7 => ['name' => 'Активная защита', 'act' => 1, 'type_of' => 4], - 290 => ['name' => 'Вытягивание души', 'act' => 1, 'type_of' => 4], + 290 => ['name' => 'Вытягивание души', 'act' => 1, 'type_of' => 4], - //Излом хаоса - //291 => array( 'name' => 'Грация Боя', 'act' => 2, 'type_of' => 4 ), + //Излом хаоса + //291 => array( 'name' => 'Грация Боя', 'act' => 2, 'type_of' => 4 ), - //Канализация - 294 => ['name' => 'Зловонная Вода', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], - 295 => ['name' => 'Проткнуть', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], - 296 => ['name' => 'Гнилая Кровь', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], - 297 => ['name' => 'Собраться', 'act' => 2, 'type_of' => 0, 'moment' => 3], - 298 => ['name' => 'Приказ Слабости', 'act' => 2, 'type_of' => 3], - // + //Канализация + 294 => ['name' => 'Зловонная Вода', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 295 => ['name' => 'Проткнуть', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 296 => ['name' => 'Гнилая Кровь', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 297 => ['name' => 'Собраться', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 298 => ['name' => 'Приказ Слабости', 'act' => 2, 'type_of' => 3], + // - 141 => ['name' => 'Призрачная защита', 'act' => 2, 'type_of' => 4], - 147 => ['name' => 'Призрачный кинжал', 'act' => 2, 'type_of' => 4], - 148 => ['name' => 'Призрачный топор', 'act' => 2, 'type_of' => 4], - 149 => ['name' => 'Призрачный удар', 'act' => 2, 'type_of' => 4], - 150 => ['name' => 'Призрачное лезвие', 'act' => 2, 'type_of' => 4], + 141 => ['name' => 'Призрачная защита', 'act' => 2, 'type_of' => 4], + 147 => ['name' => 'Призрачный кинжал', 'act' => 2, 'type_of' => 4], + 148 => ['name' => 'Призрачный топор', 'act' => 2, 'type_of' => 4], + 149 => ['name' => 'Призрачный удар', 'act' => 2, 'type_of' => 4], + 150 => ['name' => 'Призрачное лезвие', 'act' => 2, 'type_of' => 4], - 142 => ['name' => 'Призрачный огонь', 'act' => 2, 'type_of' => 4], - 144 => ['name' => 'Призрачный воздух', 'act' => 2, 'type_of' => 4], - 146 => ['name' => 'Призрачная земля', 'act' => 2, 'type_of' => 4], - 145 => ['name' => 'Призрачная вода', 'act' => 2, 'type_of' => 4], + 142 => ['name' => 'Призрачный огонь', 'act' => 2, 'type_of' => 4], + 144 => ['name' => 'Призрачный воздух', 'act' => 2, 'type_of' => 4], + 146 => ['name' => 'Призрачная земля', 'act' => 2, 'type_of' => 4], + 145 => ['name' => 'Призрачная вода', 'act' => 2, 'type_of' => 4], - 8 => ['name' => 'Танец ветра', 'act' => 1, 'type_of' => 1], - 9 => ['name' => 'Дикая удача', 'act' => 2, 'type_of' => 3], - 10 => ['name' => 'Предвидение', 'act' => 1, 'type_of' => 1], - 11 => ['name' => 'Удачный удар', 'act' => 2, 'type_of' => 3], + 8 => ['name' => 'Танец ветра', 'act' => 1, 'type_of' => 1], + 9 => ['name' => 'Дикая удача', 'act' => 2, 'type_of' => 3], + 10 => ['name' => 'Предвидение', 'act' => 1, 'type_of' => 1], + 11 => ['name' => 'Удачный удар', 'act' => 2, 'type_of' => 3], - 45 => ['name' => 'Полная защита', 'act' => 1, 'type_of' => 4], + 45 => ['name' => 'Полная защита', 'act' => 1, 'type_of' => 4], - 47 => ['name' => 'Слепая удача', 'act' => 2, 'type_of' => 2], - 48 => ['name' => 'Танец лезвий', 'act' => 1, 'type_of' => 1], - 49 => ['name' => 'Второе дыхание', 'act' => 1, 'type_of' => 1], - 138 => ['name' => 'Сокрушающий удар', 'act' => 2, 'type_of' => 3], - 140 => ['name' => 'Абсолютная защита', 'act' => 1, 'type_of' => 4], - 193 => ['name' => 'Усиленные удары', 'act' => 2, 'type_of' => 3], - //204 => array( 'name' => 'Обречённость', 'act' => 2 , 'type_of' => 5 ), - 204 => ['name' => 'Обречённость', 'act' => 2, 'type_of' => 0, 'moment' => 3], - 211 => ['name' => 'Агрессивная защита', 'act' => 1, 'type_of' => 4], - 213 => ['name' => 'Коварный Уход', 'act' => 1, 'type_of' => 4], - 215 => ['name' => 'Скрытая ловкость', 'act' => 1, 'type_of' => 1], - 216 => ['name' => 'Скрытая сила', 'act' => 2, 'type_of' => 2], - 217 => ['name' => 'Разгадать тактику', 'act' => 2, 'type_of' => 0, 'moment' => 3], - 219 => ['name' => 'Точный удар', 'act' => 2, 'type_of' => 3], - 220 => ['name' => 'Ставка на опережение', 'act' => 2, 'type_of' => 0, 'moment' => 3], - 222 => ['name' => 'Последний удар', 'act' => 2, 'type_of' => 3], - 225 => ['name' => 'Магическая защита', 'act' => 1, 'type_of' => 4], - 226 => ['name' => 'Возмездие', 'act' => 1, 'type_of' => 4], - 231 => ['name' => 'Глухая защита', 'act' => 2, 'type_of' => 0, 'moment' => 3], - 234 => ['name' => 'Осторожность', 'act' => 2, 'type_of' => 4], - 235 => ['name' => 'Шокирующий удар', 'act' => 2, 'type_of' => 3], - 342 => ['name' => 'Круговая Защита', 'act' => 0, 'type_of' => 0], - 343 => ['name' => 'Натиск', 'act' => 0, 'type_of' => 0], + 47 => ['name' => 'Слепая удача', 'act' => 2, 'type_of' => 2], + 48 => ['name' => 'Танец лезвий', 'act' => 1, 'type_of' => 1], + 49 => ['name' => 'Второе дыхание', 'act' => 1, 'type_of' => 1], + 138 => ['name' => 'Сокрушающий удар', 'act' => 2, 'type_of' => 3], + 140 => ['name' => 'Абсолютная защита', 'act' => 1, 'type_of' => 4], + 193 => ['name' => 'Усиленные удары', 'act' => 2, 'type_of' => 3], + //204 => array( 'name' => 'Обречённость', 'act' => 2 , 'type_of' => 5 ), + 204 => ['name' => 'Обречённость', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 211 => ['name' => 'Агрессивная защита', 'act' => 1, 'type_of' => 4], + 213 => ['name' => 'Коварный Уход', 'act' => 1, 'type_of' => 4], + 215 => ['name' => 'Скрытая ловкость', 'act' => 1, 'type_of' => 1], + 216 => ['name' => 'Скрытая сила', 'act' => 2, 'type_of' => 2], + 217 => ['name' => 'Разгадать тактику', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 219 => ['name' => 'Точный удар', 'act' => 2, 'type_of' => 3], + 220 => ['name' => 'Ставка на опережение', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 222 => ['name' => 'Последний удар', 'act' => 2, 'type_of' => 3], + 225 => ['name' => 'Магическая защита', 'act' => 1, 'type_of' => 4], + 226 => ['name' => 'Возмездие', 'act' => 1, 'type_of' => 4], + 231 => ['name' => 'Глухая защита', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 234 => ['name' => 'Осторожность', 'act' => 2, 'type_of' => 4], + 235 => ['name' => 'Шокирующий удар', 'act' => 2, 'type_of' => 3], + 342 => ['name' => 'Круговая Защита', 'act' => 0, 'type_of' => 0], + 343 => ['name' => 'Натиск', 'act' => 0, 'type_of' => 0], - 237 => ['name' => 'Разведка боем', 'act' => 2, 'type_of' => 3 /*, 'moment' => 3*/], + 237 => ['name' => 'Разведка боем', 'act' => 2, 'type_of' => 3 /*, 'moment' => 3*/], - 239 => ['name' => 'Поступь смерти', 'act' => 2, 'type_of' => 3], - 240 => ['name' => 'Хлебнуть крови', 'act' => 2, 'type_of' => 5] + 239 => ['name' => 'Поступь смерти', 'act' => 2, 'type_of' => 3], + 240 => ['name' => 'Хлебнуть крови', 'act' => 2, 'type_of' => 5] - //Оледенение - , 21 => ['name' => 'Оледенение [4]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 73 => ['name' => 'Оледенение [5]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 74 => ['name' => 'Оледенение [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 75 => ['name' => 'Оледенение [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 76 => ['name' => 'Оледенение [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 77 => ['name' => 'Оледенение [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 78 => ['name' => 'Оледенение [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 79 => ['name' => 'Оледенение [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + //Оледенение + , + 21 => ['name' => 'Оледенение [4]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 73 => ['name' => 'Оледенение [5]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 74 => ['name' => 'Оледенение [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 75 => ['name' => 'Оледенение [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 76 => ['name' => 'Оледенение [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 77 => ['name' => 'Оледенение [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 78 => ['name' => 'Оледенение [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 79 => ['name' => 'Оледенение [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - //Отравление - , 22 => ['name' => 'Отравление [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 80 => ['name' => 'Отравление [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 81 => ['name' => 'Отравление [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 82 => ['name' => 'Отравление [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 83 => ['name' => 'Отравление [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 84 => ['name' => 'Отравление [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + //Отравление + , + 22 => ['name' => 'Отравление [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 80 => ['name' => 'Отравление [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 81 => ['name' => 'Отравление [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 82 => ['name' => 'Отравление [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 83 => ['name' => 'Отравление [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 84 => ['name' => 'Отравление [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - //Регенерация - , 36 => ['name' => 'Регенерация [5]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 85 => ['name' => 'Регенерация [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 86 => ['name' => 'Регенерация [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 87 => ['name' => 'Регенерация [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 88 => ['name' => 'Регенерация [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 89 => ['name' => 'Регенерация [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 90 => ['name' => 'Регенерация [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + //Регенерация + , + 36 => ['name' => 'Регенерация [5]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 85 => ['name' => 'Регенерация [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 86 => ['name' => 'Регенерация [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 87 => ['name' => 'Регенерация [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 88 => ['name' => 'Регенерация [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 89 => ['name' => 'Регенерация [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 90 => ['name' => 'Регенерация [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - //Ядовитое облако - , 23 => ['name' => 'Ядовитое Облако [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 70 => ['name' => 'Ядовитое Облако [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 71 => ['name' => 'Ядовитое Облако [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 72 => ['name' => 'Ядовитое Облако [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + //Ядовитое облако + , + 23 => ['name' => 'Ядовитое Облако [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 70 => ['name' => 'Ядовитое Облако [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 71 => ['name' => 'Ядовитое Облако [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 72 => ['name' => 'Ядовитое Облако [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - //Иней - , 269 => ['name' => 'Иней [8]', 'act' => 2, 'type_of' => 9] - , 276 => ['name' => 'Иней [9]', 'act' => 2, 'type_of' => 9] - , 277 => ['name' => 'Иней [10]', 'act' => 2, 'type_of' => 9] + //Иней + , + 269 => ['name' => 'Иней [8]', 'act' => 2, 'type_of' => 9] + , + 276 => ['name' => 'Иней [9]', 'act' => 2, 'type_of' => 9] + , + 277 => ['name' => 'Иней [10]', 'act' => 2, 'type_of' => 9] - //Духи Льда - , 270 => ['name' => 'Духи Льда', 'act' => 2, 'type_of' => 5, 'type_sec' => 5] + //Духи Льда + , + 270 => ['name' => 'Духи Льда', 'act' => 2, 'type_of' => 5, 'type_sec' => 5] - //Хватка Льда - , 280 => ['name' => 'Хватка Льда', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + //Хватка Льда + , + 280 => ['name' => 'Хватка Льда', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - //Жертва Воде - , 281 => ['name' => 'Жертва Воде', 'act' => 2, 'type_of' => 5] + //Жертва Воде + , + 281 => ['name' => 'Жертва Воде', 'act' => 2, 'type_of' => 5] - //Ледяное спасение - , 282 => ['name' => 'Ледяное Спасение', 'act' => 2, 'type_of' => 5] + //Ледяное спасение + , + 282 => ['name' => 'Ледяное Спасение', 'act' => 2, 'type_of' => 5] - // - // + // + // - //Медитация - , 24 => ['name' => 'Медитация', 'act' => 2, 'type_of' => 0, 'moment' => 3] + //Медитация + , + 24 => ['name' => 'Медитация', 'act' => 2, 'type_of' => 0, 'moment' => 3] - //Магический барьер - , 210 => ['name' => 'Магический Барьер [4]', 'act' => 2, 'type_of' => 8] - , 209 => ['name' => 'Магический Барьер [7]', 'act' => 2, 'type_of' => 8] - , 208 => ['name' => 'Магический Барьер [8]', 'act' => 2, 'type_of' => 8] - , 207 => ['name' => 'Магический Барьер [9]', 'act' => 2, 'type_of' => 8] - , 206 => ['name' => 'Магический Барьер [10]', 'act' => 2, 'type_of' => 8] - , 284 => ['name' => 'Магический Барьер [11]', 'act' => 2, 'type_of' => 8] + //Магический барьер + , + 210 => ['name' => 'Магический Барьер [4]', 'act' => 2, 'type_of' => 8] + , + 209 => ['name' => 'Магический Барьер [7]', 'act' => 2, 'type_of' => 8] + , + 208 => ['name' => 'Магический Барьер [8]', 'act' => 2, 'type_of' => 8] + , + 207 => ['name' => 'Магический Барьер [9]', 'act' => 2, 'type_of' => 8] + , + 206 => ['name' => 'Магический Барьер [10]', 'act' => 2, 'type_of' => 8] + , + 284 => ['name' => 'Магический Барьер [11]', 'act' => 2, 'type_of' => 8] - //Силовое поле - , 175 => ['name' => 'Магический Барьер [7]', 'act' => 2, 'type_of' => 8] - , 176 => ['name' => 'Магический Барьер [8]', 'act' => 2, 'type_of' => 8] - , 177 => ['name' => 'Магический Барьер [9]', 'act' => 2, 'type_of' => 8] - , 178 => ['name' => 'Магический Барьер [10]', 'act' => 2, 'type_of' => 8] - , 179 => ['name' => 'Магический Барьер [11]', 'act' => 2, 'type_of' => 8] + //Силовое поле + , + 175 => ['name' => 'Магический Барьер [7]', 'act' => 2, 'type_of' => 8] + , + 176 => ['name' => 'Магический Барьер [8]', 'act' => 2, 'type_of' => 8] + , + 177 => ['name' => 'Магический Барьер [9]', 'act' => 2, 'type_of' => 8] + , + 178 => ['name' => 'Магический Барьер [10]', 'act' => 2, 'type_of' => 8] + , + 179 => ['name' => 'Магический Барьер [11]', 'act' => 2, 'type_of' => 8] - // - // + // + // - //Метеорит - , 42 => ['name' => 'Метеорит [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 121 => ['name' => 'Метеорит [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 122 => ['name' => 'Метеорит [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 123 => ['name' => 'Метеорит [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 124 => ['name' => 'Метеорит [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 125 => ['name' => 'Метеорит [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + //Метеорит + , + 42 => ['name' => 'Метеорит [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 121 => ['name' => 'Метеорит [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 122 => ['name' => 'Метеорит [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 123 => ['name' => 'Метеорит [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 124 => ['name' => 'Метеорит [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 125 => ['name' => 'Метеорит [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - //Каменный Щит - , 249 => ['name' => 'Каменный Щит', 'act' => 2, 'type_of' => 4] + //Каменный Щит + , + 249 => ['name' => 'Каменный Щит', 'act' => 2, 'type_of' => 4] - //Песчанный щит - , 248 => ['name' => 'Песчаный Щит', 'act' => 2, 'type_of' => 4] + //Песчанный щит + , + 248 => ['name' => 'Песчаный Щит', 'act' => 2, 'type_of' => 4] - //Заземление - , 251 => ['name' => 'Заземление: Плюс', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 252 => ['name' => 'Заземление: Минус', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + //Заземление + , + 251 => ['name' => 'Заземление: Плюс', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 252 => ['name' => 'Заземление: Минус', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - // - // + // + // - //Туманный образ - , 273 => ['name' => 'Туманный Образ [10]', 'act' => 1, 'type_of' => 4] - , 286 => ['name' => 'Туманный Образ [9]', 'act' => 1, 'type_of' => 4] - , 287 => ['name' => 'Туманный Образ [8]', 'act' => 1, 'type_of' => 4] - , 288 => ['name' => 'Туманный Образ [7]', 'act' => 1, 'type_of' => 4] + //Туманный образ + , + 273 => ['name' => 'Туманный Образ [10]', 'act' => 1, 'type_of' => 4] + , + 286 => ['name' => 'Туманный Образ [9]', 'act' => 1, 'type_of' => 4] + , + 287 => ['name' => 'Туманный Образ [8]', 'act' => 1, 'type_of' => 4] + , + 288 => ['name' => 'Туманный Образ [7]', 'act' => 1, 'type_of' => 4] - // - , 255 => ['name' => 'Воздушный Щит', 'act' => 2, 'type_of' => 8] + // + , + 255 => ['name' => 'Воздушный Щит', 'act' => 2, 'type_of' => 8] - // - // + // + // - //Пещерные приемы - , 337 => ['name' => 'Выпить Душу', 'act' => 2, 'type_of' => 5] + //Пещерные приемы + , + 337 => ['name' => 'Выпить Душу', 'act' => 2, 'type_of' => 5] - //Пожирающее Пламя - , 33 => ['name' => 'Пожирающее Пламя [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 56 => ['name' => 'Пожирающее Пламя [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 57 => ['name' => 'Пожирающее Пламя [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 58 => ['name' => 'Пожирающее Пламя [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 59 => ['name' => 'Пожирающее Пламя [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 60 => ['name' => 'Пожирающее Пламя [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + //Пожирающее Пламя + , + 33 => ['name' => 'Пожирающее Пламя [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 56 => ['name' => 'Пожирающее Пламя [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 57 => ['name' => 'Пожирающее Пламя [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 58 => ['name' => 'Пожирающее Пламя [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 59 => ['name' => 'Пожирающее Пламя [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 60 => ['name' => 'Пожирающее Пламя [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - //Огненный Щит - , 245 => ['name' => 'Огненный Щит', 'act' => 2, 'type_of' => 9] - //Эффекты - , 327 => ['name' => 'Живая Вода', 'act' => 2, 'type_of' => 0, 'moment' => 3] - , 328 => ['name' => 'Сушеный Мухомор', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 329 => ['name' => 'Мешочек Пыли', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 330 => ['name' => 'Отвар когтей ПГ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 331 => ['name' => 'Отвар Василиска', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 332 => ['name' => 'Точильный Камень', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 333 => ['name' => 'Волшебный Эликсир', 'act' => 2, 'type_of' => 0, 'moment' => 3] - , 334 => ['name' => 'Цепь Защитника', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 335 => ['name' => 'Эликсир Безумного Критовика', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - //1 сентября, квест - , 299 => ['name' => 'Ядовитые язвы', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 300 => ['name' => 'Элементарный заряд', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 301 => ['name' => 'Темное ранение', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 302 => ['name' => 'Подлечиться', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 303 => ['name' => 'Шкура поглощения', 'act' => 2, 'type_of' => 4] - , 304 => ['name' => 'Особенное проклятье!', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - , 305 => ['name' => 'Кровожадность', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] - ]; + //Огненный Щит + , + 245 => ['name' => 'Огненный Щит', 'act' => 2, 'type_of' => 9] + //Эффекты + , + 327 => ['name' => 'Живая Вода', 'act' => 2, 'type_of' => 0, 'moment' => 3] + , + 328 => ['name' => 'Сушеный Мухомор', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 329 => ['name' => 'Мешочек Пыли', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 330 => ['name' => 'Отвар когтей ПГ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 331 => ['name' => 'Отвар Василиска', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 332 => ['name' => 'Точильный Камень', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 333 => ['name' => 'Волшебный Эликсир', 'act' => 2, 'type_of' => 0, 'moment' => 3] + , + 334 => ['name' => 'Цепь Защитника', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 335 => [ + 'name' => 'Эликсир Безумного Критовика', + 'act' => 2, + 'type_of' => 0, + 'moment' => 0, + 'moment_end' => 3, + ] + //1 сентября, квест + , + 299 => ['name' => 'Ядовитые язвы', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 300 => ['name' => 'Элементарный заряд', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 301 => ['name' => 'Темное ранение', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 302 => ['name' => 'Подлечиться', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 303 => ['name' => 'Шкура поглощения', 'act' => 2, 'type_of' => 4] + , + 304 => ['name' => 'Особенное проклятье!', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + , + 305 => ['name' => 'Кровожадность', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + ]; - //Сохраняем лог в архик - public function saveLogs($id, $type) - { - if ($type == 'all') { - $type = ''; - mysql_query('INSERT INTO `battle_logs_save` SELECT `id`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` <= ' . ($this->hodID) . ''); - } else { - mysql_query('INSERT INTO `battle_logs_save` SELECT `id`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` <= ' . ($this->hodID - 5) . ''); - } - mysql_query('DELETE FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" ' . $type . ''); - mysql_query('DELETE FROM `battle_stat` WHERE `battle` < "' . ($this->info['id'] - 100) . '" '); - mysql_query('DELETE FROM `battle_actions` WHERE `btl` = "' . $this->info['id'] . '" '); - //mysql_query('OPTIMIZE TABLE `battle_logs`'); - //mysql_query('OPTIMIZE TABLE `battle_stat`'); - //mysql_query('OPTIMIZE TABLE `battle_actions`'); - } + //Сохраняем лог в архик + public function saveLogs($id, $type) + { + if ($type == 'all') { + $type = ''; + mysql_query('INSERT INTO `battle_logs_save` SELECT `id`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` <= ' . ($this->hodID) . ''); + } else { + mysql_query('INSERT INTO `battle_logs_save` SELECT `id`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` <= ' . ($this->hodID - 5) . ''); + } + mysql_query('DELETE FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" ' . $type . ''); + mysql_query('DELETE FROM `battle_stat` WHERE `battle` < "' . ($this->info['id'] - 100) . '" '); + mysql_query('DELETE FROM `battle_actions` WHERE `btl` = "' . $this->info['id'] . '" '); + //mysql_query('OPTIMIZE TABLE `battle_logs`'); + //mysql_query('OPTIMIZE TABLE `battle_stat`'); + //mysql_query('OPTIMIZE TABLE `battle_actions`'); + } - public function hphe($uid, $hp, $false_t7 = false) - { - global $u; - if (!isset($this->stats[$this->uids[$uid]])) { - echo 'WARNING! ОШИБКА! ПОТЕРЯНА ПЕРЕМЕННАЯ ЗДОРОВЬЯ ПЕРСОНАЖА!'; - } else { - $hpnow = floor($this->stats[$this->uids[$uid]]['hpNow']); - $hpall = $this->stats[$this->uids[$uid]]['hpAll']; - if ($hp > 0) { - //Хиляем - if ($hpnow + $hp > $hpall) { - $hpli = $hpnow + $hp - $hpall; - $hp -= $hpli; - } - if (isset($this->stats[$this->uids[$uid]]['min_heal_proc']) && $this->stats[$this->uids[$uid]]['min_heal_proc'] < -99) { - $hp = 0; - } else { - $hp = $hp / 100 * (100 + $this->stats[$this->uids[$uid]]['min_heal_proc']); - } - //Отнимаем тактику - if ($false_t7 == false) { - if ($this->users[$this->uids[$uid]]['tactic7'] <= 0) { - $hp = 0; - $this->users[$this->uids[$uid]]['tactic7'] = 0; - $this->stats[$this->uids[$uid]]['tactic7'] = $this->users[$this->uids[$uid]]['tactic7']; - } else { - $gdhh = round($hp / $this->stats[$this->uids[$uid]]['hpAll'] * 10, 2); - if ($gdhh == 0) { - $gdhh = 0.01; - } + public function hphe($uid, $hp, $false_t7 = false) + { + global $u; + if (!isset($this->stats[$this->uids[$uid]])) { + echo 'WARNING! ОШИБКА! ПОТЕРЯНА ПЕРЕМЕННАЯ ЗДОРОВЬЯ ПЕРСОНАЖА!'; + } else { + $hpnow = floor($this->stats[$this->uids[$uid]]['hpNow']); + $hpall = $this->stats[$this->uids[$uid]]['hpAll']; + if ($hp > 0) { + //Хиляем + if ($hpnow + $hp > $hpall) { + $hpli = $hpnow + $hp - $hpall; + $hp -= $hpli; + } + if (isset($this->stats[$this->uids[$uid]]['min_heal_proc']) && $this->stats[$this->uids[$uid]]['min_heal_proc'] < -99) { + $hp = 0; + } else { + $hp = $hp / 100 * (100 + $this->stats[$this->uids[$uid]]['min_heal_proc']); + } + //Отнимаем тактику + if ($false_t7 == false) { + if ($this->users[$this->uids[$uid]]['tactic7'] <= 0) { + $hp = 0; + $this->users[$this->uids[$uid]]['tactic7'] = 0; + $this->stats[$this->uids[$uid]]['tactic7'] = $this->users[$this->uids[$uid]]['tactic7']; + } else { + $gdhh = round($hp / $this->stats[$this->uids[$uid]]['hpAll'] * 10, 2); + if ($gdhh == 0) { + $gdhh = 0.01; + } - $gdhd = round($this->users[$this->uids[$uid]]['tactic7'] / $gdhh * 100); + $gdhd = round($this->users[$this->uids[$uid]]['tactic7'] / $gdhh * 100); - $this->users[$this->uids[$uid]]['tactic7'] = round(($this->users[$this->uids[$uid]]['tactic7'] - $gdhh), 2); - if ($this->users[$this->uids[$uid]]['tactic7'] < 0) { - $this->users[$this->uids[$uid]]['tactic7'] = 0; - } - $this->stats[$this->uids[$uid]]['tactic7'] = $this->users[$this->uids[$uid]]['tactic7']; - if ($gdhd < 100) { - $hp = floor($hp / 100 * $gdhd); - } - } - } - } elseif ($hp < 0) { - //Отнимаемф - if ($hpnow + $hp < 0) { - $hpli = $hpnow + $hp; - $hp += -($hpli); - } - } + $this->users[$this->uids[$uid]]['tactic7'] = round(($this->users[$this->uids[$uid]]['tactic7'] - $gdhh), + 2); + if ($this->users[$this->uids[$uid]]['tactic7'] < 0) { + $this->users[$this->uids[$uid]]['tactic7'] = 0; + } + $this->stats[$this->uids[$uid]]['tactic7'] = $this->users[$this->uids[$uid]]['tactic7']; + if ($gdhd < 100) { + $hp = floor($hp / 100 * $gdhd); + } + } + } + } elseif ($hp < 0) { + //Отнимаемф + if ($hpnow + $hp < 0) { + $hpli = $hpnow + $hp; + $hp += -($hpli); + } + } - if ($this->stats[$this->uids[$uid]]['hpNow'] < 1) { - $hp = 0; - } + if ($this->stats[$this->uids[$uid]]['hpNow'] < 1) { + $hp = 0; + } - $this->stats[$this->uids[$uid]]['last_hp'] = -$hp; - mysql_query('UPDATE `stats` SET + $this->stats[$this->uids[$uid]]['last_hp'] = -$hp; + mysql_query('UPDATE `stats` SET `last_hp` = "' . $this->users[$this->uids[$uid]]['last_hp'] . '", `tactic7` = "' . $this->users[$this->uids[$uid]]['tactic7'] . '" WHERE `id` = "' . $uid . '" LIMIT 1'); + } - } + return floor($hp); + } - return floor($hp); - } - - public function deleffm($pid, $uid, $id) - { - if ($id > 0) { - if (!mysql_query('DELETE FROM `eff_users` WHERE `id` = "' . mysql_real_escape_string($id) . '" AND `v1` = "priem" AND `v2` != "0" LIMIT 1')) { - echo '[*Ошибка удаления прием[' . $id . ',' . $pid . ',' . $uid . ']]'; - } - } else { - if (!mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . mysql_real_escape_string($uid) . '" AND `v1` = "priem" AND `v2` = "' . $pid . '"')) { - - } - } - //echo '['.$id.','.$pid.','.$uid.']'; - } + public function deleffm($pid, $uid, $id) + { + if ($id > 0) { + if (!mysql_query('DELETE FROM `eff_users` WHERE `id` = "' . mysql_real_escape_string($id) . '" AND `v1` = "priem" AND `v2` != "0" LIMIT 1')) { + echo '[*Ошибка удаления прием[' . $id . ',' . $pid . ',' . $uid . ']]'; + } + } else { + if (!mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . mysql_real_escape_string($uid) . '" AND `v1` = "priem" AND `v2` = "' . $pid . '"')) { + } + } + //echo '['.$id.','.$pid.','.$uid.']'; + } - public $e, //Ошибка (текст) - $cached = false, //Кэширование данных - $expCoef = 0, # % опыта в бою - $aBexp = 0, //Добавочный опыт в боях - $mainStatus = 1, //Отображаем главное окно (1 - можно бить, 2 - ожидаем ход противника, 3 - Проиграли. Ожидаем завершения поединка) - $info = [], //Информация о поединке - $users = [], //Информация о пользователях в этом бою - $stats = [], //Информация о статах пользователей в этом бою - $uids = [], //Список пользователей и их id в stats или users пример id пользователя = 555 , то $uids[555] выдаст его порядковый номер в массиве users \ stats - $atacks = [], //Список ударов в этом бою (действующих) - $ga = [], //Список uid кто нанес удар и по кому $ga[ {id кто ударил} ][ {id кого ударил} ] - $ag = [], //Список uid кто нанес удар и по кому $ga[ {id кого ударили} ][ {id кто ударил} ] - $na = 1, //возможность использовать удар - $np = 1, //возможность использовать приемы - $nm = 1, //возможность использовать заклятия - $hodID = 0, - $stnZbVs = 0, - $bots = [], // ID ботов - $iBots = [], // i бота - $stnZb = [], - $uAtc = ['id' => 0, 'a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0], 'b' => 0], //Если игрок нанес удар - $lg_itm = [0 => ['грудью', 'ребром руки', 'лбом', 'кулаком', 'ногой', 'левой ногой', 'правой ногой', 'коленом'], 1 => ['ножом', 'тыльной стороной лезвия ножа', 'рукоятью ножа', 'лезвием ножа'], 2 => ['сучковатой палкой', 'поленом', 'тяжелой дубиной', 'дубиной', 'рукоятью молота'], 3 => ['секирой', 'топором', 'лезвием секиры', 'алебардой', 'тяжелым держаком', 'длинной секирой'], 4 => ['ножнами', 'гардой', 'мечом', 'лезвием меча', 'рукоятью меча', 'тупым лезвием', 'острой стороной меча', 'огромным мечом'], 5 => ['сучковатой палкой', 'посохом', 'тяжелой тростью', 'корявым посохом', 'основанием посоха'], 22 => ['костылем']], // Чем лупили - $lg_zon = [1 => ['в нос', 'в глаз', 'в челюсть', 'по переносице', 'в кадык', 'по затылку', 'в правый глаз', 'в левый глаз', 'в скулу'], 2 => ['в грудь', 'в корпус', 'в солнечное сплетение', 'в сердце', 'в область лопаток'], 3 => ['в бок', 'по желудку', 'по левой руке', 'по правой руке'], 4 => ['по <вырезано цензурой>', 'в пах', 'в промежность', 'по левой ягодице', 'по правой ягодице'], 5 => ['по ногам', 'в область правой пятки', 'в область левой пятки', 'по коленной чашечке', 'по икрам']]; // Куда лупили - public $is = [], $items = []; + public $e, //Ошибка (текст) + $cached = false, //Кэширование данных + $expCoef = 0, # % опыта в бою + $aBexp = 0, //Добавочный опыт в боях + $mainStatus = 1, //Отображаем главное окно (1 - можно бить, 2 - ожидаем ход противника, 3 - Проиграли. Ожидаем завершения поединка) + $info = [], //Информация о поединке + $users = [], //Информация о пользователях в этом бою + $stats = [], //Информация о статах пользователей в этом бою + $uids = [], //Список пользователей и их id в stats или users пример id пользователя = 555 , то $uids[555] выдаст его порядковый номер в массиве users \ stats + $atacks = [], //Список ударов в этом бою (действующих) + $ga = [], //Список uid кто нанес удар и по кому $ga[ {id кто ударил} ][ {id кого ударил} ] + $ag = [], //Список uid кто нанес удар и по кому $ga[ {id кого ударили} ][ {id кто ударил} ] + $na = 1, //возможность использовать удар + $np = 1, //возможность использовать приемы + $nm = 1, //возможность использовать заклятия + $hodID = 0, + $stnZbVs = 0, + $bots = [], // ID ботов + $iBots = [], // i бота + $stnZb = [], + $uAtc = [ + 'id' => 0, + 'a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0], + 'b' => 0, + ], //Если игрок нанес удар + $lg_itm = [ + 0 => [ + 'грудью', + 'ребром руки', + 'лбом', + 'кулаком', + 'ногой', + 'левой ногой', + 'правой ногой', + 'коленом', + ], + 1 => ['ножом', 'тыльной стороной лезвия ножа', 'рукоятью ножа', 'лезвием ножа'], + 2 => ['сучковатой палкой', 'поленом', 'тяжелой дубиной', 'дубиной', 'рукоятью молота'], + 3 => ['секирой', 'топором', 'лезвием секиры', 'алебардой', 'тяжелым держаком', 'длинной секирой'], + 4 => [ + 'ножнами', + 'гардой', + 'мечом', + 'лезвием меча', + 'рукоятью меча', + 'тупым лезвием', + 'острой стороной меча', + 'огромным мечом', + ], + 5 => ['сучковатой палкой', 'посохом', 'тяжелой тростью', 'корявым посохом', 'основанием посоха'], + 22 => ['костылем'], + ], // Чем лупили + $lg_zon = [ + 1 => [ + 'в нос', + 'в глаз', + 'в челюсть', + 'по переносице', + 'в кадык', + 'по затылку', + 'в правый глаз', + 'в левый глаз', + 'в скулу', + ], + 2 => ['в грудь', 'в корпус', 'в солнечное сплетение', 'в сердце', 'в область лопаток'], + 3 => ['в бок', 'по желудку', 'по левой руке', 'по правой руке'], + 4 => ['по <вырезано цензурой>', 'в пах', 'в промежность', 'по левой ягодице', 'по правой ягодице'], + 5 => ['по ногам', 'в область правой пятки', 'в область левой пятки', 'по коленной чашечке', 'по икрам'], + ]; // Куда лупили + public $is = [], $items = []; - //Очистка кэша для ... - public $uclearc = [], $ucleari = []; + //Очистка кэша для ... + public $uclearc = [], $ucleari = []; - public function clear_cache($uid) - { - if ($uid > 0 && !isset($this->uclearc[$uid])) { - $this->uclearc[$uid] = true; - $this->ucleari[] = $uid; - } - } + public function clear_cache($uid) + { + if ($uid > 0 && !isset($this->uclearc[$uid])) { + $this->uclearc[$uid] = true; + $this->ucleari[] = $uid; + } + } - public function clear_cache_start() - { - $i = 0; - while ($i < count($this->ucleari)) { - mysql_query('DELETE FROM `battle_cache` WHERE `uid` = "' . mysql_real_escape_string($this->ucleari[$i]) . '"'); - $i++; - } - } + public function clear_cache_start() + { + $i = 0; + while ($i < count($this->ucleari)) { + mysql_query('DELETE FROM `battle_cache` WHERE `uid` = "' . mysql_real_escape_string($this->ucleari[$i]) . '"'); + $i++; + } + } - //Проверка урон приемов над защитными - public function testYronPriemAttack($pid, $u1, $u2, $hp) - { + //Проверка урон приемов над защитными + public function testYronPriemAttack($pid, $u1, $u2, $hp) + { + //Игрок 1 бьет по Игроку 2 при помощи приема № pid на hp ед. здоровья - //Игрок 1 бьет по Игроку 2 при помощи приема № pid на hp ед. здоровья - - /* + /* Полная защита */ - //Получаем приемы и смотрим когда какой действует - $eff = $this->stats[$this->uids[$u2]]['effects']; - $j = 0; - while ($j <= count($eff)) { - if (isset($eff[$j]) && $eff[$j]['id_eff'] == 22 && $eff[$j]['v1'] == 'priem' && $eff[$j]['v2'] > 0) { - // id прием $eff[$j]['v2'] - if ($eff[$j]['v2'] == 140 || $eff[$j]['v2'] == 211 || $eff[$j]['v2'] == 45) { //|| $eff[$j]['v2'] == 45 - //Приемы от которых урон = 1 , то есть выдаем 0 - $hp['y'] = -1; - $hp['r'] = 1; - $hp['k'] = 2; - $hp['m_y'] = 1; - $hp['m_k'] = 2; + //Получаем приемы и смотрим когда какой действует + $eff = $this->stats[$this->uids[$u2]]['effects']; + $j = 0; + while ($j <= count($eff)) { + if (isset($eff[$j]) && $eff[$j]['id_eff'] == 22 && $eff[$j]['v1'] == 'priem' && $eff[$j]['v2'] > 0) { + // id прием $eff[$j]['v2'] + if ($eff[$j]['v2'] == 140 || $eff[$j]['v2'] == 211 || $eff[$j]['v2'] == 45) { //|| $eff[$j]['v2'] == 45 + //Приемы от которых урон = 1 , то есть выдаем 0 + $hp['y'] = -1; + $hp['r'] = 1; + $hp['k'] = 2; + $hp['m_y'] = 1; + $hp['m_k'] = 2; + } + } + $j++; + } + unset($eff); + + return $hp; + } + + //Расчет маг.крита + public function magKrit($l2, $t) + { + $r = 0; + $r = $l2 * 2 - 7; + if ($r > $t) { + //магический промах (серый удар, в 2 раза меньше) 6% + //250 ед. защиты от магии дает 1% шанса увернуться от магии + //$r = -1; , промах -- + $r = 0; + } else { + //каждая владелка дает 3% шанс крита + $r = ceil($t * 0.75); + if ($r > 30) { + $r = 30; + } + if (rand(0, 10000) < $r * 100) { + //крит удар + $r = 1; + } else { + $r = 0; + } + } + return $r; + } + + + //Обновление НР + public function hpRef() + { + } + + //Расчет опыта + public function testExp($y, $s1, $s2, $id1, $id2) + { + global $u, $c; + + + //ТУТ таблица умножения оыта + $oplevel = [ // Максимум для каждого уровня. + 0 => 1, + 1 => 1, + 2 => 1, + 3 => 1, + 4 => 2, + 5 => 2, + 6 => 2, + 7 => 2, + 8 => 3, + 9 => 4, + 10 => 5, + 11 => 6, + 12 => 7, + 13 => 50, + 14 => 75, + ]; + + if ($y < 0) { + $y = 0; + } + if ($s2['hpNow'] < 0) { + //echo '[f]'; + $y = 0; + } + if ($s2['hpNow'] < $y) { + //echo '[d]'; + $y = $s2['hpNow']; + } + if ($y < 0) { /*echo '[r]';*/ + $y = 0; + } + // + // $addExp = 0+(($y/$s2['hpAll'])*100); + $addExp = 0 + ($y * $oplevel[$this->users[$this->uids[$s2['id']]]['level']]); + if ($s2['hpAll'] - $y <= 0) { + //echo '[a]'; + $addExp = 100; + } + + //if($this->users[$this->uids[$s2['id']]]['host_reg'] == 'real_bot_user') { + // $addExp = floor($addExp*0.76); + //} + + if ($addExp < 0) { + $addExp = 0; + } + if ($s2['levels'] != 'undefined' && $this->users[$this->uids[$s2['id']]]['pass'] != 'saintlucia') { + //$doexp = mysql_fetch_array(mysql_query('SELECT SUM(`items_main`.`price1`) FROM `items_users`,`items_main` WHERE `items_users`.`inOdet` > 0 AND `items_main`.`inSlot` < 50 AND `items_users`.`uid` = "'.$id2.'" AND `items_users`.`delete` = 0 AND `items_main`.`id` = `items_users`.`item_id` ORDER BY `items_main`.`inSlot` ASC LIMIT 50')); + //if($doexp[0]>0) { + // $doexp = floor($doexp[0]/15); + //}else{ + // $doexp = 0; + //} + //$doexp = floor(($this->users[$this->uids[$id2]]['btl_cof']-$this->users[$this->uids[$id1]]['btl_cof']*0.80)/5); + /*if( $this->users[$this->uids[$id2]]['btl_cof'] > $this->users[$this->uids[$s2['id']]]['level']*350 ) { + //Артник + $doexp = floor($this->users[$this->uids[$s2['id']]]['level']*350 + ($this->users[$this->uids[$id2]]['btl_cof']/20)); + }else{ + //Не артник + $doexp = floor(($this->users[$this->uids[$id2]]['btl_cof'])); + }*/ + + if ($doexp < 0) { + $doexp = 0; + } + //$addExp = $addExp*(1+($s2['levels']['expBtlMax']+$s2['irka'])+($doexp*1.01/10))/100; + /* + $bmxx = $s2['levels']['expBtlMax']; + + if ($s2['levels']['bprice'] == 0) + { + $bmxx = round( $bmxx * $s2['prckr']); } - } - $j++; - } - unset($eff); - - return $hp; - } - - //Расчет маг.крита - public function magKrit($l2, $t) - { - $r = 0; - $r = $l2 * 2 - 7; - if ($r > $t) { - //магический промах (серый удар, в 2 раза меньше) 6% - //250 ед. защиты от магии дает 1% шанса увернуться от магии - //$r = -1; , промах -- - $r = 0; - } else { - //каждая владелка дает 3% шанс крита - $r = ceil($t * 0.75); - if ($r > 30) { - $r = 30; - } - if (rand(0, 10000) < $r * 100) { - //крит удар - $r = 1; - } else { - $r = 0; - } - } - return $r; - } - - - //Обновление НР - public function hpRef() - { - - } - - //Расчет опыта - public function testExp($y, $s1, $s2, $id1, $id2) - { - global $u, $c; - - - //ТУТ таблица умножения оыта - $oplevel = [ // Максимум для каждого уровня. - 0 => 1, - 1 => 1, - 2 => 1, - 3 => 1, - 4 => 2, - 5 => 2, - 6 => 2, - 7 => 2, - 8 => 3, - 9 => 4, - 10 => 5, - 11 => 6, - 12 => 7, - 13 => 50, - 14 => 75 - ]; - - if ($y < 0) { - $y = 0; - } - if ($s2['hpNow'] < 0) { - //echo '[f]'; - $y = 0; - } - if ($s2['hpNow'] < $y) { - //echo '[d]'; - $y = $s2['hpNow']; - } - if ($y < 0) { /*echo '[r]';*/ - $y = 0; - } - - $addExp = 0 + ($y * $oplevel[$this->users[$this->uids[$s2['id']]]['level']]); - if ($s2['hpAll'] - $y <= 0) { - //echo '[a]'; - $addExp = 100; - } - - if ($addExp < 0) { - $addExp = 0; - } - if ($s2['levels'] != 'undefined' && $this->users[$this->uids[$s2['id']]]['pass'] != 'saintlucia') { - if ($doexp < 0) { - $doexp = 0; - } - - if ($this->info['razdel'] != 5 && $c['exp_limit_many'] == true) { - $texp = mysql_fetch_array(mysql_query('SELECT COUNT(`a`.`id`) FROM `battle_users` AS `a` WHERE `a`.`uid` = "' . $id1 . '" AND `a`.`battle` IN ( SELECT `b`.`battle` FROM `battle_users` AS `b` WHERE `b`.`uid` = "' . $id2 . '" AND `b`.`team` != `a`.`team` AND `b`.`time` > "' . (time() - 86400) . '" ) LIMIT 1')); - $texp = $texp[0]; - // - if ($texp > 5) { - $addExp = $addExp * 0.00; - } elseif ($texp > 4) { - $addExp = $addExp * 0.50; - } elseif ($texp > 3) { - $addExp = $addExp * 0.75; - } elseif ($texp > 2) { - $addExp = $addExp * 1.00; - } elseif ($texp > 1) { - $addExp = $addExp * 1.00; - } else { - $addExp = $addExp * 1.00; + else + { + $bmxx = round( $bmxx * ( $s2['prckr'] / $s2['levels']['bprice'] ) ); } - } - // - if ($this->users[$this->uids[$s2['id']]]['bot'] > 0) { - //$addExp = round($addExp/5); - } - unset($doexp); - } else { - $addExp = 0; - } - /* + if( $bmxx < $s2['levels']['expBtlMax'] / 2 ) { + $bmxx = round($s2['levels']['expBtlMax']/5); + } + + if( $this->info['type'] == 1 ) { + $addExp = $addExp*($bmxx/10)/100; + }else{ + $xty = 0; + + // $xty = ($s2['reting']-$s1['reting']/2); + // if( $xty < 0 ) { + // $xty = 0; + // } + + $addExp = $addExp*(($bmxx+$xty))/100; + }*/ + + + //echo '(Базовый опыт: '.$s2['levels']['expBtlMax'].')'; + // + if ($this->info['razdel'] != 5 && $c['exp_limit_many'] == true) { + $texp = mysql_fetch_array(mysql_query('SELECT COUNT(`a`.`id`) FROM `battle_users` AS `a` WHERE `a`.`uid` = "' . $id1 . '" AND `a`.`battle` IN ( SELECT `b`.`battle` FROM `battle_users` AS `b` WHERE `b`.`uid` = "' . $id2 . '" AND `b`.`team` != `a`.`team` AND `b`.`time` > "' . (time() - 86400) . '" ) LIMIT 1')); + $texp = $texp[0]; + // + if ($texp > 5) { + $addExp = $addExp * 0.00; + } elseif ($texp > 4) { + $addExp = $addExp * 0.50; + } elseif ($texp > 3) { + $addExp = $addExp * 0.75; + } elseif ($texp > 2) { + $addExp = $addExp * 1.00; + } elseif ($texp > 1) { + $addExp = $addExp * 1.00; + } else { + $addExp = $addExp * 1.00; + } + } + // + if ($this->users[$this->uids[$s2['id']]]['bot'] > 0) { + //$addExp = round($addExp/5); + } + unset($doexp); + } else { + $addExp = 0; + } + + /* if($s1['level'] > $s2['level']){ $minProc = 100 - 33*( $s1['level']-$s2['level'] ); if($minProc < 1) { @@ -564,172 +771,207 @@ class battleClass } */ - if ($this->users[$this->uids[$s2['id']]]['bot_id'] == 0 && $this->stats[$this->uids[$s2['id']]]['itmslvl'] == 0) { - //$addExp = 0; - } + if ($this->users[$this->uids[$s2['id']]]['bot_id'] == 0 && $this->stats[$this->uids[$s2['id']]]['itmslvl'] == 0) { + //$addExp = 0; + } - if ($this->info['typeBattle'] == 9) { - //Нападение - //за 8 и ниже не дают опыт - /*if( $this->users[$this->uids[$s1['id']]]['level'] > $this->users[$this->uids[$s2['id']]]['level'] ) { + if ($this->info['typeBattle'] == 9) { + //Нападение + //за 8 и ниже не дают опыт + /*if( $this->users[$this->uids[$s1['id']]]['level'] > $this->users[$this->uids[$s2['id']]]['level'] ) { if( $this->users[$this->uids[$s2['id']]]['level'] <= 8 ) { $addExp = 0; } }*/ - } + } - return $addExp; - } + return $addExp; + } - //Добавляем опыт \ нанесенный урон - public function takeExp($id, $y, $id1, $id2, $mgregen = false, $nobattle_uron = false) - { - global $u; - if (isset($this->users[$this->uids[$id]])) { - $s1 = $this->stats[$this->uids[$id1]]; - $s2 = $this->stats[$this->uids[$id2]]; - if ($id1 != $id2) { - $e = $this->testExp($y, $s1, $s2, $id1, $id2); - } else { - $e = 0; - } - - if ((int)$this->users[$this->uids[$id1]]['bot_id'] == 0 && $this->users[$this->uids[$id1]]['dnow'] != 0 && $this->info['dungeon'] != 1) { - $dun_limitForLevel = [ // Максимум для каждого уровня. - 4 => 750, - 5 => 1500, - 6 => 3500, - 7 => 8000, - 8 => 25000, - 9 => 50000, - 10 => 75000, - 11 => 125000, - 12 => 250000, - 13 => 500000, - 14 => 750000 - ]; - $dun_expFactor = [ // Максимум для каждого уровня. - 4 => 5, - 5 => 5, - 6 => 5, - 7 => 5, - 8 => 5, - 9 => 3, - 10 => 1, - 11 => 1, - 12 => 1, - 13 => 1, - 14 => 1 - ]; - - if (isset($dun_expFactor[(int)$this->users[$this->uids[$id1]]['level']])) { - $e = $e * $dun_expFactor[(int)$this->users[$this->uids[$id1]]['level']]; - } - if ($this->info['dungeon'] > 1 && $this->users[$this->uids[$id1]]['battle'] > 0) { // пещерный лимит - $dun_exp = []; // Текущий лимит опыта игрока в подземельях. - $rep = mysql_fetch_array(mysql_query('SELECT `dungeonexp`,`id` FROM `rep` WHERE `id` = "' . $this->users[$this->uids[$id1]]['id'] . '" LIMIT 1')); - $rep = explode(',', $rep['dungeonexp']); - foreach ($rep as $key => $val) { - $val = explode('=', $val); - if (isset($val[0]) && isset($val[1]) && $val[0] != '' && $val[1] != 0) $dun_exp[(int)$val[0]] = (int)$val[1]; // текущий лимит опыта в подземке - } - unset($rep); - - if (!isset($dun_exp[$this->info['dungeon']])) $dun_exp[$this->info['dungeon']] = 0; - if (!isset($dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']])) { // Если лимит не задан, опыт не даем. - $e = 0; - } elseif ( - isset($dun_exp[$this->info['dungeon']]) && - $dun_exp[$this->info['dungeon']] >= $dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] - ) { // Если лимит уже достигнут, опыт не даем. - $e = 0; - } elseif ( - isset($dun_exp[$this->info['dungeon']]) && - $dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] > $dun_exp[$this->info['dungeon']] - ) { // Если текущая репутация не достигла лимита. - if (($dun_exp[$this->info['dungeon']] + $e) > $dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']]) { - // Если опыта набрано достаточно, для достижения лимита. - $e = abs($e - abs($dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] - ($e + $dun_exp[$this->info['dungeon']]))); - $dun_exp[$this->info['dungeon']] += $e; - } elseif ($dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] > ($dun_exp[$this->info['dungeon']] + $e)) { - // Если опыта недостаточно, для достижения лимита. - $e = $e; - $dun_exp[$this->info['dungeon']] += $e; - } else { - $e = 0; - } - } else { // В любой непонятной ситуцаии. + //Добавляем опыт \ нанесенный урон + public function takeExp($id, $y, $id1, $id2, $mgregen = false, $nobattle_uron = false) + { + global $u; + if (isset($this->users[$this->uids[$id]])) { + $s1 = $this->stats[$this->uids[$id1]]; + $s2 = $this->stats[$this->uids[$id2]]; + if ($id1 != $id2) { + $e = $this->testExp($y, $s1, $s2, $id1, $id2); + } else { + $e = 0; + } + /* + if( $this->users[$this->uids[$id1]]['level'] > $this->users[$this->uids[$id2]]['level'] ) { + $rez = $this->users[$this->uids[$id1]]['level']-$this->users[$this->uids[$id2]]['level']; + $e = round($e/100*(21-$rez*3)); + if( $e < 0 ) { $e = 0; } - } else $e = $e; // Опыт в пещерах. - if ($this->info['dungeon'] == 102 && (int)$this->users[$this->uids[$id1]]['bot_id'] == 0) { - $e = floor($e * 0.002); - } - } + }*/ - $this->users[$this->uids[$id1]]['battle_exp'] += floor($e);//round($e,5); - //echo '[['.$id1.']+'.$e.']'; - // - if ($mgregen == false && $nobattle_uron == false) { - $this->users[$this->uids[$id1]]['battle_yron'] += floor($y); - if ($this->stats[$this->uids[$id1]]['notactic'] != 1) { - if ($s2['hpAll'] <= 1000) { - if ($this->stats[$this->uids[$id2]]['this_animal'] == 0) { - $this->users[$this->uids[$id1]]['tactic6'] += round(0.1 * (floor($y) / $s2['hpAll'] * 100), 10); - } else { - $this->users[$this->uids[$id1]]['tactic6'] += round(0.1 * (floor($y) / $s2['hpAll'] * 100), 10) / 3; - } - } else { - if ($this->stats[$this->uids[$id2]]['this_animal'] == 0) { - $this->users[$this->uids[$id1]]['tactic6'] += round(0.1 * (floor($y) / 1000 * 100), 10); - } else { - $this->users[$this->uids[$id1]]['tactic6'] += round(0.1 * (floor($y) / 1000 * 100), 10) / 3; - } + if ((int)$this->users[$this->uids[$id1]]['bot_id'] == 0 && $this->users[$this->uids[$id1]]['dnow'] != 0 && $this->info['dungeon'] != 1) { + $dun_limitForLevel = [ // Максимум для каждого уровня. + 4 => 750, + 5 => 1500, + 6 => 3500, + 7 => 8000, + 8 => 25000, + 9 => 50000, + 10 => 75000, + 11 => 125000, + 12 => 250000, + 13 => 500000, + 14 => 750000, + ]; + $dun_expFactor = [ // Максимум для каждого уровня. + 4 => 5, + 5 => 5, + 6 => 5, + 7 => 5, + 8 => 5, + 9 => 3, + 10 => 1, + 11 => 1, + 12 => 1, + 13 => 1, + 14 => 1, + ]; + + if (isset($dun_expFactor[(int)$this->users[$this->uids[$id1]]['level']])) { + $e = $e * $dun_expFactor[(int)$this->users[$this->uids[$id1]]['level']]; + } + if ($this->info['dungeon'] > 1 && $this->users[$this->uids[$id1]]['battle'] > 0) { // пещерный лимит + $dun_exp = []; // Текущий лимит опыта игрока в подземельях. + $rep = mysql_fetch_array(mysql_query('SELECT `dungeonexp`,`id` FROM `rep` WHERE `id` = "' . $this->users[$this->uids[$id1]]['id'] . '" LIMIT 1')); + $rep = explode(',', $rep['dungeonexp']); + foreach ($rep as $key => $val) { + $val = explode('=', $val); + if (isset($val[0]) && isset($val[1]) && $val[0] != '' && $val[1] != 0) { + $dun_exp[(int)$val[0]] = (int)$val[1]; + } // текущий лимит опыта в подземке + } + unset($rep); + + if (!isset($dun_exp[$this->info['dungeon']])) { + $dun_exp[$this->info['dungeon']] = 0; + } + if (!isset($dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']])) { // Если лимит не задан, опыт не даем. + $e = 0; + } elseif ( + isset($dun_exp[$this->info['dungeon']]) && + $dun_exp[$this->info['dungeon']] >= $dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] + ) { // Если лимит уже достигнут, опыт не даем. + $e = 0; + } elseif ( + isset($dun_exp[$this->info['dungeon']]) && + $dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] > $dun_exp[$this->info['dungeon']] + ) { // Если текущая репутация не достигла лимита. + if (($dun_exp[$this->info['dungeon']] + $e) > $dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']]) { + // Если опыта набрано достаточно, для достижения лимита. + $e = abs($e - abs($dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] - ($e + $dun_exp[$this->info['dungeon']]))); + $dun_exp[$this->info['dungeon']] += $e; + } elseif ($dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] > ($dun_exp[$this->info['dungeon']] + $e)) { + // Если опыта недостаточно, для достижения лимита. + $e = $e; + $dun_exp[$this->info['dungeon']] += $e; + } else { + $e = 0; + } + } else { // В любой непонятной ситуцаии. + $e = 0; + } + } else { + $e = $e; + } // Опыт в пещерах. + if ($this->info['dungeon'] == 102 && (int)$this->users[$this->uids[$id1]]['bot_id'] == 0) { + $e = floor($e * 0.002); + } + } + /* + if( (int)$this->users[$this->uids[$id1]]['bot_id'] == 0 && $this->users[$this->uids[$id1]]['dnow'] != 0 && $this->info['dungeon'] != 1 ) { + if($this->users[$this->uids[$id1]]['level'] >= 7 ) { + $itmsCfc = ($s1['itmsCfc']+$s2['itmsCfc'])/26; + $itmsCfc = round($itmsCfc,5); + $e = $e*$itmsCfc; } - } - } + }*/ - $upd = mysql_query('UPDATE `stats` SET `last_hp` = "' . $this->users[$this->uids[$id1]]['last_hp'] . '",`tactic6` = "' . $this->users[$this->uids[$id1]]['tactic6'] . '",`battle_yron` = "' . $this->users[$this->uids[$id1]]['battle_yron'] . '",`battle_exp` = "' . $this->users[$this->uids[$id1]]['battle_exp'] . '" WHERE `id` = "' . ((int)$id1) . '" LIMIT 1'); - if (!$upd) { - echo '[не удача при использовании приема]'; - } else { - $this->stats[$this->uids[$id1]]['battle_exp'] = $this->users[$this->uids[$id1]]['battle_exp']; - $this->clear_cache($id1); - $this->stats[$this->uids[$id1]]['tactic6'] = $this->users[$this->uids[$id1]]['tactic6']; - if ($id1 == $u->info['id']) { - $u->info['tactic6'] = $this->users[$this->uids[$id1]]['tactic6']; - $u->stats['tactic6'] = $this->users[$this->uids[$id1]]['tactic6']; - $u->info['battle_exp'] = $this->users[$this->uids[$id1]]['battle_exp']; - $u->info['battle_yron'] = $this->users[$this->uids[$id1]]['battle_yron']; - $u->info['notactic'] = $this->users[$this->uids[$id1]]['notactic']; - $u->stats['notactic'] = $this->users[$this->uids[$id1]]['notactic']; - } - } - unset($s1, $s2); - } - } + $this->users[$this->uids[$id1]]['battle_exp'] += floor($e);//round($e,5); + //echo '[['.$id1.']+'.$e.']'; + // + if ($mgregen == false && $nobattle_uron == false) { + $this->users[$this->uids[$id1]]['battle_yron'] += floor($y); + if ($this->stats[$this->uids[$id1]]['notactic'] != 1) { + if ($s2['hpAll'] <= 1000) { + if ($this->stats[$this->uids[$id2]]['this_animal'] == 0) { + $this->users[$this->uids[$id1]]['tactic6'] += round(0.1 * (floor($y) / $s2['hpAll'] * 100), + 10); + } else { + $this->users[$this->uids[$id1]]['tactic6'] += round(0.1 * (floor($y) / $s2['hpAll'] * 100), + 10) / 3; + } + } else { + if ($this->stats[$this->uids[$id2]]['this_animal'] == 0) { + $this->users[$this->uids[$id1]]['tactic6'] += round(0.1 * (floor($y) / 1000 * 100), 10); + } else { + $this->users[$this->uids[$id1]]['tactic6'] += round(0.1 * (floor($y) / 1000 * 100), 10) / 3; + } + } + } + } - //Добавляем нанесенный урон - public function takeYronNow($uid, $y) - { - global $u; - $this->users[$this->uids[$uid]]['battle_yron'] += floor($y); - $this->stats[$this->uids[$uid]]['battle_yron'] += floor($y); - if ($uid == $u->info['id']) { - $u->info['battle_yron'] += floor($y); - $u->stats['battle_yron'] += floor($y); - } - mysql_query('UPDATE `stats` SET `battle_yron` = `battle_yron` + "' . mysql_real_escape_string(floor($y)) . '" WHERE `id` = "' . mysql_real_escape_string($uid) . '" LIMIT 1'); - } + //if($y != 0) { + // $this->users[$this->uids[$id1]]['tactic6'] = -$y; + //} + //if($u->info['admin'] > 0 ) { + // echo '['.$id1.' ударил '.$id2.' и получил +'.$y.' к нанесенному урону и +'.$e.' опыта]'; + //} - //JS информация о игроке - public function myInfo($id, $t) - { - global $c, $u; - if (isset($this->users[$this->uids[$id]]) || $u->info['id'] == $id) { - if ($u->info['id'] == $id || ($u->info['enemy'] == $id && $id > 0)) { - //Всегда обновляем - $this->users[$this->uids[$id]] = mysql_fetch_array(mysql_query('SELECT + $upd = mysql_query('UPDATE `stats` SET `last_hp` = "' . $this->users[$this->uids[$id1]]['last_hp'] . '",`tactic6` = "' . $this->users[$this->uids[$id1]]['tactic6'] . '",`battle_yron` = "' . $this->users[$this->uids[$id1]]['battle_yron'] . '",`battle_exp` = "' . $this->users[$this->uids[$id1]]['battle_exp'] . '" WHERE `id` = "' . ((int)$id1) . '" LIMIT 1'); + if (!$upd) { + echo '[не удача при использовании приема]'; + } else { + $this->stats[$this->uids[$id1]]['battle_exp'] = $this->users[$this->uids[$id1]]['battle_exp']; + $this->clear_cache($id1); + $this->stats[$this->uids[$id1]]['tactic6'] = $this->users[$this->uids[$id1]]['tactic6']; + if ($id1 == $u->info['id']) { + $u->info['tactic6'] = $this->users[$this->uids[$id1]]['tactic6']; + $u->stats['tactic6'] = $this->users[$this->uids[$id1]]['tactic6']; + $u->info['battle_exp'] = $this->users[$this->uids[$id1]]['battle_exp']; + $u->info['battle_yron'] = $this->users[$this->uids[$id1]]['battle_yron']; + $u->info['notactic'] = $this->users[$this->uids[$id1]]['notactic']; + $u->stats['notactic'] = $this->users[$this->uids[$id1]]['notactic']; + } + } + unset($s1, $s2); + } + } + + //Добавляем нанесенный урон + public function takeYronNow($uid, $y) + { + global $u; + if (!is_numeric($y) || !is_numeric($uid)) { + return; + } + (int)$y = floor($y); + $this->users[$this->uids[$uid]]['battle_yron'] += $y; + $this->stats[$this->uids[$uid]]['battle_yron'] += $y; + if ($uid == $u->info['id']) { + $u->info['battle_yron'] += $y; + $u->stats['battle_yron'] += $y; + } + mysql_query("UPDATE stats SET battle_yron = battle_yron + $y WHERE id = " . $uid); + } + + //JS информация о игроке + public function myInfo($id, $t) + { + global $c, $u; + if (isset($this->users[$this->uids[$id]]) || $u->info['id'] == $id) { + if ($u->info['id'] == $id || ($u->info['enemy'] == $id && $id > 0)) { + //Всегда обновляем + $this->users[$this->uids[$id]] = mysql_fetch_array(mysql_query('SELECT `u`.`zag`,`u`.`id`,`u`.`login`,`u`.`login2`,`u`.`online`,`u`.`admin`,`u`.`city`,`u`.`cityreg`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`, `u`.`level`,`u`.`money`,`u`.`money3`,`u`.`money2`,`u`.`money4`,`u`.`battle`,`u`.`sex`,`u`.`obraz`,`u`.`win`,`u`.`win_t`, @@ -739,1423 +981,1599 @@ class battleClass `st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id` = "' . $id . '" LIMIT 1')); - $this->stats[$this->uids[$id]] = $u->getStats($this->users[$this->uids[$id]], 0, 0, false, false, true); - $this->stats[$this->uids[$id]]['items'] = $this->stats[$this->uids[$id]]['items']; - $this->stats[$this->uids[$id]]['effects'] = $this->stats[$this->uids[$id]]['effects']; - /* + $this->stats[$this->uids[$id]] = $u->getStats($this->users[$this->uids[$id]], 0, 0, false, false, true); + $this->stats[$this->uids[$id]]['items'] = $this->stats[$this->uids[$id]]['items']; + $this->stats[$this->uids[$id]]['effects'] = $this->stats[$this->uids[$id]]['effects']; + /* $ur = $this->users[$this->uids[$id]]; $st = $this->stats[$this->uids[$id]]; $itm = $this->stats[$this->uids[$id]]['items']; $eff = $this->stats[$this->uids[$id]]['effects']; */ - } + } - //ssecho '['.$id.' -> '.$this->users[$this->uids[$id]]['last_hp'].']'; + //ssecho '['.$id.' -> '.$this->users[$this->uids[$id]]['last_hp'].']'; - $ur = $this->users[$this->uids[$id]]; - $st = $this->stats[$this->uids[$id]]; - $itm = $this->stats[$this->uids[$id]]['items']; - $eff = $this->stats[$this->uids[$id]]['effects']; - $ef = ''; - $i = 0; - //effs_hide.gif - if ($u->info['seff'] < 1) { - //$ef .= '
'; - $ef .= '
Свернуть\',event,3,1,1,1,\'\');\" onmouseout=\"top.hic();\" onmousedown=\"top.hic();\">
'; + $ur = $this->users[$this->uids[$id]]; + $st = $this->stats[$this->uids[$id]]; + $itm = $this->stats[$this->uids[$id]]['items']; + $eff = $this->stats[$this->uids[$id]]['effects']; + $ef = ''; + $i = 0; + //effs_hide.gif + if ($u->info['seff'] < 1) { + //$ef .= '
'; + $ef .= '
Свернуть\',event,3,1,1,1,\'\');\" onmouseout=\"top.hic();\" onmousedown=\"top.hic();\">
'; - while ($i != -1) { - $nseef = 0; - if ($this->users[$this->uids[$ur['id']]]['id'] != $u->info['id'] && $ur['id'] != 0) { - if ($this->stats[$this->uids[$ur['id']]]['seeAllEff'] != 1) { - $nseef = 1; - if ($eff[$i]['v1'] == 'priem') { - $eff[$i]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')); - } - if (isset($eff[$i]['priem']['id']) && $eff[$i]['priem']['neg'] == 1) { - $nseef = 0; - } - } - } + while ($i != -1) { + $nseef = 0; + if ($this->users[$this->uids[$ur['id']]]['id'] != $u->info['id'] && $ur['id'] != 0) { + if ($this->stats[$this->uids[$ur['id']]]['seeAllEff'] != 1) { + $nseef = 1; + if ($eff[$i]['v1'] == 'priem') { + $eff[$i]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')); + } + if (isset($eff[$i]['priem']['id']) && $eff[$i]['priem']['neg'] == 1) { + $nseef = 0; + } + } + } - if (isset($eff[$i]) && $eff[$i] != 'delete') { - if ($nseef == 0) { + if (isset($eff[$i]) && $eff[$i] != 'delete') { + if ($nseef == 0) { + $ei = '' . $eff[$i]['name'] . ''; + if ($eff[$i]['x'] > 1) { + //$ei .= ' [x'.$eff[$i]['x'].'] '; + $ei .= ' x' . $eff[$i]['x'] . ' '; + } + if ($eff[$i]['type1'] > 0 && $eff[$i]['type1'] < 7) { + $ei .= ' (Эликсир)'; + } elseif (($eff[$i]['type1'] > 6 && $eff[$i]['type1'] < 11) || $eff[$i]['type1'] == 16) { + $ei .= ' (Заклятие)'; + } elseif ($eff[$i]['type1'] == 14) { + $ei .= ' (Прием)'; + } elseif ($eff[$i]['type1'] == 15) { + $ei .= ' (Изучение)'; + } elseif ($eff[$i]['type1'] == 17) { + $ei .= ' (Проклятие)'; + } elseif ($eff[$i]['type1'] == 18 || $eff[$i]['type1'] == 19) { + $ei .= ' (Травма)'; + } elseif ($eff[$i]['type1'] == 20) { + $ei .= ' (Пристрастие)'; + } elseif ($eff[$i]['type1'] == 22) { + $ei .= ' (Ожидание)'; + } else { + $ei .= ' (Эффект)'; + } + $ei .= '
'; - $ei = '' . $eff[$i]['name'] . ''; - if ($eff[$i]['x'] > 1) { - //$ei .= ' [x'.$eff[$i]['x'].'] '; - $ei .= ' x' . $eff[$i]['x'] . ' '; - } - if ($eff[$i]['type1'] > 0 && $eff[$i]['type1'] < 7) { - $ei .= ' (Эликсир)'; - } elseif (($eff[$i]['type1'] > 6 && $eff[$i]['type1'] < 11) || $eff[$i]['type1'] == 16) { - $ei .= ' (Заклятие)'; - } elseif ($eff[$i]['type1'] == 14) { - $ei .= ' (Прием)'; - } elseif ($eff[$i]['type1'] == 15) { - $ei .= ' (Изучение)'; - } elseif ($eff[$i]['type1'] == 17) { - $ei .= ' (Проклятие)'; - } elseif ($eff[$i]['type1'] == 18 || $eff[$i]['type1'] == 19) { - $ei .= ' (Травма)'; - } elseif ($eff[$i]['type1'] == 20) { - $ei .= ' (Пристрастие)'; - } elseif ($eff[$i]['type1'] == 22) { - $ei .= ' (Ожидание)'; - } else { - $ei .= ' (Эффект)'; - } - $ei .= '
'; - - $out = ''; - $time_still = ($eff[$i]['timeUse'] + ($eff[$i]['timeAce'] - $eff[$i]['timeUse']) + $eff[$i]['actionTime']); - if ($eff[$i]['timeAce'] == 0) { - $time_still += $eff[$i]['timeUse']; - } - $time_still -= time(); - if ($eff[$i]['bp'] == 0 && $eff[$i]['timeUse'] != 77) { - if ($eff[$i]['type1'] != 13) { - $ei .= 'Осталось: ' . $u->timeOut($time_still) . ''; - } - } else { - if ($eff[$i]['timeUse'] != 77 && $eff[$i]['hod'] < 1) { - $ei .= 'Осталось: ' . $u->timeOut($time_still) . ''; - //$ei .= 'Зарядов: '.$out.'
'; - } elseif ($eff[$i]['hod'] >= 0) { - $ei .= 'Зарядов: ' . $eff[$i]['hod'] . ''; - } - } - - if ($eff[$i]['user_use'] != '') { - if ($this->users[$this->uids[$eff[$i]['user_use']]]['login2'] != '') { - $ei .= '
Автор: ' . $this->users[$this->uids[$eff[$i]['user_use']]]['login2'] . ''; - } elseif ($this->users[$this->uids[$eff[$i]['user_use']]]['login'] != '') { - $ei .= '
Автор: ' . $this->users[$this->uids[$eff[$i]['user_use']]]['login'] . ''; - } - } - - //Действие эффекта - $tr = ''; - $ti = $u->items['add']; - $x = 0; - $ed = $u->lookStats($eff[$i]['data']); - while ($x < count($ti)) { - $n = $ti[$x]; - if (isset($ed['add_' . $n], $u->is[$n]) && $n != 'pog') { - $z = ''; - if ($ed['add_' . $n] > 0) { - $z = '+'; + $out = ''; + $time_still = ($eff[$i]['timeUse'] + ($eff[$i]['timeAce'] - $eff[$i]['timeUse']) + $eff[$i]['actionTime']); + if ($eff[$i]['timeAce'] == 0) { + $time_still += $eff[$i]['timeUse']; + } + $time_still -= time(); + if ($eff[$i]['bp'] == 0 && $eff[$i]['timeUse'] != 77) { + if ($eff[$i]['type1'] != 13) { + /*$tmp = floor($time_still/2592000); + $id=0; + if ($tmp > 0) { + $id++; + if ($id<3) {$out .= $tmp." мес. ";} + $time_still = $time_still-$tmp*2592000; } - $tr .= '
' . $u->is[$n] . ': ' . $z . '' . $ed['add_' . $n]; - } - $x++; - } - - if ($ed['add_mib1'] != 0) { - if ($ed['add_mab1'] != 0) { - $tr .= '
Броня головы: ' . $ed['add_mib1'] . '-' . $ed['add_mab1'] . ''; - } else { - $m1l = $ed['add_mib1']; - if ($m1l > 0) { - $m1l = '+' . $m1l; + $tmp = floor($time_still/604800); + if ($tmp > 0) { + $id++; + if ($id<3) {$out .= $tmp." нед. ";} + $time_still = $time_still-$tmp*604800; } - $tr .= '
Броня головы: ' . $m1l . ''; - } - } - if ($ed['add_mib2'] != 0) { - if ($ed['add_mab2'] != 0) { - $tr .= '
Броня корпуса: ' . $ed['add_mib2'] . '-' . $ed['add_mab2'] . ''; - } else { - $m1l = $ed['add_mib2']; - if ($m1l > 0) { - $m1l = '+' . $m1l; + $tmp = floor($time_still/86400); + if ($tmp > 0) { + $id++; + if ($id<3) {$out .= $tmp." дн. ";} + $time_still = $time_still-$tmp*86400; } - $tr .= '
Броня корпуса: ' . $m1l . ''; - } - } - if ($ed['add_mib3'] != 0) { - if ($ed['add_mab3'] != 0) { - $tr .= '
Броня пояса: ' . $ed['add_mib3'] . '-' . $ed['add_mab3'] . ''; - } else { - $m1l = $ed['add_mib3']; - if ($m1l > 0) { - $m1l = '+' . $m1l; + $tmp = floor($time_still/3600); + if ($tmp > 0) { + $id++; + if ($id<3) {$out .= $tmp." ч. ";} + $time_still = $time_still-$tmp*3600; } - $tr .= '
Броня пояса: ' . $m1l . ''; - } - } - if ($ed['add_mib4'] != 0) { - if ($ed['add_mab4'] != 0) { - $tr .= '
Броня ног: ' . $ed['add_mib4'] . '-' . $ed['add_mab4'] . ''; - } else { - $m1l = $ed['add_mib4']; - if ($m1l > 0) { - $m1l = '+' . $m1l; + $tmp = floor($time_still/60); + if ($tmp > 0) { + $id++; + if ($id<3) {$out .= $tmp." мин. ";} } - $tr .= '
Броня ног: ' . $m1l . ''; - } + if($out=='') + { + $out = $time_still.' сек.'; + }*/ + $ei .= 'Осталось: ' . $u->timeOut($time_still) . ''; + } + } else { + if ($eff[$i]['timeUse'] != 77 && $eff[$i]['hod'] < 1) { + $ei .= 'Осталось: ' . $u->timeOut($time_still) . ''; + //$ei .= 'Зарядов: '.$out.'
'; + } elseif ($eff[$i]['hod'] >= 0) { + $ei .= 'Зарядов: ' . $eff[$i]['hod'] . ''; + } + } + + if ($eff[$i]['user_use'] != '') { + if ($this->users[$this->uids[$eff[$i]['user_use']]]['login2'] != '') { + $ei .= '
Автор: ' . $this->users[$this->uids[$eff[$i]['user_use']]]['login2'] . ''; + } elseif ($this->users[$this->uids[$eff[$i]['user_use']]]['login'] != '') { + $ei .= '
Автор: ' . $this->users[$this->uids[$eff[$i]['user_use']]]['login'] . ''; + } + } + + //Действие эффекта + $tr = ''; + $ti = $u->items['add']; + $x = 0; + $ed = $u->lookStats($eff[$i]['data']); + while ($x < count($ti)) { + $n = $ti[$x]; + if (isset($ed['add_' . $n], $u->is[$n]) && $n != 'pog') { + $z = ''; + if ($ed['add_' . $n] > 0) { + $z = '+'; + } + $tr .= '
' . $u->is[$n] . ': ' . $z . '' . $ed['add_' . $n]; + } + $x++; + } + + if ($ed['add_mib1'] != 0) { + if ($ed['add_mab1'] != 0) { + $tr .= '
Броня головы: ' . $ed['add_mib1'] . '-' . $ed['add_mab1'] . ''; + } else { + $m1l = $ed['add_mib1']; + if ($m1l > 0) { + $m1l = '+' . $m1l; + } + $tr .= '
Броня головы: ' . $m1l . ''; + } + } + if ($ed['add_mib2'] != 0) { + if ($ed['add_mab2'] != 0) { + $tr .= '
Броня корпуса: ' . $ed['add_mib2'] . '-' . $ed['add_mab2'] . ''; + } else { + $m1l = $ed['add_mib2']; + if ($m1l > 0) { + $m1l = '+' . $m1l; + } + $tr .= '
Броня корпуса: ' . $m1l . ''; + } + } + if ($ed['add_mib3'] != 0) { + if ($ed['add_mab3'] != 0) { + $tr .= '
Броня пояса: ' . $ed['add_mib3'] . '-' . $ed['add_mab3'] . ''; + } else { + $m1l = $ed['add_mib3']; + if ($m1l > 0) { + $m1l = '+' . $m1l; + } + $tr .= '
Броня пояса: ' . $m1l . ''; + } + } + if ($ed['add_mib4'] != 0) { + if ($ed['add_mab4'] != 0) { + $tr .= '
Броня ног: ' . $ed['add_mib4'] . '-' . $ed['add_mab4'] . ''; + } else { + $m1l = $ed['add_mib4']; + if ($m1l > 0) { + $m1l = '+' . $m1l; + } + $tr .= '
Броня ног: ' . $m1l . ''; + } + } + + $efix = 0; + if (isset($ed['add_pog2']) && $ed['add_pog2'] > 0) { + $efix = $ed['add_pog2']; + } + if (isset($ed['add_pog'])) { + $tr .= '
Магический барьер способен поглотить еще ' . $ed['add_pog'] . ' ед. урона'; + } + if (isset($ed['add_pog2'])) { + $tr .= '
Магический барьер способен поглотить еще ' . $ed['add_pog2'] . ' ед. урона (' . $ed['add_pog2p'] . '%)'; + } + + if ($tr != '') { + $ei .= $tr; + } + if ($eff[$i]['info'] != '') { + $ei .= '
Информация:
' . $eff[$i]['info']; + } + + //$ef .= ''; + $ef .= '
'; + unset($efix); + } + } elseif ($eff[$i] != 'delete') { + $i = -2; + } + $i++; + } + } else { + $ef .= '
Развернуть\',event,3,1,1,1,\'\');\" onmouseout=\"top.hic();\" onmousedown=\"top.hic();\">
'; + } + if ($st['itmslvl'] == 0 && $ur['bot_id'] == 0) { + //$ef .= '
Легкое вооружение (Эффект)
Осталось: Бесконечно\">
'; + } + + $ca = ''; + if ($ur['clan'] > 0) { + $cl = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $ur['clan'] . '" LIMIT 1')); + if (isset($cl['id'])) { + $ca = ''; + } + } + if ($ur['align'] > 0) { + $ca = '' . $ca; + } + if ($ur['login2'] == '') { + $ur['login2'] = $ur['login']; + } + if (floor($st['hpNow']) > $st['hpAll']) { + $st['hpNow'] = $st['hpAll']; + } + if (floor($st['mpNow']) > $st['mpAll']) { + $st['mpNow'] = $st['mpAll']; + } + $stsua = '' . $ur['login2'] . ''; + $stsua .= '
Сила: ' . $st['s1']; + $stsua .= '
Ловкость: ' . $st['s2']; + $stsua .= '
Интуиция: ' . $st['s3']; + $stsua .= '
Выносливость: ' . $st['s4']; + if ($st['s5'] != 0) { + $stsua .= '
Интелект: ' . $st['s5']; + } + if ($st['s6'] != 0) { + $stsua .= '
Мудрость: ' . $st['s6']; + } + if ($st['s7'] != 0) { + $stsua .= '
Духовность: ' . $st['s7']; + } + if ($u->info['admin'] > 0) { + if (isset($ur['align']) && $ur['align'] == 9) { + $align = $ur['align']; + } else { + $align = $ur['align']; + } + } + $tp_img = [ + 1 => 4, + 2 => 5, + 14 => 6, + 3 => 7, + 5 => 8, + 7 => 9, + 17 => 10, + 16 => 11, + 13 => 12, + 10 => 13, + 9 => 14, + 8 => 15, + 11 => 17, //кольцо 2 + 12 => 18 //кольцо 3 + ]; + $info = 'info_reflesh(' . $t . ',' . $ur['id'] . ',"' . $ca . '' . $ur['login2'] . ' [' . $ur['level'] . '] ","' . $ur['obraz'] . '",' . floor($st['hpNow']) . ',' . floor($st['hpAll']) . ',' . floor($st['mpNow']) . ',' . floor($st['mpAll']) . ',0,' . $ur['sex'] . ',"' . $ef . '","' . $stsua . '", "' . $align . '", "' . $ur['zag'] . '");shpb();'; + $i = 0; + while ($i < count($itm)) { + // + if (isset($st['items_img'][$tp_img[$itm[$i]['inOdet']]])) { + $itm[$i]['img'] = $st['items_img'][$tp_img[$itm[$i]['inOdet']]]; + } + //генерируем предметы + $ttl = '' . $itm[$i]['name'] . ''; + $td = $u->lookStats($itm[$i]['data']); + $lvar = ''; + if ($td['add_hpAll'] > 0) { + if ($td['add_hpAll'] > 0) { + $td['add_hpAll'] = '+' . $td['add_hpAll']; + } + $lvar .= '
Уровень жизни: ' . $td['add_hpAll'] . ''; + } + if ($td['sv_yron_max'] > 0 || $td['sv_yron_min'] > 0) { + $lvar .= '
Урон: ' . (0 + $td['sv_yron_min']) . '-' . (0 + $td['sv_yron_max']) . ''; + } + if ($td['add_mab1'] > 0) { + if ($td['add_mib1'] == $td['add_mab1'] && $pl['geniration'] == 1) { + $m1l = '+'; + if ($td['add_mab1'] < 0) { + $m1l = ''; + } + $lvar .= '
Броня головы: ' . $m1l . '' . (0 + $td['add_mab1']) . ''; + } else { + $lvar .= '
Броня головы: ' . (0 + $td['add_mib1']) . '-' . (0 + $td['add_mab1']) . ''; + } + } + if ($td['add_mab2'] > 0) { + if ($td['add_mib2'] == $td['add_mab2'] && $pl['geniration'] == 1) { + $m1l = '+'; + if ($td['add_mab2'] < 0) { + $m1l = ''; + } + $lvar .= '
Броня корпуса: ' . $m1l . '' . (0 + $td['add_mab2']) . ''; + } else { + $lvar .= '
Броня корпуса: ' . (0 + $td['add_mib2']) . '-' . (0 + $td['add_mab2']) . ''; + } + } + if ($td['add_mab3'] > 0) { + if ($td['add_mib3'] == $td['add_mab3'] && $pl['geniration'] == 1) { + $m1l = '+'; + if ($td['add_mab3'] < 0) { + $m1l = ''; + } + $lvar .= '
Броня пояса: ' . $m1l . '' . (0 + $td['add_mab3']) . ''; + } else { + $lvar .= '
Броня пояса: ' . (0 + $td['add_mib3']) . '-' . (0 + $td['add_mab3']) . ''; + } + } + if ($td['add_mab4'] > 0) { + if ($td['add_mib4'] == $td['add_mab4'] && $pl['geniration'] == 1) { + $m1l = '+'; + if ($td['add_mab4'] < 0) { + $m1l = ''; + } + $lvar .= '
Броня ног: ' . $m1l . '' . (0 + $td['add_mab4']) . ''; + } else { + $lvar .= '
Броня ног: ' . (0 + $td['add_mib4']) . '-' . (0 + $td['add_mab4']) . ''; + } + } + if ($itm[$i]['iznosMAX'] > 0) { + if ($itm[$i]['iznosMAXi'] == 999999999) { + $lvar .= '
Долговечность: неразрушимо'; + } else { + $lvar .= '
Долговечность: ' . floor($itm[$i]['iznosNOW']) . '/' . floor($itm[$i]['iznosMAX']); + } + } + $ttl .= $lvar; + $ccv = ''; + + if ($itm[$i]['magic_inci'] != '' || $itm[$i]['magic_inc'] != '') { + if ($itm[$i]['magic_inc'] == '') { + $itm[$i]['magic_inc'] = $itm[$i]['magic_inci']; + } + $mgi = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $itm[$i]['magic_inc'] . '" AND `type1` = "12345" LIMIT 1')); + if (isset($mgi['id2'])) { + $mgilog = ''; + $ccv .= 'top.useMagicBattle(\'' . $mgi['mname'] . '\',' . $itm[$i]['id'] . ',\'' . $mgi['img'] . '\',1,2);'; + } + } + + $info .= 'abitms(' . (0 + $t) . ',' . (0 + $itm[$i]['uid']) . ',' . (0 + $itm[$i]['id']) . ',' . (0 + $itm[$i]['inOdet']) . ',"' . $itm[$i]['name'] . '","' . $ttl . '","' . $itm[$i]['img'] . '","' . $ccv . '");'; + $i++; + } + + return $info; + } else { + return false; + } + } + + //Проверка на выживших + public function testUsersLive() + { + $r = false; + $tl = 0; + $i = 0; + $j = 0; + while ($i < count($this->uids)) { + if ($this->stats[$i]['id'] > 0) { + if (floor($this->stats[$i]['hpNow']) < 1) { + $this->stats[$i]['hpNow'] = 0; + } + $hp[$this->users[$i]['team']] += floor($this->stats[$i]['hpNow']); + if (!isset($tml[$this->users[$i]['team']]) && floor($this->stats[$i]['hpNow']) >= 1) { + $tml[$this->users[$i]['team']] = 1; + $tmv[$j] = $this->users[$i]['team']; + $tl++; + } + } + $i++; + } + if ($tl > 1) { + $r = true; + } + return $r; + } + + //Мини лог + public function miniLogAdd($user, $text) + { + $txt = $text; + $vLog = 'at1=00000||at2=00000||zb1=0||zb2=0||bl1=0||bl2=0||time1=' . time() . '||time2=' . time() . '||s1=' . $user['sex'] . '||t1=' . $user['team'] . '||login1=' . $user['login'] . '||'; + $mas1 = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => ($this->hodID + 1), + 'text' => '', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + $mas1['text'] = $txt; + $this->add_log($mas1); + } + + //Проверяем завершение боя + public function testFinish() + { + global $u; + // + mysql_query('START TRANSACTION;'); + // + $test = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `team_win` = -1 LIMIT 1 FOR UPDATE')); + //mysql_query('UPDATE `battle` SET `testfinish` = "'.$u->info['id'].'" WHERE `id` = "'.$this->info['id'].'" LIMIT 1'); + // + mysql_query('COMMIT;'); + // + if ($this->info['team_win'] == -1 && isset($test['id'])) { + $hp = []; + $tml = []; + $tmv = []; + $tl = 0; + $i = 0; + $j = 0; + while ($i < count($this->uids)) { + if ($this->stats[$i]['id'] > 0) { + if (floor($this->stats[$i]['hpNow']) < 1) { + $this->stats[$i]['hpNow'] = 0; + } + $hp[$this->users[$i]['team']] += floor($this->stats[$i]['hpNow']); + if (!isset($tml[$this->users[$i]['team']]) && floor($this->stats[$i]['hpNow']) >= 1) { + $tml[$this->users[$i]['team']] = 1; + $tmv[$j] = $this->users[$i]['team']; + $tl++; + } + } + $i++; + } + + if ($tl <= 1) { + //Доп.проверка + $tmHpNow = []; + $tmNow = []; + $sp = mysql_query('SELECT `u`.`login`,`u`.`id`,`u`.`battle`,`s`.`team`,`s`.`hpNow` FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `u`.`battle` = "' . $this->info['id'] . '"'); + while ($pl = mysql_fetch_array($sp)) { + if (!isset($tmHpNow[$pl['team']])) { + $tmHpNow[$pl['team']] = 0; + $tmNow[] = $pl['team']; + } + $hpTm = floor($pl['hpNow']); + if ($hpTm < 0) { + $hpTm = 0; + } + if ($hpTm > 0) { + $tmHpNow[$pl['team']] += $pl['hpNow']; + } + } + $gdj = 0; + $i = 0; + while ($i < count($tmNow)) { + if (isset($tmNow[$i])) { + $j = $tmNow[$i]; + if ($tmHpNow[$j] > 0) { + $gdj++; + } + } + $i++; + } + if ($gdj > 1) { + $tl = $gdj; + echo 'Поединок может завершиться не корректно... (Сообщите Администрации об этом)'; + } + } + + if ($tl <= 1) { + //завершаем поединок, кто-то один победил, либо ничья + + $i = 0; + $tmwin = 0; + while ($i < count($tmv)) { + if ($tmv[$i] >= 1 && $tml[$tmv[$i]] > 0) { + $tmwin = $tmv[$i]; + } + $i++; + } + + if ($this->info['izlom'] == 0) { + $rs = ''; + $ts = []; + $tsi = 0; + if ($this->info['id'] > 0) { + //данные о игроках в бою + unset($this->users, $this->stats, $this->uids, $this->bots, $this->iBots); + $trl = mysql_query('SELECT `u`.`no_ip`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`money3`,`u`.`money2`,`u`.`bot_id` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '" ORDER BY `st`.`bot` DESC'); + $ir = 0; + $bi = 0; + $this->users = null; + $this->stats = null; + $this->uids = null; + $this->bots = null; + $this->iBots = null; + while ($pl = mysql_fetch_array($trl)) { + //записываем данные + if ($pl['login2'] == '') { + $pl['login2'] = $pl['login']; + } + $this->users[$ir] = $pl; + $this->uids[$pl['id']] = $ir; + if ($pl['bot'] > 0) { + $this->bots[$bi] = $pl['id']; + $this->iBots[$pl['id']] = $bi; + $bi++; + } + //записываем статы + $this->stats[$ir] = $u->getStats($pl, 0, 0, false, false, true); + $ir++; + } + } + } elseif (!isset($this->uids[$u->info['id']])) { + $rs = ''; + $ts = []; + $tsi = 0; + if ($this->info['id'] > 0) { + //данные о игроках в бою + $trl = mysql_query('SELECT `u`.`no_ip`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id` = "' . $this->info['id'] . '" LIMIT 1'); + $pl = mysql_fetch_array($trl); + //записываем данные + if ($pl['login2'] == '') { + $pl['login2'] = $pl['login']; + } + $this->users[count($this->users)] = $pl; + $this->uids[$pl['id']] = $ir; + if ($pl['bot'] > 0) { + $this->bots[count($this->bots)] = $pl['id']; + $this->iBots[$pl['id']] = $bi; + } + //записываем статы + $this->stats[count($this->stats)] = $u->getStats($pl, 0, 0, false, false, true); + } + } + + + if ($this->info['izlom'] > 0 && $tmwin == 1) { + // выкидываем ботов из боя + $i = 0; + $dlt = ''; + $dlt2 = ''; + $sp = mysql_query('SELECT `users`.`id`,`stats`.`bot`,`stats`.`team` FROM `users`,`stats` WHERE `users`.`battle` = "' . $this->info['id'] . '" AND `stats`.`id` = `users`.`id` LIMIT 250'); + while ($pl = mysql_fetch_array($sp)) { + if ($pl['bot'] == 1 && $pl['team'] != $u->info['team']) { + $dlt .= ' `id`="' . $pl['id'] . '" OR'; + $dlt2 .= ' `uid`="' . $pl['id'] . '" OR'; + $i++; + } + } + + if ($i > 0) { + $dlt = trim($dlt, 'OR'); + $dlt2 = trim($dlt2, 'OR'); + mysql_query('DELETE FROM `users` WHERE ' . $dlt . ' LIMIT ' . $i); + mysql_query('DELETE FROM `stats` WHERE ' . $dlt . ' LIMIT ' . $i); + mysql_query('DELETE FROM `items_users` WHERE ' . $dlt2 . ' LIMIT ' . ($i * 100)); + mysql_query('DELETE FROM `eff_users` WHERE ' . $dlt2 . ' LIMIT ' . ($i * 100)); + } + + unset($i, $dlt, $dlt2); + + $j = 0; + $k = 0; + $obr = 0; + + //Это излом, добавляем еще ботов + if ($this->get_chanse(20) == true) { + //Уникальные монстры + if ($this->info['izlomLvl'] == 8) { + $bots = [ + 'Валентайский Охотник', + 'Шипокрыл Хаоса', + 'Шипокрыл', + 'Лик Хаоса', + 'Фанатик Хаоса', + ]; + //$bots = array( 'Валентайский Охотник' ); + } + $logins_bot = []; + // + echo '
Приближается нечто...
'; + // + $id2 = rand(0, (count($bots) - 1)); + $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); + $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, + round($this->info['izlomRoundSee'])); + if (isset($id['id']) && $bot != false) { + // + $btxt = ''; + if ($id['align'] > 0) { + $btxt = $btxt . ''; + } + if ($id['clan'] > 0) { + $btxt = $btxt . ''; + } + $btxt = $btxt . '{u1}[' . $id['level'] . ']'; + if ($id['sex'] == 1) { + $btxt = $btxt . ' вмешалась в поединок.'; + } else { + $btxt = $btxt . ' вмешался в поединок.'; + } + $this->miniLogAdd([ + 'login' => $id['login'], + 'sex' => $id['sex'], + 'team' => 0, + ], '{tm1} ' . $btxt); + // + $logins_bot = $bot['logins_bot']; + mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + $u->addAction(time(), 'win_bot_' . $id['id'], '', $this->users[$i]['id']); + if (rand(0, 10000) < 1500) { + $obr++; + } + $j++; + } + } else { + //Обычные монстры + if ($this->info['izlomLvl'] == 8) { + $bots = [ + 'Литейщик', + 'Проклятие Глубин', + 'Пустынник Маньяк', + 'Пустынник Убийца', + 'Рабочий Мглы', + 'Смотритель Мглы', + 'Сторож Мглы', + ]; + } + $logins_bot = []; + // + $id2 = rand(0, (count($bots) - 1)); + $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); + $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, + ($this->info['izlomRoundSee'] * 2)); + if (isset($id['id']) && $bot != false) { + // + $btxt = ''; + if ($id['align'] > 0) { + $btxt = $btxt . ''; + } + if ($id['clan'] > 0) { + $btxt = $btxt . ''; + } + $btxt = $btxt . '{u1}[' . $id['level'] . ']'; + if ($id['sex'] == 1) { + $btxt = $btxt . ' вмешалась в поединок.'; + } else { + $btxt = $btxt . ' вмешался в поединок.'; + } + $this->miniLogAdd([ + 'login' => $id['login'], + 'sex' => $id['sex'], + 'team' => 0, + ], '{tm1} ' . $btxt); + // + $logins_bot = $bot['logins_bot']; + mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + if (rand(0, 10000) < 1500) { + $obr++; + } + $j++; + } + // + $id2 = rand(0, (count($bots) - 1)); + $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); + $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, $this->info['izlomRoundSee']); + if (isset($id['id']) && $bot != false) { + // + $btxt = ''; + if ($id['align'] > 0) { + $btxt = $btxt . ''; + } + if ($id['clan'] > 0) { + $btxt = $btxt . ''; + } + $btxt = $btxt . '{u1}[' . $id['level'] . ']'; + if ($id['sex'] == 1) { + $btxt = $btxt . ' вмешалась в поединок.'; + } else { + $btxt = $btxt . ' вмешался в поединок.'; + } + $this->miniLogAdd([ + 'login' => $id['login'], + 'sex' => $id['sex'], + 'team' => 0, + ], '{tm1} ' . $btxt); + // + $logins_bot = $bot['logins_bot']; + mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + if (rand(0, 10000) < 1500) { + $obr++; + } + $j++; + } + // + if (rand(0, 100) < 70) { + $id2 = rand(0, (count($bots) - 1)); + $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); + $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, + $this->info['izlomRoundSee']); + if (isset($id['id']) && $bot != false) { + // + $btxt = ''; + if ($id['align'] > 0) { + $btxt = $btxt . ''; + } + if ($id['clan'] > 0) { + $btxt = $btxt . ''; + } + $btxt = $btxt . '{u1}[' . $id['level'] . ']'; + if ($id['sex'] == 1) { + $btxt = $btxt . ' вмешалась в поединок.'; + } else { + $btxt = $btxt . ' вмешался в поединок.'; + } + $this->miniLogAdd([ + 'login' => $id['login'], + 'sex' => $id['sex'], + 'team' => 0, + ], '{tm1} ' . $btxt); + // + $logins_bot = $bot['logins_bot']; + mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + if (rand(0, 10000) < 1500) { + $obr++; + } + $j++; + } + } + //Каждые 10 вол = +1 монстр + $irb = floor($this->info['izlomRoundSee'] / 10); + while ($irb > 0) { + // + if (rand(0, 100) < 20) { + $id2 = rand(0, (count($bots) - 1)); + $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); + $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, + $this->info['izlomRoundSee']); + if (isset($id['id']) && $bot != false) { + // + $btxt = ''; + if ($id['align'] > 0) { + $btxt = $btxt . ''; + } + if ($id['clan'] > 0) { + $btxt = $btxt . ''; + } + $btxt = $btxt . '{u1}[' . $id['level'] . ']'; + if ($id['sex'] == 1) { + $btxt = $btxt . ' вмешалась в поединок.'; + } else { + $btxt = $btxt . ' вмешался в поединок.'; + } + $this->miniLogAdd([ + 'login' => $id['login'], + 'sex' => $id['sex'], + 'team' => 0, + ], '{tm1} ' . $btxt); + // + $logins_bot = $bot['logins_bot']; + mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + if (rand(0, 10000) < 1500) { + $obr++; + } + $j++; + } + } + $irb--; + } + } + // + unset($logins_bot); + // + // + // + /*if( true == false ) { + $mz = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `izlom` WHERE `izlom` = "'.$this->info['izlom'].'" AND `level` = "'.$this->info['izlomLvl'].'" LIMIT 50')); + $mz = $mz[0]; + $pz = $this->info['izlomRound']+rand(1,3); + if($pz/$mz>1){ + $zz = floor($pz/$mz); + $pz = $pz-($zz*$mz); } - - $efix = 0; - if (isset($ed['add_pog2']) && $ed['add_pog2'] > 0) { - $efix = $ed['add_pog2']; - } - if (isset($ed['add_pog'])) { - $tr .= '
Магический барьер способен поглотить еще ' . $ed['add_pog'] . ' ед. урона'; - } - if (isset($ed['add_pog2'])) { - $tr .= '
Магический барьер способен поглотить еще ' . $ed['add_pog2'] . ' ед. урона (' . $ed['add_pog2p'] . '%)'; - } - - if ($tr != '') { - $ei .= $tr; - } - if ($eff[$i]['info'] != '') { - $ei .= '
Информация:
' . $eff[$i]['info']; - } - - //$ef .= ''; - $ef .= '
'; - unset($efix); - } - } elseif ($eff[$i] != 'delete') { - $i = -2; - } - $i++; - } - } else { - $ef .= '
Развернуть\',event,3,1,1,1,\'\');\" onmouseout=\"top.hic();\" onmousedown=\"top.hic();\">
'; - } - if ($st['itmslvl'] == 0 && $ur['bot_id'] == 0) { - //$ef .= '
Легкое вооружение (Эффект)
Осталось: Бесконечно\">
'; - } - - $ca = ''; - if ($ur['clan'] > 0) { - $cl = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $ur['clan'] . '" LIMIT 1')); - if (isset($cl['id'])) { - $ca = ''; - } - } - if ($ur['align'] > 0) { - $ca = '' . $ca; - } - if ($ur['login2'] == '') { - $ur['login2'] = $ur['login']; - } - if (floor($st['hpNow']) > $st['hpAll']) { - $st['hpNow'] = $st['hpAll']; - } - if (floor($st['mpNow']) > $st['mpAll']) { - $st['mpNow'] = $st['mpAll']; - } - $stsua = '' . $ur['login2'] . ''; - $stsua .= '
Сила: ' . $st['s1']; - $stsua .= '
Ловкость: ' . $st['s2']; - $stsua .= '
Интуиция: ' . $st['s3']; - $stsua .= '
Выносливость: ' . $st['s4']; - if ($st['s5'] != 0) { - $stsua .= '
Интелект: ' . $st['s5']; - } - if ($st['s6'] != 0) { - $stsua .= '
Мудрость: ' . $st['s6']; - } - if ($st['s7'] != 0) { - $stsua .= '
Духовность: ' . $st['s7']; - } - if ($u->info['admin'] > 0) { - if (isset($ur['align']) && $ur['align'] == 9) { - $align = $ur['align']; - } else { - $align = $ur['align']; - } - } - $tp_img = [ - 1 => 4, - 2 => 5, - 14 => 6, - 3 => 7, - 5 => 8, - 7 => 9, - 17 => 10, - 16 => 11, - 13 => 12, - 10 => 13, - 9 => 14, - 8 => 15, - 11 => 17, //кольцо 2 - 12 => 18 //кольцо 3 - ]; - $info = 'info_reflesh(' . $t . ',' . $ur['id'] . ',"' . $ca . '' . $ur['login2'] . ' [' . $ur['level'] . '] ","' . $ur['obraz'] . '",' . floor($st['hpNow']) . ',' . floor($st['hpAll']) . ',' . floor($st['mpNow']) . ',' . floor($st['mpAll']) . ',0,' . $ur['sex'] . ',"' . $ef . '","' . $stsua . '", "' . $align . '", "' . $ur['zag'] . '");shpb();'; - $i = 0; - while ($i < count($itm)) { - // - if (isset($st['items_img'][$tp_img[$itm[$i]['inOdet']]])) { - $itm[$i]['img'] = $st['items_img'][$tp_img[$itm[$i]['inOdet']]]; - } - //генерируем предметы - $ttl = '' . $itm[$i]['name'] . ''; - $td = $u->lookStats($itm[$i]['data']); - $lvar = ''; - if ($td['add_hpAll'] > 0) { - if ($td['add_hpAll'] > 0) { - $td['add_hpAll'] = '+' . $td['add_hpAll']; - } - $lvar .= '
Уровень жизни: ' . $td['add_hpAll'] . ''; - } - if ($td['sv_yron_max'] > 0 || $td['sv_yron_min'] > 0) { - $lvar .= '
Урон: ' . (0 + $td['sv_yron_min']) . '-' . (0 + $td['sv_yron_max']) . ''; - } - if ($td['add_mab1'] > 0) { - if ($td['add_mib1'] == $td['add_mab1'] && $pl['geniration'] == 1) { - $m1l = '+'; - if ($td['add_mab1'] < 0) { - $m1l = ''; - } - $lvar .= '
Броня головы: ' . $m1l . '' . (0 + $td['add_mab1']) . ''; - } else { - $lvar .= '
Броня головы: ' . (0 + $td['add_mib1']) . '-' . (0 + $td['add_mab1']) . ''; - } - } - if ($td['add_mab2'] > 0) { - if ($td['add_mib2'] == $td['add_mab2'] && $pl['geniration'] == 1) { - $m1l = '+'; - if ($td['add_mab2'] < 0) { - $m1l = ''; - } - $lvar .= '
Броня корпуса: ' . $m1l . '' . (0 + $td['add_mab2']) . ''; - } else { - $lvar .= '
Броня корпуса: ' . (0 + $td['add_mib2']) . '-' . (0 + $td['add_mab2']) . ''; - } - } - if ($td['add_mab3'] > 0) { - if ($td['add_mib3'] == $td['add_mab3'] && $pl['geniration'] == 1) { - $m1l = '+'; - if ($td['add_mab3'] < 0) { - $m1l = ''; - } - $lvar .= '
Броня пояса: ' . $m1l . '' . (0 + $td['add_mab3']) . ''; - } else { - $lvar .= '
Броня пояса: ' . (0 + $td['add_mib3']) . '-' . (0 + $td['add_mab3']) . ''; - } - } - if ($td['add_mab4'] > 0) { - if ($td['add_mib4'] == $td['add_mab4'] && $pl['geniration'] == 1) { - $m1l = '+'; - if ($td['add_mab4'] < 0) { - $m1l = ''; - } - $lvar .= '
Броня ног: ' . $m1l . '' . (0 + $td['add_mab4']) . ''; - } else { - $lvar .= '
Броня ног: ' . (0 + $td['add_mib4']) . '-' . (0 + $td['add_mab4']) . ''; - } - } - if ($itm[$i]['iznosMAX'] > 0) { - if ($itm[$i]['iznosMAXi'] == 999999999) { - $lvar .= '
Долговечность: неразрушимо'; - } else { - $lvar .= '
Долговечность: ' . floor($itm[$i]['iznosNOW']) . '/' . floor($itm[$i]['iznosMAX']); - } - } - $ttl .= $lvar; - $ccv = ''; - - if ($itm[$i]['magic_inci'] != '' || $itm[$i]['magic_inc'] != '') { - if ($itm[$i]['magic_inc'] == '') { - $itm[$i]['magic_inc'] = $itm[$i]['magic_inci']; - } - $mgi = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $itm[$i]['magic_inc'] . '" AND `type1` = "12345" LIMIT 1')); - if (isset($mgi['id2'])) { - $mgilog = ''; - $ccv .= 'top.useMagicBattle(\'' . $mgi['mname'] . '\',' . $itm[$i]['id'] . ',\'' . $mgi['img'] . '\',1,2);'; - } - } - - $info .= 'abitms(' . (0 + $t) . ',' . (0 + $itm[$i]['uid']) . ',' . (0 + $itm[$i]['id']) . ',' . (0 + $itm[$i]['inOdet']) . ',"' . $itm[$i]['name'] . '","' . $ttl . '","' . $itm[$i]['img'] . '","' . $ccv . '");'; - $i++; - } - - return $info; - } else { - return false; - } - } - - //Проверка на выживших - public function testUsersLive() - { - $r = false; - $tl = 0; - $i = 0; - $j = 0; - while ($i < count($this->uids)) { - if ($this->stats[$i]['id'] > 0) { - if (floor($this->stats[$i]['hpNow']) < 1) { - $this->stats[$i]['hpNow'] = 0; - } - $hp[$this->users[$i]['team']] += floor($this->stats[$i]['hpNow']); - if (!isset($tml[$this->users[$i]['team']]) && floor($this->stats[$i]['hpNow']) >= 1) { - $tml[$this->users[$i]['team']] = 1; - $tmv[$j] = $this->users[$i]['team']; - $tl++; - } - } - $i++; - } - if ($tl > 1) { - $r = true; - } - return $r; - } - - //Мини лог - public function miniLogAdd($user, $text) - { - $txt = $text; - $vLog = 'at1=00000||at2=00000||zb1=0||zb2=0||bl1=0||bl2=0||time1=' . time() . '||time2=' . time() . '||s1=' . $user['sex'] . '||t1=' . $user['team'] . '||login1=' . $user['login'] . '||'; - $mas1 = ['time' => time(), 'battle' => $this->info['id'], 'id_hod' => ($this->hodID + 1), 'text' => '', 'vars' => $vLog, 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1']; - $mas1['text'] = $txt; - $this->add_log($mas1); - } - - //Проверяем завершение боя - public function testFinish() - { - global $u; - // - mysql_query('START TRANSACTION;'); - // - $test = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `team_win` = -1 LIMIT 1 FOR UPDATE')); - //mysql_query('UPDATE `battle` SET `testfinish` = "'.$u->info['id'].'" WHERE `id` = "'.$this->info['id'].'" LIMIT 1'); - // - mysql_query('COMMIT;'); - // - if ($this->info['team_win'] == -1 && isset($test['id'])) { - - $hp = []; - $tml = []; - $tmv = []; - $tl = 0; - $i = 0; - $j = 0; - while ($i < count($this->uids)) { - if ($this->stats[$i]['id'] > 0) { - if (floor($this->stats[$i]['hpNow']) < 1) { - $this->stats[$i]['hpNow'] = 0; - } - $hp[$this->users[$i]['team']] += floor($this->stats[$i]['hpNow']); - if (!isset($tml[$this->users[$i]['team']]) && floor($this->stats[$i]['hpNow']) >= 1) { - $tml[$this->users[$i]['team']] = 1; - $tmv[$j] = $this->users[$i]['team']; - $tl++; - } - } - $i++; - } - - if ($tl <= 1) { - //Доп.проверка - $tmHpNow = []; - $tmNow = []; - $sp = mysql_query('SELECT `u`.`login`,`u`.`id`,`u`.`battle`,`s`.`team`,`s`.`hpNow` FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `u`.`battle` = "' . $this->info['id'] . '"'); - while ($pl = mysql_fetch_array($sp)) { - if (!isset($tmHpNow[$pl['team']])) { - $tmHpNow[$pl['team']] = 0; - $tmNow[] = $pl['team']; - } - $hpTm = floor($pl['hpNow']); - if ($hpTm < 0) { - $hpTm = 0; - } - if ($hpTm > 0) { - $tmHpNow[$pl['team']] += $pl['hpNow']; - } - } - $gdj = 0; - $i = 0; - while ($i < count($tmNow)) { - if (isset($tmNow[$i])) { - $j = $tmNow[$i]; - if ($tmHpNow[$j] > 0) { - $gdj++; - } - } - $i++; - } - if ($gdj > 1) { - $tl = $gdj; - echo 'Поединок может завершиться не корректно... (Сообщите Администрации об этом)'; - } - } - - if ($tl <= 1) { - //завершаем поединок, кто-то один победил, либо ничья - - $i = 0; - $tmwin = 0; - while ($i < count($tmv)) { - if ($tmv[$i] >= 1 && $tml[$tmv[$i]] > 0) { - $tmwin = $tmv[$i]; - } - $i++; - } - - if ($this->info['izlom'] == 0) { - $rs = ''; - $ts = []; - $tsi = 0; - if ($this->info['id'] > 0) { - //данные о игроках в бою - unset($this->users, $this->stats, $this->uids, $this->bots, $this->iBots); - $trl = mysql_query('SELECT `u`.`no_ip`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`money3`,`u`.`money2`,`u`.`bot_id` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '" ORDER BY `st`.`bot` DESC'); - $ir = 0; - $bi = 0; - $this->users = null; - $this->stats = null; - $this->uids = null; - $this->bots = null; - $this->iBots = null; - while ($pl = mysql_fetch_array($trl)) { - //записываем данные - if ($pl['login2'] == '') { - $pl['login2'] = $pl['login']; - } - $this->users[$ir] = $pl; - $this->uids[$pl['id']] = $ir; - if ($pl['bot'] > 0) { - $this->bots[$bi] = $pl['id']; - $this->iBots[$pl['id']] = $bi; - $bi++; - } - //записываем статы - $this->stats[$ir] = $u->getStats($pl, 0, 0, false, false, true); - $ir++; - } - } - } elseif (!isset($this->uids[$u->info['id']])) { - $rs = ''; - $ts = []; - $tsi = 0; - if ($this->info['id'] > 0) { - //данные о игроках в бою - $trl = mysql_query('SELECT `u`.`no_ip`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id` = "' . $this->info['id'] . '" LIMIT 1'); - $pl = mysql_fetch_array($trl); - //записываем данные - if ($pl['login2'] == '') { - $pl['login2'] = $pl['login']; - } - $this->users[count($this->users)] = $pl; - $this->uids[$pl['id']] = $ir; - if ($pl['bot'] > 0) { - $this->bots[count($this->bots)] = $pl['id']; - $this->iBots[$pl['id']] = $bi; - } - //записываем статы - $this->stats[count($this->stats)] = $u->getStats($pl, 0, 0, false, false, true); - } - } - - - if ($this->info['izlom'] > 0 && $tmwin == 1) { - // выкидываем ботов из боя - $i = 0; - $dlt = ''; - $dlt2 = ''; - $sp = mysql_query('SELECT `users`.`id`,`stats`.`bot`,`stats`.`team` FROM `users`,`stats` WHERE `users`.`battle` = "' . $this->info['id'] . '" AND `stats`.`id` = `users`.`id` LIMIT 250'); - while ($pl = mysql_fetch_array($sp)) { - if ($pl['bot'] == 1 && $pl['team'] != $u->info['team']) { - $dlt .= ' `id`="' . $pl['id'] . '" OR'; - $dlt2 .= ' `uid`="' . $pl['id'] . '" OR'; - $i++; - } - - } - - if ($i > 0) { - $dlt = trim($dlt, 'OR'); - $dlt2 = trim($dlt2, 'OR'); - mysql_query('DELETE FROM `users` WHERE ' . $dlt . ' LIMIT ' . $i); - mysql_query('DELETE FROM `stats` WHERE ' . $dlt . ' LIMIT ' . $i); - mysql_query('DELETE FROM `items_users` WHERE ' . $dlt2 . ' LIMIT ' . ($i * 100)); - mysql_query('DELETE FROM `eff_users` WHERE ' . $dlt2 . ' LIMIT ' . ($i * 100)); - } - - unset($i, $dlt, $dlt2); - - $j = 0; - $k = 0; - $obr = 0; - - //Это излом, добавляем еще ботов - if ($this->get_chanse(20) == true) { - //Уникальные монстры - if ($this->info['izlomLvl'] == 8) { - $bots = ['Валентайский Охотник', 'Шипокрыл Хаоса', 'Шипокрыл', 'Лик Хаоса', 'Фанатик Хаоса']; - //$bots = array( 'Валентайский Охотник' ); - } - $logins_bot = []; - // - echo '
Приближается нечто...
'; - // - $id2 = rand(0, (count($bots) - 1)); - $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); - $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, round($this->info['izlomRoundSee'])); - if (isset($id['id']) && $bot != false) { - // - $btxt = ''; - if ($id['align'] > 0) { - $btxt = $btxt . ''; - } - if ($id['clan'] > 0) { - $btxt = $btxt . ''; - } - $btxt = $btxt . '{u1}[' . $id['level'] . ']'; - if ($id['sex'] == 1) { - $btxt = $btxt . ' вмешалась в поединок.'; - } else { - $btxt = $btxt . ' вмешался в поединок.'; - } - $this->miniLogAdd([ - 'login' => $id['login'], - 'sex' => $id['sex'], - 'team' => 0 - ], '{tm1} ' . $btxt); - // - $logins_bot = $bot['logins_bot']; - mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); - $u->addAction(time(), 'win_bot_' . $id['id'], '', $this->users[$i]['id']); - if (rand(0, 10000) < 1500) { - $obr++; - } - $j++; - - } - } else { - //Обычные монстры - if ($this->info['izlomLvl'] == 8) { - $bots = ['Литейщик', 'Проклятие Глубин', 'Пустынник Маньяк', 'Пустынник Убийца', 'Рабочий Мглы', 'Смотритель Мглы', 'Сторож Мглы']; - } - $logins_bot = []; - // - $id2 = rand(0, (count($bots) - 1)); - $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); - $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, ($this->info['izlomRoundSee'] * 2)); - if (isset($id['id']) && $bot != false) { - // - $btxt = ''; - if ($id['align'] > 0) { - $btxt = $btxt . ''; - } - if ($id['clan'] > 0) { - $btxt = $btxt . ''; - } - $btxt = $btxt . '{u1}[' . $id['level'] . ']'; - if ($id['sex'] == 1) { - $btxt = $btxt . ' вмешалась в поединок.'; - } else { - $btxt = $btxt . ' вмешался в поединок.'; - } - $this->miniLogAdd([ - 'login' => $id['login'], - 'sex' => $id['sex'], - 'team' => 0 - ], '{tm1} ' . $btxt); - // - $logins_bot = $bot['logins_bot']; - mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); - if (rand(0, 10000) < 1500) { - $obr++; - } - $j++; - } - // - $id2 = rand(0, (count($bots) - 1)); - $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); - $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, $this->info['izlomRoundSee']); - if (isset($id['id']) && $bot != false) { - // - $btxt = ''; - if ($id['align'] > 0) { - $btxt = $btxt . ''; - } - if ($id['clan'] > 0) { - $btxt = $btxt . ''; - } - $btxt = $btxt . '{u1}[' . $id['level'] . ']'; - if ($id['sex'] == 1) { - $btxt = $btxt . ' вмешалась в поединок.'; - } else { - $btxt = $btxt . ' вмешался в поединок.'; - } - $this->miniLogAdd([ - 'login' => $id['login'], - 'sex' => $id['sex'], - 'team' => 0 - ], '{tm1} ' . $btxt); - // - $logins_bot = $bot['logins_bot']; - mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); - if (rand(0, 10000) < 1500) { - $obr++; - } - $j++; - } - // - if (rand(0, 100) < 70) { - $id2 = rand(0, (count($bots) - 1)); - $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); - $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, $this->info['izlomRoundSee']); - if (isset($id['id']) && $bot != false) { - // - $btxt = ''; - if ($id['align'] > 0) { - $btxt = $btxt . ''; - } - if ($id['clan'] > 0) { - $btxt = $btxt . ''; - } - $btxt = $btxt . '{u1}[' . $id['level'] . ']'; - if ($id['sex'] == 1) { - $btxt = $btxt . ' вмешалась в поединок.'; - } else { - $btxt = $btxt . ' вмешался в поединок.'; - } - $this->miniLogAdd([ - 'login' => $id['login'], - 'sex' => $id['sex'], - 'team' => 0 - ], '{tm1} ' . $btxt); - // - $logins_bot = $bot['logins_bot']; - mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); - if (rand(0, 10000) < 1500) { - $obr++; - } - $j++; - } - } - //Каждые 10 вол = +1 монстр - $irb = floor($this->info['izlomRoundSee'] / 10); - while ($irb > 0) { - // - if (rand(0, 100) < 20) { - $id2 = rand(0, (count($bots) - 1)); - $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); - $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, $this->info['izlomRoundSee']); - if (isset($id['id']) && $bot != false) { - // - $btxt = ''; - if ($id['align'] > 0) { - $btxt = $btxt . ''; + $iz = mysql_fetch_array(mysql_query('SELECT * FROM `izlom` WHERE `izlom` = "'.$this->info['izlom'].'" AND `level` = "'.$this->info['izlomLvl'].'" AND `round` = "'.$pz.'" LIMIT 1')); + $i = 0; $bots = $iz['bots']; $bots = explode('|',$bots); $j = 0; $k = 0; $obr = 0; + $logins_bot = array(); + while($i0) + { + $k = $u->addNewbot($bots[$i],NULL,NULL,$logins_bot); + if($k!=false) + { + $logins_bot = $k['logins_bot']; + $upd = mysql_query('UPDATE `users` SET `battle` = "'.$this->info['id'].'" WHERE `id` = "'.$k['id'].'" LIMIT 1'); + if($upd) + { + $upd = mysql_query('UPDATE `stats` SET `team` = "2" WHERE `id` = "'.$k['id'].'" LIMIT 1'); + if($upd) + { + $j++; if(rand(0,10000) < 1500){ $obr++; } + } + } } - if ($id['clan'] > 0) { - $btxt = $btxt . ''; - } - $btxt = $btxt . '{u1}[' . $id['level'] . ']'; - if ($id['sex'] == 1) { - $btxt = $btxt . ' вмешалась в поединок.'; - } else { - $btxt = $btxt . ' вмешался в поединок.'; - } - $this->miniLogAdd([ - 'login' => $id['login'], - 'sex' => $id['sex'], - 'team' => 0 - ], '{tm1} ' . $btxt); - // - $logins_bot = $bot['logins_bot']; - mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); - if (rand(0, 10000) < 1500) { - $obr++; - } - $j++; } + $i++; } - $irb--; - } - } - // - unset($logins_bot); + unset($logins_bot); + }*/ + // + // + // + if ($j == 0) { + //конец излома + $this->finishBattle($tml, $tmv, null, $tl); + $fin1 = mysql_query('INSERT INTO `izlom_rating` (`uid`,`time`,`voln`,`level`,`bots`,`rep`,`obr`,`btl`) VALUES ("' . $u->info['id'] . '","' . time() . '","' . $this->info['izlomRoundSee'] . '","' . $this->info['izlomLvl'] . '","0","0","' . ($this->info['izlomObr'] - $this->info['izlomObrNow']) . '","' . $this->info['id'] . '")'); + } else { + $this->info['izlomRound'] = $iz['round']; + mysql_query('UPDATE `battle` SET `izlomObrNow` = ' . $obr . ',`izlomObr` = `izlomObr` + ' . $obr . ',`timeout` = (`timeout`+5),`izlomRound` = "' . ($this->info['izlomRound'] + 1) . '",`izlomRoundSee` = `izlomRoundSee`+1 WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + $this->stats[$this->uids[$u->info['id']]]['hpNow'] += $this->stats[$this->uids[$u->info['id']]]['hpAll'] * 0.25; + $this->stats[$this->uids[$u->info['id']]]['mpNow'] += $this->stats[$this->uids[$u->info['id']]]['mpAll'] * 0.25; + $this->users[$this->uids[$u->info['id']]]['hpNow'] = $this->stats[$this->uids[$u->info['id']]]['hpAll']; + $this->users[$this->uids[$u->info['id']]]['mpNow'] = $this->stats[$this->uids[$u->info['id']]]['mpAll']; + $vLog = 'at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . '||bl1=' . $this->atacks[$id]['b' . $a] . '||bl2=' . $this->atacks[$id]['b' . $b] . '||time1=' . $this->atacks[$id]['time'] . '||time2=' . $this->atacks[$id]['time2'] . '||s2=' . $this->users[$this->uids[$u2]]['sex'] . '||s1=' . $this->users[$this->uids[$u1]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2'] . ''; - if ($j == 0) { - //конец излома - $this->finishBattle($tml, $tmv, null, $tl); - $fin1 = mysql_query('INSERT INTO `izlom_rating` (`uid`,`time`,`voln`,`level`,`bots`,`rep`,`obr`,`btl`) VALUES ("' . $u->info['id'] . '","' . time() . '","' . $this->info['izlomRoundSee'] . '","' . $this->info['izlomLvl'] . '","0","0","' . ($this->info['izlomObr'] - $this->info['izlomObrNow']) . '","' . $this->info['id'] . '")'); - } else { - $this->info['izlomRound'] = $iz['round']; - mysql_query('UPDATE `battle` SET `izlomObrNow` = ' . $obr . ',`izlomObr` = `izlomObr` + ' . $obr . ',`timeout` = (`timeout`+5),`izlomRound` = "' . ($this->info['izlomRound'] + 1) . '",`izlomRoundSee` = `izlomRoundSee`+1 WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); - $this->stats[$this->uids[$u->info['id']]]['hpNow'] += $this->stats[$this->uids[$u->info['id']]]['hpAll'] * 0.25; - $this->stats[$this->uids[$u->info['id']]]['mpNow'] += $this->stats[$this->uids[$u->info['id']]]['mpAll'] * 0.25; - $this->users[$this->uids[$u->info['id']]]['hpNow'] = $this->stats[$this->uids[$u->info['id']]]['hpAll']; - $this->users[$this->uids[$u->info['id']]]['mpNow'] = $this->stats[$this->uids[$u->info['id']]]['mpAll']; - $vLog = 'at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . '||bl1=' . $this->atacks[$id]['b' . $a] . '||bl2=' . $this->atacks[$id]['b' . $b] . '||time1=' . $this->atacks[$id]['time'] . '||time2=' . $this->atacks[$id]['time2'] . '||s2=' . $this->users[$this->uids[$u2]]['sex'] . '||s1=' . $this->users[$this->uids[$u1]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2'] . ''; + $mas = [ + 'text' => '', + 'time' => time(), + 'vars' => '', + 'battle' => $this->info['id'], + 'id_hod' => ($this->hodID + 1), + 'vars' => $vLog, + 'type' => 1, + ]; + if ($u->info['sex'] == 1) { + $mas['text'] = '' . date('H:i') . ' ' . $u->info['login'] . ' воспользовалась приемом "Передышка".'; + } else { + $mas['text'] = '' . date('H:i') . ' ' . $u->info['login'] . ' воспользовался приемом "Передышка".'; + } + if ($u->stats['hpNow'] < $u->stats['hpAll']) { + $hpSks = floor(($u->stats['hpAll'] * ((rand(15, 25)) / 100))); + if ($hpSks > floor($u->stats['hpAll'] - $u->stats['hpNow'])) { + $hpSks = floor($u->stats['hpAll'] - $u->stats['hpNow']); + } + $mas['text'] .= ' +' . $hpSks . ''; + } else { + $hpSks = 0; + $mas['text'] .= ' --'; + } + $mas['text'] .= ' [' . floor($u->info['hpNow'] + $hpSks) . '/' . $u->stats['hpAll'] . ']'; + $this->add_log($mas); - $mas = [ - 'text' => '', - 'time' => time(), - 'vars' => '', - 'battle' => $this->info['id'], - 'id_hod' => ($this->hodID + 1), - 'vars' => $vLog, - 'type' => 1 - ]; - if ($u->info['sex'] == 1) { - $mas['text'] = '' . date('H:i') . ' ' . $u->info['login'] . ' воспользовалась приемом "Передышка".'; - } else { - $mas['text'] = '' . date('H:i') . ' ' . $u->info['login'] . ' воспользовался приемом "Передышка".'; - } - if ($u->stats['hpNow'] < $u->stats['hpAll']) { - $hpSks = floor(($u->stats['hpAll'] * ((rand(15, 25)) / 100))); - if ($hpSks > floor($u->stats['hpAll'] - $u->stats['hpNow'])) { - $hpSks = floor($u->stats['hpAll'] - $u->stats['hpNow']); - } - $mas['text'] .= ' +' . $hpSks . ''; - } else { - $hpSks = 0; - $mas['text'] .= ' --'; - } - $mas['text'] .= ' [' . floor($u->info['hpNow'] + $hpSks) . '/' . $u->stats['hpAll'] . ']'; - $this->add_log($mas); + mysql_query('UPDATE `stats` SET `hpNow` = "' . ($u->info['hpNow'] + ($u->stats['hpAll'] * ((rand(15, + 25)) / 100))) . '",`mpNow` = "' . ($u->info['mpNow'] + ($u->stats['mpAll'] * 0.25)) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } + } else { + //завершаем бой + $this->finishBattle($tml, $tmv, null, $tl); + if ($this->info['izlom'] > 0) { + $fin1 = mysql_query('INSERT INTO `izlom_rating` (`uid`,`time`,`voln`,`level`,`bots`,`rep`,`obr`,`btl`) VALUES ("' . $u->info['id'] . '","' . time() . '","' . $this->info['izlomRoundSee'] . '","' . $this->info['izlomLvl'] . '","0","0","' . ($this->info['izlomObr'] - $this->info['izlomObrNow']) . '","' . $this->info['id'] . '")'); + } + } + if (isset($fin1)) { + mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","31","23","' . $u->info['id'] . '","Касание Хаоса","nofastfinisheff=1","' . time() . '")'); + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "','Вы создали предмет "Образец"x" . (($this->info['izlomObr'] - $this->info['izlomObrNow']) * 7) . "','" . time() . "','6','0')"); + $i01 = 1; + while ($i01 <= (($this->info['izlomObr'] - $this->info['izlomObrNow'])) * 7) { + $u->addItem(1226, $u->info['id'], '|sudba=' . $u->info['login']); + $i01++; + } + mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("' . $u->info['id'] . '","' . time() . '","capitalcity","' . $u->info['room'] . '","izlom"," ","","")'); + unset($fin1); + } + } + } else { + mysql_query('START TRANSACTION;'); + $test = mysql_fetch_array(mysql_query('SELECT `id`,`team_win`, `testfinish` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `team_win` != -1 LIMIT 1 FOR UPDATE')); + mysql_query('COMMIT;'); + if (isset($test['id'])) { + $this->finishBattle(null, null, 10, $tl); + } + } + // + //mysql_query('UPDATE `battle` SET `testfinish` = "0" WHERE `id` = "'.$this->info['id'].'" LIMIT 1'); + } - mysql_query('UPDATE `stats` SET `hpNow` = "' . ($u->info['hpNow'] + ($u->stats['hpAll'] * ((rand(15, 25)) / 100))) . '",`mpNow` = "' . ($u->info['mpNow'] + ($u->stats['mpAll'] * 0.25)) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - } - } else { - //завершаем бой - $this->finishBattle($tml, $tmv, null, $tl); - if ($this->info['izlom'] > 0) { - $fin1 = mysql_query('INSERT INTO `izlom_rating` (`uid`,`time`,`voln`,`level`,`bots`,`rep`,`obr`,`btl`) VALUES ("' . $u->info['id'] . '","' . time() . '","' . $this->info['izlomRoundSee'] . '","' . $this->info['izlomLvl'] . '","0","0","' . ($this->info['izlomObr'] - $this->info['izlomObrNow']) . '","' . $this->info['id'] . '")'); - } - } - if (isset($fin1)) { - mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","31","23","' . $u->info['id'] . '","Касание Хаоса","nofastfinisheff=1","' . time() . '")'); - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "','Вы создали предмет "Образец"x" . (($this->info['izlomObr'] - $this->info['izlomObrNow']) * 7) . "','" . time() . "','6','0')"); - $i01 = 1; - while ($i01 <= (($this->info['izlomObr'] - $this->info['izlomObrNow'])) * 7) { - $u->addItem(1226, $u->info['id'], '|sudba=' . $u->info['login']); - $i01++; - } - mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("' . $u->info['id'] . '","' . time() . '","capitalcity","' . $u->info['room'] . '","izlom"," ","","")'); - unset($fin1); - } - } - } else { - mysql_query('START TRANSACTION;'); - $test = mysql_fetch_array(mysql_query('SELECT `id`,`team_win`, `testfinish` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `team_win` != -1 LIMIT 1 FOR UPDATE')); - mysql_query('COMMIT;'); - if (isset($test['id'])) { - $this->finishBattle(null, null, 10, $tl); - } - } - // - //mysql_query('UPDATE `battle` SET `testfinish` = "0" WHERE `id` = "'.$this->info['id'].'" LIMIT 1'); - } - - //завершение поединка - public function finishBattle($t, $v, $nl, $tl) - { - global $magic, $u, $q, $c; - mysql_query('LOCK TABLES users,stats,battle,battle_last,battle_end,chat WRITE'); - $frtu = false; - $test = mysql_fetch_array(mysql_query('SELECT `id`,`team_win`,`testfinish` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `team_win` != -1 LIMIT 1;')); - if ($test['testfinish'] != -1) { //$frtu == false - $trtt = mysql_query('UPDATE `battle` SET `testfinish` = "-1" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); - $relbf = $this->info['team_win']; - if ($nl != 10) { - $i = 0; - $dnr = 0; - if ($this->info['team_win'] == -1) { - $this->info['team_win'] = 0; - while ($i < count($v)) { - if ($v[$i] >= 1 && $t[$v[$i]] > 0) { - $this->info['team_win'] = $v[$i]; - } - $i++; - } - } - } + //завершение поединка + public function finishBattle($t, $v, $nl, $tl) + { + global $magic, $u, $q, $c; + mysql_query('LOCK TABLES users,stats,battle,battle_last,battle_end,chat WRITE'); + $frtu = false; + $test = mysql_fetch_array(mysql_query('SELECT `id`,`team_win`,`testfinish` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `team_win` != -1 LIMIT 1;')); + if ($test['testfinish'] != -1) { //$frtu == false + $trtt = mysql_query('UPDATE `battle` SET `testfinish` = "-1" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + $relbf = $this->info['team_win']; + if ($nl != 10) { + $i = 0; + $dnr = 0; + if ($this->info['team_win'] == -1) { + $this->info['team_win'] = 0; + while ($i < count($v)) { + if ($v[$i] >= 1 && $t[$v[$i]] > 0) { + $this->info['team_win'] = $v[$i]; + } + $i++; + } + } + } - //данные о игроках в бою - $t = mysql_query('SELECT `u`.`stopexp`,`u`.`twink`,`u`.`city`,`u`.`room`,`u`.`no_ip`,`u`.`pass`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '"'); - $i = 0; - $bi = 0; - while ($pl = mysql_fetch_array($t)) { - //записываем данные - if ($pl['login2'] == '') { - $pl['login2'] = $pl['login']; - } - $this->users[$i] = $pl; - $this->uids[$pl['id']] = $i; - if ($pl['bot'] > 0) { - $this->bots[$bi] = $pl['id']; - $this->iBots[$pl['id']] = $bi; - $bi++; - } - //записываем статы - $this->stats[$i] = $u->getStats($pl, 0, 0, false, false, true); - $i++; - } - unset($pl, $t); + //данные о игроках в бою + $t = mysql_query('SELECT `u`.`stopexp`,`u`.`twink`,`u`.`city`,`u`.`room`,`u`.`no_ip`,`u`.`pass`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '"'); + $i = 0; + $bi = 0; + while ($pl = mysql_fetch_array($t)) { + //записываем данные + if ($pl['login2'] == '') { + $pl['login2'] = $pl['login']; + } + $this->users[$i] = $pl; + $this->uids[$pl['id']] = $i; + if ($pl['bot'] > 0) { + $this->bots[$bi] = $pl['id']; + $this->iBots[$pl['id']] = $bi; + $bi++; + } + //записываем статы + $this->stats[$i] = $u->getStats($pl, 0, 0, false, false, true); + $i++; + } + unset($pl, $t); - if ($this->info['time_over'] == 0) { - $tststrt = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `time_over` = "0" LIMIT 1')); - if (isset($tststrt['id'])) { - if ($this->info['inTurnir'] == 0 || $this->info['type'] == 500) { - mysql_query('UPDATE `battle` SET `time_over` = "' . time() . '",`team_win` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); - } - mysql_query('UPDATE `battle_stat` SET `team_win` = "' . $this->info['team_win'] . '" WHERE `battle_id` = "' . $this->info['id'] . '"'); - //Заносим данные о завершении боя - $i = 0; - $vl = ''; - $vtvl = ''; - $relu = 0; - while ($i < count($this->users)) { - /*if( $this->user[$i]['clon'] == 0 && $this->user[$i]['bot'] == 0 ) { + if ($this->info['time_over'] == 0) { + $tststrt = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `time_over` = "0" LIMIT 1')); + if (isset($tststrt['id'])) { + if ($this->info['inTurnir'] == 0 || $this->info['type'] == 500) { + mysql_query('UPDATE `battle` SET `time_over` = "' . time() . '",`team_win` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + } + mysql_query('UPDATE `battle_stat` SET `team_win` = "' . $this->info['team_win'] . '" WHERE `battle_id` = "' . $this->info['id'] . '"'); + //Заносим данные о завершении боя + $i = 0; + $vl = ''; + $vtvl = ''; + $relu = 0; + while ($i < count($this->users)) { + /*if( $this->user[$i]['clon'] == 0 && $this->user[$i]['bot'] == 0 ) { $relu++; }*/ - $vl .= '("' . $this->users[$i]['login'] . '","' . $this->users[$i]['city'] . '","' . $this->info['id'] . '","' . $this->users[$i]['id'] . '","' . time() . '","' . $this->users[$i]['team'] . '","' . $this->users[$i]['level'] . '","' . $this->users[$i]['align'] . '","' . $this->users[$i]['clan'] . '","' . $this->users[$i]['exp'] . '","' . $this->users[$i]['bot'] . '","' . $this->users[$i]['money'] . '","' . $this->users[$i]['money2'] . '","' . $this->users[$i]['money3'] . '"),'; - if ($this->users[$i]['team'] == $this->info['team_win'] && $this->info['team_win'] > 0) { - $vtvl .= '' . $this->users[$i]['login'] . ', '; - } - $i++; - } + $vl .= '("' . $this->users[$i]['login'] . '","' . $this->users[$i]['city'] . '","' . $this->info['id'] . '","' . $this->users[$i]['id'] . '","' . time() . '","' . $this->users[$i]['team'] . '","' . $this->users[$i]['level'] . '","' . $this->users[$i]['align'] . '","' . $this->users[$i]['clan'] . '","' . $this->users[$i]['exp'] . '","' . $this->users[$i]['bot'] . '","' . $this->users[$i]['money'] . '","' . $this->users[$i]['money2'] . '","' . $this->users[$i]['money3'] . '"),'; + if ($this->users[$i]['team'] == $this->info['team_win'] && $this->info['team_win'] > 0) { + $vtvl .= '' . $this->users[$i]['login'] . ', '; + } + $i++; + } - $this->info['players_c'] = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `users` WHERE `login` NOT LIKE "%(зверь%" AND `battle` = "' . $this->info['id'] . '" LIMIT 1')); - $this->info['players_c'] = $this->info['players_c'][0]; + $this->info['players_c'] = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `users` WHERE `login` NOT LIKE "%(зверь%" AND `battle` = "' . $this->info['id'] . '" LIMIT 1')); + $this->info['players_c'] = $this->info['players_c'][0]; - mysql_query('UPDATE `battle` SET `players_c` = "' . $this->info['players_c'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `battle` SET `players_c` = "' . $this->info['players_c'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); - if ($vtvl != '') { - $vtvl = rtrim($vtvl, ', '); - $vtvl = str_replace('"', '\\\\\"', $vtvl); - $this->hodID++; - $vLog = 'time1=' . time(); - $mass = ['time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'text' => 'test', 'vars' => $vLog, 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1']; - $vtvl = 'Бой закончен, победа за ' . $vtvl . '.'; - $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); - } else { - $this->info['players_cc'] = mysql_fetch_array(mysql_query('SELECT COUNT(`u`.`id`) FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `s`.`hpNow` > 0 AND `u`.`battle` = "' . $this->info['id'] . '" AND `s`.`team` != "' . $u->info['team'] . '" LIMIT 1')); - $this->info['players_cc'] = $this->info['players_cc'][0]; - $this->info['players_cc2'] = mysql_fetch_array(mysql_query('SELECT COUNT(`u`.`id`) FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `s`.`hpNow` >= 1 AND `u`.`battle` = "' . $this->info['id'] . '" AND `s`.`team` != "' . $u->info['team'] . '" LIMIT 1')); - $this->info['players_cc2'] = $this->info['players_cc2'][0]; - $inf_test = ', users: ' . $this->info['players_cc'] . ' and ' . $this->info['players_cc2'] . ''; - $this->hodID++; - $vLog = 'time1=' . time(); - $mass = ['time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'text' => 'test', 'vars' => $vLog, 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1']; - $vtvl = 'Бой закончен, ничья.'; - $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); - } + if ($vtvl != '') { + $vtvl = rtrim($vtvl, ', '); + $vtvl = str_replace('"', '\\\\\"', $vtvl); + $this->hodID++; + $vLog = 'time1=' . time(); + $mass = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'text' => 'test', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + $vtvl = 'Бой закончен, победа за ' . $vtvl . '.'; + $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); + } else { + $this->info['players_cc'] = mysql_fetch_array(mysql_query('SELECT COUNT(`u`.`id`) FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `s`.`hpNow` > 0 AND `u`.`battle` = "' . $this->info['id'] . '" AND `s`.`team` != "' . $u->info['team'] . '" LIMIT 1')); + $this->info['players_cc'] = $this->info['players_cc'][0]; + $this->info['players_cc2'] = mysql_fetch_array(mysql_query('SELECT COUNT(`u`.`id`) FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `s`.`hpNow` >= 1 AND `u`.`battle` = "' . $this->info['id'] . '" AND `s`.`team` != "' . $u->info['team'] . '" LIMIT 1')); + $this->info['players_cc2'] = $this->info['players_cc2'][0]; + $inf_test = ', users: ' . $this->info['players_cc'] . ' and ' . $this->info['players_cc2'] . ''; + $this->hodID++; + $vLog = 'time1=' . time(); + $mass = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'text' => 'test', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + $vtvl = 'Бой закончен, ничья.'; + $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); + } - $this->saveLogs($this->info['id'], 'all'); - //$this->hodID++; + $this->saveLogs($this->info['id'], 'all'); + //$this->hodID++; - if ($this->info['type'] == 99) { - //$this->hodID++; - $vLog = 'time1=' . time(); - $mass = ['time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'text' => 'test', 'vars' => $vLog, 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1']; - $vtvl = 'И победители стали калечить проигравших...'; - $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); - $i = 0; - $vtvl = ''; - $tr_nm = [ - 1 => 'легкую', - 2 => 'среднюю', - 3 => 'тяжелую', - 4 => 'неизлечимую' - ]; - while ($i < count($this->users)) { - if ($this->users[$i]['team'] != $this->info['team_win']) { - $tr_pl = mysql_fetch_array(mysql_query('SELECT `id`,`v1` FROM `eff_users` WHERE `id_eff` = 4 AND `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = "0" ORDER BY `v1` DESC LIMIT 1')); - if (!isset($tr_pl['id']) || $tr_pl['v1'] < 3) { - if ($this->info['smert'] == 1) { - $tr_tp = 4; - } else { - $tr_tp = rand(1, 3); - } - if (isset($tr_pl['id'])) { - $tr_tp = rand(($tr_pl['v1'] + 1), 3); - } - if ($this->users[$i]['sex'] == 1) { - $vtvl = '' . $this->users[$i]['login'] . ' получила повреждение: ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; - } else { - $vtvl = '' . $this->users[$i]['login'] . ' получил повреждение: ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; - } - $this->addTravm($this->users[$i]['id'], $tr_tp, rand(3, 5)); + if ($this->info['type'] == 99) { + //$this->hodID++; + $vLog = 'time1=' . time(); + $mass = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'text' => 'test', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + $vtvl = 'И победители стали калечить проигравших...'; + $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); + $i = 0; + $vtvl = ''; + $tr_nm = [ + 1 => 'легкую', + 2 => 'среднюю', + 3 => 'тяжелую', + 4 => 'неизлечимую', + ]; + while ($i < count($this->users)) { + if ($this->users[$i]['team'] != $this->info['team_win']) { + $tr_pl = mysql_fetch_array(mysql_query('SELECT `id`,`v1` FROM `eff_users` WHERE `id_eff` = 4 AND `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = "0" ORDER BY `v1` DESC LIMIT 1')); + if (!isset($tr_pl['id']) || $tr_pl['v1'] < 3) { + if ($this->info['smert'] == 1) { + $tr_tp = 4; + } else { + $tr_tp = rand(1, 3); + } + if (isset($tr_pl['id'])) { + $tr_tp = rand(($tr_pl['v1'] + 1), 3); + } + if ($this->users[$i]['sex'] == 1) { + $vtvl = '' . $this->users[$i]['login'] . ' получила повреждение: ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; + } else { + $vtvl = '' . $this->users[$i]['login'] . ' получил повреждение: ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; + } + $this->addTravm($this->users[$i]['id'], $tr_tp, rand(3, 5)); + } + } + $i++; + } + $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); + } - } - } - $i++; - } - $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); - } + if ($vl != '') { + $vl = rtrim($vl, ','); + mysql_query('INSERT INTO `battle_last` (`login`,`city`,`battle_id`,`uid`,`time`,`team`,`lvl`,`align`,`clan`,`exp`,`bot`,`money`,`money2`,`money3`) VALUES ' . $vl . ''); + } - if ($vl != '') { - $vl = rtrim($vl, ','); - mysql_query('INSERT INTO `battle_last` (`login`,`city`,`battle_id`,`uid`,`time`,`team`,`lvl`,`align`,`clan`,`exp`,`bot`,`money`,`money2`,`money3`) VALUES ' . $vl . ''); - } - - mysql_query('INSERT INTO `battle_end` (`battle_id`,`city`,`time`,`team_win`) VALUES ("' . $this->info['id'] . '","' . $this->info['city'] . '","' . $this->info['time_start'] . '","' . $this->info['team_win'] . '")'); - } + mysql_query('INSERT INTO `battle_end` (`battle_id`,`city`,`time`,`team_win`) VALUES ("' . $this->info['id'] . '","' . $this->info['city'] . '","' . $this->info['time_start'] . '","' . $this->info['team_win'] . '")'); + } - $vLog = 'time1=' . time(); - $mass = ['time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'text' => 'test', 'vars' => $vLog, 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1']; - //$vtvl = ''; - //$ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("'.$mass['time'].'","'.$mass['battle'].'","'.$mass['id_hod'].'","'.$vtvl.'","'.$mass['vars'].'","'.$mass['zona1'].'","'.$mass['zonb1'].'","'.$mass['zona2'].'","'.$mass['zonb2'].'","'.$mass['type'].'")'); - $i = 0; - $vtvl = ''; - $tr_nm = [ - 1 => 'легкую', - 2 => 'среднюю', - 3 => 'тяжелую', - 4 => 'неизлечимую' - ]; - while ($i < count($this->users)) { - if ($this->users[$i]['team'] != $this->info['team_win'] && $this->info['team_win'] > 0) { - $tr_pl = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `v1` = "priem" AND `v2` = 292 AND `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = "0" LIMIT 1')); + $vLog = 'time1=' . time(); + $mass = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'text' => 'test', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + //$vtvl = ''; + //$ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("'.$mass['time'].'","'.$mass['battle'].'","'.$mass['id_hod'].'","'.$vtvl.'","'.$mass['vars'].'","'.$mass['zona1'].'","'.$mass['zonb1'].'","'.$mass['zona2'].'","'.$mass['zonb2'].'","'.$mass['type'].'")'); + $i = 0; + $vtvl = ''; + $tr_nm = [ + 1 => 'легкую', + 2 => 'среднюю', + 3 => 'тяжелую', + 4 => 'неизлечимую', + ]; + while ($i < count($this->users)) { + if ($this->users[$i]['team'] != $this->info['team_win'] && $this->info['team_win'] > 0) { + $tr_pl = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `v1` = "priem" AND `v2` = 292 AND `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = "0" LIMIT 1')); - $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl2 . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); + $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl2 . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); - if (isset($tr_pl['id'])) { - if (rand(0, 100) < $tr_pl['data']) { - $tr_tp = rand(1, 3); - if (isset($tr_pl['id'])) { - $tr_tp = rand(($tr_pl['v1'] + 1), 3); - } - if ($this->users[$i]['sex'] == 1) { - $vtvl = '' . $this->users[$i]['login'] . ' получила повреждение (Искалечить, автор: ' . $this->users[$this->uids[$tr_pl['user_use']]]['login'] . '): ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; - } else { - $vtvl = '' . $this->users[$i]['login'] . ' получил повреждение (Искалечить, автор: ' . $this->users[$this->uids[$tr_pl['user_use']]]['login'] . '): ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; - } - $this->addTravm($this->users[$i]['id'], $tr_tp, rand(3, 5)); - } - } - } - $i++; - } - if ($vtvl != '') { - if ($this->info['type'] != 99) { - $vtvl2 = 'И победители стали калечить проигравших...'; - $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl2 . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); - } - $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); - } + if (isset($tr_pl['id'])) { + if (rand(0, 100) < $tr_pl['data']) { + $tr_tp = rand(1, 3); + if (isset($tr_pl['id'])) { + $tr_tp = rand(($tr_pl['v1'] + 1), 3); + } + if ($this->users[$i]['sex'] == 1) { + $vtvl = '' . $this->users[$i]['login'] . ' получила повреждение (Искалечить, автор: ' . $this->users[$this->uids[$tr_pl['user_use']]]['login'] . '): ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; + } else { + $vtvl = '' . $this->users[$i]['login'] . ' получил повреждение (Искалечить, автор: ' . $this->users[$this->uids[$tr_pl['user_use']]]['login'] . '): ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; + } + $this->addTravm($this->users[$i]['id'], $tr_tp, rand(3, 5)); + } + } + } + $i++; + } + if ($vtvl != '') { + if ($this->info['type'] != 99) { + $vtvl2 = 'И победители стали калечить проигравших...'; + $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl2 . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); + } + $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); + } - //Турнир БС - if ($this->info['inTurnir'] > 0 && $this->info['dungeon'] != 15 && $u->info['room'] != 413) { - $bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "' . $this->info['inTurnir'] . '" LIMIT 1')); - $i = 0; - $j = 0; - while ($i < count($this->users)) { - if ($this->stats[$i]['hpNow'] < 1 && $this->users[$i]['clone'] == 0 && $this->stats[$i]['clone'] == 0) { - //Удаляем из БС - //echo '['.$this->users[$i]['login'].']'; - //Добавляем в лог БС - if ($this->users[$i]['sex'] == 0) { - $text .= '{u1} повержен и выбывает из турнира'; - } else { - $text .= '{u1} повержена и выбывает из турнира'; - } - //Выкидываем предметы с персонажа - $spik = mysql_query('SELECT `id`,`item_id` FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` ="0"'); - while ($plik = mysql_fetch_array($spik)) { - /* + //Турнир БС + if ($this->info['inTurnir'] > 0 && $this->info['dungeon'] != 15 && $u->info['room'] != 413) { + $bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "' . $this->info['inTurnir'] . '" LIMIT 1')); + $i = 0; + $j = 0; + while ($i < count($this->users)) { + if ($this->stats[$i]['hpNow'] < 1 && $this->users[$i]['clone'] == 0 && $this->stats[$i]['clone'] == 0) { + //Удаляем из БС + //echo '['.$this->users[$i]['login'].']'; + //Добавляем в лог БС + if ($this->users[$i]['sex'] == 0) { + $text .= '{u1} повержен и выбывает из турнира'; + } else { + $text .= '{u1} повержена и выбывает из турнира'; + } + //Выкидываем предметы с персонажа + $spik = mysql_query('SELECT `id`,`item_id` FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` ="0"'); + while ($plik = mysql_fetch_array($spik)) { + /* БС-1 mysql_query('INSERT INTO `bs_items` (`x`,`y`,`bid`,`count`,`item_id`) VALUES ( "'.$this->users[$i]['x'].'","'.$this->users[$i]['y'].'","'.$bs['id'].'","'.$bs['count'].'","'.$plik['item_id'].'" )'); */ - mysql_query('INSERT INTO `dungeon_items` (`dn`,`item_id`,`time`,`x`,`y`) VALUES ( + mysql_query('INSERT INTO `dungeon_items` (`dn`,`item_id`,`time`,`x`,`y`) VALUES ( "' . $this->users[$i]['dnow'] . '","' . $plik['item_id'] . '","' . (time() - 600) . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '" )'); - } - unset($spik, $plik); - // - $usrreal = ''; - $usr_real = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `login` = "' . $this->users[$i]['login'] . '" AND `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1')); - if (!isset($usr_real['id'])) { - $usr_real = $this->users[$i]; - } - if (isset($usr_real['id'])) { - $usrreal = ''; - if ($usr_real['align'] > 0) { - $usrreal .= ''; - } - if ($usr_real['clan'] > 0) { - $usrreal .= ''; - } - $usrreal .= '' . $usr_real['login'] . '[' . $usr_real['level'] . ']'; - } else { - $mereal = 'Невидимка[??]'; - } - $text = str_replace('{u1}', $usrreal, $text); - mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( + } + unset($spik, $plik); + // + $usrreal = ''; + $usr_real = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `login` = "' . $this->users[$i]['login'] . '" AND `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1')); + if (!isset($usr_real['id'])) { + $usr_real = $this->users[$i]; + } + if (isset($usr_real['id'])) { + $usrreal = ''; + if ($usr_real['align'] > 0) { + $usrreal .= ''; + } + if ($usr_real['clan'] > 0) { + $usrreal .= ''; + } + $usrreal .= '' . $usr_real['login'] . '[' . $usr_real['level'] . ']'; + } else { + $mereal = 'Невидимка[??]'; + } + $text = str_replace('{u1}', $usrreal, $text); + mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( "1", "' . mysql_real_escape_string($text) . '", "' . time() . '", "' . $bs['id'] . '", "' . $bs['count'] . '", "' . $bs['city'] . '", "' . round($bs['money'] * 0.85, 2) . '","' . $i . '" )'); - // - //Удаление клона - mysql_query('DELETE FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - mysql_query('DELETE FROM `stats` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - mysql_query('DELETE FROM `actions` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); - mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); - mysql_query('DELETE FROM `users_delo` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); - //Обновление персонажа - mysql_query('UPDATE `users` SET `inUser` = "0" WHERE `login` = "' . $this->users[$i]['login'] . '" OR `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - //Обновляем заявку - mysql_query('UPDATE `bs_zv` SET `off` = "' . time() . '" WHERE `inBot` = "' . $this->users[$i]['id'] . '" AND `off` = "0" LIMIT 1'); - unset($text, $usrreal, $usr_real); - if ($this->users[$i]['pass'] != 'bstowerbot') { - $bs['users']--; - $bs['users_finish']++; - } else { - $bs['arhiv']--; - } - $j++; - } - $i++; - } - if ($j > 0) { - mysql_query('UPDATE `bs_turnirs` SET `arhiv` = "' . $bs['arhiv'] . '",`users` = "' . $bs['users'] . '",`users_finish` = "' . $bs['users_finish'] . '" WHERE `id` = "' . $bs['id'] . '" LIMIT 1'); - } + // + //Удаление клона + mysql_query('DELETE FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `stats` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `actions` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); + mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); + mysql_query('DELETE FROM `users_delo` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); + //Обновление персонажа + mysql_query('UPDATE `users` SET `inUser` = "0" WHERE `login` = "' . $this->users[$i]['login'] . '" OR `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + //Обновляем заявку + mysql_query('UPDATE `bs_zv` SET `off` = "' . time() . '" WHERE `inBot` = "' . $this->users[$i]['id'] . '" AND `off` = "0" LIMIT 1'); + unset($text, $usrreal, $usr_real); + if ($this->users[$i]['pass'] != 'bstowerbot') { + $bs['users']--; + $bs['users_finish']++; + } else { + $bs['arhiv']--; + } + $j++; + } + $i++; + } + if ($j > 0) { + mysql_query('UPDATE `bs_turnirs` SET `arhiv` = "' . $bs['arhiv'] . '",`users` = "' . $bs['users'] . '",`users_finish` = "' . $bs['users_finish'] . '" WHERE `id` = "' . $bs['id'] . '" LIMIT 1'); + } - unset($bs, $j); - } + unset($bs, $j); + } - //Награда за события - if ($this->info['type'] == 500 && isset($tststrt['id'])) { + //Награда за события + if ($this->info['type'] == 500 && isset($tststrt['id'])) { + //Предметы которые выпадают в центр - //Предметы которые выпадают в центр - - $i = 0; - while ($i < count($this->users)) { - if ($this->users[$i]['no_ip'] == 'trupojor') { - $mon = mysql_fetch_array(mysql_query('SELECT * FROM `aaa_monsters` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 1')); - if (isset($mon['id'])) { - if ($this->info['team_win'] == 0) { - //Ничья - mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->stats[$i]['hpAll'] . '",`mpNow` = "' . $this->stats[$i]['mpAll'] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Внимание! ' . mysql_real_escape_string(str_replace('{b}', '' . $this->users[$i]['login'] . ' [' . $this->users[$i]['level'] . ']users[$i]['id'] . ' >', $mon['nich_text'])) . ' ","' . $this->users[$i]['city'] . '","","6","1","' . time() . '")'); - } elseif ($this->info['team_win'] != $this->users[$i]['team']) { - //Выиграли - $j = 0; - $usrwin = ''; - while ($j < count($this->users)) { - if ($this->users[$j]['no_ip'] != 'trupojor' && $this->users[$j]['bot'] == 0) { - if ($this->stats[$j]['hpNow'] > 0) { - $usrwin .= ', '; - if ($this->users[$j]['align'] > 0) { - $usrwin .= 'users[$j]['align'] . '.gif >'; - } - if ($this->users[$j]['clan'] > 0) { - $usrwin .= 'users[$j]['clan'] . '.gif >'; - } - $usrwin .= '' . $this->users[$j]['login'] . ' [' . $this->users[$j]['level'] . ']users[$j]['id'] . ' >'; - } - } - $j++; - } - if ($usrwin != '') { - $usrwin = ltrim($usrwin, ', '); - } else { - $usrwin = 'Команда героев'; - } + $i = 0; + while ($i < count($this->users)) { + if ($this->users[$i]['no_ip'] == 'trupojor') { + $mon = mysql_fetch_array(mysql_query('SELECT * FROM `aaa_monsters` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 1')); + if (isset($mon['id'])) { + if ($this->info['team_win'] == 0) { + //Ничья + mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->stats[$i]['hpAll'] . '",`mpNow` = "' . $this->stats[$i]['mpAll'] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Внимание! ' . mysql_real_escape_string(str_replace('{b}', + '' . $this->users[$i]['login'] . ' [' . $this->users[$i]['level'] . ']users[$i]['id'] . ' >', + $mon['nich_text'])) . ' ","' . $this->users[$i]['city'] . '","","6","1","' . time() . '")'); + } elseif ($this->info['team_win'] != $this->users[$i]['team']) { + //Выиграли + $j = 0; + $usrwin = ''; + while ($j < count($this->users)) { + if ($this->users[$j]['no_ip'] != 'trupojor' && $this->users[$j]['bot'] == 0) { + if ($this->stats[$j]['hpNow'] > 0) { + $usrwin .= ', '; + if ($this->users[$j]['align'] > 0) { + $usrwin .= 'users[$j]['align'] . '.gif >'; + } + if ($this->users[$j]['clan'] > 0) { + $usrwin .= 'users[$j]['clan'] . '.gif >'; + } + $usrwin .= '' . $this->users[$j]['login'] . ' [' . $this->users[$j]['level'] . ']users[$j]['id'] . ' >'; + } + } + $j++; + } + if ($usrwin != '') { + $usrwin = ltrim($usrwin, ', '); + } else { + $usrwin = 'Команда героев'; + } - mysql_query('UPDATE `users` SET `room` = "303" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `room` = "303" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - $truptimelast = time() + rand(1800, 3600); + /*$truptime=mysql_fetch_array(mysql_query('SELECT `s`.`id` , `s`.`res_x` FROM `stats` AS `s` WHERE `s`.`id` IN (SELECT `u`.`id` FROM `users` AS `u` WHERE `u`.`no_ip` = "trupojor") ORDER BY `s`.`res_x` DESC LIMIT 1')); + $truptimelast=$truptime['res_x']+2700; + if ($truptimelast > (time()+10080) || $truptimelast < time() ) + { + $truptimelast=time()+10080; + }*/ + // if ($this->users[$i]['level']>9) + // { + $truptimelast = time() + rand(1800, 3600); + //} + // else + // {$truptimelast=time()+10080;} - mysql_query('UPDATE `stats` SET `res_x` = "' . $truptimelast . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Внимание! ' . mysql_real_escape_string(str_replace('{b}', '' . $this->users[$i]['login'] . ' [' . $this->users[$i]['level'] . ']users[$i]['id'] . ' >', str_replace('{u}', $usrwin, $mon['win_text']))) . ' ","' . $this->users[$i]['city'] . '","","6","1","' . time() . '")'); - unset($usrwin); - } else { - //Проиграли - if ($mon['win_back'] == 1) { - mysql_query('UPDATE `users` SET `room` = "303" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - } - mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->stats[$i]['hpAll'] . '",`mpNow` = "' . $this->stats[$i]['mpAll'] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Внимание! ' . mysql_real_escape_string(str_replace('{b}', '' . $this->users[$i]['login'] . ' [' . $this->users[$i]['level'] . ']users[$i]['id'] . ' >', $mon['lose_text'])) . ' ","' . $this->users[$i]['city'] . '","","6","1","' . time() . '")'); - } - } - } - $i++; - } - } - } + mysql_query('UPDATE `stats` SET `res_x` = "' . $truptimelast . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Внимание! ' . mysql_real_escape_string(str_replace('{b}', + '' . $this->users[$i]['login'] . ' [' . $this->users[$i]['level'] . ']users[$i]['id'] . ' >', + str_replace('{u}', $usrwin, + $mon['win_text']))) . ' ","' . $this->users[$i]['city'] . '","","6","1","' . time() . '")'); + unset($usrwin); + } else { + //Проиграли + if ($mon['win_back'] == 1) { + mysql_query('UPDATE `users` SET `room` = "303" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + } + mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->stats[$i]['hpAll'] . '",`mpNow` = "' . $this->stats[$i]['mpAll'] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Внимание! ' . mysql_real_escape_string(str_replace('{b}', + '' . $this->users[$i]['login'] . ' [' . $this->users[$i]['level'] . ']users[$i]['id'] . ' >', + $mon['lose_text'])) . ' ","' . $this->users[$i]['city'] . '","","6","1","' . time() . '")'); + } + } + } + $i++; + } + } + } - // выкидываем ботов из боя - $i = 0; - $botsi = 0; - if (isset($tststrt['id'])) { - while ($i < count($this->users)) { - //Тут выкидываем юзеров из Призавого хаота - if ($this->info['type'] == 33) { - $plde = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1')); - if (isset($plde['mail']) && $plde['mail'] == "haot@new-combats.com") { + // выкидываем ботов из боя + $i = 0; + $botsi = 0; + if (isset($tststrt['id'])) { + while ($i < count($this->users)) { + //Тут выкидываем юзеров из Призавого хаота + if ($this->info['type'] == 33) { + $plde = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1')); + if (isset($plde['mail']) && $plde['mail'] == "haot@new-combats.com") { + $pld = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1')); + + if (isset($pld['id'])) { + if ($this->users[$i]['battle_yron'] >= 500) { + $u->addItem(4754, $pld['id'], ''); + $u->addItem(4754, $pld['id'], ''); + $u->addItem(4754, $pld['id'], ''); + $u->addItem(4754, $pld['id'], ''); + $u->addItem(4754, $pld['id'], ''); + $pld['battle_text'] .= ' За Героическое Сражение вы получаете Реликвия Ангела (x5). '; + mysql_query('UPDATE `users_achiv` SET `pg`= `pg`+1 WHERE `id` = "' . $pld['id'] . '" LIMIT 1'); - $pld = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1')); + if ($this->users[$i]['team'] == $this->info['team_win']) { + if (rand(1, 100) <= 5) { + $u->addItem(10020, $pld['id'], ''); + $pld['battle_text'] .= ' и Жетон Успеха. '; + } + } + } else { + $pld['battle_text'] .= ' Вы ничего не получили. Нужно набить больше 500 урона урона .'; + } - if (isset($pld['id'])) { + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $pld['city'] . "','" . $pld['room'] . "','','" . $pld['login'] . "','" . $pld['battle_text'] . "','-1','6','0')"); + mysql_query('DELETE FROM `stats` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); + mysql_query('UPDATE `users` SET `inUser` = "0" WHERE `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + } + } - if ($this->users[$i]['battle_yron'] >= 500) { - $u->addItem(4754, $pld['id'], ''); - $u->addItem(4754, $pld['id'], ''); - $u->addItem(4754, $pld['id'], ''); - $u->addItem(4754, $pld['id'], ''); - $u->addItem(4754, $pld['id'], ''); - $pld['battle_text'] .= ' За Героическое Сражение вы получаете Реликвия Ангела (x5). '; - mysql_query('UPDATE `users_achiv` SET `pg`= `pg`+1 WHERE `id` = "' . $pld['id'] . '" LIMIT 1'); + unset ($plde, $pld); + } - - if ($this->users[$i]['team'] == $this->info['team_win']) { - if (rand(1, 100) <= 5) { - $u->addItem(10020, $pld['id'], ''); - $pld['battle_text'] .= ' и Жетон Успеха. '; - } - - } - } else { - $pld['battle_text'] .= ' Вы ничего не получили. Нужно набить больше 500 урона урона .'; - } - - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $pld['city'] . "','" . $pld['room'] . "','','" . $pld['login'] . "','" . $pld['battle_text'] . "','-1','6','0')"); - mysql_query('DELETE FROM `stats` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); - mysql_query('UPDATE `users` SET `inUser` = "0" WHERE `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - mysql_query('DELETE FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - } - } - - unset ($plde, $pld); - } - - if ($this->users[$i]['bot'] == 1) { - $botsi++; - mysql_query('DELETE FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - mysql_query('DELETE FROM `stats` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); - } elseif ($this->users[$i]['bot'] == 2) { - $this->users[$i]['battle'] = 0; - mysql_query('UPDATE `users` SET `battle` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "0",`exp` = `exp` + `battle_exp`,`battle_exp` = "0",`battle_yron` = "0",`enemy` = "0", `timeGo` = "' . time() . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - //mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "0",`exp` = `exp` + `battle_exp`,`battle_exp` = "0",`timeGo` = "'.time().'" WHERE `id` = "'.$this->users[$i]['id'].'" LIMIT 1'); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); - } elseif ($this->users[$i]['bot'] > 0) { - $this->users[$i]['battle'] = 0; - mysql_query('UPDATE `users` SET `battle` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "0",`exp` = `exp` + `battle_exp`,`battle_exp` = "0",`battle_yron` = "0",`enemy` = "0", `timeGo` = "' . time() . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); - } - if ($this->users[$i]['clone'] > 0 && $this->users[$i]['bot'] > 0 && isset($this->users[$this->uids[$this->users[$i]['clone']]]['id']) && $this->users[$this->uids[$this->users[$i]['clone']]]['team'] != $this->users[$i]['team']) { - //Добавляем что клон побежден - if ($this->users[$this->uids[$this->users[$i]['clone']]]['team'] == $this->info['team_win']) { - $u->addAction(time(), 'win_bot_clone', '', $this->users[$i]['clone']); - } elseif ($this->info['team_win'] == 0) { - $u->addAction(time(), 'nich_bot_clone', '', $this->users[$i]['clone']); - } else { - $u->addAction(time(), 'lose_bot_clone', '', $this->users[$i]['clone']); - } - } elseif ($this->users[$i]['bot'] > 0 && $this->users[$i]['bot_id'] > 0) { - //Добавляем что бота победили - $j = 0; - while ($j < count($this->users)) { - if ($this->users[$j]['bot'] == 0 && $this->users[$j]['team'] != $this->users[$i]['team']) { - if ($this->users[$j]['team'] == $this->info['team_win']) { // if($this->users[$j]['team']==$this->info['team_win']){ - $u->addAction(time(), 'win_bot_' . $this->users[$i]['bot_id'], '', $this->users[$j]['id']); - // - mysql_query('UPDATE `dialog_act` SET `now` = `now` + 1 WHERE `uid` = "' . $this->users[$j]['id'] . '" AND + if ($this->users[$i]['bot'] == 1) { + $botsi++; + mysql_query('DELETE FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `stats` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); + } elseif ($this->users[$i]['bot'] == 2) { + $this->users[$i]['battle'] = 0; + mysql_query('UPDATE `users` SET `battle` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "0",`exp` = `exp` + `battle_exp`,`battle_exp` = "0",`battle_yron` = "0",`enemy` = "0", `timeGo` = "' . time() . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + //mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "0",`exp` = `exp` + `battle_exp`,`battle_exp` = "0",`timeGo` = "'.time().'" WHERE `id` = "'.$this->users[$i]['id'].'" LIMIT 1'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); + } elseif ($this->users[$i]['bot'] > 0) { + $this->users[$i]['battle'] = 0; + mysql_query('UPDATE `users` SET `battle` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "0",`exp` = `exp` + `battle_exp`,`battle_exp` = "0",`battle_yron` = "0",`enemy` = "0", `timeGo` = "' . time() . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); + } + if ($this->users[$i]['clone'] > 0 && $this->users[$i]['bot'] > 0 && isset($this->users[$this->uids[$this->users[$i]['clone']]]['id']) && $this->users[$this->uids[$this->users[$i]['clone']]]['team'] != $this->users[$i]['team']) { + //Добавляем что клон побежден + if ($this->users[$this->uids[$this->users[$i]['clone']]]['team'] == $this->info['team_win']) { + $u->addAction(time(), 'win_bot_clone', '', $this->users[$i]['clone']); + } elseif ($this->info['team_win'] == 0) { + $u->addAction(time(), 'nich_bot_clone', '', $this->users[$i]['clone']); + } else { + $u->addAction(time(), 'lose_bot_clone', '', $this->users[$i]['clone']); + } + } elseif ($this->users[$i]['bot'] > 0 && $this->users[$i]['bot_id'] > 0) { + //Добавляем что бота победили + $j = 0; + while ($j < count($this->users)) { + if ($this->users[$j]['bot'] == 0 && $this->users[$j]['team'] != $this->users[$i]['team']) { + if ($this->users[$j]['team'] == $this->info['team_win']) { // if($this->users[$j]['team']==$this->info['team_win']){ + $u->addAction(time(), 'win_bot_' . $this->users[$i]['bot_id'], '', + $this->users[$j]['id']); + // + mysql_query('UPDATE `dialog_act` SET `now` = `now` + 1 WHERE `uid` = "' . $this->users[$j]['id'] . '" AND ( `btl_bot` LIKE "' . $this->users[$i]['bot_id'] . '!%" OR `btl_bot` LIKE "%!' . $this->users[$i]['bot_id'] . '!%" ) AND `val` != 1 LIMIT 1'); - // - } elseif ($this->info['team_win'] == 0) { - $u->addAction(time(), 'nich_bot_' . $this->users[$i]['bot_id'], '', $this->users[$j]['id']); - } else { - $u->addAction(time(), 'lose_bot_' . $this->users[$i]['bot_id'], '', $this->users[$j]['id']); - } - } - $j++; - } - } - $i++; + // + } elseif ($this->info['team_win'] == 0) { + $u->addAction(time(), 'nich_bot_' . $this->users[$i]['bot_id'], '', + $this->users[$j]['id']); + } else { + $u->addAction(time(), 'lose_bot_' . $this->users[$i]['bot_id'], '', + $this->users[$j]['id']); + } + } + $j++; + } + } + $i++; + } + } - } - } - - $botss = []; - if (true == true) { - if ($nl != 10) { - //Из бота падают предметы - if ($this->info['dungeon'] > 0) { - if ($this->info['team_win'] == $u->info['team'] && $this->info['dungeon'] == 102) { - $j1 = mysql_fetch_array(mysql_query('SELECT * FROM `laba_obj` WHERE `type` = 2 AND `lib` = "' . $this->info['dn_id'] . '" AND `x` = "' . $this->info['x'] . '" AND `y` = "' . $this->info['y'] . '" LIMIT 1')); - if (isset($j1['id'])) { - mysql_query('DELETE FROM `laba_obj` WHERE `id` = "' . $j1['id'] . '" LIMIT 1'); - //Выпадает шмотка - mysql_query('INSERT INTO `laba_obj` (`use`,`lib`,`time`,`type`,`x`,`y`,`vars`) VALUES ( + $botss = []; + if (true == true) { + if ($nl != 10) { + //Из бота падают предметы + if ($this->info['dungeon'] > 0) { + if ($this->info['team_win'] == $u->info['team'] && $this->info['dungeon'] == 102) { + $j1 = mysql_fetch_array(mysql_query('SELECT * FROM `laba_obj` WHERE `type` = 2 AND `lib` = "' . $this->info['dn_id'] . '" AND `x` = "' . $this->info['x'] . '" AND `y` = "' . $this->info['y'] . '" LIMIT 1')); + if (isset($j1['id'])) { + mysql_query('DELETE FROM `laba_obj` WHERE `id` = "' . $j1['id'] . '" LIMIT 1'); + //Выпадает шмотка + mysql_query('INSERT INTO `laba_obj` (`use`,`lib`,`time`,`type`,`x`,`y`,`vars`) VALUES ( "0","' . $j1['lib'] . '","' . time() . '","6","' . $j1['x'] . '","' . $j1['y'] . '","' . (0 + $botsi) . '" )'); - } - } elseif ($this->info['team_win'] == $u->info['team']) { - //выйграли люди, выкидываем предметы из мобов - $j1 = mysql_query('SELECT * FROM `dungeon_bots` WHERE `dn` = "' . $this->info['dn_id'] . '" AND `for_dn` = "0" AND `x` = "' . $this->info['x'] . '" AND `delete` = "0" AND `y`= "' . $this->info['y'] . '" LIMIT 100'); - while ($tbot = mysql_fetch_array($j1)) { - $j2 = 0; - while ($j2 < $tbot['colvo']) { - if (isset($tbot['id2'])) { - $tbot2 = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `id` = "' . $tbot['id_bot'] . '" LIMIT 1')); - $itms = explode('|', $tbot2['p_items']); - $tii = 0; - $testdrop = 0; - while ($tii < count($itms) && $testdrop == 0) { - $itmz = explode('=', $itms[$tii]); - if ($itmz[0] > 0) { - if (isset($itmz[2]) && $itmz[2] != '') { // $itmz[2] == quest888 - $questDrop = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `vars` LIKE "%' . $itmz[2] . '%" AND `vals` = "go" AND `uid` = "' . $u->info['id'] . '" LIMIT 1')); - } - if (isset($questDrop['id'])) { // Если квест есть, предмет имеет шанс выпасть - } elseif (isset($itmz[2]) && $itmz[2] != '') $itmz[1] = 0; // Если предмет квестовый, а квеста у игрока нет, то предмет выпадет с вероятностью 0 - unset($questDrop); + } + } elseif ($this->info['team_win'] == $u->info['team']) { + //выйграли люди, выкидываем предметы из мобов + $j1 = mysql_query('SELECT * FROM `dungeon_bots` WHERE `dn` = "' . $this->info['dn_id'] . '" AND `for_dn` = "0" AND `x` = "' . $this->info['x'] . '" AND `delete` = "0" AND `y`= "' . $this->info['y'] . '" LIMIT 100'); + while ($tbot = mysql_fetch_array($j1)) { + $j2 = 0; + while ($j2 < $tbot['colvo']) { + if (isset($tbot['id2'])) { + $tbot2 = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `id` = "' . $tbot['id_bot'] . '" LIMIT 1')); + $itms = explode('|', $tbot2['p_items']); + $tii = 0; + $testdrop = 0; + while ($tii < count($itms) && $testdrop == 0) { + $itmz = explode('=', $itms[$tii]); + if ($itmz[0] > 0) { + if (isset($itmz[2]) && $itmz[2] != '') { // $itmz[2] == quest888 + $questDrop = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `vars` LIKE "%' . $itmz[2] . '%" AND `vals` = "go" AND `uid` = "' . $u->info['id'] . '" LIMIT 1')); + } + if (isset($questDrop['id'])) { // Если квест есть, предмет имеет шанс выпасть + } elseif (isset($itmz[2]) && $itmz[2] != '') { + $itmz[1] = 0; + } // Если предмет квестовый, а квеста у игрока нет, то предмет выпадет с вероятностью 0 + unset($questDrop); - //Добавляем этот предмет в зону Х и У - if ($itmz[1] * 100000 >= rand(1, 10000000)) { - $tou = 0; //какому юзеру предназначено - /* выделяем случайного юзера из команды */ - $itmnm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itmz[0] . '" LIMIT 1')); - $itmnm = $itmnm['name']; + //Добавляем этот предмет в зону Х и У + if ($itmz[1] * 100000 >= rand(1, 10000000)) { + $tou = 0; //какому юзеру предназначено + /* выделяем случайного юзера из команды */ + $itmnm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itmz[0] . '" LIMIT 1')); + $itmnm = $itmnm['name']; - $rtxt = 'У ' . $tbot2['login'] . ' был предмет "' . $itmnm . '" и кто угодно может поднять его'; - mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[0]['city'] . "','" . $this->users[0]['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); + $rtxt = 'У ' . $tbot2['login'] . ' был предмет "' . $itmnm . '" и кто угодно может поднять его'; + mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[0]['city'] . "','" . $this->users[0]['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); - $ins = mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`) VALUES ( + $ins = mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`) VALUES ( "' . $this->info['dn_id'] . '", "' . $tou . '", "' . $itmz[0] . '", "' . time() . '", "' . $this->info['x'] . '", "' . $this->info['y'] . '")'); - if (!isset($questDrop['id'])) { - $testdrop = 1; //ТУТ drop-drop //quest - } - } - } - $tii++; - } - } - $j2++; - } - // - //Квест 1-15 сентября, - if (date('m') == 9 && date('d') < 15) { - if ($this->get_chanse(99) == true) { - //Не выпало - } elseif ($this->info['dungeon'] == 12 || $this->info['dungeon'] == 101) { - $tou = 0; //какому юзеру предназначено - /* выделяем случайного юзера из команды */ - $itmz = [ - rand(4745, 4751), 100 - ]; - // - $itmnm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itmz[0] . '" LIMIT 1')); - $itmnm = $itmnm['name']; + if (!isset($questDrop['id'])) { + $testdrop = 1; //ТУТ drop-drop //quest + } + } + } + $tii++; + } + } + $j2++; + } + // + //Квест 1-15 сентября, + if (date('m') == 9 && date('d') < 15) { + if ($this->get_chanse(99) == true) { + //Не выпало + } elseif ($this->info['dungeon'] == 12 || $this->info['dungeon'] == 101) { + $tou = 0; //какому юзеру предназначено + /* выделяем случайного юзера из команды */ + $itmz = [ + rand(4745, 4751), + 100, + ]; + // + $itmnm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itmz[0] . '" LIMIT 1')); + $itmnm = $itmnm['name']; - $rtxt = 'У ' . $tbot2['login'] . ' был предмет "' . $itmnm . '" и кто угодно может поднять его'; - mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[0]['city'] . "','" . $this->users[0]['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); + $rtxt = 'У ' . $tbot2['login'] . ' был предмет "' . $itmnm . '" и кто угодно может поднять его'; + mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[0]['city'] . "','" . $this->users[0]['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); - $ins = mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`) VALUES ( + $ins = mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`) VALUES ( "' . $this->info['dn_id'] . '", "' . $tou . '", "' . $itmz[0] . '", "' . time() . '", "' . $this->info['x'] . '", "' . $this->info['y'] . '")'); - } - } - // - //Странички саныча, + } + } + // + //Странички саныча, - if (rand(1, 100) <= 99) { - //Не выпало - } elseif ($this->info['dungeon'] == 12 || $this->info['dungeon'] == 3 || - $this->info['dungeon'] == 101 || $this->info['dungeon'] == 16 || - $this->info['dungeon'] == 9 || $this->info['dungeon'] == 10 || - $this->info['dungeon'] == 13 || $this->info['dungeon'] == 106) { - $tou = 0; //какому юзеру предназначено - // выделяем случайного юзера из команды - $itmz = rand(3143, 3192); - // - $itmnm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itmz . '" LIMIT 1')); - $itmnm = $itmnm['name']; + if (rand(1, 100) <= 99) { + //Не выпало + } elseif ($this->info['dungeon'] == 12 || $this->info['dungeon'] == 3 || + $this->info['dungeon'] == 101 || $this->info['dungeon'] == 16 || + $this->info['dungeon'] == 9 || $this->info['dungeon'] == 10 || + $this->info['dungeon'] == 13 || $this->info['dungeon'] == 106) { + $tou = 0; //какому юзеру предназначено + // выделяем случайного юзера из команды + $itmz = rand(3143, 3192); + // + $itmnm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itmz . '" LIMIT 1')); + $itmnm = $itmnm['name']; - $rtxt = 'У ' . $tbot2['login'] . ' был предмет "' . $itmnm . '" и кто угодно может поднять его'; - mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[0]['city'] . "','" . $this->users[0]['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); + $rtxt = 'У ' . $tbot2['login'] . ' был предмет "' . $itmnm . '" и кто угодно может поднять его'; + mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[0]['city'] . "','" . $this->users[0]['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); - $ins = mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`) VALUES ( + $ins = mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`) VALUES ( "' . $this->info['dn_id'] . '", "' . $tou . '", "' . $itmz . '", "' . time() . '", "' . $this->info['x'] . '", "' . $this->info['y'] . '")'); - } - } - # mysql_query('UPDATE `dungeon_bots` SET `delete` = "'.time().'" WHERE `dn` = "'.$this->info['dn_id'].'" AND `for_dn` = "0" AND `x` = "'.$this->info['x'].'" AND `y`= "'.$this->info['y'].'" AND `delete` = "0" '); - mysql_query('UPDATE `dungeon_bots` SET `delete` = "' . time() . '" AND `inBattle` = "' . $this->info['id'] . '" WHERE `dn` = "' . $this->info['dn_id'] . '" AND `for_dn` = "0" AND `delete` = "0" '); + } + } + # mysql_query('UPDATE `dungeon_bots` SET `delete` = "'.time().'" WHERE `dn` = "'.$this->info['dn_id'].'" AND `for_dn` = "0" AND `x` = "'.$this->info['x'].'" AND `y`= "'.$this->info['y'].'" AND `delete` = "0" '); + mysql_query('UPDATE `dungeon_bots` SET `delete` = "' . time() . '" AND `inBattle` = "' . $this->info['id'] . '" WHERE `dn` = "' . $this->info['dn_id'] . '" AND `for_dn` = "0" AND `delete` = "0" '); + } else { + //выкидываем всех игроков в клетку RESTART + $dnr = 1; + if ($this->info['dungeon'] != 102) { + mysql_query('UPDATE `dungeon_bots` SET `inBattle` = "0" WHERE `dn` = "' . $this->info['dn_id'] . '" AND `for_dn` = "0" AND `x` = "' . $this->info['x'] . '" AND `y`= "' . $this->info['y'] . '"'); + } + } + } + } - } else { - //выкидываем всех игроков в клетку RESTART - $dnr = 1; - if ($this->info['dungeon'] != 102) { - mysql_query('UPDATE `dungeon_bots` SET `inBattle` = "0" WHERE `dn` = "' . $this->info['dn_id'] . '" AND `for_dn` = "0" AND `x` = "' . $this->info['x'] . '" AND `y`= "' . $this->info['y'] . '"'); - } + $gm = []; + $gms = []; + $bm = []; + $bms = []; + + //Квестовый раздел + //Квестовый раздел + + //завершаем поединок + $i = $this->uids[$u->info['id']]; + + if ($this->info['team_win'] >= 0) { + //Выходные +100% опыта + /* + if(date('w') == 0 || date('w') == 6) { + $this->stats[$i]['exp'] += 100; } - } - } + */ - $gm = []; - $gms = []; - $bm = []; - $bms = []; + /*if( date('d.m') == '15.05' ) { + //Оналйн 40 чел (54, но стабильный 40) + //$this->stats[$i]['exp'] += 100; + }elseif( date('d.m') == '13.06' ) { + //Ддос атака + //$this->stats[$i]['exp'] += 100; + }*/ - //завершаем поединок - $i = $this->uids[$u->info['id']]; + if ($this->stats[$i]['pbe'] > 0) { + //Бонус покупателя + $this->expCoef += $this->stats[$i]['pbe']; + } - if ($this->info['team_win'] >= 0) { + if ($this->info['razdel'] == 5) { + if ($c['m'] >= 6 && $c['m'] <= 8) { + //Летний период + $this->expCoef += 5; + } elseif ($c['w'] == 0 || $c['w'] == 6) { + //Выходные дни + $this->expCoef += 5; + } + } - if ($this->stats[$i]['pbe'] > 0) { - //Бонус покупателя - $this->expCoef += $this->stats[$i]['pbe']; - } + $this->stats[$i]['exp'] += $this->expCoef; - if ($this->info['razdel'] == 5) { - if ($c['m'] >= 6 && $c['m'] <= 8) { - //Летний период - $this->expCoef += 5; - } elseif ($c['w'] == 0 || $c['w'] == 6) { - //Выходные дни - $this->expCoef += 5; - } - } + $this->stats[$i]['exp'] += $this->aBexp * $c['exp']; - $this->stats[$i]['exp'] += $this->expCoef; + if ($this->stats[$i]['os4'] > 0) { + $this->stats[$i]['exp'] += $this->stats[$i]['os4']; + } - $this->stats[$i]['exp'] += $this->aBexp * $c['exp']; - - if ($this->stats[$i]['os4'] > 0) { - $this->stats[$i]['exp'] += $this->stats[$i]['os4']; - } - - /*if($this->stats[$i]['silver']>0) { + /*if($this->stats[$i]['silver']>0) { $this->stats[$i]['exp'] += 5*$this->stats[$i]['silver']; if($this->stats[$i]['bonusexp'] > 1) { // Для покупки опыта (получает максимум) $this->stats[$i]['exp'] += 1000*$this->stats[$i]['bonusexp']; @@ -2167,136 +2585,152 @@ class battleClass //} }*/ - $act01 = 0; - $this->users[$i]['battle_exp'] = round($this->users[$i]['battle_exp'] + ($this->users[$i]['battle_exp'] / 100 * (1 + $this->info['addExp'] + $this->stats[$i]['exp']))); + $act01 = 0; + $this->users[$i]['battle_exp'] = round($this->users[$i]['battle_exp'] + ($this->users[$i]['battle_exp'] / 100 * (1 + $this->info['addExp'] + $this->stats[$i]['exp']))); - if ($this->info['type'] == 564) { - //Бой с копией - $this->users[$i]['battle_exp'] = 0; - } + if ($this->info['type'] == 564) { + //Бой с копией + $this->users[$i]['battle_exp'] = 0; + } - if ($this->info['dungeon'] == 104) { - $this->users[$i]['battle_exp'] = ($u->info['level'] * 2) * (count($this->uids) - 1); - } elseif ($this->info['dungeon'] > 0 && $this->users[$i]['dnow'] != 0 && $this->info['dungeon'] != 1 && $this->users[$i]['team'] == $this->info['team_win']) { - $dun_limitForLevel = [4 => 750, 5 => 1500, 6 => 3500, 7 => 8000, 8 => 25000, 9 => 50000, 10 => 75000, 11 => 100000, 12 => 100000, 13 => 100000, 14 => 100000]; - // Максимум для каждого уровня. + if ($this->info['dungeon'] == 104) { + $this->users[$i]['battle_exp'] = ($u->info['level'] * 2) * (count($this->uids) - 1); + } elseif ($this->info['dungeon'] > 0 && $this->users[$i]['dnow'] != 0 && $this->info['dungeon'] != 1 && $this->users[$i]['team'] == $this->info['team_win']) { + $dun_limitForLevel = [ + 4 => 750, + 5 => 1500, + 6 => 3500, + 7 => 8000, + 8 => 25000, + 9 => 50000, + 10 => 75000, + 11 => 100000, + 12 => 100000, + 13 => 100000, + 14 => 100000, + ]; + // Максимум для каждого уровня. - if ($this->users[$i]['battle_exp'] > 0) { - $dun_exp = []; // Текущий лимит опыта игрока в подземельях. - $rep = mysql_fetch_array(mysql_query('SELECT `dungeonexp`,`id` FROM `rep` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1')); - $rep = explode(',', $rep['dungeonexp']); - foreach ($rep as $key => $val) { - $val = explode('=', $val); // текущий лимит опыта в подземке - if (isset($val[0]) && isset($val[1]) && $val[0] != '' && $val[1] != 0) $dun_exp[(int)$val[0]] = (int)$val[1]; - } - unset($rep); - } + if ($this->users[$i]['battle_exp'] > 0) { + $dun_exp = []; // Текущий лимит опыта игрока в подземельях. + $rep = mysql_fetch_array(mysql_query('SELECT `dungeonexp`,`id` FROM `rep` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1')); + $rep = explode(',', $rep['dungeonexp']); + foreach ($rep as $key => $val) { + $val = explode('=', $val); // текущий лимит опыта в подземке + if (isset($val[0]) && isset($val[1]) && $val[0] != '' && $val[1] != 0) { + $dun_exp[(int)$val[0]] = (int)$val[1]; + } + } + unset($rep); + } - if (!isset($dun_exp[$this->info['dungeon']])) $dun_exp[$this->info['dungeon']] = 0; + if (!isset($dun_exp[$this->info['dungeon']])) { + $dun_exp[$this->info['dungeon']] = 0; + } - if (!isset($dun_limitForLevel[(int)$this->users[$i]['level']])) { // Если лимит не задан, опыт не даем. - $this->users[$i]['battle_exp'] = 0; - } elseif ( - isset($dun_exp[$this->info['dungeon']]) && - $dun_exp[$this->info['dungeon']] >= $dun_limitForLevel[(int)$this->users[$i]['level']] - ) { // Если лимит уже достигнут, опыт не даем. - $this->users[$i]['battle_exp'] = 0; - } elseif ( - isset($dun_exp[$this->info['dungeon']]) && - $dun_limitForLevel[(int)$this->users[$i]['level']] > $dun_exp[$this->info['dungeon']] - ) { // Если текущая репутация не достигла лимита. - if (($dun_exp[$this->info['dungeon']] + $this->users[$i]['battle_exp']) > $dun_limitForLevel[(int)$this->users[$i]['level']]) { - // Если опыта набрано достаточно, для достижения лимита. - $this->users[$i]['battle_exp'] = abs($this->users[$i]['battle_exp'] - abs($dun_limitForLevel[(int)$this->users[$i]['level']] - ($this->users[$i]['battle_exp'] + $dun_exp[$this->info['dungeon']]))); - $dun_exp[$this->info['dungeon']] += $this->users[$i]['battle_exp']; - } elseif ($dun_limitForLevel[(int)$this->users[$i]['level']] > ($dun_exp[$this->info['dungeon']] + $this->users[$i]['battle_exp'])) { - // Если опыта недостаточно, для достижения лимита. - $this->users[$i]['battle_exp'] = $this->users[$i]['battle_exp']; - $dun_exp[$this->info['dungeon']] += $this->users[$i]['battle_exp']; - } else { - $this->users[$i]['battle_exp'] = 0; - } - } else { // В любой непонятной ситуцаии. - $this->users[$i]['battle_exp'] = 0; - } + if (!isset($dun_limitForLevel[(int)$this->users[$i]['level']])) { // Если лимит не задан, опыт не даем. + $this->users[$i]['battle_exp'] = 0; + } elseif ( + isset($dun_exp[$this->info['dungeon']]) && + $dun_exp[$this->info['dungeon']] >= $dun_limitForLevel[(int)$this->users[$i]['level']] + ) { // Если лимит уже достигнут, опыт не даем. + $this->users[$i]['battle_exp'] = 0; + } elseif ( + isset($dun_exp[$this->info['dungeon']]) && + $dun_limitForLevel[(int)$this->users[$i]['level']] > $dun_exp[$this->info['dungeon']] + ) { // Если текущая репутация не достигла лимита. + if (($dun_exp[$this->info['dungeon']] + $this->users[$i]['battle_exp']) > $dun_limitForLevel[(int)$this->users[$i]['level']]) { + // Если опыта набрано достаточно, для достижения лимита. + $this->users[$i]['battle_exp'] = abs($this->users[$i]['battle_exp'] - abs($dun_limitForLevel[(int)$this->users[$i]['level']] - ($this->users[$i]['battle_exp'] + $dun_exp[$this->info['dungeon']]))); + $dun_exp[$this->info['dungeon']] += $this->users[$i]['battle_exp']; + } elseif ($dun_limitForLevel[(int)$this->users[$i]['level']] > ($dun_exp[$this->info['dungeon']] + $this->users[$i]['battle_exp'])) { + // Если опыта недостаточно, для достижения лимита. + $this->users[$i]['battle_exp'] = $this->users[$i]['battle_exp']; + $dun_exp[$this->info['dungeon']] += $this->users[$i]['battle_exp']; + } else { + $this->users[$i]['battle_exp'] = 0; + } + } else { // В любой непонятной ситуцаии. + $this->users[$i]['battle_exp'] = 0; + } - if ($this->users[$i]['battle_exp'] > 0 && isset($dun_exp[$this->info['dungeon']]) && $dun_exp[$this->info['dungeon']] > 0) { - $dunexp = []; - foreach ($dun_exp as $key => $val) { - $dunexp[$key] = $key . '=' . $val; // текущий лимит опыта в подземке - } - $dun_exp = implode(",", $dunexp); - mysql_query('UPDATE `rep` SET `dungeonexp` = "' . $dun_exp . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - unset($dunexp, $dun_exp); - } - unset($dun_limitForLevel); - } + if ($this->users[$i]['battle_exp'] > 0 && isset($dun_exp[$this->info['dungeon']]) && $dun_exp[$this->info['dungeon']] > 0) { + $dunexp = []; + foreach ($dun_exp as $key => $val) { + $dunexp[$key] = $key . '=' . $val; // текущий лимит опыта в подземке + } + $dun_exp = implode(",", $dunexp); + mysql_query('UPDATE `rep` SET `dungeonexp` = "' . $dun_exp . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + unset($dunexp, $dun_exp); + } + unset($dun_limitForLevel); + } - $sinf = ''; - if ($c['exp_mega'] == true) { - $this->users[$i]['battle_exp'] += floor($this->users[$i]['battle_exp'] / 100 * $c['exp_mega_val'][$this->users[$i]['level']]); - } + $sinf = ''; + if ($c['exp_mega'] == true) { + $this->users[$i]['battle_exp'] += floor($this->users[$i]['battle_exp'] / 100 * $c['exp_mega_val'][$this->users[$i]['level']]); + } - /*if( $this->users[$i]['level'] < 8 ) { + /*if( $this->users[$i]['level'] < 8 ) { $this->users[$i]['battle_exp'] = $this->users[$i]['battle_exp']*10; }elseif( $this->users[$i]['level'] < 9 ) { //$this->users[$i]['battle_exp'] = $this->users[$i]['battle_exp']*2; }*/ - if ($this->info['team_win'] == 0 && $this->info['type'] != 564) { - //ничья - if ($this->info['razdel'] == 5) { - //mysql_query('INSERT INTO `users_reting` (`uid`,`time`,`val`) VALUES ( - //"'.$this->users[$i]['id'].'","'.time().'","10")'); - } - //$sinf .= ' ничья '; - if ($this->users[$i]['level'] <= 1) { - $this->users[$i]['battle_exp'] = floor($this->users[$i]['battle_exp'] * 0.50); - } else { - //$this->users[$i]['battle_exp'] = 0; - $this->users[$i]['battle_exp'] = ceil($this->users[$i]['battle_exp'] * 0.10); - } - $this->users[$i]['nich'] += 1; - // - mysql_query('UPDATE `users` SET `swin` = 0, `slose` = 0 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - // - } elseif ($this->users[$i]['team'] == $this->info['team_win'] && $this->info['type'] != 564) { - //выйграл - if ($this->info['razdel'] == 5) { - //mysql_query('INSERT INTO `users_reting` (`uid`,`time`,`val`) VALUES ( - //"'.$this->users[$i]['id'].'","'.time().'","30")'); - } - //$sinf .= ' выиграли '; - $gm[$i] = $this->info['money']; + if ($this->info['team_win'] == 0 && $this->info['type'] != 564) { + //ничья + if ($this->info['razdel'] == 5) { + //mysql_query('INSERT INTO `users_reting` (`uid`,`time`,`val`) VALUES ( + //"'.$this->users[$i]['id'].'","'.time().'","10")'); + } + //$sinf .= ' ничья '; + if ($this->users[$i]['level'] <= 1) { + $this->users[$i]['battle_exp'] = floor($this->users[$i]['battle_exp'] * 0.50); + } else { + //$this->users[$i]['battle_exp'] = 0; + $this->users[$i]['battle_exp'] = ceil($this->users[$i]['battle_exp'] * 0.10); + } + $this->users[$i]['nich'] += 1; + // + mysql_query('UPDATE `users` SET `swin` = 0, `slose` = 0 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + // + } elseif ($this->users[$i]['team'] == $this->info['team_win'] && $this->info['type'] != 564) { + //выйграл + if ($this->info['razdel'] == 5) { + //mysql_query('INSERT INTO `users_reting` (`uid`,`time`,`val`) VALUES ( + //"'.$this->users[$i]['id'].'","'.time().'","30")'); + } + //$sinf .= ' выиграли '; + $gm[$i] = $this->info['money']; - $gms[$i] = $this->info['money3']; + $gms[$i] = $this->info['money3']; - $this->users[$i]['win'] += 1; - $act01 = 1; - // - mysql_query('UPDATE `users` SET `swin` = `swin` + 1, `slose` = 0 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - // - } elseif ($this->info['type'] != 564) { - //проиграл - if ($this->info['razdel'] == 5) { - //mysql_query('INSERT INTO `users_reting` (`uid`,`time`,`val`) VALUES ( - //"'.$this->users[$i]['id'].'","'.time().'","10")'); - } - //$sinf .= ' проиграли '; - if ($this->users[$i]['level'] <= 1) { - $this->users[$i]['battle_exp'] = ceil($this->users[$i]['battle_exp'] * 0.33); - } else { - //$this->users[$i]['battle_exp'] = 0; - $this->users[$i]['battle_exp'] = ceil($this->users[$i]['battle_exp'] * 0.10); - } - $bm[$i] = $this->info['money']; + $this->users[$i]['win'] += 1; + $act01 = 1; + // + mysql_query('UPDATE `users` SET `swin` = `swin` + 1, `slose` = 0 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + // + } elseif ($this->info['type'] != 564) { + //проиграл + if ($this->info['razdel'] == 5) { + //mysql_query('INSERT INTO `users_reting` (`uid`,`time`,`val`) VALUES ( + //"'.$this->users[$i]['id'].'","'.time().'","10")'); + } + //$sinf .= ' проиграли '; + if ($this->users[$i]['level'] <= 1) { + $this->users[$i]['battle_exp'] = ceil($this->users[$i]['battle_exp'] * 0.33); + } else { + //$this->users[$i]['battle_exp'] = 0; + $this->users[$i]['battle_exp'] = ceil($this->users[$i]['battle_exp'] * 0.10); + } + $bm[$i] = $this->info['money']; - $bms[$i] = $this->info['money3']; + $bms[$i] = $this->info['money3']; - $this->users[$i]['lose'] += 1; - //Добавляем эффект ослабления - /*if($this->users[$i]['level']>=4 && $this->info['dungeon'] == 0 && $this->stats[$i]['silver'] < 2){ + $this->users[$i]['lose'] += 1; + //Добавляем эффект ослабления + /*if($this->users[$i]['level']>=4 && $this->info['dungeon'] == 0 && $this->stats[$i]['silver'] < 2){ $noOsl = 0; $nn = 0; while($nnstats[$i]['effects'])){ @@ -2312,233 +2746,320 @@ class battleClass } }*/ - // - mysql_query('UPDATE `users` SET `swin` = 0, `slose` = `slose` + 1 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - // - $act01 = 2; - } - if ($this->users[$i]['level'] < 4) { - //$this->users[$i]['battle_exp'] = $this->users[$i]['battle_exp']*3; - } - //$sinf .= ' '.$this->info['id'].'-'.$this->info['team_win'].'-'.$relbf.'-'.$this->users[$i]['team'].'-'.$tl .' '; - // - //Рассчитываем кол-во выигрышных сумм и кто сколько получил (для екр.) - if ($this->info['money3'] > 0 && isset($gms[$i]) && $this->info['type'] != 564) { - $mn = [ - 'l' => 0, //сколько проигравших игроков - 'w' => 0, //сколько выигрывших игроков - 'm' => 0 //сумма выигрыша (общая) - ]; - if ($act01 == 1) { - $mn['l'] = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" AND `team` != "' . $this->users[$i]['team'] . '" LIMIT 1')); - $mn['l'] = $mn['l'][0]; - $mn['w'] = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" AND `team` = "' . $this->users[$i]['team'] . '" LIMIT 1')); - $mn['w'] = $mn['w'][0]; - $mn['m'] = round(($mn['l'] * $this->info['money3']) / 100 * 87, 2); - $gms[$i] = round(($mn['m'] / $mn['w']), 2); - } - } - // - //заносим данные в БД - //Поломка предметов - if ($act01 == 1) { - //победа - if ($this->users[$i]['dnow'] == 0) { - if ($this->users[$i]['hpNow'] < 1) { - $lom = 0.05; - } - } - } elseif ($act01 == 2) { - //поражение - $lom = 0.55; - } else { - //ничья - $lom = 0.05; - } - //$lom = round($lom*2.75,2); - $nlom = [0 => rand(0, 18), 1 => rand(0, 18), 2 => rand(0, 18), 3 => rand(0, 18)]; - if ($this->info['type'] == 564) { - $lom = 0; - } - if ($this->stats[$i]['silver'] >= 4) { - $lom = 0; - } - mysql_query('UPDATE `items_users` SET `iznosNOW` = `iznosNOW`+' . $lom . ' WHERE `inOdet` < "18" AND `inOdet` > "0" AND `uid` = "' . $this->users[$i]['id'] . '" AND `inOdet`!="0" AND `inOdet`!=' . $nlom[0] . ' AND `inOdet`!=' . $nlom[1] . ' AND `inOdet`!=' . $nlom[2] . ' AND `inOdet`!=' . $nlom[3] . ' LIMIT 18'); + // + mysql_query('UPDATE `users` SET `swin` = 0, `slose` = `slose` + 1 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + // + $act01 = 2; + } + if ($this->users[$i]['level'] < 4) { + //$this->users[$i]['battle_exp'] = $this->users[$i]['battle_exp']*3; + } + //$sinf .= ' '.$this->info['id'].'-'.$this->info['team_win'].'-'.$relbf.'-'.$this->users[$i]['team'].'-'.$tl .' '; + // + //Рассчитываем кол-во выигрышных сумм и кто сколько получил (для екр.) + if ($this->info['money3'] > 0 && isset($gms[$i]) && $this->info['type'] != 564) { + $mn = [ + 'l' => 0, //сколько проигравших игроков + 'w' => 0, //сколько выигрывших игроков + 'm' => 0 //сумма выигрыша (общая) + ]; + if ($act01 == 1) { + $mn['l'] = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" AND `team` != "' . $this->users[$i]['team'] . '" LIMIT 1')); + $mn['l'] = $mn['l'][0]; + $mn['w'] = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" AND `team` = "' . $this->users[$i]['team'] . '" LIMIT 1')); + $mn['w'] = $mn['w'][0]; + $mn['m'] = round(($mn['l'] * $this->info['money3']) / 100 * 87, 2); + $gms[$i] = round(($mn['m'] / $mn['w']), 2); + } + } + // + //заносим данные в БД + //Поломка предметов + if ($act01 == 1) { + //победа + if ($this->users[$i]['dnow'] == 0) { + if ($this->users[$i]['hpNow'] < 1) { + $lom = 0.05; + } + } + } elseif ($act01 == 2) { + //поражение + $lom = 0.55; + } else { + //ничья + $lom = 0.05; + } + //$lom = round($lom*2.75,2); + $nlom = [0 => rand(0, 18), 1 => rand(0, 18), 2 => rand(0, 18), 3 => rand(0, 18)]; + if ($this->info['type'] == 564) { + $lom = 0; + } + if ($this->stats[$i]['silver'] >= 4) { + $lom = 0; + } + mysql_query('UPDATE `items_users` SET `iznosNOW` = `iznosNOW`+' . $lom . ' WHERE `inOdet` < "18" AND `inOdet` > "0" AND `uid` = "' . $this->users[$i]['id'] . '" AND `inOdet`!="0" AND `inOdet`!=' . $nlom[0] . ' AND `inOdet`!=' . $nlom[1] . ' AND `inOdet`!=' . $nlom[2] . ' AND `inOdet`!=' . $nlom[3] . ' LIMIT 18'); - $prc = ''; - if ($this->users[$i]['align'] == 2) { - $this->users[$i]['battle_exp'] = floor($this->users[$i]['battle_exp'] / 2); - } - if ($this->users[$i]['animal'] > 0) { - $ulan = $u->testAction('`uid` = "' . $this->users[$i]['id'] . '" AND `vars` = "animal_use' . $this->info['id'] . '" LIMIT 1', 1); - if (isset($ulan['id']) && $this->users[$i]['team'] == $this->info['team_win'] && $this->users[$i]['level'] > $ulan['vals']) { - $a004 = mysql_fetch_array(mysql_query('SELECT `max_exp`,`name` FROM `users_animal` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `id` = "' . $this->users[$i]['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); - //33% от опыта переходит зверю, но не более максимума - $aexp = (round($this->users[$i]['battle_exp'] / 100 * 33)); - if ($aexp > $a004['max_exp']) { - $aexp = $a004['max_exp']; - } - unset($ulan); - // - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat` + $prc = ''; + if ($this->users[$i]['align'] == 2) { + $this->users[$i]['battle_exp'] = floor($this->users[$i]['battle_exp'] / 2); + } + if ($this->users[$i]['animal'] > 0) { + $ulan = $u->testAction('`uid` = "' . $this->users[$i]['id'] . '" AND `vars` = "animal_use' . $this->info['id'] . '" LIMIT 1', + 1); + if (isset($ulan['id']) && $this->users[$i]['team'] == $this->info['team_win'] && $this->users[$i]['level'] > $ulan['vals']) { + $a004 = mysql_fetch_array(mysql_query('SELECT `max_exp`,`name` FROM `users_animal` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `id` = "' . $this->users[$i]['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); + //33% от опыта переходит зверю, но не более максимума + $aexp = (round($this->users[$i]['battle_exp'] / 100 * 33)); + if ($aexp > $a004['max_exp']) { + $aexp = $a004['max_exp']; + } + unset($ulan); + // + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat` ) VALUES ( '1','" . $this->users[$i]['city'] . "','" . $this->users[$i]['room'] . "','','" . $this->users[$i]['login'] . "' ,'Ваш питомец "" . $a004['name'] . "" получил опыт: " . $aexp . "','-1','6','0')"); - // - $upd = mysql_query('UPDATE `users_animal` SET `exp` = `exp` + ' . $aexp . ' WHERE `id` = "' . $this->users[$i]['animal'] . '" AND `level` < ' . $this->users[$i]['level'] . ' LIMIT 1'); - if ($upd) { - $this->users[$i]['battle_exp'] = round($this->users[$i]['battle_exp'] / 100 * 67); - $this->info['addExp'] -= 33.333; - } - } - } + // + $upd = mysql_query('UPDATE `users_animal` SET `exp` = `exp` + ' . $aexp . ' WHERE `id` = "' . $this->users[$i]['animal'] . '" AND `level` < ' . $this->users[$i]['level'] . ' LIMIT 1'); + if ($upd) { + $this->users[$i]['battle_exp'] = round($this->users[$i]['battle_exp'] / 100 * 67); + $this->info['addExp'] -= 33.333; + } + } + } - $prsusers = mysql_fetch_array(mysql_query('SELECT SUM(`price1`) FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" LIMIT 1')); - unset($prsusers); - $btlstatus = $this->typeBattle($prsusers[0]); - if ($this->info['smert'] == 1) { - $btlstatus = [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение']; - } - // - if ($this->stats[$i]['clanpos'] > 0) { - if ($this->stats[$i]['clanpos'] == 1) { - $this->info['addExp'] += 0; - } elseif ($this->stats[$i]['clanpos'] == 2) { - $this->info['addExp'] += 0; - } elseif ($this->stats[$i]['clanpos'] == 3) { - $this->info['addExp'] += 0; - } - } + $prsusers = mysql_fetch_array(mysql_query('SELECT SUM(`price1`) FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" LIMIT 1')); + unset($prsusers); + $btlstatus = $this->typeBattle($prsusers[0]); + if ($this->info['smert'] == 1) { + $btlstatus = [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение']; + } + // + if ($this->stats[$i]['clanpos'] > 0) { + if ($this->stats[$i]['clanpos'] == 1) { + $this->info['addExp'] += 0; + } elseif ($this->stats[$i]['clanpos'] == 2) { + $this->info['addExp'] += 0; + } elseif ($this->stats[$i]['clanpos'] == 3) { + $this->info['addExp'] += 0; + } + } - unset($r1); - //Статусная битва - if ($btlstatus[0] > 0) { - if ($this->info['type'] == 99) { - $this->info['addExp'] += $btlstatus[1]; - } else { - $this->info['addExp'] += $btlstatus[0]; - } - } + unset($r1); + //Статусная битва + if ($btlstatus[0] > 0) { + if ($this->info['type'] == 99) { + $this->info['addExp'] += $btlstatus[1]; + } else { + $this->info['addExp'] += $btlstatus[0]; + } + } - if ($this->users[$i]['align'] == 2 || $this->users[$i]['haos'] > time()) { - $this->stats[$i]['exp'] = -($this->info['addExp'] + 50); - } - if ($this->info['addExp'] + $this->stats[$i]['exp'] != 0) { - $prc = ' (' . (100 + $this->info['addExp'] + $this->stats[$i]['exp']) . '%)'; - } - if ($this->info['money'] > 0) { - if (isset($gm[$i])) { - $prc .= ' Вы выйграли ' . $gm[$i] . ' кр. за этот бой.'; - $u->addDelo(4, $this->users[$i]['id'], '"System.battle": Персонаж выйграл ' . $gm[$i] . ' кр. (В бою №' . $this->info['id'] . ').', time(), $this->info['city'], 'System.battle', 0, 0); - $this->users[$i]['money'] += $gm[$i]; - } elseif (isset($bm[$i])) { - $prc .= ' Вы заплатили ' . $bm[$i] . ' кр. за этот бой.'; - $u->addDelo(4, $this->users[$i]['id'], '"System.battle": Персонаж проиграл ' . $gm[$i] . ' кр. (В бою №' . $this->info['id'] . ').', time(), $this->info['city'], 'System.battle', 0, 0); - $this->users[$i]['money'] -= $bm[$i]; - } - } - // - if ($c['money_haot'] == true && $this->users[$i]['exp'] <= 200000000) { - if ($act01 == 1 && $this->info['razdel'] == 5 && $this->users[$i]['level'] >= 8) { + if ($this->users[$i]['align'] == 2 || $this->users[$i]['haos'] > time()) { + $this->stats[$i]['exp'] = -($this->info['addExp'] + 50); + } + if ($this->info['addExp'] + $this->stats[$i]['exp'] != 0) { + $prc = ' (' . (100 + $this->info['addExp'] + $this->stats[$i]['exp']) . '%)'; + } + if ($this->info['money'] > 0) { + if (isset($gm[$i])) { + $prc .= ' Вы выйграли ' . $gm[$i] . ' кр. за этот бой.'; + $u->addDelo(4, $this->users[$i]['id'], + '"System.battle": Персонаж выйграл ' . $gm[$i] . ' кр. (В бою №' . $this->info['id'] . ').', + time(), $this->info['city'], 'System.battle', 0, 0); + $this->users[$i]['money'] += $gm[$i]; + } elseif (isset($bm[$i])) { + $prc .= ' Вы заплатили ' . $bm[$i] . ' кр. за этот бой.'; + $u->addDelo(4, $this->users[$i]['id'], + '"System.battle": Персонаж проиграл ' . $gm[$i] . ' кр. (В бою №' . $this->info['id'] . ').', + time(), $this->info['city'], 'System.battle', 0, 0); + $this->users[$i]['money'] -= $bm[$i]; + } + } + // + if ($c['money_haot'] == true && $this->users[$i]['exp'] <= 200000000) { + if ($act01 == 1 && $this->info['razdel'] == 5 && $this->users[$i]['level'] >= 8) { + //Сколько нужно опыта набить + $trexp = [ + 8 => 1200, + 9 => 3000, + 10 => 4500, + 11 => 12000, + 12 => 20000, + 13 => 30000, + 14 => 30000, + 15 => 30000, + 16 => 30000, + 17 => 30000, + 18 => 30000, + 19 => 30000, + 20 => 30000, + 21 => 30000, + ]; + $trexp = $trexp[$this->users[$i]['level']]; - //Сколько нужно опыта набить - $trexp = [ - 8 => 1200, - 9 => 1800, - 10 => 4500, - 11 => 12000, - 12 => 20000, - 13 => 30000, - 14 => 30000, - 15 => 30000, - 16 => 30000, - 17 => 30000, - 18 => 30000, - 19 => 30000, - 20 => 30000, - 21 => 30000 - ]; - $trexp = $trexp[$this->users[$i]['level']]; + //Какая цена фулла должна быть + $trmn = [ + 8 => 1000, + 9 => 3000, + 10 => 2500, + 11 => 3000, + 12 => 3000, + 13 => 3000, + 14 => 3000, + 15 => 3000, + 16 => 3000, + 17 => 3000, + 18 => 3000, + 19 => 3000, + 20 => 3000, + 21 => 3000, + ]; + $trmn = $trmn[$this->users[$i]['level']]; - //Какая цена фулла должна быть - $trmn = [ - 8 => 1000, - 9 => 3000, - 10 => 2500, - 11 => 3000, - 12 => 3000, - 13 => 3000, - 14 => 3000, - 15 => 3000, - 16 => 3000, - 17 => 3000, - 18 => 3000, - 19 => 3000, - 20 => 3000, - 21 => 3000 - ]; - $trmn = $trmn[$this->users[$i]['level']]; + //Сколько екр дается + $admn = [ + 8 => 0.05, //0.05 + 9 => 0.065, //0.065 + 10 => 0.075, //0.075 + 11 => 0.085, //0.085 + 12 => 0.1, //0.1 + 13 => 0.1, + 14 => 0.1, + 15 => 0.1, + 16 => 0.1, + 17 => 0.1, + 18 => 0.1, + 19 => 0.1, + 20 => 0.1, + 21 => 0.1, + ]; + $admn = $admn[$this->users[$i]['level']]; - //Сколько екр дается - $admn = [ - 8 => 0.010, //0.05 - 9 => 0.065, //0.065 - 10 => 0.075, //0.075 - 11 => 0.085, //0.085 - 12 => 0.1, //0.1 - 13 => 0.1, - 14 => 0.1, - 15 => 0.1, - 16 => 0.1, - 17 => 0.1, - 18 => 0.1, - 19 => 0.1, - 20 => 0.1, - 21 => 0.1 - ]; - $admn = $admn[$this->users[$i]['level']]; + if ($c['m'] >= 6 && $c['m'] <= 8) { + //Летний период + if ($c['w'] == 0 || $c['w'] == 5 || $c['w'] == 6) { + //Выходные дни + $admn = $admn * 2; + } + } elseif ($c['w'] == 0 || $c['w'] == 5 || $c['w'] == 6) { + //Выходные дни + $admn = $admn * 2; + } + if ($this->users[$i]['battle_exp'] < $trexp) { + //недостаточно опыта набито за бой + $prc .= ', Награда 0 ЕКР за этот бой (Мало опыта набили).'; + //}elseif( $this->stats[$i]['prckr'] < $trmn ) { + //недостаточно стоимость кр вещей + //$prc .= ', Награда 0 ЕКР за этот бой (У вас дешевый комплект).'; + } elseif ($admn > 0) { + if ($this->info['type'] != 33) { + $prc .= ', Награда ' . $admn . ' ЕКР за этот бой.'; + } + $u->addDelo(4, $this->users[$i]['id'], + '"System.battle": Персонаж получил ' . $admn . ' ЕКР (В бою №' . $this->info['id'] . ').', + time(), $this->info['city'], 'System.battle', 0, 0); + $this->users[$i]['money2'] += $admn; + } - if ($c['m'] >= 6 && $c['m'] <= 8) { - //Летний период - if ($c['w'] == 0 || $c['w'] == 5 || $c['w'] == 6) { - //Выходные дни - $admn = $admn * 2; + //$bnsv = 0.50; + /* + if( $this->info['otmorozok_use'] > 0 ) { + $bnsv += 1; } - - } elseif ($c['w'] == 0 || $c['w'] == 5 || $c['w'] == 6) { - //Выходные дни - $admn = $admn * 2; - } - if ($this->users[$i]['battle_exp'] < $trexp) { - //недостаточно опыта набито за бой - $prc .= ', Награда 0 ЕКР за этот бой (Мало опыта набили).'; - //}elseif( $this->stats[$i]['prckr'] < $trmn ) { - //недостаточно стоимость кр вещей - //$prc .= ', Награда 0 ЕКР за этот бой (У вас дешевый комплект).'; - } elseif ($admn > 0) { - if ($this->info['type'] != 33) { - $prc .= ', Награда ' . $admn . ' ЕКР за этот бой.'; + if( $c['w'] == 0 || $c['w'] == 6 ) { + $bnsv += 0.50; } - $u->addDelo(4, $this->users[$i]['id'], '"System.battle": Персонаж получил ' . $admn . ' ЕКР (В бою №' . $this->info['id'] . ').', time(), $this->info['city'], 'System.battle', 0, 0); - $this->users[$i]['money2'] += $admn; - } - } - } - // - if ($this->info['money3'] > 0) { - if (isset($gms[$i])) { - $prc .= ' Вы выйграли ' . $gms[$i] . ' $. за этот бой.'; - $u->addDelo(4, $this->users[$i]['id'], '"System.battle": Персонаж выйграл ' . $gms[$i] . ' $. (В бою №' . $this->info['id'] . ').', time(), $this->info['city'], 'System.battle', 0, 0); - $this->users[$i]['money3'] += $gms[$i]; - mysql_query('UPDATE `users` SET `money3` = `money3` + "' . $gms[$i] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - } elseif (isset($bms[$i])) { - $prc .= ' Вы заплатили ' . $bms[$i] . ' $. за этот бой.'; - $u->addDelo(4, $this->users[$i]['id'], '"System.battle": Персонаж проиграл ' . $gms[$i] . ' $. (В бою №' . $this->info['id'] . ').', time(), $this->info['city'], 'System.battle', 0, 0); - $this->users[$i]['money3'] -= $bms[$i]; - mysql_query('UPDATE `users` SET `money3` = `money3` - "' . $bms[$i] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - } - } - /*if($this->info['kingfight']==1 && $this->info['type'] != 564 ) { + $admnb = round($bnsv+(($this->stats[$i]['prckr']/100)*$c['money_haot_proc']),2); + if($act01!=1) { + $admnb = round($admnb/10,2); + } + */ + /*$admnb = 0; + // + if( $admnb >= 0.01 ) { + $adexp = array( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 3000, + 9 => 5000, + 10 => 8000, + 11 => 12000, + 12 => 20000, + 13 => 30000, + 14 => 30000, + 15 => 30000, + 16 => 30000, + 17 => 30000, + 18 => 30000, + 19 => 30000, + 20 => 30000, + 21 => 30000 + ); + $adexp = $adexp[$this->users[$i]['level']]; + if( $adexp > 0 && $adexp > ) { + if($act01!=1) { + $adexp = round($adexp/10); + } + //$uzrbtl = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `battle_users` WHERE `battle` = "'.$this->info['id'].'" AND `login` NOT LIKE "%(%)&" AND `align` != "" LIMIT 1')); + //$uzrbtl = $uzrbtl[0]; + if( $this->users[$i]['battle_exp'] < $adexp ) { + //Нет награды т.к. не набрали минимального опыта + $prc .= ', Награда 0 ЕКР за этот бой, набивайте больше урона.'; + }else{ + $prc .= ', Награда '.$admnb.' ЕКР за этот бой.'; + $u->addDelo(4,$this->users[$i]['id'],'"System.battle": Персонаж получил '.$admnb.' ЕКР (В бою №'.$this->info['id'].').',time(),$this->info['city'],'System.battle',0,0); + $this->users[$i]['money2'] += $admnb; + } + } + // + $minpsh = 0; + if($act01==1){ + //победа + $minpsh = 25; + }elseif($act01==2){ + //поражение + $minpsh = 15; + }else{ + //ничья + $minpsh = 15; + } + if( $c['w'] == 0 || $c['w'] == 6 ) { + $minpsh += 10; + } + if( $minpsh > 0 ) { + mysql_query('UPDATE `actions` SET `time` = `time` - "'.($minpsh*60).'" WHERE `vars` LIKE "psh0" AND `uid` = "'.$this->users[$i]['id'].'"'); + $prc .= ', Задержка посещение пещер уменьшена на '.$minpsh.' минут.'; + } + // + */ + } + } + // + if ($this->info['money3'] > 0) { + if (isset($gms[$i])) { + $prc .= ' Вы выйграли ' . $gms[$i] . ' $. за этот бой.'; + $u->addDelo(4, $this->users[$i]['id'], + '"System.battle": Персонаж выйграл ' . $gms[$i] . ' $. (В бою №' . $this->info['id'] . ').', + time(), $this->info['city'], 'System.battle', 0, 0); + $this->users[$i]['money3'] += $gms[$i]; + mysql_query('UPDATE `users` SET `money3` = `money3` + "' . $gms[$i] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + } elseif (isset($bms[$i])) { + $prc .= ' Вы заплатили ' . $bms[$i] . ' $. за этот бой.'; + $u->addDelo(4, $this->users[$i]['id'], + '"System.battle": Персонаж проиграл ' . $gms[$i] . ' $. (В бою №' . $this->info['id'] . ').', + time(), $this->info['city'], 'System.battle', 0, 0); + $this->users[$i]['money3'] -= $bms[$i]; + mysql_query('UPDATE `users` SET `money3` = `money3` - "' . $bms[$i] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + } + } + /*if($this->info['kingfight']==1 && $this->info['type'] != 564 ) { //Призовой поединок if($this->info['team_win'] == 0) { @@ -2555,7 +3076,7 @@ class battleClass } }*/ - /* + /* 7ур - 10800 8ур - 36000 9ур - 56000 @@ -2565,236 +3086,237 @@ class battleClass } */ - //$lime = array(8=>18000,9=>28000,10=>84000,11=>150000); - $lime = [ - 8 => 18000, - 9 => 28000, - 10 => 84000, - 11 => 100, - 12 => 100, - 13 => 100, - 14 => 100, - 15 => 100, - 16 => 100, - 17 => 100, - 18 => 100, - 19 => 100, - 20 => 100, - 21 => 100 - ]; + //$lime = array(8=>18000,9=>28000,10=>84000,11=>150000); + $lime = [ + 8 => 18000, + 9 => 28000, + 10 => 84000, + 11 => 100, + 12 => 100, + 13 => 100, + 14 => 100, + 15 => 100, + 16 => 100, + 17 => 100, + 18 => 100, + 19 => 100, + 20 => 100, + 21 => 100, + ]; - if ($this->users[$i]['level'] < 8) { - $lime = 5400; - } else { - $lime = $lime[$this->users[$i]['level']]; - } + if ($this->users[$i]['level'] < 8) { + $lime = 5400; + } else { + $lime = $lime[$this->users[$i]['level']]; + } - if ($this->stats[$i]['silver'] >= 5) { - $lime += round($lime); - } + if ($this->stats[$i]['silver'] >= 5) { + $lime += round($lime); + } - /*if( $this->stats[$i]['silver'] > 0 ) { + /*if( $this->stats[$i]['silver'] > 0 ) { $lime += floor($lime/100*(10*$this->stats[$i]['silver'])); }*/ - if ($this->users[$i]['stopexp'] == 1) { - $lime = 0; - $this->users[$i]['battle_exp'] = 0; - } + if ($this->users[$i]['stopexp'] == 1) { + $lime = 0; + $this->users[$i]['battle_exp'] = 0; + } - if ($lime < $this->users[$i]['battle_exp'] && $c['limitedexp'] == true) { - $this->users[$i]['battle_exp'] = $lime; - } - // - /*if( $this->users[$i]['battle_exp'] > 100 && $this->info[$i]['level'] == 6 ) { + if ($lime < $this->users[$i]['battle_exp'] && $c['limitedexp'] == true) { + $this->users[$i]['battle_exp'] = $lime; + } + // + /*if( $this->users[$i]['battle_exp'] > 100 && $this->info[$i]['level'] == 6 ) { $this->users[$i]['battle_exp'] = 100; }*/ - // - unset($lime); + // + unset($lime); - //if(100+$this->info['addExp']+$this->stats[$i]['exp'] > 1000) { - //$prc .= ' (Великая Битва)'; - //} + //if(100+$this->info['addExp']+$this->stats[$i]['exp'] > 1000) { + //$prc .= ' (Великая Битва)'; + //} - if ($btlstatus[0] > 0) { - if ($this->info['type'] == 99) { - $prc .= ' (' . $btlstatus[3] . ')'; - } else { - $prc .= ' (' . $btlstatus[2] . ')'; - } - } + if ($btlstatus[0] > 0) { + if ($this->info['type'] == 99) { + $prc .= ' (' . $btlstatus[3] . ')'; + } else { + $prc .= ' (' . $btlstatus[2] . ')'; + } + } - if ($this->info['dungeon'] == 1 && $this->users[$i]['team'] == $this->info['team_win']) { - //канализация лимит - $rep = mysql_fetch_array(mysql_query('SELECT `dl1`,`id` FROM `rep` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1')); - if ($rep['dl' . $this->info['dungeon']] > 0) { - $this->users[$i]['battle_exp'] += 3 * count($this->users); - if ($rep['dl' . $this->info['dungeon']] > $this->users[$i]['battle_exp']) { - $rep['dl' . $this->info['dungeon']] -= $this->users[$i]['battle_exp']; - } else { - $this->users[$i]['battle_exp'] = $rep['dl' . $this->info['dungeon']]; - $rep['dl' . $this->info['dungeon']] = 0; - } - mysql_query('UPDATE `rep` SET `dl' . $this->info['dungeon'] . '` = "' . $rep['dl' . $this->info['dungeon']] . '" WHERE `id` = "' . $rep['id'] . '" LIMIT 1'); - } else { - $this->users[$i]['battle_exp'] = 0; - } - } + if ($this->info['dungeon'] == 1 && $this->users[$i]['team'] == $this->info['team_win']) { + //канализация лимит + $rep = mysql_fetch_array(mysql_query('SELECT `dl1`,`id` FROM `rep` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1')); + if ($rep['dl' . $this->info['dungeon']] > 0) { + $this->users[$i]['battle_exp'] += 3 * count($this->users); + if ($rep['dl' . $this->info['dungeon']] > $this->users[$i]['battle_exp']) { + $rep['dl' . $this->info['dungeon']] -= $this->users[$i]['battle_exp']; + } else { + $this->users[$i]['battle_exp'] = $rep['dl' . $this->info['dungeon']]; + $rep['dl' . $this->info['dungeon']] = 0; + } + mysql_query('UPDATE `rep` SET `dl' . $this->info['dungeon'] . '` = "' . $rep['dl' . $this->info['dungeon']] . '" WHERE `id` = "' . $rep['id'] . '" LIMIT 1'); + } else { + $this->users[$i]['battle_exp'] = 0; + } + } - if ($this->users[$i]['battle_exp'] < 1) { - $this->users[$i]['battle_exp'] = 0; - } + if ($this->users[$i]['battle_exp'] < 1) { + $this->users[$i]['battle_exp'] = 0; + } - if ($this->users[$i]['battle_exp'] < 1 && $this->users[$i]['twink'] == 0) { - if ($this->info['money'] == 0 && $this->info['money3'] == 0 && $this->info['kingfight'] == 0 && (!isset($admnb) || $admnb == 0)) { - $prc = ''; - } - } + if ($this->users[$i]['battle_exp'] < 1 && $this->users[$i]['twink'] == 0) { + if ($this->info['money'] == 0 && $this->info['money3'] == 0 && $this->info['kingfight'] == 0 && (!isset($admnb) || $admnb == 0)) { + $prc = ''; + } + } - if ($this->user[$i]['host_reg'] == 'real_bot_user') { - $this->users[$i]['battle_exp'] = round($this->users[$i]['battle_exp'] / 3); - } + if ($this->user[$i]['host_reg'] == 'real_bot_user') { + $this->users[$i]['battle_exp'] = round($this->users[$i]['battle_exp'] / 3); + } - if ($sinf != '') { - $sinf = ' ( ' . $sinf . ' )'; - } + if ($sinf != '') { + $sinf = ' ( ' . $sinf . ' )'; + } - /*if( $this->users[$i]['level'] >= 8 ) { + /*if( $this->users[$i]['level'] >= 8 ) { if( $this->users[$i]['battle_exp'] > 1000 ) { $this->users[$i]['battle_exp'] = 1000; } }*/ - //--------------Лимит 8-9-------------- + //--------------Лимит 8-9-------------- - if ($this->users[$i]['level'] == 8 && $this->users[$i]['battle_exp'] >= 23000) { - $this->users[$i]['battle_exp'] = 23000; - }; - // if ($this->users[$i]['level']==9 ) {$this->users[$i]['battle_exp']=floor($this->users[$i]['battle_exp']/3);}; - if ($this->users[$i]['level'] == 9 && $this->users[$i]['battle_exp'] >= 31000) { - $this->users[$i]['battle_exp'] = 31000; - }; - // if ($this->users[$i]['level']==10 ) {$this->users[$i]['battle_exp']=floor($this->users[$i]['battle_exp']/4);}; - if ($this->users[$i]['level'] == 10 && $this->users[$i]['battle_exp'] >= 52000) { - $this->users[$i]['battle_exp'] = 52000; - }; - // if ($this->users[$i]['level']==11 ) {$this->users[$i]['battle_exp']=floor($this->users[$i]['battle_exp']/4);}; - if ($this->users[$i]['level'] >= 11 && $this->users[$i]['battle_exp'] >= 75000) { - $this->users[$i]['battle_exp'] = 75000; - }; - //------------------------------------- + if ($this->users[$i]['level'] == 8 && $this->users[$i]['battle_exp'] >= 23000) { + $this->users[$i]['battle_exp'] = 23000; + }; + // if ($this->users[$i]['level']==9 ) {$this->users[$i]['battle_exp']=floor($this->users[$i]['battle_exp']/3);}; + if ($this->users[$i]['level'] == 9 && $this->users[$i]['battle_exp'] >= 31000) { + $this->users[$i]['battle_exp'] = 31000; + }; + // if ($this->users[$i]['level']==10 ) {$this->users[$i]['battle_exp']=floor($this->users[$i]['battle_exp']/4);}; + if ($this->users[$i]['level'] == 10 && $this->users[$i]['battle_exp'] >= 52000) { + $this->users[$i]['battle_exp'] = 52000; + }; + // if ($this->users[$i]['level']==11 ) {$this->users[$i]['battle_exp']=floor($this->users[$i]['battle_exp']/4);}; + if ($this->users[$i]['level'] >= 11 && $this->users[$i]['battle_exp'] >= 75000) { + $this->users[$i]['battle_exp'] = 75000; + }; + //------------------------------------- - if ($this->info['type'] != 33) { - $this->users[$i]['battle_text'] = 'Бой закончен. Всего вами нанесено урона: ' . floor($this->users[$i]['battle_yron']) . ' HP. Получено опыта: ' . (0 + $this->users[$i]['battle_exp']) . '' . $prc . '.' . $sinf; //stats - } + if ($this->info['type'] != 33) { + $this->users[$i]['battle_text'] = 'Бой закончен. Всего вами нанесено урона: ' . floor($this->users[$i]['battle_yron']) . ' HP. Получено опыта: ' . (0 + $this->users[$i]['battle_exp']) . '' . $prc . '.' . $sinf; //stats + } - /*Выпадение зубов в конце боя */ - if ($c['nolevel'] == true) { - $rex95 = substr($this->users[$i]['exp'], -1); - if ($this->users[$i]['money4'] < 1000 && $this->users[$i]['exp'] == 12499) { - $rex95 = 6; - $rex95 = 5; - } - } else { - $rex95 = 5; - } + /*Выпадение зубов в конце боя */ + if ($c['nolevel'] == true) { + $rex95 = substr($this->users[$i]['exp'], -1); + if ($this->users[$i]['money4'] < 1000 && $this->users[$i]['exp'] == 12499) { + $rex95 = 6; + $rex95 = 5; + } + } else { + $rex95 = 5; + } - //echo '['.$rex95.']'; - if ($c['zuby'] == true && $this->info['dungeon'] == 0 && ($this->info['clone'] == 0 || $this->users[$i]['level'] < 5) && $rex95 != 9 && $this->info['type'] != 564) { - if ($this->users[$i]['align'] != 2 && $this->users[$i]['level'] >= 0 && $this->users[$i]['level'] < 8 && $this->users[$i]['battle_exp'] > 0) { - $rzb = 0; + //echo '['.$rex95.']'; + if ($c['zuby'] == true && $this->info['dungeon'] == 0 && ($this->info['clone'] == 0 || $this->users[$i]['level'] < 5) && $rex95 != 9 && $this->info['type'] != 564) { + if ($this->users[$i]['align'] != 2 && $this->users[$i]['level'] >= 0 && $this->users[$i]['level'] < 8 && $this->users[$i]['battle_exp'] > 0) { + $rzb = 0; - if ($this->get_chanse(50) == true) { - $rzb += rand(1, 3); - } else { - if ($this->users[$i]['battle_exp'] > 15) { - $rzb += 1; - } - } + if ($this->get_chanse(50) == true) { + $rzb += rand(1, 3); + } else { + if ($this->users[$i]['battle_exp'] > 15) { + $rzb += 1; + } + } - $chzbs = 100; + $chzbs = 100; - if ($this->stats[$i]['silver'] > 0) { - $chzbs = 150; - } + if ($this->stats[$i]['silver'] > 0) { + $chzbs = 150; + } - if ($this->users[$i]['battle_exp'] > 9) { - if ($this->users[$i]['level'] > 1) { - //Нормальный зуб - if ($this->get_chanse(25 / 100 * $chzbs) == true) { - $rzb += 10; - } - } elseif ($this->users[$i]['level'] == 1) { - if ($this->get_chanse(30 / 100 * $chzbs) == true) { - $rzb += 10; - } - } + if ($this->users[$i]['battle_exp'] > 9) { + if ($this->users[$i]['level'] > 1) { + //Нормальный зуб + if ($this->get_chanse(25 / 100 * $chzbs) == true) { + $rzb += 10; + } + } elseif ($this->users[$i]['level'] == 1) { + if ($this->get_chanse(30 / 100 * $chzbs) == true) { + $rzb += 10; + } + } - if ($this->users[$i]['level'] > 3) { - if ($this->get_chanse(5 / 100 * $chzbs) == true) { - $rzb += 100; - } - } - } + if ($this->users[$i]['level'] > 3) { + if ($this->get_chanse(5 / 100 * $chzbs) == true) { + $rzb += 100; + } + } + } - if ($this->users[$i]['team'] == $this->info['team_win']) { - //выиграли - if ($this->users[$i]['level'] < 8) { - $rzb += 1; - } - } elseif ($this->users[$i]['team'] == 0) { - //ничья - if ($this->get_chanse(25 / 100 * $chzbs) == true && $this->users[$i]['battle_exp'] > 2) { - $rzb = rand(0, 1); - } else { - $rzb = 0; - } - } else { - //проиграли - if ($this->users[$i]['level'] >= 1) { - $rzb = 0; - } else { - if ($this->users[$i]['battle_exp'] < 3) { - $rzb = 0; - } elseif ($this->user[$i]['lose'] > $this->user[$i]['win']) { - if ($this->get_chanse(5 / 100 * $chzbs) == true) { - $rzb = rand(0, 1); - } else { - $rzb = 0; - } - } elseif ($this->get_chanse(10 / 100 * $chzbs) == true) { - $rzb = rand(0, 1); - } - } - $rzb = 0; - } + if ($this->users[$i]['team'] == $this->info['team_win']) { + //выиграли + if ($this->users[$i]['level'] < 8) { + $rzb += 1; + } + } elseif ($this->users[$i]['team'] == 0) { + //ничья + if ($this->get_chanse(25 / 100 * $chzbs) == true && $this->users[$i]['battle_exp'] > 2) { + $rzb = rand(0, 1); + } else { + $rzb = 0; + } + } else { + //проиграли + if ($this->users[$i]['level'] >= 1) { + $rzb = 0; + } else { + if ($this->users[$i]['battle_exp'] < 3) { + $rzb = 0; + } elseif ($this->user[$i]['lose'] > $this->user[$i]['win']) { + if ($this->get_chanse(5 / 100 * $chzbs) == true) { + $rzb = rand(0, 1); + } else { + $rzb = 0; + } + } elseif ($this->get_chanse(10 / 100 * $chzbs) == true) { + $rzb = rand(0, 1); + } + } + $rzb = 0; + } - if ($rex95 == 6 /*|| $this->users[$i]['exp'] == 12499 */) { - if ($this->users[$i]['battle_exp'] > 10) { - $rzb = rand(0, 1); - } else { - $rzb = 0; - } - } + if ($rex95 == 6 /*|| $this->users[$i]['exp'] == 12499 */) { + if ($this->users[$i]['battle_exp'] > 10) { + $rzb = rand(0, 1); + } else { + $rzb = 0; + } + } - if ($rzb > 0 && rand(0, 1000) <= 500) { - $rzb = rand(1, 3); - } - if ($rzb > 0) { - if ($this->stats[$i]['silver'] >= 5) { - $rzb = $rzb * 2; - } - mysql_query('UPDATE `users` SET `money4` = `money4` + "' . $rzb . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - $this->users[$i]['battle_text'] .= ' Вы получили ' . $u->zuby($rzb, 1) . ' за этот бой.'; - } - } - } + if ($rzb > 0 && rand(0, 1000) <= 500) { + $rzb = rand(1, 3); + } + if ($rzb > 0) { + if ($this->stats[$i]['silver'] >= 5) { + $rzb = $rzb * 2; + } + mysql_query('UPDATE `users` SET `money4` = `money4` + "' . $rzb . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + $this->users[$i]['battle_text'] .= ' Вы получили ' . $u->zuby($rzb, + 1) . ' за этот бой.'; + } + } + } - if ($this->info['priz'] > 0) { - //Призовой хаот - /* + if ($this->info['priz'] > 0) { + //Призовой хаот + /* [4754] 2-3 лвл = 1 жетон 4-5 лвл = 1 жетона @@ -2803,491 +3325,618 @@ class battleClass В случаи победы (х3) */ + if ($this->info['type'] == 33)//ТУТ приз хаот дроп + { + /* + $pld = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `inUser` = "'.$this->users[$i]['id'].'" LIMIT 1')); + if (isset($pld['id'])) + { + $u->addItem(4754,$pld['id'],''); + $u->addItem(4754,$pld['id'],''); + $u->addItem(4754,$pld['id'],''); + $u->addItem(4754,$pld['id'],''); + $u->addItem(4754,$pld['id'],''); + $this->users[$i]['battle_text'] .= ' За Героическое Сражение вы получаете Реликвия Ангела (x5). '; + mysql_query('UPDATE `users` SET `inUser` = "0" WHERE `id` = "'.$pld['id'].'" LIMIT 1'); + mysql_query('DELETE FROM `users` WHERE `id` = "'.$this->users[$i]['id'].'" LIMIT 1'); + mysql_query('DELETE FROM `stats` WHERE `id` = "'.$this->users[$i]['id'].'" LIMIT 1'); + mysql_query('DELETE FROM `items_users` WHERE `uid` = "'.$this->users[$i]['id'].'" LIMIT 100'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.$this->users[$i]['id'].'" LIMIT 100'); + } - if ($this->info['type'] == 33)//ТУТ приз хаот дроп - { + if($this->users[$i]['team']==$this->info['team_win'] && isset($pld['id'])) + { + if(rand(1,100)<=5) + { + $u->addItem(10020,$pld['id'],''); + $this->users[$i]['battle_text'] .= ' и Жетон Успеха. '; + } + + } + */ + } else { + $tmon = [ + 2 => 1, + 3 => 1, + 4 => 1, + 5 => 1, + 6 => 1, + 7 => 2, + 8 => 3, + 9 => 3, + 10 => 5, + 11 => 5, + ]; + $tmon = $tmon[$this->users[$i]['level']]; + // + $tmonc = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `battle` WHERE `id` IN ( SELECT `battle_id` FROM `battle_last` WHERE `uid` = "' . $this->users[$i]['id'] . '" ) AND `priz` > 0 AND `time_start` > "' . strtotime(date('d.m.Y')) . '"')); + $tmonc = $tmonc[0]; + // + if ($this->users[$i]['team'] == $this->info['team_win']) { + //При выигрыше увеличиваем + if ($tmonc < 1) { + $tmonc = 1; + } elseif ($tmonc > 96) { + $tmonc = 96; + } + $tmon = ($tmon * $tmonc); + } + // + $tmoni = 1; + while ($tmoni <= floor($tmon / 2)) { + $u->addItem(4754, $this->users[$i]['id'], ''); // + $tmoni++; + } + // + $this->users[$i]['battle_text'] .= ' За призовой хаот вы получаете Призовой Жетон (x' . floor($tmon / 2) . '). (Чем больше призовых хаотов вы примите за сутки, тем больше будет выдаваться жетонов при победе! Призовых хаотов посещено сегодня ' . ($tmonc) . '/96 )'; + // + unset($tmon, $tmoni); + } + } + //Снижение времени Право на подвиг Титул за победу в хаоте + if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $this->users[$i]['team'] == $this->info['team_win']) { + //ТУТ2 + $u->repexp_add($this->users[$i]['id'], 2); //Репутация за поб в хаоте +2 + $check = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `id_eff` = 478 AND `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = 0 ORDER BY `overType` DESC LIMIT 1;')); + if (isset($check['id'])) { + $urcheck = 10000; + if ($this->users[$i]['level'] == 8) { + $urcheck = 3000; + } elseif ($this->users[$i]['level'] == 9) { + $urcheck = 7000; + } elseif ($this->users[$i]['level'] == 10) { + $urcheck = 12000; + } elseif ($this->users[$i]['level'] >= 11) { + $urcheck = 18000; + } + + if ($this->users[$i]['battle_yron'] >= $urcheck) { + //UPDATE `eff_users` SET `timeUse` = '1555700000' WHERE `eff_users`.`id` = 31912807; + mysql_query('UPDATE `eff_users` SET `timeUse` = `timeUse` - 300 WHERE `id_eff`=478 AND `delete` = 0 AND `uid` =' . $this->users[$i]['id'] . ' LIMIT 1'); + $this->users[$i]['battle_text'] .= ' За победу в хаоте и нанесение урона в ' . $urcheck . ' и более вы получаете -5 мин. к праву на подвиг!'; + } + } + mysql_query('UPDATE `users_achiv` SET `vx`= `vx`+1 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); // + + } + //Награда за клан вар + if ($this->info['dungeon'] == 0 && $this->info['type'] == 250 && $this->users[$i]['team'] == $this->info['team_win']) { + mysql_query('UPDATE `users_achiv` SET `kw`= `kw`+1 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + if (date('w') == 0 || date('w') == 6 || date('w') == 4) { + $u->repexp_add($this->users[$i]['id'], 25); //Клановые войны(победа) 25 + } + } + //Награда за клан вар + if ($this->info['dungeon'] == 0 && $this->info['type'] == 99 && $this->users[$i]['team'] == $this->info['team_win']) { + if (date('w') == 0 || date('w') == 6 || date('w') == 5) { + $u->repexp_add($this->users[$i]['id'], 10); //Кровавые войны(победа) 10 + } + } + + //Новая выдача на трупожора + if ($this->info['dungeon'] == 0 && $this->info['type'] == 500 && $this->users[$i]['team'] == $this->info['team_win'] && $this->users[$i]['no_ip'] != 'trupojor' && $this->users[$i]['bot'] == 0) { + if ($this->users[$i]['level'] > 9) { + $mid = 903093; + } else { + $mid = 89489; + } + $mon = mysql_fetch_array(mysql_query('SELECT * FROM `aaa_monsters` WHERE `uid` = "' . $mid . '" LIMIT 1')); + + if ($this->users[$i]['battle_yron'] >= 2000) { + $ritem = rand(1, 100); + if ($ritem <= 20) { + $mon['win_itm'] = '4459@1'; + } elseif ($ritem <= 40) { + $mon['win_itm'] = '4460@1'; + } elseif ($ritem <= 60) { + $mon['win_itm'] = '4461@1'; + } elseif ($ritem <= 80) { + $mon['win_itm'] = '4462@1'; + } else { + $mon['win_itm'] = '4463@1'; + } + } elseif ($this->users[$i]['battle_yron'] >= 1500) { + $ritem = rand(1, 100); + if ($ritem <= 20) { + $mon['win_itm'] = '4459@1'; + } elseif ($ritem <= 40) { + $mon['win_itm'] = '4460@1'; + } elseif ($ritem <= 60) { + $mon['win_itm'] = '4461@1'; + } elseif ($ritem <= 80) { + $mon['win_itm'] = '4462@1'; + } else { + $mon['win_itm'] = '4463@1'; + } + } elseif ($this->users[$i]['battle_yron'] >= 1000) { + $ritem = rand(1, 100); + if ($ritem <= 25) { + $mon['win_itm'] = '4460@1'; + } elseif ($ritem <= 50) { + $mon['win_itm'] = '4461@1'; + } elseif ($ritem <= 75) { + $mon['win_itm'] = '4462@1'; + } else { + $mon['win_itm'] = '4463@1'; + } + } else { + $mon['win_itm'] = '4392@1'; + $timewait = 0; + } + if ($this->users[$i]['battle_yron'] > 0) { + mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","478","111","' . $this->users[$i]['id'] . '","Право на подвиг","pravonapodvig=1","' . time() . '")'); + } + mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("' . $this->users[$i]['id'] . '","' . (time() - $timewait) . '","capitalcity","' . $this->users[$i]['room'] . '","end_trup"," ","","")'); + mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","479","112","' . $u->info['id'] . '","Защита от нападения","zashitatk=1","' . time() . '")'); + $ritem = rand(1, 1000); + if ($ritem == 555) { + $mon['win_itm'] = $mon['win_itm'] . ',5022@1'; + } + // + $this->addGlobalItems($mid, $this->users[$i]['id'], $mon['win_itm'], $mon['win_eff'], + $mon['win_ico'], 1, $mon['win_money1'], $mon['win_money2']); //$mon['win_exp'] + + } + + if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $u->info['battle_yron'] >= 2000) //$u->info['battle_yron'] + { + //Реликвия Ангела ang_g + if ($this->users[$i]['team'] == $this->info['team_win']) { + //При выигрыше увеличиваем + $tmoni = 2; + } else { + $tmoni = 1; + } + + // + $tmon = $tmoni; + $effblago = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = ' . $this->users[$i]['id'] . ' AND `delete` = 0 AND `id_eff`= 414 LIMIT 1')); + if (isset ($effblago['id'])) { + $limitg = 50; + } else { + $limitg = 25; + } + while ($tmoni >= 1) { + if ($u->info['ang_g'] < $limitg) { + $u->addItem(4754, $this->users[$i]['id'], ''); + mysql_query('UPDATE `users` SET `ang_g`=`ang_g`+1 WHERE `id` =' . $this->users[$i]['id'] . ''); + } else { + $tmon--; + } + $tmoni--; + } + + if ($this->info['type'] != 33) { + $this->users[$i]['battle_text'] .= ' За хаот вы получаете Реликвия Ангела (' . $tmon . '). Всего [' . ($u->info['ang_g'] + $tmon) . '/' . $limitg . '] в день. '; + } + unset($tmon, $tmoni, $effblago, $limitg); + } - } else { + if ($this->info['razdel'] == 5 || $this->info['razdel'] == 4) { + if (date('d.m') == '31.10' || (date('m') == 11 && date('d') < 7)) { + //Хэллоуин 4504 + $this->users[$i]['battle_text'] .= ' Вы получаете Тыква (x1).'; + $u->addItem(4504, $this->users[$i]['id'], '|sudba=1'); + } + } - $tmon = [ - 2 => 1, - 3 => 1, - 4 => 1, - 5 => 1, - 6 => 1, - 7 => 2, - 8 => 3, - 9 => 3, - 10 => 5, - 11 => 5 - ]; - $tmon = $tmon[$this->users[$i]['level']]; - // - $tmonc = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `battle` WHERE `id` IN ( SELECT `battle_id` FROM `battle_last` WHERE `uid` = "' . $this->users[$i]['id'] . '" ) AND `priz` > 0 AND `time_start` > "' . strtotime(date('d.m.Y')) . '"')); - $tmonc = $tmonc[0]; - // - if ($this->users[$i]['team'] == $this->info['team_win']) { - //При выигрыше увеличиваем - if ($tmonc < 1) { - $tmonc = 1; - } elseif ($tmonc > 96) { - $tmonc = 96; - } - $tmon = ($tmon * $tmonc); + + //Добавляем воинственность + if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $this->users[$i]['exp'] >= 1500 /*($this->users[$i]['exp'] < 12499 || $this->users[$i]['exp'] > 12500)*/ + ) { + if ($this->users[$i]['battle_exp'] > 100 * $this->users[$i]['level']) { + $rzbvo = $this->users[$i]['battle_exp'] * 6 / 1000; + + if ($this->users[$i]['level'] == 8) { + if ($rzbvo >= 100) { + $rzbvo = 100; + } + } + if ($this->users[$i]['level'] == 9) { + if ($rzbvo >= 150) { + $rzbvo = 150; + } + } + if ($this->users[$i]['level'] == 10) { + if ($rzbvo >= 200) { + $rzbvo = 200; + } + } + if ($this->users[$i]['level'] == 11) { + if ($rzbvo >= 250) { + $rzbvo = 250; + } + } + if ($this->users[$i]['level'] == 12) { + if ($rzbvo >= 250) { + $rzbvo = 250; + } + } + + + /*if( $this->info['players_c'] > 4 ) { + $rzbvo = 2*$this->info['players_c']; + }*/ + if ($this->info['type'] != 33) { + $this->users[$i]['battle_text'] .= ' Вы получили ' . $rzbvo . ' воинственности за этот бой.'; + } + mysql_query('UPDATE `rep` SET `rep3` = `rep3` + "' . $rzbvo . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("' . $this->users[$i]['id'] . '","' . time() . '","capitalcity","' . $this->users[$i]['room'] . '","end_xaot"," ","' . $zadID . '","")'); + } + } + + if ($this->stats[$i]['hpNow'] >= 1) { + $this->stats[$i]['test_heal'] = mysql_fetch_array(mysql_query('SELECT SUM(`yrn`) FROM `battle_stat` WHERE `uid2` = "' . $this->users[$i]['id'] . '" AND `battle` = "' . $this->info['id'] . '" LIMIT 1')); + $this->stats[$i]['test_heal'] = $this->stats[$i]['test_heal'][0]; + $this->stats[$i]['test_start'] = mysql_fetch_array(mysql_query('SELECT `hpStart` FROM `battle_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `battle` = "' . $this->info['id'] . '" LIMIT 1')); + $this->stats[$i]['test_start'] = $this->stats[$i]['test_start']['hpStart']; + // + $this->stats[$i]['hpNow'] = ($this->stats[$i]['test_start'] - $this->stats[$i]['test_heal']); + if ($this->stats[$i]['hpNow'] < 1) { + $this->stats[$i]['hpNow'] = 1; + } + } else { + $this->stats[$i]['hpNow'] = 0; + } + /* + $this->stats[$i]['test_heal'] = ($this->stats[$i]['hpNow']-$this->stats[$i]['hpAll']) + $this->stats[$i]['test_heal']; + if($this->users[$i]['team']==$this->info['team_win']){ + //Обновляем НР после хила + $this->stats[$i]['hpNow'] -= $this->stats[$i]['test_heal']; + $this->users[$i]['hpNow'] = $this->stats[$i]['hpNow']; + if(floor($this->stats[$i]['hpNow']) < 0) { + $this->stats[$i]['hpNow'] = 0; } - // - $tmoni = 1; - while ($tmoni <= floor($tmon / 2)) { - $u->addItem(4754, $this->users[$i]['id'], ''); // - $tmoni++; - } - // - $this->users[$i]['battle_text'] .= ' За призовой хаот вы получаете Призовой Жетон (x' . floor($tmon / 2) . '). (Чем больше призовых хаотов вы примите за сутки, тем больше будет выдаваться жетонов при победе! Призовых хаотов посещено сегодня ' . ($tmonc) . '/96 )'; - // - unset($tmon, $tmoni); + }else{ + $this->stats[$i]['hpNow'] = 0; } - } - //Снижение времени Право на подвиг Титул за победу в хаоте - if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $this->users[$i]['team'] == $this->info['team_win']) { - //ТУТ2 - $u->repexp_add($this->users[$i]['id'], 2); //Репутация за поб в хаоте +2 - $check = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `id_eff` = 478 AND `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = 0 ORDER BY `overType` DESC LIMIT 1;')); - if (isset($check['id'])) { - $urcheck = 10000; - if ($this->users[$i]['level'] == 8) { - $urcheck = 3000; - } elseif ($this->users[$i]['level'] == 9) { - $urcheck = 7000; - } elseif ($this->users[$i]['level'] == 10) { - $urcheck = 12000; - } elseif ($this->users[$i]['level'] >= 11) { - $urcheck = 18000; - } + */ + unset($this->stats[$i]['test_heal']); - if ($this->users[$i]['battle_yron'] >= $urcheck) { - //UPDATE `eff_users` SET `timeUse` = '1555700000' WHERE `eff_users`.`id` = 31912807; - mysql_query('UPDATE `eff_users` SET `timeUse` = `timeUse` - 300 WHERE `id_eff`=478 AND `delete` = 0 AND `uid` =' . $this->users[$i]['id'] . ' LIMIT 1'); - $this->users[$i]['battle_text'] .= ' За победу в хаоте и нанесение урона в ' . $urcheck . ' и более вы получаете -5 мин. к праву на подвиг!'; - } + $this->users[$i]['last_b'] = $this->info['id']; //stats + $this->users[$i]['last_a'] = $act01; + $this->users[$i]['battle'] = -1; //users + $this->users[$i]['battle_yron'] = 0; //stats - } - mysql_query('UPDATE `users_achiv` SET `vx`= `vx`+1 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); // + $this->users[$i]['exp'] += $this->users[$i]['battle_exp']; //users - } - //Награда за клан вар - if ($this->info['dungeon'] == 0 && $this->info['type'] == 250 && $this->users[$i]['team'] == $this->info['team_win']) { - mysql_query('UPDATE `users_achiv` SET `kw`= `kw`+1 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - if (date('w') == 0 || date('w') == 6 || date('w') == 4) { - $u->repexp_add($this->users[$i]['id'], 25); //Клановые войны(победа) 25 - } - } - //Награда за клан вар - if ($this->info['dungeon'] == 0 && $this->info['type'] == 99 && $this->users[$i]['team'] == $this->info['team_win']) { - if (date('w') == 0 || date('w') == 6 || date('w') == 5) { - $u->repexp_add($this->users[$i]['id'], 10); //Кровавые войны(победа) 10 - } - } + /*if($this->stats[$i]['speeden']>2) { // Для восстановления энергии (получает максимум) + $this->users[$i]['enNow']+= $this->stats[$i]['enNow']; //users + $upd2 = mysql_query('UPDATE `stats` SET `enNow` = "'.$this->users[$i]['enNow'].'" WHERE `id` = "'.$this->users[$i]['id'].'" LIMIT 1'); + }*/ + //Добавляем клан опыт (Все кроме пещер) - //Новая выдача на трупожора - if ($this->info['dungeon'] == 0 && $this->info['type'] == 500 && $this->users[$i]['team'] == $this->info['team_win'] && $this->users[$i]['no_ip'] != 'trupojor' && $this->users[$i]['bot'] == 0) { - if ($this->users[$i]['level'] > 9) { - $mid = 903093; - } else { - $mid = 89489; - } - $mon = mysql_fetch_array(mysql_query('SELECT * FROM `aaa_monsters` WHERE `uid` = "' . $mid . '" LIMIT 1')); + if ($this->users[$i]['clan'] > 0) { + $cpr = 1; + if ($this->info['typeBattle'] == 9) { + $cpr = 25; + } elseif ($this->info['typeBattle'] == 50) { + $cpr = 65; + } + if ($this->stats[$i]['silver'] >= 5) { + $cpr = floor($cpr / 100 * 150); + } + mysql_query('UPDATE `clan` SET `exp` = `exp` + "' . round($this->users[$i]['battle_exp'] / 100 * $cpr) . '" WHERE `id` = "' . $this->users[$i]['clan'] . '" LIMIT 1'); + } - if ($this->users[$i]['battle_yron'] >= 2000) { - $ritem = rand(1, 100); - if ($ritem <= 20) { - $mon['win_itm'] = '4459@1'; - } elseif ($ritem <= 40) { - $mon['win_itm'] = '4460@1'; - } elseif ($ritem <= 60) { - $mon['win_itm'] = '4461@1'; - } elseif ($ritem <= 80) { - $mon['win_itm'] = '4462@1'; - } else { - $mon['win_itm'] = '4463@1'; - } + $this->users[$i]['battle_exp'] = 0; //stats - } elseif ($this->users[$i]['battle_yron'] >= 1500) { - $ritem = rand(1, 100); - if ($ritem <= 20) { - $mon['win_itm'] = '4459@1'; - } elseif ($ritem <= 40) { - $mon['win_itm'] = '4460@1'; - } elseif ($ritem <= 60) { - $mon['win_itm'] = '4461@1'; - } elseif ($ritem <= 80) { - $mon['win_itm'] = '4462@1'; - } else { - $mon['win_itm'] = '4463@1'; - } + if ($this->users[$i]['team'] == $this->info['team_win']) { + mysql_query('UPDATE `rep` SET `n_capitalcity` = `n_capitalcity` + ' . $this->users[$i]['bn_capitalcity'] . ' ,`n_demonscity` = `n_demonscity` + ' . $this->users[$i]['bn_demonscity'] . ' ,`n_demonscity` = `n_demonscity` + ' . $this->users[$i]['bn_suncity'] . ' WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + } - } elseif ($this->users[$i]['battle_yron'] >= 1000) { - $ritem = rand(1, 100); - if ($ritem <= 25) { - $mon['win_itm'] = '4460@1'; - } elseif ($ritem <= 50) { - $mon['win_itm'] = '4461@1'; - } elseif ($ritem <= 75) { - $mon['win_itm'] = '4462@1'; - } else { - $mon['win_itm'] = '4463@1'; - } - - } else { - $mon['win_itm'] = '4392@1'; - $timewait = 0; - } - if ($this->users[$i]['battle_yron'] > 0) { - mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","478","111","' . $this->users[$i]['id'] . '","Право на подвиг","pravonapodvig=1","' . time() . '")'); - } - mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("' . $this->users[$i]['id'] . '","' . (time() - $timewait) . '","capitalcity","' . $this->users[$i]['room'] . '","end_trup"," ","","")'); - mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","479","112","' . $u->info['id'] . '","Защита от нападения","zashitatk=1","' . time() . '")'); - $ritem = rand(1, 1000); - if ($ritem == 555) { - $mon['win_itm'] = $mon['win_itm'] . ',5022@1'; - } - // - $this->addGlobalItems($mid, $this->users[$i]['id'], $mon['win_itm'], $mon['win_eff'], $mon['win_ico'], 1, $mon['win_money1'], $mon['win_money2']); //$mon['win_exp'] - - } - - if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $u->info['battle_yron'] >= 2000) //$u->info['battle_yron'] - { - - - //Реликвия Ангела ang_g - if ($this->users[$i]['team'] == $this->info['team_win']) { - //При выигрыше увеличиваем - $tmoni = 2; - } else { - $tmoni = 1; - } - - // - $tmon = $tmoni; - $effblago = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = ' . $this->users[$i]['id'] . ' AND `delete` = 0 AND `id_eff`= 414 LIMIT 1')); - if (isset ($effblago['id'])) { - $limitg = 50; - } else { - $limitg = 25; - } - while ($tmoni >= 1) { - - if ($u->info['ang_g'] < $limitg) { - $u->addItem(4754, $this->users[$i]['id'], ''); - mysql_query('UPDATE `users` SET `ang_g`=`ang_g`+1 WHERE `id` =' . $this->users[$i]['id'] . ''); - } else { - $tmon--; - } - $tmoni--; - - } - - if ($this->info['type'] != 33) { - $this->users[$i]['battle_text'] .= ' За хаот вы получаете Реликвия Ангела (' . $tmon . '). Всего [' . ($u->info['ang_g'] + $tmon) . '/' . $limitg . '] в день. '; - } - unset($tmon, $tmoni, $effblago, $limitg); - } - - - if ($this->info['razdel'] == 5 || $this->info['razdel'] == 4) { - if (date('d.m') == '31.10' || (date('m') == 11 && date('d') < 7)) { - //Хэллоуин 4504 - $this->users[$i]['battle_text'] .= ' Вы получаете Тыква (x1).'; - $u->addItem(4504, $this->users[$i]['id'], '|sudba=1'); - } - } - - - //Добавляем воинственность - if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $this->users[$i]['exp'] >= 1500 /*($this->users[$i]['exp'] < 12499 || $this->users[$i]['exp'] > 12500)*/ - ) { - if ($this->users[$i]['battle_exp'] > 100 * $this->users[$i]['level']) { - $rzbvo = $this->users[$i]['battle_exp'] * 6 / 1000; - - if ($this->users[$i]['level'] == 8) { - if ($rzbvo >= 100) { - $rzbvo = 100; - } - } - if ($this->users[$i]['level'] == 9) { - if ($rzbvo >= 150) { - $rzbvo = 150; - } - } - if ($this->users[$i]['level'] == 10) { - if ($rzbvo >= 200) { - $rzbvo = 200; - } - } - if ($this->users[$i]['level'] == 11) { - if ($rzbvo >= 250) { - $rzbvo = 250; - } - } - if ($this->users[$i]['level'] == 12) { - if ($rzbvo >= 250) { - $rzbvo = 250; - } - } - - - if ($this->info['type'] != 33) { - $this->users[$i]['battle_text'] .= ' Вы получили ' . $rzbvo . ' воинственности за этот бой.'; - } - mysql_query('UPDATE `rep` SET `rep3` = `rep3` + "' . $rzbvo . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("' . $this->users[$i]['id'] . '","' . time() . '","capitalcity","' . $this->users[$i]['room'] . '","end_xaot"," ","' . $zadID . '","")'); - } - } - - if ($this->stats[$i]['hpNow'] >= 1) { - $this->stats[$i]['test_heal'] = mysql_fetch_array(mysql_query('SELECT SUM(`yrn`) FROM `battle_stat` WHERE `uid2` = "' . $this->users[$i]['id'] . '" AND `battle` = "' . $this->info['id'] . '" LIMIT 1')); - $this->stats[$i]['test_heal'] = $this->stats[$i]['test_heal'][0]; - $this->stats[$i]['test_start'] = mysql_fetch_array(mysql_query('SELECT `hpStart` FROM `battle_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `battle` = "' . $this->info['id'] . '" LIMIT 1')); - $this->stats[$i]['test_start'] = $this->stats[$i]['test_start']['hpStart']; - // - $this->stats[$i]['hpNow'] = ($this->stats[$i]['test_start'] - $this->stats[$i]['test_heal']); - if ($this->stats[$i]['hpNow'] < 1) { - $this->stats[$i]['hpNow'] = 1; - } - } else { - $this->stats[$i]['hpNow'] = 0; - } - unset($this->stats[$i]['test_heal']); - - $this->users[$i]['last_b'] = $this->info['id']; //stats - $this->users[$i]['last_a'] = $act01; - $this->users[$i]['battle'] = -1; //users - $this->users[$i]['battle_yron'] = 0; //stats - $this->users[$i]['exp'] += $this->users[$i]['battle_exp']; //users - - if ($this->users[$i]['clan'] > 0) { - $cpr = 1; - if ($this->info['typeBattle'] == 9) { - $cpr = 25; - } elseif ($this->info['typeBattle'] == 50) { - $cpr = 65; - } - if ($this->stats[$i]['silver'] >= 5) { - $cpr = floor($cpr / 100 * 150); - } - mysql_query('UPDATE `clan` SET `exp` = `exp` + "' . round($this->users[$i]['battle_exp'] / 100 * $cpr) . '" WHERE `id` = "' . $this->users[$i]['clan'] . '" LIMIT 1'); - } - - $this->users[$i]['battle_exp'] = 0; //stats - - if ($this->users[$i]['team'] == $this->info['team_win']) { - mysql_query('UPDATE `rep` SET `n_capitalcity` = `n_capitalcity` + ' . $this->users[$i]['bn_capitalcity'] . ' ,`n_demonscity` = `n_demonscity` + ' . $this->users[$i]['bn_demonscity'] . ' ,`n_demonscity` = `n_demonscity` + ' . $this->users[$i]['bn_suncity'] . ' WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - } - - //репутация - $this->users[$i]['bn_demonscity'] = 0; - $this->users[$i]['bn_capitalcity'] = 0; - $this->users[$i]['bn_suncity'] = 0; - //завершение эффектов с финишем - $spe = mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `file_finish` != "" AND `v1` = "priem" LIMIT 30'); - while ($ple = mysql_fetch_array($spe)) { - if (file_exists('../../_incl_data/class/priems/' . $ple['file_finish'] . '.php')) { - require('../../_incl_data/class/priems/' . $ple['file_finish'] . '.php'); - } - } - //обновляем данные - mysql_query('DELETE FROM `eff_users` WHERE `v1` = "priem" AND `uid` = "' . $this->users[$i]['id'] . '" LIMIT 50'); - if ($dnr == 1) { - if ($this->users[$i]['room'] == 370) { - $dies = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `dn` = "' . $this->users[$i]['dnow'] . '" AND `vars` = "dielaba" LIMIT 1')); - $dies = $dies[0]; - mysql_query('INSERT INTO `dungeon_actions` (`dn`,`uid`,`x`,`y`,`time`,`vars`,`vals`) VALUES ( + //репутация + $this->users[$i]['bn_demonscity'] = 0; + $this->users[$i]['bn_capitalcity'] = 0; + $this->users[$i]['bn_suncity'] = 0; + //завершение эффектов с финишем + $spe = mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `file_finish` != "" AND `v1` = "priem" LIMIT 30'); + while ($ple = mysql_fetch_array($spe)) { + if (file_exists('../../_incl_data/class/priems/' . $ple['file_finish'] . '.php')) { + require('../../_incl_data/class/priems/' . $ple['file_finish'] . '.php'); + } + } + //обновляем данные + mysql_query('DELETE FROM `eff_users` WHERE `v1` = "priem" AND `uid` = "' . $this->users[$i]['id'] . '" LIMIT 50'); + if ($dnr == 1) { + if ($this->users[$i]['room'] == 370) { + $dies = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `dn` = "' . $this->users[$i]['dnow'] . '" AND `vars` = "dielaba" LIMIT 1')); + $dies = $dies[0]; + mysql_query('INSERT INTO `dungeon_actions` (`dn`,`uid`,`x`,`y`,`time`,`vars`,`vals`) VALUES ( "' . $this->users[$i]['dnow'] . '","' . $this->users[$i]['id'] . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '","' . time() . '","dielaba","" )'); - } else { - $dies = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `dn` = "' . $this->users[$i]['dnow'] . '" AND `vars` = "die" LIMIT 1')); - $dies = $dies[0]; - mysql_query('INSERT INTO `dungeon_actions` (`dn`,`uid`,`x`,`y`,`time`,`vars`,`vals`) VALUES ( + } else { + $dies = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `dn` = "' . $this->users[$i]['dnow'] . '" AND `vars` = "die" LIMIT 1')); + $dies = $dies[0]; + mysql_query('INSERT INTO `dungeon_actions` (`dn`,`uid`,`x`,`y`,`time`,`vars`,`vals`) VALUES ( "' . $this->users[$i]['dnow'] . '","' . $this->users[$i]['id'] . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '","' . time() . '","die","" )'); - } - if ($dies < 2 || $this->info['dungeon'] == 15) { - // - $tshbn = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = 0 AND `item_id` = "4910" LIMIT 1')); - if (isset($tshbn['id'])) { - //выбрасываем шайбу - mysql_query('DELETE FROM `items_users` WHERE `id` = "' . $tshbn['id'] . '" LIMIT 1'); - // - mysql_query('INSERT INTO `dungeon_obj` ( + } + if ($dies < 2 || $this->info['dungeon'] == 15) { + // + $tshbn = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = 0 AND `item_id` = "4910" LIMIT 1')); + if (isset($tshbn['id'])) { + //выбрасываем шайбу + mysql_query('DELETE FROM `items_users` WHERE `id` = "' . $tshbn['id'] . '" LIMIT 1'); + // + mysql_query('INSERT INTO `dungeon_obj` ( `name`,`dn`,`x`,`y`,`img`,`delete`,`action`,`for_dn`, `type`,`w`,`h`,`s`,`s2`,`os1`,`os2`,`os3`,`os4`,`type2`,`top`,`left`,`date` ) VALUES ( "Шайба","' . $this->info['dn_id'] . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '","shaiba.png","0","fileact:15/shaiba","0", "0","120","220","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt1:69,rl1:-47,rt2:74,rl2:126,rt3:76,rl3:140,rt4:80,rl4:150}" )'); - // - } - //телепортируем в рестарт (координата 0х0) - $this->users[$i]['x'] = $this->users[$i]['res_x']; - $this->users[$i]['y'] = $this->users[$i]['res_y']; - $this->users[$i]['s'] = $this->users[$i]['res_s']; - $r_n = mysql_fetch_array(mysql_query('SELECT `name` FROM `room` WHERE `id` = "' . (int)$this->users[$i]['room'] . '" LIMIT 1')); - if ($this->users[$i]['room'] == 370) { - if ($this->users[$i]['sex'] == 0) { - $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб и находится в начале лабиринта'; - } else { - $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла и находится в начале лабиринта'; - } - } else { - if ($this->users[$i]['sex'] == 0) { - $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб и находится в комнате "' . $r_n['name'] . '"'; - } else { - $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла и находится в комнате "' . $r_n['name'] . '"'; - } - } - } elseif ($this->info['dungeon'] == 102) { - $nld = ''; - $lab = mysql_fetch_array(mysql_query('SELECT `id`,`users` FROM `laba_now` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1')); - if ($lab['users'] < 2) { - //Удаляем подземелье - mysql_query('DELETE FROM `laba_now` WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); - mysql_query('DELETE FROM `laba_map` WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); - mysql_query('DELETE FROM `laba_obj` WHERE `lib` = "' . $lab['id'] . '"'); - mysql_query('DELETE FROM `laba_act` WHERE `lib` = "' . $lab['id'] . '"'); - mysql_query('DELETE FROM `laba_itm` WHERE `lib` = "' . $lab['id'] . '"'); - } else { - $lab['users']--; - mysql_query('UPDATE `laba_now` SET `users` = "' . $lab['users'] . '" WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); - } - mysql_query('UPDATE `stats` SET `dnow` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - mysql_query('UPDATE `users` SET `room` = "369" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - //удаляем все предметы которые пропадают после выхода из пещеры - mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` < 1234567890 AND `inShop` = "0" AND (`dn_delete` = "1" OR `data` LIKE "%fromlaba=1%")'); - if ($this->users[$i]['login'] != '') { - if ($this->users[$i]['sex'] == 0) { - $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб без права на воскрешение и покидает подземелье' . $nld; - } else { - $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла без права на воскрешение и покидает подземелье' . $nld; - } - } - } else { - $tinf = mysql_fetch_array(mysql_query('SELECT `uid` FROM `dungeon_now` WHERE `id` = "' . $this->info['dn_id'] . '" LIMIT 1')); - $nld = ''; - if ($tinf['uid'] == $this->users[$i]['id']) { - $tinf = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dnow` = "' . $this->info['dn_id'] . '" AND `hpNow` >= 1 LIMIT 1')); - if (isset($tinf['id'])) { - $tinf = mysql_fetch_array(mysql_query('SELECT `id`,`login` FROM `users` WHERE `id` = "' . $tinf['id'] . '" LIMIT 1')); - $nld .= ', новым лидером становится "' . $tinf['login'] . '"'; - mysql_query('UPDATE `dungeon_now` SET `uid` = "' . $tinf['id'] . '" WHERE `id` = "' . $this->info['dn_id'] . '" LIMIT 1'); - } - } - $rooms = [ - 374 => 372, //ПТП (Кэпитал сити) - 189 => 188, //Водосток (Кэпитал сити) - 392 => 393, //Шахты (Кэпитал сити) + // + } + //телепортируем в рестарт (координата 0х0) + $this->users[$i]['x'] = $this->users[$i]['res_x']; + $this->users[$i]['y'] = $this->users[$i]['res_y']; + $this->users[$i]['s'] = $this->users[$i]['res_s']; + $r_n = mysql_fetch_array(mysql_query('SELECT `name` FROM `room` WHERE `id` = "' . (int)$this->users[$i]['room'] . '" LIMIT 1')); + if ($this->users[$i]['room'] == 370) { + if ($this->users[$i]['sex'] == 0) { + $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб и находится в начале лабиринта'; + } else { + $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла и находится в начале лабиринта'; + } + } else { + if ($this->users[$i]['sex'] == 0) { + $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб и находится в комнате "' . $r_n['name'] . '"'; + } else { + $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла и находится в комнате "' . $r_n['name'] . '"'; + } + } + } elseif ($this->info['dungeon'] == 102) { + $nld = ''; + $lab = mysql_fetch_array(mysql_query('SELECT `id`,`users` FROM `laba_now` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1')); + if ($lab['users'] < 2) { + //Удаляем подземелье + mysql_query('DELETE FROM `laba_now` WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `laba_map` WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `laba_obj` WHERE `lib` = "' . $lab['id'] . '"'); + mysql_query('DELETE FROM `laba_act` WHERE `lib` = "' . $lab['id'] . '"'); + mysql_query('DELETE FROM `laba_itm` WHERE `lib` = "' . $lab['id'] . '"'); + } else { + $lab['users']--; + mysql_query('UPDATE `laba_now` SET `users` = "' . $lab['users'] . '" WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); + } + mysql_query('UPDATE `stats` SET `dnow` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `room` = "369" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + //удаляем все предметы которые пропадают после выхода из пещеры + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` < 1234567890 AND `inShop` = "0" AND (`dn_delete` = "1" OR `data` LIKE "%fromlaba=1%")'); + if ($this->users[$i]['login'] != '') { + if ($this->users[$i]['sex'] == 0) { + $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб без права на воскрешение и покидает подземелье' . $nld; + } else { + $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла без права на воскрешение и покидает подземелье' . $nld; + } + } + } else { + $tinf = mysql_fetch_array(mysql_query('SELECT `uid` FROM `dungeon_now` WHERE `id` = "' . $this->info['dn_id'] . '" LIMIT 1')); + $nld = ''; + if ($tinf['uid'] == $this->users[$i]['id']) { + $tinf = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dnow` = "' . $this->info['dn_id'] . '" AND `hpNow` >= 1 LIMIT 1')); + if (isset($tinf['id'])) { + $tinf = mysql_fetch_array(mysql_query('SELECT `id`,`login` FROM `users` WHERE `id` = "' . $tinf['id'] . '" LIMIT 1')); + $nld .= ', новым лидером становится "' . $tinf['login'] . '"'; + mysql_query('UPDATE `dungeon_now` SET `uid` = "' . $tinf['id'] . '" WHERE `id` = "' . $this->info['dn_id'] . '" LIMIT 1'); + } + } + $rooms = [ + 374 => 372, //ПТП (Кэпитал сити) + 189 => 188, //Водосток (Кэпитал сити) + 392 => 393, //Шахты (Кэпитал сити) - 398 => 397, //Шахты (Ангелс сити) - 243 => 395, //Водосток (Ангелс сити) - 360 => 242, //Бездна (Ангелс сити) + 398 => 397, //Шахты (Ангелс сити) + 243 => 395, //Водосток (Ангелс сити) + 360 => 242, //Бездна (Ангелс сити) - 19 => 293 //Катакомбы - ]; - // $n_rm = $rooms[$this->users[$i]['room']]; - mysql_query('UPDATE `stats` SET `dnow` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - mysql_query('UPDATE `users` SET `room` = "321" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - //удаляем все предметы которые пропадают после выхода из пещеры - mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `dn_delete` = "1" LIMIT 1000'); - mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "1189" OR `item_id` = "4447" OR `item_id` = "1174") LIMIT 1000'); - if ($this->users[$i]['sex'] == 0) { - $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб без права на воскрешение и покидает подземелье' . $nld; - } else { - $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла без права на воскрешение и покидает подземелье' . $nld; - } + 19 => 293 //Катакомбы + ]; + // $n_rm = $rooms[$this->users[$i]['room']]; + mysql_query('UPDATE `stats` SET `dnow` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `room` = "321" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + //удаляем все предметы которые пропадают после выхода из пещеры + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `dn_delete` = "1" LIMIT 1000'); + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "1189" OR `item_id` = "4447" OR `item_id` = "1174") LIMIT 1000'); + if ($this->users[$i]['sex'] == 0) { + $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб без права на воскрешение и покидает подземелье' . $nld; + } else { + $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла без права на воскрешение и покидает подземелье' . $nld; + } + } + if ($rtxt != '') { + mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[$i]['city'] . "','" . $this->users[$i]['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); + } + } + + mysql_query('UPDATE `users` SET `login2` = "" WHERE `battle` = "' . $this->info['id'] . '"'); + $upd = mysql_query('UPDATE `users` SET `login2` = "", `money` = "' . $this->users[$i]['money'] . '", `money2` = "' . $this->users[$i]['money2'] . '",`win` = "' . $this->users[$i]['win'] . '",`lose` = "' . $this->users[$i]['lose'] . '",`nich` = "' . $this->users[$i]['nich'] . '",`battle` = "-1" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + + if ($u->info['id'] == $this->users[$i]['id']) { + $u->info['battle_text'] = $this->users[$i]['battle_text']; + } + + $upd2 = mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->stats[$i]['hpNow'] . '",`mpNow` = "' . $this->stats[$i]['mpNow'] . '",`bn_capitalcity` = 0,`bn_demonscity` = 0,`smena` = 3,`tactic7` = "-100",`x`="' . $this->users[$i]['x'] . '",`y`="' . $this->users[$i]['y'] . '",`priems_z`="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",`last_pr`="0",`tactic1`="0",`tactic2`="0",`tactic3`="0",`tactic4`="0",`tactic5`="0",`tactic6`="0.00000000",`tactic7`="10",`exp` = "' . $this->users[$i]['exp'] . '",`battle_exp` = "' . $this->users[$i]['battle_exp'] . '",`battle_text` = "' . $this->users[$i]['battle_text'] . '",`battle_yron` = "0",`enemy` = "0",`last_b`="' . $this->info['id'] . '",`regHP` = "' . time() . '",`regMP` = "' . time() . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + if ($this->info['turnir'] == 0) { + //пишем в чат + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$i]['city'] . "','" . $this->users[$i]['room'] . "','','" . $this->users[$i]['login'] . "','" . $this->users[$i]['battle_text'] . "','-1','6','0')"); + } else { + mysql_query('UPDATE `turnirs` SET `winner` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['turnir'] . '" LIMIT 1'); + } + //завершаем сам бой + $upd3 = mysql_query('UPDATE `battle` SET `time_over` = "' . time() . '",`team_win` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + + //Если это БС (старая версия) + /*$tinf = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_now` WHERE `id` = "'.$this->info['dn_id'].'" LIMIT 1')); + if(isset($tinf['id']) && $tinf['bsid']>0) + { + $bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `city` = "'.$u->info['city'].'" AND `id` = "'.$tinf['bsid'].'" AND `time_start` = "'.$tinf['time_start'].'" LIMIT 1')); + if(isset($bs['id'])) + { + $u->bsfinish($bs,$this->users,$this->info); } - if ($rtxt != '') { - mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[$i]['city'] . "','" . $this->users[$i]['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); - } - } + }*/ + // Жрать хочет + if ($this->users[$i]['animal'] > 0) { + $a = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `id` = "' . $this->users[$i]['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); + if (isset($a['id'])) { + if ($a['eda'] < 1) { + $u->send('', $this->users[$i]['room'], $this->users[$i]['city'], '', + $this->users[$i]['login'], '' . $a['name'] . ' нуждается в еде...', + time(), 6, 0, 0, 0, 1); + } + } + } + mysql_query('UPDATE `stats` SET `battle_text` = "",`last_b`="0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('UPDATE `battle_users` SET `finish` = 1 WHERE `uid` = "' . $this->users[$i]['id'] . '"'); + //mysql_query('DELETE FROM `battle_logs` WHERE `battle` = "'.$this->info['id'].'"'); + $this->saveLogs($this->info['id'], 'all'); + if ($u->info['battle'] != 0 && !isset($u->info['battle_lsto'])) { + echo ''; + } + } else { + //echo 'Поединок завершился, но вы поймали баг с 0-ым опытом, сообщите Администрации!'; + } + } + //unlink($lock_file); + mysql_query('UPDATE `battle` SET `testfinish` = "0" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + } else { + sleep(2); + mysql_query('UPDATE `battle` SET `testfinish` = "0" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + } + mysql_query('UNLOCK TABLES'); + } - mysql_query('UPDATE `users` SET `login2` = "" WHERE `battle` = "' . $this->info['id'] . '"'); - $upd = mysql_query('UPDATE `users` SET `login2` = "", `money` = "' . $this->users[$i]['money'] . '", `money2` = "' . $this->users[$i]['money2'] . '",`win` = "' . $this->users[$i]['win'] . '",`lose` = "' . $this->users[$i]['lose'] . '",`nich` = "' . $this->users[$i]['nich'] . '",`battle` = "-1" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + //Выдаем предметы + //$this->addGlobalItems($this->user[$i]['id'],$this->user[$j]['id'],$mon['win_itm'],$mon['win_eff'],$mon['win_ico'],$mon['win_exp'],$mon['win_money'],$mon['win_money2']); + public $ainm = []; - if ($u->info['id'] == $this->users[$i]['id']) { - $u->info['battle_text'] = $this->users[$i]['battle_text']; - } - - $upd2 = mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->stats[$i]['hpNow'] . '",`mpNow` = "' . $this->stats[$i]['mpNow'] . '",`bn_capitalcity` = 0,`bn_demonscity` = 0,`smena` = 3,`tactic7` = "-100",`x`="' . $this->users[$i]['x'] . '",`y`="' . $this->users[$i]['y'] . '",`priems_z`="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",`last_pr`="0",`tactic1`="0",`tactic2`="0",`tactic3`="0",`tactic4`="0",`tactic5`="0",`tactic6`="0.00000000",`tactic7`="10",`exp` = "' . $this->users[$i]['exp'] . '",`battle_exp` = "' . $this->users[$i]['battle_exp'] . '",`battle_text` = "' . $this->users[$i]['battle_text'] . '",`battle_yron` = "0",`enemy` = "0",`last_b`="' . $this->info['id'] . '",`regHP` = "' . time() . '",`regMP` = "' . time() . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - if ($this->info['turnir'] == 0) { - //пишем в чат - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$i]['city'] . "','" . $this->users[$i]['room'] . "','','" . $this->users[$i]['login'] . "','" . $this->users[$i]['battle_text'] . "','-1','6','0')"); - } else { - mysql_query('UPDATE `turnirs` SET `winner` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['turnir'] . '" LIMIT 1'); - } - //завершаем сам бой - $upd3 = mysql_query('UPDATE `battle` SET `time_over` = "' . time() . '",`team_win` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); - - // Жрать хочет - if ($this->users[$i]['animal'] > 0) { - $a = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `id` = "' . $this->users[$i]['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); - if (isset($a['id'])) { - if ($a['eda'] < 1) { - $u->send('', $this->users[$i]['room'], $this->users[$i]['city'], '', $this->users[$i]['login'], '' . $a['name'] . ' нуждается в еде...', time(), 6, 0, 0, 0, 1); - } - } - } - mysql_query('UPDATE `stats` SET `battle_text` = "",`last_b`="0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - mysql_query('UPDATE `battle_users` SET `finish` = 1 WHERE `uid` = "' . $this->users[$i]['id'] . '"'); - //mysql_query('DELETE FROM `battle_logs` WHERE `battle` = "'.$this->info['id'].'"'); - $this->saveLogs($this->info['id'], 'all'); - if ($u->info['battle'] != 0 && !isset($u->info['battle_lsto'])) { - echo ''; - } - - } - } - //unlink($lock_file); - mysql_query('UPDATE `battle` SET `testfinish` = "0" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); - } else { - sleep(2); - mysql_query('UPDATE `battle` SET `testfinish` = "0" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); - } - mysql_query('UNLOCK TABLES'); - } - - //Выдаем предметы - //$this->addGlobalItems($this->user[$i]['id'],$this->user[$j]['id'],$mon['win_itm'],$mon['win_eff'],$mon['win_ico'],$mon['win_exp'],$mon['win_money'],$mon['win_money2']); - public $ainm = []; - - public function addGlobalItems($bid, $uid, $itm, $eff, $ico, $exp, $cr, $ecr) - { - global $u; - // - //Выпадение дропа на ЦП - if ($bid == 1008) { - //Старый Новый Год - $jit = 0; - $iit = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `online` > ' . (time() - 120) . '')); - $iit = floor($iit[0] / 20); - $iit = rand(1, $iit); - while ($jit < $iit) { - if (rand(0, 100) < 50) { - $svtk = [ - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1461, 1462, 1463, - 4037, 4038, 4039, 4040, - 911, 1172, 1173, 2142, 2141, 2143, 2870, 2144, 1000, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000 - ]; - $svtk = $svtk[rand(0, count($svtk) - 1)]; - if ($svtk == 1000) { - mysql_query('INSERT INTO `items_local` + public function addGlobalItems($bid, $uid, $itm, $eff, $ico, $exp, $cr, $ecr) + { + global $u; + // + //Выпадение дропа на ЦП + if ($bid == 1008) { + //Старый Новый Год + $jit = 0; + $iit = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `online` > ' . (time() - 120) . '')); + $iit = floor($iit[0] / 20); + $iit = rand(1, $iit); + while ($jit < $iit) { + if (rand(0, 100) < 50) { + $svtk = [ + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1461, + 1462, + 1463, + 4037, + 4038, + 4039, + 4040, + 911, + 1172, + 1173, + 2142, + 2141, + 2143, + 2870, + 2144, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + ]; + $svtk = $svtk[rand(0, count($svtk) - 1)]; + if ($svtk == 1000) { + mysql_query('INSERT INTO `items_local` ( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES ( "' . $this->users[$this->uids[$uid]]['room'] . '", @@ -3332,8 +3981,8 @@ class battleClass "' . $this->users[$this->uids[$uid]]['login'] . '", "1" )'); - } - mysql_query('INSERT INTO `items_local` + } + mysql_query('INSERT INTO `items_local` ( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES ( "' . $this->users[$this->uids[$uid]]['room'] . '", @@ -3343,19 +3992,19 @@ class battleClass "' . $this->users[$this->uids[$uid]]['login'] . '", "1" )'); - } - $jit++; - } - unset($svtk); - } elseif ($bid == 1007) { - //Хэллоуин, Тыквоголовый CAPITAL CITY - $jit = 0; - $iit = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `online` > ' . (time() - 120) . '')); - $iit = floor($iit[0] / 20); - $iit = rand(1, $iit); - while ($jit < $iit) { - if (rand(0, 100) < 50) { - mysql_query('INSERT INTO `items_local` + } + $jit++; + } + unset($svtk); + } elseif ($bid == 1007) { + //Хэллоуин, Тыквоголовый CAPITAL CITY + $jit = 0; + $iit = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `online` > ' . (time() - 120) . '')); + $iit = floor($iit[0] / 20); + $iit = rand(1, $iit); + while ($jit < $iit) { + if (rand(0, 100) < 50) { + mysql_query('INSERT INTO `items_local` ( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES ( "' . $this->users[$this->uids[$uid]]['room'] . '", @@ -3365,13 +4014,13 @@ class battleClass "' . $this->users[$this->uids[$uid]]['login'] . '", "1" )'); - } - $jit++; - } - } elseif ($bid == 1006) { - //Трупожор CAPITAL CITY - if (rand(0, 100) < 10) { - mysql_query('INSERT INTO `items_local` + } + $jit++; + } + } elseif ($bid == 1006) { + //Трупожор CAPITAL CITY + if (rand(0, 100) < 10) { + mysql_query('INSERT INTO `items_local` ( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES ( "' . $this->users[$this->uids[$uid]]['room'] . '", @@ -3381,11 +4030,11 @@ class battleClass "' . $this->users[$this->uids[$uid]]['login'] . '", "1" )'); - } - } elseif ($bid == 1000) { - //Трупожор CAPITAL CITY - //if( rand(0,100) < 10 ) { - mysql_query('INSERT INTO `items_local` + } + } elseif ($bid == 1000) { + //Трупожор CAPITAL CITY + //if( rand(0,100) < 10 ) { + mysql_query('INSERT INTO `items_local` ( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES ( "' . $this->users[$this->uids[$uid]]['room'] . '", @@ -3395,11 +4044,11 @@ class battleClass "' . $this->users[$this->uids[$uid]]['login'] . '", "1" )'); - //} - } elseif ($bid == 1001) { - //Трупожор CAPITAL CITY - //if( rand(0,100) < 10 ) { - mysql_query('INSERT INTO `items_local` + //} + } elseif ($bid == 1001) { + //Трупожор CAPITAL CITY + //if( rand(0,100) < 10 ) { + mysql_query('INSERT INTO `items_local` ( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES ( "' . $this->users[$this->uids[$uid]]['room'] . '", @@ -3409,11 +4058,11 @@ class battleClass "' . $this->users[$this->uids[$uid]]['login'] . '", "1" )'); - //} - } elseif ($bid == 1002) { - //Трупожор CAPITAL CITY - //if( rand(0,100) < 10 ) { - mysql_query('INSERT INTO `items_local` + //} + } elseif ($bid == 1002) { + //Трупожор CAPITAL CITY + //if( rand(0,100) < 10 ) { + mysql_query('INSERT INTO `items_local` ( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES ( "' . $this->users[$this->uids[$uid]]['room'] . '", @@ -3423,11 +4072,11 @@ class battleClass "' . $this->users[$this->uids[$uid]]['login'] . '", "1" )'); - //} - } elseif ($bid == 1003) { - //Трупожор CAPITAL CITY - //if( rand(0,100) < 10 ) { - mysql_query('INSERT INTO `items_local` + //} + } elseif ($bid == 1003) { + //Трупожор CAPITAL CITY + //if( rand(0,100) < 10 ) { + mysql_query('INSERT INTO `items_local` ( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES ( "' . $this->users[$this->uids[$uid]]['room'] . '", @@ -3437,11 +4086,11 @@ class battleClass "' . $this->users[$this->uids[$uid]]['login'] . '", "1" )'); - //} - } elseif ($bid == 1004) { - //Трупожор CAPITAL CITY - //if( rand(0,100) < 10 ) { - mysql_query('INSERT INTO `items_local` + //} + } elseif ($bid == 1004) { + //Трупожор CAPITAL CITY + //if( rand(0,100) < 10 ) { + mysql_query('INSERT INTO `items_local` ( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES ( "' . $this->users[$this->uids[$uid]]['room'] . '", @@ -3451,40 +4100,43 @@ class battleClass "' . $this->users[$this->uids[$uid]]['login'] . '", "1" )'); - //} - } - // - if ($exp >= 0) { - $this->users[$this->uids[$uid]]['battle_exp'] += round($exp * $this->users[$this->uids[$uid]]['battle_yron'] / $this->stats[$this->uids[$bid]]['hpAll']); - mysql_query('UPDATE `stats` SET `battle_exp` = "' . mysql_real_escape_string($this->users[$this->uids[$uid]]['battle_exp']) . '" WHERE `id` = "' . mysql_real_escape_string($uid) . '" LIMIT 1'); - } - // - if ($cr != '' && $cr > 0) { - if ($this->stats[$this->uids[$uid]]['hpNow'] > 0) { - mysql_query('UPDATE `users` SET `money` = (`money` + ' . mysql_real_escape_string($cr) . ') WHERE `id` = "' . mysql_real_escape_string($uid) . '" LIMIT 1'); - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы получили кредиты: " . mysql_real_escape_string($cr) . " кр.','-1','6','0')"); - } - } - // - if ($ecr != '' && $ecr > 0) { - if ($this->stats[$this->uids[$uid]]['hpNow'] > 0) { - - $this->users[$this->uids[$uid]]['money2'] += $ecr; - //$sleptime=rand(1,20); - //usleep($sleptime*100000); - $resulttp = mysql_query('UPDATE `users` SET `money2` = (`money2` + ' . mysql_real_escape_string($ecr) . ') WHERE `id` = "' . $this->users[$this->uids[$uid]]['id'] . '" LIMIT 1'); - if (!$resulttp) { - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Трупожор был пуст!!!','-1','6','0')"); - $u->addDelo(4, $this->users[$this->uids[$uid]]['id'], '"System.battle": (В бою трупожор), ПУСТ!!! ', time(), $this->users[$this->uids[$uid]]['city'], 'System.battle', 0, 0); - } else { - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы получили Евро-кредиты: " . mysql_real_escape_string($ecr) . " екр.','-1','6','0')"); - $u->addDelo(4, $this->users[$this->uids[$uid]]['id'], '"System.battle": Персонаж получил ' . $ecr . ' ЕКР (В бою трупожор), сейчас: ' . $this->users[$this->uids[$uid]]['money2'] . ' ЕКР', time(), $this->users[$this->uids[$uid]]['city'], 'System.battle', 0, 0); - } - } - } - // - if ($ico != '') { - /* + //} + } + // + if ($exp >= 0) { + $this->users[$this->uids[$uid]]['battle_exp'] += round($exp * $this->users[$this->uids[$uid]]['battle_yron'] / $this->stats[$this->uids[$bid]]['hpAll']); + mysql_query('UPDATE `stats` SET `battle_exp` = "' . mysql_real_escape_string($this->users[$this->uids[$uid]]['battle_exp']) . '" WHERE `id` = "' . mysql_real_escape_string($uid) . '" LIMIT 1'); + } + // + if ($cr != '' && $cr > 0) { + if ($this->stats[$this->uids[$uid]]['hpNow'] > 0) { + mysql_query('UPDATE `users` SET `money` = (`money` + ' . mysql_real_escape_string($cr) . ') WHERE `id` = "' . mysql_real_escape_string($uid) . '" LIMIT 1'); + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы получили кредиты: " . mysql_real_escape_string($cr) . " кр.','-1','6','0')"); + } + } + // + if ($ecr != '' && $ecr > 0) { + if ($this->stats[$this->uids[$uid]]['hpNow'] > 0) { + $this->users[$this->uids[$uid]]['money2'] += $ecr; + //$sleptime=rand(1,20); + //usleep($sleptime*100000); + $resulttp = mysql_query('UPDATE `users` SET `money2` = (`money2` + ' . mysql_real_escape_string($ecr) . ') WHERE `id` = "' . $this->users[$this->uids[$uid]]['id'] . '" LIMIT 1'); + if (!$resulttp) { + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Трупожор был пуст!!!','-1','6','0')"); + $u->addDelo(4, $this->users[$this->uids[$uid]]['id'], + '"System.battle": (В бою трупожор), ПУСТ!!! ', time(), + $this->users[$this->uids[$uid]]['city'], 'System.battle', 0, 0); + } else { + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы получили Евро-кредиты: " . mysql_real_escape_string($ecr) . " екр.','-1','6','0')"); + $u->addDelo(4, $this->users[$this->uids[$uid]]['id'], + '"System.battle": Персонаж получил ' . $ecr . ' ЕКР (В бою трупожор), сейчас: ' . $this->users[$this->uids[$uid]]['money2'] . ' ЕКР', + time(), $this->users[$this->uids[$uid]]['city'], 'System.battle', 0, 0); + } + } + } + // + if ($ico != '') { + /* 0(тип, 1 - значок, 2 - подвиг)@ 1(время в минутах)@ 2(название картинки)@ @@ -3496,43 +4148,43 @@ class battleClass 8(плюсует значок 0 или 1)@ 9(удаляем прошлый значок 0 or 1) */ - $i = 0; - $txt = ''; - $ico = explode('#', $ico); - while ($i < count($ico)) { - $ico_e = explode('@', $ico[$i]); - if (isset($ico_e[3])) { - // - $add = 1; - if ($ico_e[4] == 1 && floor($this->stats[$this->uids[$uid]]['hpNow']) < 1) { - $add = 0; - } - if ($add == 1) { - $ins = false; - if ($ico_e[8] == 0) { - $ins = true; - if ($ico_e[9] == 1) { - mysql_query('DELETE FROM `users_ico` WHERE `uid` = "' . mysql_real_escape_string($uid) . '" AND `img` = "' . mysql_real_escape_string($ico_e[2]) . '"'); - } - } else { - $old_ico = mysql_fetch_array(mysql_query('SELECT `id` FROM `users_ico` WHERE `uid` = "' . mysql_real_escape_string($uid) . '" AND (`endTime` > "' . time() . '" OR `endTime` = 0) AND `img` = "' . mysql_real_escape_string($ico_e[2]) . '" LIMIT 1')); - if (!isset($old_ico['id'])) { - $ins = true; - } else { - if ($old_ico['id'] > 0) { - $txt .= ', "' . $ico_e[3] . ' (Обновление)"'; - mysql_query('UPDATE `users_ico` SET `x` = `x` + 1,`endTime` = "' . mysql_real_escape_string(time() + $ico_e[1] * 60) . '" WHERE `id` = "' . $old_ico['id'] . '" LIMIT 1'); - } else { - $ins = true; - } - } - unset($old_ico); - } - if ($ins == true) { - if ($ico_e[9] == 1) { - mysql_query('DELETE FROM `users_ico` WHERE `uid` = "' . mysql_real_escape_string($uid) . '" AND `img` = "' . mysql_real_escape_string($ico_e[2]) . '"'); - } - mysql_query('INSERT INTO `users_ico` (`uid`,`time`,`text`,`img`,`endTime`,`type`,`bonus`) VALUES ( + $i = 0; + $txt = ''; + $ico = explode('#', $ico); + while ($i < count($ico)) { + $ico_e = explode('@', $ico[$i]); + if (isset($ico_e[3])) { + // + $add = 1; + if ($ico_e[4] == 1 && floor($this->stats[$this->uids[$uid]]['hpNow']) < 1) { + $add = 0; + } + if ($add == 1) { + $ins = false; + if ($ico_e[8] == 0) { + $ins = true; + if ($ico_e[9] == 1) { + mysql_query('DELETE FROM `users_ico` WHERE `uid` = "' . mysql_real_escape_string($uid) . '" AND `img` = "' . mysql_real_escape_string($ico_e[2]) . '"'); + } + } else { + $old_ico = mysql_fetch_array(mysql_query('SELECT `id` FROM `users_ico` WHERE `uid` = "' . mysql_real_escape_string($uid) . '" AND (`endTime` > "' . time() . '" OR `endTime` = 0) AND `img` = "' . mysql_real_escape_string($ico_e[2]) . '" LIMIT 1')); + if (!isset($old_ico['id'])) { + $ins = true; + } else { + if ($old_ico['id'] > 0) { + $txt .= ', "' . $ico_e[3] . ' (Обновление)"'; + mysql_query('UPDATE `users_ico` SET `x` = `x` + 1,`endTime` = "' . mysql_real_escape_string(time() + $ico_e[1] * 60) . '" WHERE `id` = "' . $old_ico['id'] . '" LIMIT 1'); + } else { + $ins = true; + } + } + unset($old_ico); + } + if ($ins == true) { + if ($ico_e[9] == 1) { + mysql_query('DELETE FROM `users_ico` WHERE `uid` = "' . mysql_real_escape_string($uid) . '" AND `img` = "' . mysql_real_escape_string($ico_e[2]) . '"'); + } + mysql_query('INSERT INTO `users_ico` (`uid`,`time`,`text`,`img`,`endTime`,`type`,`bonus`) VALUES ( "' . mysql_real_escape_string($uid) . '", "' . time() . '", "' . mysql_real_escape_string($ico_e[3]) . '", @@ -3541,1065 +4193,1115 @@ class battleClass "' . mysql_real_escape_string($ico_e[0]) . '", "' . mysql_real_escape_string($ico_e[6]) . '" )'); - $txt .= ', "' . $ico_e[3] . '"'; + $txt .= ', "' . $ico_e[3] . '"'; + } + } + // + } + $i++; + } + if ($txt != '') { + $txt = ltrim($txt, ', '); + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы совершили подвиг: " . mysql_real_escape_string($txt) . "','-1','6','0')"); + } + } + // + if ($itm != '') { + $i = 0; + $txt = ''; + $itm = explode(',', $itm); + while ($i < count($itm)) { + $itm_e = explode('@', $itm[$i]); + if ($itm_e[0] > 0) { + $j = 0; + while ($j < $itm_e[1]) { + $u->addItem($itm_e[0], $uid, '|' . $itm_e[2]); + $j++; + } + if (!isset($this->ainm[$itm_e[0]])) { + $this->ainm[$itm_e[0]] = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . mysql_real_escape_string($itm_e[0]) . '" LIMIT 1')); + } + if (isset($this->ainm[$itm_e[0]]['id'])) { + //Добавляем текст о добавлении предмета + $txt .= ', ' . $this->ainm[$itm_e[0]]['name'] . ''; + if ($itm_e[1] > 1) { + $txt .= ' (x' . $itm_e[1] . ')'; + } + } + } + $i++; + } + if ($txt != '') { + $txt = ltrim($txt, ', '); + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы получили предметы: " . mysql_real_escape_string($txt) . "','-1','6','0')"); + } + } + // + } + + //Проводим удар + public function addNewAtack() + { + global $u; + if (!isset($this->ga[$u->info['id']][$u->info['enemy']])) { + if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] > 0) { + /*$us = $this->stats[$this->uids[$u->info['id']]]; + $i = 1; $no = 0; + if($us['weapon1']!=1 && $us['weapon2']==1) + { + $uz['zona'] += 1; + } + while($i<=$uz['zona']) + { + if($this->uAtc['a'][$i]==0) + { + $no = 1; } - } - // - } - $i++; - } - if ($txt != '') { - $txt = ltrim($txt, ', '); - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы совершили подвиг: " . mysql_real_escape_string($txt) . "','-1','6','0')"); - } - } - // - if ($itm != '') { - $i = 0; - $txt = ''; - $itm = explode(',', $itm); - while ($i < count($itm)) { - $itm_e = explode('@', $itm[$i]); - if ($itm_e[0] > 0) { - $j = 0; - while ($j < $itm_e[1]) { - $u->addItem($itm_e[0], $uid, '|' . $itm_e[2]); - $j++; - } - if (!isset($this->ainm[$itm_e[0]])) { - $this->ainm[$itm_e[0]] = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . mysql_real_escape_string($itm_e[0]) . '" LIMIT 1')); - } - if (isset($this->ainm[$itm_e[0]]['id'])) { - //Добавляем текст о добавлении предмета - $txt .= ', ' . $this->ainm[$itm_e[0]]['name'] . ''; - if ($itm_e[1] > 1) { - $txt .= ' (x' . $itm_e[1] . ')'; - } - } - } - $i++; - } - if ($txt != '') { - $txt = ltrim($txt, ', '); - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы получили предметы: " . mysql_real_escape_string($txt) . "','-1','6','0')"); - } - } - // - } + $i++; + }*/ + $us = $this->stats[$this->uids[$u->info['id']]]; + $i = 1; + $no = 0; - //Проводим удар - public function addNewAtack() - { - global $u; - if (!isset($this->ga[$u->info['id']][$u->info['enemy']])) { - if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] > 0) { - $us = $this->stats[$this->uids[$u->info['id']]]; - $i = 1; - $no = 0; - - while ($i <= $us['zona']) { - if ($this->uAtc['a'][$i] == 0) { - $no = 1; - } - $i++; - } + while ($i <= $us['zona']) { + if ($this->uAtc['a'][$i] == 0) { + $no = 1; + } + $i++; + } - if ($this->uAtc['b'] == 0) { - $no = 1; - } + if ($this->uAtc['b'] == 0) { + $no = 1; + } - if ($no == 0) { - //наносим удар - if ($u->info['enemy'] > 0) { + if ($no == 0) { + //наносим удар + if ($u->info['enemy'] > 0) { + if (!isset($this->ga[$u->info['enemy']][$u->info['id']])) { + if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] >= 1 && $this->stats[$this->uids[$u->info['enemy']]]['hpNow'] >= 1) { + //наносим новый удар + $a = $this->uAtc['a'][1] . '' . $this->uAtc['a'][2] . '' . $this->uAtc['a'][3] . '' . $this->uAtc['a'][4] . '' . $this->uAtc['a'][5]; + $b = $this->uAtc['b']; + mysql_query('DELETE FROM `battle_act` WHERE `battle` = "' . $this->info['id'] . '" AND ((`uid2` = "' . $u->info['id'] . '" AND `uid1` = "' . $u->info['enemy'] . '") OR (`uid1` = "' . $u->info['id'] . '" AND `uid2` = "' . $u->info['enemy'] . '")) LIMIT 2'); + $d = mysql_query('INSERT INTO `battle_act` (`battle`,`time`,`uid1`,`uid2`,`a1`,`b1`) VALUES ("' . $this->info['id'] . '","' . time() . '","' . $u->info['id'] . '","' . $u->info['enemy'] . '","' . $a . '","' . $b . '")'); + if (!$d) { + $this->e = 'Не удалось нанести удар по противнику...'; + } else { + $this->ga[$u->info['id']][$u->info['enemy']] = mysql_insert_id(); + } + } + } else { + //отвечаем на удар противника + if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] >= 1 && $this->stats[$this->uids[$u->info['enemy']]]['hpNow'] >= 1) { + if (isset($this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['id'])) { + $this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['a2'] = $this->uAtc['a'][1] . '' . $this->uAtc['a'][2] . '' . $this->uAtc['a'][3] . '' . $this->uAtc['a'][4] . '' . $this->uAtc['a'][5]; + $this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['b2'] = $this->uAtc['b']; + $this->startAtack($this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['id']); + } + } + } + } else { + //ожидание хода противника (нет подходящего противника) - if (!isset($this->ga[$u->info['enemy']][$u->info['id']])) { - if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] >= 1 && $this->stats[$this->uids[$u->info['enemy']]]['hpNow'] >= 1) { - //наносим новый удар - $a = $this->uAtc['a'][1] . '' . $this->uAtc['a'][2] . '' . $this->uAtc['a'][3] . '' . $this->uAtc['a'][4] . '' . $this->uAtc['a'][5]; - $b = $this->uAtc['b']; - mysql_query('DELETE FROM `battle_act` WHERE `battle` = "' . $this->info['id'] . '" AND ((`uid2` = "' . $u->info['id'] . '" AND `uid1` = "' . $u->info['enemy'] . '") OR (`uid1` = "' . $u->info['id'] . '" AND `uid2` = "' . $u->info['enemy'] . '")) LIMIT 2'); - $d = mysql_query('INSERT INTO `battle_act` (`battle`,`time`,`uid1`,`uid2`,`a1`,`b1`) VALUES ("' . $this->info['id'] . '","' . time() . '","' . $u->info['id'] . '","' . $u->info['enemy'] . '","' . $a . '","' . $b . '")'); - if (!$d) { - $this->e = 'Не удалось нанести удар по противнику...'; - } else { - $this->ga[$u->info['id']][$u->info['enemy']] = mysql_insert_id(); - } - } - } else { - //отвечаем на удар противника - if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] >= 1 && $this->stats[$this->uids[$u->info['enemy']]]['hpNow'] >= 1) { - if (isset($this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['id'])) { - $this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['a2'] = $this->uAtc['a'][1] . '' . $this->uAtc['a'][2] . '' . $this->uAtc['a'][3] . '' . $this->uAtc['a'][4] . '' . $this->uAtc['a'][5]; - $this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['b2'] = $this->uAtc['b']; - $this->startAtack($this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['id']); - } - } - } - } else { - //ожидание хода противника (нет подходящего противника) + } + } else { + $this->e = 'Выберите зоны удара и блока'; + } + } else { + $this->e = 'Для вас поединок закончен, ожидайте пока завершат другие...'; + } + } else { + //уже ударили противника, ожидание хода - } - } else { - $this->e = 'Выберите зоны удара и блока'; - } - } else { - $this->e = 'Для вас поединок закончен, ожидайте пока завершат другие...'; - } - } else { - //уже ударили противника, ожидание хода + } + } - } - } + //Запускаем магические предметы, если в них что-то встроено + public function magicItems($uid1, $uid2, $end) + { + global $u, $priem, $c, $code; + if (isset($this->stats[$this->uids[$uid1]])) { + $i = 0; + while ($i < count($this->stats[$this->uids[$uid1]]['items'])) { + $itm = $this->stats[$this->uids[$uid1]]['items'][$i]; + if (isset($itm['id'])) { + $e = $u->lookStats($itm['data']); + if (isset($e['bm_a1'])) { + if ($end > 0) { + if (file_exists('../../_incl_data/class/priems/' . $e['bm_a1'] . '.end.php')) { + require('../../_incl_data/class/priems/' . $e['bm_a1'] . '.end.php'); + } + } else { + if (file_exists('../../_incl_data/class/priems/' . $e['bm_a1'] . '.php')) { + require('../../_incl_data/class/priems/' . $e['bm_a1'] . '.php'); + } + } + } + } + $i++; + } + unset($itm); + } + } - //Запускаем магические предметы, если в них что-то встроено - public function magicItems($uid1, $uid2, $end) - { - global $u, $priem, $c, $code; - if (isset($this->stats[$this->uids[$uid1]])) { - $i = 0; - while ($i < count($this->stats[$this->uids[$uid1]]['items'])) { - $itm = $this->stats[$this->uids[$uid1]]['items'][$i]; - if (isset($itm['id'])) { - $e = $u->lookStats($itm['data']); - if (isset($e['bm_a1'])) { - if ($end > 0) { - if (file_exists('../../_incl_data/class/priems/' . $e['bm_a1'] . '.end.php')) { - require('../../_incl_data/class/priems/' . $e['bm_a1'] . '.end.php'); - } - } else { - if (file_exists('../../_incl_data/class/priems/' . $e['bm_a1'] . '.php')) { - require('../../_incl_data/class/priems/' . $e['bm_a1'] . '.php'); - } - } - } - } - $i++; - } - unset($itm); - } - } + //Поглощение урона + public function testPog($uid, $yr) + { + //$yr = round($yr*1.25); + $yr2 = $yr; + if ($yr > 0) { + $testmana = false; + global $u, $priem; + $i = 0; + $ypg22 = 0; + while ($i < count($this->stats[$this->uids[$uid]]['set_pog2'])) { + $j = $this->stats[$this->uids[$uid]]['set_pog2'][$i]; + $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] = str_replace('add_pog2=' . $j['y'], + 'add_pog2=$', $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); + $dt3 = $u->lookStats($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); + if (isset($dt3['add_pog2mp'])) { + $priem->minMana($uid, round(round($yr2 / 100 * (100 - $dt3['add_pog2p'])) * $dt3['add_pog2mp'])); + } + $j['y'] -= $yr2; // осталось для поглощения + if (isset($dt3['add_pog2p'])) { + $yr2 = round($yr2 / 100 * (100 - $dt3['add_pog2p'])); + //echo '[Поглощаем: '.($dt3['add_pog2p']).'% за '.(round(round($yr2/100*(100-$dt3['add_pog2p']))*$dt3['add_pog2mp'])).'MP]'; + } + unset($dt3); + if ($j['y'] < 0 || ($this->stats[$this->uids[$uid]]['mpNow'] <= 0 && $dt3['add_pog2mp'] > 0)) { + $dt2 = $u->lookStats($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); + if (isset($dt2['endPog']) && $dt2['endPog'] == 1) { + //удаляем прием + $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['v2'] . '" LIMIT 1')); + $this->delPriem($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1], + $this->users[$this->uids[$uid]], 4, $uid); + $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1] = 'delete'; + } + unset($dt2); + $yr2 = -($j['y']); + $j['y'] = 0; + } - //Поглощение урона - public function testPog($uid, $yr) - { - //$yr = round($yr*1.25); - $yr2 = $yr; - if ($yr > 0) { - $testmana = false; - global $u, $priem; - $i = 0; - $ypg22 = 0; - while ($i < count($this->stats[$this->uids[$uid]]['set_pog2'])) { - $j = $this->stats[$this->uids[$uid]]['set_pog2'][$i]; - $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] = str_replace('add_pog2=' . $j['y'], 'add_pog2=$', $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); - $dt3 = $u->lookStats($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); - if (isset($dt3['add_pog2mp'])) { - $priem->minMana($uid, round(round($yr2 / 100 * (100 - $dt3['add_pog2p'])) * $dt3['add_pog2mp'])); - } - $j['y'] -= $yr2; // осталось для поглощения - if (isset($dt3['add_pog2p'])) { - $yr2 = round($yr2 / 100 * (100 - $dt3['add_pog2p'])); - //echo '[Поглощаем: '.($dt3['add_pog2p']).'% за '.(round(round($yr2/100*(100-$dt3['add_pog2p']))*$dt3['add_pog2mp'])).'MP]'; - } - unset($dt3); - if ($j['y'] < 0 || ($this->stats[$this->uids[$uid]]['mpNow'] <= 0 && $dt3['add_pog2mp'] > 0)) { - $dt2 = $u->lookStats($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); - if (isset($dt2['endPog']) && $dt2['endPog'] == 1) { - //удаляем прием - $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['v2'] . '" LIMIT 1')); - $this->delPriem($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1], $this->users[$this->uids[$uid]], 4, $uid); - $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1] = 'delete'; - } - unset($dt2); - $yr2 = -($j['y']); - $j['y'] = 0; - } + $this->stats[$this->uids[$uid]]['set_pog'][$i]['y'] = $j['y']; + $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] = str_replace('add_pog2=$', + 'add_pog2=' . $j['y'], $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); + $upd = mysql_query('UPDATE `eff_users` SET `data` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] . '" WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['id'] . '" LIMIT 1'); + if ($upd) { + } + $i++; + } + } + return $yr2; + } - $this->stats[$this->uids[$uid]]['set_pog'][$i]['y'] = $j['y']; - $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] = str_replace('add_pog2=$', 'add_pog2=' . $j['y'], $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); - $upd = mysql_query('UPDATE `eff_users` SET `data` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] . '" WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['id'] . '" LIMIT 1'); - if ($upd) { + public $rehodeff = []; - } - $i++; - } + //Поглощение урона + public $poglast = []; - } - return $yr2; - - } - - public $rehodeff = []; - - //Поглощение урона - public $poglast = []; - - public function testPogB($uid, $yr, $pliid, $test = 0) - { - //$yr = round($yr*1.25); - $yr2 = $yr; - $checktuman = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $uid . '" + public function testPogB($uid, $yr, $pliid, $test = 0) + { + //$yr = round($yr*1.25); + $yr2 = $yr; + $checktuman = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $uid . '" AND (`v2` = 273 OR `v2` = 286 OR `v2` = 287 OR `v2` = 288) AND `delete` =0 LIMIT 1')); //проверка на туманный образ - //if ( !isset($checktuman['id'])) - if ($yr > 0 && !isset($checktuman['id'])) { - $testmana = false; - global $u, $priem; - $i = 0; - $ypg22 = 0; - while ($i < count($this->stats[$this->uids[$uid]]['set_pog2'])) { - $j = $this->stats[$this->uids[$uid]]['set_pog2'][$i]; - if ($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['id'] == $pliid || $test == 1) { - $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] = str_replace('add_pog2=' . $j['y'], 'add_pog2=$', $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); - $dt3 = $u->lookStats($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); - // - $dt30 = 0; - $dt30 = floor($j['y'] / $yr2 * 100); - // - //echo '['.$j['y'].'|'.$dt3['add_pog2'].'|'.$yr2.' -> '.$dt30.'/'.$dt3['add_pog2p'].'] '; - // - if ($dt30 < $dt3['add_pog2p']) { - $dt3['add_pog2p'] = $dt30; - } - // - unset($dt30); - // - if (isset($dt3['add_pog2mp'])) { - if ((round(round($yr2 / 100 * (100 - $dt3['add_pog2p'])) * $dt3['add_pog2mp'])) > $this->stats[$this->uids[$uid]]['mpNow']) { - //не хватило маны, считаем сколько хватит % от поглощенного урона - $j['yhj'] = $this->stats[$this->uids[$uid]]['mpNow'] / (round(round($yr2 / 100 * (100 - $dt3['add_pog2p'])) * $dt3['add_pog2mp'])) * 100; - $j['yhj'] = floor($j['yhj']); //Сколько % мы можем поглотить - $dt3['add_pog2p'] = floor($dt3['add_pog2p'] / 100 * $j['yhj']); - //echo '[!]'; - } - if ($test == 1) { - $priem->minMana($uid, round(round($yr2 / 100 * $dt3['add_pog2p']) * $dt3['add_pog2mp'])); - } - } - if (!isset($this->poglast[$uid])) { - $this->poglast[$uid] = 0; - } - $this->poglast[$uid] += $yr2; - if ($test == 1) { - //$j['y'] -= $this->poglast[$uid]; // осталось для поглощения - $j['y'] -= round($this->poglast[$uid] / 100 * $dt3['add_pog2p']); - $priem->minMana($uid, round(round($this->poglast[$uid] / 100 * $dt3['add_pog2p']) * $dt3['add_pog2mp'])); - } - if (isset($dt3['add_pog2p'])) { - $yr2 = round($yr2 / 100 * (100 - $dt3['add_pog2p'])); - //echo '[Поглощаем: '.($dt3['add_pog2p']).'% ( '.$yr2/100*$dt3['add_pog2p'].' от '.$yr2.' ед. ) за '.(round(round($yr2/100*(100-$dt3['add_pog2p']))*$dt3['add_pog2mp'])).'MP , остаток МР: '.$this->stats[$this->uids[$uid]]['mpNow'].']'; - } - //unset($dt3); - if ($j['y'] < 0 || ($this->stats[$this->uids[$uid]]['mpNow'] <= 0 && $dt3['add_pog2mp'] > 0)) { - $dt2 = $u->lookStats($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); - if (isset($dt2['endPog']) && $dt2['endPog'] == 1) { - //удаляем прием - //Добавляем в лог - $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['v2'] . '" LIMIT 1')); - $this->delPriem($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1], $this->users[$this->uids[$uid]], 4, $uid); - $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1] = 'delete'; - } - unset($dt2); - //$yr2 += -($j['y']); - $j['y'] = 0; - } - $this->stats[$this->uids[$uid]]['set_pog'][$i]['y'] = $j['y']; - if (isset($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'])) { - $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] = str_replace('add_pog2=$', 'add_pog2=' . $j['y'], $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); - //echo '['.$j['id'].'!'.$this->stats[$this->uids[$uid]]['effects'][$j['id']-1]['id'].']'; - $upd = mysql_query('UPDATE `eff_users` SET `data` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] . '" WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['id'] . '" LIMIT 1'); - } - if ($upd) { - //echo '['.$j['y'].'->'.$yr2.']'; - //echo $this->stats[$this->uids[$uid]]['effects'][$j['id']-1]['data']; - } - if ($j['y'] - $this->poglast[$uid] + $yr2 < 0) { - //echo '['.$yr.']'; - $yr -= $yr + ($j['y'] - $this->poglast[$uid] + $yr2); - //echo '['.$this->poglast[$uid].','.$yr2.','.$j['y'].']'; - $yr2 = $yr; - $i = count($this->stats[$this->uids[$uid]]['set_pog2']) + 1; - } - } - $i++; - } - - } - unset($checktuman); - return $yr2; - - } - - - //Проверка как бьем - public function testHowRazmen($id) - { - $r = [ - 1 => 0, 2 => 0 - ]; - if (isset($this->atacks[$id])) { - if ($this->atacks[$id]['out1'] > 0 && $this->atacks[$id]['out2'] > 0) { - //игрок 1 пропустил ход - if ($this->atacks[$id]['out1'] == 100) { - //на магию - $r[1] = -2; - } else { - //время - $r[1] = -1; - } - //игрок 2 пропустил ход - if ($this->atacks[$id]['out2'] == 100) { - //на магию - $r[2] = -2; - } else { - //время - $r[2] = -1; - } - } elseif ($this->atacks[$id]['out1'] > 0) { - //игрок 1 пропустил ход - if ($this->atacks[$id]['out1'] == 100) { - //Пропустил ход на магию - $r[1] = -2; - } else { - //Пропустил ход по тайму - $r[1] = -1; - } - //игрок 2 бьет - $r[2] = 1; - } elseif ($this->atacks[$id]['out2'] > 0) { - //игрок 2 пропустил ход - if ($this->atacks[$id]['out2'] == 100) { - //Пропустил ход на магию - $r[2] = -2; - } else { - //Пропустил ход по тайму - $r[2] = -1; - } - //игрок 1 бьет - $r[1] = 1; - } else { - //размен игрок 1 бьет по игрок 2 , и игрок 2 бьет по игрок 1 - $r[1] = 1; - $r[2] = 1; - } - } - return $r; - } - - //Тестируем удары и т.д - public function newRazmen($id, $at = null) - { - - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; - - if ($this->atacks[$id]['out1'] == 0) { - $at[1] = $this->usersTestAtack($id, $uid1, $uid2); - } else { - $at[1] = [0]; - } - if ($this->atacks[$id]['out2'] == 0) { - $at[2] = $this->usersTestAtack($id, $uid2, $uid1); - } else { - $at[2] = [0]; - } - - return $at; - } - - //Игрок1 наносит удар Игрок2 - public function usersTestAtack($id, $uid1, $uid2) - { - $r = []; - $block = [ - 0, - 0, - 0, - 0, - 0, - 0 - ]; - - //Проверка блоков - $i = 1; - if ($uid1 == $this->atacks[$id]['uid1']) { - $a = 2; - $j = $this->atacks[$id]['b2']; - $atack = [ - 0, - $this->atacks[$id]['a1'][0], - $this->atacks[$id]['a1'][1], - $this->atacks[$id]['a1'][2], - $this->atacks[$id]['a1'][3], - $this->atacks[$id]['a1'][4] - ]; - } elseif ($uid2 == $this->atacks[$id]['uid1']) { - $a = 1; - $j = $this->atacks[$id]['b1']; - $atack = [ - 0, - $this->atacks[$id]['a2'][0], - $this->atacks[$id]['a2'][1], - $this->atacks[$id]['a2'][2], - $this->atacks[$id]['a2'][3], - $this->atacks[$id]['a2'][4] - ]; - } - if ($this->atacks[$id]['out' . $a] == 0) { - while ($i <= $this->stats[$this->uids[$uid2]]['zonb']) { - //echo '{'.$j.'}'; - $block[$j] = 1; - $j++; - if ($j > 5 || $j < 1) { - $j = 1; - } - $i++; - } - } - //Проверка ударов - $i = 1; - while ($i <= $this->stats[$this->uids[$uid1]]['zona']) { - if (!isset($atack[$i]) || $atack[$i] == 0) { - $atack[$i] = rand(1, 5); - } - if ($atack[$i] > 0) { - if ($block[$atack[$i]] == 1) { - //удар был заблокирован - // КУДА БИЛ , ТИП УДАРА - $r['atack'][] = [$atack[$i], 3, 0]; - } else { - //Удар прошел - // КУДА БИЛ , ТИП УДАРА - $r['atack'][] = [$atack[$i], 1, 0]; - } - } - $i++; - } - return $r; - } - - //Проверка зоны и блока - public function testRazmenblock1($id, $uid1, $uid2, $atack) - { - $r = false; - //Проверка блоков - $i = 1; - if ($uid1 == $this->atacks[$id]['uid1']) { - $j = $this->atacks[$id]['b2']; - } elseif ($uid2 == $this->atacks[$id]['uid1']) { - $j = $this->atacks[$id]['b1']; - } - if ($this->atacks[$id]['out2'] == 0) { - while ($i <= $this->stats[$this->uids[$uid2]]['zonb']) { - //echo '{'.$j.'}'; - $block[$j] = 1; - $j++; - if ($j > 5 || $j < 1) { - $j = 1; - } - $i++; - } - } - //Проверка ударов - if ($atack > 0) { - if ($block[$atack] == 1) { - //удар был заблокирован - // КУДА БИЛ , ТИП УДАРА - $r = true; - } else { - //Удар прошел - // КУДА БИЛ , ТИП УДАРА - $r = false; - } - } - return $r; - } - - //Первичный расчет мф. эффектов (пример) - public function firstRazmen($id, $at) - { - - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; - - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - } else { - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - - //Расчет уворота Цели от Атакующего - - - $i++; - } - - return $at; - } - - //Проверка ухода удара в игрока - public function yhod_user($uid1, $uid2, $type) - { - // 1 - кто бьет . 2 - в кого бьют . тип - //Удал летит прямо в противника - if ($this->import_user == 0) { - $r = $uid1; - $rand_user = false; - if ($type == 2) { - //Случайный персонаж из своей команды (в том числе игрок) - $i = 0; - while ($i < count($this->users)) { - if ($this->users[$i]['team'] == $this->users[$this->uids[$uid2]]['team']) { - $rand_user[] = $this->users[$i]['id']; - } - $i++; - } - } elseif ($type == 4) { - //Случайный персонаж, любой - $i = 0; - while ($i < count($this->users)) { - //if( $this->users[$i]['team'] == $this->users[$this->uids[$uid1]]['team'] ) { - $rand_user[] = $this->users[$i]['id']; - //} - $i++; - } - } elseif ($type == 5) { - //Случайный персонаж, любой (кроме игрока) - $i = 0; - while ($i < count($this->users)) { - if ($this->users[$i]['team'] == $this->users[$this->uids[$uid2]]['team'] && $uid2 != $this->users[$i]['id']) { - $rand_user[] = $this->users[$i]['id']; - } - $i++; - } - } elseif ($type == 6) { - //Случайный персонаж из команды противника - $i = 0; - while ($i < count($this->users)) { - if ($this->users[$i]['team'] != $this->users[$this->uids[$uid2]]['team']) { - $rand_user[] = $this->users[$i]['id']; - } - $i++; - } - } elseif ($type > 100) { - //Удар идет в конкретного игрока - if (!isset($this->users[$this->uids[$type]]) || $this->users[$this->uids[$type]]['id'] != $type) { - $r = $uid2; - } else { - $r = $type; - } - } - if ($rand_user != false && count($rand_user) > 0) { - $r = $rand_user[rand(0, (count($rand_user) - 1))]; - } - $this->import_user = $r; - } else { - $r = $this->import_user; - } - return $r; - } - - //Расчет уворота игроков - public function mf1Razmen($id, $at, $v, $pat = false, $rjd = 0) - { - - global $u; - - if ($pat == true) { - $pat = $at; - $at = $pat['p']; - } else { - unset($pat); - } - - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; - - if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { - $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); - } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { - $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); - } - - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - } else { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - - //Расчет уворота Цели (u2) от Атакующего (u1) - //print_r( $at[$i] ); - $j = 0; - $wp01 = 3; - $k01 = 0; - if ($rjd > 0) { - $j = $rjd - 1; - } - while ($j < count($at[$a]['atack']) && $j < 8) { - // КУДА БИЛ , ТИП УДАРА - if ($k01 == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) { - //Левая рука - $wp01 = 3; - $k01 = 1; - } else { - //Правая рука - if (isset($this->stats[$this->uids[$u1]]['wp14id']) && $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13) { - $wp01 = 14; - } else { - if (isset($this->stats[$this->uids[$u1]]['wp3id'])) { - $wp01 = 3; - } else { - //нет оружия - - $wp01 = 3; - } - } - $k01 = 0; - } - $witm01 = 0; - $witm_type01 = 0; - if ($wp01 > 0) { - $witm01 = $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp' . $wp01 . 'id']]; - $witm_data01 = $u->lookStats($witm01['data']); - //$r['wt'] = $witm['type']; - } - // - if ($at[$a]['atack'][$j][2] == $v) { - //if( $wp01 > 0 && $witm01['type'] == 20 ) { - // $tyv = $this->mfs( 2 , array( 'mf' => $this->stats[$this->uids[$u2]]['m4']*1.25 , 'amf' => $this->stats[$this->uids[$u1]]['m5'] + $witm_data01['sv_m5'] ) ); - //}else{ - $tyv = $this->mfs(2, ['u1' => $u1, 'u2' => $u2, 'mf' => $this->stats[$this->uids[$u2]]['m4'], 'amf' => (int)$this->stats[$this->uids[$u2]]['m15'], 'smf' => ($this->stats[$this->uids[$u1]]['m5'] + $witm_data01['sv_m5']), 'asmf' => $this->stats[$this->uids[$u1]]['m21']], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']); - //} - if ($tyv == 1 && $this->atacks[$id]['out' . $b] == 0) { - //увернулся, гад :) - $this->stats[$this->uids[$u1]]['nopryh'] = floor(0 + (int)$this->stats[$this->uids[$u1]]['nopryh']); - if (!isset($this->stats[$this->uids[$u1]]['nopryh']) || $this->stats[$this->uids[$u1]]['nopryh'] <= 0) { - $at[$a]['atack'][$j][1] = 2; - } else { - $this->stats[$this->uids[$u1]]['nopryh']--; - $this->stats[$this->uids[$u1]]['nopryh_act']++; - } - } - } - $j++; - } - - $i++; - } - unset($witm01, $witm_type01, $wp01, $k01); - - if (isset($pat) && $pat != false) { - $pat['p'] = $at; - $at = $pat; - } - - return $at; - } - - //Расчет крита игроков - public function mf2Razmen($id, $at, $v, $pat = false, $rjd = 0) - { - - global $u; - - if ($pat == true) { - $pat = $at; - $at = $pat['p']; - } else { - unset($pat); - } - - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; - - if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { - $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); - } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { - $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); - } - - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - } else { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - - //Расчет крита Атакующего (u1) по Цели (u2) - //print_r( $at[$i] ); - $j = 0; - $wp01 = 0; - $k01 = 0; - if ($rjd > 0) { - $j = $rjd - 1; - } - while ($j < count($at[$a]['atack']) && $j <= 8) { - // КУДА БИЛ , ТИП УДАРА - if ($k01 == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) { - //Левая рука - $wp01 = 3; - $k01 = 1; - } else { - //Правая рука - if (isset($this->stats[$this->uids[$u1]]['wp14id']) && $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13) { - $wp01 = 14; - } else { - if (isset($this->stats[$this->uids[$u1]]['wp3id'])) { - $wp01 = 3; - } else { - //нет оружия - $wp01 = 3; - } - } - $k01 = 0; - } - $witm01 = 0; - $witm_type01 = 0; - if ($wp01 > 0) { - $witm01 = $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp' . $wp01 . 'id']]; - $witm_data01 = $u->lookStats($witm01['data']); - //$r['wt'] = $witm['type']; - } - // - //if( $at[$a]['atack'][$j][2] == $v ) { - if ($this->mfs(1, ['u1' => $u1, 'u2' => $u2, 'mf' => $this->stats[$this->uids[$u1]]['m1'] + $witm_data01['sv_m1'], 'amf' => $this->stats[$this->uids[$u1]]['m14'], 'smf' => $this->stats[$this->uids[$u2]]['m2'], 'aamf1' => (int)$this->stats[$this->uids[$u2]]['enemy_am1']], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']) == 1) { - //кританул, гад :) - if ($at[$a]['atack'][$j][1] == 3) { - //в блок - $at[$a]['atack'][$j][1] = 4; //Тут тест - } elseif ($at[$a]['atack'][$j][1] != 2 && $at[$a]['atack'][$j][1] != 6 && $at[$a]['atack'][$j][1] != 7 && $at[$a]['atack'][$j][1] != 8) { - //обычный крит - $at[$a]['atack'][$j][1] = 5; - } else { - $at[$a]['atack'][$j][1] = 1; - } - } - //} - $j++; - } - - $i++; - } - unset($witm01, $witm_type01, $k01, $wp01); - - if (isset($pat) && $pat != false) { - $pat['p'] = $at; - $at = $pat; - } - - return $at; - } - - //Расчет парирования игроков - public function mf3Razmen($id, $at, $v, $pat = false, $rjd = 0) - { - - if ($pat == true) { - $pat = $at; - $at = $pat['p']; - } else { - unset($pat); - } - - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; - - if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { - $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); - } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { - $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); - } - - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - } else { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - - //Расчет парирования Цели (u2) от Атакующего (u1) - //print_r( $at[$i] ); - $j = 0; - if ($rjd > 0) { - $j = $rjd - 1; - } - while ($j < count($at[$a]['atack']) && $j < 8) { - // КУДА БИЛ , ТИП УДАРА - if ((!isset($this->stats[$this->uids[$u2]]['no_pr1']) || $this->stats[$this->uids[$u2]]['no_pr1'] == 0) && $at[$a]['atack'][$j][2] == $v) { - if ($this->mfs(3, ['u1' => $u1, 'u2' => $u2, '1' => $this->stats[$this->uids[$u2]]['m7'], '2' => $this->stats[$this->uids[$u1]]['m7']], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']) == 1 && $this->atacks[$id]['out' . $b] == 0) { - //Парировал, гад :) - $this->stats[$this->uids[$u1]]['nopryh'] = floor(0 + (int)$this->stats[$this->uids[$u1]]['nopryh']); - if ((!isset($this->stats[$this->uids[$u1]]['nopryh']) || $this->stats[$this->uids[$u1]]['nopryh'] == 0) && $this->stats[$this->uids[$u1]]['nopryh_act'] < 1) { - $at[$a]['atack'][$j][1] = 6; - $this->stats[$this->uids[$u1]]['nopryh']--; - $this->stats[$this->uids[$u1]]['nopryh_act']++; - } - } - } - $j++; - } - - $i++; - } - - if (isset($pat) && $pat != false) { - $pat['p'] = $at; - $at = $pat; - } - - return $at; - } - - //Расчет блока щитом игроков - public function mf4Razmen($id, $at, $v, $pat = false, $rjd = 0) - { - - if ($pat == true) { - $pat = $at; - $at = $pat['p']; - } else { - unset($pat); - } - - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; - - if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { - $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); - } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { - $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); - } - - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - } else { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if ($this->stats[$this->uids[$u2]]['sheld1'] > 0) { - //Расчет блока щитом Цели (u2) от Атакующего (u1) - //print_r( $at[$i] ); - $j = 0; - while ($j < count($at[$a]['atack']) && $j < 8) { - // КУДА БИЛ , ТИП УДАРА - if ($at[$a]['atack'][$j][2] == $v) { - if ($this->mfs(5, ($this->stats[$this->uids[$u2]]['m8'] / 2 + $this->stats[$this->uids[$u2]]['m18']), $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']) == 1 && $this->atacks[$id]['out' . $b] == 0) { - //блокировал щитом, гад :) - /*if( !isset($this->stats[$this->uids[$u1]]['nopryh']) || $this->stats[$this->uids[$u1]]['nopryh'] == 0 ) {*/ - $at[$a]['atack'][$j][1] = 7; - // $this->stats[$this->uids[$u1]]['nopryh']--; - // $this->stats[$this->uids[$u1]]['nopryh_act']++; - // } - } - } - $j++; - } - } - $i++; - } - - if (isset($pat) && $pat != false) { - $pat['p'] = $at; - $at = $pat; - } - - return $at; - } - - //Расчет контрудара игроков - public function mf5Razmen($id, $at, $v, $rjd = 0) - { - global $u; - - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; - - if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { - $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); - } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { - $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); - } - - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - } else { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - - //Расчет контрудара Цели (u2) по Атакующему (u1) - //print_r( $at[$i] ); - $j = 0; - if ($rjd > 0) { - $j = $rjd - 1; - } - while ($j < count($at[$a]['atack']) && $j < 8) { - // КУДА БИЛ , ТИП УДАРА - if ($at[$a]['atack'][$j][2] == $v) { - if ($at[$a]['atack'][$j][1] == 2) { - if ($this->mfs(6, ['u1' => $u1, 'u2' => $u2, 'a' => $this->stats[$this->uids[$u2]]['m6'], 'b' => $this->stats[$this->uids[$u1]]['m6']], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']) == 1) { - //контрудар, гад :) - $at[$a]['atack'][$j][1] = 8; - $rnd_a = rand(1, 5); - $rjd = count($at[$b]['atack']); - if ($this->testRazmenblock1($id, $u2, $u1, $rnd_a) == false) { - $at[$b]['atack'][] = [$rnd_a, 1, 0, 1]; // 3 , 0 , 1 - //$at[$b]['atack'][] = $at[$b]['atack'][(count($at[$b]['atack'])-1)]; // 3 , 0 , 1 - } else { - $at[$b]['atack'][] = [$rnd_a, 3, 0, 1]; // 3 , 0 , 1 - //$at[$b]['atack'][] = $at[$b]['atack'][(count($at[$b]['atack'])-1)]; // 3 , 0 , 1 - } - $at = $this->contrRestart($id, $at, 1, $rjd); - } - } - } - $j++; - } - - $i++; - } - - return $at; - } - - //Просмотр (для админов) - public function seeRazmen($id, $at) - { - $r = ''; - - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; - - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - } else { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - - if (!isset($at[$a]['atack'])) { - $r .= 'u1 пропустил свой ход'; - } else { - $j = 0; - while ($j < count($at[$a]['atack']) && $j < 8) { - if ($at[$a]['atack'][$j][1] == 1) { - //u1 ударил обычным ударом u2 - $r .= 'u1 ударил обычным ударом u2'; - } elseif ($at[$a]['atack'][$j][1] == 2) { - //u2 увернулся от u1 - $r .= 'u2 увернулся от u1'; - } elseif ($at[$a]['atack'][$j][1] == 3) { - //u2 заблокировал удар u1 - $r .= 'u2 заблокировал удар u1'; - } elseif ($at[$a]['atack'][$j][1] == 4) { - //u1 пробил блок u2 критом - $r .= 'u1 пробил блок u2 критом'; - } elseif ($at[$a]['atack'][$j][1] == 5) { - //u1 ударил критическим ударом u2 - $r .= 'u1 ударил критическим ударом u2'; - } elseif ($at[$a]['atack'][$j][1] == 6) { - //u2 парировал удар u1 - $r .= 'u2 парировал удар u1'; - } elseif ($at[$a]['atack'][$j][1] == 7) { - //u2 блокировал щитом удар u1 - $r .= 'u2 блокировал щитом удар u1'; - } elseif ($at[$a]['atack'][$j][1] == 8) { - //u2 увернулся от удара u1 и нанес по нему контрудар - $r .= 'u2 увернулся от удара u1 и нанес по нему контрудар'; - } - if ($at[$a]['atack'][$j][3] == 1) { - $r .= ' (контрудар)'; - } - if (isset($at[$a]['atack'][$j]['yron'])) { - $r .= ' ' . $at[$a]['atack'][$j]['yron']['r'] . ''; - if ($at[$a]['atack'][$j]['yron']['w'] == 3) { - $r .= ' (правая рука)'; - } elseif ($at[$a]['atack'][$j]['yron']['w'] == 14) { - $r .= ' (левая рука)'; - } - } - if (isset($at[$a]['atack'][$j]['yron']['hp'])) { - $r .= ' [' . floor($at[$a]['atack'][$j]['yron']['hp']) . '/' . floor($at[$a]['atack'][$j]['yron']['hpAll']) . ']'; - } - $r .= ',
'; - $j++; - } - } - - $r = str_replace('u1', '' . $this->users[$this->uids[$u1]]['login'] . '', $r); - $r = str_replace('u2', '' . $this->users[$this->uids[$u2]]['login'] . '', $r); - - $r .= '|
'; - $i++; - } - - return $r; - } - - //Выделение из лог текста - public function addlt($a, $id, $s, $rnd) - { - global $log_text; - if ($rnd == null) { - $rnd = rand(0, (count($log_text[$s][$id]) - 1)); - } - return '{' . $a . 'x' . $id . 'x' . $rnd . '}'; - } - - //Добавляем статистику - public function addNewStat($stat) - { - if (isset($stat[1])) { - mysql_query('INSERT INTO `battle_stat` + //if ( !isset($checktuman['id'])) + if ($yr > 0 && !isset($checktuman['id'])) { + $testmana = false; + global $u, $priem; + $i = 0; + $ypg22 = 0; + while ($i < count($this->stats[$this->uids[$uid]]['set_pog2'])) { + $j = $this->stats[$this->uids[$uid]]['set_pog2'][$i]; + if ($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['id'] == $pliid || $test == 1) { + $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] = str_replace('add_pog2=' . $j['y'], + 'add_pog2=$', $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); + $dt3 = $u->lookStats($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); + // + $dt30 = 0; + $dt30 = floor($j['y'] / $yr2 * 100); + // + //echo '['.$j['y'].'|'.$dt3['add_pog2'].'|'.$yr2.' -> '.$dt30.'/'.$dt3['add_pog2p'].'] '; + // + if ($dt30 < $dt3['add_pog2p']) { + $dt3['add_pog2p'] = $dt30; + } + // + unset($dt30); + // + if (isset($dt3['add_pog2mp'])) { + if ((round(round($yr2 / 100 * (100 - $dt3['add_pog2p'])) * $dt3['add_pog2mp'])) > $this->stats[$this->uids[$uid]]['mpNow']) { + //не хватило маны, считаем сколько хватит % от поглощенного урона + $j['yhj'] = $this->stats[$this->uids[$uid]]['mpNow'] / (round(round($yr2 / 100 * (100 - $dt3['add_pog2p'])) * $dt3['add_pog2mp'])) * 100; + $j['yhj'] = floor($j['yhj']); //Сколько % мы можем поглотить + $dt3['add_pog2p'] = floor($dt3['add_pog2p'] / 100 * $j['yhj']); + //echo '[!]'; + } + if ($test == 1) { + $priem->minMana($uid, round(round($yr2 / 100 * $dt3['add_pog2p']) * $dt3['add_pog2mp'])); + } + } + if (!isset($this->poglast[$uid])) { + $this->poglast[$uid] = 0; + } + $this->poglast[$uid] += $yr2; + if ($test == 1) { + //$j['y'] -= $this->poglast[$uid]; // осталось для поглощения + $j['y'] -= round($this->poglast[$uid] / 100 * $dt3['add_pog2p']); + $priem->minMana($uid, + round(round($this->poglast[$uid] / 100 * $dt3['add_pog2p']) * $dt3['add_pog2mp'])); + } + if (isset($dt3['add_pog2p'])) { + $yr2 = round($yr2 / 100 * (100 - $dt3['add_pog2p'])); + //echo '[Поглощаем: '.($dt3['add_pog2p']).'% ( '.$yr2/100*$dt3['add_pog2p'].' от '.$yr2.' ед. ) за '.(round(round($yr2/100*(100-$dt3['add_pog2p']))*$dt3['add_pog2mp'])).'MP , остаток МР: '.$this->stats[$this->uids[$uid]]['mpNow'].']'; + } + //unset($dt3); + if ($j['y'] < 0 || ($this->stats[$this->uids[$uid]]['mpNow'] <= 0 && $dt3['add_pog2mp'] > 0)) { + $dt2 = $u->lookStats($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); + if (isset($dt2['endPog']) && $dt2['endPog'] == 1) { + //удаляем прием + //Добавляем в лог + $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['v2'] . '" LIMIT 1')); + $this->delPriem($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1], + $this->users[$this->uids[$uid]], 4, $uid); + $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1] = 'delete'; + } + unset($dt2); + //$yr2 += -($j['y']); + $j['y'] = 0; + } + $this->stats[$this->uids[$uid]]['set_pog'][$i]['y'] = $j['y']; + if (isset($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'])) { + $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] = str_replace('add_pog2=$', + 'add_pog2=' . $j['y'], $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); + //echo '['.$j['id'].'!'.$this->stats[$this->uids[$uid]]['effects'][$j['id']-1]['id'].']'; + $upd = mysql_query('UPDATE `eff_users` SET `data` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] . '" WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['id'] . '" LIMIT 1'); + } + if ($upd) { + //echo '['.$j['y'].'->'.$yr2.']'; + //echo $this->stats[$this->uids[$uid]]['effects'][$j['id']-1]['data']; + } + if ($j['y'] - $this->poglast[$uid] + $yr2 < 0) { + //echo '['.$yr.']'; + $yr -= $yr + ($j['y'] - $this->poglast[$uid] + $yr2); + //echo '['.$this->poglast[$uid].','.$yr2.','.$j['y'].']'; + $yr2 = $yr; + $i = count($this->stats[$this->uids[$uid]]['set_pog2']) + 1; + } + } + $i++; + } + } + unset($checktuman); + return $yr2; + } + + + //Проверка как бьем + public function testHowRazmen($id) + { + $r = [ + 1 => 0, + 2 => 0, + ]; + if (isset($this->atacks[$id])) { + if ($this->atacks[$id]['out1'] > 0 && $this->atacks[$id]['out2'] > 0) { + //игрок 1 пропустил ход + if ($this->atacks[$id]['out1'] == 100) { + //на магию + $r[1] = -2; + } else { + //время + $r[1] = -1; + } + //игрок 2 пропустил ход + if ($this->atacks[$id]['out2'] == 100) { + //на магию + $r[2] = -2; + } else { + //время + $r[2] = -1; + } + } elseif ($this->atacks[$id]['out1'] > 0) { + //игрок 1 пропустил ход + if ($this->atacks[$id]['out1'] == 100) { + //Пропустил ход на магию + $r[1] = -2; + } else { + //Пропустил ход по тайму + $r[1] = -1; + } + //игрок 2 бьет + $r[2] = 1; + } elseif ($this->atacks[$id]['out2'] > 0) { + //игрок 2 пропустил ход + if ($this->atacks[$id]['out2'] == 100) { + //Пропустил ход на магию + $r[2] = -2; + } else { + //Пропустил ход по тайму + $r[2] = -1; + } + //игрок 1 бьет + $r[1] = 1; + } else { + //размен игрок 1 бьет по игрок 2 , и игрок 2 бьет по игрок 1 + $r[1] = 1; + $r[2] = 1; + } + } + return $r; + } + + //Тестируем удары и т.д + public function newRazmen($id, $at = null) + { + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + if ($this->atacks[$id]['out1'] == 0) { + $at[1] = $this->usersTestAtack($id, $uid1, $uid2); + } else { + //echo '['. $this->users[$this->uids[$uid1]]['login'] .' пропустил ход]'; + $at[1] = [0]; + } + if ($this->atacks[$id]['out2'] == 0) { + $at[2] = $this->usersTestAtack($id, $uid2, $uid1); + } else { + //echo '['. $this->users[$this->uids[$uid2]]['login'] .' пропустил ход]'; + $at[2] = [0]; + } + + return $at; + } + + //Игрок1 наносит удар Игрок2 + public function usersTestAtack($id, $uid1, $uid2) + { + $r = []; + $block = [ + 0, + 0, + 0, + 0, + 0, + 0, + ]; + + //Проверка блоков + $i = 1; + if ($uid1 == $this->atacks[$id]['uid1']) { + $a = 2; + $j = $this->atacks[$id]['b2']; + $atack = [ + 0, + $this->atacks[$id]['a1'][0], + $this->atacks[$id]['a1'][1], + $this->atacks[$id]['a1'][2], + $this->atacks[$id]['a1'][3], + $this->atacks[$id]['a1'][4], + ]; + } elseif ($uid2 == $this->atacks[$id]['uid1']) { + $a = 1; + $j = $this->atacks[$id]['b1']; + $atack = [ + 0, + $this->atacks[$id]['a2'][0], + $this->atacks[$id]['a2'][1], + $this->atacks[$id]['a2'][2], + $this->atacks[$id]['a2'][3], + $this->atacks[$id]['a2'][4], + ]; + } + if ($this->atacks[$id]['out' . $a] == 0) { + while ($i <= $this->stats[$this->uids[$uid2]]['zonb']) { + //echo '{'.$j.'}'; + $block[$j] = 1; + $j++; + if ($j > 5 || $j < 1) { + $j = 1; + } + $i++; + } + } + //Проверка ударов + $i = 1; + while ($i <= $this->stats[$this->uids[$uid1]]['zona']) { + if (!isset($atack[$i]) || $atack[$i] == 0) { + $atack[$i] = rand(1, 5); + } + if ($atack[$i] > 0) { + if ($block[$atack[$i]] == 1) { + //удар был заблокирован + // КУДА БИЛ , ТИП УДАРА + $r['atack'][] = [$atack[$i], 3, 0]; + } else { + //Удар прошел + // КУДА БИЛ , ТИП УДАРА + $r['atack'][] = [$atack[$i], 1, 0]; + } + } + $i++; + } + return $r; + } + + //Проверка зоны и блока + public function testRazmenblock1($id, $uid1, $uid2, $atack) + { + $r = false; + //Проверка блоков + $i = 1; + if ($uid1 == $this->atacks[$id]['uid1']) { + $j = $this->atacks[$id]['b2']; + } elseif ($uid2 == $this->atacks[$id]['uid1']) { + $j = $this->atacks[$id]['b1']; + } + if ($this->atacks[$id]['out2'] == 0) { + while ($i <= $this->stats[$this->uids[$uid2]]['zonb']) { + //echo '{'.$j.'}'; + $block[$j] = 1; + $j++; + if ($j > 5 || $j < 1) { + $j = 1; + } + $i++; + } + } + //Проверка ударов + if ($atack > 0) { + if ($block[$atack] == 1) { + //удар был заблокирован + // КУДА БИЛ , ТИП УДАРА + $r = true; + } else { + //Удар прошел + // КУДА БИЛ , ТИП УДАРА + $r = false; + } + } + return $r; + } + + //Первичный расчет мф. эффектов (пример) + public function firstRazmen($id, $at) + { + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } else { + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } + + //Расчет уворота Цели от Атакующего + + + $i++; + } + + return $at; + } + + //Проверка ухода удара в игрока + public function yhod_user($uid1, $uid2, $type) + { + // 1 - кто бьет . 2 - в кого бьют . тип + //Удал летит прямо в противника + if ($this->import_user == 0) { + $r = $uid1; + $rand_user = false; + if ($type == 2) { + //Случайный персонаж из своей команды (в том числе игрок) + $i = 0; + while ($i < count($this->users)) { + if ($this->users[$i]['team'] == $this->users[$this->uids[$uid2]]['team']) { + $rand_user[] = $this->users[$i]['id']; + } + $i++; + } + } elseif ($type == 4) { + //Случайный персонаж, любой + $i = 0; + while ($i < count($this->users)) { + //if( $this->users[$i]['team'] == $this->users[$this->uids[$uid1]]['team'] ) { + $rand_user[] = $this->users[$i]['id']; + //} + $i++; + } + } elseif ($type == 5) { + //Случайный персонаж, любой (кроме игрока) + $i = 0; + while ($i < count($this->users)) { + if ($this->users[$i]['team'] == $this->users[$this->uids[$uid2]]['team'] && $uid2 != $this->users[$i]['id']) { + $rand_user[] = $this->users[$i]['id']; + } + $i++; + } + } elseif ($type == 6) { + //Случайный персонаж из команды противника + $i = 0; + while ($i < count($this->users)) { + if ($this->users[$i]['team'] != $this->users[$this->uids[$uid2]]['team']) { + $rand_user[] = $this->users[$i]['id']; + } + $i++; + } + } elseif ($type > 100) { + //Удар идет в конкретного игрока + if (!isset($this->users[$this->uids[$type]]) || $this->users[$this->uids[$type]]['id'] != $type) { + $r = $uid2; + } else { + $r = $type; + } + } + if ($rand_user != false && count($rand_user) > 0) { + $r = $rand_user[rand(0, (count($rand_user) - 1))]; + } + $this->import_user = $r; + } else { + $r = $this->import_user; + } + return $r; + } + + //Расчет уворота игроков + public function mf1Razmen($id, $at, $v, $pat = false, $rjd = 0) + { + global $u; + + if ($pat == true) { + $pat = $at; + $at = $pat['p']; + } else { + unset($pat); + } + + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { + $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); + } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { + $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); + } + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } else { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } + + //Расчет уворота Цели (u2) от Атакующего (u1) + //print_r( $at[$i] ); + $j = 0; + $wp01 = 3; + $k01 = 0; + if ($rjd > 0) { + $j = $rjd - 1; + } + while ($j < count($at[$a]['atack']) && $j < 8) { + // КУДА БИЛ , ТИП УДАРА + if ($k01 == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) { + //Левая рука + $wp01 = 3; + $k01 = 1; + } else { + //Правая рука + if (isset($this->stats[$this->uids[$u1]]['wp14id']) && $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13) { + $wp01 = 14; + } else { + if (isset($this->stats[$this->uids[$u1]]['wp3id'])) { + $wp01 = 3; + } else { + //нет оружия + + $wp01 = 3; + } + } + $k01 = 0; + } + $witm01 = 0; + $witm_type01 = 0; + if ($wp01 > 0) { + $witm01 = $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp' . $wp01 . 'id']]; + $witm_data01 = $u->lookStats($witm01['data']); + //$r['wt'] = $witm['type']; + } + // + if ($at[$a]['atack'][$j][2] == $v) { + //if( $wp01 > 0 && $witm01['type'] == 20 ) { + // $tyv = $this->mfs( 2 , array( 'mf' => $this->stats[$this->uids[$u2]]['m4']*1.25 , 'amf' => $this->stats[$this->uids[$u1]]['m5'] + $witm_data01['sv_m5'] ) ); + //}else{ + $tyv = $this->mfs(2, [ + 'u1' => $u1, + 'u2' => $u2, + 'mf' => $this->stats[$this->uids[$u2]]['m4'], + 'amf' => (int)$this->stats[$this->uids[$u2]]['m15'], + 'smf' => ($this->stats[$this->uids[$u1]]['m5'] + $witm_data01['sv_m5']), + 'asmf' => $this->stats[$this->uids[$u1]]['m21'], + ], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']); + //} + if ($tyv == 1 && $this->atacks[$id]['out' . $b] == 0) { + //увернулся, гад :) + $this->stats[$this->uids[$u1]]['nopryh'] = floor(0 + (int)$this->stats[$this->uids[$u1]]['nopryh']); + if (!isset($this->stats[$this->uids[$u1]]['nopryh']) || $this->stats[$this->uids[$u1]]['nopryh'] <= 0) { + $at[$a]['atack'][$j][1] = 2; + } else { + $this->stats[$this->uids[$u1]]['nopryh']--; + $this->stats[$this->uids[$u1]]['nopryh_act']++; + } + } + } + $j++; + } + + $i++; + } + unset($witm01, $witm_type01, $wp01, $k01); + + if (isset($pat) && $pat != false) { + $pat['p'] = $at; + $at = $pat; + } + + return $at; + } + + //Расчет крита игроков + public function mf2Razmen($id, $at, $v, $pat = false, $rjd = 0) + { + global $u; + + if ($pat == true) { + $pat = $at; + $at = $pat['p']; + } else { + unset($pat); + } + + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { + $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); + } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { + $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); + } + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } else { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } + + //Расчет крита Атакующего (u1) по Цели (u2) + //print_r( $at[$i] ); + $j = 0; + $wp01 = 0; + $k01 = 0; + if ($rjd > 0) { + $j = $rjd - 1; + } + while ($j < count($at[$a]['atack']) && $j <= 8) { + // КУДА БИЛ , ТИП УДАРА + if ($k01 == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) { + //Левая рука + $wp01 = 3; + $k01 = 1; + } else { + //Правая рука + if (isset($this->stats[$this->uids[$u1]]['wp14id']) && $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13) { + $wp01 = 14; + } else { + if (isset($this->stats[$this->uids[$u1]]['wp3id'])) { + $wp01 = 3; + } else { + //нет оружия + $wp01 = 3; + } + } + $k01 = 0; + } + $witm01 = 0; + $witm_type01 = 0; + if ($wp01 > 0) { + $witm01 = $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp' . $wp01 . 'id']]; + $witm_data01 = $u->lookStats($witm01['data']); + //$r['wt'] = $witm['type']; + } + // + //if( $at[$a]['atack'][$j][2] == $v ) { + if ($this->mfs(1, [ + 'u1' => $u1, + 'u2' => $u2, + 'mf' => $this->stats[$this->uids[$u1]]['m1'] + $witm_data01['sv_m1'], + 'amf' => $this->stats[$this->uids[$u1]]['m14'], + 'smf' => $this->stats[$this->uids[$u2]]['m2'], + 'aamf1' => (int)$this->stats[$this->uids[$u2]]['enemy_am1'], + ], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']) == 1) { + //кританул, гад :) + if ($at[$a]['atack'][$j][1] == 3) { + //в блок + $at[$a]['atack'][$j][1] = 4; //Тут тест + } elseif ($at[$a]['atack'][$j][1] != 2 && $at[$a]['atack'][$j][1] != 6 && $at[$a]['atack'][$j][1] != 7 && $at[$a]['atack'][$j][1] != 8) { + //обычный крит + $at[$a]['atack'][$j][1] = 5; + } else { + $at[$a]['atack'][$j][1] = 1; + } + } + //} + $j++; + } + + $i++; + } + unset($witm01, $witm_type01, $k01, $wp01); + + if (isset($pat) && $pat != false) { + $pat['p'] = $at; + $at = $pat; + } + + return $at; + } + + //Расчет парирования игроков + public function mf3Razmen($id, $at, $v, $pat = false, $rjd = 0) + { + if ($pat == true) { + $pat = $at; + $at = $pat['p']; + } else { + unset($pat); + } + + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { + $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); + } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { + $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); + } + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } else { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } + + //Расчет парирования Цели (u2) от Атакующего (u1) + //print_r( $at[$i] ); + $j = 0; + if ($rjd > 0) { + $j = $rjd - 1; + } + while ($j < count($at[$a]['atack']) && $j < 8) { + // КУДА БИЛ , ТИП УДАРА + if ((!isset($this->stats[$this->uids[$u2]]['no_pr1']) || $this->stats[$this->uids[$u2]]['no_pr1'] == 0) && $at[$a]['atack'][$j][2] == $v) { + if ($this->mfs(3, [ + 'u1' => $u1, + 'u2' => $u2, + '1' => $this->stats[$this->uids[$u2]]['m7'], + '2' => $this->stats[$this->uids[$u1]]['m7'], + ], $this->users[$this->uids[$u1]]['level'], + $this->users[$this->uids[$u2]]['level']) == 1 && $this->atacks[$id]['out' . $b] == 0) { + //Парировал, гад :) + $this->stats[$this->uids[$u1]]['nopryh'] = floor(0 + (int)$this->stats[$this->uids[$u1]]['nopryh']); + if ((!isset($this->stats[$this->uids[$u1]]['nopryh']) || $this->stats[$this->uids[$u1]]['nopryh'] == 0) && $this->stats[$this->uids[$u1]]['nopryh_act'] < 1) { + $at[$a]['atack'][$j][1] = 6; + $this->stats[$this->uids[$u1]]['nopryh']--; + $this->stats[$this->uids[$u1]]['nopryh_act']++; + } + } + } + $j++; + } + + $i++; + } + + if (isset($pat) && $pat != false) { + $pat['p'] = $at; + $at = $pat; + } + + return $at; + } + + //Расчет блока щитом игроков + public function mf4Razmen($id, $at, $v, $pat = false, $rjd = 0) + { + if ($pat == true) { + $pat = $at; + $at = $pat['p']; + } else { + unset($pat); + } + + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { + $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); + } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { + $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); + } + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } else { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } + if ($this->stats[$this->uids[$u2]]['sheld1'] > 0) { + //Расчет блока щитом Цели (u2) от Атакующего (u1) + //print_r( $at[$i] ); + $j = 0; + while ($j < count($at[$a]['atack']) && $j < 8) { + // КУДА БИЛ , ТИП УДАРА + if ($at[$a]['atack'][$j][2] == $v) { + if ($this->mfs(5, + ($this->stats[$this->uids[$u2]]['m8'] / 2 + $this->stats[$this->uids[$u2]]['m18']), + $this->users[$this->uids[$u1]]['level'], + $this->users[$this->uids[$u2]]['level']) == 1 && $this->atacks[$id]['out' . $b] == 0) { + //блокировал щитом, гад :) + /*if( !isset($this->stats[$this->uids[$u1]]['nopryh']) || $this->stats[$this->uids[$u1]]['nopryh'] == 0 ) {*/ + $at[$a]['atack'][$j][1] = 7; + // $this->stats[$this->uids[$u1]]['nopryh']--; + // $this->stats[$this->uids[$u1]]['nopryh_act']++; + // } + } + } + $j++; + } + } + $i++; + } + + if (isset($pat) && $pat != false) { + $pat['p'] = $at; + $at = $pat; + } + + return $at; + } + + //Расчет контрудара игроков + public function mf5Razmen($id, $at, $v, $rjd = 0) + { + global $u; + + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { + $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); + } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { + $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); + } + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } else { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } + + //Расчет контрудара Цели (u2) по Атакующему (u1) + //print_r( $at[$i] ); + $j = 0; + if ($rjd > 0) { + $j = $rjd - 1; + } + while ($j < count($at[$a]['atack']) && $j < 8) { + // КУДА БИЛ , ТИП УДАРА + if ($at[$a]['atack'][$j][2] == $v) { + if ($at[$a]['atack'][$j][1] == 2) { + if ($this->mfs(6, [ + 'u1' => $u1, + 'u2' => $u2, + 'a' => $this->stats[$this->uids[$u2]]['m6'], + 'b' => $this->stats[$this->uids[$u1]]['m6'], + ], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']) == 1) { + //контрудар, гад :) + $at[$a]['atack'][$j][1] = 8; + $rnd_a = rand(1, 5); + $rjd = count($at[$b]['atack']); + if ($this->testRazmenblock1($id, $u2, $u1, $rnd_a) == false) { + $at[$b]['atack'][] = [$rnd_a, 1, 0, 1]; // 3 , 0 , 1 + //$at[$b]['atack'][] = $at[$b]['atack'][(count($at[$b]['atack'])-1)]; // 3 , 0 , 1 + } else { + $at[$b]['atack'][] = [$rnd_a, 3, 0, 1]; // 3 , 0 , 1 + //$at[$b]['atack'][] = $at[$b]['atack'][(count($at[$b]['atack'])-1)]; // 3 , 0 , 1 + } + $at = $this->contrRestart($id, $at, 1, $rjd); + } + } + } + $j++; + } + + $i++; + } + + return $at; + } + + //Просмотр (для админов) + public function seeRazmen($id, $at) + { + $r = ''; + + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } else { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } + + if (!isset($at[$a]['atack'])) { + $r .= 'u1 пропустил свой ход'; + } else { + $j = 0; + while ($j < count($at[$a]['atack']) && $j < 8) { + if ($at[$a]['atack'][$j][1] == 1) { + //u1 ударил обычным ударом u2 + $r .= 'u1 ударил обычным ударом u2'; + } elseif ($at[$a]['atack'][$j][1] == 2) { + //u2 увернулся от u1 + $r .= 'u2 увернулся от u1'; + } elseif ($at[$a]['atack'][$j][1] == 3) { + //u2 заблокировал удар u1 + $r .= 'u2 заблокировал удар u1'; + } elseif ($at[$a]['atack'][$j][1] == 4) { + //u1 пробил блок u2 критом + $r .= 'u1 пробил блок u2 критом'; + } elseif ($at[$a]['atack'][$j][1] == 5) { + //u1 ударил критическим ударом u2 + $r .= 'u1 ударил критическим ударом u2'; + } elseif ($at[$a]['atack'][$j][1] == 6) { + //u2 парировал удар u1 + $r .= 'u2 парировал удар u1'; + } elseif ($at[$a]['atack'][$j][1] == 7) { + //u2 блокировал щитом удар u1 + $r .= 'u2 блокировал щитом удар u1'; + } elseif ($at[$a]['atack'][$j][1] == 8) { + //u2 увернулся от удара u1 и нанес по нему контрудар + $r .= 'u2 увернулся от удара u1 и нанес по нему контрудар'; + } + if ($at[$a]['atack'][$j][3] == 1) { + $r .= ' (контрудар)'; + } + if (isset($at[$a]['atack'][$j]['yron'])) { + $r .= ' ' . $at[$a]['atack'][$j]['yron']['r'] . ''; + if ($at[$a]['atack'][$j]['yron']['w'] == 3) { + $r .= ' (правая рука)'; + } elseif ($at[$a]['atack'][$j]['yron']['w'] == 14) { + $r .= ' (левая рука)'; + } + } + if (isset($at[$a]['atack'][$j]['yron']['hp'])) { + $r .= ' [' . floor($at[$a]['atack'][$j]['yron']['hp']) . '/' . floor($at[$a]['atack'][$j]['yron']['hpAll']) . ']'; + } + $r .= ',
'; + $j++; + } + } + + $r = str_replace('u1', '' . $this->users[$this->uids[$u1]]['login'] . '', $r); + $r = str_replace('u2', '' . $this->users[$this->uids[$u2]]['login'] . '', $r); + + $r .= '|
'; + $i++; + } + + return $r; + } + + //Выделение из лог текста + public function addlt($a, $id, $s, $rnd) + { + global $log_text; + if ($rnd == null) { + $rnd = rand(0, (count($log_text[$s][$id]) - 1)); + } + return '{' . $a . 'x' . $id . 'x' . $rnd . '}'; + } + + //Добавляем статистику + public function addNewStat($stat) + { + if (isset($stat[1])) { + mysql_query('INSERT INTO `battle_stat` ( `battle`,`uid1`,`uid2`,`time`,`type`,`a`,`b`,`ma`,`mb`,`type_a`,`type_b`,`yrn`,`yrn_krit`,`tm1`,`tm2` ) VALUES ( "' . $this->info['id'] . '", "' . $stat[1]['uid1'] . '", @@ -4617,9 +5319,9 @@ class battleClass "' . $stat[1]['tm1'] . '", "' . $stat[1]['tm2'] . '" )'); - } - if (isset($stat[2])) { - mysql_query('INSERT INTO `battle_stat` + } + if (isset($stat[2])) { + mysql_query('INSERT INTO `battle_stat` ( `battle`,`uid1`,`uid2`,`time`,`type`,`a`,`b`,`ma`,`mb`,`type_a`,`type_b`,`yrn`,`yrn_krit`,`tm1`,`tm2` ) VALUES ( "' . $this->info['id'] . '", "' . $stat[2]['uid1'] . '", @@ -4637,496 +5339,608 @@ class battleClass "' . $stat[2]['tm1'] . '", "' . $stat[2]['tm2'] . '" )'); - } - } + } + } - public $prlog = []; + public $prlog = []; - //Добавляем статистику ударов - public function asr($u1, $u2, $type) - { - mysql_query('INSERT INTO `battle_static` ( + //Добавляем статистику ударов + public function asr($u1, $u2, $type) + { + mysql_query('INSERT INTO `battle_static` ( `uid1`,`uid2`,`hod`,`type`,`time`,`bid` ) VALUES ( "' . $u1 . '","' . $u2 . '","' . $this->hodID . '","' . $type . '","' . time() . '","' . $this->info['id'] . '" )'); - } + } - //Добавляем размены в лог - public function addlogRazmen($id, $at) - { - global $u; + //Добавляем размены в лог + public function addlogRazmen($id, $at) + { + global $u; - $r = ''; + $r = ''; - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; - $this->hodID++; + $this->hodID++; - $dies = [ - 1 => 0, - 2 => 0 - ]; + $dies = [ + 1 => 0, + 2 => 0, + ]; - //массив для статистики - $stat = [ - 1 => [ - 'uid1' => 0, - 'uid2' => 0, - 'time' => time(), - 'type' => 0, - 'a' => '00000', - 'b' => '0', - 'type_a' => '', - 'type_b' => '0', - 'yrn' => 0, - 'yrn_krit' => 0, - 'ma' => 0, - 'mb' => 0, - 'tm1' => 0, - 'tm2' => 0 - ], - 2 => [ - 'uid1' => 0, - 'uid2' => 0, - 'time' => time(), - 'type' => 0, - 'a' => '00000', - 'b' => '0', - 'type_a' => '', - 'type_b' => '0', - 'yrn' => 0, - 'yrn_krit' => 0, - 'ma' => 0, - 'mb' => 0, - 'tm1' => 0, - 'tm2' => 0 - ] - ]; + //массив для статистики + $stat = [ + 1 => [ + 'uid1' => 0, + 'uid2' => 0, + 'time' => time(), + 'type' => 0, + 'a' => '00000', + 'b' => '0', + 'type_a' => '', + 'type_b' => '0', + 'yrn' => 0, + 'yrn_krit' => 0, + 'ma' => 0, + 'mb' => 0, + 'tm1' => 0, + 'tm2' => 0, + ], + 2 => [ + 'uid1' => 0, + 'uid2' => 0, + 'time' => time(), + 'type' => 0, + 'a' => '00000', + 'b' => '0', + 'type_a' => '', + 'type_b' => '0', + 'yrn' => 0, + 'yrn_krit' => 0, + 'ma' => 0, + 'mb' => 0, + 'tm1' => 0, + 'tm2' => 0, + ], + ]; - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - } else { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } + //if( $u->info['admin'] > 0 ) { + //echo '[a: '.count($at[1]['atack']).'/'.count($at['p'][1]['atack']).', b: '.count($at[2]['atack']).'/'.count($at['p'][2]['atack']).']'; + //} - if ($this->stats[$this->uids[$u1]]['yhod'] > 0) { - //$u1 = $u2; - } elseif ($this->stats[$this->uids[$u2]]['yhod'] > 0) { - $u2 = $this->yhod_user($u1, $u2, $this->stats[$this->uids[$u2]]['yhod']); - } + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } else { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } - $s1 = $this->users[$this->uids[$u1]]['sex']; - $s2 = $this->users[$this->uids[$u2]]['sex']; + if ($this->stats[$this->uids[$u1]]['yhod'] > 0) { + //$u1 = $u2; + } elseif ($this->stats[$this->uids[$u2]]['yhod'] > 0) { + $u2 = $this->yhod_user($u1, $u2, $this->stats[$this->uids[$u2]]['yhod']); + } - $stat[$a]['uid1'] = $u1; - $stat[$a]['uid2'] = $u2; - $stat[$a]['ma'] = $this->stats[$this->uids[$u1]]['zona']; - $stat[$a]['mb'] = $this->stats[$this->uids[$u1]]['zonb']; - $stat[$a]['tm1'] = $this->users[$this->uids[$u1]]['team']; - $stat[$a]['tm2'] = $this->users[$this->uids[$u2]]['team']; - $stat[$a]['a'] = $this->atacks[$id]['a' . $a]; - $stat[$a]['b'] = $this->atacks[$id]['b' . $a]; + $s1 = $this->users[$this->uids[$u1]]['sex']; + $s2 = $this->users[$this->uids[$u2]]['sex']; - $vLog = 'at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . '||bl1=' . $this->atacks[$id]['b' . $a] . '||bl2=' . $this->atacks[$id]['b' . $b] . '||time1=' . $this->atacks[$id]['time'] . '||time2=' . $this->atacks[$id]['time2'] . '||s' . $a . '=' . $s1 . '||s' . $b . '=' . $s2 . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2'] . ''; + $stat[$a]['uid1'] = $u1; + $stat[$a]['uid2'] = $u2; + $stat[$a]['ma'] = $this->stats[$this->uids[$u1]]['zona']; + $stat[$a]['mb'] = $this->stats[$this->uids[$u1]]['zonb']; + $stat[$a]['tm1'] = $this->users[$this->uids[$u1]]['team']; + $stat[$a]['tm2'] = $this->users[$this->uids[$u2]]['team']; + $stat[$a]['a'] = $this->atacks[$id]['a' . $a]; + $stat[$a]['b'] = $this->atacks[$id]['b' . $a]; - $mas = [ - 'text' => '', - 'time' => time(), - 'vars' => '', - 'battle' => $this->info['id'], - 'id_hod' => $this->hodID, - 'vars' => $vLog, - 'type' => 1 - ]; + $vLog = 'at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . '||bl1=' . $this->atacks[$id]['b' . $a] . '||bl2=' . $this->atacks[$id]['b' . $b] . '||time1=' . $this->atacks[$id]['time'] . '||time2=' . $this->atacks[$id]['time2'] . '||s' . $a . '=' . $s1 . '||s' . $b . '=' . $s2 . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2'] . ''; - if (!isset($at[$a]['atack'])) { //ТУТ тест пропуска - if ($this->atacks[$id]['tpo' . $a] == 2) { - $mas['text'] .= '{u1} потратил свой ход на магию.'; - } else { - // - if ($this->info['razdel'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) { - mysql_query('INSERT INTO `battle_out` (`battle`,`uid1`,`uid2`,`time`,`out`) VALUES ( + $mas = [ + 'text' => '', + 'time' => time(), + 'vars' => '', + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'vars' => $vLog, + 'type' => 1, + ]; + + if (!isset($at[$a]['atack'])) { //ТУТ тест пропуска + if ($this->atacks[$id]['tpo' . $a] == 2) { + $mas['text'] .= '{u1} потратил свой ход на магию.'; + } else { + // + if ($this->info['razdel'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) { + mysql_query('INSERT INTO `battle_out` (`battle`,`uid1`,`uid2`,`time`,`out`) VALUES ( "' . $this->info['id'] . '","' . $u1 . '","' . $u2 . '","' . time() . '","1" )'); - } - // - if (isset($u1)) { - $mas['text'] .= '{u1} пропустил свой ход.'; - //Проверка сброс туманок - mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u1 . '" AND `delete` = 0 AND `v1` = "priem" AND (`v2`=288 OR `v2`=287 OR `v2`=286 OR `v2`=273) LIMIT 1'); - } + } + // + if (isset($u1)) { + $mas['text'] .= '{u1} пропустил свой ход.'; + //Проверка сброс туманок + mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u1 . '" AND `delete` = 0 AND `v1` = "priem" AND (`v2`=288 OR `v2`=287 OR `v2`=286 OR `v2`=273) LIMIT 1'); + } + } + $mas['text'] = '{tm1} ' . $mas['text']; + $this->add_log($mas); + } else { + $j = 0; + while ($j < count($at[$a]['atack']) && $j < 8) { + // + $mas['text'] = ''; + // + $wt = [ + 21 => 4, + 22 => 5, + 20 => 2, + 28 => 2, + 19 => 3, + 18 => 1, + 26 => 22, + ]; + $par = [ + 'zona' => '{zn2_' . $at[$a]['atack'][$j][0] . '} ', + 'kyda' => $this->lg_zon[$at[$a]['atack'][$j][0]][rand(0, + (count($this->lg_zon[$at[$a]['atack'][$j][0]]) - 1))], + 'chem' => $this->lg_itm[$wt[$at[$a]['atack'][$j]['wt']]][rand(0, + (count($this->lg_itm[$wt[$at[$a]['atack'][$j]['wt']]]) - 1))], + ]; + // + $this->atacks[$id]['uid_' . $u1 . '_t' . $at[$a]['atack'][$j][1]]++; + // + // + $this->asr($u1, $u2, $at[$a]['atack'][$j][1]); + // + if ($at[$a]['atack'][$j][1] == 1) { + //u1 ударил обычным ударом u2 + $mas['text'] .= $par['zona'] . '{u2} ' . $this->addlt($b, 1, $s2, null) . '' . $this->addlt($b, + 2, $s2, null) . '' . $this->addlt($a, 3, $s1, null) . ' {u1} ' . $this->addlt($a, 4, + $s1, null) . '' . $this->addlt($a, 5, $s1, null) . '' . $this->addlt($a, 6, $s1, + null) . ' ' . $this->addlt(1, 7, $s1, + $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; + } elseif ($at[$a]['atack'][$j][1] == 2) { + //u2 увернулся от u1 + $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt($a, + 9, $s1, null) . ' {u2} ' . $this->addlt($b, 11, $s2, + null) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; + } elseif ($at[$a]['atack'][$j][1] == 3) { + //u2 заблокировал удар u1 + $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt($a, + 9, $s1, null) . ' {u2} ' . $this->addlt($b, 10, $s2, + null) . ' ' . $this->addlt(1, 7, 0, $s1, + $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; + } elseif ($at[$a]['atack'][$j][1] == 4) { + //u1 пробил блок u2 критом + if (isset($at[$a]['atack'][$j]['yron']['t'])) { + $mas['text'] .= $par['zona'] . '{u2} ' . $this->addlt($b, 1, $s2, + null) . '' . $this->addlt($b, 2, $s2, null) . '' . $this->addlt($a, 3, $s1, + null) . ' {u1} ' . $this->addlt($a, 4, $s1, null) . '' . $this->addlt($a, 5, $s1, + null) . ', пробив блок, ' . $this->addlt($a, 6, $s1, + null) . ' ' . $this->addlt(1, 7, $s1, + $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; + } + } elseif ($at[$a]['atack'][$j][1] == 5) { + //u1 ударил критическим ударом u2 + $mas['text'] .= $par['zona'] . '{u2} ' . $this->addlt($b, 1, $s2, null) . '' . $this->addlt($b, + 2, $s2, null) . '' . $this->addlt($a, 3, $s1, null) . ' {u1} ' . $this->addlt($a, 4, + $s1, null) . '' . $this->addlt($a, 5, $s1, null) . '' . $this->addlt($a, 6, $s1, + null) . ' ' . $this->addlt(1, 7, $s1, + $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; + } elseif ($at[$a]['atack'][$j][1] == 6) { + //u2 парировал удар u1 + $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt($a, + 9, $s1, + null) . ' {u2} неожиданно парировал ' . $this->addlt(1, + 7, 0, $s1, + $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; + } elseif ($at[$a]['atack'][$j][1] == 7) { + //u2 блокировал щитом удар u1 + $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt($a, + 9, $s1, + null) . ' {u2}, воспользовавшись своим щитом, ' . $this->addlt($b, + 10, $s2, null) . ' ' . $this->addlt(1, 7, 0, $s1, + $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; + } elseif ($at[$a]['atack'][$j][1] == 8) { + //u2 увернулся от удара u1 и нанес по нему контрудар + $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt($a, + 9, $s1, null) . ' {u2} ' . $this->addlt($b, 11, $s2, + null) . ' ' . $par['chem'] . ' ' . $par['kyda'] . ' и нанес контрудар. '; + } + + $stat[$a]['type_a'] .= '' . $at[$a]['atack'][$j][1] . ''; + if ((!isset($this->stats[$this->uids[$u2]]['notravma']) || $this->stats[$this->uids[$u2]]['notravma'] == 0) && isset($at[$a]['atack'][$j]['yron']['travma']) && $at[$a]['atack'][$j]['yron']['travma'][0] > 0 && floor($at[$a]['atack'][$j]['yron']['hp']) <= 0) { + $tr_pl = mysql_fetch_array(mysql_query('SELECT `id`,`v1` FROM `eff_users` WHERE `id_eff` = 4 AND `uid` = "' . $u2 . '" AND `delete` = "0" ORDER BY `v1` DESC LIMIT 1')); + if (!isset($tr_pl['id']) || $tr_pl['v1'] < 3) { + //263 + if (isset($tr_pl['id'])) { + $at[$a]['atack'][$j]['yron']['travma'][0] = rand(($tr_pl['v1'] + 1), 3); + } + $tr_pl2 = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `uid` = "' . $u2 . '" AND `delete` = "0" AND `name` LIKE "%Защита от травм%" LIMIT 1')); + if (!isset($tr_pl2['id']) && $at[$a]['atack'][$j]['yron']['travma'][0] <= 3) { + $mas['text'] = rtrim($mas['text'], '. '); + $mas['text'] .= ', нанеся противнику '; + if ($at[$a]['atack'][$j]['yron']['travma'][0] == 1) { + $mas['text'] .= 'Легкую'; + $this->addTravm($u2, 1, rand(3, 5)); + } elseif ($at[$a]['atack'][$j]['yron']['travma'][0] == 2) { + $mas['text'] .= 'Среднюю'; + $this->addTravm($u2, 2, rand(3, 5)); + } elseif ($at[$a]['atack'][$j]['yron']['travma'][0] == 3) { + $mas['text'] .= 'Тяжелую'; + $this->addTravm($u2, 3, rand(3, 5)); + } + $mas['text'] .= ' травму. '; + } + } + unset($tr_pl); + } + if ($at[$a]['atack'][$j]['yron']['pb'] == 1 && isset($at[$a]['atack'][$j]['yron']['hp'])) { + $mas['text'] = rtrim($mas['text'], '. '); + $mas['text'] .= ' пробив броню. '; + } + if ($at[$a]['atack'][$j][3] == 1) { + $mas['text'] .= '(контрудар) '; + } + if (isset($at[$a]['atack'][$j]['yron'])) { + if ($at[$a]['atack'][$j]['yron']['w'] == 3) { + $mas['textWP'] = '(правая рука)'; + } elseif ($at[$a]['atack'][$j]['yron']['w'] == 14) { + $mas['textWP'] = '(левая рука)'; + } else { + $mas['textWP'] = '(непонятно чем)'; + } + if ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5 || $at[$a]['atack'][$j][1] == 1) { + if ($at[$a]['atack'][$j]['yron']['y'] < 1) { + $at[$a]['atack'][$j]['yron']['r'] = '--'; + } + } + if ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5) { + $stat[$a]['yrn_krit'] += -$at[$a]['atack'][$j]['yron']['r']; + //$stat[$a]['yrn_krit'] += $at[$a]['atack'][$j]['yron']['k']; + $mas['text'] .= ' ' . $at[$a]['atack'][$j]['yron']['r'] . ''; + } else { + $mas['text'] .= ' ' . $at[$a]['atack'][$j]['yron']['r'] . ''; + } + $stat[$a]['yrn'] += -$at[$a]['atack'][$j]['yron']['r']; + } + if (isset($at[$a]['atack'][$j]['yron']['hp'])) { + if ($this->users[$this->uids[$u2]]['align'] == 9) { + $at[$a]['atack'][$j]['yron']['hp'] = $at[$a]['atack'][$j]['yron']['hp'] / ($at[$a]['atack'][$j]['yron']['hpAll'] / 100); + $at[$a]['atack'][$j]['yron']['hpAll'] = '100%'; + } + $mas['text'] .= ' [' . floor($at[$a]['atack'][$j]['yron']['hp']) . '/' . floor($at[$a]['atack'][$j]['yron']['hpAll']) . ']'; + } + // + if ($mas['text'] != '') { + $mas['text'] = '{tm1} ' . $mas['text']; + } + /* + '.$mass['time'].'", + "'.$mass['battle'].'", + "'.$mass['id_hod'].'", + "'.$mass['text'].'", + "'.$mass['vars'].'", + "'.$mass['zona1'].'", + "'.$mass['zonb1'].'", + "'.$mass['zona2'].'", + "'.$mass['zonb2'].'", + "'.$mass['type'].' + */ + // + if (count($at[$a]['atack'][$j]['yron']['plog']) > 0) { + $il = 0; + while ($il <= count($at[$a]['atack'][$j]['yron']['plog'])) { + if (isset($at[$a]['atack'][$j]['yron']['plog'][$il])) { + eval($at[$a]['atack'][$j]['yron']['plog'][$il]); + } + $il++; + } + } + $this->add_log($mas); + $j++; + } + } + $i++; + } + + //Добавляем статистику + записываем в баттл_юзерс НР игроков + $this->addNewStat($stat); + + //Вывод в лог смерти персонажа + if (floor($this->stats[$this->uids[$u1]]['hpNow']) < 1) { + $dies[1] = 1; + } + if (floor($this->stats[$this->uids[$u2]]['hpNow']) < 1) { + $dies[2] = 1; + } + if ($dies[1] > 0 || $dies[2] > 0) { + $s1 = $this->users[$this->uids[$u1]]['sex']; + $s2 = $this->users[$this->uids[$u2]]['sex']; + + $vLog = 'at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . '||bl1=' . $this->atacks[$id]['b' . $a] . '||bl2=' . $this->atacks[$id]['b' . $b] . '||time1=' . $this->atacks[$id]['time'] . '||time2=' . $this->atacks[$id]['time2'] . '||s2=' . $this->users[$this->uids[$u2]]['sex'] . '||s1=' . $this->users[$this->uids[$u1]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2'] . ''; + + $mas = [ + 'text' => '', + 'time' => time(), + 'vars' => '', + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'vars' => $vLog, + 'type' => 1, + ]; + + $rtngwin = [1, 2, 3, 5, 10, 20, 40, 80, 160]; + $rtnglos = [0, 0, 0, -1, -2, -5, -10, -20, -40]; + + if ($this->info['typeBattle'] == 99) { + if ($btlstatus[0] == 0) { + //Кровавые бои обычные + $rtngwin = [2, 4, 6, 10, 20, 40, 80, 160, 320]; + if ($this->info['razdel'] == 5) { + //не хаот + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } else { + //хаот + $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + } elseif ($btlstatus[0] == 25) { + //Кровавая битва + $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($btlstatus[0] == 50) { + //Кровавая резня + $rtngwin = [4, 8, 16, 32, 64, 128, 256, 512, 1024]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($btlstatus[0] == 75) { + //Кровавая сеча + $rtngwin = [5, 10, 20, 40, 80, 160, 320, 640, 1280]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($btlstatus[0] == 100) { + //Кровавое побоище + $rtngwin = [6, 12, 24, 48, 98, 196, 392, 784, 1568]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($btlstatus[0] == 150) { + //Судный день + $rtngwin = [7, 14, 28, 56, 112, 224, 448, 896, 1792]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } + } else { + if ($btlstatus[0] == 0) { + //Обычный поединок + $rtngwin = [1, 2, 3, 5, 10, 20, 40, 80, 160]; + if ($this->info['razdel'] == 5) { + //не хаот + $rtnglos = [0, 0, 0, -1, -2, -5, -10, -20, -40]; + } else { + //хаот + $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + } elseif ($btlstatus[0] == 25) { + //великая битва + $rtngwin = [2, 4, 6, 10, 20, 40, 80, 160, 320]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($btlstatus[0] == 50) { + //величайшая битва + $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($btlstatus[0] == 75) { + //историческая битва сеча + $rtngwin = [4, 8, 16, 32, 64, 128, 256, 512, 1024]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($btlstatus[0] == 100) { + //эпохальная битва + $rtngwin = [5, 10, 20, 40, 80, 160, 320, 640, 1280]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($btlstatus[0] == 150) { + //судный день + $rtngwin = [7, 14, 28, 56, 112, 224, 448, 896, 1792]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } + } + + if ($this->info['dn_id'] > 0 || $this->info['izlom'] != 0 || $this->info['turnir'] != 0) { + //Пещерные бои не считаются и Изломы тоже, ну и Турниры + $rtngwin = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + } elseif ($this->info['clan1'] > 0 && $this->info['clan2'] > 0) { + //Клановая война + $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; + $rtnglos = [-1, -2, -4, -8, -16, -32, -64, -128, -256]; + } + + /* + $btlstatus if( $x < 50000 ) { + //Обычный бой + }elseif( $x >= 50000 && $x < 100000 ) { + $r = array(25,50,'Великая Битва','Кровавая Битва'); + }elseif( $x < 150000 ) { + $r = array(50,75,'Величайшая Битва','Кровавая Резня'); + }elseif( $x < 200000 ) { + $r = array(75,100,'Историческая Битва','Кровавая Сеча'); + }elseif( $x < 250000 ) { + $r = array(100,125,'Эпохальная Битва','Кровавое Побоище'); + }elseif( $x >= 250000 ) { + $r = array(150,150,'Судный День','Судный День'); } - $mas['text'] = '{tm1} ' . $mas['text']; - $this->add_log($mas); - } else { - $j = 0; - while ($j < count($at[$a]['atack']) && $j < 8) { - // - $mas['text'] = ''; - // - $wt = [ - 21 => 4, - 22 => 5, - 20 => 2, - 28 => 2, - 19 => 3, - 18 => 1, - 26 => 22 - ]; - $par = [ - 'zona' => '{zn2_' . $at[$a]['atack'][$j][0] . '} ', - 'kyda' => $this->lg_zon[$at[$a]['atack'][$j][0]][rand(0, (count($this->lg_zon[$at[$a]['atack'][$j][0]]) - 1))], - 'chem' => $this->lg_itm[$wt[$at[$a]['atack'][$j]['wt']]][rand(0, (count($this->lg_itm[$wt[$at[$a]['atack'][$j]['wt']]]) - 1))] - ]; - // - $this->atacks[$id]['uid_' . $u1 . '_t' . $at[$a]['atack'][$j][1]]++; - // - // - $this->asr($u1, $u2, $at[$a]['atack'][$j][1]); - // - if ($at[$a]['atack'][$j][1] == 1) { - //u1 ударил обычным ударом u2 - $mas['text'] .= $par['zona'] . '{u2} ' . $this->addlt($b, 1, $s2, null) . '' . $this->addlt($b, 2, $s2, null) . '' . $this->addlt($a, 3, $s1, null) . ' {u1} ' . $this->addlt($a, 4, $s1, null) . '' . $this->addlt($a, 5, $s1, null) . '' . $this->addlt($a, 6, $s1, null) . ' ' . $this->addlt(1, 7, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; - } elseif ($at[$a]['atack'][$j][1] == 2) { - //u2 увернулся от u1 - $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt($a, 9, $s1, null) . ' {u2} ' . $this->addlt($b, 11, $s2, null) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; - } elseif ($at[$a]['atack'][$j][1] == 3) { - //u2 заблокировал удар u1 - $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt($a, 9, $s1, null) . ' {u2} ' . $this->addlt($b, 10, $s2, null) . ' ' . $this->addlt(1, 7, 0, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; - } elseif ($at[$a]['atack'][$j][1] == 4) { - //u1 пробил блок u2 критом - if (isset($at[$a]['atack'][$j]['yron']['t'])) { - $mas['text'] .= $par['zona'] . '{u2} ' . $this->addlt($b, 1, $s2, null) . '' . $this->addlt($b, 2, $s2, null) . '' . $this->addlt($a, 3, $s1, null) . ' {u1} ' . $this->addlt($a, 4, $s1, null) . '' . $this->addlt($a, 5, $s1, null) . ', пробив блок, ' . $this->addlt($a, 6, $s1, null) . ' ' . $this->addlt(1, 7, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; - } - } elseif ($at[$a]['atack'][$j][1] == 5) { - //u1 ударил критическим ударом u2 - $mas['text'] .= $par['zona'] . '{u2} ' . $this->addlt($b, 1, $s2, null) . '' . $this->addlt($b, 2, $s2, null) . '' . $this->addlt($a, 3, $s1, null) . ' {u1} ' . $this->addlt($a, 4, $s1, null) . '' . $this->addlt($a, 5, $s1, null) . '' . $this->addlt($a, 6, $s1, null) . ' ' . $this->addlt(1, 7, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; - } elseif ($at[$a]['atack'][$j][1] == 6) { - //u2 парировал удар u1 - $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt($a, 9, $s1, null) . ' {u2} неожиданно парировал ' . $this->addlt(1, 7, 0, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; - } elseif ($at[$a]['atack'][$j][1] == 7) { - //u2 блокировал щитом удар u1 - $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt($a, 9, $s1, null) . ' {u2}, воспользовавшись своим щитом, ' . $this->addlt($b, 10, $s2, null) . ' ' . $this->addlt(1, 7, 0, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; - } elseif ($at[$a]['atack'][$j][1] == 8) { - //u2 увернулся от удара u1 и нанес по нему контрудар - $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt($a, 9, $s1, null) . ' {u2} ' . $this->addlt($b, 11, $s2, null) . ' ' . $par['chem'] . ' ' . $par['kyda'] . ' и нанес контрудар. '; - } + */ - $stat[$a]['type_a'] .= '' . $at[$a]['atack'][$j][1] . ''; - if ((!isset($this->stats[$this->uids[$u2]]['notravma']) || $this->stats[$this->uids[$u2]]['notravma'] == 0) && isset($at[$a]['atack'][$j]['yron']['travma']) && $at[$a]['atack'][$j]['yron']['travma'][0] > 0 && floor($at[$a]['atack'][$j]['yron']['hp']) <= 0) { - $tr_pl = mysql_fetch_array(mysql_query('SELECT `id`,`v1` FROM `eff_users` WHERE `id_eff` = 4 AND `uid` = "' . $u2 . '" AND `delete` = "0" ORDER BY `v1` DESC LIMIT 1')); - if (!isset($tr_pl['id']) || $tr_pl['v1'] < 3) { - //263 - if (isset($tr_pl['id'])) { - $at[$a]['atack'][$j]['yron']['travma'][0] = rand(($tr_pl['v1'] + 1), 3); - } - $tr_pl2 = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `uid` = "' . $u2 . '" AND `delete` = "0" AND `name` LIKE "%Защита от травм%" LIMIT 1')); - if (!isset($tr_pl2['id']) && $at[$a]['atack'][$j]['yron']['travma'][0] <= 3) { - $mas['text'] = rtrim($mas['text'], '. '); - $mas['text'] .= ', нанеся противнику '; - if ($at[$a]['atack'][$j]['yron']['travma'][0] == 1) { - $mas['text'] .= 'Легкую'; - $this->addTravm($u2, 1, rand(3, 5)); - } elseif ($at[$a]['atack'][$j]['yron']['travma'][0] == 2) { - $mas['text'] .= 'Среднюю'; - $this->addTravm($u2, 2, rand(3, 5)); - } elseif ($at[$a]['atack'][$j]['yron']['travma'][0] == 3) { - $mas['text'] .= 'Тяжелую'; - $this->addTravm($u2, 3, rand(3, 5)); - } - $mas['text'] .= ' травму. '; - } - } - unset($tr_pl); - } - if ($at[$a]['atack'][$j]['yron']['pb'] == 1 && isset($at[$a]['atack'][$j]['yron']['hp'])) { - $mas['text'] = rtrim($mas['text'], '. '); - $mas['text'] .= ' пробив броню. '; - } - if ($at[$a]['atack'][$j][3] == 1) { - $mas['text'] .= '(контрудар) '; - } - if (isset($at[$a]['atack'][$j]['yron'])) { - if ($at[$a]['atack'][$j]['yron']['w'] == 3) { - $mas['textWP'] = '(правая рука)'; - } elseif ($at[$a]['atack'][$j]['yron']['w'] == 14) { - $mas['textWP'] = '(левая рука)'; - } else { - $mas['textWP'] = '(непонятно чем)'; - } - if ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5 || $at[$a]['atack'][$j][1] == 1) { - if ($at[$a]['atack'][$j]['yron']['y'] < 1) { - $at[$a]['atack'][$j]['yron']['r'] = '--'; - } - } - if ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5) { - $stat[$a]['yrn_krit'] += -$at[$a]['atack'][$j]['yron']['r']; - //$stat[$a]['yrn_krit'] += $at[$a]['atack'][$j]['yron']['k']; - $mas['text'] .= ' ' . $at[$a]['atack'][$j]['yron']['r'] . ''; - } else { - $mas['text'] .= ' ' . $at[$a]['atack'][$j]['yron']['r'] . ''; - } - $stat[$a]['yrn'] += -$at[$a]['atack'][$j]['yron']['r']; - } - if (isset($at[$a]['atack'][$j]['yron']['hp'])) { - if ($this->users[$this->uids[$u2]]['align'] == 9) { - $at[$a]['atack'][$j]['yron']['hp'] = $at[$a]['atack'][$j]['yron']['hp'] / ($at[$a]['atack'][$j]['yron']['hpAll'] / 100); - $at[$a]['atack'][$j]['yron']['hpAll'] = '100%'; - } - $mas['text'] .= ' [' . floor($at[$a]['atack'][$j]['yron']['hp']) . '/' . floor($at[$a]['atack'][$j]['yron']['hpAll']) . ']'; - } - // - if ($mas['text'] != '') { - $mas['text'] = '{tm1} ' . $mas['text']; - } - if (count($at[$a]['atack'][$j]['yron']['plog']) > 0) { - $il = 0; - while ($il <= count($at[$a]['atack'][$j]['yron']['plog'])) { - if (isset($at[$a]['atack'][$j]['yron']['plog'][$il])) { - eval($at[$a]['atack'][$j]['yron']['plog'][$il]); - } - $il++; - } - } - $this->add_log($mas); - $j++; - } - } - $i++; - } - - //Добавляем статистику + записываем в баттл_юзерс НР игроков - $this->addNewStat($stat); - - //Вывод в лог смерти персонажа - if (floor($this->stats[$this->uids[$u1]]['hpNow']) < 1) { - $dies[1] = 1; - } - if (floor($this->stats[$this->uids[$u2]]['hpNow']) < 1) { - $dies[2] = 1; - } - if ($dies[1] > 0 || $dies[2] > 0) { - $s1 = $this->users[$this->uids[$u1]]['sex']; - $s2 = $this->users[$this->uids[$u2]]['sex']; - - $vLog = 'at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . '||bl1=' . $this->atacks[$id]['b' . $a] . '||bl2=' . $this->atacks[$id]['b' . $b] . '||time1=' . $this->atacks[$id]['time'] . '||time2=' . $this->atacks[$id]['time2'] . '||s2=' . $this->users[$this->uids[$u2]]['sex'] . '||s1=' . $this->users[$this->uids[$u1]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2'] . ''; - - $mas = [ - 'text' => '', - 'time' => time(), - 'vars' => '', - 'battle' => $this->info['id'], - 'id_hod' => $this->hodID, - 'vars' => $vLog, - 'type' => 1 - ]; - - $rtngwin = [1, 2, 3, 5, 10, 20, 40, 80, 160]; - $rtnglos = [0, 0, 0, -1, -2, -5, -10, -20, -40]; - - if ($this->info['typeBattle'] == 99) { - if ($btlstatus[0] == 0) { - //Кровавые бои обычные - $rtngwin = [2, 4, 6, 10, 20, 40, 80, 160, 320]; - if ($this->info['razdel'] == 5) { - //не хаот - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } else { - //хаот - $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - } - } elseif ($btlstatus[0] == 25) { - //Кровавая битва - $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } elseif ($btlstatus[0] == 50) { - //Кровавая резня - $rtngwin = [4, 8, 16, 32, 64, 128, 256, 512, 1024]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } elseif ($btlstatus[0] == 75) { - //Кровавая сеча - $rtngwin = [5, 10, 20, 40, 80, 160, 320, 640, 1280]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } elseif ($btlstatus[0] == 100) { - //Кровавое побоище - $rtngwin = [6, 12, 24, 48, 98, 196, 392, 784, 1568]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } elseif ($btlstatus[0] == 150) { - //Судный день - $rtngwin = [7, 14, 28, 56, 112, 224, 448, 896, 1792]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } - } else { - if ($btlstatus[0] == 0) { - //Обычный поединок - $rtngwin = [1, 2, 3, 5, 10, 20, 40, 80, 160]; - if ($this->info['razdel'] == 5) { - //не хаот - $rtnglos = [0, 0, 0, -1, -2, -5, -10, -20, -40]; - } else { - //хаот - $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - } - } elseif ($btlstatus[0] == 25) { - //великая битва - $rtngwin = [2, 4, 6, 10, 20, 40, 80, 160, 320]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } elseif ($btlstatus[0] == 50) { - //величайшая битва - $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } elseif ($btlstatus[0] == 75) { - //историческая битва сеча - $rtngwin = [4, 8, 16, 32, 64, 128, 256, 512, 1024]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } elseif ($btlstatus[0] == 100) { - //эпохальная битва - $rtngwin = [5, 10, 20, 40, 80, 160, 320, 640, 1280]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } elseif ($btlstatus[0] == 150) { - //судный день - $rtngwin = [7, 14, 28, 56, 112, 224, 448, 896, 1792]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } - } - - if ($this->info['dn_id'] > 0 || $this->info['izlom'] != 0 || $this->info['turnir'] != 0) { - //Пещерные бои не считаются и Изломы тоже, ну и Турниры - $rtngwin = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - } elseif ($this->info['clan1'] > 0 && $this->info['clan2'] > 0) { - //Клановая война - $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; - $rtnglos = [-1, -2, -4, -8, -16, -32, -64, -128, -256]; - } - - - if ($dies[1] == 1) { - if ($this->info['dn_id'] > 0) { - //не дается репутация - } else { - if ($this->users[$this->uids[$u1]]['level'] >= 4) { - $rtng1 += $rtnglos[$this->users[$this->uids[$u1]]['level'] - 4]; - $rtng2 += $rtngwin[$this->users[$this->uids[$u1]]['level'] - 4]; - } - } - //Персонаж 1 погиб от рук персонаж 2 - $this->spaCheck($this->users[$this->uids[$u1]]['id']); - - } - if ($dies[2] == 1) { - if ($this->info['dn_id'] > 0) { - //не дается репутация - } else { - if ($this->users[$this->uids[$u1]]['level'] >= 4) { - $rtng1 += $rtnglos[$this->users[$this->uids[$u1]]['level'] - 4]; - $rtng2 += $rtngwin[$this->users[$this->uids[$u1]]['level'] - 4]; - } - } - //Персонаж 2 погиб от рук персонаж 1 - $this->spaCheck($this->stats[$this->uids[$u2]]['id']); - } - //Записываем рейтинг - // - if ($this->info['type'] != 564 && $this->stats[$this->uids[$u1]]['inTurnir'] == 0 && $this->stats[$this->uids[$u2]]['inTurnir'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) { - // - if ($this->users[$this->uids[$u2]]['bot'] == 0) { - mysql_query('INSERT INTO `users_reting` (`uid`,`time`,`val`,`align`,`clan`) VALUES ( + if ($dies[1] == 1) { + if ($this->info['dn_id'] > 0) { + //не дается репутация + } else { + if ($this->users[$this->uids[$u1]]['level'] >= 4) { + $rtng1 += $rtnglos[$this->users[$this->uids[$u1]]['level'] - 4]; + $rtng2 += $rtngwin[$this->users[$this->uids[$u1]]['level'] - 4]; + } + } + //Персонаж 1 погиб от рук персонаж 2 + $this->spaCheck($this->users[$this->uids[$u1]]['id']); + } + if ($dies[2] == 1) { + if ($this->info['dn_id'] > 0) { + //не дается репутация + } else { + if ($this->users[$this->uids[$u1]]['level'] >= 4) { + $rtng1 += $rtnglos[$this->users[$this->uids[$u1]]['level'] - 4]; + $rtng2 += $rtngwin[$this->users[$this->uids[$u1]]['level'] - 4]; + } + } + //Персонаж 2 погиб от рук персонаж 1 + $this->spaCheck($this->stats[$this->uids[$u2]]['id']); + } + //Записываем рейтинг + // + if ($this->info['type'] != 564 && $this->stats[$this->uids[$u1]]['inTurnir'] == 0 && $this->stats[$this->uids[$u2]]['inTurnir'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) { + // + if ($this->users[$this->uids[$u2]]['bot'] == 0) { + mysql_query('INSERT INTO `users_reting` (`uid`,`time`,`val`,`align`,`clan`) VALUES ( "' . $u1 . '","' . time() . '","' . $rtng1 . '","' . $this->users[$this->uids[$u1]]['align'] . '","' . $this->users[$this->uids[$u1]]['clan'] . '")'); - } - unset($rtng); - if ($this->users[$this->uids[$u1]]['bot'] == 0) { - mysql_query('INSERT INTO `users_reting` (`uid`,`time`,`val`,`align`,`clan`) VALUES ( + } + unset($rtng); + if ($this->users[$this->uids[$u1]]['bot'] == 0) { + mysql_query('INSERT INTO `users_reting` (`uid`,`time`,`val`,`align`,`clan`) VALUES ( "' . $u2 . '","' . time() . '","' . $rtng2 . '","' . $this->users[$this->uids[$u2]]['align'] . '","' . $this->users[$this->uids[$u2]]['clan'] . '")'); - } - } - unset($rtng1, $rtng2); + } + } + unset($rtng1, $rtng2); + } + + return true; + } + + //Добавляем в лог действия приема + public function priemAddLog($id, $a, $b, $u1, $u2, $prm, $text, $hodID, $tm1 = 0, $tm2 = 0) + { + $time = time(); + if ($tm1 == 0) { + $tm1 = isset($this->atacks[$id]) ? $this->atacks[$id]['time'] : $time; + } + if ($tm2 == 0) { + $tm2 = isset($this->atacks[$id]) ? $this->atacks[$id]['time2'] : $time; + } + $prm = str_replace('=', '^^^^', $prm); + $vLog = + 'prm=' . $prm . + '||at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . + '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . + '||bl1=' . $this->atacks[$id]['b' . $a] . + '||bl2=' . $this->atacks[$id]['b' . $b] . + '||time1=' . $tm1 . + '||time2=' . $tm2 . + '||s' . $a . '=' . $this->users[$this->uids[$u1]]['sex'] . + '||s' . $b . '=' . $this->users[$this->uids[$u2]]['sex'] . + '||t2=' . $this->users[$this->uids[$u2]]['team'] . + '||t1=' . $this->users[$this->uids[$u1]]['team'] . + '||login1=' . $this->users[$this->uids[$u1]]['login2'] . + '||login2=' . $this->users[$this->uids[$u2]]['login2']; + + $mas = [ + 'text' => $text, + 'time' => $time, + 'battle' => $this->info['id'], + 'id_hod' => $hodID, + 'vars' => $vLog, + 'type' => 1, + ]; + $this->add_log($mas); + } + + //Добавляем в лог действия приема (без атаки) + public function priemAddLogFast($u1, $u2, $prm, $text, $hodID, $tm) + { + $vLog = 'prm=' . $prm . '||time1=' . $tm . '||time2=' . $tm . '||s1=' . $this->users[$this->uids[$u1]]['sex'] . '||s2=' . $this->users[$this->uids[$u2]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2'] . ''; + $mas = [ + 'text' => $text, + 'time' => time(), + 'vars' => '', + 'battle' => $this->info['id'], + 'id_hod' => ($this->hodID + $hodID), + 'vars' => $vLog, + 'type' => 1, + ]; + $this->add_log($mas); + } + + //Считаем контру + public function contrRestart($id, $at, $v, $rjd = 0) + { + // + /*$at['p'] = $at; + //крит + $at = $this->mf2Razmen($id,$at,$v,true); + //блок щитом (если есть щит, конечно) + $at = $this->mf4Razmen($id,$at,$v,true); + //уворот + $at = $this->mf1Razmen($id,$at,$v,true); + //парирование + $at = $this->mf3Razmen($id,$at,$v,true); + //контрудар + //$at = $this->mf5Razmen($id,$at,$v); + //Проверяем урон + $at = $this->yronRazmen($id,$at,true); + //$at = $this->yronRazmen($id,$at); + + $at = $at['p'];*/ + + + //уворот + $at = $this->mf1Razmen($id, $at, $v, true, $rjd); + //парирование + $at = $this->mf3Razmen($id, $at, $v, true, $rjd); + //контрудар + //$at = $this->mf5Razmen($id,$at,$v,true,$rjd); + //блок щитом (если есть щит, конечно) + $at = $this->mf4Razmen($id, $at, $v, true, $rjd); + //Проверяем урон + //$at = $this->yronRazmen($id,$at); + //крит + $at = $this->mf2Razmen($id, $at, $v, true, $rjd); + $at = $this->yronRazmen($id, $at, true, $rjd); + + + return $at; + } + + //Считаем контру + /* public function contrRestart($id,$at,$v) { + // + $at['p'] = $at; + //крит + //$at = $this->mf2Razmen($id,$at,$v,true); + //блок щитом (если есть щит, конечно) + $at = $this->mf4Razmen($id,$at,$v,true); + //уворот + $at = $this->mf1Razmen($id,$at,$v,true); + //парирование + $at = $this->mf3Razmen($id,$at,$v,true); + //контрудар + //$at = $this->mf5Razmen($id,$at,$v); + //Проверяем урон + //$at = $this->yronRazmen($id,$at,true); + $at = $this->yronRazmen($id,$at); + + $at = $at['p']; + + return $at; } + */ - return true; - } - - //Добавляем в лог действия приема - public function priemAddLog($id, $a, $b, $u1, $u2, $prm, $text, $hodID, $tm1 = 0, $tm2 = 0) - { - if ($tm1 == 0) { - if (isset($this->atacks[$id])) { - $tm1 = $this->atacks[$id]['time']; - } else { - $tm1 = time(); - } - } - if ($tm2 == 0) { - if (isset($this->atacks[$id])) { - $tm2 = $this->atacks[$id]['time2']; - } else { - $tm2 = time(); - } - } - $vLog = 'prm=' . $prm . '||at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . '||bl1=' . $this->atacks[$id]['b' . $a] . '||bl2=' . $this->atacks[$id]['b' . $b] . '||time1=' . $tm1 . '||time2=' . $tm2 . '||s' . $a . '=' . $this->users[$this->uids[$u1]]['sex'] . '||s' . $b . '=' . $this->users[$this->uids[$u2]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2'] . ''; - $mas = [ - 'text' => $text, - 'time' => time(), - 'vars' => '', - 'battle' => $this->info['id'], - 'id_hod' => $hodID, - 'vars' => $vLog, - 'type' => 1 - ]; - $this->add_log($mas); - } - - //Добавляем в лог действия приема (без атаки) - public function priemAddLogFast($u1, $u2, $prm, $text, $hodID, $tm) - { - $vLog = 'prm=' . $prm . '||time1=' . $tm . '||time2=' . $tm . '||s1=' . $this->users[$this->uids[$u1]]['sex'] . '||s2=' . $this->users[$this->uids[$u2]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2'] . ''; - $mas = [ - 'text' => $text, - 'time' => time(), - 'vars' => '', - 'battle' => $this->info['id'], - 'id_hod' => ($this->hodID + $hodID), - 'vars' => $vLog, - 'type' => 1 - ]; - $this->add_log($mas); - } - - //Считаем контру - public function contrRestart($id, $at, $v, $rjd = 0) - { - //уворот - $at = $this->mf1Razmen($id, $at, $v, true, $rjd); - //парирование - $at = $this->mf3Razmen($id, $at, $v, true, $rjd); - //контрудар - //$at = $this->mf5Razmen($id,$at,$v,true,$rjd); - //блок щитом (если есть щит, конечно) - $at = $this->mf4Razmen($id, $at, $v, true, $rjd); - //Проверяем урон - //$at = $this->yronRazmen($id,$at); - //крит - $at = $this->mf2Razmen($id, $at, $v, true, $rjd); - $at = $this->yronRazmen($id, $at, true, $rjd); - - return $at; - } - - //Расчитываем статы для конкретной зоны атаки - public function yronGetrazmenStats($s, $z) - { - global $u; - /* + //Расчитываем статы для конкретной зоны атаки + public function yronGetrazmenStats($s, $z) + { + global $u; + /* 1 - шлем 2 - наручи 3 - оружие (правая рука) @@ -5142,608 +5956,753 @@ class battleClass 16 - поножи 17 - ботинки */ - $zi = [ //Предметы влияющие на зоны - 1 => [1, 8, 9, 52], //голова - 2 => [4, 5, 6], //грудь - 3 => [2, 4, 5, 6, 13], //живот - 4 => [7, 16, 10, 11, 12], //пояс - 5 => [17] //ноги - ]; - // - $zi = $zi[$z]; - $i = 0; - // - while ($i < count($zi)) { - // - $t = $u->items['add']; - $ii = 0; - // - while ($ii < count($s['items'])) { - if (isset($s['items'][$ii]) && $s['items'][$ii]['inOdet'] == $zi[$i]) { - $po = $u->lookStats($s['items'][$ii]['data']); - // - $x = 0; - while ($x < count($t)) { - $n = $t[$x]; - if (isset($po['sv_' . $n])) { - $s[$n] += $po['sv_' . $n]; - if ($n == 'za') { - $iii = 1; - while ($iii <= 4) { - $s['za' . $iii] += $po['sv_' . $n]; - $iii++; - } - } elseif ($n == 'zm') { - $iii = 1; - while ($iii <= 4) { - $s['zm' . $iii] += $po['sv_' . $n]; - $iii++; - } - } elseif ($n == 'zma') { - $iii = 1; - while ($iii <= 7) { - $s['zma' . $iii] += $po['sv_' . $n]; - $iii++; - } - } - } - $x++; - } - // - } - $ii++; - } - // - $i++; - } - // - return $s; - } + $zi = [ //Предметы влияющие на зоны + 1 => [1, 8, 9, 52], //голова + 2 => [4, 5, 6], //грудь + 3 => [2, 4, 5, 6, 13], //живот + 4 => [7, 16, 10, 11, 12], //пояс + 5 => [17] //ноги + ]; + // + $zi = $zi[$z]; + $i = 0; + // + while ($i < count($zi)) { + // + $t = $u->items['add']; + $ii = 0; + // + while ($ii < count($s['items'])) { + if (isset($s['items'][$ii]) && $s['items'][$ii]['inOdet'] == $zi[$i]) { + $po = $u->lookStats($s['items'][$ii]['data']); + // + $x = 0; + while ($x < count($t)) { + $n = $t[$x]; + if (isset($po['sv_' . $n])) { + $s[$n] += $po['sv_' . $n]; + if ($n == 'za') { + $iii = 1; + while ($iii <= 4) { + $s['za' . $iii] += $po['sv_' . $n]; + $iii++; + } + } elseif ($n == 'zm') { + $iii = 1; + while ($iii <= 4) { + $s['zm' . $iii] += $po['sv_' . $n]; + $iii++; + } + } elseif ($n == 'zma') { + $iii = 1; + while ($iii <= 7) { + $s['zma' . $iii] += $po['sv_' . $n]; + $iii++; + } + } + } + $x++; + } + // + } + $ii++; + } + // + $i++; + } + // + return $s; + } - //Расчитываем ед. урона - public function yronGetrazmen($uid1, $uid2, $wp, $zona) - { - global $u; - $r = [ - 'y' => 0, - 'r' => '--' - ]; - //Определяем тип урона - /* + //Расчитываем ед. урона + public function yronGetrazmen($uid1, $uid2, $wp, $zona) + { + global $u; + //$oldst1 = $this->stats[$this->uids[$uid1]]; + //$oldst2 = $this->stats[$this->uids[$uid2]]; + //Получаем статы игрока 1 и 2 для конкретной зоны + //$this->stats[$this->uids[$uid1]] = $this->yronGetrazmenStats( $this->stats[$this->uids[$uid1]] , $zona ); + //$this->stats[$this->uids[$uid2]] = $this->yronGetrazmenStats( $this->stats[$this->uids[$uid2]] , $zona ); + //$this->a_save_stats($uid1); + //$this->a_save_stats($uid2); + // + //$this->a_testing_stats($uid1,$zona); + //$this->a_testing_stats($uid2,$zona); + // + $r = [ + 'y' => 0, + 'r' => '--', + ]; + //Определяем тип урона + /* Колющий Рубящий Режущий Дробящий */ - $witm = 0; - $witm_type = 0; + $witm = 0; + $witm_type = 0; - if ($wp > 0) { - $witm = $this->stats[$this->uids[$uid1]]['items'][$this->stats[$this->uids[$uid1]]['wp' . $wp . 'id']]; - $witm_data = $u->lookStats($witm['data']); - $witm_type = $this->weaponTx($witm); - } - if ($witm_type == 0 || $witm_type == 12) { - $witm_type2 = ''; - } else { - $witm_type2 = $witm_type; - } - $r['t'] = $witm_type2; - //Расчет брони - /* + if ($wp > 0) { + $witm = $this->stats[$this->uids[$uid1]]['items'][$this->stats[$this->uids[$uid1]]['wp' . $wp . 'id']]; + $witm_data = $u->lookStats($witm['data']); + $witm_type = $this->weaponTx($witm); + //$r['wt'] = $witm['type']; + } + //$witm_type=1; + if ($witm_type == 0 || $witm_type == 12) { + $witm_type2 = ''; + } else { + $witm_type2 = $witm_type; + } + $r['t'] = $witm_type2; + //Расчет брони + /* голова грудь живот пояс ноги */ - $bron = [ - 1 => [$this->stats[$this->uids[$uid2]]['mib1'], $this->stats[$this->uids[$uid2]]['mab1']], - 2 => [$this->stats[$this->uids[$uid2]]['mib2'], $this->stats[$this->uids[$uid2]]['mab2']], - 3 => [$this->stats[$this->uids[$uid2]]['mib2'], $this->stats[$this->uids[$uid2]]['mab2']], - 4 => [$this->stats[$this->uids[$uid2]]['mib3'], $this->stats[$this->uids[$uid2]]['mab3']], - 5 => [$this->stats[$this->uids[$uid2]]['mib4'], $this->stats[$this->uids[$uid2]]['mab4']] - ]; - // - //Увеличиваем параметры от текущего оружия которым бьем - //$witm_data - $iii = 1; - while ($iii <= 7) { - if (isset($witm_data['sv_a' . $iii]) && $witm_data['sv_a' . $iii] != 0) { - $this->stats[$this->uids[$uid1]]['a' . $iii] += $witm_data['sv_a' . $iii]; - } - if (isset($witm_data['sv_mg' . $iii]) && $witm_data['sv_mg' . $iii] != 0) { - $this->stats[$this->uids[$uid1]]['mg' . $iii] += $witm_data['sv_mg' . $iii]; - } - $iii++; - } - $iii = 1; - while ($iii <= 4) { - if (isset($witm_data['sv_aall']) && $witm_data['sv_aall'] != 0) { - $this->stats[$this->uids[$uid1]]['a' . $iii] += $witm_data['sv_aall']; - } - $iii++; - } - $iii = 1; - while ($iii <= 4) { - if (isset($witm_data['sv_mall']) && $witm_data['sv_mall'] != 0) { - $this->stats[$this->uids[$uid1]]['mg' . $iii] += $witm_data['sv_mall']; - } - $iii++; - } - $iii = 1; - while ($iii <= 7) { - if (isset($witm_data['sv_m2all']) && $witm_data['sv_m2all'] != 0) { - $this->stats[$this->uids[$uid1]]['mg' . $iii] += $witm_data['sv_m2all']; - } - $iii++; - } + $bron = [ + 1 => [$this->stats[$this->uids[$uid2]]['mib1'], $this->stats[$this->uids[$uid2]]['mab1']], + 2 => [$this->stats[$this->uids[$uid2]]['mib2'], $this->stats[$this->uids[$uid2]]['mab2']], + 3 => [$this->stats[$this->uids[$uid2]]['mib2'], $this->stats[$this->uids[$uid2]]['mab2']], + 4 => [$this->stats[$this->uids[$uid2]]['mib3'], $this->stats[$this->uids[$uid2]]['mab3']], + 5 => [$this->stats[$this->uids[$uid2]]['mib4'], $this->stats[$this->uids[$uid2]]['mab4']], + ]; + // + //Увеличиваем параметры от текущего оружия которым бьем + //$witm_data + $iii = 1; + while ($iii <= 7) { + if (isset($witm_data['sv_a' . $iii]) && $witm_data['sv_a' . $iii] != 0) { + $this->stats[$this->uids[$uid1]]['a' . $iii] += $witm_data['sv_a' . $iii]; + } + if (isset($witm_data['sv_mg' . $iii]) && $witm_data['sv_mg' . $iii] != 0) { + $this->stats[$this->uids[$uid1]]['mg' . $iii] += $witm_data['sv_mg' . $iii]; + } + $iii++; + } + $iii = 1; + while ($iii <= 4) { + if (isset($witm_data['sv_aall']) && $witm_data['sv_aall'] != 0) { + $this->stats[$this->uids[$uid1]]['a' . $iii] += $witm_data['sv_aall']; + } + $iii++; + } + $iii = 1; + while ($iii <= 4) { + if (isset($witm_data['sv_mall']) && $witm_data['sv_mall'] != 0) { + $this->stats[$this->uids[$uid1]]['mg' . $iii] += $witm_data['sv_mall']; + } + $iii++; + } + $iii = 1; + while ($iii <= 7) { + if (isset($witm_data['sv_m2all']) && $witm_data['sv_m2all'] != 0) { + $this->stats[$this->uids[$uid1]]['mg' . $iii] += $witm_data['sv_m2all']; + } + $iii++; + } - if (isset($witm_data['sv_m3']) && $witm_data['sv_m3'] != 0) { - $this->stats[$this->uids[$uid1]]['m3'] += $witm_data['sv_m3']; - } + if (isset($witm_data['sv_m3']) && $witm_data['sv_m3'] != 0) { + $this->stats[$this->uids[$uid1]]['m3'] += $witm_data['sv_m3']; + } - $iii = 1; - while ($iii <= 7) { - if (isset($witm_data['sv_pa' . $iii]) && $witm_data['sv_pa' . $iii] != 0) { - $this->stats[$this->uids[$uid1]]['pa' . $iii] += $witm_data['sv_pa' . $iii] + $witm_data['sv_m10']; - } - if (isset($witm_data['sv_pm' . $iii]) && $witm_data['sv_pm' . $iii] != 0) { - $this->stats[$this->uids[$uid1]]['pm' . $iii] += $witm_data['sv_pm' . $iii] + $witm_data['sv_m11a']; - if ($iii < 5) { - $this->stats[$this->uids[$uid1]]['pm' . $iii] += $witm_data['sv_m11']; + $iii = 1; + while ($iii <= 7) { + if (isset($witm_data['sv_pa' . $iii]) && $witm_data['sv_pa' . $iii] != 0) { + $this->stats[$this->uids[$uid1]]['pa' . $iii] += $witm_data['sv_pa' . $iii] + $witm_data['sv_m10']; + } + if (isset($witm_data['sv_pm' . $iii]) && $witm_data['sv_pm' . $iii] != 0) { + $this->stats[$this->uids[$uid1]]['pm' . $iii] += $witm_data['sv_pm' . $iii] + $witm_data['sv_m11a']; + if ($iii < 5) { + $this->stats[$this->uids[$uid1]]['pm' . $iii] += $witm_data['sv_m11']; + } + } + $iii++; + } + // + //мощность + подавление мощности противником + $wAp = 0; + $w3p = 0; + $w14p = 0; + /* + Старая формула, но Гамс попросил поменять где мощность магии добавляется поверх мощности урона + if($witm_type==12) { + //удар кулаком + $wAp += $this->stats[$this->uids[$uid1]]['m10']; + if($this->users[$this->uids[$uid1]]['align']==7) { + $wAp += 15; } + }elseif($witm_type < 5) { + $wAp += $this->stats[$this->uids[$uid1]]['pa'.$witm_type.''] + $this->stats[$this->uids[$uid1]]['m10'] + $witm_data['sv_pa'.$witm_type.'']; + $wAp -= $this->stats[$this->uids[$uid2]]['antpa'.$witm_type.'']; + }else{ + $wAp += $this->stats[$this->uids[$uid1]]['pm'.($witm_type-4).''] + $this->stats[$this->uids[$uid1]]['m11a'] + $witm_data['sv_pm'.($witm_type-4).'']; + $wAp -= $this->stats[$this->uids[$uid2]]['antpm'.($witm_type-4).'']; } - $iii++; - } - // - //мощность + подавление мощности противником - $wAp = 0; - $w3p = 0; - $w14p = 0; - if ($witm_type == 12) { - //удар кулаком - $wAp += $this->stats[$this->uids[$uid1]]['m10']; - if ($this->users[$this->uids[$uid1]]['align'] == 7) { - $wAp += 15; + */ + if ($witm_type == 12) { + //удар кулаком + $wAp += $this->stats[$this->uids[$uid1]]['m10']; + if ($this->users[$this->uids[$uid1]]['align'] == 7) { + $wAp += 15; + } + } elseif ($witm_type < 5) { + $wAp += $this->stats[$this->uids[$uid1]]['pa' . $witm_type . '']/* + $this->stats[$this->uids[$uid1]]['m10'] + $witm_data['sv_pa'.$witm_type.'']*/ + ; + $wAp -= $this->stats[$this->uids[$uid2]]['antpa' . $witm_type . '']; + } else { + $wAp += $this->stats[$this->uids[$uid1]]['m10'] + $this->stats[$this->uids[$uid1]]['pm' . ($witm_type - 4) . ''] + $this->stats[$this->uids[$uid1]]['m11a'] + $witm_data['sv_pm' . ($witm_type - 4) . '']; + $wAp -= $this->stats[$this->uids[$uid2]]['antpm' . ($witm_type - 4) . '']; + } + // + + // + //Владение данным оружием + $vladenie = 0; + + //Пробой брони + $proboi = 0; + $witm_data['m9'] = $this->stats[$this->uids[$uid1]]['m9']; + if (rand(1, 100) < floor($witm_data['m9'] / 2)) { + $proboi = floor($witm_data['m9'] / 2); + $r['pb'] = 1; + } + + + /*if( $this->mfs(4, $witm_data['m9'] , $this->users[$this->uids[$uid1]]['level'] , $this->users[$this->uids[$uid2]]['level']) == 1 ) { + $proboi = $witm_data['m9']; + $r['pb'] = 1; } - } elseif ($witm_type < 5) { - $wAp += $this->stats[$this->uids[$uid1]]['pa' . $witm_type . '']/* + $this->stats[$this->uids[$uid1]]['m10'] + $witm_data['sv_pa'.$witm_type.'']*/ - ; - $wAp -= $this->stats[$this->uids[$uid2]]['antpa' . $witm_type . '']; - } else { - $wAp += $this->stats[$this->uids[$uid1]]['m10'] + $this->stats[$this->uids[$uid1]]['pm' . ($witm_type - 4) . ''] + $this->stats[$this->uids[$uid1]]['m11a'] + $witm_data['sv_pm' . ($witm_type - 4) . '']; - $wAp -= $this->stats[$this->uids[$uid2]]['antpm' . ($witm_type - 4) . '']; - } - // + if( $this->mfs(4, $witm_data['add_m9'] , $this->users[$this->uids[$uid1]]['level'] , $this->users[$this->uids[$uid2]]['level']) == 1 ) { + $proboi = $witm_data['add_m9']; + $r['pb'] = 1; + }*/ - // - //Владение данным оружием - $vladenie = 0; + //всегда пробивает на % пробоя у оружия ГАМС (начало) + /*if( $witm_data['sv_m9'] > 0 ) { + $proboi = $witm_data['sv_m9']; + $r['pb'] = 1; + }*/ + //всегда пробивает на % пробоя у оружия ГАМС (конец) - //Пробой брони - $proboi = 0; - $witm_data['m9'] = $this->stats[$this->uids[$uid1]]['m9']; - if (rand(1, 100) < floor($witm_data['m9'] / 2)) { - $proboi = floor($witm_data['m9'] / 2); - $r['pb'] = 1; - } + if ($witm['2h'] > 0) { + //$witm_data['sv_yron_min'] = $witm_data['sv_yron_min']*2; + //$witm_data['sv_yron_max'] = $witm_data['sv_yron_max']*2; + } - $y = $this->yrn( - $this->stats[$this->uids[$uid1]], - $this->stats[$this->uids[$uid2]], - $this->users[$this->uids[$uid1]], - $this->users[$this->uids[$uid2]], - $this->users[$this->uids[$uid1]]['level'], - $this->users[$this->uids[$uid2]]['level'], - // - $witm_type, - $this->stats[$this->uids[$uid1]]['minAtack'], //мин. урон (добавочный) - $this->stats[$this->uids[$uid1]]['maxAtack'], //макс. урон - $bron[$zona][0], //броня мин. - $bron[$zona][1], //броня макс - // - $vladenie, //владения - (($wAp /*+ $w3p + $w14p*/)), //мощность урона - (round($this->stats[$this->uids[$uid1]]['m3'])), //мощность крита - (($this->stats[$this->uids[$uid2]]['za' . $witm_type2]) - $this->stats[$this->uids[$uid1]]['pza']), //защита от урона - $this->stats[$this->uids[$uid1]]['ozash'], //подавление защиты - $proboi, //пробой брони - 0, //хз - ($witm_data['sv_yron_min'] + $this->stats[$this->uids[$uid1]]['yron_min']), - ($witm_data['sv_yron_max'] + $this->stats[$this->uids[$uid1]]['yron_max']), - $this->stats[$this->uids[$uid2]]['zaproc'], - $this->stats[$this->uids[$uid2]]['zmproc'], - (($this->stats[$this->uids[$uid2]]['zm' . ($witm_type2 - 4)]) - round($this->stats[$this->uids[$uid1]]['pzm'] * 0.8)), //защита от урона - $this->stats[$this->uids[$uid1]]['omzash'], //подавление защиты - $witm['type'], - $witm - ); + $y = $this->yrn( + //$st1, $st2, $u1, $u2, $level, $level2, $type, $min_yron, $max_yron, $min_bron, $max_bron, + //$vladenie, $power_yron, $power_krit, $zashita, $ozashita, $proboi, $weapom_damage + $this->stats[$this->uids[$uid1]], + $this->stats[$this->uids[$uid2]], + $this->users[$this->uids[$uid1]], + $this->users[$this->uids[$uid2]], + $this->users[$this->uids[$uid1]]['level'], + $this->users[$this->uids[$uid2]]['level'], + // + $witm_type, + $this->stats[$this->uids[$uid1]]['minAtack'], //мин. урон (добавочный) + $this->stats[$this->uids[$uid1]]['maxAtack'], //макс. урон + $bron[$zona][0], //броня мин. + $bron[$zona][1], //броня макс + // + $vladenie, //владения + (($wAp /*+ $w3p + $w14p*/)), //мощность урона + (round($this->stats[$this->uids[$uid1]]['m3'])), //мощность крита + (($this->stats[$this->uids[$uid2]]['za' . $witm_type2]) - $this->stats[$this->uids[$uid1]]['pza']), + //защита от урона + $this->stats[$this->uids[$uid1]]['ozash'], //подавление защиты + $proboi, //пробой брони + 0, //хз + ($witm_data['sv_yron_min'] + $this->stats[$this->uids[$uid1]]['yron_min']), + ($witm_data['sv_yron_max'] + $this->stats[$this->uids[$uid1]]['yron_max']), + $this->stats[$this->uids[$uid2]]['zaproc'], + $this->stats[$this->uids[$uid2]]['zmproc'], + (($this->stats[$this->uids[$uid2]]['zm' . ($witm_type2 - 4)]) - round($this->stats[$this->uids[$uid1]]['pzm'] * 0.8)), + //защита от урона + $this->stats[$this->uids[$uid1]]['omzash'], //подавление защиты + $witm['type'], + $witm + ); - $r['y'] = round(rand($y['min'] + $proboi, $y['max'] + round($proboi / 2))); - $r['k'] = round(rand($y['Kmin'] + round($proboi / 4), $y['Kmax'] + round($proboi / 8))); + $r['y'] = round(rand($y['min'] + $proboi, $y['max'] + round($proboi / 2))); + $r['k'] = round(rand($y['Kmin'] + round($proboi / 4), $y['Kmax'] + round($proboi / 8))); - $r['m_y'] = $y['max']; - $r['m_k'] = $y['Kmax']; + $r['m_y'] = $y['max']; + $r['m_k'] = $y['Kmax']; - $r['bRND'] = $y['bRND']; + $r['bRND'] = $y['bRND']; - $r['w_type'] = $witm_type; + $r['w_type'] = $witm_type; - //Если второе оружие - урон ниже на 50% - $wp1 = $this->stats[$this->uids[$uid1]]['items'][$this->stats[$this->uids[$uid1]]['wp3id']]; - $wp2 = $this->stats[$this->uids[$uid1]]['items'][$this->stats[$this->uids[$uid1]]['wp14id']]; - - //тип от оружия - if ($witm['type'] == 18) { - $tp = 1; - } elseif ($witm['type'] == 19) { - $tp = 2; - } elseif ($witm['type'] == 20) { - $tp = 3; - } elseif ($witm['type'] == 21) { - $tp = 4; - } else { - //$tp = 0; - } - - if ($tp != $witm_type && $wp > 0) // ТУТ - { - $r['y'] = round($r['y'] / 3); - $r['r'] = round($r['r'] / 3); - $r['k'] = round($r['k'] / 3); - $r['m_k'] = round($r['m_k'] / 3); - $r['m_y'] = round($r['m_y'] / 3); - - } - - if (isset($this->stats[$this->uids[$uid2]]['zaproc'])) { - $r['y'] = round($r['y'] - $r['y'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); - $r['r'] = round($r['r'] - $r['r'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); - $r['k'] = round($r['k'] - $r['k'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); - $r['m_k'] = round($r['m_k'] - $r['m_k'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); - $r['m_y'] = round($r['m_y'] - $r['m_y'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); - if ($r['k'] < 1) { - $r['k'] = 2; - } - - } - - if ($r['y'] < 1) { - $r['y'] = 1; - } - if ($r['r'] >= 0) { - $r['r'] = -1; - } - if ($r['k'] < 1) { - $r['k'] = 1; - } - if ($r['m_k'] < 1) { - $r['m_k'] = 1; - } - if ($r['m_y'] < 1) { - $r['m_y'] = 1; - } - //$this->a_restart_stats($uid1,1); - //$this->a_testing_stats($uid2,1); - return $r; - } - - //Считаем урон - public function yronRazmen($id, $at, $pat = false, $rjd = 0) - { - - if ($pat == true) { - $pat = $at; - $at = $pat['p']; - } else { - unset($pat); - } - - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; - - if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { - $yhod = [1 => 1, 2 => 0]; - //$uid1 = $this->yhod_user($this->atacks[$id]['uid2'],$this->atacks[$id]['uid1'],$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); - } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { - $yhod = [1 => 0, 2 => 1]; - //$uid2 = $this->yhod_user($this->atacks[$id]['uid1'],$this->atacks[$id]['uid2'],$this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); - } - - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - } else { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - - //Считаем свойства от предметов - - - //Расчет удара (u2) по (u1) - //print_r( $at[$i] ); - $j = 0; - $k = 0; - $wp = 3; - if ($rjd > 0) { - $j = $rjd - 1; - } - //ТУТ - - //$checkhp1=$this->stats[$this->uids[$u2]]['hpNow']; - while ($j < count($at[$a]['atack']) && $j < 8) { - // КУДА БИЛ , ТИП УДАРА - if ($k == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) { - //Левая рука - $wp = 3; - $k = 1; - } else { - //Правая рука - if (isset($this->stats[$this->uids[$u1]]['wp14id']) && $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13) { - $wp = 14; - } else { - if (isset($this->stats[$this->uids[$u1]]['wp3id'])) { - $wp = 3; - } else { - //нет оружия - $wp = 3; - } - } - $k = 0; + //Если второе оружие - урон ниже на 50% + $wp1 = $this->stats[$this->uids[$uid1]]['items'][$this->stats[$this->uids[$uid1]]['wp3id']]; + $wp2 = $this->stats[$this->uids[$uid1]]['items'][$this->stats[$this->uids[$uid1]]['wp14id']]; + /*if( $wp == 14 ) { + if( $wp1['level'] >= $wp2['level'] ) { + $r['y'] = floor( $r['y'] * 0.5 ); + $r['k'] = floor( $r['k'] * 0.5 ); } - if ($wp > 0) { - $witm = $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp' . $wp . 'id']]; - $witm_type = $this->weaponTx($witm); - $at[$a]['atack'][$j]['wt'] = $witm['type']; + }elseif( $wp == 3 ) { + if( $wp2['level'] > $wp1['level'] ) { + $r['y'] = floor( $r['y'] * 0.5 ); + $r['k'] = floor( $r['k'] * 0.5 ); } - // - $at[$a]['atack'][$j]['yhod'] = $yhod[$a]; - // - if (!isset($at[$a]['atack'][$j]['yron']) && ( - $at[$a]['atack'][$j][1] == 1 || - $at[$a]['atack'][$j][1] == 4 || - $at[$a]['atack'][$j][1] == 5) - ) { - $at[$a]['atack'][$j]['yron'] = $this->yronGetrazmen($u1, $u2, $wp, $at[$a]['atack'][$j][0], $yhod[$b]); + }*/ - if ($at[$a]['atack'][$j][1] == 4) { - $at[$a]['atack'][$j]['yron']['y_old'] = $at[$a]['atack'][$j]['yron']['y']; - $at[$a]['atack'][$j]['yron']['y'] = round($at[$a]['atack'][$j]['yron']['k'] / 2); + //тип от оружия + if ($witm['type'] == 18) { + $tp = 1; + } elseif ($witm['type'] == 19) { + $tp = 2; + } elseif ($witm['type'] == 20) { + $tp = 3; + } elseif ($witm['type'] == 21) { + $tp = 4; + } else { + //$tp = 0; + } - } elseif ($at[$a]['atack'][$j][1] == 5) { - $at[$a]['atack'][$j]['yron']['y_old'] = $at[$a]['atack'][$j]['yron']['y']; - $at[$a]['atack'][$j]['yron']['y'] = $at[$a]['atack'][$j]['yron']['k']; + if ($tp != $witm_type && $wp > 0) // ТУТ + { + $r['y'] = round($r['y'] / 3); + $r['r'] = round($r['r'] / 3); + $r['k'] = round($r['k'] / 3); + $r['m_k'] = round($r['m_k'] / 3); + $r['m_y'] = round($r['m_y'] / 3); + } - } - $at[$a]['atack'][$j]['yron']['2h'] = $witm['2h']; - $at[$a]['atack'][$j]['yron']['w'] = $wp; - if ($at[$a]['atack'][$j]['yron']['y'] < 1) { - $at[$a]['atack'][$j]['yron']['r'] = '--'; - } else { - $at[$a]['atack'][$j]['yron']['r'] = '-' . $at[$a]['atack'][$j]['yron']['y']; - } - // - } else { - // - $at[$a]['atack'][$j]['block'] = $this->yronGetrazmen($u1, $u2, $wp, $at[$a]['atack'][$j][0], $yhod[$b]); - if ($at[$a]['atack'][$j][1] == 4) { - $at[$a]['atack'][$j]['block']['y_old'] = $at[$a]['atack'][$j]['block']['y']; - $at[$a]['atack'][$j]['block']['y'] = round($at[$a]['atack'][$j]['block']['k'] / 2); + if (isset($this->stats[$this->uids[$uid2]]['zaproc'])) { + $r['y'] = round($r['y'] - $r['y'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); + $r['r'] = round($r['r'] - $r['r'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); + $r['k'] = round($r['k'] - $r['k'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); + $r['m_k'] = round($r['m_k'] - $r['m_k'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); + $r['m_y'] = round($r['m_y'] - $r['m_y'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); + if ($r['k'] < 1) { + $r['k'] = 2; + } + } - } elseif ($at[$a]['atack'][$j][1] == 5) { - $at[$a]['atack'][$j]['block']['y_old'] = $at[$a]['atack'][$j]['block']['y']; - $at[$a]['atack'][$j]['block']['y'] = $at[$a]['atack'][$j]['block']['k']; + if ($r['y'] < 1) { + $r['y'] = 1; + } + if ($r['r'] >= 0) { + $r['r'] = -1; + } + if ($r['k'] < 1) { + $r['k'] = 1; + } + if ($r['m_k'] < 1) { + $r['m_k'] = 1; + } + if ($r['m_y'] < 1) { + $r['m_y'] = 1; + } + //$this->a_restart_stats($uid1,1); + //$this->a_testing_stats($uid2,1); + return $r; + } - } - $at[$a]['atack'][$j]['block']['2h'] = $witm['2h']; - $at[$a]['atack'][$j]['block']['w'] = $wp; - if ($at[$a]['atack'][$j]['block']['y'] < 1) { - $at[$a]['atack'][$j]['block']['r'] = '--'; - } else { - $at[$a]['atack'][$j]['block']['r'] = '-' . $at[$a]['atack'][$j]['block']['y']; - } - } - $j++; - } - $i++; - } + //Считаем урон + public function yronRazmen($id, $at, $pat = false, $rjd = 0) + { + if ($pat == true) { + $pat = $at; + $at = $pat['p']; + } else { + unset($pat); + } - if (isset($pat) && $pat != false) { - $pat['p'] = $at; - $at = $pat; - } + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; - return $at; - } + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { + $yhod = [1 => 1, 2 => 0]; + //$uid1 = $this->yhod_user($this->atacks[$id]['uid2'],$this->atacks[$id]['uid1'],$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); + } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { + $yhod = [1 => 0, 2 => 1]; + //$uid2 = $this->yhod_user($this->atacks[$id]['uid1'],$this->atacks[$id]['uid2'],$this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); + } - //Обновление здоровья - public function updateHealth($id, $at) - { - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } else { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } - if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { - $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); - } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { - $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); - } + //Считаем свойства от предметов - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - } else { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - //Рассчет дополнительных тактик - if ($this->atacks[$id]['out' . $b] > 0) { - //Игрок ${'u'.$a} получает тактики, возможно - if (rand(0, 100) < min(floor($this->stats[$this->uids[$u1]]['m6'] / 5), 20)) { - //выдаем тактику контрудара - if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { - $this->users[$this->uids[$u1]]['tactic3']++; - } - } - if (rand(0, 100) < min(floor($this->stats[$this->uids[$u1]]['m8'] / 4), 20)) { - //выдаем тактику щита - if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { - $this->users[$this->uids[$u1]]['tactic4']++; - } - } - } + //Расчет удара (u2) по (u1) + //print_r( $at[$i] ); + $j = 0; + $k = 0; + $wp = 3; + if ($rjd > 0) { + $j = $rjd - 1; + } + //ТУТ - //Расчет удара Цели (u2) по Атакующему (u1) - //print_r( $at[$i] ); - $j = 0; - $k = 0; - $wp = 3; - while ($j < count($at[$a]['atack']) && $j < 8) { - //Добавляем тактики - //$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['tactic1'] - if ($at[$a]['atack'][$j][1] == 1) { - //u1 ударил обычным ударом u2 - if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { - $this->users[$this->uids[$u1]]['tactic1']++; - } - //Двуручка - if ($at[$a]['atack'][$j]['yron']['2h'] == 1) { - if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { - $this->users[$this->uids[$u1]]['tactic1'] += 2; - } - } - } elseif ($at[$a]['atack'][$j][1] == 2) { - //u2 увернулся от u1 - } elseif ($at[$a]['atack'][$j][1] == 3) { - //u2 заблокировал удар u1 - if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { - $this->users[$this->uids[$u2]]['tactic4']++; - } - } elseif ($at[$a]['atack'][$j][1] == 4) { - //u1 пробил блок u2 критом - if (!isset($at[$a]['atack'][$j]['notactic2'])) { - if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { - $this->users[$this->uids[$u1]]['tactic2']++; - } - } - $this->users[$this->uids[$u2]]['tactic4']++; //тактика за пробив блок - } elseif ($at[$a]['atack'][$j][1] == 5) { - //u1 ударил критическим ударом u2 - if (!isset($at[$a]['atack'][$j]['notactic2'])) { - if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { - $this->users[$this->uids[$u1]]['tactic2'] += 2; - } - //Двуручка - if ($at[$a]['atack'][$j]['yron']['2h'] == 1) { - if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { - $this->users[$this->uids[$u1]]['tactic2'] += 1; + //$checkhp1=$this->stats[$this->uids[$u2]]['hpNow']; + while ($j < count($at[$a]['atack']) && $j < 8) { + // КУДА БИЛ , ТИП УДАРА + if ($k == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) { + //Левая рука + $wp = 3; + $k = 1; + } else { + //Правая рука + if (isset($this->stats[$this->uids[$u1]]['wp14id']) && $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13) { + $wp = 14; + } else { + if (isset($this->stats[$this->uids[$u1]]['wp3id'])) { + $wp = 3; + } else { + //нет оружия + $wp = 3; + } + } + $k = 0; + } + if ($wp > 0) { + $witm = $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp' . $wp . 'id']]; + $witm_type = $this->weaponTx($witm); + $at[$a]['atack'][$j]['wt'] = $witm['type']; + } + // + $at[$a]['atack'][$j]['yhod'] = $yhod[$a]; + // + /*if ($checkhp1>0) + {*/ + if (!isset($at[$a]['atack'][$j]['yron']) && ( + $at[$a]['atack'][$j][1] == 1 || + $at[$a]['atack'][$j][1] == 4 || + $at[$a]['atack'][$j][1] == 5) + ) { + // + //$at[$a]['atack'][$j]['yron'] = $this->yronGetrazmen($u1,$u2,$wp,$at[$a]['atack'][$j][0]); + $at[$a]['atack'][$j]['yron'] = $this->yronGetrazmen($u1, $u2, $wp, $at[$a]['atack'][$j][0], + $yhod[$b]); + /*if ($checkhp1 <1) + { + $at[$a]['atack'][$j]['yron']['y']=0; + $at[$a]['atack'][$j]['yron']['k']=0; + }*/ + + + if ($at[$a]['atack'][$j][1] == 4) { + $at[$a]['atack'][$j]['yron']['y_old'] = $at[$a]['atack'][$j]['yron']['y']; + $at[$a]['atack'][$j]['yron']['y'] = round($at[$a]['atack'][$j]['yron']['k'] / 2); + } elseif ($at[$a]['atack'][$j][1] == 5) { + $at[$a]['atack'][$j]['yron']['y_old'] = $at[$a]['atack'][$j]['yron']['y']; + $at[$a]['atack'][$j]['yron']['y'] = $at[$a]['atack'][$j]['yron']['k']; + } + $at[$a]['atack'][$j]['yron']['2h'] = $witm['2h']; + $at[$a]['atack'][$j]['yron']['w'] = $wp; + if ($at[$a]['atack'][$j]['yron']['y'] < 1) { + $at[$a]['atack'][$j]['yron']['r'] = '--'; + } else { + $at[$a]['atack'][$j]['yron']['r'] = '-' . $at[$a]['atack'][$j]['yron']['y']; + } + + /*if( ($at[$a]['atack'][$j][1] == 1 || + $at[$a]['atack'][$j][1] == 4 || + $at[$a]['atack'][$j][1] == 5)&& $at[$a]['atack'][$j][2] != 3) + { + $checkhp1=$checkhp1-$at[$a]['atack'][$j]['yron']['y']; + }*/ + // + } else { + // + //$at[$a]['atack'][$j]['block'] = $this->yronGetrazmen($u1,$u2,$wp,$at[$a]['atack'][$j][0]); + $at[$a]['atack'][$j]['block'] = $this->yronGetrazmen($u1, $u2, $wp, $at[$a]['atack'][$j][0], + $yhod[$b]); + /*if ($checkhp1 <1) + { + $at[$a]['atack'][$j]['block']['y']=0; + $at[$a]['atack'][$j]['block']['k']=0; + }*/ + if ($at[$a]['atack'][$j][1] == 4) { + $at[$a]['atack'][$j]['block']['y_old'] = $at[$a]['atack'][$j]['block']['y']; + $at[$a]['atack'][$j]['block']['y'] = round($at[$a]['atack'][$j]['block']['k'] / 2); + } elseif ($at[$a]['atack'][$j][1] == 5) { + $at[$a]['atack'][$j]['block']['y_old'] = $at[$a]['atack'][$j]['block']['y']; + $at[$a]['atack'][$j]['block']['y'] = $at[$a]['atack'][$j]['block']['k']; + } + $at[$a]['atack'][$j]['block']['2h'] = $witm['2h']; + $at[$a]['atack'][$j]['block']['w'] = $wp; + if ($at[$a]['atack'][$j]['block']['y'] < 1) { + $at[$a]['atack'][$j]['block']['r'] = '--'; + } else { + $at[$a]['atack'][$j]['block']['r'] = '-' . $at[$a]['atack'][$j]['block']['y']; + } + /* + if( ($at[$a]['atack'][$j][1] == 1 || + $at[$a]['atack'][$j][1] == 4 || + $at[$a]['atack'][$j][1] == 5)&& $at[$a]['atack'][$j][2] != 3) + { + $checkhp1=$checkhp1-$at[$a]['atack'][$j]['block']['y']; + }*/ + // + } + /*} + else + { + + if( $at[$a]['atack'][$j][1] == 1 || $at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5 ) + { + // + $at[$a]['atack'][$j]['yron'] = $this->yronGetrazmen($u1,$u2,$wp,$at[$a]['atack'][$j][0]); + $at[$a]['atack'][$j]['yron']['y']=0; + $at[$a]['atack'][$j]['yron']['k']=0; + if( $at[$a]['atack'][$j][1] == 4 ) { + $at[$a]['atack'][$j]['yron']['y_old'] = $at[$a]['atack'][$j]['yron']['y']; + $at[$a]['atack'][$j]['yron']['y'] = round($at[$a]['atack'][$j]['yron']['k']/2); + }elseif( $at[$a]['atack'][$j][1] == 5 ) { + $at[$a]['atack'][$j]['yron']['y_old'] = $at[$a]['atack'][$j]['yron']['y']; + $at[$a]['atack'][$j]['yron']['y'] = $at[$a]['atack'][$j]['yron']['k']; } - } - } - } elseif ($at[$a]['atack'][$j][1] == 6) { - //u2 парировал удар u1 - if (!isset($at[$a]['atack'][$j]['notactic5'])) { - if ($this->stats[$this->uids[$u1]]['this_animal'] == 0) { - $this->users[$this->uids[$u2]]['tactic5']++; - } - } - } elseif ($at[$a]['atack'][$j][1] == 7) { - //u2 блокировал щитом удар u1 //ТУТ ЩИТ - if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { - $this->users[$this->uids[$u2]]['tactic4']++; - } - } elseif ($at[$a]['atack'][$j][1] == 8) { - //u2 увернулся от удара u1 и нанес по нему контрудар - if ($this->stats[$this->uids[$u1]]['this_animal'] == 0) { - $this->users[$this->uids[$u2]]['tactic3']++; - } - } - // КУДА БИЛ , ТИП УДАРА - if (isset($at[$a]['atack'][$j]['yron']) && ( - $at[$a]['atack'][$j][1] == 1 || - $at[$a]['atack'][$j][1] == 4 || - $at[$a]['atack'][$j][1] == 5)) { - // - - if ($this->stats[$this->uids[$u2]]['hpNow'] <= $at[$a]['atack'][$j]['yron']['y']) { - $at[$a]['atack'][$j]['yron']['y'] = $this->stats[$this->uids[$u2]]['hpNow']; - } - if ($this->stats[$this->uids[$u2]]['hpNow'] <= $at[$a]['atack'][$j]['yron']['k']) { - $at[$a]['atack'][$j]['yron']['k'] = $this->stats[$this->uids[$u2]]['hpNow']; - } - - if ($at[$a]['atack'][$j]['yron']['y'] < 0) { - $at[$a]['atack'][$j]['yron']['y'] = 1; - $at[$a]['atack'][$j]['yron']['r'] = -1; - $at[$a]['atack'][$j]['yron']['k'] = 1; - } - if ($this->stats[$this->uids[$u2]]['hpNow'] < 1) { - $at[$a]['atack'][$j]['yron']['y'] = 0; - $at[$a]['atack'][$j]['yron']['r'] = -1; - $at[$a]['atack'][$j]['yron']['k'] = 0; - } - - //Добавляем нанесенный урон и опыт - //$this->users[$this->uids[$u1]]['battle_yron'] += $at[$a]['atack'][$j]['yron']['y']; - $this->takeExp($u1, $at[$a]['atack'][$j]['yron']['y'], $u1, $u2); - //Отнимаем НР - $this->stats[$this->uids[$u2]]['hpNow'] -= $at[$a]['atack'][$j]['yron']['y']; - $this->users[$this->uids[$u2]]['last_hp'] = -$at[$a]['atack'][$j]['yron']['y']; - - //echo '['.$u1.' -> '.$u2.']'; - $at[$a]['atack'][$j]['yron']['hp'] = $this->stats[$this->uids[$u2]]['hpNow']; - if ($at[$a]['atack'][$j]['yron']['hp'] < 1) { - $at[$a]['atack'][$j]['yron']['hp'] = 0; - } - $at[$a]['atack'][$j]['yron']['hpAll'] = $this->stats[$this->uids[$u2]]['hpAll']; - if ($at[$a]['atack'][$j]['yron']['hp'] > $at[$a]['atack'][$j]['yron']['hpAll']) { - $at[$a]['atack'][$j]['yron']['hp'] = $at[$a]['atack'][$j]['yron']['hpAll']; - } - // - //Травмирование - if (rand(0, 100) <= 50) { - if ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5) { - if (!isset($at[$a]['atack'][$j]['yron']['travma']) && rand(0, 1000) < 500 && $this->users[$this->uids[$u2]]['level'] > 1 && $this->stats[$this->uids[$u1]] > 1) { - $trvm_chns = floor(rand(0, 200) / 10); - if ($trvm_chns > 3 || $trvm_chns < 1) { - $trvm_chns = 0; - } - $at[$a]['atack'][$j]['yron']['travma'] = [$trvm_chns, 'Обыкновенная травма']; - unset($trvm_chns); + $at[$a]['atack'][$j]['yron']['2h'] = $witm['2h']; + $at[$a]['atack'][$j]['yron']['w'] = $wp; + if( $at[$a]['atack'][$j]['yron']['y'] < 1 ) { + $at[$a]['atack'][$j]['yron']['r'] = '--'; + }else{ + $at[$a]['atack'][$j]['yron']['r'] = '-' . $at[$a]['atack'][$j]['yron']['y']; } + // + }else{ + // + $at[$a]['atack'][$j]['block'] = $this->yronGetrazmen($u1,$u2,$wp,$at[$a]['atack'][$j][0]); + $at[$a]['atack'][$j]['block']['y']=0; + $at[$a]['atack'][$j]['block']['k']=0; + if( $at[$a]['atack'][$j][1] == 4 ) { + $at[$a]['atack'][$j]['block']['y_old'] = $at[$a]['atack'][$j]['block']['y']; + $at[$a]['atack'][$j]['block']['y'] = round($at[$a]['atack'][$j]['block']['k']/2); + }elseif( $at[$a]['atack'][$j][1] == 5 ) { + $at[$a]['atack'][$j]['block']['y_old'] = $at[$a]['atack'][$j]['block']['y']; + $at[$a]['atack'][$j]['block']['y'] = $at[$a]['atack'][$j]['block']['k']; + } + $at[$a]['atack'][$j]['block']['2h'] = $witm['2h']; + $at[$a]['atack'][$j]['block']['w'] = $wp; + if( $at[$a]['atack'][$j]['block']['y'] < 1 ) { + $at[$a]['atack'][$j]['block']['r'] = '--'; + }else{ + $at[$a]['atack'][$j]['block']['r'] = '-' . $at[$a]['atack'][$j]['block']['y']; + } + // } - } - } - $j++; - } - $i++; - } - return $at; - } + }*/ + $j++; + } - //Добавляем новую статистику игрока - public function addstatuser($id) - { - if ($id > 0) { - $uid = $id; - $id = $this->uids[$uid]; - mysql_query('INSERT INTO `battle_users` + $i++; + } + + if (isset($pat) && $pat != false) { + $pat['p'] = $at; + $at = $pat; + } + + return $at; + } + + //Обновление здоровья + public function updateHealth($id, $at) + { + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { + $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); + } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { + $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); + } + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } else { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } + + //Рассчет дополнительных тактик + if ($this->atacks[$id]['out' . $b] > 0) { + //Игрок ${'u'.$a} получает тактики, возможно + if (rand(0, 100) < min(floor($this->stats[$this->uids[$u1]]['m6'] / 5), 20)) { + //выдаем тактику контрудара + if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic3']++; + } + } + if (rand(0, 100) < min(floor($this->stats[$this->uids[$u1]]['m8'] / 4), 20)) { + //выдаем тактику щита + if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic4']++; + } + } + } + + //Расчет удара Цели (u2) по Атакующему (u1) + //print_r( $at[$i] ); + $j = 0; + $k = 0; + $wp = 3; + while ($j < count($at[$a]['atack']) && $j < 8) { + //Добавляем тактики + //$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['tactic1'] + if ($at[$a]['atack'][$j][1] == 1) { + //u1 ударил обычным ударом u2 + if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic1']++; + } + //Двуручка + if ($at[$a]['atack'][$j]['yron']['2h'] == 1) { + if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic1'] += 2; + } + } + } elseif ($at[$a]['atack'][$j][1] == 2) { + //u2 увернулся от u1 + } elseif ($at[$a]['atack'][$j][1] == 3) { + //u2 заблокировал удар u1 + if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u2]]['tactic4']++; + } + } elseif ($at[$a]['atack'][$j][1] == 4) { + //u1 пробил блок u2 критом + if (!isset($at[$a]['atack'][$j]['notactic2'])) { + if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic2']++; + } + } + $this->users[$this->uids[$u2]]['tactic4']++; //тактика за пробив блок + } elseif ($at[$a]['atack'][$j][1] == 5) { + //u1 ударил критическим ударом u2 + if (!isset($at[$a]['atack'][$j]['notactic2'])) { + if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic2'] += 2; + } + //Двуручка + if ($at[$a]['atack'][$j]['yron']['2h'] == 1) { + if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic2'] += 1; + } + } + } + } elseif ($at[$a]['atack'][$j][1] == 6) { + //u2 парировал удар u1 + if (!isset($at[$a]['atack'][$j]['notactic5'])) { + if ($this->stats[$this->uids[$u1]]['this_animal'] == 0) { + $this->users[$this->uids[$u2]]['tactic5']++; + } + } + } elseif ($at[$a]['atack'][$j][1] == 7) { + //u2 блокировал щитом удар u1 //ТУТ ЩИТ + if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u2]]['tactic4']++; + } + } elseif ($at[$a]['atack'][$j][1] == 8) { + //u2 увернулся от удара u1 и нанес по нему контрудар + if ($this->stats[$this->uids[$u1]]['this_animal'] == 0) { + $this->users[$this->uids[$u2]]['tactic3']++; + } + } + // КУДА БИЛ , ТИП УДАРА + if (isset($at[$a]['atack'][$j]['yron']) && ( + $at[$a]['atack'][$j][1] == 1 || + $at[$a]['atack'][$j][1] == 4 || + $at[$a]['atack'][$j][1] == 5)) { + // + + if ($this->stats[$this->uids[$u2]]['hpNow'] <= $at[$a]['atack'][$j]['yron']['y']) { + $at[$a]['atack'][$j]['yron']['y'] = $this->stats[$this->uids[$u2]]['hpNow']; + } + if ($this->stats[$this->uids[$u2]]['hpNow'] <= $at[$a]['atack'][$j]['yron']['k']) { + $at[$a]['atack'][$j]['yron']['k'] = $this->stats[$this->uids[$u2]]['hpNow']; + } + + if ($at[$a]['atack'][$j]['yron']['y'] < 0) { + $at[$a]['atack'][$j]['yron']['y'] = 1; + $at[$a]['atack'][$j]['yron']['r'] = -1; + $at[$a]['atack'][$j]['yron']['k'] = 1; + } + if ($this->stats[$this->uids[$u2]]['hpNow'] < 1) { + $at[$a]['atack'][$j]['yron']['y'] = 0; + $at[$a]['atack'][$j]['yron']['r'] = -1; + $at[$a]['atack'][$j]['yron']['k'] = 0; + } + + //Добавляем нанесенный урон и опыт + //$this->users[$this->uids[$u1]]['battle_yron'] += $at[$a]['atack'][$j]['yron']['y']; + $this->takeExp($u1, $at[$a]['atack'][$j]['yron']['y'], $u1, $u2); + //Отнимаем НР + $this->stats[$this->uids[$u2]]['hpNow'] -= $at[$a]['atack'][$j]['yron']['y']; + $this->users[$this->uids[$u2]]['last_hp'] = -$at[$a]['atack'][$j]['yron']['y']; + + //echo '['.$u1.' -> '.$u2.']'; + $at[$a]['atack'][$j]['yron']['hp'] = $this->stats[$this->uids[$u2]]['hpNow']; + if ($at[$a]['atack'][$j]['yron']['hp'] < 1) { + $at[$a]['atack'][$j]['yron']['hp'] = 0; + } + $at[$a]['atack'][$j]['yron']['hpAll'] = $this->stats[$this->uids[$u2]]['hpAll']; + if ($at[$a]['atack'][$j]['yron']['hp'] > $at[$a]['atack'][$j]['yron']['hpAll']) { + $at[$a]['atack'][$j]['yron']['hp'] = $at[$a]['atack'][$j]['yron']['hpAll']; + } + // + //Травмирование + if (rand(0, 100) <= 50) { + if ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5) { + if (!isset($at[$a]['atack'][$j]['yron']['travma']) && rand(0, + 1000) < 500 && $this->users[$this->uids[$u2]]['level'] > 1 && $this->stats[$this->uids[$u1]] > 1) { + $trvm_chns = floor(rand(0, 200) / 10); + if ($trvm_chns > 3 || $trvm_chns < 1) { + $trvm_chns = 0; + } + $at[$a]['atack'][$j]['yron']['travma'] = [$trvm_chns, 'Обыкновенная травма']; + unset($trvm_chns); + } + } + } + } + $j++; + } + + $i++; + } + + return $at; + } + + //Добавляем новую статистику игрока + public function addstatuser($id) + { + if ($id > 0) { + $uid = $id; + $id = $this->uids[$uid]; + mysql_query('INSERT INTO `battle_users` ( `battle`,`uid`,`time_enter`,`login`,`level`,`align`,`clan`,`hpAll`,`hp`,`hpStart`,`team` ) VALUES ( @@ -5758,379 +6717,384 @@ class battleClass "' . $this->stats[$id]['hpNow'] . '", "' . $this->users[$id]['team'] . '" )'); - } - } + } + } - //Проверяем приемы - public function priemsRazmen($id, $at) - { - if ($at == 'fast') { - $uid1 = $id[0]; - $uid2 = $id[1]; - } else { - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; - } - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - } else { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } + //Проверяем приемы + public function priemsRazmen($id, $at) + { + if ($at == 'fast') { + $uid1 = $id[0]; + $uid2 = $id[1]; + } else { + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + } + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } else { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } - //Получаем приемы и смотрим когда какой действует - $eff = $this->stats[$this->uids[$u1]]['effects']; - $this->stats[$this->uids[$u1]]['u_priem'] = []; - $j = 0; - while ($j <= count($eff)) { - if (isset($eff[$j]) && $eff[$j]['id_eff'] == 22 && $eff[$j]['v1'] == 'priem' && $eff[$j]['v2'] > 0) { - $this->stats[$this->uids[$u1]]['u_priem'][] = [$j, $eff[$j]['v2'], $this->prm[$eff[$j]['v2']]['act'], $eff[$j]['id'], $this->prm[$eff[$j]['v2']]['type_of'], $this->prm[$eff[$j]['v2']]['moment'], $this->prm[$eff[$j]['v2']]['moment_end'], $this->prm[$eff[$j]['v2']]['type_sec']]; - } - $j++; - } + //Получаем приемы и смотрим когда какой действует + $eff = $this->stats[$this->uids[$u1]]['effects']; + $this->stats[$this->uids[$u1]]['u_priem'] = []; + $j = 0; + while ($j <= count($eff)) { + if (isset($eff[$j]) && $eff[$j]['id_eff'] == 22 && $eff[$j]['v1'] == 'priem' && $eff[$j]['v2'] > 0) { + $this->stats[$this->uids[$u1]]['u_priem'][] = [ + $j, + $eff[$j]['v2'], + $this->prm[$eff[$j]['v2']]['act'], + $eff[$j]['id'], + $this->prm[$eff[$j]['v2']]['type_of'], + $this->prm[$eff[$j]['v2']]['moment'], + $this->prm[$eff[$j]['v2']]['moment_end'], + $this->prm[$eff[$j]['v2']]['type_sec'], + ]; + } + $j++; + } - $i++; - } - // - } + $i++; + } + // + } - //Приемы которые используются моментально - public function priemsRazmenMoment($id, $at) - { + //Приемы которые используются моментально + public function priemsRazmenMoment($id, $at) + { + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } else { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } + if (!isset($at['p']['p_cast'])) { + $at['p'] = $at; + $at['p']['p_cast'] = true; + } + // - $i = 1; - while ($i <= 2) { + //Приемы ухода от удара + if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 1) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + $this->stats[$this->uids[$u2]]['nopryh']--; + } + } + $j++; + } + } + //Приемы крита + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 2) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Приемы атаки + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 3) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + if (isset($fx_priem)) { + $at = $fx_priem($id, $at, $u1, $j); + } + unset(${'fx_priem'}); + } + } + $j++; + } + //Приемы защиты + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 4) { + if ($this->testPriemVarTrueZash($i, 1, $this->stats[$this->uids[$u1]]['u_priem'][$j][1], $a, $b, + $u1, $u2) == false) { + } elseif (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 5) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + // + $i++; + } + // + return $at; + } - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - } else { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if (!isset($at['p']['p_cast'])) { - $at['p'] = $at; - $at['p']['p_cast'] = true; - } - // + //Приемы которые используются моментально (в конце хода) + public function priemsRazmenMomentEnd($id, $at) + { + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; - //Приемы ухода от удара - if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 1) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - $this->stats[$this->uids[$u2]]['nopryh']--; - } - } - $j++; - } - } - //Приемы крита - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 2) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - } - } - $j++; - } - //Приемы атаки - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 3) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - if (isset($fx_priem)) { - $at = $fx_priem($id, $at, $u1, $j); - } - unset(${'fx_priem'}); - } - } - $j++; - } - //Приемы защиты - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 4) { - if ($this->testPriemVarTrueZash($i, 1, $this->stats[$this->uids[$u1]]['u_priem'][$j][1], $a, $b, $u1, $u2) == false) { + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } else { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } + if (!isset($at['p']['p_cast'])) { + $at['p'] = $at; + $at['p']['p_cast'] = true; + } + // - } elseif (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - } - } - $j++; - } - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 5) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - } - } - $j++; - } - // - $i++; - } - // - return $at; - } - - //Приемы которые используются моментально (в конце хода) - public function priemsRazmenMomentEnd($id, $at) - { - - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; - - $i = 1; - while ($i <= 2) { - - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - } else { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if (!isset($at['p']['p_cast'])) { - $at['p'] = $at; - $at['p']['p_cast'] = true; - } - // - - //Приемы ухода от удара - if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 1) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - $this->stats[$this->uids[$u2]]['nopryh']--; - } - } - $j++; - } - } - //Приемы крита - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 2) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - } - } - $j++; - } - //Приемы атаки - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 3) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - if (isset($fx_priem)) { - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - } - } - } - $j++; - } - //Приемы защиты - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 4) { - if ($this->testPriemVarTrueZash($i, 2, $this->stats[$this->uids[$u1]]['u_priem'][$j][1], $a, $b, $u1, $u2) == false) { - - } elseif (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - } - } - $j++; - } - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 5) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - } - } - $j++; - } - // - $i++; - } - // - return $at; - } + //Приемы ухода от удара + if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 1) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + $this->stats[$this->uids[$u2]]['nopryh']--; + } + } + $j++; + } + } + //Приемы крита + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 2) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Приемы атаки + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 3) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + if (isset($fx_priem)) { + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + } + $j++; + } + //Приемы защиты + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 4) { + if ($this->testPriemVarTrueZash($i, 2, $this->stats[$this->uids[$u1]]['u_priem'][$j][1], $a, $b, + $u1, $u2) == false) { + } elseif (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 5) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + // + $i++; + } + // + return $at; + } - //Используем приемы - public function priemsTestRazmen($id, $at) - { - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; + //Используем приемы + public function priemsTestRazmen($id, $at) + { + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - } else { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } else { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } - if (!isset($at['p']['p_cast'])) { - $at['p'] = $at; - $at['p']['p_cast'] = true; - } + if (!isset($at['p']['p_cast'])) { + $at['p'] = $at; + $at['p']['p_cast'] = true; + } - //ставка + //ставка - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 220 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 237 - || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 286 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 287 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 288 - || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 213) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - } - } - $j++; - } + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 220 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 237 + || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 286 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 287 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 288 + || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 213) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } - //Приемы ухода от удара - if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 1) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - $this->stats[$this->uids[$u2]]['nopryh']--; - } - } - $j++; - } - } - //Приемы крита - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 2) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - } - } - $j++; - } + //Приемы ухода от удара + if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 1) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + $this->stats[$this->uids[$u2]]['nopryh']--; + } + } + $j++; + } + } + //Приемы крита + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 2) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } - //Приемы атаки - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 3) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - if (isset($fx_priem)) { - $at = $fx_priem($id, $at, $u1, $j); - } - unset(${'fx_priem'}); - } - } - $j++; - } + //Приемы атаки + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 3) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + if (isset($fx_priem)) { + $at = $fx_priem($id, $at, $u1, $j); + } + unset(${'fx_priem'}); + } + } + $j++; + } - //Приемы защиты - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 4) { - if ($this->testPriemVarTrueZash($i, 3, $this->stats[$this->uids[$u1]]['u_priem'][$j][1], $a, $b, $u1, $u2) == false) { + //Приемы защиты + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 4) { + if ($this->testPriemVarTrueZash($i, 3, $this->stats[$this->uids[$u1]]['u_priem'][$j][1], $a, $b, + $u1, $u2) == false) { + } elseif (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + if (isset($fx_priem)) { + $at = $fx_priem($id, $at, $u1, $j); + } + unset(${'fx_priem'}); + } + } + $j++; + } - } elseif (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - if (isset($fx_priem)) { - $at = $fx_priem($id, $at, $u1, $j); - } - unset(${'fx_priem'}); - } - } - $j++; - } - - /* + /* $j = 0; while( $j <= count( $this->stats[$this->uids[$u2]]['u_priem'] ) ) { if( $this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 4 ) { @@ -6147,89 +7111,101 @@ class battleClass } */ - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - if (isset($fx_priem)) { - $at = $fx_priem($id, $at, $u1, $j); + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + if (isset($fx_priem)) { + $at = $fx_priem($id, $at, $u1, $j); + } + unset(${'fx_priem'}); + } + } + $j++; + } + //Прочие приемы + /*$j = 0; + while( $j <= count( $this->stats[$this->uids[$u1]]['u_priem'] ) ) { + if( $this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 8 ) { + if(file_exists('../../_incl_data/class/priem/'.$this->stats[$this->uids[$u1]]['u_priem'][$j][1].'.php')) { + $pr_used_this = $u1; + require('priem/'.$this->stats[$this->uids[$u1]]['u_priem'][$j][1].'.php'); + $at = $fx_priem($id,$at,$u1,$j); + unset(${'fx_priem'}); } - unset(${'fx_priem'}); } - } - $j++; - } - //Прочие приемы + $j++; + }*/ - $i++; - } + $i++; + } - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - } else { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } else { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } - if (!isset($at['p']['p_cast'])) { - $at['p'] = $at; - $at['p']['p_cast'] = true; - } + if (!isset($at['p']['p_cast'])) { + $at['p'] = $at; + $at['p']['p_cast'] = true; + } - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 8) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - } - } - $j++; - } + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 8) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 9) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_used_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - } - } - $j++; - } + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 9) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } - $i++; - } + $i++; + } - return $at; - } + return $at; + } - //Повторная проверка приемов - public function priemsRestartRazmen($id, $at) - { - if (isset($at['p'])) { - // - //Проверка - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; + //Повторная проверка приемов + public function priemsRestartRazmen($id, $at) + { + if (isset($at['p'])) { + // + //Проверка + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; - /* + /* Если возникнут проблемы с приемами, придется переписать алгоритм, сейчас он выглядит так: Цикл 1. Проверяем пользователя Цикл 2 внутри Цикла 1. Проверяем приемы поторые пользователь использовал @@ -6241,156 +7217,169 @@ class battleClass и т.д. */ - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - } else { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } else { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } - if (!isset($at['p']['p_cast'])) { - $at['p'] = $at; - $at['p']['p_cast'] = true; - } + if (!isset($at['p']['p_cast'])) { + $at['p'] = $at; + $at['p']['p_cast'] = true; + } - //Приемы ухода от удара - if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 1) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_tested_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - $this->stats[$this->uids[$u2]]['nopryh']--; - } - } - $j++; - } - } - //Приемы крита - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 2) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_tested_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - } - } - $j++; - } - //Приемы защиты - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 4) { - if ($this->testPriemVarTrueZash($i, 4, $this->stats[$this->uids[$u1]]['u_priem'][$j][1], $a, $b, $u1, $u2) == false) { + //Приемы ухода от удара + if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 1) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_tested_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + $this->stats[$this->uids[$u2]]['nopryh']--; + } + } + $j++; + } + } + //Приемы крита + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 2) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_tested_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Приемы защиты + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 4) { + if ($this->testPriemVarTrueZash($i, 4, $this->stats[$this->uids[$u1]]['u_priem'][$j][1], $a, $b, + $u1, $u2) == false) { + } elseif (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_tested_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Приемы атаки + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 3) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_tested_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_tested_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 8) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { + $pr_tested_this = $u2; + require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u2, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 9) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { + $pr_tested_this = $u2; + require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u2, $j); + unset(${'fx_priem'}); + } + } + $j++; + } - } elseif (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_tested_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - } - } - $j++; - } - //Приемы атаки - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 3) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_tested_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - } - } - $j++; - } - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_tested_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset(${'fx_priem'}); - } - } - $j++; - } - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 8) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { - $pr_tested_this = $u2; - require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u2, $j); - unset(${'fx_priem'}); - } - } - $j++; - } - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 9) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { - $pr_tested_this = $u2; - require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u2, $j); - unset(${'fx_priem'}); - } - } - $j++; - } + $i++; + } + // + $at = $at['p']; + unset($at['p']); + } + return $at; + } - $i++; - } - // - $at = $at['p']; - unset($at['p']); - } - return $at; - } + //Проверка действия приема + public function testPriemVarTrueZash($i, $id, $pid, $a, $b, $u1, $u2) + { + $r = true; + //echo '['.$pid.','.$i.','.$a.','.$b.']'; + $g = [ + 45 => ['221' => true], + ]; + if (isset($g[$pid])) { + //echo 1; + if ($g[$pid][$i . $a . $b] == true) { + $r = true; + } else { + // $r = false; + } + } + return $r; + } - //Проверка действия приема - public function testPriemVarTrueZash($i, $id, $pid, $a, $b, $u1, $u2) - { - $r = true; - //echo '['.$pid.','.$i.','.$a.','.$b.']'; - $g = [ - 45 => ['221' => true] - ]; - if (isset($g[$pid])) { - //echo 1; - if ($g[$pid][$i . $a . $b] == true) { - $r = true; - } else { - // $r = false; - } - } - return $r; - } + //Проверка урона приемов + public $um_priem = []; - //Проверка урона приемов - public $um_priem = []; - - public function testYronPriem($uid1, $uid2, $priem, $yron, $profil, $stabil, $test = false, $inlog = 0) - { - /* + /** + * Трогать очень осторожно. Этот шайтан как-то проверяет приёмы на враге + * и рассчитывает урон учитывая и эти приёмы тоже. + * @param $uid1 + * @param $uid2 + * @param $priem + * @param $yron + * @param $profil + * @param $stabil + * @param $test + * @param $inlog + * @return float|int|mixed + */ + public function testYronPriem($uid1, $uid2, $priem, $yron, $profil, $stabil, $test = false, $inlog = 0) + { + /* profil = { -1 - урон оружием -2 - урон магией @@ -6399,243 +7388,258 @@ class battleClass 5-12 - профильный магия } stabil - урон не подвержен мощностям и т.д - */ - //Проверка - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; + */ + //Проверка + $a = 1; + $b = 2; + $u1 = $uid1; + $u2 = $uid2; - //Проверяем приемы защиты игрока $u1 на урон игрока $u2 - //Получаем приемы и смотрим когда какой действует - if (!isset($this->stats[$this->uids[$u2]]['u_priem'])) { - $eff = $this->stats[$this->uids[$u2]]['effects']; - $j = 0; - while ($j <= count($eff)) { - if (isset($eff[$j]) && $eff[$j]['id_eff'] == 22 && $eff[$j]['v1'] == 'priem' && $eff[$j]['v2'] > 0) { - $this->stats[$this->uids[$u2]]['u_priem'][] = [$j, $eff[$j]['v2'], $this->prm[$eff[$j]['v2']]['act'], $eff[$j]['id'], $this->prm[$eff[$j]['v2']]['type_of'], $this->prm[$eff[$j]['v2']]['moment']]; - } - $j++; - } - unset($eff); - } - //Приемы защиты - $j = 0; - while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { - if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 4) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { - //if( $test == false ) { - // - $pr_momental_this = $u2; - require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); - $yron = $fx_moment($u2, $u1, $j, $yron, $profil); - unset(${'fx_moment'}); - // - } - } - $j++; - } + //Проверяем приемы защиты игрока $u1 на урон игрока $u2 + //Получаем приемы и смотрим когда какой действует + if (!isset($this->stats[$this->uids[$u2]]['u_priem'])) { + $eff = $this->stats[$this->uids[$u2]]['effects']; + $j = 0; + while ($j <= count($eff)) { + if (isset($eff[$j]) && $eff[$j]['id_eff'] == 22 && $eff[$j]['v1'] == 'priem' && $eff[$j]['v2'] > 0) { + $this->stats[$this->uids[$u2]]['u_priem'][] = [ + $j, + $eff[$j]['v2'], + $this->prm[$eff[$j]['v2']]['act'], + $eff[$j]['id'], + $this->prm[$eff[$j]['v2']]['type_of'], + $this->prm[$eff[$j]['v2']]['moment'], + ]; + } + $j++; + } + unset($eff); + } + //Приемы защиты + $j = 0; + while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { + if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 4) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { + $pr_momental_this = $u2; + require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); + $yron = $fx_moment($u2, $u1, $j, $yron, $profil); + unset(${'fx_moment'}); + } + } + $j++; + } - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_momental_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - if (isset($fx_moment)) { - $yron = $fx_moment($u1, $u2, $j, $yron, $profil, $inlog); - } - unset(${'fx_moment'}); - } - } - $j++; - } + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_momental_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + if (isset($fx_moment)) { + $yron = $fx_moment($u1, $u2, $j, $yron, $profil, $inlog); + } + unset(${'fx_moment'}); + } + } + $j++; + } - //Прочие приемы (влияет на урон от моментальных приемов) - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][7] == 5) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { - $pr_momental_this_seven = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - if (isset($fx_moment_seven)) { - $yron = $fx_moment_seven($u1, $u2, $j, $yron, $profil, $inlog); - } - unset(${'fx_moment_seven'}); - } - } - $j++; - } + //Прочие приемы (влияет на урон от моментальных приемов) + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][7] == 5) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_momental_this_seven = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + if (isset($fx_moment_seven)) { + $yron = $fx_moment_seven($u1, $u2, $j, $yron, $profil, $inlog); + } + unset(${'fx_moment_seven'}); + } + } + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 180) { + // Переохлаждение (снижает урон на 10%). Пан или пропал. + $x = mysql_fetch_row(mysql_query('select x from eff_users where v2 = 180 and uid = ' . $u1)); + $yron = 0.1 * $x[0]; + } + $j++; + } - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { - if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 8) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { - $pr_momental_this = $u2; - require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); - if (isset($fx_moment)) { - $yron = $fx_moment($u2, $u1, $j, $yron, $profil, $inlog); - } - unset(${'fx_moment'}); - } - } - if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 9) { - if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { - $pr_momental_this = $u2; - require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); - if (isset($fx_moment)) { - $yron = $fx_moment($u2, $u1, $j, $yron, $profil, $inlog); - } - unset(${'fx_moment'}); - } - } - $j++; - } + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { + if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 8) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { + $pr_momental_this = $u2; + require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); + if (isset($fx_moment)) { + $yron = $fx_moment($u2, $u1, $j, $yron, $profil, $inlog); + } + unset(${'fx_moment'}); + } + } + if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 9) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { + $pr_momental_this = $u2; + require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); + if (isset($fx_moment)) { + $yron = $fx_moment($u2, $u1, $j, $yron, $profil, $inlog); + } + unset(${'fx_moment'}); + } + } - if ($this->stats[$this->uids[$u2]]['zaproc'] > 0) { - $yron = round($yron - $yron * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); - if ($yron < 1) { - $yron = 1; - } - } + $j++; + } - return $yron; - } + if ($this->stats[$this->uids[$u2]]['zaproc'] > 0) { + $yron = round($yron - $yron * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); + if ($yron < 1) { + $yron = 1; + } + } + //var_dump($this->stats[$this->uids[$u2]]['u_priem']); + return $yron; + } - //Опыт + набитый урон за удар приемом\магией - public function priemYronSave($u1, $u2, $yron, $type) - { - //$type 0 - урон , 1 - хил + //Опыт + набитый урон за удар приемом\магией + public function priemYronSave($u1, $u2, $yron, $type) + { + //$type 0 - урон , 1 - хил - $this->testUserInfoBattle($u1); - $this->testUserInfoBattle($u2); + $this->testUserInfoBattle($u1); + $this->testUserInfoBattle($u2); - if (isset($this->uids[$u1])) { + if (isset($this->uids[$u1])) { + if ($this->stats[$this->uids[$u2]]['hpAll'] <= 1000) { + $adt6 = round(0.1 * (floor($yron) / $this->stats[$this->uids[$u2]]['hpAll'] * 100), 10); + } else { + $adt6 = round(0.1 * (floor($yron) / 1000 * 100), 10); + } - if ($this->stats[$this->uids[$u2]]['hpAll'] <= 1000) { - $adt6 = round(0.1 * (floor($yron) / $this->stats[$this->uids[$u2]]['hpAll'] * 100), 10); - } else { - $adt6 = round(0.1 * (floor($yron) / 1000 * 100), 10); - } + if ($yron > $this->stats[$this->uids[$u2]]['hpNow']) { + $yron = $this->stats[$this->uids[$u2]]['hpNow']; + } - if ($yron > $this->stats[$this->uids[$u2]]['hpNow']) { - $yron = $this->stats[$this->uids[$u2]]['hpNow']; - } - - if ($yron > 0) { - $this->users[$this->uids[$u1]]['battle_yron'] += $yron; - $this->users[$this->uids[$u1]]['battle_exp'] += round(1 * $this->testExp($yron, $this->stats[$this->uids[$u1]], $this->stats[$this->uids[$u2]], $u1, $u2)); - if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { - $this->users[$this->uids[$u1]]['tactic6'] += $adt6; - $this->stats[$this->uids[$u1]]['tactic6'] += $adt6; - } else { - $this->users[$this->uids[$u1]]['tactic6'] += $adt6 / 3; - $this->stats[$this->uids[$u1]]['tactic6'] += $adt6 / 3; - } - } else { - $adt6 = 0; - } - // - $this->users[$this->uids[$u2]]['last_hp'] = -$yron; - // - mysql_query('UPDATE `stats` SET + if ($yron > 0) { + $this->users[$this->uids[$u1]]['battle_yron'] += $yron; + $this->users[$this->uids[$u1]]['battle_exp'] += round(1 * $this->testExp($yron, + $this->stats[$this->uids[$u1]], $this->stats[$this->uids[$u2]], $u1, $u2)); + if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic6'] += $adt6; + $this->stats[$this->uids[$u1]]['tactic6'] += $adt6; + } else { + $this->users[$this->uids[$u1]]['tactic6'] += $adt6 / 3; + $this->stats[$this->uids[$u1]]['tactic6'] += $adt6 / 3; + } + } else { + $adt6 = 0; + } + // + $this->users[$this->uids[$u2]]['last_hp'] = -$yron; + // + mysql_query('UPDATE `stats` SET `tactic6` = `tactic6` + "' . $adt6 . '", `battle_yron` = `battle_yron` + "' . $yron . '", - `battle_exp` = `battle_exp` + "' . round($this->testExp($yron, $this->stats[$this->uids[$u1]], $this->stats[$this->uids[$u2]], $u1, $u2)) . '" + `battle_exp` = `battle_exp` + "' . round($this->testExp($yron, $this->stats[$this->uids[$u1]], + $this->stats[$this->uids[$u2]], $u1, $u2)) . '" WHERE `id` = "' . $u1 . '" LIMIT 1'); - // - mysql_query('UPDATE `stats` SET + // + mysql_query('UPDATE `stats` SET `last_hp` = "' . $this->users[$this->uids[$u2]]['last_hp'] . '" WHERE `id` = "' . $u2 . '" LIMIT 1'); - } - $this->addNewStat( - [ - 1 => [ - 'battle' => $this->info['id'], - 'uid1' => $this->users[$this->uids[$u1]]['id'], - 'uid2' => $this->users[$this->uids[$u2]]['id'], - 'time' => time(), - 'type' => 0, - 'a' => '10000', - 'b' => 0, - 'type_a' => 1, - 'type_b' => 0, - 'ma' => 1, - 'mb' => 1, - 'yrn' => $yron, - 'yrn_krit' => 0, - 'tm1' => $this->users[$this->uids[$u1]]['team'], - 'tm2' => $this->users[$this->uids[$u2]]['team'] - ] - ] - ); + } + $this->addNewStat( + [ + 1 => [ + 'battle' => $this->info['id'], + 'uid1' => $this->users[$this->uids[$u1]]['id'], + 'uid2' => $this->users[$this->uids[$u2]]['id'], + 'time' => time(), + 'type' => 0, + 'a' => '10000', + 'b' => 0, + 'type_a' => 1, + 'type_b' => 0, + 'ma' => 1, + 'mb' => 1, + 'yrn' => $yron, + 'yrn_krit' => 0, + 'tm1' => $this->users[$this->uids[$u1]]['team'], + 'tm2' => $this->users[$this->uids[$u2]]['team'], + ], + ] + ); + } - } + //Наносим удар между игроками + public $restart_stats_data = []; - //Наносим удар между игроками - public $restart_stats_data = []; + public function a_restart_stats($uid1, $glob) + { + if ($uid1 > 0 && isset($this->restart_stats_data[$uid1])) { + $this->stats[$this->uids[$uid1]] = $this->restart_stats_data[$uid1]; + if ($glob == 1) { + unset($this->restart_stats_data[$uid1]); + } + } + } - public function a_restart_stats($uid1, $glob) - { - if ($uid1 > 0 && isset($this->restart_stats_data[$uid1])) { - $this->stats[$this->uids[$uid1]] = $this->restart_stats_data[$uid1]; - if ($glob == 1) { - unset($this->restart_stats_data[$uid1]); + public function a_save_stats($uid1) + { + if ($uid1 > 0) { + $this->restart_stats_data[$uid1] = $this->stats[$this->uids[$uid1]]; + } + } + + public function a_testing_stats($uid1, $zona) + { + //$this->stats[$this->uids[$uid1]] = $this->yronGetrazmenStats( $this->stats[$this->uids[$uid1]] , $zona ); + if ($uid1 > 0) { + $this->stats[$this->uids[$uid1]] = $this->yronGetrazmenStats($this->stats[$this->uids[$uid1]], $zona); + } + } + + public $import_atack = []; + public $contr = []; + public $import_user = 0; + + public function startAtack($id) + { + global $c, $u, $log_text, $priem; + // + $this->prlog = []; + // + $this->inport_user = 0; + // + $vrm = [ + 'uid1' => $this->atacks[$id]['uid1'], + 'uid2' => $this->atacks[$id]['uid2'], + ]; + // + /* + if( $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0 ) { + $this->atacks[$id]['uid1'] = $this->atacks[$id]['uid2']; + }elseif( $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0 ) { + $this->atacks[$id]['uid2'] = $this->atacks[$id]['uid1']; } - } - } + */ + if (isset($this->atacks[$id]) && $this->atacks[$id]['lock'] == 0) { + //Прием разгадать тактику + $i = 1; + $j = 2; + $k = 0; + $unpr = ''; + while ($i <= 2) { + $untac = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `v1` = "priem" AND `v2` = "217" AND `uid` = "' . $this->atacks[$id]['uid' . $i] . '" AND `delete` = 0 LIMIT 1')); - public function a_save_stats($uid1) - { - if ($uid1 > 0) { - $this->restart_stats_data[$uid1] = $this->stats[$this->uids[$uid1]]; - } - } + $agrs = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `v1` = "priem" AND `v2` = "211" AND `uid` = "' . $this->atacks[$id]['uid' . $j] . '" AND `delete` = 0 LIMIT 1')); - public function a_testing_stats($uid1, $zona) - { - //$this->stats[$this->uids[$uid1]] = $this->yronGetrazmenStats( $this->stats[$this->uids[$uid1]] , $zona ); - if ($uid1 > 0) { - $this->stats[$this->uids[$uid1]] = $this->yronGetrazmenStats($this->stats[$this->uids[$uid1]], $zona); - } - } + if (isset($untac['id']) && !isset($agrs['id'])) { + // AND `a`.`v2` != 235 // AND `a`.`v2` != 273 AND `a`.`v2` != 286 AND `a`.`v2` != 287 AND `a`.`v2` != 288 - public $import_atack = []; - public $contr = []; - public $import_user = 0; - - public function startAtack($id) - { - global $c, $u, $log_text, $priem; - // - $this->prlog = []; - // - $this->inport_user = 0; - // - $vrm = [ - 'uid1' => $this->atacks[$id]['uid1'], - 'uid2' => $this->atacks[$id]['uid2'] - ]; - // - if (isset($this->atacks[$id]) && $this->atacks[$id]['lock'] == 0) { - - //Прием разгадать тактику - $i = 1; - $j = 2; - $k = 0; - $unpr = ''; - while ($i <= 2) { - $untac = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `v1` = "priem" AND `v2` = "217" AND `uid` = "' . $this->atacks[$id]['uid' . $i] . '" AND `delete` = 0 LIMIT 1')); - - $agrs = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `v1` = "priem" AND `v2` = "211" AND `uid` = "' . $this->atacks[$id]['uid' . $j] . '" AND `delete` = 0 LIMIT 1')); - - if (isset($untac['id']) && !isset($agrs['id'])) { - - // AND `a`.`v2` != 235 // AND `a`.`v2` != 273 AND `a`.`v2` != 286 AND `a`.`v2` != 287 AND `a`.`v2` != 288 - - $pvr['sp'] = mysql_query('SELECT `a`.* FROM `eff_users` AS `a` WHERE `a`.`uid` = "' . $this->atacks[$id]['uid' . $j] . '" AND `a`.`delete` = 0 AND `a`.`v1` = "priem" + $pvr['sp'] = mysql_query('SELECT `a`.* FROM `eff_users` AS `a` WHERE `a`.`uid` = "' . $this->atacks[$id]['uid' . $j] . '" AND `a`.`delete` = 0 AND `a`.`v1` = "priem" AND `a`.`v2` != 222 @@ -6678,204 +7682,296 @@ class battleClass AND `name` NOT LIKE "%Иммунитет%" LIMIT 30'); - while ($pvr['pl'] = mysql_fetch_array($pvr['sp'])) { - $pvr['pl']['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $pvr['pl']['v2'] . '" LIMIT 1')); - if (isset($pvr['pl']['priem']['id']) && $pvr['pl']['priem']['neg'] == 0) { - $this->delPriem($pvr['pl'], $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 100); - } + while ($pvr['pl'] = mysql_fetch_array($pvr['sp'])) { + $pvr['pl']['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $pvr['pl']['v2'] . '" LIMIT 1')); + if (isset($pvr['pl']['priem']['id']) && $pvr['pl']['priem']['neg'] == 0) { + $this->delPriem($pvr['pl'], $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 100); + } + } + // + $k++; + } + $j--; + $i++; + } + if ($u->info['admin'] > 0) { + //die('test'); + } + // + //UPDATE ... SET `lock` = 1 + //Копируем характиристики + //$this->a_save_stats($this->atacks[$id]['uid1']); + //$this->a_save_stats($this->atacks[$id]['uid2']); + // + + //Восстановление манны 1% за ход + if ($this->atacks[$id]['out1'] == 0) { + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['s6'] / 4 < $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['level']) { + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] += floor($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['level'] + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hod_minmana']); + } else { + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] += floor($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['s6'] / 4 + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hod_minmana']); + } + $this->users[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] = $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow']; + } + // + if ($this->atacks[$id]['out2'] == 0) { + if ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['s6'] / 4 < $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['level']) { + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] += floor($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['level'] + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hod_minmana']); + } else { + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] += floor($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['s6'] / 4 + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hod_minmana']); + } + $this->users[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] = $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow']; + } + // + //$this->users[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] = $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow']; + //$this->users[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] = $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow']; + // + + //Антистаты + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['antm3'] != 0) { + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['m3'] -= round($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['antm3']); + } + if ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['antm3'] != 0) { + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['m3'] -= round($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['antm3']); + } + //Если у ловкача ловкости больше нужной - добавляем лишнее АУ,, + /*if( $this->users[$this->uids[$this->atacks[$id]['uid1']]]['level'] == 7 ) { + if( $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['s2'] > 55 ) { + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['m5'] += ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['s2']-5)*6; } - // - $k++; } - $j--; - $i++; - } - //Восстановление манны 1% за ход - if ($this->atacks[$id]['out1'] == 0) { - if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['s6'] / 4 < $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['level']) { - $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] += floor($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['level'] + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hod_minmana']); - } else { - $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] += floor($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['s6'] / 4 + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hod_minmana']); + if( $this->users[$this->uids[$this->atacks[$id]['uid2']]]['level'] == 7 ) { + if( $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['s2'] > 55 ) { + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['m5'] += ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['s2']-5)*6; + } + }*/ + + // + $last_yrn = [ + 1 => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['battle_yron'], + 2 => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['battle_yron'], + ]; + + //Расчет количества блоков и противников + $this->testZonb($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2']); + + //Запускаем магию предметов + $this->magicItems($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $id); + $this->magicItems($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $id); + + // Получаем приемы игроков + $this->priemsRazmen($id, $at); + $this->priemsRazmenMoment($id, $at); + $this->priemsRazmen($id, $at); + + // Тестируем размены (получаем куда игрок ударил, куда попал, куда блок) + if ($this->atacks[$id]['uid2'] == 1) { + // $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['zona'] += 1; + // $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['zona'] += 1; + } + $at = $this->newRazmen($id); + + // Тестируем какие еще могут быть варианты при ударе + // Уворот, парирование, крит, пробить блок, блок щитом + // Блок щитом (если есть щит, конечно) + /* + $at = $this->mf4Razmen($id,$at,0); + // Крит + $at = $this->mf2Razmen($id,$at,0); + // Уворот + $at = $this->mf1Razmen($id,$at,0); + // Парирование + $at = $this->mf3Razmen($id,$at,0); + // Контрудар + $at = $this->mf5Razmen($id,$at,0); + // Считаем тип урона и урон + $at = $this->yronRazmen($id,$at); + */ + $at = $this->mf2Razmen($id, $at, $v); //крит + $at = $this->mf3Razmen($id, $at, $v); //парирование + $at = $this->mf4Razmen($id, $at, $v); //блок щитом + + $at = $this->mf1Razmen($id, $at, $v); //уворот + $at = $this->mf5Razmen($id, $at, $v); //контрудар + + $at = $this->yronRazmen($id, $at); //расчет урона + + // Проверяем приемы + //['effects'][ + // Получаем приемы игроков + $at = $this->priemsTestRazmen($id, $at); + // Собираем размен (пересчитываем и расчитываем урон и т.д) + $at = $this->priemsRestartRazmen($id, $at); //Повторная проверка приемов (если требуется) + // + + //Минусуем поглощенный урон + if (count($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['set_pog']) > 0) { + $this->testPogB($this->atacks[$id]['uid1'], 1, $id, 1); + } + if (count($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['set_pog']) > 0) { + $this->testPogB($this->atacks[$id]['uid2'], 1, $id, 1); + } + + // Обновляем НР и добавляем тактики + $at = $this->updateHealth($id, $at); + + // Заносим в логи + записываем статистику боя + //mysql_query('LOCK TABLES battle_logs WRITE'); + $this->addlogRazmen($id, $at); + //mysql_query('UNLOCK TABLES'); + //echo $this->seeRazmen($id,$at); + // NEW BATTLE SYSTEM + + //Запускаем магию предметов + $this->magicItems($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $id); + $this->magicItems($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $id); + + /* + if( $this->stats[$this->uids[$vrm['uid1']]]['yhod'] > 0 ) { + $this->atacks[$id]['uid1'] = $vrm['uid1']; + }elseif( $this->stats[$this->uids[$vrm['uid2']]]['yhod'] > 0 ) { + $this->atacks[$id]['uid2'] = $vrm['uid2']; } - $this->users[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] = $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow']; - } - // - if ($this->atacks[$id]['out2'] == 0) { - if ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['s6'] / 4 < $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['level']) { - $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] += floor($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['level'] + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hod_minmana']); - } else { - $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] += floor($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['s6'] / 4 + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hod_minmana']); - } - $this->users[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] = $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow']; - } + */ - //Антистаты - if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['antm3'] != 0) { - $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['m3'] -= round($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['antm3']); - } - if ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['antm3'] != 0) { - $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['m3'] -= round($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['antm3']); - } + // + //Возращаем зоны блока + $this->restZonb($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2']); + //обновляем задержки приемов + $zd1 = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems_z']); + $zd2 = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems_z']); + $zd1id = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems']); + $zd2id = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems']); + // + $prmos = []; + // + $i5 = 0; - // - $last_yrn = [ - 1 => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['battle_yron'], - 2 => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['battle_yron'] - ]; + while ($i5 < 51) { + if (isset($zd1[$i5]) && $zd1[$i5] > 0) { + //Если приемы не требуют ход + //$tstpm = mysql_fetch_array(mysql_query('SELECT `id` FROM `priems` WHERE `id` = "'.$zd1id[$i5].'" AND `activ` = 1 AND `img` NOT LIKE "wis_%" LIMIT 1')); + // + //if(isset($tstpm['id'])) { + // + $zd1[$i5] -= 1; + //}elseif( $this->users[$this->uids[$this->atacks[$id]['uid2']]]['id'] == $this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy'] ) { + //Обнуляем приемы не требующие ход + // $zd1[$i5] -= 1; + //}else{ + //не обнуляем (только те что требуют ход) + // if(!isset($prmos[$zd1id[$i5]])) { + // $prmos[$zd1id[$i5]] = mysql_fetch_array(mysql_query('SELECT `id`,`tr_hod` FROM `priems` WHERE `id` = "'.$zd1id[$i5].'" LIMIT 1')); + // } + // if( $prmos[$zd1id[$i5]]['tr_hod'] > 0 ) { + // $zd1[$i5] -= 1; + // } + //} + } else { + $zd1[$i5] = 0; + } + if (isset($zd2[$i5]) && $zd2[$i5] > 0) { + //Если приемы не требуют ход + //$tstpm = mysql_fetch_array(mysql_query('SELECT `id` FROM `priems` WHERE `id` = "'.$zd2id[$i5].'" AND `activ` = 1 AND `img` NOT LIKE "wis_%" LIMIT 1')); + // + //if(isset($tstpm['id'])) { + // + $zd2[$i5] -= 1; + //}elseif( $this->users[$this->uids[$this->atacks[$id]['uid1']]]['id'] == $this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy'] ) { + //Обнуляем приемы не требующие ход + // $zd2[$i5] -= 1; + //}else{ + //не обнуляем (только те что требуют ход) + // if(!isset($prmos[$zd2id[$i5]])) { + // $prmos[$zd2id[$i5]] = mysql_fetch_array(mysql_query('SELECT `id`,`tr_hod` FROM `priems` WHERE `id` = "'.$zd2id[$i5].'" LIMIT 1')); + // } + // if( $prmos[$zd2id[$i5]]['tr_hod'] > 0 ) { + // $zd2[$i5] -= 1; + // } + //} + } else { + $zd2[$i5] = 0; + } + $i5++; + } + unset($prmos); - //Расчет количества блоков и противников - $this->testZonb($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2']); + if ($this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy'] == $this->users[$this->uids[$this->atacks[$id]['uid2']]]['id']) { + $this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy'] = -$this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy']; + } - //Запускаем магию предметов - $this->magicItems($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $id); - $this->magicItems($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $id); + if ($this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy'] == $this->users[$this->uids[$this->atacks[$id]['uid1']]]['id']) { + $this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy'] = -$this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy']; + } - // Получаем приемы игроков - $this->priemsRazmen($id, $at); - $this->priemsRazmenMoment($id, $at); - $this->priemsRazmen($id, $at); + $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems_z'] = implode('|', $zd1); + $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems_z'] = implode('|', $zd2); + if ($this->atacks[$id]['uid1'] == $u->info['id']) { + $u->info['priems_z'] = implode('|', $zd1); + } elseif ($this->atacks[$id]['uid2'] == $u->info['id']) { + $u->info['priems_z'] = implode('|', $zd2); + } + // + //Проверяем тактики + $i = 1; + while ($i <= 6) { + if ($this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] > 25) { + $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] = 25; + } elseif ($this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] <= 0) { + $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] = 0; + } + if ($this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] > 25) { + $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] = 25; + } elseif ($this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] <= 0) { + $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] = 0; + } + $i++; + } + // + //Обновляем задержки предметов + mysql_query('UPDATE `items_users` SET `btl_zd` = `btl_zd` - 1 WHERE (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '") AND `btl_zd` > 0 AND `inOdet` > 0 LIMIT 100'); - $at = $this->newRazmen($id); + mysql_query('UPDATE `users` SET `notrhod` = "-1" WHERE `id` = "' . $this->atacks[$id]['uid1'] . '" OR `id` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 2'); - // Тестируем какие еще могут быть варианты при ударе - // Уворот, парирование, крит, пробить блок, блок щитом - // Блок щитом (если есть щит, конечно) - $at = $this->mf2Razmen($id, $at, $v); //крит - $at = $this->mf3Razmen($id, $at, $v); //парирование - $at = $this->mf4Razmen($id, $at, $v); //блок щитом + //Обновляем задержки пирожков + mysql_query('UPDATE `pirogi` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")'); + mysql_query('UPDATE `tactic` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")'); - $at = $this->mf1Razmen($id, $at, $v); //уворот - $at = $this->mf5Razmen($id, $at, $v); //контрудар + //Тактики + mysql_query('DELETE FROM `pirogi` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1'); + mysql_query('DELETE FROM `tactic` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1'); - $at = $this->yronRazmen($id, $at); //расчет урона - - // Проверяем приемы - //['effects'][ - // Получаем приемы игроков - $at = $this->priemsTestRazmen($id, $at); - // Собираем размен (пересчитываем и расчитываем урон и т.д) - $at = $this->priemsRestartRazmen($id, $at); //Повторная проверка приемов (если требуется) - // - - //Минусуем поглощенный урон - if (count($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['set_pog']) > 0) { - $this->testPogB($this->atacks[$id]['uid1'], 1, $id, 1); - } - if (count($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['set_pog']) > 0) { - $this->testPogB($this->atacks[$id]['uid2'], 1, $id, 1); - } - - // Обновляем НР и добавляем тактики - $at = $this->updateHealth($id, $at); - - // Заносим в логи + записываем статистику боя - $this->addlogRazmen($id, $at); - - //Запускаем магию предметов - $this->magicItems($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $id); - $this->magicItems($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $id); - - //Возращаем зоны блока - $this->restZonb($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2']); - //обновляем задержки приемов - $zd1 = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems_z']); - $zd2 = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems_z']); - $zd1id = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems']); - $zd2id = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems']); - // - $prmos = []; - // - $i5 = 0; - - while ($i5 < 51) { - if (isset($zd1[$i5]) && $zd1[$i5] > 0) { - //Если приемы не требуют ход - $zd1[$i5] -= 1; - } else { - $zd1[$i5] = 0; - } - if (isset($zd2[$i5]) && $zd2[$i5] > 0) { - $zd2[$i5] -= 1; - } else { - $zd2[$i5] = 0; - } - $i5++; - } - unset($prmos); - - if ($this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy'] == $this->users[$this->uids[$this->atacks[$id]['uid2']]]['id']) { - $this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy'] = -$this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy']; - } - - if ($this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy'] == $this->users[$this->uids[$this->atacks[$id]['uid1']]]['id']) { - $this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy'] = -$this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy']; - } - - $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems_z'] = implode('|', $zd1); - $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems_z'] = implode('|', $zd2); - if ($this->atacks[$id]['uid1'] == $u->info['id']) { - $u->info['priems_z'] = implode('|', $zd1); - } elseif ($this->atacks[$id]['uid2'] == $u->info['id']) { - $u->info['priems_z'] = implode('|', $zd2); - } - // - //Проверяем тактики - $i = 1; - while ($i <= 6) { - if ($this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] > 25) { - $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] = 25; - } elseif ($this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] <= 0) { - $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] = 0; - } - if ($this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] > 25) { - $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] = 25; - } elseif ($this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] <= 0) { - $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] = 0; - } - $i++; - } - // - //Обновляем задержки предметов - mysql_query('UPDATE `items_users` SET `btl_zd` = `btl_zd` - 1 WHERE (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '") AND `btl_zd` > 0 AND `inOdet` > 0 LIMIT 100'); - - mysql_query('UPDATE `users` SET `notrhod` = "-1" WHERE `id` = "' . $this->atacks[$id]['uid1'] . '" OR `id` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 2'); - - //Обновляем задержки пирожков - mysql_query('UPDATE `pirogi` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")'); - mysql_query('UPDATE `tactic` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")'); - - //Тактики - mysql_query('DELETE FROM `pirogi` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1'); - mysql_query('DELETE FROM `tactic` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1'); - - //Обновляем задержки пирожков - mysql_query('UPDATE `spells` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")'); - mysql_query('DELETE FROM `spells` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1'); + //Обновляем задержки пирожков + mysql_query('UPDATE `spells` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")'); + mysql_query('DELETE FROM `spells` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1'); - //Обновляем данные в battle_users - mysql_query('UPDATE `battle_users` SET `hp` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hpNow'] . '" + //Обновляем данные в battle_users + mysql_query('UPDATE `battle_users` SET `hp` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hpNow'] . '" WHERE `battle` = "' . $this->info['id'] . '" AND `uid` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1'); - mysql_query('UPDATE `battle_users` SET `hp` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hpNow'] . '" + mysql_query('UPDATE `battle_users` SET `hp` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hpNow'] . '" WHERE `battle` = "' . $this->info['id'] . '" AND `uid` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1'); - //Восстановление манны 25% от мудрости за ход + //Восстановление манны 25% от мудрости за ход - $last_yrn = [ - 1 => $last_yrn[1], - 2 => $last_yrn[2], - 10 => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['battle_yron'], - 20 => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['battle_yron'] - ]; + $last_yrn = [ + 1 => $last_yrn[1], + 2 => $last_yrn[2], + 10 => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['battle_yron'], + 20 => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['battle_yron'], + ]; - $last_yrn[100] = floor($last_yrn[10] - $last_yrn[1]); - $last_yrn[200] = floor($last_yrn[20] - $last_yrn[2]); - if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { - $this->save_stats($this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'])); - } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { - $this->save_stats($this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'])); - } - mysql_query('UPDATE `stats` SET + $last_yrn[100] = floor($last_yrn[10] - $last_yrn[1]); + $last_yrn[200] = floor($last_yrn[20] - $last_yrn[2]); + + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { + $this->save_stats($this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'])); + } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { + $this->save_stats($this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'])); + } + mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hpNow'] . '", `mpNow` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] . '", @@ -6894,8 +7990,8 @@ class battleClass `priems_z` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems_z'] . '" WHERE `id` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1'); - // - mysql_query('UPDATE `stats` SET + // + mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hpNow'] . '", `mpNow` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] . '", @@ -6914,210 +8010,229 @@ class battleClass `priems_z` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems_z'] . '" WHERE `id` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1'); - // - $this->priemsRazmenMomentEnd($id, $at); - //Минусуем заряд приема \ эффекта - $j = 1; - $jn = 1; - while ($j <= 2) { - $eff = $this->stats[$this->uids[$this->atacks[$id]['uid' . $j]]]['effects']; - $i = 0; - while ($i < count($eff)) { - if (isset($eff[$i])) { - if ($eff[$i]['timeUse'] == 77 && $eff[$i]['hod'] > -1) { - $eff[$i]['hod']--; - $eff[$i]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')); - if (round($eff[$i]['priem']['minmana'] * $eff[$i]['x']) != 0) { - //Отнимаем ману у того кто кастовал - $priem->minMana($eff[$i]['user_use'], round($eff[$i]['priem']['minmana'] * $eff[$i]['x'])); - if ($this->stats[$this->uids[$eff[$i]['user_use']]]['mpNow'] <= 0) { - $eff[$i]['hod'] = 0; - } - } - if (strripos($eff[$i]['data'], 'minprocmanahod') == true) { - $pvr = [ - 'x1' => 0, - 'x2' => 0, - 'd' => '', - 'i' => 0, - 'uid' => $eff[$i]['uid'], - 'color' => '', - 'color2' => '', - 'effx' => '', - 'x' => $eff[$i]['name'] - ]; - $pvr['d'] = explode('|', $eff[$i]['data']); - while ($pvr['i'] < count($pvr['d'])) { - if (isset($pvr['d'][$pvr['i']])) { - $pvr['d1'] = explode('=', $pvr['d'][$pvr['i']]); - if ($pvr['d1'][0] == 'minprocmanahod') { - $pvr['d1'] = explode('x', $pvr['d1'][1]); - $pvr['x1'] = $pvr['d1'][0]; - $pvr['x2'] = $pvr['d1'][1]; - } - } - $pvr['i']++; - } + // + $this->priemsRazmenMomentEnd($id, $at); + // - $pvr['mp'] = round($this->stats[$this->uids[$pvr['uid']]]['mpAll'] / 100 * rand($pvr['x1'], $pvr['x2'])); - $pvr['mpSee'] = 0; - $pvr['mpNow'] = floor($this->stats[$this->uids[$pvr['uid']]]['mpNow']); - $pvr['mpAll'] = $this->stats[$this->uids[$pvr['uid']]]['mpAll']; - $pvr['mpTr'] = $pvr['mpAll'] - $pvr['mpNow']; + // + //Минусуем заряд приема \ эффекта + $j = 1; + $jn = 1; + while ($j <= 2) { + $eff = $this->stats[$this->uids[$this->atacks[$id]['uid' . $j]]]['effects']; + $i = 0; + while ($i < count($eff)) { + if (isset($eff[$i])) { + if ($eff[$i]['timeUse'] == 77 && $eff[$i]['hod'] > -1) { + $eff[$i]['hod']--; + $eff[$i]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')); + if (round($eff[$i]['priem']['minmana'] * $eff[$i]['x']) != 0) { + //Отнимаем ману у того кто кастовал + $priem->minMana($eff[$i]['user_use'], + round($eff[$i]['priem']['minmana'] * $eff[$i]['x'])); + if ($this->stats[$this->uids[$eff[$i]['user_use']]]['mpNow'] <= 0) { + $eff[$i]['hod'] = 0; + } + } + if (strripos($eff[$i]['data'], 'minprocmanahod')) { + $pvr = [ + 'x1' => 0, + 'x2' => 0, + 'd' => '', + 'i' => 0, + 'uid' => $eff[$i]['uid'], + 'color' => '', + 'color2' => '', + 'effx' => '', + 'x' => $eff[$i]['name'], + ]; + $pvr['d'] = explode('|', $eff[$i]['data']); + while ($pvr['i'] < count($pvr['d'])) { + if (isset($pvr['d'][$pvr['i']])) { + $pvr['d1'] = explode('=', $pvr['d'][$pvr['i']]); + if ($pvr['d1'][0] == 'minprocmanahod') { + $pvr['d1'] = explode('x', $pvr['d1'][1]); + $pvr['x1'] = $pvr['d1'][0]; + $pvr['x2'] = $pvr['d1'][1]; + } + } + $pvr['i']++; + } - //$pvr['mp'] = $btl->hphe( $u->info['id'] , $pvr['hp'] ); + $pvr['mp'] = round($this->stats[$this->uids[$pvr['uid']]]['mpAll'] / 100 * rand($pvr['x1'], + $pvr['x2'])); + $pvr['mpSee'] = 0; + $pvr['mpNow'] = floor($this->stats[$this->uids[$pvr['uid']]]['mpNow']); + $pvr['mpAll'] = $this->stats[$this->uids[$pvr['uid']]]['mpAll']; + $pvr['mpTr'] = $pvr['mpAll'] - $pvr['mpNow']; - if ($pvr['mpTr'] > 0) { - //Требуется хилл - if ($pvr['mpTr'] < $pvr['mp']) { - $pvr['mp'] = $pvr['mpTr']; - } - $pvr['mpSee'] = '+' . $pvr['mp']; - $pvr['mpNow'] += $pvr['mp']; - } - if ($pvr['mpNow'] > $pvr['mpAll']) { - $pvr['mpNow'] = $pvr['mpAll']; - } elseif ($pvr['mpNow'] < 0) { - $pvr['mpNow'] = 0; - } - if ($pvr['mpSee'] == 0) { - $pvr['mpSee'] = '--'; - } + //$pvr['mp'] = $btl->hphe( $u->info['id'] , $pvr['hp'] ); - $btl->stats[$btl->uids[$pvr['uid']]]['mpNow'] = $pvr['mpNow']; - $btl->users[$btl->uids[$pvr['uid']]]['mpNow'] = $pvr['mpNow']; - mysql_query('UPDATE `stats` SET `mpNow` = "' . $btl->stats[$btl->uids[$pvr['uid']]]['mpNow'] . '" WHERE `id` = "' . $pvr['uid'] . '" LIMIT 1'); + if ($pvr['mpTr'] > 0) { + //Требуется хилл + if ($pvr['mpTr'] < $pvr['mp']) { + $pvr['mp'] = $pvr['mpTr']; + } + $pvr['mpSee'] = '+' . $pvr['mp']; + $pvr['mpNow'] += $pvr['mp']; + } + if ($pvr['mpNow'] > $pvr['mpAll']) { + $pvr['mpNow'] = $pvr['mpAll']; + } elseif ($pvr['mpNow'] < 0) { + $pvr['mpNow'] = 0; + } + if ($pvr['mpSee'] == 0) { + $pvr['mpSee'] = '--'; + } - $pvr['text'] = $this->addlt(1, 21, $this->users[$this->uids[$pvr['uid']]]['sex'], null); - $pvr['text2'] = '{tm1} ' . $pvr['text'] . ' на ' . $pvr['mpSee'] . ' [' . $pvr['mpNow'] . '/' . $pvr['mpAll'] . '] (Мана)'; - $this->priemAddLog($id, 1, 2, $pvr['uid'], 0, - '' . $pvr['x'] . '', - $pvr['text2'], - ($this->hodID + 0) - ); - //echo '[Восстанавливаем '.round(rand($pvr['x1'],$pvr['x2'])).'% маны.]'; - unset($pvr); - } - if (isset($this->rehodeff[$eff[$i]['id']])) { - $eff[$i]['hod'] = $this->rehodeff[$eff[$i]['id']]; - } - if ($eff[$i]['hod'] > 0) { - $this->stats[$this->uids[$this->atacks[$id]['uid' . $j]]]['effects']['hod'] = $eff[$i]['hod']; - mysql_query('UPDATE `eff_users` SET `hod` = "' . $eff[$i]['hod'] . '" WHERE `id` = "' . $eff[$i]['id'] . '" LIMIT 1'); - } else { - //удаляем прием - if ($eff[$i]['v2'] > 0) { - if ($j == 1) { - $jn = 2; - } else { - $jn = 1; - } - $this->delPriem($eff[$i], $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 3, $this->atacks[$id]['uid' . $jn]); - } - } - } elseif ($eff[$i]['timeUse'] == 77 && $eff[$i]['hod'] == -2) { - $eff[$i]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')); - $priem->hodUsePriem($eff[$i], $eff[$i]['priem']); - } else { - $eff[$i]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')); - if (isset($eff[$i]['priem']['minmana']) && round($eff[$i]['priem']['minmana'] * $eff[$i]['x']) != 0) { - //Отнимаем ману у того кто кастовал - $priem->minMana($eff[$i]['user_use'], round($eff[$i]['priem']['minmana'] * $eff[$i]['x'])); - if ($this->stats[$this->uids[$eff[$i]['user_use']]]['mpNow'] <= 0) { - $eff[$i]['hod'] = 0; - if (isset($this->rehodeff[$eff[$i]['id']])) { - $eff[$i]['hod'] = $this->rehodeff[$eff[$i]['id']]; - } - if ($eff[$i]['v2'] > 0) { - if ($j == 1) { - $jn = 2; - } else { - $jn = 1; - } - $this->delPriem($eff[$i], $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 3, $this->atacks[$id]['uid' . $jn]); - } - } - } elseif ($eff[$i]['timeUse'] > 100 && $eff[$i]['hod'] > -1 && $c['effz'] > 0) { + $btl->stats[$btl->uids[$pvr['uid']]]['mpNow'] = $pvr['mpNow']; + $btl->users[$btl->uids[$pvr['uid']]]['mpNow'] = $pvr['mpNow']; + mysql_query('UPDATE `stats` SET `mpNow` = "' . $btl->stats[$btl->uids[$pvr['uid']]]['mpNow'] . '" WHERE `id` = "' . $pvr['uid'] . '" LIMIT 1'); - $eff[$i]['hod']--; - if (isset($this->rehodeff[$eff[$i]['id']])) { - $eff[$i]['hod'] = $this->rehodeff[$eff[$i]['id']]; - } - if ($eff[$i]['hod'] > 0) { - $this->stats[$this->uids[$this->atacks[$id]['uid' . $j]]]['effects']['hod'] = $eff[$i]['hod']; - mysql_query('UPDATE `eff_users` SET `hod` = "' . $eff[$i]['hod'] . '" WHERE `id` = "' . $eff[$i]['id'] . '" LIMIT 1'); - } else { - //удаляем прием - if ($eff[$i]['v2'] > 0) { - if ($j == 1) { - $jn = 2; - } else { - $jn = 1; - } - $this->delPriem($eff[$i], $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 3, $this->atacks[$id]['uid' . $jn]); - } - } - } - // - } - } - $i++; - } - $j++; - } - // - // - //Проверяем - if ($c['propsk_die'] > 0 && $this->info['razdel'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) { - $cn1 = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `battle_out` WHERE `battle` = "' . $this->info['id'] . '" AND `uid1` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1')); - $cn2 = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `battle_out` WHERE `battle` = "' . $this->info['id'] . '" AND `uid1` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1')); - if ($cn1[0] > 3) { - // - $pvr['text2'] = '{tm1} Персонаж {u1} был убит из-за большого количества пропусков хода.'; - $this->priemAddLog($id, 1, 2, $this->atacks[$id]['uid1'], 0, '', - $pvr['text2'], - ($this->hodID + 0) - ); - unset($pvr); - mysql_query('UPDATE `stats` SET `hpNow` = 0 WHERE `id` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1'); - } - if ($cn2[0] > $c['propsk_die']) { - $pvr['text2'] = '{tm1} Персонаж {u1} был убит из-за большого количества пропусков хода.'; - $this->priemAddLog($id, 1, 2, $this->atacks[$id]['uid2'], 0, '', - $pvr['text2'], - ($this->hodID + 0) - ); - unset($pvr); - mysql_query('UPDATE `stats` SET `hpNow` = 0 WHERE `id` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1'); - } - } - // - //Обновляем текущего противника - if ($u->info['id'] == $this->atacks[$id]['uid1']) { - $u->info['enemy'] = $this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy']; - } - if ($u->info['id'] == $this->atacks[$id]['uid2']) { - $u->info['enemy'] = $this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy']; - } - //Удаляем размен из базы //ТУТ возможен лаг удаления - mysql_query('DELETE FROM `battle_act` WHERE ( `uid1` = "' . $this->atacks[$id]['uid1'] . '" AND `uid2` = "' . $this->atacks[$id]['uid2'] . '" ) OR + $pvr['text'] = $this->addlt(1, 21, $this->users[$this->uids[$pvr['uid']]]['sex'], null); + $pvr['text2'] = '{tm1} ' . $pvr['text'] . ' на ' . $pvr['mpSee'] . ' [' . $pvr['mpNow'] . '/' . $pvr['mpAll'] . '] (Мана)'; + $this->priemAddLog($id, 1, 2, $pvr['uid'], 0, + '' . $pvr['x'] . '', + $pvr['text2'], + ($this->hodID + 0) + ); + //echo '[Восстанавливаем '.round(rand($pvr['x1'],$pvr['x2'])).'% маны.]'; + unset($pvr); + } + + if (isset($this->rehodeff[$eff[$i]['id']])) { + $eff[$i]['hod'] = $this->rehodeff[$eff[$i]['id']]; + } + if ($eff[$i]['hod'] > 0) { + $this->stats[$this->uids[$this->atacks[$id]['uid' . $j]]]['effects']['hod'] = $eff[$i]['hod']; + mysql_query('UPDATE `eff_users` SET `hod` = "' . $eff[$i]['hod'] . '" WHERE `id` = "' . $eff[$i]['id'] . '" LIMIT 1'); + } else { + //удаляем прием + if ($eff[$i]['v2'] > 0) { + if ($j == 1) { + $jn = 2; + } else { + $jn = 1; + } + $this->delPriem($eff[$i], $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], + 3, $this->atacks[$id]['uid' . $jn]); + } + } + } elseif ($eff[$i]['timeUse'] == 77 && $eff[$i]['hod'] == -2) { + $eff[$i]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')); + $priem->hodUsePriem($eff[$i], $eff[$i]['priem']); + } else { + $eff[$i]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')); + if (isset($eff[$i]['priem']['minmana']) && round($eff[$i]['priem']['minmana'] * $eff[$i]['x']) != 0) { + //Отнимаем ману у того кто кастовал + $priem->minMana($eff[$i]['user_use'], + round($eff[$i]['priem']['minmana'] * $eff[$i]['x'])); + if ($this->stats[$this->uids[$eff[$i]['user_use']]]['mpNow'] <= 0) { + $eff[$i]['hod'] = 0; + if (isset($this->rehodeff[$eff[$i]['id']])) { + $eff[$i]['hod'] = $this->rehodeff[$eff[$i]['id']]; + } + if ($eff[$i]['v2'] > 0) { + if ($j == 1) { + $jn = 2; + } else { + $jn = 1; + } + $this->delPriem($eff[$i], + $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 3, + $this->atacks[$id]['uid' . $jn]); + } + } + } elseif ($eff[$i]['timeUse'] > 100 && $eff[$i]['hod'] > -1 && $c['effz'] > 0) { + $eff[$i]['hod']--; + if (isset($this->rehodeff[$eff[$i]['id']])) { + $eff[$i]['hod'] = $this->rehodeff[$eff[$i]['id']]; + } + if ($eff[$i]['hod'] > 0) { + $this->stats[$this->uids[$this->atacks[$id]['uid' . $j]]]['effects']['hod'] = $eff[$i]['hod']; + mysql_query('UPDATE `eff_users` SET `hod` = "' . $eff[$i]['hod'] . '" WHERE `id` = "' . $eff[$i]['id'] . '" LIMIT 1'); + } else { + //удаляем прием + if ($eff[$i]['v2'] > 0) { + if ($j == 1) { + $jn = 2; + } else { + $jn = 1; + } + $this->delPriem($eff[$i], + $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 3, + $this->atacks[$id]['uid' . $jn]); + } + } + } + // + } + } + $i++; + } + $j++; + } + // + // + //Проверяем + if ($c['propsk_die'] > 0 && $this->info['razdel'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) { + $cn1 = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `battle_out` WHERE `battle` = "' . $this->info['id'] . '" AND `uid1` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1')); + $cn2 = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `battle_out` WHERE `battle` = "' . $this->info['id'] . '" AND `uid1` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1')); + if ($cn1[0] > 3) { + // + $pvr['text2'] = '{tm1} Персонаж {u1} был убит из-за большого количества пропусков хода.'; + $this->priemAddLog($id, 1, 2, $this->atacks[$id]['uid1'], 0, '', + $pvr['text2'], + ($this->hodID + 0) + ); + unset($pvr); + mysql_query('UPDATE `stats` SET `hpNow` = 0 WHERE `id` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1'); + } + if ($cn2[0] > $c['propsk_die']) { + $pvr['text2'] = '{tm1} Персонаж {u1} был убит из-за большого количества пропусков хода.'; + $this->priemAddLog($id, 1, 2, $this->atacks[$id]['uid2'], 0, '', + $pvr['text2'], + ($this->hodID + 0) + ); + unset($pvr); + mysql_query('UPDATE `stats` SET `hpNow` = 0 WHERE `id` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1'); + } + } + // + //Обновляем текущего противника + if ($u->info['id'] == $this->atacks[$id]['uid1']) { + $u->info['enemy'] = $this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy']; + } + if ($u->info['id'] == $this->atacks[$id]['uid2']) { + $u->info['enemy'] = $this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy']; + } + //Удаляем размен из базы //ТУТ возможен лаг удаления + mysql_query('DELETE FROM `battle_act` WHERE ( `uid1` = "' . $this->atacks[$id]['uid1'] . '" AND `uid2` = "' . $this->atacks[$id]['uid2'] . '" ) OR ( `uid2` = "' . $this->atacks[$id]['uid1'] . '" AND `uid1` = "' . $this->atacks[$id]['uid2'] . '" )'); + //$this->a_restart_stats($this->atacks[$id]['uid1'],1); + //$this->a_restart_stats($this->atacks[$id]['uid2'],1); - unset($old_s1, $old_s2); - unset($this->ga[$this->atacks[$id]['uid1']][$this->atacks[$id]['uid2']], $this->ga[$this->atacks[$id]['uid2']][$this->atacks[$id]['uid1']]); - unset($this->ag[$this->atacks[$id]['uid1']][$this->atacks[$id]['uid2']], $this->ag[$this->atacks[$id]['uid2']][$this->atacks[$id]['uid1']]); - unset($this->atacks[$id]); - mysql_query('DELETE FROM `battle_act` WHERE `id` = "' . $id . '" LIMIT 1'); - unset($old_s1, $old_s2); - // - } - } + unset($old_s1, $old_s2); + unset($this->ga[$this->atacks[$id]['uid1']][$this->atacks[$id]['uid2']], $this->ga[$this->atacks[$id]['uid2']][$this->atacks[$id]['uid1']]); + unset($this->ag[$this->atacks[$id]['uid1']][$this->atacks[$id]['uid2']], $this->ag[$this->atacks[$id]['uid2']][$this->atacks[$id]['uid1']]); + unset($this->atacks[$id]); + mysql_query('DELETE FROM `battle_act` WHERE `id` = "' . $id . '" LIMIT 1'); + // + //Возвращаем старые характеристики + /* + $this->stats[$this->uids[$this->atacks[$id]['uid1']]] = $old_s1; + $this->stats[$this->uids[$this->atacks[$id]['uid2']]] = $old_s2; + */ + unset($old_s1, $old_s2); + // + } + } - //Сохранение данные - public function save_stats($uid) - { - mysql_query('UPDATE `stats` SET + //Сохранение данные + public function save_stats($uid) + { + mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->stats[$this->uids[$uid]]['hpNow'] . '", `mpNow` = "' . $this->stats[$this->uids[$uid]]['mpNow'] . '", @@ -7136,485 +8251,761 @@ class battleClass `priems_z` = "' . $this->users[$this->uids[$uid]]['priems_z'] . '" WHERE `id` = "' . $uid . '" LIMIT 1'); - } + } - //Отображение НР - public function hpSee($now, $all, $type = 1) - { - $r = '[' . $now . '/' . $all . ']'; - if ($all > 10000) { - $type = 2; - } - if ($type == 1) { + //Отображение НР + public function hpSee($now, $all, $type = 1) + { + $r = '[' . $now . '/' . $all . ']'; + if ($all > 10000) { + $type = 2; + } + if ($type == 1) { + } elseif ($type == 2) { + $p1 = floor($now / $all * 100); + $r = '[' . $p1 . '/100%]'; + } + return $r; + } - } elseif ($type == 2) { - $p1 = floor($now / $all * 100); - $r = '[' . $p1 . '/100%]'; - } - return $r; - } - - //Быстрый лог - public function addFlog($t, $u1, $u2) - { - $vLog = ''; - if (isset($this->info[$this->uids[$u1]]['id'])) { - $vLog .= 'time1=' . time() . '||s1=' . $this->users[$this->uids[$u1]]['id']['sex'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login'] . '||'; - } - if (isset($this->info[$this->uids[$u2]]['id'])) { - $vLog .= 'time2=' . time() . '||s2=' . $this->users[$this->uids[$u2]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||login2=' . $this->users[$this->uids[$u2]]['login'] . ''; - } - $vLog = rtrim($vLog, '||'); - $mas1 = ['time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'text' => '', 'vars' => $vLog, 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1']; - $mas1['text'] = $t; - $this->add_log($mas1); - } - - //Выводим лог боя - public function lookLog() - { - global $c, $u, $log_text; - $hodID = mysql_fetch_array(mysql_query('SELECT `id`,`id_hod` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` ASC LIMIT 1')); - if ($hodID['id_hod'] <= 1) { - $u->info['alog'] = 0; - } - if (isset($hodID['id']) && $this->info['team_win'] != -1) { - $hodID = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_logs_save` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` ASC LIMIT 1')); - } - if (isset($hodID['id'])) { - $hodID = $hodID['id']; - } else { - $hodID = 0; - } - - $updt = 0; - if ($u->info['design'] == 1) { - $js = ''; - $pll = 0; - if ($_POST['idlog'] < 1) { - $_POST['idlog'] = 0; - } - $talog = mysql_fetch_array(mysql_query('SELECT `alog` FROM `stats` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1')); - $sp = mysql_query('SELECT - `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` - FROM `battle_logs` - WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'); - if (isset($sp) && $this->info['team_win'] != -1) { - $sp = mysql_query('SELECT - `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` - FROM `battle_logs_save` - WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'); - } - $jin = 0; - $forYou2 = 0; - while ($pl = mysql_fetch_array($sp)) { - if ($jin == 0) { - $u->info['alog'] = $pl['id_hod']; - } - $jin++; - if ((true == false) && ($pl['type'] == 1 || $pl['type'] == 6)) { - - } else { - $rt = $pl['text']; - //$rt = str_replace('^^^^','=',$rt); - $pl['vars'] = str_replace('^^^^', 'rvnO', $pl['vars']); - $rt = str_replace('{tm1}', '' . date('H:i', $pl['time']) . '', $rt); - $rt = str_replace('{tm2}', '' . date('H:i', $pl['time']) . '', $rt); - $rt = str_replace('{tm3}', '' . date('d.m.Y H:i', $pl['time']) . '', $rt); - $rt = str_replace('{tm4}', '' . date('d.m.Y H:i', $pl['time']) . '', $rt); - $pl['text'] = $rt; - } - unset($rt); - if ($pll < $pl['id']) { - $pll = $pl['id']; - } - $js = 'add_log(' . $pl['id'] . ',' . $forYou2 . ',"' . $pl['text'] . '",' . $pl['id_hod'] . ',0,0,"' . str_replace('"', '"', $pl['vars']) . '");' . $js; - - } - mysql_query('UPDATE `stats` SET `alog`="' . $u->info['alog'] . '" WHERE `id` ="' . $u->info['id'] . '" LIMIT 1'); - $js .= 'id_log=' . $pll . ';'; - } else { - $js = ''; - $pll = 0; - if ($_POST['idlog'] < 1) { - $_POST['idlog'] = 0; - } - $talog = mysql_fetch_array(mysql_query('SELECT `alog` FROM `stats` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1')); - $sp = mysql_query('SELECT - `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` - FROM `battle_logs` - WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'); - if (isset($sp) && $this->info['team_win'] != -1) { - $sp = mysql_query('SELECT - `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` - FROM `battle_logs_save` - WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'); - } - $jin = 0; - $forYou2 = 0; - while ($pl = mysql_fetch_array($sp)) { - if ($jin == 0) { - $u->info['alog'] = $pl['id_hod']; - } - $jin++; - $rt = $pl['text']; - //$rt = str_replace('^^^^','=',$rt); - $pl['vars'] = str_replace('^^^^', 'rvnO', $pl['vars']); - $rt = str_replace('{tm1}', '' . date('H:i', $pl['time']) . '', $rt); - $rt = str_replace('{tm2}', '' . date('H:i', $pl['time']) . '', $rt); - $rt = str_replace('{tm3}', '' . date('d.m.Y H:i', $pl['time']) . '', $rt); - $rt = str_replace('{tm4}', '' . date('d.m.Y H:i', $pl['time']) . '', $rt); - $pl['text'] = $rt; - unset($rt); - if ($pll < $pl['id']) { - $pll = $pl['id']; - } - $js = 'add_log(' . $pl['id'] . ',' . $forYou2 . ',"' . $pl['text'] . '",' . $pl['id_hod'] . ',0,0,"' . str_replace('"', '"', $pl['vars']) . '");' . $js; + //Быстрый лог + public function addFlog($t, $u1, $u2) + { + $vLog = ''; + if (isset($this->info[$this->uids[$u1]]['id'])) { + $vLog .= 'time1=' . time() . '||s1=' . $this->users[$this->uids[$u1]]['id']['sex'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login'] . '||'; + } + if (isset($this->info[$this->uids[$u2]]['id'])) { + $vLog .= 'time2=' . time() . '||s2=' . $this->users[$this->uids[$u2]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||login2=' . $this->users[$this->uids[$u2]]['login'] . ''; + } + $vLog = rtrim($vLog, '||'); + $mas1 = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'text' => '', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + $mas1['text'] = $t; + $this->add_log($mas1); + } - } - mysql_query('UPDATE `stats` SET `alog`="' . $u->info['alog'] . '" WHERE `id` ="' . $u->info['id'] . '" LIMIT 1'); - $js .= 'id_log=' . $pll . ';'; - } - - - return $js; - } - -//Новый лог Мой Лог - public function lookmLog() - { - global $c, $u, $log_text; - $js = ''; - $pll = 0; - - if ($this->info['type'] != 9) { - $hodID = mysql_fetch_array(mysql_query('SELECT `id`,`id_hod` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` ASC LIMIT 1')); - if ($hodID['id_hod'] <= 1) { - $u->info['mlog'] = 0; - } - if (isset($hodID['id']) && $this->info['team_win'] != -1) { - $hodID = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_logs_save` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` ASC LIMIT 1')); - } - if (isset($hodID['id'])) { + //Выводим лог боя + /* public function logCache() + { + global $c,$u,$log_text; + sleep(2); + $thishodID = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_logs` WHERE `battle` = "'.$this->info['id'].'" ORDER BY `id` DESC LIMIT 1')); + if(isset($hodID['id'])) { $hodID = $hodID['id']; - } else { + }else{ $hodID = 0; } - $tmlog = mysql_fetch_array(mysql_query('SELECT `mlog` FROM `stats` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1')); - $spm = mysql_query('SELECT + if( $hodID > $this->info['hod'] ) { + unlink("../../battle_logs/btl_".$this->info['id'].".js"); + $this->info['hod'] = $hodID; + mysql_query('UPDATE `battle` SET `hod` = "'.$hodID.'" WHERE `id` = "'.$this->info['id'].'" LIMIT 1'); + if( $u->info['design'] == 1 ) { + $js = ''; $pll = 0; + if($_POST['idlog']<1){ $_POST['idlog'] = 0; } + // + $sp = mysql_query('SELECT + `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` + FROM `battle_logs` WHERE `battle` = "'.$this->info['id'].'" AND `id` > '.mysql_real_escape_string($_POST['idlog']).' AND `id_hod` > '.($this->hodID-7).' LIMIT 100'); + $jin = 0; $forYou2 = 0; + while($pl = mysql_fetch_array($sp)) + { + $jin++; + $rt = $pl['text']; + $pl['vars'] = str_replace('^^^^','rvnO',$pl['vars']); + $rt = str_replace('{tm1}',''.date('H:i',$pl['time']).'',$rt); + $rt = str_replace('{tm2}',''.date('H:i',$pl['time']).'',$rt); + $rt = str_replace('{tm3}',''.date('d.m.Y H:i',$pl['time']).'',$rt); + $rt = str_replace('{tm4}',''.date('d.m.Y H:i',$pl['time']).'',$rt); + $pl['text'] = $rt; + unset($rt); + if($pll < $pl['id']) { + $pll = $pl['id']; + } + $js = 'add_log('.$pl['id'].','.$forYou2.',"'.$pl['text'].'",'.$pl['id_hod'].',0,0,"'.str_replace('"','"',$pl['vars']).'");'.$js; + } + $js .= 'id_log='.$pll.';'; + }else{ + $js = ''; $pll = 0; + if($_POST['idlog']<1){ $_POST['idlog'] = 0; } + // + $sp = mysql_query('SELECT + `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` + FROM `battle_logs` WHERE `battle` = "'.$this->info['id'].'" AND `id` > '.mysql_real_escape_string($_POST['idlog']).' AND `id_hod` > '.($this->hodID-7).' LIMIT 100'); + $jin = 0; $forYou2 = 0; + while($pl = mysql_fetch_array($sp)) + { + $jin++; + $rt = $pl['text']; + //$rt = str_replace('^^^^','=',$rt); + $pl['vars'] = str_replace('^^^^','rvnO',$pl['vars']); + $rt = str_replace('{tm1}',''.date('H:i',$pl['time']).'',$rt); + $rt = str_replace('{tm2}',''.date('H:i',$pl['time']).'',$rt); + $rt = str_replace('{tm3}',''.date('d.m.Y H:i',$pl['time']).'',$rt); + $rt = str_replace('{tm4}',''.date('d.m.Y H:i',$pl['time']).'',$rt); + $pl['text'] = $rt; + unset($rt); + if($pll < $pl['id']) { + $pll = $pl['id']; + } + $js = 'add_log('.$pl['id'].','.$forYou2.',"'.$pl['text'].'",'.$pl['id_hod'].',0,0,"'.str_replace('"','"',$pl['vars']).'");'.$js; + } + $js .= 'id_log='.$pll.';'; + } + // + $fp = fopen("battle_logs/btl_".$this->info['id'].".js", "w"); + fwrite($fp, 'var vlogid = '.$this->info['hod'].';var loadingLogNow = true;function logRefleshedCache(){ '.$js.' }'); + fclose($fp); + // + } + return true; + }*/ + + //Выводим лог боя + public function lookLog() + { + global $c, $u, $log_text; + $hodID = mysql_fetch_array(mysql_query('SELECT `id`,`id_hod` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` ASC LIMIT 1')); + if ($hodID['id_hod'] <= 1) { + $u->info['alog'] = 0; + } + if (isset($hodID['id']) && $this->info['team_win'] != -1) { + $hodID = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_logs_save` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` ASC LIMIT 1')); + } + if (isset($hodID['id'])) { + $hodID = $hodID['id']; + } else { + $hodID = 0; + } + + $updt = 0; + if ($u->info['design'] == 1) { + $js = ''; + $pll = 0; + if ($_POST['idlog'] < 1) { + $_POST['idlog'] = 0; + } + $talog = mysql_fetch_array(mysql_query('SELECT `alog` FROM `stats` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1')); + $sp = mysql_query('SELECT + `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` + FROM `battle_logs` + WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'); + if (isset($sp) && $this->info['team_win'] != -1) { + $sp = mysql_query('SELECT + `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` + FROM `battle_logs_save` + WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'); + } + $jin = 0; + $forYou2 = 0; + while ($pl = mysql_fetch_array($sp)) { + if ($jin == 0) { + $u->info['alog'] = $pl['id_hod']; + } + $jin++; + if ((true == false) && ($pl['type'] == 1 || $pl['type'] == 6)) { + } else { + $rt = $pl['text']; + //$rt = str_replace('^^^^','=',$rt); + $pl['vars'] = str_replace('^^^^', 'rvnO', $pl['vars']); + $rt = str_replace('{tm1}', '' . date('H:i', $pl['time']) . '', + $rt); + $rt = str_replace('{tm2}', '' . date('H:i', $pl['time']) . '', + $rt); + $rt = str_replace('{tm3}', + '' . date('d.m.Y H:i', $pl['time']) . '', $rt); + $rt = str_replace('{tm4}', + '' . date('d.m.Y H:i', $pl['time']) . '', $rt); + $pl['text'] = $rt; + } + unset($rt); + if ($pll < $pl['id']) { + $pll = $pl['id']; + } + $js = 'add_log(' . $pl['id'] . ',' . $forYou2 . ',"' . $pl['text'] . '",' . $pl['id_hod'] . ',0,0,"' . str_replace('"', + '"', $pl['vars']) . '");' . $js; + } + mysql_query('UPDATE `stats` SET `alog`="' . $u->info['alog'] . '" WHERE `id` ="' . $u->info['id'] . '" LIMIT 1'); + $js .= 'id_log=' . $pll . ';'; + } else { + $js = ''; + $pll = 0; + if ($_POST['idlog'] < 1) { + $_POST['idlog'] = 0; + } + $talog = mysql_fetch_array(mysql_query('SELECT `alog` FROM `stats` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1')); + $sp = mysql_query('SELECT + `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` + FROM `battle_logs` + WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'); + if (isset($sp) && $this->info['team_win'] != -1) { + $sp = mysql_query('SELECT + `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` + FROM `battle_logs_save` + WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'); + } + $jin = 0; + $forYou2 = 0; + while ($pl = mysql_fetch_array($sp)) { + if ($jin == 0) { + $u->info['alog'] = $pl['id_hod']; + } + $jin++; + $rt = $pl['text']; + //$rt = str_replace('^^^^','=',$rt); + $pl['vars'] = str_replace('^^^^', 'rvnO', $pl['vars']); + $rt = str_replace('{tm1}', '' . date('H:i', $pl['time']) . '', $rt); + $rt = str_replace('{tm2}', '' . date('H:i', $pl['time']) . '', $rt); + $rt = str_replace('{tm3}', '' . date('d.m.Y H:i', $pl['time']) . '', + $rt); + $rt = str_replace('{tm4}', '' . date('d.m.Y H:i', $pl['time']) . '', + $rt); + $pl['text'] = $rt; + unset($rt); + if ($pll < $pl['id']) { + $pll = $pl['id']; + } + $js = 'add_log(' . $pl['id'] . ',' . $forYou2 . ',"' . $pl['text'] . '",' . $pl['id_hod'] . ',0,0,"' . str_replace('"', + '"', $pl['vars']) . '");' . $js; + } + mysql_query('UPDATE `stats` SET `alog`="' . $u->info['alog'] . '" WHERE `id` ="' . $u->info['id'] . '" LIMIT 1'); + $js .= 'id_log=' . $pll . ';'; + } + + + return $js; + } + +//Новый лог Мой Лог + public function lookmLog() + { + global $c, $u, $log_text; + $js = ''; + $pll = 0; + + if ($this->info['type'] != 9) { + $hodID = mysql_fetch_array(mysql_query('SELECT `id`,`id_hod` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` ASC LIMIT 1')); + if ($hodID['id_hod'] <= 1) { + $u->info['mlog'] = 0; + } + if (isset($hodID['id']) && $this->info['team_win'] != -1) { + $hodID = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_logs_save` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` ASC LIMIT 1')); + } + if (isset($hodID['id'])) { + $hodID = $hodID['id']; + } else { + $hodID = 0; + } + $tmlog = mysql_fetch_array(mysql_query('SELECT `mlog` FROM `stats` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1')); + $spm = mysql_query('SELECT `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $tmlog['mlog'] . ' AND `vars` LIKE "%' . $u->info['login'] . '%" ORDER BY `id` DESC'); - if (isset($spm) && $this->info['team_win'] != -1) { - $spm = mysql_query('SELECT + if (isset($spm) && $this->info['team_win'] != -1) { + $spm = mysql_query('SELECT `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` FROM `battle_logs_save` WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $tmlog['mlog'] . ' AND `vars` LIKE "%' . $u->info['login'] . '%" ORDER BY `id` DESC'); - } + } - $jin = 0; - $forYou2 = 0; + $jin = 0; + $forYou2 = 0; - while ($plm = mysql_fetch_array($spm)) { - if ($jin == 0) { - $u->info['mlog'] = $plm['id_hod']; - } - $jin++; - $rt = $plm['text']; - $plm['vars'] = str_replace('^^^^', 'rvnO', $plm['vars']); - $rt = str_replace('{tm1}', '' . date('H:i', $plm['time']) . '', $rt); - $rt = str_replace('{tm2}', '' . date('H:i', $plm['time']) . '', $rt); - $rt = str_replace('{tm3}', '' . date('d.m.Y H:i', $plm['time']) . '', $rt); - $rt = str_replace('{tm4}', '' . date('d.m.Y H:i', $plm['time']) . '', $rt); - $plm['text'] = $rt; - unset($rt); - if ($pll < $plm['id']) { - $pll = $plm['id']; - } - $js = 'add_mlog(' . $plm['id'] . ',' . $forYou2 . ',"' . $plm['text'] . '",' . $plm['id_hod'] . ',0,0,"' . str_replace('"', '"', $plm['vars']) . '");' . $js; - - } - $js .= 'id_mlog=' . $pll . ';'; - mysql_query('UPDATE `stats` SET `mlog`="' . $u->info['mlog'] . '" WHERE `id` ="' . $u->info['id'] . '" LIMIT 1'); - } - return $js; - } + while ($plm = mysql_fetch_array($spm)) { + if ($jin == 0) { + $u->info['mlog'] = $plm['id_hod']; + } + $jin++; + $rt = $plm['text']; + $plm['vars'] = str_replace('^^^^', 'rvnO', $plm['vars']); + $rt = str_replace('{tm1}', '' . date('H:i', $plm['time']) . '', $rt); + $rt = str_replace('{tm2}', '' . date('H:i', $plm['time']) . '', $rt); + $rt = str_replace('{tm3}', '' . date('d.m.Y H:i', $plm['time']) . '', + $rt); + $rt = str_replace('{tm4}', '' . date('d.m.Y H:i', $plm['time']) . '', + $rt); + $plm['text'] = $rt; + unset($rt); + if ($pll < $plm['id']) { + $pll = $plm['id']; + } + $js = 'add_mlog(' . $plm['id'] . ',' . $forYou2 . ',"' . $plm['text'] . '",' . $plm['id_hod'] . ',0,0,"' . str_replace('"', + '"', $plm['vars']) . '");' . $js; + } + $js .= 'id_mlog=' . $pll . ';'; + mysql_query('UPDATE `stats` SET `mlog`="' . $u->info['mlog'] . '" WHERE `id` ="' . $u->info['id'] . '" LIMIT 1'); + } + return $js; + } //====================== - //Добавляем в лог - public function add_log($mass) - { - if ($mass['time'] != '' && $mass['text'] != '') { - //mysql_query('LOCK TABLES battle_logs WRITE'); + //Добавляем в лог + public function add_log($mass) + { + if (empty($mass['text'])) { + return; + } + mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`type`) VALUES (unix_timestamp(), "' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $mass['text'] . '","' . $mass['vars'] . '","' . $mass['type'] . '")'); + if (rand(2, 10) == 10) { + $this->get_comment(); + } + } - $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $mass['text'] . '","' . $mass['vars'] . '","' . $mass['type'] . '")'); + ///Комментатор + public function get_comment() + { + $boycom = [ + 'А танцуешь ты лучше.', + 'А мы что, в прятки тут играем?', + 'А вы разве пингвинов никогда не видели?', + 'А, ведь когда-то, вы были красивыми… А теперь? Ну и рожи! Жуть!', + 'А потом еще труп пинать будут.', + 'А я вчера ночью за соседями подглядывал. Они точно так же кувыркались', + 'А ведь вы живых людей дубасите...', + 'А вот я вчера в зоопарке был...', + 'А вы в стройбате не служили?', + 'А вы видели, чтобы так на улице делали!?', + 'А вы знали что ёжики размножаются в интернете?', + 'А жить-то, как хочется:', + 'А из-за чего вы собственно дерётесь?', + 'А чего ржёте, вы ещё остальных не видели', + 'А что произойдёт если ты испугаешся до полусмерти дважды?!', + 'Больше так не делай. Ты же не садист?', + 'Без комментариев...', + 'Больно ведь!', + 'Быстро ты за монитор спрятался!', + 'Все хотят попасть в рай, но никто не хочет умирать!', + 'Вчера с такой девчонкой познакомился.', + 'Всего 5 минут знакомы, а дерутся, словно супруги с 20-ти летним стажем...', + 'Все. Я так больше не могу.', + 'В конце концов, кто-то победит?', + 'Вы чего, с дерева упали?', + 'Возятся как сонные мухи... давайте я вам лучше анекдот расскажу: ...', + 'Вот видишь, как полезно чистить зубы на ночь?', + 'Вот вы все руками махаете, а за вами уже очередь', + 'Вот попадёте вы в плен и вас там будут долго бить. Но вы ничего не расскажете... и не потому, что вы такой стойкий, просто вы ничего не знаете', + 'Вы бы лучше пошли потренировались!', + 'Вы все еще разминаетесь? Позовите, когда кости в муку друг другу разминать будете.', + 'Вы же бойцы! Имейте совесть!', + 'Гаси недоумка!', + 'Да, если бы я смог это остановить, то получил бы нобелевскую премию `За мир` ', + 'Да куда они бьют?!', + 'Давайте быстрее! За вами уже очередь образовалась.', + 'Давайте обойдемся сегодня таймаутом. А? А то мне уже кошмары скоро будут сниться.', + 'Дерутся как девчонки!', + 'Дети, посмотрите налево... Ой!.. Нет, туда лучше не смотреть.', + 'Если так будет продолжаться, то скоро мы заснем!', + 'Если бы у меня было кресло-качалка, я бы в нём качался...', + 'Если вы что-то сказать хотите, то лучше молчите :)', + 'Жестокость не порок.', + 'Жизнь вне нашего клуба - это пустая трата кислорода!!!', + 'Жми! Дави! Кусай! Царапай!', + 'За такие бои надо в хаос отправлять!', + 'Знаете откуда в комиссионном магазине столько вещей? Это я после ваших гулянок собираю и сдаю туда. Иногда вместе с частями тела, застрявшими в них.', + 'Здесь люди так близки друг к другу. Просто иначе ударить нельзя.', + 'И пролитая кровь еще пульсирует...', + 'Инвалидов развелось...', + 'Какой бой!!!', + 'Кто!? Кто здесь?!', + 'Кто вас этому научил?', + 'Кузнечик, блин...', + 'Куплю импортный проигрыватель грампластинок.', + 'Лошадью ходи!', + 'Лучше враг, чем друг - враг.', + 'Ладно, вы тут пока друг друга за волосы таскайте, а я пойду, пообедаю.', + 'Мне ваш балет уже надоел!', + 'Может, начнется-таки настоящий бой???', + 'Мысли лезут в голову изнутри, а удары снаружи.', + 'Ну и где ваши коронные удары? Где живописные падения я спрашиваю!', + 'Ну, нельзя же так наотмашь лупить!', + 'Надо раньше было думать, теперь смертельно поздно...', + 'На такое зрелище билеты продавать можно. Народ ухохочется!', + 'Нет! Не надо драки! А... ладно деритесь, все равно не умеете.', + 'Нет, ну должен быть повод, должен же быть повод?', + 'Нет, я отказываюсь это комментировать!', + 'Не таких обламывали!', + 'Ну выпили вы рюмку, ну две... ну литр, ну два... так зачем же после этого драку затевать?!', + 'Ну и кто за этот погром платить будет?', + 'Ну и оскал у вас. Из вашей улыбки кастеты делать можно.', + 'Ну, что же ты..? Не печалься. Выше голову, так по ней удобней попасть.', + 'Ничего... Блок тоже удар.', + 'Обернись!!!.... Поздно...', + 'Ого! Научите меня так не делать.', + 'Осторожно! Сделаешь дырочку, уже не запломбируешь!', + 'Оно вам надо???', + 'Обычное дело...там что-то отклеилось.', + 'Ой, и заболтался я с вами...', + 'Он же не промахнётся если ты не отойдёшь!', + 'По-моему, кому-то светит инвалидность.', + 'Подкинь ему грабли, на которые он еще не наступал.', + 'Прав был кот Леопольд, давайте жить дружно?', + 'При ударе в живот нарушается кислотно-щелочной баланс.', + 'Проверь, не торчит ли у тебя нож из живота.', + 'Перестаньте мне орать!', + 'Подкинь ему грабли, на которые он еще не наступал.', + 'Прыгают тут как блохи... Все, я пошел за дихлофосом!', + 'Разбудите меня когда эта порнография закончится...', + 'Ребенок сильнее ударил бы!', + 'Славно вмазал!', + 'Славно они веселятся', + 'Смотрю вот на вас, и слезы наворачиваются.', + 'Сначала учатся ходить, а потом только в драку лезут.', + 'Так они друг другу что-нибудь сломают.', + 'Так ты ему все кости переломаешь!', + 'У меня в подъезде точно так же соседа отмудохали', + 'Убогих развелось...', + 'Ух ты, какой прыткий!', + 'Фашист!! Надо ж, так по больному месту врезать...', + 'Хватит бить его об угол моей кабинки! Мне же потом ее чинить.', + 'Хулиганы, прекратите немедленно!', + 'Хочешь, подскажу, куда он ударит?', + 'Хорошо, что у меня ловкости больше чем у вас всех, а то б вы и меня в инвалидную коляску посадили бы.', + 'Хороший бой!', + 'Хороший удар!', + 'Хиляк-разрядник!', + 'Что ты его за волосы схватил?! Отпусти немедленно!', + 'Щас я вас настигну, вот тогда мы и похохочем', + 'Это была какая-то неизвестная мне техника...', + 'Это же противник, а не глина! Хватит мяться!', + 'Это не бой, это издевательское избиение.', + 'Это поубавит спеси', + 'Это и был твой план `Б` ?', + 'Это была какая-то неизвестная мне техника...', + 'Я же предупреждал, - будет больно.', + 'Я не страдаю безумием. Я наслаждаюсь им каждую минуту :)', + 'Я красивый, я сильный, я умный, я добрый. А вот вы? Вы себя-то видели?!', + 'Я тоже умею драться, но не буду...', + '(тревожно озираясь) я вам по секрету скажу... за вами наблюдают!', + '<вырезано цензурой> после боя я этих <вырезано цензурой> обоих в <вырезано цензурой> и <вырезано цензурой>', + '<вырезано цензурой> каратисты фиговы', + ]; + //$act_com = array(); + if (rand(1, 6) == rand(1, 6)) { + $txt = '{tm1} Комментатор: ' . $boycom[rand(0, count($boycom) - 1)] . ''; - //$ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("'.$mass['time'].'","'.$mass['battle'].'","'.$mass['id_hod'].'","'.$mass['text'].'","'.$mass['vars'].'","'.$mass['zona1'].'","'.$mass['zonb1'].'","'.$mass['zona2'].'","'.$mass['zonb2'].'","'.$mass['type'].'")'); + $vLog = 'time1=' . time() . ''; + $mas1 = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'text' => '', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + $mas1['text'] = $txt; + $this->add_log($mas1); + } else { + return false; + } + } - //mysql_query('UNLOCK TABLES'); - if (rand(2, 10) == 10) { - $this->get_comment(); - } - } - } + //Расчет типа удара от оружия + public function weaponTx($item) + { + global $u; + $tp = 0; + if (!isset($item['id'])) { + $i = 1; + while ($i <= 4) { + $itm['tya' . $i] = 1; + $i++; + } + } + $itm = $u->lookStats($item['data']); + $t[0]['z'] = 0; + $t[0]['t'] = 0; + //колящий урон + $t[1]['z'] = round(0 + $itm['tya1']); + $t[1]['t'] = 1; + //рубящий урон + $t[2]['z'] = round(0 + $itm['tya2']); + $t[2]['t'] = 2; + //дробящий урон + $t[3]['z'] = round(0 + $itm['tya3']); + $t[3]['t'] = 3; + //режущий урон + $t[4]['z'] = round(0 + $itm['tya4']); + $t[4]['t'] = 4; + //урон огня + $t[5]['z'] = round(0 + $itm['tym1']); + $t[5]['t'] = 5; + //урон воздуха + $t[6]['z'] = round(0 + $itm['tym2']); + $t[6]['t'] = 6; + //урон воды + $t[7]['z'] = round(0 + $itm['tym3']); + $t[7]['t'] = 7; + //урон земли + $t[8]['z'] = round(0 + $itm['tym4']); + $t[8]['t'] = 8; + //урон света + $t[9]['z'] = round(0 + $itm['tym5']); + $t[9]['t'] = 9; + //урон тьмы + $t[10]['z'] = round(0 + $itm['tym6']); + $t[10]['t'] = 10; + //урон серой магией + $t[11]['z'] = round(0 + $itm['tym7']); + $t[11]['t'] = 11; - ///Комментатор - public function get_comment() - { - $boycom = ['А танцуешь ты лучше.', 'А мы что, в прятки тут играем?', 'А вы разве пингвинов никогда не видели?', 'А, ведь когда-то, вы были красивыми… А теперь? Ну и рожи! Жуть!', 'А потом еще труп пинать будут.', 'А я вчера ночью за соседями подглядывал. Они точно так же кувыркались', 'А ведь вы живых людей дубасите...', 'А вот я вчера в зоопарке был...', 'А вы в стройбате не служили?', 'А вы видели, чтобы так на улице делали!?', 'А вы знали что ёжики размножаются в интернете?', 'А жить-то, как хочется:', 'А из-за чего вы собственно дерётесь?', 'А чего ржёте, вы ещё остальных не видели', 'А что произойдёт если ты испугаешся до полусмерти дважды?!', 'Больше так не делай. Ты же не садист?', 'Без комментариев...', 'Больно ведь!', 'Быстро ты за монитор спрятался!', 'Все хотят попасть в рай, но никто не хочет умирать!', 'Вчера с такой девчонкой познакомился.', 'Всего 5 минут знакомы, а дерутся, словно супруги с 20-ти летним стажем...', 'Все. Я так больше не могу.', 'В конце концов, кто-то победит?', 'Вы чего, с дерева упали?', 'Возятся как сонные мухи... давайте я вам лучше анекдот расскажу: ...', 'Вот видишь, как полезно чистить зубы на ночь?', 'Вот вы все руками махаете, а за вами уже очередь', 'Вот попадёте вы в плен и вас там будут долго бить. Но вы ничего не расскажете... и не потому, что вы такой стойкий, просто вы ничего не знаете', 'Вы бы лучше пошли потренировались!', 'Вы все еще разминаетесь? Позовите, когда кости в муку друг другу разминать будете.', 'Вы же бойцы! Имейте совесть!', 'Гаси недоумка!', 'Да, если бы я смог это остановить, то получил бы нобелевскую премию `За мир` ', 'Да куда они бьют?!', 'Давайте быстрее! За вами уже очередь образовалась.', 'Давайте обойдемся сегодня таймаутом. А? А то мне уже кошмары скоро будут сниться.', 'Дерутся как девчонки!', 'Дети, посмотрите налево... Ой!.. Нет, туда лучше не смотреть.', 'Если так будет продолжаться, то скоро мы заснем!', 'Если бы у меня было кресло-качалка, я бы в нём качался...', 'Если вы что-то сказать хотите, то лучше молчите :)', 'Жестокость не порок.', 'Жизнь вне нашего клуба - это пустая трата кислорода!!!', 'Жми! Дави! Кусай! Царапай!', 'За такие бои надо в хаос отправлять!', 'Знаете откуда в комиссионном магазине столько вещей? Это я после ваших гулянок собираю и сдаю туда. Иногда вместе с частями тела, застрявшими в них.', 'Здесь люди так близки друг к другу. Просто иначе ударить нельзя.', 'И пролитая кровь еще пульсирует...', 'Инвалидов развелось...', 'Какой бой!!!', 'Кто!? Кто здесь?!', 'Кто вас этому научил?', 'Кузнечик, блин...', 'Куплю импортный проигрыватель грампластинок.', 'Лошадью ходи!', 'Лучше враг, чем друг - враг.', 'Ладно, вы тут пока друг друга за волосы таскайте, а я пойду, пообедаю.', 'Мне ваш балет уже надоел!', 'Может, начнется-таки настоящий бой???', 'Мысли лезут в голову изнутри, а удары снаружи.', 'Ну и где ваши коронные удары? Где живописные падения я спрашиваю!', 'Ну, нельзя же так наотмашь лупить!', 'Надо раньше было думать, теперь смертельно поздно...', 'На такое зрелище билеты продавать можно. Народ ухохочется!', 'Нет! Не надо драки! А... ладно деритесь, все равно не умеете.', 'Нет, ну должен быть повод, должен же быть повод?', 'Нет, я отказываюсь это комментировать!', 'Не таких обламывали!', 'Ну выпили вы рюмку, ну две... ну литр, ну два... так зачем же после этого драку затевать?!', 'Ну и кто за этот погром платить будет?', 'Ну и оскал у вас. Из вашей улыбки кастеты делать можно.', 'Ну, что же ты..? Не печалься. Выше голову, так по ней удобней попасть.', 'Ничего... Блок тоже удар.', 'Обернись!!!.... Поздно...', 'Ого! Научите меня так не делать.', 'Осторожно! Сделаешь дырочку, уже не запломбируешь!', 'Оно вам надо???', 'Обычное дело...там что-то отклеилось.', 'Ой, и заболтался я с вами...', 'Он же не промахнётся если ты не отойдёшь!', 'По-моему, кому-то светит инвалидность.', 'Подкинь ему грабли, на которые он еще не наступал.', 'Прав был кот Леопольд, давайте жить дружно?', 'При ударе в живот нарушается кислотно-щелочной баланс.', 'Проверь, не торчит ли у тебя нож из живота.', 'Перестаньте мне орать!', 'Подкинь ему грабли, на которые он еще не наступал.', 'Прыгают тут как блохи... Все, я пошел за дихлофосом!', 'Разбудите меня когда эта порнография закончится...', 'Ребенок сильнее ударил бы!', 'Славно вмазал!', 'Славно они веселятся', 'Смотрю вот на вас, и слезы наворачиваются.', 'Сначала учатся ходить, а потом только в драку лезут.', 'Так они друг другу что-нибудь сломают.', 'Так ты ему все кости переломаешь!', 'У меня в подъезде точно так же соседа отмудохали', 'Убогих развелось...', 'Ух ты, какой прыткий!', 'Фашист!! Надо ж, так по больному месту врезать...', 'Хватит бить его об угол моей кабинки! Мне же потом ее чинить.', 'Хулиганы, прекратите немедленно!', 'Хочешь, подскажу, куда он ударит?', 'Хорошо, что у меня ловкости больше чем у вас всех, а то б вы и меня в инвалидную коляску посадили бы.', 'Хороший бой!', 'Хороший удар!', 'Хиляк-разрядник!', 'Что ты его за волосы схватил?! Отпусти немедленно!', 'Щас я вас настигну, вот тогда мы и похохочем', 'Это была какая-то неизвестная мне техника...', 'Это же противник, а не глина! Хватит мяться!', 'Это не бой, это издевательское избиение.', 'Это поубавит спеси', 'Это и был твой план `Б` ?', 'Это была какая-то неизвестная мне техника...', 'Я же предупреждал, - будет больно.', 'Я не страдаю безумием. Я наслаждаюсь им каждую минуту :)', 'Я красивый, я сильный, я умный, я добрый. А вот вы? Вы себя-то видели?!', 'Я тоже умею драться, но не буду...', '(тревожно озираясь) я вам по секрету скажу... за вами наблюдают!', '<вырезано цензурой> после боя я этих <вырезано цензурой> обоих в <вырезано цензурой> и <вырезано цензурой>', '<вырезано цензурой> каратисты фиговы']; - //$act_com = array(); - if (rand(1, 6) == rand(1, 6)) { - $txt = '{tm1} Комментатор: ' . $boycom[rand(0, count($boycom) - 1)] . ''; + //Мешаем элементы массива + /* + $inr = array(); + $i = 1; + while( $i <= 11 ) { + if( $t[$i] > 0 ) { + $j = 0; + while( $j < $t[$i] ) { + //if(isset($itm['tya'.$i]) && $itm['tya'.$i] > 0 && $i < 5 && $itm['tya'.$i] > 0) { + //$inr[] = $i; + //}elseif(isset($itm['tym'.($i-4)]) && $itm['tym'.($i-4)] > 0 && $i > 4 && $itm['tym'.($i-4)] > 0) { + //$inr[] = $i; + //} + if( isset($itm['tya'.$i]) && $itm['tya'.$i] > 0 ) { + $inr[] = $i; + $rk .= '*'.$i.'='.$j.'%*|'; + }else{ + $rk .= ''.$i.'='.$j.'%|'; + } + $j++; + } + //if( $u->info['admin'] > 0 ) { - $vLog = 'time1=' . time() . ''; - $mas1 = ['time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'text' => '', 'vars' => $vLog, 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1']; - $mas1['text'] = $txt; - $this->add_log($mas1); + //} + } + $i++; + } + //shuffle($inr); + $tp = $inr[rand(0,count($inr)-1)]; + if( !isset($itm['tya'.$tp]) || $itm['tya'.$tp] < 1 ) { + if(isset($item['id'])) { + $this->error($u->info['id'],'battle::weaponTx. Код ошибки: id предмета: -'.$item['id'].'-b'.$this->info['id'].'.(Тип атаки: tya'.$tp.'['.$itm['tya'.$tp].']).(Возможные типы атаки: '.$rk.').(Количество вариантов атак: '.count($inr).')'); + } + } - } else { - return false; - } - } + //тип от оружия + if( $item['type'] == 18 ) { + $tp = 1; + }elseif( $item['type'] == 19 ) { + $tp = 2; + }elseif( $item['type'] == 20 ) { + $tp = 3; + }elseif( $item['type'] == 21 ) { + $tp = 4; + }else{ + //$tp = 0; + }*/ - //Расчет типа удара от оружия - public function weaponTx($item) - { - global $u; - $tp = 0; - if (!isset($item['id'])) { - $i = 1; - while ($i <= 4) { - $itm['tya' . $i] = 1; - $i++; - } - } - $itm = $u->lookStats($item['data']); - $t[0]['z'] = 0; - $t[0]['t'] = 0; - //колящий урон - $t[1]['z'] = round(0 + $itm['tya1']); - $t[1]['t'] = 1; - //рубящий урон - $t[2]['z'] = round(0 + $itm['tya2']); - $t[2]['t'] = 2; - //дробящий урон - $t[3]['z'] = round(0 + $itm['tya3']); - $t[3]['t'] = 3; - //режущий урон - $t[4]['z'] = round(0 + $itm['tya4']); - $t[4]['t'] = 4; - //урон огня - $t[5]['z'] = round(0 + $itm['tym1']); - $t[5]['t'] = 5; - //урон воздуха - $t[6]['z'] = round(0 + $itm['tym2']); - $t[6]['t'] = 6; - //урон воды - $t[7]['z'] = round(0 + $itm['tym3']); - $t[7]['t'] = 7; - //урон земли - $t[8]['z'] = round(0 + $itm['tym4']); - $t[8]['t'] = 8; - //урон света - $t[9]['z'] = round(0 + $itm['tym5']); - $t[9]['t'] = 9; - //урон тьмы - $t[10]['z'] = round(0 + $itm['tym6']); - $t[10]['t'] = 10; - //урон серой магией - $t[11]['z'] = round(0 + $itm['tym7']); - $t[11]['t'] = 11; + $tpt = $t[0]['z']; + $tpmin = $t[0]; + $tpmax = $t[0]; + $i = 1; - $tpt = $t[0]['z']; - $tpmin = $t[0]; - $tpmax = $t[0]; - $i = 1; + while ($i <= 11) { + if ($t[$i]['z'] > $tpt) { + $tpt = $t[$i]['z']; + $tpmax = $t[$i]; + $ii = $i; + } + $i++; + } + $t[$ii]['z'] = 0; - while ($i <= 11) { - if ($t[$i]['z'] > $tpt) { - $tpt = $t[$i]['z']; - $tpmax = $t[$i]; - $ii = $i; - } - $i++; - } - $t[$ii]['z'] = 0; + $tpt = $t[0]['z']; + $i = 1; + while ($i <= 11) { + if ($t[$i]['z'] > $tpt) { + $tpt = $t[$i]['z']; + $tpmin = $t[$i]; + } + $i++; + } - $tpt = $t[0]['z']; - $i = 1; - while ($i <= 11) { - if ($t[$i]['z'] > $tpt) { - $tpt = $t[$i]['z']; - $tpmin = $t[$i]; - } - $i++; - } + $setclass = rand(1, 100); - $setclass = rand(1, 100); - - if ($setclass > $tpmax['z']) { - $tp = $tpmin['t']; - } else { - $tp = $tpmax['t']; - } + if ($setclass > $tpmax['z']) { + $tp = $tpmin['t']; + } else { + $tp = $tpmax['t']; + } - return $tp; - } + return $tp; + } - //Расчет урона от оружия - public function weaponAt($item, $st, $x) - { - $tp = 0; - $tp20 = 0; - if (isset($item['id'])) { - $itm = $this->lookStats($item['data']); - //начинаем расчет урона - $min = $itm['sv_yron_min'] + $itm['yron_min'] + $st['minAtack']; - $max = $itm['sv_yron_max'] + $itm['yron_max'] + $st['maxAtack']; - if ($x != 0) { - /* + //Функция ошибки + /*public function error($login,$t) { + mysql_query('INSERT INTO `chat_system` (`text`,`city`,`login`,`to`,`type`,`new`,`time`) VALUES ("'.mysql_real_escape_string($t).'","capitalcity","СИСТЕМА","'.$login.'","3","1","'.time().'")'); + }*/ + + + //Расчет урона от оружия + public function weaponAt($item, $st, $x) + { + $tp = 0; + $tp20 = 0; + if (isset($item['id'])) { + $itm = $this->lookStats($item['data']); + //начинаем расчет урона + $min = $itm['sv_yron_min'] + $itm['yron_min'] + $st['minAtack']; + $max = $itm['sv_yron_max'] + $itm['yron_max'] + $st['maxAtack']; + if ($x != 0) { + /* Колющий - 60% Силы и 40% Ловкости. Рубящий - 70% Силы 20% Ловкости и 20% Интуиции. Дробящий - 100% Силы. Режущий - 60% Силы и 40% Интуиции. */ - //Тип урона: 0 - нет урона, 1 - колющий, 2 - рубящий, 3 - дробящий, 4 - режущий, 5 - огонь, 6 - воздух, 7 - вода, 8 - земля, 9 - свет, 10 - тьма, 11 - серая - if ($x == 1) { - //колющий - $wst = $st['s2'] * 1; - $min += 5 + (ceil($wst * 1.4) / 1.25) + $st['minAtack']; - $max += 7 + (ceil(0.4 + $min / 0.9) / 1.25) + $st['maxAtack']; - $tp20 = 1; - } elseif ($x == 2) { - //рубящий - $wst = $st['s1'] * 0.75; - $min += 5 + (ceil($wst * 1.4) / 1) + $st['minAtack']; - $max += 7 + (ceil(0.4 + $min / 0.9) / 1.25) + $st['maxAtack']; - $tp20 = 2; - } elseif ($x == 3) { - //дробящий - $wst = $st['s4'] * 1.5; - $min += 5 + (ceil($wst * 1.4) / 1.25) + $st['minAtack']; - $max += 7 + (ceil(0.4 + $min / 0.9) / 1.25) + $st['maxAtack']; - $tp20 = 3; - } elseif ($x == 4) { - //режущий - $wst = $st['s3'] * 1; - $min += 5 + (ceil($wst * 1.4) / 1.25) + $st['minAtack']; - $max += 7 + (ceil(0.4 + $min / 0.9) / 1.25) + $st['maxAtack']; - $tp20 = 4; - } elseif ($x >= 5 && $x <= 22) { - //урон магии и магии стихий - $wst = $st['s1'] * 0.01 + $st['s2'] * 0.01 + $st['s3'] * 0.01 + $st['s5'] * 0.06; - $min += 3 + (ceil($wst * 1.4) / 2.25) + $st['minAtack']; - $max += 5 + (ceil(0.4 + $min / 0.9) / 2.25) + $st['maxAtack']; - $tp20 = 5; - } else { - //без профильного урона + //Тип урона: 0 - нет урона, 1 - колющий, 2 - рубящий, 3 - дробящий, 4 - режущий, 5 - огонь, 6 - воздух, 7 - вода, 8 - земля, 9 - свет, 10 - тьма, 11 - серая + if ($x == 1) { + //колющий + $wst = $st['s2'] * 1; + $min += 5 + (ceil($wst * 1.4) / 1.25) + $st['minAtack']; + $max += 7 + (ceil(0.4 + $min / 0.9) / 1.25) + $st['maxAtack']; + $tp20 = 1; + } elseif ($x == 2) { + //рубящий + $wst = $st['s1'] * 0.75; + $min += 5 + (ceil($wst * 1.4) / 1) + $st['minAtack']; + $max += 7 + (ceil(0.4 + $min / 0.9) / 1.25) + $st['maxAtack']; + $tp20 = 2; + } elseif ($x == 3) { + //дробящий + $wst = $st['s4'] * 1.5; + $min += 5 + (ceil($wst * 1.4) / 1.25) + $st['minAtack']; + $max += 7 + (ceil(0.4 + $min / 0.9) / 1.25) + $st['maxAtack']; + $tp20 = 3; + } elseif ($x == 4) { + //режущий + $wst = $st['s3'] * 1; + $min += 5 + (ceil($wst * 1.4) / 1.25) + $st['minAtack']; + $max += 7 + (ceil(0.4 + $min / 0.9) / 1.25) + $st['maxAtack']; + $tp20 = 4; + } elseif ($x >= 5 && $x <= 22) { + //урон магии и магии стихий + $wst = $st['s1'] * 0.01 + $st['s2'] * 0.01 + $st['s3'] * 0.01 + $st['s5'] * 0.06; + $min += 3 + (ceil($wst * 1.4) / 2.25) + $st['minAtack']; + $max += 5 + (ceil(0.4 + $min / 0.9) / 2.25) + $st['maxAtack']; + $tp20 = 5; + } else { + //без профильного урона - } + } - $wst = ($st['s1'] * 0.02 + $st['s2'] * 0.02 + $st['s3'] * 0.05); - $min1 = -2 + ceil($wst * 1.4) / 1.25; - $max1 = 4 + ceil(0.4 + $min1 / 0.9) / 1.25; + $wst = ($st['s1'] * 0.02 + $st['s2'] * 0.02 + $st['s3'] * 0.05); + $min1 = -2 + ceil($wst * 1.4) / 1.25; + $max1 = 4 + ceil(0.4 + $min1 / 0.9) / 1.25; - $min = round(($min + $min1)); - //$max = round(($max+$max1)); - } - $tp = rand(($min + $max) / 3.5, (($min + $max) / 3.5 + (($min + $max) / 3.5) / 100 * 7)); - } - return $tp; - } + $min = round(($min + $min1)); + //$max = round(($max+$max1)); + } + $tp = rand(($min + $max) / 3.5, (($min + $max) / 3.5 + (($min + $max) / 3.5) / 100 * 7)); + } + return $tp; + } - //Расчет урона от оружия - public function weaponAt22($item, $st) - { - $tp = 0; - $tp20 = 0; - if (isset($item['id'])) { - $itm = $this->lookStats($item['data']); - //начинаем расчет урона - $min = $itm['sv_yron_min'] + $itm['yron_min'] + $st['minAtack']; - $max = $itm['sv_yron_max'] + $itm['yron_max'] + $st['maxAtack']; - } - return [$min, $max]; - } + //Расчет урона от оружия + public function weaponAt22($item, $st) + { + $tp = 0; + $tp20 = 0; + if (isset($item['id'])) { + $itm = $this->lookStats($item['data']); + //начинаем расчет урона + $min = $itm['sv_yron_min'] + $itm['yron_min'] + $st['minAtack']; + $max = $itm['sv_yron_max'] + $itm['yron_max'] + $st['maxAtack']; + } + return [$min, $max]; + } - public function domino($itm) - { - $r = 0; - //0 - inOdet , 1 - class , 2 - class-point , 3 - anti_class , 4 - antic_lass-point , 5 - level , 6 level_u - //15 предметов - $clss = [ - 1 => 100, //шлем - 2 => 80, //наручи - 3 => 150, //оружие - 14 => 100, //щит - 5 => 200, //броня - 7 => 50, //пояс - 17 => 50, //ботинки - 10 => 80, //кольцо - 11 => 80, //кольцо - 12 => 80, //кольцо - 9 => 100, //амулет - 8 => 100, //серьги - 4 => 50, //рубаха - 16 => 80, //поножи - 6 => 50 //плащ - ]; - $r += $clss[$itm[0]]; - if ($itm[10] > 0) { - //екр.предмет - if ($itm[10] < 500) { - //не артефакт - $r += $clss[$itm[0]] * 4; - } else { - //артефакт - $r += $clss[$itm[0]] * 4; - } - } - return $r; - } + public function domino($itm) + { + $r = 0; + //0 - inOdet , 1 - class , 2 - class-point , 3 - anti_class , 4 - antic_lass-point , 5 - level , 6 level_u + //15 предметов + $clss = [ + 1 => 100, //шлем + 2 => 80, //наручи + 3 => 150, //оружие + 14 => 100, //щит + 5 => 200, //броня + 7 => 50, //пояс + 17 => 50, //ботинки + 10 => 80, //кольцо + 11 => 80, //кольцо + 12 => 80, //кольцо + 9 => 100, //амулет + 8 => 100, //серьги + 4 => 50, //рубаха + 16 => 80, //поножи + 6 => 50 //плащ + ]; + $r += $clss[$itm[0]]; + if ($itm[10] > 0) { + //екр.предмет + if ($itm[10] < 500) { + //не артефакт + $r += $clss[$itm[0]] * 4; + } else { + //артефакт + $r += $clss[$itm[0]] * 4; + } + } + return $r; + } - public function adomino($itm) - { - $r = 0; - //0 - inOdet , 1 - class , 2 - class-point , 3 - anti_class , 4 - antic_lass-point , 5 - level , 6 level_u - //15 предметов - $clss = [ - 1 => 80, //шлем - 2 => 60, //наручи - 3 => 130, //оружие - 14 => 80, //щит - 5 => 180, //броня - 7 => 30, //пояс - 17 => 30, //ботинки - 10 => 50, //кольцо - 11 => 50, //кольцо - 12 => 50, //кольцо - 9 => 80, //амулет - 8 => 80, //серьги - 4 => 30, //рубаха - 16 => 50, //поножи - 6 => 30 //плащ - ]; - $r += $clss[$itm[0]]; - return $r; - } + public function adomino($itm) + { + $r = 0; + //0 - inOdet , 1 - class , 2 - class-point , 3 - anti_class , 4 - antic_lass-point , 5 - level , 6 level_u + //15 предметов + $clss = [ + 1 => 80, //шлем + 2 => 60, //наручи + 3 => 130, //оружие + 14 => 80, //щит + 5 => 180, //броня + 7 => 30, //пояс + 17 => 30, //ботинки + 10 => 50, //кольцо + 11 => 50, //кольцо + 12 => 50, //кольцо + 9 => 80, //амулет + 8 => 80, //серьги + 4 => 30, //рубаха + 16 => 50, //поножи + 6 => 30 //плащ + ]; + $r += $clss[$itm[0]]; + return $r; + } - public function domino_lvl($r, $lvl, $lvl_itm) - { - if ($lvl < $lvl_itm) { - $r = $r * ((50 - $lvl + $lvl_itm) / 100); - //расчет урона, если есть добавочные бонусы на подобии екр.вещей \ артефактов, либо легендарных предметов - $r = ceil($r); - } - return $r; - } - /* + public function domino_lvl($r, $lvl, $lvl_itm) + { + if ($lvl < $lvl_itm) { + $r = $r * ((50 - $lvl + $lvl_itm) / 100); + //расчет урона, если есть добавочные бонусы на подобии екр.вещей \ артефактов, либо легендарных предметов + $r = ceil($r); + } + return $r; + } + /* public $bal = array( //Расчет шанса победы X - Y // танк , уворот , крит , силовик , универсал , маг @@ -7627,461 +9018,1341 @@ class battleClass ); */ - public function yronLvl($lvl1, $lvl2) - { - $r = [ - 1 => [0, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200], - 2 => [0, 600, 400, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200], - 3 => [0, 1000, 800, 600, 400, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200], - 4 => [0, 1400, 1200, 1000, 800, 600, 400, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200], - 5 => [0, 1800, 1600, 1400, 1200, 1000, 800, 600, 400, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200], - 6 => [0, 2200, 2000, 1800, 1600, 1400, 1200, 1000, 800, 600, 400, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200], - 7 => [0, 2600, 2400, 2200, 2000, 1800, 1600, 1400, 1200, 1000, 800, 600, 400, 200, 200, 200, 200, 200, 200, 200, 200, 200], - 8 => [0, 3000, 2800, 2600, 2400, 2200, 2000, 1800, 1600, 1400, 1200, 1000, 800, 600, 400, 200, 200, 200, 200, 200, 200, 200], - 9 => [0, 3400, 3200, 3000, 2800, 2600, 2400, 2200, 2000, 1800, 1600, 1400, 1200, 1000, 800, 600, 400, 200, 200, 200, 200, 200], - 10 => [0, 3800, 3600, 3400, 3200, 3000, 2800, 2600, 2400, 2200, 2000, 1800, 1600, 1400, 1200, 1000, 800, 600, 400, 200, 200, 200], - 11 => [0, 4200, 4000, 3800, 3600, 3400, 3200, 3000, 2800, 2600, 2400, 2200, 2000, 1800, 1600, 1400, 1200, 1000, 800, 600, 400, 200], - 12 => [0, 4600, 4400, 4200, 4000, 3800, 3600, 3400, 3200, 3000, 2800, 2600, 2400, 2200, 2000, 1800, 1600, 1400, 1200, 1000, 800, 600], - 13 => [0, 5000, 4800, 4600, 4400, 4200, 4000, 3800, 3600, 3400, 3200, 3000, 2800, 2600, 2400, 2200, 2000, 1800, 1600, 1400, 1200, 1000], - 14 => [0, 5400, 5200, 5000, 4800, 4600, 4400, 4200, 4000, 3800, 3600, 3400, 3200, 3000, 2800, 2600, 2400, 2200, 2000, 1800, 1600, 1400], - 15 => [0, 5800, 5600, 5400, 5200, 5000, 4800, 4600, 4400, 4200, 4000, 3800, 3600, 3400, 3200, 3000, 2800, 2600, 2400, 2200, 2000, 1800], - 16 => [0, 6200, 6000, 5800, 5600, 5400, 5200, 5000, 4800, 4600, 4400, 4200, 4000, 3800, 3600, 3400, 3200, 3000, 2800, 2600, 2400, 2200], - 17 => [0, 6600, 6400, 6200, 6000, 5800, 5600, 5400, 5200, 5000, 4800, 4600, 4400, 4200, 4000, 3800, 3600, 3400, 3200, 3000, 2800, 2600], - 18 => [0, 7000, 6800, 6600, 6400, 6200, 6000, 5800, 5600, 5400, 5200, 5000, 4800, 4600, 4400, 4200, 4000, 3800, 3600, 3400, 3200, 3000], - 19 => [0, 7400, 7200, 7000, 6800, 6600, 6400, 6200, 6000, 5800, 5600, 5400, 5200, 5000, 4800, 4600, 4400, 4200, 4000, 3800, 3600, 3400], - 20 => [0, 7800, 7600, 7400, 7200, 7000, 6800, 6600, 6400, 6200, 6000, 5800, 5600, 5400, 5200, 5000, 4800, 4600, 4400, 4200, 4000, 3800], - 21 => [0, 8200, 8000, 7800, 7600, 7400, 7200, 7000, 6800, 6600, 6400, 6200, 6000, 5800, 5600, 5400, 5200, 5000, 4800, 4600, 4400, 4200] - ]; - $r = floor($r[$lvl1][$lvl2] / 100); - $r = 0; - return $r; - } - //Гамс - //Расчет защиты - public function zago($v) - { - if ($v > 1700) { - $v = 1700; - } - $r = round((1 - (pow(0.5, ($v / 399.51)))) * 100, 2); - return $r; - } + /* + public function domino_all($v1,$v2,$d1,$d2) { + // Мощность класса 1 , Мощность класса 2 , Анти 1 , Анти 2 + //Расчет бонусов + $mx = 0; + $cs = array(NULL,'Танк','Уворот','Крит','Силовик','Универсал','Маг'); + $r = array( + 0 => 0, + 'Крит'=>array(), + 'Танк'=>array(), + 'Уворот'=>array(), + 'Универсал'=>array(), + 'Силовик'=>array(), + 'Маг'=>array() + ); + $i = 0; + while($i <= 7) { + if(isset($v1[$i]) || isset($v2[$i])) { + $r[$cs[$i]] = round(((1+($v1[$i]*1.3)-$v2[$i]+$d1[$i]+$d2[$i])/1300),2); + if($v1[$i] > $mx) { + $mx = $v1[$i]; + $r[0] = $cs[$i]; + $r[1] = $i; + } + } + $i++; + } + return $r; + }*/ - //Расчет защиты (магия) - public function zmgo($v) - { - //if($v > 1000) { - // $v = 1000; - //} - $r = (1 - (pow(0.5, ($v / 250)))) * 100; - return $r; - } + public function yronLvl($lvl1, $lvl2) + { + $r = [ + 1 => [ + 0, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + ], + 2 => [ + 0, + 600, + 400, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + ], + 3 => [ + 0, + 1000, + 800, + 600, + 400, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + ], + 4 => [ + 0, + 1400, + 1200, + 1000, + 800, + 600, + 400, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + ], + 5 => [ + 0, + 1800, + 1600, + 1400, + 1200, + 1000, + 800, + 600, + 400, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + ], + 6 => [ + 0, + 2200, + 2000, + 1800, + 1600, + 1400, + 1200, + 1000, + 800, + 600, + 400, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + ], + 7 => [ + 0, + 2600, + 2400, + 2200, + 2000, + 1800, + 1600, + 1400, + 1200, + 1000, + 800, + 600, + 400, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + ], + 8 => [ + 0, + 3000, + 2800, + 2600, + 2400, + 2200, + 2000, + 1800, + 1600, + 1400, + 1200, + 1000, + 800, + 600, + 400, + 200, + 200, + 200, + 200, + 200, + 200, + 200, + ], + 9 => [ + 0, + 3400, + 3200, + 3000, + 2800, + 2600, + 2400, + 2200, + 2000, + 1800, + 1600, + 1400, + 1200, + 1000, + 800, + 600, + 400, + 200, + 200, + 200, + 200, + 200, + ], + 10 => [ + 0, + 3800, + 3600, + 3400, + 3200, + 3000, + 2800, + 2600, + 2400, + 2200, + 2000, + 1800, + 1600, + 1400, + 1200, + 1000, + 800, + 600, + 400, + 200, + 200, + 200, + ], + 11 => [ + 0, + 4200, + 4000, + 3800, + 3600, + 3400, + 3200, + 3000, + 2800, + 2600, + 2400, + 2200, + 2000, + 1800, + 1600, + 1400, + 1200, + 1000, + 800, + 600, + 400, + 200, + ], + 12 => [ + 0, + 4600, + 4400, + 4200, + 4000, + 3800, + 3600, + 3400, + 3200, + 3000, + 2800, + 2600, + 2400, + 2200, + 2000, + 1800, + 1600, + 1400, + 1200, + 1000, + 800, + 600, + ], + 13 => [ + 0, + 5000, + 4800, + 4600, + 4400, + 4200, + 4000, + 3800, + 3600, + 3400, + 3200, + 3000, + 2800, + 2600, + 2400, + 2200, + 2000, + 1800, + 1600, + 1400, + 1200, + 1000, + ], + 14 => [ + 0, + 5400, + 5200, + 5000, + 4800, + 4600, + 4400, + 4200, + 4000, + 3800, + 3600, + 3400, + 3200, + 3000, + 2800, + 2600, + 2400, + 2200, + 2000, + 1800, + 1600, + 1400, + ], + 15 => [ + 0, + 5800, + 5600, + 5400, + 5200, + 5000, + 4800, + 4600, + 4400, + 4200, + 4000, + 3800, + 3600, + 3400, + 3200, + 3000, + 2800, + 2600, + 2400, + 2200, + 2000, + 1800, + ], + 16 => [ + 0, + 6200, + 6000, + 5800, + 5600, + 5400, + 5200, + 5000, + 4800, + 4600, + 4400, + 4200, + 4000, + 3800, + 3600, + 3400, + 3200, + 3000, + 2800, + 2600, + 2400, + 2200, + ], + 17 => [ + 0, + 6600, + 6400, + 6200, + 6000, + 5800, + 5600, + 5400, + 5200, + 5000, + 4800, + 4600, + 4400, + 4200, + 4000, + 3800, + 3600, + 3400, + 3200, + 3000, + 2800, + 2600, + ], + 18 => [ + 0, + 7000, + 6800, + 6600, + 6400, + 6200, + 6000, + 5800, + 5600, + 5400, + 5200, + 5000, + 4800, + 4600, + 4400, + 4200, + 4000, + 3800, + 3600, + 3400, + 3200, + 3000, + ], + 19 => [ + 0, + 7400, + 7200, + 7000, + 6800, + 6600, + 6400, + 6200, + 6000, + 5800, + 5600, + 5400, + 5200, + 5000, + 4800, + 4600, + 4400, + 4200, + 4000, + 3800, + 3600, + 3400, + ], + 20 => [ + 0, + 7800, + 7600, + 7400, + 7200, + 7000, + 6800, + 6600, + 6400, + 6200, + 6000, + 5800, + 5600, + 5400, + 5200, + 5000, + 4800, + 4600, + 4400, + 4200, + 4000, + 3800, + ], + 21 => [ + 0, + 8200, + 8000, + 7800, + 7600, + 7400, + 7200, + 7000, + 6800, + 6600, + 6400, + 6200, + 6000, + 5800, + 5600, + 5400, + 5200, + 5000, + 4800, + 4600, + 4400, + 4200, + ], + ]; + $r = floor($r[$lvl1][$lvl2] / 100); + $r = 0; + return $r; + } + //Гамс + //Расчет защиты + public function zago($v) + { + if ($v > 1700) { + $v = 1700; + } + $r = round((1 - (pow(0.5, ($v / 399.51)))) * 100, 2); + return $r; + } + + //Расчет защиты (магия) + public function zmgo($v) + { + //if($v > 1000) { + // $v = 1000; + //} + $r = (1 - (pow(0.5, ($v / 250)))) * 100; + return $r; + } - public function yrn($st1, $st2, $u1, $u2, $level, $level2 = null, $type, $min_yron, $max_yron, $min_bron = null, $max_bron = null, $vladenie, $power_yron, $power_krit, $zashita, $ozashita = null, $proboi, $weapom_damage, $weapom_min, $weapom_max, $za_proc = null, $zm_proc = null, $zashitam = null, $ozashitam = null, $wp_type, $witm) - { + public function yrn( + $st1, + $st2, + $u1, + $u2, + $level, + $level2 = null, + $type, + $min_yron, + $max_yron, + $min_bron = null, + $max_bron = null, + $vladenie, + $power_yron, + $power_krit, + $zashita, + $ozashita = null, + $proboi, + $weapom_damage, + $weapom_min, + $weapom_max, + $za_proc = null, + $zm_proc = null, + $zashitam = null, // pzm тут! + $ozashitam = null, + $wp_type, + $witm + ) { + global $u; - global $u; + //Поправка + if ($zashita < 1) { + $zashita = 1; + } - //Поправка - if ($zashita < 1) { - $zashita = 1; - } + if ($min_yron < 1) { + $min_yron = 1; + } - if ($min_yron < 1) { - $min_yron = 1; - } + if ($max_yron < 1) { + $max_yron = 1; + } - if ($max_yron < 1) { - $max_yron = 1; - } + if (!isset($type) || $type == '') { + $type = 12; + } - if (!isset($type) || $type == '') { - $type = 12; - } - - //Параметры для возврвата - $r = ['min' => 0, 'max' => 0, 'type' => $type]; - $p = [ - 'Y' => 0, - 'B' => [0 => 0, 1 => 0, 'rnd' => false], - 'L' => $level, - 'W' => [$weapom_min, $weapom_max, 'rnd' => false], //минимальный урон //максимальный урон добавочный - 'U' => $vladenie, //владение оружием - 'M' => $power_yron, //мощность урона - 'K' => $power_krit, //мощность крита - 'S' => 0, //влияние статов на проф.урон - 'T' => 1, //Кф. оружия - 'iT' => 1, //Итоговый доп. Кф. оружия - /* + //Параметры для возврвата + $r = ['min' => 0, 'max' => 0, 'type' => $type]; + $p = [ + 'Y' => 0, + 'B' => [0 => 0, 1 => 0, 'rnd' => false], + 'L' => $level, + 'W' => [$weapom_min, $weapom_max, 'rnd' => false], //минимальный урон //максимальный урон добавочный + 'U' => $vladenie, //владение оружием + 'M' => $power_yron, //мощность урона + 'K' => $power_krit, //мощность крита + 'S' => 0, //влияние статов на проф.урон + 'T' => 1, //Кф. оружия + 'iT' => 1, //Итоговый доп. Кф. оружия + /* (S) - влияние наших статов на профильный урон Колющий: S = Сила * 0,3 + Ловкость * 0,7 Рубящий: S = Сила * 0,5 + Ловкость * 0,25 + Интуиция * 0,25 Дробящий: S = Сила * 1 Режущий: S = Сила * 0,3 + Интуиция * 0,7 */ - ]; + ]; + //$p['M'] = $p['M'] * 0.70; + //$p['K'] = $p['K'] * 0.70; //Тут мощность крита - $witmdata = $this->lookStats($witm['data']); + //Умножитель 1.33 для двуручки и 1.00 для одной руки + //if ($weapom_damage == 0) { $p['T'] = 1; }elseif($weapom_damage == 1) { $p['T'] = 2.33;$p['iT'] = 2.33;} - //Расчет типа урона + $witmdata = $this->lookStats($witm['data']); - if ($wp_type == 18) { - $r['type'] = 1; - } elseif ($wp_type == 19) { - $r['type'] = 2; - } elseif ($wp_type == 20) { - $r['type'] = 3; - } elseif ($wp_type == 21) { - $r['type'] = 4; - } else { - $r['type'] = 0; - } - //ТУТ Профильный урон - //колющий - if ($r['type'] == 1) { - $p['S'] = $st1['s1'] * 0.25 + $st1['s2'] * 0.75; - $p['U'] = $st1['a1'] * 1.00; //кинжалы - //рубящий - } elseif ($r['type'] == 2) { - $p['S'] = $st1['s1'] * 1.20; - $p['U'] = $st1['a2'] * 1.00; //топоры - //дробящий - } elseif ($r['type'] == 3) { - $p['S'] = $st1['s1'] * 0.5 + $st1['s4'] * 1.00; - $p['U'] = $st1['a3'] * 1.00; //дубины - //режущий - } elseif ($r['type'] == 4) { - $p['S'] = $st1['s3'] * 1.00; - $p['U'] = $st1['a4'] * 1.00; //мечи - //Магиечески - } elseif ($r['type'] >= 5 && $r['type'] < 12) { - $p['S'] = $st1['s1'] * 0.5 + $st1['s2'] * 0.5; - $p['U'] = $st1['mg' . ($r['type'] - 4)] * 1.00; //магией - $p['Mage'] = true; - } else { - $p['S'] = 0; - $p['U'] = 0; // для кулака(нужно переписывать - } + //Расчет типа урона - $r['bron']['rnd'] = rand($r['bron'][0], $r['bron'][1]); - - $p['B'][0] = 2 + $level + $st1['s1'] - round($st1['s1'] / 5); - $p['B'][1] = $p['B'][0] + 3; - - $p['B']['rnd'] = rand($p['B'][0], $p['B'][1]); - $p['W']['rnd'] = rand($p['W'][0], $p['W'][1]); - - //Обычный урон - //$p['Mstart'] = 0; //Начальная мощность - if ($r['type'] == 12) { - $r['min'] = ($p['B'][0] + $weapom_min) * $p['T'] * (1 + $p['M'] / 100); - $r['max'] = ($p['B'][1] + $weapom_max) * $p['T'] * (1 + $p['M'] / 100); - } else { - $r['min'] = (($p['B'][0] + $p['S'] * 2 + $weapom_min * 2 + $p['U'] * 2) * $p['T']) * (1 + $p['M'] / 100); - $r['max'] = (($p['B'][1] + $p['S'] * 2 + $weapom_max * 2 + $p['U'] * 2) * $p['T']) * (1 + $p['M'] / 100); - if ($witmdata['tr_lvl'] < $level) { - } - } - - $r['bRND'] = $p['B']['rnd']; - $r['Kmin'] = ceil((2 + (0 + $p['K'] / 100)) * $r['min']); - $r['Kmax'] = ceil((2 + (0 + $p['K'] / 100)) * $r['max']); - - //Расчет брони - //для обычного - if ($r['type'] < 5 || $r['type'] == 12) { - $r['min_abron'] = round($r['min'] * 0.05); - $r['max_abron'] = round($r['max'] * 0.05); - - if ($proboi != 0) { - $r['bron']['rndold'] = $r['bron']['rnd']; - $r['bron']['rnd'] = 0;//$r['bron'][0]; - } - - $r['Kmin'] -= $r['bron']['rnd'] * 2; //было умножить на 2 - $r['Kmax'] -= $r['bron']['rnd'] * 2; //было умножить на 2 - - $r['min'] -= $r['bron']['rnd']; //не было деления ни на чо. - $r['max'] -= $r['bron']['rnd']; //не было деления ни на чо. - - } - - //Расчет защиты (не более 80%) - if ($r['type'] < 5) { - $r['min'] = round($r['min'] / 100 * (100 - $this->zago($st2['za']))); - $r['max'] = round($r['max'] / 100 * (100 - $this->zago($st2['za']))); - $r['Kmin'] = round($r['Kmin'] / 100 * (100 - $this->zago($st2['za']))); - $r['Kmax'] = round($r['Kmax'] / 100 * (100 - $this->zago($st2['za']))); - } elseif ($r['type'] == 12) { - $r['min'] = round($r['min'] / 100 * (100 - $this->zago($st2['za']))); - $r['max'] = round($r['max'] / 100 * (100 - $this->zago($st2['za']))); - $r['Kmin'] = round($r['Kmin'] / 100 * (100 - $this->zago($st2['za']))); - $r['Kmax'] = round($r['Kmax'] / 100 * (100 - $this->zago($st2['za']))); - } else { - $r['min'] = round($r['min'] / 100 * (100 - $this->zmgo($st2['zm']))); - $r['max'] = round($r['max'] / 100 * (100 - $this->zmgo($st2['zm']))); - $r['Kmin'] = round($r['Kmin'] / 100 * (100 - $this->zmgo($st2['zm']))); - $r['Kmax'] = round($r['Kmax'] / 100 * (100 - $this->zmgo($st2['zm']))); - } - - $r['min'] = round($r['min']); - $r['max'] = round($r['max']); - $r['Kmin'] = round($r['Kmin']); - $r['Kmax'] = round($r['Kmax']); - - $min_yrn = 0; //% - - if ($u1['clone'] > 0) { - $min_yrn = 75; - } - - $r['min'] -= floor($r['min'] / 100 * $min_yrn); - $r['max'] -= floor($r['max'] / 100 * $min_yrn); - $r['Kmin'] -= floor($r['Kmin'] / 100 * ($min_yrn)); - $r['Kmax'] -= floor($r['Kmax'] / 100 * ($min_yrn)); - $r['min_'] -= floor($r['min_'] / 100 * $min_yrn); - $r['max_'] -= floor($r['max_'] / 100 * $min_yrn); - $r['Kmin_'] -= floor($r['Kmin_'] / 100 * ($min_yrn)); - $r['Kmax_'] -= floor($r['Kmax_'] / 100 * ($min_yrn)); - - $defd = mysql_fetch_array(mysql_query('SELECT SUM(`vals`) FROM `battle_actions` WHERE `btl` = "' . $this->info['id'] . '" AND `vars` = "use_defteam' . $u2['team'] . '" LIMIT 1')); - if ($defd[0] > 100) { - $defd[0] = 100; - } - $defd = 0 + $defd[0]; - $powd = mysql_fetch_array(mysql_query('SELECT SUM(`vals`) FROM `battle_actions` WHERE `btl` = "' . $this->info['id'] . '" AND `vars` = "use_powteam' . $u1['team'] . '" LIMIT 1')); - if ($powd[0] > 100) { - $powd[0] = 100; - } - $powd = 0 + $powd[0]; - $defd = $defd - $powd; - - $r['min'] -= floor($defd); - $r['max'] -= floor($defd); - $r['Kmin'] -= floor($defd * 2); - $r['Kmax'] -= floor($defd * 2); - $r['min_'] -= floor($defd); - $r['max_'] -= floor($defd); - $r['Kmin_'] -= floor($defd * 2); - $r['Kmax_'] -= floor($defd * 2); - - $r['min'] += $st1['maxAtack']; - $r['max'] += $st1['maxAtack']; - $r['Kmin'] += $st1['maxAtack'] * 2; - $r['Kmin'] += $st1['maxAtack'] * 2; - if ($r['min'] < 1) { - $r['min'] = 1; - } - if ($r['max'] < 1) { - $r['max'] = 1; - } - if ($r['Kmin'] < 2) { - $r['Kmin'] = 2; - } - if ($r['Kmax'] < 2) { - $r['Kmax'] = 2; - } - if ($r['Kmin_'] < 2) { - $r['Kmin_'] = 2; - } - if ($r['Kmin_'] < 2) { - $r['Kmax_'] = 2; - } - - $r['m_k'] = $r['Kmax']; - - return $r; - } - - public $pr_not_use = [], $pr_reset = [], $pr_yrn = false, $prnt = []; - //Завершение действия приема - // pl прием - // u1 инфа юзера - // t1 тип снятия - // 99 = очищение кровью - // u2 - //$this->delPriem($pd[$k2][1][$k],${'p'.$k2},1,${'p'.$k2jn}); - public $del_val = [], $re_pd = []; - - public function delPriem($pl, $u1, $t = 1, $u2 = false, $rznm = 'Очиститься Кровью', $k2nm = null, $yrn = null, $yrnt = null) - { - global $u, $priem; - if (isset($pl['priem']['id']) && !isset($this->del_val['eff'][$pl['priem']['id']])) { - if ($pl['x'] > 1) { - $pl['name'] = $pl['name'] . ' x' . $pl['x'] . ''; - } - if ($pl['timeUse'] == 77) { - //завершаем прием - mysql_query('DELETE FROM `eff_users` WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); - } - $vLog = 'time1=' . time() . '||s1=' . $u1['sex'] . '||t1=' . $u1['team'] . '||login1=' . $u1['login'] . ''; - if (isset($u2['id'])) { - $vLog .= '||s2=' . $u2['sex'] . '||t2=' . $u2['team'] . '||login2=' . $u2['login'] . ''; - } - $mas1 = ['time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'text' => '', 'vars' => $vLog, 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1']; - if ($t == 4) { - $mas1['id_hod']++; - $t = 2; - } - if ($t == 1) { - $mas1['id_hod']++; - if ($pl['priem']['file'] != '0') { - if (file_exists('../../_incl_data/class/priems/' . $pl['priem']['file'] . '.php')) { - require('priems/' . $pl['priem']['file'] . '.php'); + if ($wp_type == 18) { + $r['type'] = 1; + } elseif ($wp_type == 19) { + $r['type'] = 2; + } elseif ($wp_type == 20) { + $r['type'] = 3; + } elseif ($wp_type == 21) { + $r['type'] = 4; + } else { + $r['type'] = 0; + } + //ТУТ Профильный урон + //колющий + if ($r['type'] == 1) { + $p['S'] = $st1['s1'] * 0.25 + $st1['s2'] * 0.75; + $p['U'] = $st1['a1'] * 1.00; //кинжалы + //рубящий + } elseif ($r['type'] == 2) { + $p['S'] = $st1['s1'] * 1.20; + $p['U'] = $st1['a2'] * 1.00; //топоры + //дробящий + } elseif ($r['type'] == 3) { + $p['S'] = $st1['s1'] * 0.5 + $st1['s4'] * 1.00; + $p['U'] = $st1['a3'] * 1.00; //дубины + //режущий + } elseif ($r['type'] == 4) { + $p['S'] = $st1['s3'] * 1.00; + $p['U'] = $st1['a4'] * 1.00; //мечи + //Магиечески + } elseif ($r['type'] >= 5 && $r['type'] < 12) { + $p['S'] = $st1['s1'] * 0.5 + $st1['s2'] * 0.5; + $p['U'] = $st1['mg' . ($r['type'] - 4)] * 1.00; //магией + $p['Mage'] = true; + } else { + $p['S'] = 0; + $p['U'] = 0; // для кулака(нужно переписывать + } + //Тут общее усиление + //Колющий + /*if($r['type'] == 1) { //s2 ловка + if ($st1['s2']<100) + { + $p['S'] = $p['S']*0.15; + }elseif ($st1['s2']>=150 && $st1['s2']<250){ + $p['S'] = $p['S']*0.25; + }elseif ($st1['s2']>=250 && $st1['s2']<300){ + $p['S'] = $p['S']*0.50; + }elseif ($st1['s2']>=300){ + $p['S'] = $p['S']*0.65; } - } elseif ($pl['priem']['file3'] != '0') { - if (file_exists('../../_incl_data/class/priems/' . $pl['priem']['file3'] . '.php')) { - require('priems/' . $pl['priem']['file3'] . '.php'); + + //рубящий + }elseif($r['type'] == 2) { //s1 сила + if ($st1['s1']<100) + { + $p['S'] = $p['S']*0.25; + }elseif ($st1['s1']>=100 && $st1['s1']<200){ + $p['S'] = $p['S']*0.35; + }elseif ($st1['s1']>=200 && $st1['s1']<250){ + $p['S'] = $p['S']*0.45; + }elseif ($st1['s1']>=250){ + $p['S'] = $p['S']*0.50; } - } else { - $mas1['text'] = '{tm1} {u1} {1x16x0} прием "' . $pl['name'] . '".'; - $this->del_val['eff'][$pl['priem']['id']] = true; - } - } elseif ($t == 2) { - $mas1['text'] = '{tm1} У персонажа {u1} закончилось действие магии "' . $pl['name'] . '".'; - } elseif ($t == 99) { - $mas1['text'] = '{u1} Снял эфект "' . $pl['name'] . '" с помощью ' . $rznm . ' .'; - } else { - if ($t == 100) { - $mas1['id_hod']++; - } - $mas1['text'] = '{tm1} Закончилось действие эффекта "' . $pl['name'] . '" для {u1}.'; - } - if ($pl['priem']['id'] != 24) { - $this->add_log($mas1); - } - $this->stats[$this->uids[$pl['uid']]] = $u->getStats($pl['uid'], 0, 0, false, false, true); - } else { - //не удалось удалить прием или эффект - } - } - public function hodUserPriem($pl, $u1, $t = 1, $u2 = false, $rznm = 'Очиститься Кровью', $k2nm, $yrn, $yrnt) - { - global $u, $priem; - if (isset($pl['priem']['id']) && !isset($this->del_val['eff'][$pl['priem']['id']])) { - - if ($yrnt == 1) { - //обычный удар - $yrn = round($yrn); - } elseif ($yrnt == 6) { - //противник увернулся от удара - $yrn = 0; - } elseif ($yrnt == 9) { - //противник парировал удар - $yrn = 0; - } elseif ($yrnt == 3) { - //вы нанесли крит-удар - $yrn = round($yrn * 1.95) + ceil($yrn / 125 * $this->stats[$this->uids[$u1['id']]]['m3']); - } elseif ($yrnt == 4) { - //вы нанесли крит-удар через блок - $yrn = round($yrn * 0.45) + ceil($yrn / 125 * $this->stats[$this->uids[$u1['id']]]['m3']); - } else { - //неизвестный удар - $yrn = 0; - } - - if ($pl['x'] > 1) { - $pl['name'] = $pl['name'] . ' x' . $pl['x'] . ''; - } - $vLog = 'time1=' . time() . '||s1=' . $u1['sex'] . '||t1=' . $u1['team'] . '||login1=' . $u1['login'] . ''; - if (isset($u2['id'])) { - $vLog .= '||s2=' . $u2['sex'] . '||t2=' . $u2['team'] . '||login2=' . $u2['login'] . ''; - } - $mas1 = ['time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'text' => '', 'vars' => $vLog, 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1']; - if ($t == 4) { - $mas1['id_hod']++; - $t = 2; - } - if ($t == 1) { - $mas1['id_hod']++; - if ($pl['priem']['file'] != '0') { - if (file_exists('../../_incl_data/class/priems/' . $pl['priem']['file'] . '.php')) { - require('priems/' . $pl['priem']['file'] . '.php'); + //дробящий + }elseif($r['type'] == 3) { //s1 сила + if ($st1['s1']<100) + { + $p['S'] = $p['S']*0.50; + }elseif ($st1['s1']>=125 && $st1['s1']<150){ + $p['S'] = $p['S']*0.65; + }elseif ($st1['s1']>=150 && $st1['s1']<175){ + $p['S'] = $p['S']*0.75; + }elseif ($st1['s1']>=175){ + $p['S'] = $p['S']*0.85; } - } else { - $mas1['text'] = '{tm1} {u1} {1x16x0} прием "' . $pl['name'] . '".'; - $this->del_val['eff'][$pl['priem']['id']] = true; + + //режущий + }elseif($r['type'] == 4) { //s3 инта + if ($st1['s3']<100) + { + $p['S'] = $p['S']*0.10; + }elseif ($st1['s3']>=150 && $st1['s3']<200){ + $p['S'] = $p['S']*0.15; + }elseif ($st1['s3']>=200 && $st1['s3']<250){ + $p['S'] = $p['S']*0.20; + }elseif ($st1['s3']>=250){ + $p['S'] = $p['S']*0.25; + } + + }*/ + + $r['bron']['rnd'] = rand($r['bron'][0], $r['bron'][1]); + + // + /*$r['bron'] = array($min_bron, $max_bron); //Броня зоны куда бьем + $r['bron']['rnd'] = rand($r['bron'][0],$r['bron'][1]); + //$r['bron']['rnd'] += $r['bron']['rnd']*0.01; //искуственное поднятие брони +1% + + $r['za'] = $zashita; //Защита от урона + $r['oza'] = $ozashita; //Особенность Защиты от урона + + $r['zm'] = $zashitam; //Защита от урона + $r['ozm'] = $ozashitam; //Особенность Защиты от урона*/ + + + /* + //Базовый урон + r.B[0] = $('#v1').val() * 0.51; + r.B[1] = r.B[0] + 3.73; + r.B[0] = Math.ceil(r.B[0]); + r.B[1] = Math.floor(r.B[1]); + if( r.B[0] < 0 ) { r.B[0] = 0; } + if( r.B[1] < 0 ) { r.B[1] = 0; } + r.B[0] += 5; + r.B[1] += 6; + // + */ + + //Остальные расчеты (коэфицент) + //$p['B'][0] = $st1['s1']*0.51; + //$p['B'][1] = $p['B'][0] + 3.73; + $p['B'][0] = 2 + $level + $st1['s1'] - round($st1['s1'] / 5); + $p['B'][1] = $p['B'][0] + 3; + /*$p['B'][0] += 5; + $p['B'][1] += 6;*/ + + $p['B']['rnd'] = rand($p['B'][0], $p['B'][1]); + $p['W']['rnd'] = rand($p['W'][0], $p['W'][1]); + + //Обычный урон + //$p['Mstart'] = 0; //Начальная мощность + if ($r['type'] == 12) { + $r['min'] = ($p['B'][0] + $weapom_min) * $p['T'] * (1 + $p['M'] / 100); + $r['max'] = ($p['B'][1] + $weapom_max) * $p['T'] * (1 + $p['M'] / 100); + } else { + $r['min'] = (($p['B'][0] + $p['S'] * 2 + $weapom_min * 2 + $p['U'] * 2) * $p['T']) * (1 + $p['M'] / 100); + $r['max'] = (($p['B'][1] + $p['S'] * 2 + $weapom_max * 2 + $p['U'] * 2) * $p['T']) * (1 + $p['M'] / 100); + //$r['min'] = (($p['B'][0]+$p['S']+$weapom_min)*$p['T']*(1+($u1['level']/200)*$p['U']))*(1+$p['M']/100); + //$r['max'] = (($p['B'][1]+$p['S']+$weapom_max)*$p['T']*(1+($u1['level']/200)*$p['U']))*(1+$p['M']/100); + if ($witmdata['tr_lvl'] < $level) { + /* + $minp = 3*($level-$witmdata['tr_lvl']); + $r['min'] -= ceil($r['min'] / 100 * $minp); + $r['max'] -= ceil($r['max'] / 100 * $minp); + */ + } + } + + //$r['minm'] = $r['min']*0.13; + //$r['maxm'] = $r['max']*0.13; + + /*if( $wp_type == 22 ) { + //Посохи + $r['min'] = $r['min']/2; + $r['max'] = $r['max']/2; + }*/ + + //Критический урон + //Новая + //$r['Kmin'] = $r['min']; + //$r['Kmax'] = $r['max']; + + /*$r['min'] += $weapom_min; + $r['max'] += $weapom_max; + $r['Kmin'] += $weapom_min*2; + $r['Kmax'] += $weapom_max*2;*/ + + //Минимальное значение урона + //$r['min_'] = floor($r['min']*0.13); + //$r['max_'] = floor($r['max']*0.13); + //$r['Kmin_'] = floor($r['Kmin']*0.13); + //$r['Kmax_'] = floor($r['Kmax']*0.13); + + //Особенности защиты + //$r['ozash_rnd'] = $r['oza'][$r['type']][1]; /*rand($r['oza'][$r['type']][0],$r['oza'][$r['type']][1]);*/ + + //if($r['ozash_rnd'] > 80) { $r['ozash_rnd'] = 80; } + //if($r['ozash_rnd'] < 0) { $r['ozash_rnd'] = 0; } + + + //$r['ozash_rnd'] = 100-$r['ozash_rnd']; + + //$p['iT'] + + /*$r['min'] = floor($r['min']*$p['iT'] + $weapom_min); + $r['max'] = floor($r['max']*$p['iT'] + $weapom_max); + $r['Kmin'] = floor($r['Kmin']*$p['iT'] + $weapom_min*2); + $r['Kmax'] = floor($r['Kmax']*$p['iT'] + $weapom_max*2); + $r['min_'] = floor($r['min_']*$p['iT'] + $weapom_min); + $r['max_'] = floor($r['max_']*$p['iT'] + $weapom_max); + $r['Kmin_'] = floor($r['Kmin_']*$p['iT'] + $weapom_min*2); + $r['Kmax_'] = floor($r['Kmax_']*$p['iT'] + $weapom_max*2); + */ + + //$r['min'] -= ($r['min']/(200+$r['ozash_rnd'])*$r['ozash_rnd']); + //$r['max'] -= ($r['max']/(200+$r['ozash_rnd'])*$r['ozash_rnd']); + + //$r['Kmin'] -= ($r['Kmin']/(200+$r['ozash_rnd'])*$r['ozash_rnd']); + //$r['Kmax'] -= ($r['Kmax']/(200+$r['ozash_rnd'])*$r['ozash_rnd']); + + $r['bRND'] = $p['B']['rnd']; + + //$r['min'] += $min_yron; + //$r['max'] += $max_yron; + + // + + /*if( $r['minm'] > $r['min'] ) { + $r['min'] = $r['minm']; } - } - $this->add_log($mas1); - $this->stats[$this->uids[$pl['uid']]] = $u->getStats($pl['uid'], 0, 0, false, false, true); - } else { - //не удалось удалить прием или эффект - } - } + if( $r['maxm'] > $r['max'] ) { + $r['max'] = $r['maxm']; + }*/ - //расчет защиты - public function aPower($za, $za1, $yrn) - { - return (1 - (pow(0.5, (($za + $za1) / 250)))) * 100; - } + $r['Kmin'] = ceil((2 + (0 + $p['K'] / 100)) * $r['min']); + $r['Kmax'] = ceil((2 + (0 + $p['K'] / 100)) * $r['max']); - //расчет брони - public function bronGo($min, $max) - { - return ceil($min, $max); - } + //$r['Kmin'] = ceil( ( 1 + ( 1 + $p['K']/100 ) ) * $r['min']); + //$r['Kmax'] = ceil( ( 1 + ( 1 + $p['K']/100 ) ) * $r['max']); - //расчет брони (test) - public function bronGoTest($min, $max) - { - return ceil(round($min, $max)); - } + //$r['Kmin'] = ceil( ( $r['min'] * 2 ) * ( 1 + $p['K']/100 )); + //$r['Kmax'] = ceil( ( $r['max'] * 2 ) * ( 1 + $p['K']/100 )); - //Разбираем массив со статами - public function lookStats($m) - { - $ist = []; - $di = explode('|', $m); - $i = 0; - $de = false; - while ($i < count($di)) { - $de = explode('=', $di[$i]); - $ist[$de[0]] = $de[1]; - $i++; - } - return $ist; - } + //$r['Kmin'] = ceil( ( $r['min'] ) * ( 2 + $p['K']/100 )); + //$r['Kmax'] = ceil( ( $r['max'] ) * ( 2 + $p['K']/100 )); + // + //$r['Kminm'] = $r['Kmin']*0.05; + //$r['Kmaxm'] = $r['Kmax']*0.05; - //Расчет зависимости уворота - public function mfsgo1($a, $b) - { - return $this->form_mf($a, $b); - } + //Расчет брони + //для обычного + if ($r['type'] < 5 || $r['type'] == 12) { + $r['min_abron'] = round($r['min'] * 0.05); + $r['max_abron'] = round($r['max'] * 0.05); - //Расчет зависимости крита - public function mfsgo2($a, $b) - { - return $this->form_mf($a, $b); - } + /*if($proboi != 0) { + $r['bron']['rndold'] = $r['bron']['rnd']; + $r['yrnrz'] = $r['max']-$r['min']; + if( $r['yrnrz'] < 0 ) { + $r['yrnrz'] = -$r['yrnrz']; + } + }*/ + if ($proboi != 0) { + $r['bron']['rndold'] = $r['bron']['rnd']; + //$r['bron']['rnd'] = floor($r['bron']['rnd']/100*(100-$proboi)); + //if( $r['bron']['rnd'] < $r['bron'][0] ) { + $r['bron']['rnd'] = 0;//$r['bron'][0]; + //} + /*if( round($r['min']*0.45) < $r['bron']['rnd'] ) { + $r['bron']['rnd'] = round($r['min']*0.55); + } + // + $r['yrnrz'] = $r['max']-$r['min']; + if( $r['yrnrz'] < 0 ) { + $r['yrnrz'] = -$r['yrnrz']; + }*/ + } - //Расчет мф. (новая) - public function form_mf($u, $au) - { - $v = $u * 5.1 - $au * 5.1; - if ($v < 0) { - $v = 0; - } - $r = (1 - (pow(99 / 100, (($v) / 100)))) * 100; - $r = round($r); - return $r; - } + //Новые исправления в броне + if ($r['bron']['rnd'] > $r['min']) { + // $r['bron']['rnd'] = $r['min']; + } + // - //Ступеньчатая формула (общая) для 5ых уровней. - public function msf_st2($mf, $lvl1, $lvl2) - { - $r = 0; + $r['Kmin'] -= $r['bron']['rnd'] * 2; //было умножить на 2 + $r['Kmax'] -= $r['bron']['rnd'] * 2; //было умножить на 2 - if ($lvl1 > $lvl2) { - $lvl = $lvl1; - } else { - $lvl = $lvl2; - } + $r['min'] -= $r['bron']['rnd']; //не было деления ни на чо. + $r['max'] -= $r['bron']['rnd']; //не было деления ни на чо. - /* + if ($proboi != 0) { + // $r['yrnrz'] + // $r['bron']['rndold'] + } + } + + //Расчет защиты (не более 80%) + if ($r['type'] < 5) { + $r['min'] = round($r['min'] / 100 * (100 - $this->zago($st2['za']))); + $r['max'] = round($r['max'] / 100 * (100 - $this->zago($st2['za']))); + $r['Kmin'] = round($r['Kmin'] / 100 * (100 - $this->zago($st2['za']))); + $r['Kmax'] = round($r['Kmax'] / 100 * (100 - $this->zago($st2['za']))); + } elseif ($r['type'] == 12) { + $r['min'] = round($r['min'] / 100 * (100 - $this->zago($st2['za']))); + $r['max'] = round($r['max'] / 100 * (100 - $this->zago($st2['za']))); + $r['Kmin'] = round($r['Kmin'] / 100 * (100 - $this->zago($st2['za']))); + $r['Kmax'] = round($r['Kmax'] / 100 * (100 - $this->zago($st2['za']))); + } else { + $r['min'] = round($r['min'] / 100 * (100 - $this->zmgo($st2['zm']))); + $r['max'] = round($r['max'] / 100 * (100 - $this->zmgo($st2['zm']))); + $r['Kmin'] = round($r['Kmin'] / 100 * (100 - $this->zmgo($st2['zm']))); + $r['Kmax'] = round($r['Kmax'] / 100 * (100 - $this->zmgo($st2['zm']))); + } + + /*if( $r['Kminm'] > $r['Kmin'] ) { + $r['Kmin'] = $r['Kminm']; + } + if( $r['Kmaxm'] > $r['Kmax'] ) { + $r['Kmax'] = $r['Kmaxm']; + } + + if( $r['minm'] > $r['min'] ) { + $r['min'] = $r['minm']; + } + if( $r['maxm'] > $r['max'] ) { + $r['max'] = $r['maxm']; + }*/ + + $r['min'] = round($r['min']); + $r['max'] = round($r['max']); + $r['Kmin'] = round($r['Kmin']); + $r['Kmax'] = round($r['Kmax']); + + $min_yrn = 0; //% + + //if( $wp_type == 18 ) { + //$min_yrn = 17; + //} + + //колющий + /*if($r['type'] == 1) { + $min_yrn += 50; + //рубящий + }elseif($r['type'] == 2) { + $min_yrn += 40; + //дробящий + }elseif($r['type'] == 3) { + $min_yrn += 35; + //режущий + }elseif($r['type'] == 4) { + $min_yrn += 60; + //Магиечески + }elseif($r['type'] >= 5){ + + }else { + + } + + // + if( $p['M'] > 0 ) { + //$min_yrn -= $p['M']/100*20; + } + // + if( $p['Mage'] == true && $r['type'] != 1 ) { + //$min_yrn += 30; + } + // + if( $r['type'] >= 5 ) { + $min_yrn += $zm_proc; + }else{ + $min_yrn += $za_proc; + } + if($r['type'] < 5){ + //$min_yrn += 50; + }*/ + + //$min_yrn = 33; + + if ($u1['clone'] > 0) { + $min_yrn = 75; + } + + $r['min'] -= floor($r['min'] / 100 * $min_yrn); + $r['max'] -= floor($r['max'] / 100 * $min_yrn); + $r['Kmin'] -= floor($r['Kmin'] / 100 * ($min_yrn)); + $r['Kmax'] -= floor($r['Kmax'] / 100 * ($min_yrn)); + $r['min_'] -= floor($r['min_'] / 100 * $min_yrn); + $r['max_'] -= floor($r['max_'] / 100 * $min_yrn); + $r['Kmin_'] -= floor($r['Kmin_'] / 100 * ($min_yrn)); + $r['Kmax_'] -= floor($r['Kmax_'] / 100 * ($min_yrn)); + + $defd = mysql_fetch_array(mysql_query('SELECT SUM(`vals`) FROM `battle_actions` WHERE `btl` = "' . $this->info['id'] . '" AND `vars` = "use_defteam' . $u2['team'] . '" LIMIT 1')); + if ($defd[0] > 100) { + $defd[0] = 100; + } + $defd = 0 + $defd[0]; + $powd = mysql_fetch_array(mysql_query('SELECT SUM(`vals`) FROM `battle_actions` WHERE `btl` = "' . $this->info['id'] . '" AND `vars` = "use_powteam' . $u1['team'] . '" LIMIT 1')); + if ($powd[0] > 100) { + $powd[0] = 100; + } + $powd = 0 + $powd[0]; + $defd = $defd - $powd; + + $r['min'] -= floor($defd); + $r['max'] -= floor($defd); + $r['Kmin'] -= floor($defd * 2); + $r['Kmax'] -= floor($defd * 2); + $r['min_'] -= floor($defd); + $r['max_'] -= floor($defd); + $r['Kmin_'] -= floor($defd * 2); + $r['Kmax_'] -= floor($defd * 2); + + /* + if($r['type'] == 4) { + $r['Kmin'] -= floor($r['Kmin']/100*10); + $r['Kmax'] -= floor($r['Kmax']/100*10); + $r['Kmin_'] -= floor($r['Kmin_']/100*10); + $r['Kmax_'] -= floor($r['Kmax_']/100*10); + } + */ + + $r['min'] += $st1['maxAtack']; + $r['max'] += $st1['maxAtack']; + $r['Kmin'] += $st1['maxAtack'] * 2; + $r['Kmin'] += $st1['maxAtack'] * 2; + + /*$r['min_'] += $st1['maxAtack']; + $r['max_'] += $st1['maxAtack']; + $r['Kmin_'] += $st1['maxAtack']*2; + $r['Kmin_'] += $st1['maxAtack']*2;*/ + + + /* + if($r['min'] < round($weapom_min/2)) { + $r['min'] = round($weapom_min/2); + } + if($r['max'] < round($weapom_max/2)) { + $r['max'] = round($weapom_max/2); + } + if($r['Kmin'] < round($weapom_min)) { + $r['Kmin'] = round($weapom_min); + } + if($r['Kmax'] < round($weapom_max)) { + $r['Kmax'] = round($weapom_max); + } + if($r['min_'] < round($weapom_min/2)) { + $r['min_'] = round($weapom_min/2); + } + if($r['max_'] < round($weapom_max/2)) { + $r['max_'] = round($weapom_max/2); + } + if($r['Kmin_'] < round($weapom_min)) { + $r['Kmin_'] = round($weapom_min); + } + if($r['Kmax_'] < round($weapom_max)) { + $r['Kmax_'] = round($weapom_max); + } + */ + if ($r['min'] < 1) { + $r['min'] = 1; + } + if ($r['max'] < 1) { + $r['max'] = 1; + } + if ($r['Kmin'] < 2) { + $r['Kmin'] = 2; + } + if ($r['Kmax'] < 2) { + $r['Kmax'] = 2; + } + if ($r['Kmin_'] < 2) { + $r['Kmin_'] = 2; + } + if ($r['Kmin_'] < 2) { + $r['Kmax_'] = 2; + } + + $r['m_k'] = $r['Kmax']; + + return $r; + } + + public $pr_not_use = [], $pr_reset = [], $pr_yrn = false, $prnt = []; + //Завершение действия приема + // pl прием + // u1 инфа юзера + // t1 тип снятия + // 99 = очищение кровью + // u2 + //$this->delPriem($pd[$k2][1][$k],${'p'.$k2},1,${'p'.$k2jn}); + public $del_val = [], $re_pd = []; + + public function delPriem( + $pl, + $u1, + $t = 1, + $u2 = false, + $rznm = 'Очиститься Кровью', + $k2nm = null, + $yrn = null, + $yrnt = null + ) { + global $u, $priem; + if (isset($pl['priem']['id']) && !isset($this->del_val['eff'][$pl['priem']['id']])) { + if ($pl['x'] > 1) { + $pl['name'] = $pl['name'] . ' x' . $pl['x'] . ''; + } + if ($pl['timeUse'] == 77) { + //завершаем прием + mysql_query('DELETE FROM `eff_users` WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + $vLog = 'time1=' . time() . '||s1=' . $u1['sex'] . '||t1=' . $u1['team'] . '||login1=' . $u1['login'] . ''; + if (isset($u2['id'])) { + $vLog .= '||s2=' . $u2['sex'] . '||t2=' . $u2['team'] . '||login2=' . $u2['login'] . ''; + } + $mas1 = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'text' => '', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + if ($t == 4) { + $mas1['id_hod']++; + $t = 2; + } + if ($t == 1) { + $mas1['id_hod']++; + if ($pl['priem']['file'] != '0') { + if (file_exists('../../_incl_data/class/priems/' . $pl['priem']['file'] . '.php')) { + require('priems/' . $pl['priem']['file'] . '.php'); + } + } elseif ($pl['priem']['file3'] != '0') { + if (file_exists('../../_incl_data/class/priems/' . $pl['priem']['file3'] . '.php')) { + require('priems/' . $pl['priem']['file3'] . '.php'); + } + } else { + $mas1['text'] = '{tm1} {u1} {1x16x0} прием "' . $pl['name'] . '".'; + $this->del_val['eff'][$pl['priem']['id']] = true; + } + } elseif ($t == 2) { + $mas1['text'] = '{tm1} У персонажа {u1} закончилось действие магии "' . $pl['name'] . '".'; + } elseif ($t == 99) { + $mas1['text'] = '{u1} Снял эфект "' . $pl['name'] . '" с помощью ' . $rznm . ' .'; + } else { + if ($t == 100) { + $mas1['id_hod']++; + } + $mas1['text'] = '{tm1} Закончилось действие эффекта "' . $pl['name'] . '" для {u1}.'; + } + if ($pl['priem']['id'] != 24) { + $this->add_log($mas1); + } + $this->stats[$this->uids[$pl['uid']]] = $u->getStats($pl['uid'], 0, 0, false, false, true); + } else { + //не удалось удалить прием или эффект + } + } + + public function hodUserPriem($pl, $u1, $t = 1, $u2 = false, $rznm = 'Очиститься Кровью', $k2nm, $yrn, $yrnt) + { + global $u, $priem; + if (isset($pl['priem']['id']) && !isset($this->del_val['eff'][$pl['priem']['id']])) { + if ($yrnt == 1) { + //обычный удар + $yrn = round($yrn); + } elseif ($yrnt == 6) { + //противник увернулся от удара + $yrn = 0; + } elseif ($yrnt == 9) { + //противник парировал удар + $yrn = 0; + } elseif ($yrnt == 3) { + //вы нанесли крит-удар + $yrn = round($yrn * 1.95) + ceil($yrn / 125 * $this->stats[$this->uids[$u1['id']]]['m3']); + } elseif ($yrnt == 4) { + //вы нанесли крит-удар через блок + $yrn = round($yrn * 0.45) + ceil($yrn / 125 * $this->stats[$this->uids[$u1['id']]]['m3']); + } else { + //неизвестный удар + $yrn = 0; + } + + if ($pl['x'] > 1) { + $pl['name'] = $pl['name'] . ' x' . $pl['x'] . ''; + } + $vLog = 'time1=' . time() . '||s1=' . $u1['sex'] . '||t1=' . $u1['team'] . '||login1=' . $u1['login'] . ''; + if (isset($u2['id'])) { + $vLog .= '||s2=' . $u2['sex'] . '||t2=' . $u2['team'] . '||login2=' . $u2['login'] . ''; + } + $mas1 = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'text' => '', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + if ($t == 4) { + $mas1['id_hod']++; + $t = 2; + } + if ($t == 1) { + $mas1['id_hod']++; + if ($pl['priem']['file'] != '0') { + if (file_exists('../../_incl_data/class/priems/' . $pl['priem']['file'] . '.php')) { + require('priems/' . $pl['priem']['file'] . '.php'); + } + } else { + $mas1['text'] = '{tm1} {u1} {1x16x0} прием "' . $pl['name'] . '".'; + $this->del_val['eff'][$pl['priem']['id']] = true; + } + } + $this->add_log($mas1); + $this->stats[$this->uids[$pl['uid']]] = $u->getStats($pl['uid'], 0, 0, false, false, true); + } else { + //не удалось удалить прием или эффект + } + } + + //расчет защиты + public function aPower($za, $za1, $yrn) + { + $z = 0; + /*$z = ($za+$za1)*0.35; + $z = round($yrn/$z*100);*/ + + $z = (1 - (pow(0.5, (($za + $za1) / 250)))) * 100; + return $z; + } + + //расчет брони + public function bronGo($min, $max) + { + $v = 0; + //$v = ceil(($min+$max)/2,$max); + $v = ceil($min, $max); + return $v; + } + + //расчет брони (test) + public function bronGoTest($min, $max) + { + $v = 0; + //$v = ceil(($min+$max)/2,$max); + $v = ceil(round($min, $max)); + return $v; + } + + //Разбираем массив со статами + public function lookStats($m) + { + $ist = []; + $di = explode('|', $m); + $i = 0; + $de = false; + while ($i < count($di)) { + $de = explode('=', $di[$i]); + $ist[$de[0]] = $de[1]; + $i++; + } + return $ist; + } + + //Расчет зависимости уворота + public function mfsgo1($a, $b) + { + $r = $this->form_mf($a, $b); + return $r; + } + + //Расчет зависимости крита + public function mfsgo2($a, $b) + { + $r = $this->form_mf($a, $b); + return $r; + } + + //Расчет мф. (новая) + public function form_mf($u, $au) + { + $v = $u * 5.1 - $au * 5.1; + if ($v < 0) { + $v = 0; + } + $r = (1 - (pow(99 / 100, (($v) / 100)))) * 100; + $r = round($r); + return $r; + } + + //Ступеньчатая формула (общая) для 5ых уровней. + public function msf_st2($mf, $lvl1, $lvl2) + { + $r = 0; + + if ($lvl1 > $lvl2) { + $lvl = $lvl1; + } else { + $lvl = $lvl2; + } + + /* 1-ый: от 0 до 50 - линейное изменение шанса от 0 до 25% 2-ой: от 51 до 151 - линейное изменение шанса от 25% до 50% 3-ий: от 151 до 400 - линейное изменение шанса от 50% до 75% @@ -8099,69 +10370,70 @@ class battleClass */ - //турнир - if ($mf < 0) { - $mf = 0; - } - if ($lvl <= 7) { - //Баланс 0-7 уровня - if ($mf <= 100) { //0-35 - $prc = $mf; - $r = 35 / 50 * $prc; - } elseif ($mf <= 200) { //35-65 - $prc = $mf - 101; - $r = $prc / 99 * 30; - $r += 35; - } elseif ($mf <= 400) { //65-85 - $prc = $mf - 201; - $r = $prc / 199 * 20; - $r += 65; - } else { //> 75 - $r = 85 + 0.01 * abs(($mf - 1000)); - } - } else { - //Баланс остальных уровней - if ($mf <= 100) { //0-45 - $prc = $mf; - $r = 45 / 100 * $prc; - } elseif ($mf <= 300) { //45-65 - $prc = $mf - 101; - $r = $prc / 199 * 20; - $r += 45; - } elseif ($mf <= 450) { //65-75 - $prc = $mf - 301; - $r = $prc / 149 * 10; - $r += 65; - } else { //> 75 - $r = 85; - } - } + //турнир + if ($mf < 0) { + $mf = 0; + } + if ($lvl <= 7) { + //Баланс 0-7 уровня + if ($mf <= 100) { //0-35 + $prc = $mf; + $r = 35 / 50 * $prc; + } elseif ($mf <= 200) { //35-65 + $prc = $mf - 101; + $r = $prc / 99 * 30; + $r += 35; + } elseif ($mf <= 400) { //65-85 + $prc = $mf - 201; + $r = $prc / 199 * 20; + $r += 65; + } else { //> 75 + $r = 85 + 0.01 * abs(($mf - 1000)); + } + } else { + //Баланс остальных уровней + if ($mf <= 100) { //0-45 + $prc = $mf; + $r = 45 / 100 * $prc; + } elseif ($mf <= 300) { //45-65 + $prc = $mf - 101; + $r = $prc / 199 * 20; + $r += 45; + } elseif ($mf <= 450) { //65-75 + $prc = $mf - 301; + $r = $prc / 149 * 10; + $r += 65; + } else { //> 75 + $r = 85; + //$r = 75 + 0.01 * abs(($mf-1000)); + } + } - if ($r < 0) { - $r = 0; - } + if ($r < 0) { + $r = 0; + } - return $r; - } + return $r; + } - //Ступеньчатая формула (уворот) - public function msf_st($mf, $lvl1, $lvl2) - { - $r = 0; + //Ступеньчатая формула (уворот) + public function msf_st($mf, $lvl1, $lvl2) + { + $r = 0; - if ($lvl1 > $lvl2) { - $lvl = $lvl1; - } else { - $lvl = $lvl2; - } + if ($lvl1 > $lvl2) { + $lvl = $lvl1; + } else { + $lvl = $lvl2; + } - /* + /* 1-ый: от 0 до 100 - линейное изменение шанса от 0 до 25% 2-ой: от 101 до 400 - линейное изменение шанса от 35% до 70% 3-ий: от 401 до 1000 - линейное изменение шанса от 70% до 85% 4-ый: свыше 1000 - 85% + 0,01 * (разница У и АУ - 1000) */ - /* Шпаргалочка для улучшения баланса. 150 АУ у слабых критов, 350 у топовых. + /* Шпаргалочка для улучшения баланса. 150 АУ у слабых критов, 350 у топовых. АУ У Разница Процент 75 750 675 85 @@ -8175,30 +10447,30 @@ class battleClass Было 700 у, поправил 750 и соотвественно разницу. Посмотрим как будут убивать У. */ - if ($mf < 0) { - $mf = 0; - } - //турнир - if ($lvl <= 7) { - //Баланс 0-7 уровня - if ($mf <= 200) { //0-60 - $prc = $mf; - $r = 60 / 200 * $prc; - } elseif ($mf <= 550) { //60-70 - $prc = $mf - 201; - $r = $prc / 349 * 10; - $r += 60; - } elseif ($mf <= 675) { //70-75 - $prc = $mf - 551; - $r = $prc / 124 * 5; - $r += 70; - } else { //> 85 - $r = 76; - //$r = 85 + 0.01 * abs(($mf-1000)); - } - } else { - //Баланс всех остальных уровней - /* Шпаргалочка для улучшения баланса. 150 АУ у слабых критов, 350 у топовых. + if ($mf < 0) { + $mf = 0; + } + //турнир + if ($lvl <= 7) { + //Баланс 0-7 уровня + if ($mf <= 200) { //0-60 + $prc = $mf; + $r = 60 / 200 * $prc; + } elseif ($mf <= 550) { //60-70 + $prc = $mf - 201; + $r = $prc / 349 * 10; + $r += 60; + } elseif ($mf <= 675) { //70-75 + $prc = $mf - 551; + $r = $prc / 124 * 5; + $r += 70; + } else { //> 85 + $r = 76; + //$r = 85 + 0.01 * abs(($mf-1000)); + } + } else { + //Баланс всех остальных уровней + /* Шпаргалочка для улучшения баланса. 150 АУ у слабых критов, 350 у топовых. АУ У Разница Процент 50 950 1000 85 @@ -8212,1003 +10484,1232 @@ class battleClass Пробуем разница 100 между У и АУ - шанс 50, остальное попасть нереально. Позже искусственно завышаем АУ танку при размене. */ - if ($mf <= 250) { //0-35 - $prc = $mf; - $r = 35 / 250 * $prc; - } elseif ($mf <= 600) { //35-50 - $prc = $mf - 251; - $r = $prc / 349 * 15; - $r += 35; - } elseif ($mf <= 800) { //50-70 - $prc = $mf - 601; - $r = $prc / 199 * 20; - $r += 50; - } else { //> 85 - $r = 75; - //$r = 75 + 0.01 * abs(($mf-1000)); - } - } + if ($mf <= 250) { //0-35 + $prc = $mf; + $r = 35 / 250 * $prc; + } elseif ($mf <= 600) { //35-50 + $prc = $mf - 251; + $r = $prc / 349 * 15; + $r += 35; + } elseif ($mf <= 800) { //50-70 + $prc = $mf - 601; + $r = $prc / 199 * 20; + $r += 50; + } else { //> 85 + $r = 75; + //$r = 75 + 0.01 * abs(($mf-1000)); + } + } - if ($r < 0) { - $r = 0; - } + if ($r < 0) { + $r = 0; + } - return floor($r * 1.25); - } + return floor($r * 1.25); + } - //Расчет МФ - public function mfs($type, $mf, $lvl1, $lvl2) - { - $rval = 0; - switch ($type) { - case 1: + //Расчет МФ + public function mfs($type, $mf, $lvl1, $lvl2) + { + $rval = 0; + switch ($type) { + case 1: - //Крит + //Крит - if ($mf['amf'] < 0) { - $mf['amf'] = 0; - } - if ($mf['mf'] < 0) { - $mf['mf'] = 0; - } - if ($mf['mf'] > $mf['smf']) { - $rval = 100 - floor(((($mf['smf']) / ($mf['mf'] + 1)) * 100)); - } else { - $rval = 0; - } + if ($mf['amf'] < 0) { + $mf['amf'] = 0; + } + if ($mf['mf'] < 0) { + $mf['mf'] = 0; + } + if ($mf['mf'] > $mf['smf']) { + $rval = 100 - floor(((($mf['smf']) / ($mf['mf'] + 1)) * 100)); + } else { + $rval = 0; + } - if ($rval < 1) { - $rval = 0; - } - if ($rval > 75) { - $rval = 75; - } - if ($mf['amf'] >= 1) { - if ($mf['amf'] > 100) { - $mf['amf'] = 100; - } - if (($mf['amf'] * 100) >= mt_rand(1, 10000)) { - $rval = 100; - } - } + if ($rval < 1) { + $rval = 0; + } + if ($rval > 75) { + $rval = 75; + } + if ($mf['amf'] >= 1) { + if ($mf['amf'] > 100) { + $mf['amf'] = 100; + } + if (($mf['amf'] * 100) >= mt_rand(1, 10000)) { + $rval = 100; + } + } - break; - case 2: + break; + case 2: - if ($mf['mf'] < 0) { - $mf['mf'] = 0; - } - if ($mf['amf'] < 0) { - $mf['amf'] = 0; - } - if ($mf['smf'] < 0) { - $mf['smf'] = 0; - } - if ($mf['asmf'] < 0) { - $mf['asmf'] = 0; - } + if ($mf['mf'] < 0) { + $mf['mf'] = 0; + } + if ($mf['amf'] < 0) { + $mf['amf'] = 0; + } + if ($mf['smf'] < 0) { + $mf['smf'] = 0; + } + if ($mf['asmf'] < 0) { + $mf['asmf'] = 0; + } - if ($mf['mf'] > $mf['smf']) { - $rval = 100 - floor(((($mf['smf']) / ($mf['mf'] + 1)) * 100)); //2.5 - } else { - $rval = 0; - } - if ($rval < 1) { - $rval = 0; - } - if ($rval > 75) { - $rval = 75; - } - if ($mf['asmf'] >= 0) // - { - if ($mf['asmf'] > 100) { - $mf['asmf'] = 100; - } - if ($mf['asmf'] >= rand(1, 100)) { - $rval = 0; - } - } - if ($mf['amf'] >= 0) { - if ($mf['amf'] > 100) { - $mf['amf'] = 100; - } - if ($mf['amf'] >= rand(1, 100)) { - $rval = 100; - } - } + if ($mf['mf'] > $mf['smf']) { + $rval = 100 - floor(((($mf['smf']) / ($mf['mf'] + 1)) * 100)); //2.5 + } else { + $rval = 0; + } + if ($rval < 1) { + $rval = 0; + } + if ($rval > 75) { + $rval = 75; + } + if ($mf['asmf'] >= 0) // + { + if ($mf['asmf'] > 100) { + $mf['asmf'] = 100; + } + if ($mf['asmf'] >= rand(1, 100)) { + $rval = 0; + } + } + if ($mf['amf'] >= 0) { + if ($mf['amf'] > 100) { + $mf['amf'] = 100; + } + if ($mf['amf'] >= rand(1, 100)) { + $rval = 100; + } + } - break; - case 3: - //$mf[1] -= 4; - //$mf[2] -= 4; - if ($mf[1] < 1) { - $mf[1] = 1; - } - if ($mf[2] < 1) { - $mf[2] = 1; - } + break; + case 3: + //$mf[1] -= 4; + //$mf[2] -= 4; + if ($mf[1] < 1) { + $mf[1] = 1; + } + if ($mf[2] < 1) { + $mf[2] = 1; + } - //$rval = $mf[1] - $mf[2]; //Парирование - $rval = $mf[1] - $mf[2] / 2; - if ($rval > 75) { - $rval = 75; - } - //$rval = round($rval/3); - if ($rval < 1) { - $rval = 1; - } + //$rval = $mf[1] - $mf[2]; //Парирование + $rval = $mf[1] - $mf[2] / 2; + if ($rval > 75) { + $rval = 75; + } + //$rval = round($rval/3); + if ($rval < 1) { + $rval = 1; + } - break; - case 4: - $mf = round($mf * 0.6); - if ($mf < 1) { - $mf = 0; - } - if ($mf > 100) { - $mf = 100; - } - //$mf = (1-( pow(0.5, ($mf/200) ) ))*100; - $rval = min($mf, 100); //пробой брони - break; - case 5: - if ($mf < 1) { - $mf = 0; - } - $rval = min($mf, 85); //блок щитом - break; - case 6: - //Контрудар - //$mf['a'] защита - //$mf['b'] атака - if ($mf['a'] > 0) { - if ($mf['b'] > 0) { - $rval = round($mf['a'] - ($mf['b'] / 2)); - } else { - $rval = $mf['a']; - } - } else { - $rval = 0; - } + //$rval = (1-( pow(0.75, ($rval/125) ) ))*100; + + //if( $rval > 60 ) { + // $rval = 60; + //} + + break; + case 4: + $mf = round($mf * 0.6); + if ($mf < 1) { + $mf = 0; + } + if ($mf > 100) { + $mf = 100; + } + //$mf = (1-( pow(0.5, ($mf/200) ) ))*100; + $rval = min($mf, 100); //пробой брони + break; + case 5: + if ($mf < 1) { + $mf = 0; + } + $rval = min($mf, 85); //блок щитом + break; + case 6: + //Контрудар + //$mf['a'] защита + //$mf['b'] атака + if ($mf['a'] > 0) { + if ($mf['b'] > 0) { + $rval = round($mf['a'] - ($mf['b'] / 2)); + } else { + $rval = $mf['a']; + } + } else { + $rval = 0; + } - if ($rval < 1) { - $rval = 0; - } - if ($rval > 75) { - $rval = 75; - } + if ($rval < 1) { + $rval = 0; + } + if ($rval > 75) { + $rval = 75; + } - break; - } - if ($this->get_chanse($rval) == true) { - $rval = 1; - } else { - $rval = 0; - } - return $rval; - } + break; + } + if ($this->get_chanse($rval) == true) { + $rval = 1; + } else { + $rval = 0; + } + return $rval; + } - public function dodge($a, $b) - { - $i = 0; - $arr = []; //массив для записи уникальных случайных чисел - while ($i < ($b - $a)) { - while (in_array($rand, $arr)) { - $rand = mt_rand(1, 100); - } - $arr[] = $rand; - $i++; - } + public function dodge($a, $b) + { + $i = 0; + $arr = []; //массив для записи уникальных случайных чисел + while ($i < ($b - $a)) { + while (in_array($rand, $arr)) { + $rand = mt_rand(1, 100); + } + $arr[] = $rand; + $i++; + } - $n = mt_rand(1, 100); - return (!!array_search($n, $arr)); - } + $n = mt_rand(1, 100); + return (!!array_search($n, $arr)); + } - public function get_chanse($percent) - { - return $this->dodge(1, min($percent, 100)); - } - - //Расчет шанса - public function get_chanse_new($persent) - { - return mt_rand(1, 100) <= $persent; - } - - //Смена противника - public function smena($uid, $auto = false, $lastdie = false) - { - global $u; - if (($auto != false || $u->info['smena'] <= 0) && $auto != true) { - return 'У вас закончились смены противника'; - } - if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] < 1) { - return 'Для вас поединок закончен, ожидайте пока завершат другие...'; - } - if (!isset( - $this->uids[$uid]) || - $uid == $u->info['id'] || - $this->users[$this->uids[$uid]]['team'] == $this->users[$this->uids[$u->info['id']]]['team'] - ) { - return 'Нельзя сменить на выбранную цель []'; - } - if (isset($this->ga[$u->info['id']][$uid]) && $lastdie != true) { - return 'Нельзя сменить на выбранную цель!'; - } - if (ceil($this->stats[$this->uids[$uid]]['hpNow']) < 1) { - return 'Нельзя сменить, противник уже мертв'; - }//меняем противника - if ($auto == false) { - $u->info['smena']--; - } - $upd = mysql_query('UPDATE `stats` SET `enemy` = "' . $uid . '",`smena` = "' . $u->info['smena'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - $u->info['enemy'] = $uid; - $this->users[$this->uids[$uid]]['smena'] = $u->info['smena']; - $this->users[$this->uids[$u->info['id']]]['enemy'] = $uid; - return 1; - } - - //авто-смена противника //ТУТ баг выбора - public function autoSmena() - { - global $u; - $ms = []; - $ms_all = []; - $ms_ansf = []; - $i = 0; - $j = 0; - $z = 0; - while ($i < count($this->users)) { - if (isset($this->users[$i]) && $this->users[$i]['id'] != $u->info['id'] && $this->users[$i]['team'] != $u->info['team'] && $this->stats[$i]['hpNow'] > 0 && -($u->info['enemy']) != $this->users[$i]['id']) { - if (!isset($this->ga[$u->info['id']][$this->users[$i]['id']])) { - $ms[$j] = $this->users[$i]['id']; - $j++; - - } - if (!isset($this->uids[(-($u->info['enemy']))])) { - $ms_all[] = $this->users[$i]['id']; - } - if (isset($this->ga[$this->users[$i]['id']][$u->info['id']])) { - $ms_ansf[$z] = $this->users[$i]['id']; - $z++; - } - } - $i++; - } - $msh = []; - if ($j == 0 && $z == 0) { - - $enemydie = 0; - - if (isset($this->stats[$this->uids[$u->info['enemy']]])) { - $u->info['enemy'] = 0; - $enemydie = 1; - } - - if ((!isset($this->uids[(-($u->info['enemy']))]) || $this->stats[$this->uids[(-($u->info['enemy']))]]['hpNow'] < 1) && ($u->info['enemy'] < 0 || $enemydie == 1)) { - $i = 0; - $j = 0; - while ($i < count($this->users)) { - if (isset($this->users[$i]) && $this->users[$i]['id'] != $u->info['id'] && $this->users[$i]['team'] != $u->info['team'] && $this->stats[$i]['hpNow'] >= 1 && -($u->info['enemy']) != $this->users[$i]['id']) { - $ms[$j] = $this->users[$i]['id']; - $msh[$ms[$j]] = true; - $j++; + public function get_chanse($percent) + { + /*$a = 101+$percent; + $b = 100-$percent; + $i = 1; + if(($a-$b)>0){ + while($i<=$a-$b){ + $conp[] = rand(1,100); + //$conp[] = mt_rand(1,100); + if( $i > 100 ) { + $i = ($a-$b+1); } $i++; } } - } + $t = count($conp); + $prob = round($percent); + if(@array_search($prob,$conp)!=false){ + $critical = true; + }else{ + $critical = false; + }*/ + /*if( rand(0,100) <= $percent ) { + $critical = true; + }else{ + $critical = false; + }*/ + if ($percent >= 100) { + $percent = 100; + } elseif ($percent == 0) { + $percent = 0; + } + $critical = $this->dodge(1, $percent); + return $critical; + } - $ms = $ms[rand(0, $j - 1)]; - $ms_ansf = $ms_ansf[rand(0, $z - 1)]; - if ($z > 0) { - $this->smena($ms_ansf, true); - } elseif ($j > 0) { - if (isset($msh[$ms])) { - $this->smena($ms, true, true); - } else { - $this->smena($ms, true); - } - } else { - if ($u->info['enemy'] < 0) { - $this->smena(-($u->info['enemy']), true); - } - } - } + //Расчет шанса + public function get_chanse_new($persent) + { + $mm = 1; + if (mt_rand($mm, 100 * $mm) <= $persent * $mm) { + return true; + } else { + return false; + } + } - //Действия бота (атака) - public function botAtack($uid, $pl, $tp) - { - $test_atack = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_act` WHERE `battle` = "' . $this->info['id'] . '" AND (( + //Смена противника + public function smena($uid, $auto = false, $lastdie = false) + { + global $u; + if (($auto == false && $u->info['smena'] > 0) || $auto == true) { + if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] >= 1) { + if (isset($this->uids[$uid]) && $uid != $u->info['id'] && $this->users[$this->uids[$uid]]['team'] != $this->users[$this->uids[$u->info['id']]]['team']) { + if (!isset($this->ga[$u->info['id']][$uid]) || $lastdie == true) { + if (ceil($this->stats[$this->uids[$uid]]['hpNow']) >= 1) { + //меняем противника + if ($auto == false) { + $u->info['smena']--; + } + $upd = mysql_query('UPDATE `stats` SET `enemy` = "' . $uid . '",`smena` = "' . $u->info['smena'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + $u->info['enemy'] = $uid; + $this->users[$this->uids[$uid]]['smena'] = $u->info['smena']; + $this->users[$this->uids[$u->info['id']]]['enemy'] = $uid; + return 1; + } else { + return 'Нельзя сменить, противник уже мертв'; + } + } else { + return 'Нельзя сменить на выбранную цель!'; + } + } else { + return 'Нельзя сменить на выбранную цель []'; + } + } else { + return 'Для вас поединок закончен, ожидайте пока завершат другие...'; + } + } else { + return 'У вас закончились смены противника'; + } + } + + //авто-смена противника //ТУТ баг выбора + public function autoSmena() + { + global $u; + $ms = []; + $ms_all = []; + $ms_ansf = []; + $i = 0; + $j = 0; + $z = 0; + while ($i < count($this->users)) { + if (isset($this->users[$i]) && $this->users[$i]['id'] != $u->info['id'] && $this->users[$i]['team'] != $u->info['team'] && $this->stats[$i]['hpNow'] > 0 && -($u->info['enemy']) != $this->users[$i]['id']) { + if (!isset($this->ga[$u->info['id']][$this->users[$i]['id']])) { + $ms[$j] = $this->users[$i]['id']; + $j++; + } + if (!isset($this->uids[(-($u->info['enemy']))])) { + $ms_all[] = $this->users[$i]['id']; + } + if (isset($this->ga[$this->users[$i]['id']][$u->info['id']])) { + $ms_ansf[$z] = $this->users[$i]['id']; + $z++; + } + } + $i++; + } + $msh = []; + if ($j == 0 && $z == 0) { + $enemydie = 0; + + if (isset($this->stats[$this->uids[$u->info['enemy']]])) { + $u->info['enemy'] = 0; + $enemydie = 1; + } + + if ((!isset($this->uids[(-($u->info['enemy']))]) || $this->stats[$this->uids[(-($u->info['enemy']))]]['hpNow'] < 1) && ($u->info['enemy'] < 0 || $enemydie == 1)) { + $i = 0; + $j = 0; + while ($i < count($this->users)) { + if (isset($this->users[$i]) && $this->users[$i]['id'] != $u->info['id'] && $this->users[$i]['team'] != $u->info['team'] && $this->stats[$i]['hpNow'] >= 1 && -($u->info['enemy']) != $this->users[$i]['id']) { + $ms[$j] = $this->users[$i]['id']; + $msh[$ms[$j]] = true; + $j++; + } + $i++; + } + } + } + + $ms = $ms[rand(0, $j - 1)]; + $ms_ansf = $ms_ansf[rand(0, $z - 1)]; + if ($z > 0) { + $this->smena($ms_ansf, true); + } elseif ($j > 0) { + if (isset($msh[$ms])) { + $this->smena($ms, true, true); + } else { + $this->smena($ms, true); + } + } else { + if ($u->info['enemy'] < 0) { + $smnr5 = $this->smena(-($u->info['enemy']), true); + /*if( $smnr5 != 1 ) { + if( !isset($this->uids[(-($u->info['enemy']))]) ) { + $u->info['enemy'] = $ms_all[rand(0,(count($ms_all)-1))]; + mysql_query('UPDATE `stats` SET `enemy` = "'.$u->info['enemy'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + } + }*/ + unset($smnr5); + } + } + } + + //авто-смена противника new + /*public function autoSmena() + { + global $u; + $ms = array(); + $ms_all = array(); + $i = 0; $j = 0; + while($iusers)) + { + if(isset($this->users[$i]) && $this->users[$i]['id']!=$u->info['id'] && $this->users[$i]['team']!=$u->info['team'] && $this->stats[$i]['hpNow']>=1 && -($u->info['enemy']) != $this->users[$i]['id']) + { + if(!isset($this->ga[$u->info['id']][$this->users[$i]['id']])) + { + $ms[$j] = $this->users[$i]['id']; + $j++; + } + if( !isset($this->uids[(-($u->info['enemy']))]) ) { + $ms_all[] = $this->users[$i]['id']; + } + } + $i++; + } + + $ms = $ms[rand(0,$j-1)]; + if($j>0) + { + $this->smena($ms,true); + }else{ + if( $u->info['enemy'] < 0 ) { + $smnr5 = $this->smena(-($u->info['enemy']),true); + if( $smnr5 != 1 ) { + //$u->info['enemy'] = -($u->info['enemy']); + //mysql_query('UPDATE `stats` SET `enemy` = "'.$u->info['enemy'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + if( !isset($this->uids[(-($u->info['enemy']))]) ) { + $u->info['enemy'] = $ms_all[rand(0,(count($ms_all)-1))]; + mysql_query('UPDATE `stats` SET `enemy` = "'.$u->info['enemy'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + } + //echo 'Fatal error: '.$smnr5.' #'.$j.''; + } + unset($smnr5); + //mysql_query('UPDATE `stats` SET `enemy` = "'.$u->info['enemy'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + } + } + }*/ + + //Действия бота (атака) + public function botAtack($uid, $pl, $tp) + { + /*if (isset($uid['id'])) {$uidt=$uid['id'];} else {$uidt=$uid;} + if (isset($pl['id'])) {$plt=$pl['id'];} else {$plt=$pl;} + $test_uid = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "'.$uidt.'" AND `hpNow` >= 1 LIMIT 1')); + $test_pl = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "'.$plt.'" AND `hpNow` >= 1 LIMIT 1')); + if (isset($test_uid['id']) && isset($test_pl['id']) && $test_uid['id']!=$test_pl['id']) + { + }*/ + $test_atack = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_act` WHERE `battle` = "' . $this->info['id'] . '" AND (( `uid1` = "' . $pl . '" AND `uid2` = "' . $uid . '" ) OR ( `uid2` = "' . $pl . '" AND `uid1` = "' . $uid . '" )) LIMIT 1')); - if ($tp == 1 && !isset($test_atack['id'])) { + if ($tp == 1 && !isset($test_atack['id'])) { + $test_uid = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $uid . '" AND `hpNow` >= 1 LIMIT 1')); + $test_pl = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $pl . '" AND `hpNow` >= 1 LIMIT 1')); + if (isset($test_uid['id']) && isset($test_pl['id']) && $test_uid['id'] != $test_pl['id']) { + $a = rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5); + $b = rand(1, 5); + $d = mysql_query('INSERT INTO `battle_act` (`battle`,`time`,`uid1`,`uid2`,`a1`,`b1`) VALUES ("' . $this->info['id'] . '","' . time() . '","' . $pl . '","' . $uid . '","' . $a . '","' . $b . '")'); + } + } elseif ($tp == 2) { + //бот отвечает на удар + $test_uid = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $uid . '" AND `hpNow` >= 1 LIMIT 1')); + $test_pl = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $pl['uid2'] . '" AND `hpNow` >= 1 LIMIT 1')); + if (isset($test_uid['id']) && isset($test_pl['id']) && $test_uid['id'] != $test_pl['id']) { + $bot = $this->users[$this->uids[$pl['uid2']]]; + $na = ['id' => 0, 'a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0], 'b' => 0]; + $a222 = rand(1, 5) . '_' . rand(1, 5) . '_' . rand(1, 5) . '_' . rand(1, 5) . '_' . rand(1, 5); + $a = explode('_', $a222); + $i = 1; + $na['id'] = time(); + while ($i <= 5) { + if (isset($a[$i - 1])) { + $a[$i - 1] = intval(round($a[$i - 1])); + if ($a[$i - 1] >= 1 && $a[$i - 1] <= 5) { + $na['a'][$i] = $a[$i - 1]; + } else { + $na['a'][$i] = 0; + } + } + $i++; + } + $na['b'] = rand(1, 5); + //Проводим удар - $test_uid = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $uid . '" AND `hpNow` >= 1 LIMIT 1')); - $test_pl = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $pl . '" AND `hpNow` >= 1 LIMIT 1')); - if (isset($test_uid['id']) && isset($test_pl['id']) && $test_uid['id'] != $test_pl['id']) { - $a = rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5); - $b = rand(1, 5); - $d = mysql_query('INSERT INTO `battle_act` (`battle`,`time`,`uid1`,`uid2`,`a1`,`b1`) VALUES ("' . $this->info['id'] . '","' . time() . '","' . $pl . '","' . $uid . '","' . $a . '","' . $b . '")'); - } - } elseif ($tp == 2) { - //бот отвечает на удар - $test_uid = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $uid . '" AND `hpNow` >= 1 LIMIT 1')); - $test_pl = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $pl['uid2'] . '" AND `hpNow` >= 1 LIMIT 1')); - if (isset($test_uid['id']) && isset($test_pl['id']) && $test_uid['id'] != $test_pl['id']) { - $bot = $this->users[$this->uids[$pl['uid2']]]; - $na = ['id' => 0, 'a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0], 'b' => 0]; - $a222 = rand(1, 5) . '_' . rand(1, 5) . '_' . rand(1, 5) . '_' . rand(1, 5) . '_' . rand(1, 5); - $a = explode('_', $a222); - $i = 1; - $na['id'] = time(); - while ($i <= 5) { - if (isset($a[$i - 1])) { - $a[$i - 1] = intval(round($a[$i - 1])); - if ($a[$i - 1] >= 1 && $a[$i - 1] <= 5) { - $na['a'][$i] = $a[$i - 1]; - } else { - $na['a'][$i] = 0; - } - } - $i++; - } - $na['b'] = rand(1, 5); - //Проводим удар + $this->atacks[$pl['id']]['a2'] = $a222; + $this->atacks[$pl['id']]['b2'] = $na['b']; + $this->startAtack($pl['id']); + } + } + //unset($test_uid,$test_pl,$test_atack); + } - $this->atacks[$pl['id']]['a2'] = $a222; - $this->atacks[$pl['id']]['b2'] = $na['b']; - $this->startAtack($pl['id']); + //Проверяем удары, приемы, свитки, зверей + public function testActions() + { + //проверяем удары + $m = mysql_query('SELECT * FROM `battle_act` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `id` ASC'); + $i = 0; + $botA = []; + $botR = []; + while ($pl = mysql_fetch_array($m)) { + //mysql_query('DELETE FROM `battle_act` WHERE `battle` = "'.$this->info['id'].'" AND `uid1` = "'.$pl['uid2'].'" AND `uid2` = "'.$pl['uid1'].'"'); + $pluids = mysql_fetch_array(mysql_query('SELECT `hpNow` FROM `stats` WHERE (`id` = "' . $pl['uid1'] . '" AND `hpNow` <= 0) OR (`id` = "' . $pl['uid2'] . '" AND `hpNow` <= 0) LIMIT 1')); - } - } + $pltest = mysql_fetch_array(mysql_query('SELECT * FROM `battle_act` WHERE `id` = "' . $pl['id'] . '" LIMIT 1')); + if (isset($pltest['id'])) { + if (isset($pluids['hpNow'])) { + mysql_query('DELETE FROM `battle_act` WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } elseif ($pl['time'] + $this->info['timeout'] > time()) { + //удар не пропущен по тайму, просто заносим данные + $this->atacks[$pl['id']] = $pl; + $this->ga[$pl['uid1']][$pl['uid2']] = $pl['id']; + $this->ag[$pl['uid2']][$pl['uid1']] = $pl['id']; + if (isset($this->iBots[$pl['uid1']])) { + //ударил бот и нет ответа + $botA[$pl['uid1']] = $pl['id']; + } elseif (isset($this->iBots[$pl['uid2']])) { + //ударили бота и он не ответил + $botR[$pl['uid2']] = $pl['id']; + if ($this->users[$this->uids[$pl['uid2']]]['timeGo'] < time()) { + $this->botAtack($pl['uid1'], $pl, 2); + } + } + } else { + //пропуск по тайму + //mysql_query('UPDATE `battle_act` SET `time`="'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); + $pl['time'] = time(); + if ($pl['a1'] == 0 && $pl['a2'] == 0) { + //игрок 1 пропустил по тайму + $pl['out1'] = time(); + $pl['tout1'] = 1; + //игрок 2 пропустил по тайму + $pl['out2'] = time(); + $pl['tout2'] = 1; + } elseif ($pl['a1'] == 0) { + //игрок 1 пропустил по тайму + $pl['out1'] = time(); + $pl['tout1'] = 1; + } elseif ($pl['a2'] == 0) { + //игрок 2 пропустил по тайму + $pl['out2'] = time(); + $pl['tout2'] = 1; + } + //наносим удар по пропуску + if (!isset($pluids['hpNow'])) { + $this->atacks[$pl['id']] = $pl; + $this->startAtack($pl['id']); + mysql_query('DELETE FROM `battle_act` WHERE `id` = "' . $pl['id'] . '"'); + //mysql_query('DELETE FROM `battle_act` WHERE (`uid1` = "'.$pl['uid1'].'" AND `uid2` = "'.$pl['uid2'].'") OR (`uid1` = "'.$pl['uid2'].'" AND `uid2` = "'.$pl['uid1'].'")'); + } + } + } + } + //тест удара + if ($this->uAtc['id'] > 0) { + if ($this->na == 1) { + if ($pl['out1'] == 0 && $pl['out2'] == 0) { + //Может разменяться только тот кто бил + if ($pl['uid1'] == $u->info['id'] || $pl['uid2'] == $u->info['id']) { + $this->addNewAtack(); + } + } else { + $this->addNewAtack(); + } + } + } + //тест использования заклятий - } + //тест использования приемов - //Проверяем удары, приемы, свитки, зверей - public function testActions() - { - //проверяем удары - $m = mysql_query('SELECT * FROM `battle_act` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `id` ASC'); - $i = 0; - $botA = []; - $botR = []; - while ($pl = mysql_fetch_array($m)) { - $pluids = mysql_fetch_array(mysql_query('SELECT `hpNow` FROM `stats` WHERE (`id` = "' . $pl['uid1'] . '" AND `hpNow` <= 0) OR (`id` = "' . $pl['uid2'] . '" AND `hpNow` <= 0) LIMIT 1')); - $pltest = mysql_fetch_array(mysql_query('SELECT * FROM `battle_act` WHERE `id` = "' . $pl['id'] . '" LIMIT 1')); - if (isset($pltest['id'])) { - if (isset($pluids['hpNow'])) { - mysql_query('DELETE FROM `battle_act` WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); - } elseif ($pl['time'] + $this->info['timeout'] > time()) { - //удар не пропущен по тайму, просто заносим данные - $this->atacks[$pl['id']] = $pl; - $this->ga[$pl['uid1']][$pl['uid2']] = $pl['id']; - $this->ag[$pl['uid2']][$pl['uid1']] = $pl['id']; - if (isset($this->iBots[$pl['uid1']])) { - //ударил бот и нет ответа - $botA[$pl['uid1']] = $pl['id']; - } elseif (isset($this->iBots[$pl['uid2']])) { - //ударили бота и он не ответил - $botR[$pl['uid2']] = $pl['id']; - if ($this->users[$this->uids[$pl['uid2']]]['timeGo'] < time()) { - $this->botAtack($pl['uid1'], $pl, 2); - } - } - } else { - //пропуск по тайму - $pl['time'] = time(); - if ($pl['a1'] == 0 && $pl['a2'] == 0) { - //игрок 1 пропустил по тайму - $pl['out1'] = time(); - $pl['tout1'] = 1; - //игрок 2 пропустил по тайму - $pl['out2'] = time(); - $pl['tout2'] = 1; - } elseif ($pl['a1'] == 0) { - //игрок 1 пропустил по тайму - $pl['out1'] = time(); - $pl['tout1'] = 1; - } elseif ($pl['a2'] == 0) { - //игрок 2 пропустил по тайму - $pl['out2'] = time(); - $pl['tout2'] = 1; - } - //наносим удар по пропуску - if (!isset($pluids['hpNow'])) { - $this->atacks[$pl['id']] = $pl; - $this->startAtack($pl['id']); - mysql_query('DELETE FROM `battle_act` WHERE `id` = "' . $pl['id'] . '"'); - } - } - } - } - //тест удара - if ($this->uAtc['id'] > 0) { - if ($this->na == 1) { - if ($pl['out1'] == 0 && $pl['out2'] == 0) { - //Может разменяться только тот кто бил - if ($pl['uid1'] == $u->info['id'] || $pl['uid2'] == $u->info['id']) { - $this->addNewAtack(); - } - } else { - $this->addNewAtack(); - } - } - } - //тест использования заклятий + //тест, бот делает удары + $i = 0; + while ($i < count($this->bots)) { + $bot = $this->bots[$i]; + if (isset($bot) && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['pass'] != 'saintlucia') //Тут проверка на бота saintlucia + { + //mysql_query('UPDATE `stats` SET `timeGo` = "'.$tnbot.'" WHERE `id` = "'.$this->users[$this->uids[$bot]]['id'].'" LIMIT 1'); + $j = 0; + while ($j < count($this->users)) { + if ($this->info['razdel'] == 0) { + $tnbot = time() + rand(1, 1); + } else { + $tnbot = time() + rand(1, 2); + } + if ($this->users[$j]['timeGo'] >= time() || $this->users[$this->uids[$bot]]['timeGo'] >= time()) { + } elseif ($this->users[$j]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['team'] != $this->users[$j]['team']) { + if (isset($this->users[$j]) && $this->stats[$j]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && !isset($this->ga[$bot][$this->users[$j]['id']]) && !isset($this->ag[$bot][$this->users[$j]['id']]) && $this->users[$j]['id'] != $bot && $this->users[$j]['team'] != $this->users[$this->uids[$bot]]['team']) { + if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time()) { + $this->botAtack($this->users[$j]['id'], $bot, 1); + mysql_query('UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1'); + } + } elseif (isset($this->users[$i]) && $this->users[$i]['bot'] > 0 && $this->stats[$i]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && $this->users[$i]['id'] != $bot && $this->users[$i]['team'] != $this->users[$this->uids[$bot]]['team']) { + if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time()) { + if ($this->botAct($bot) == true) { + if (!isset($this->ga[$bot][$this->users[$i]['id']]) && $this->users[$this->uids[$bot]]['timeGo'] < time() && !isset($this->ag[$bot][$this->users[$i]['id']])) { + $this->botAtack($this->users[$i]['id'], $bot, 1); + mysql_query('UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1'); + } elseif (isset($this->ag[$bot][$this->users[$i]['id']])) { + } elseif (isset($this->ga[$bot][$this->users[$i]['id']]) && $this->users[$this->uids[$bot]]['timeGo'] < time()) { + $this->botAtack($bot, $this->users[$i]['id'], 1); + mysql_query('UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1'); + } + } + } + } else { + //Удары между ботами + // + if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time() && $this->users[$j]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['hpNow'] >= 1) { + $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['a1'] = rand(1, 5) . '' . rand(1, + 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5); + $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['b1'] = rand(1, 5); + $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['a2'] = rand(1, 5) . '' . rand(1, + 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5); + $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['b2'] = rand(1, 5); + $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['a1'] = rand(1, 5) . '' . rand(1, + 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5); + $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['b1'] = rand(1, 5); + $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['a2'] = rand(1, 5) . '' . rand(1, + 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5); + $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['b2'] = rand(1, 5); + if (isset($this->ga[$bot][$this->users[$j]['id']]) && $this->users[$j]['bot'] > 0) { + if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time()) { + $tnbot = time() + rand(3, 7); + if ($this->info['type'] == 329) { // тестовый бой + $tnbot = time() - 1; + } + $this->startAtack($this->ga[$bot][$this->users[$j]['id']]); + $this->users[$this->uids[$bot]]['timeGo'] = $tnbot; + mysql_query('UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1'); + } + } elseif (isset($this->ag[$bot][$this->users[$j]['id']]) && $this->users[$j]['bot'] > 0) { + if ($this->users[$this->uids[$bot]]['timeGo'] < time() && $this->users[$j]['timeGo'] < time()) { + $this->startAtack($this->ag[$bot][$this->users[$j]['id']]); + $tnbot = time() + rand(3, 7); + if ($this->info['type'] == 329) { // тестовый бой + $tnbot = time() - 1; + } + $this->users[$this->uids[$bot]]['timeGo'] = $tnbot; + mysql_query('UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1'); + } + } + } + // + } + } + $j++; + } + } + $i++; + } + } - //тест использования приемов + //Действия бота + public function botAct($uid) + { + $r = false; + if ($this->users[$this->uids[$uid]]['bot'] > 0) { + if ($this->users[$this->uids[$uid]]['online'] < time() - 3) { + $r = true; + $this->users[$this->uids[$uid]]['online'] = time(); + mysql_query('UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . ((int)$uid) . '" LIMIT 1'); + } else { + if (rand(0, 2) == 1) { + $r = true; + } + } + } + return $r; + } - //тест, бот делает удары - $i = 0; - while ($i < count($this->bots)) { - $bot = $this->bots[$i]; - if (isset($bot) && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['pass'] != 'saintlucia') //Тут проверка на бота saintlucia - { - $j = 0; - while ($j < count($this->users)) { - if ($this->info['razdel'] == 0) { - $tnbot = time() + rand(1, 1); - } else { - $tnbot = time() + rand(1, 2); - } - if ($this->users[$j]['timeGo'] >= time() || $this->users[$this->uids[$bot]]['timeGo'] >= time()) { + //получаем данные о поединке + public function battleInfo($id) + { + $b = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "' . mysql_real_escape_string($id) . '" LIMIT 1')); + if (isset($b['id'])) { + $this->hodID = mysql_fetch_array(mysql_query('SELECT `id_hod` FROM `battle_logs` WHERE `battle` = "' . $b['id'] . '" ORDER BY `id` DESC LIMIT 1')); + if (isset($this->hodID['id_hod'])) { + $this->hodID = $this->hodID['id_hod']; + } else { + $this->hodID = 0; + } + /*if( $this->hodID > $b['hod'] ) { + $b['hod'] = $this->hodID; + mysql_query('UPDATE `battle` SET `hod` = "'.$this->hodID.'" WHERE `id` = "'.$b['id'].'" LIMIT 1'); + }*/ + return $b; + } else { + return false; + } + } - } elseif ($this->users[$j]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['team'] != $this->users[$j]['team']) { - if (isset($this->users[$j]) && $this->stats[$j]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && !isset($this->ga[$bot][$this->users[$j]['id']]) && !isset($this->ag[$bot][$this->users[$j]['id']]) && $this->users[$j]['id'] != $bot && $this->users[$j]['team'] != $this->users[$this->uids[$bot]]['team']) { - if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time()) { - $this->botAtack($this->users[$j]['id'], $bot, 1); - mysql_query('UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1'); - } - } elseif (isset($this->users[$i]) && $this->users[$i]['bot'] > 0 && $this->stats[$i]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && $this->users[$i]['id'] != $bot && $this->users[$i]['team'] != $this->users[$this->uids[$bot]]['team']) { - if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time()) { - if ($this->botAct($bot) == true) { - if (!isset($this->ga[$bot][$this->users[$i]['id']]) && $this->users[$this->uids[$bot]]['timeGo'] < time() && !isset($this->ag[$bot][$this->users[$i]['id']])) { - $this->botAtack($this->users[$i]['id'], $bot, 1); - mysql_query('UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1'); - } elseif (isset($this->ag[$bot][$this->users[$i]['id']])) { - } elseif (isset($this->ga[$bot][$this->users[$i]['id']]) && $this->users[$this->uids[$bot]]['timeGo'] < time()) { - $this->botAtack($bot, $this->users[$i]['id'], 1); - mysql_query('UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1'); - } - } - } - } else { - //Удары между ботами - // - if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time() && $this->users[$j]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['hpNow'] >= 1) { - $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['a1'] = rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5); - $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['b1'] = rand(1, 5); - $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['a2'] = rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5); - $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['b2'] = rand(1, 5); - $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['a1'] = rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5); - $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['b1'] = rand(1, 5); - $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['a2'] = rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5); - $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['b2'] = rand(1, 5); - if (isset($this->ga[$bot][$this->users[$j]['id']]) && $this->users[$j]['bot'] > 0) { - if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time()) { - $tnbot = time() + rand(3, 7); - if ($this->info['type'] == 329) { // тестовый бой - $tnbot = time() - 1; - } - $this->startAtack($this->ga[$bot][$this->users[$j]['id']]); - $this->users[$this->uids[$bot]]['timeGo'] = $tnbot; - mysql_query('UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1'); - } - } elseif (isset($this->ag[$bot][$this->users[$j]['id']]) && $this->users[$j]['bot'] > 0) { - if ($this->users[$this->uids[$bot]]['timeGo'] < time() && $this->users[$j]['timeGo'] < time()) { - $this->startAtack($this->ag[$bot][$this->users[$j]['id']]); - $tnbot = time() + rand(3, 7); - if ($this->info['type'] == 329) { // тестовый бой - $tnbot = time() - 1; - } - $this->users[$this->uids[$bot]]['timeGo'] = $tnbot; - mysql_query('UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1'); - } - } - } - // - } - } - $j++; - } - } - $i++; - } - } + //наносим удар противнику + public function addAtack() + { + global $js; + if (isset($_POST['atack'], $_POST['block'])) { + $na = ['id' => 0, 'a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0], 'b' => 0]; + $a = explode('_', $_POST['atack']); + $i = 1; + $na['id'] = time(); + while ($i <= 5) { + if (isset($a[$i - 1])) { + $a[$i - 1] = intval(round($a[$i - 1])); + if ($a[$i - 1] >= 1 && $a[$i - 1] <= 5) { + $na['a'][$i] = $a[$i - 1]; + } else { + $na['a'][$i] = 0; + } + } + $i++; + } - //Действия бота - public function botAct($uid) - { - $r = false; - if ($this->users[$this->uids[$uid]]['bot'] > 0) { - if ($this->users[$this->uids[$uid]]['online'] < time() - 3) { - $r = true; - $this->users[$this->uids[$uid]]['online'] = time(); - mysql_query('UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . ((int)$uid) . '" LIMIT 1'); - } else { - if (rand(0, 2) == 1) { - $r = true; - } - } - } - return $r; - } + $na['b'] = intval(round($_POST['block'])); + if ($na['b'] < 1 || $na['b'] > 5) { + $na['b'] = 0; + } - //получаем данные о поединке - public function battleInfo($id) - { - $b = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "' . mysql_real_escape_string($id) . '" LIMIT 1')); - if (isset($b['id'])) { - $this->hodID = mysql_fetch_array(mysql_query('SELECT `id_hod` FROM `battle_logs` WHERE `battle` = "' . $b['id'] . '" ORDER BY `id` DESC LIMIT 1')); - if (isset($this->hodID['id_hod'])) { - $this->hodID = $this->hodID['id_hod']; - } else { - $this->hodID = 0; - } - return $b; - } else { - return false; - } - } + $this->uAtc = $na; + $js .= 'testClearZone();'; + } else { + $this->e = 'Выберите зоны удара и блока'; + } + } - //наносим удар противнику - public function addAtack() - { - global $js; - if (isset($_POST['atack'], $_POST['block'])) { - $na = ['id' => 0, 'a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0], 'b' => 0]; - $a = explode('_', $_POST['atack']); - $i = 1; - $na['id'] = time(); - while ($i <= 5) { - if (isset($a[$i - 1])) { - $a[$i - 1] = intval(round($a[$i - 1])); - if ($a[$i - 1] >= 1 && $a[$i - 1] <= 5) { - $na['a'][$i] = $a[$i - 1]; - } else { - $na['a'][$i] = 0; - } - } - $i++; - } + //выделяем пользователей + public function teamsTake() + { + global $u; + $rs = ''; + $ts = []; + $tsi = 0; + if ($this->info['id'] > 0) { + //данные о игроках в бою + $nxtlg = []; + $t = mysql_query('SELECT `u`.`room`,`u`.`no_ip`,`u`.`twink`,`u`.`stopexp`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '"'); + $i = 0; + $bi = 0; + $up = ''; + if ($this->info['start2'] == 0) { + $tststrt = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `start2` = "0" LIMIT 1')); + if (isset($tststrt['id'])) { + $upd = mysql_query('UPDATE `battle` SET `start2` = "' . time() . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + } else { + $this->info['start2'] = time(); + } + } + while ($pl = mysql_fetch_array($t)) { + //записываем данные + if ($pl['login2'] == '') { + $pl['login2'] = $pl['login']; + } + $this->users[$i] = $pl; + $this->uids[$pl['id']] = $i; - $na['b'] = intval(round($_POST['block'])); - if ($na['b'] < 1 || $na['b'] > 5) { - $na['b'] = 0; - } + if ($this->info['start2'] == 0) { + mysql_query('UPDATE `users` SET `notrhod` = "-1" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + $this->users[$i]['notrhod'] = -1; + } - $this->uAtc = $na; - $js .= 'testClearZone();'; - } else { - $this->e = 'Выберите зоны удара и блока'; - } - } + if ($pl['bot'] > 0) { + $this->bots[$bi] = $pl['id']; + $this->iBots[$pl['id']] = $bi; + $bi++; + } + //записываем статы + $this->stats[$i] = $u->getStats($pl, 0, 0, false, $this->cached, true); + //Заносим старт + if ($this->info['start2'] == 0) { + if (!isset($ts[$this->users[$i]['team']])) { + $tsi++; + $ts[$this->users[$i]['team']] = $tsi; + } - //выделяем пользователей - public function teamsTake() - { - global $u; - $rs = ''; - $ts = []; - $tsi = 0; - if ($this->info['id'] > 0) { - //данные о игроках в бою - $nxtlg = []; - $t = mysql_query('SELECT `u`.`room`,`u`.`no_ip`,`u`.`twink`,`u`.`stopexp`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '"'); - $i = 0; - $bi = 0; - $up = ''; - if ($this->info['start2'] == 0) { - $tststrt = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `start2` = "0" LIMIT 1')); - if (isset($tststrt['id'])) { - $upd = mysql_query('UPDATE `battle` SET `start2` = "' . time() . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); - } else { - $this->info['start2'] = time(); - } + if ($this->users[$i]['level'] <= 7) { + $this->users[$i]['tactic7'] = floor(10 / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); + } elseif ($this->users[$i]['level'] == 8) { + $this->users[$i]['tactic7'] = floor(20 / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); + } elseif ($this->users[$i]['level'] == 9) { + $this->users[$i]['tactic7'] = floor(30 / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); + } elseif ($this->users[$i]['level'] >= 10) { + $this->users[$i]['tactic7'] = floor((40 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); + } - } - while ($pl = mysql_fetch_array($t)) { - //записываем данные - if ($pl['login2'] == '') { - $pl['login2'] = $pl['login']; - } - $this->users[$i] = $pl; - $this->uids[$pl['id']] = $i; - - if ($this->info['start2'] == 0) { - mysql_query('UPDATE `users` SET `notrhod` = "-1" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - $this->users[$i]['notrhod'] = -1; - } - - if ($pl['bot'] > 0) { - $this->bots[$bi] = $pl['id']; - $this->iBots[$pl['id']] = $bi; - $bi++; - } - //записываем статы - $this->stats[$i] = $u->getStats($pl, 0, 0, false, $this->cached, true); - //Заносим старт - if ($this->info['start2'] == 0) { - if (!isset($ts[$this->users[$i]['team']])) { - $tsi++; - $ts[$this->users[$i]['team']] = $tsi; - } - - if ($this->users[$i]['level'] <= 7) { - $this->users[$i]['tactic7'] = floor(10 / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); - } elseif ($this->users[$i]['level'] == 8) { - $this->users[$i]['tactic7'] = floor(20 / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); - } elseif ($this->users[$i]['level'] == 9) { - $this->users[$i]['tactic7'] = floor(30 / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); - } elseif ($this->users[$i]['level'] >= 10) { - $this->users[$i]['tactic7'] = floor((40 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); - } - - if ($this->stats[$i]['s7'] > 49) { - mysql_query('UPDATE `eff_users` SET `delete`="' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `overType` = 101 AND `delete` = 0'); - mysql_query(" + if ($this->stats[$i]['s7'] > 49) { + mysql_query('UPDATE `eff_users` SET `delete`="' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `overType` = 101 AND `delete` = 0'); + mysql_query(" INSERT INTO `eff_users` ( `id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES ( 22, '" . $this->stats[$i]['id'] . "', 'Спасение', 'add_spasenie=1', 101, 77, 0, '" . $this->stats[$i]['id'] . "', 0, 'priem', 324, 'preservation.gif', 1, -1, 'спасение', 0, 0, '', 0, 0, 0, 1, 0); "); - } + } - // Бафф Зверя animal_bonus - if ($this->users[$i]['animal'] > 0) { - $a = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `id` = "' . $this->users[$i]['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); - if (isset($a['id'])) { - if ($a['eda'] >= 1) { - $anl = mysql_fetch_array(mysql_query('SELECT `bonus` FROM `levels_animal` WHERE `type` = "' . $a['type'] . '" AND `level` = "' . $a['level'] . '" LIMIT 1')); - $anl = $anl['bonus']; + #Вот здесь добавляло лишнего духа) Ost. Costa + #$this->users[$i]['tactic7'] += $this->stats[$i]['s7']; + ##### + // Бафф Зверя animal_bonus + if ($this->users[$i]['animal'] > 0) { + $a = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `id` = "' . $this->users[$i]['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); + if (isset($a['id'])) { + if ($a['eda'] >= 1) { + $anl = mysql_fetch_array(mysql_query('SELECT `bonus` FROM `levels_animal` WHERE `type` = "' . $a['type'] . '" AND `level` = "' . $a['level'] . '" LIMIT 1')); + $anl = $anl['bonus']; - $tpa = [1 => 'cat', 2 => 'owl', 3 => 'wisp', 4 => 'demon', 5 => 'dog', 6 => 'pig', 7 => 'dragon']; - $tpa2 = [1 => 'Кота', 2 => 'Совы', 3 => 'Светляка', 4 => 'Чертяки', 5 => 'Пса', 6 => 'Свина', 7 => 'Дракона']; - $tpa3 = [1 => 'Кошачья Ловкость', 2 => 'Интуиция Совы', 3 => 'Сила Стихий', 4 => 'Демоническая Сила', 5 => 'Друг', 6 => 'Полная Броня', 7 => 'Инферно']; + $tpa = [ + 1 => 'cat', + 2 => 'owl', + 3 => 'wisp', + 4 => 'demon', + 5 => 'dog', + 6 => 'pig', + 7 => 'dragon', + ]; + $tpa2 = [ + 1 => 'Кота', + 2 => 'Совы', + 3 => 'Светляка', + 4 => 'Чертяки', + 5 => 'Пса', + 6 => 'Свина', + 7 => 'Дракона', + ]; + $tpa3 = [ + 1 => 'Кошачья Ловкость', + 2 => 'Интуиция Совы', + 3 => 'Сила Стихий', + 4 => 'Демоническая Сила', + 5 => 'Друг', + 6 => 'Полная Броня', + 7 => 'Инферно', + ]; - mysql_query('UPDATE `eff_users` SET `delete`="' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `overType` = 100 AND `delete` = 0'); + mysql_query('UPDATE `eff_users` SET `delete`="' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `overType` = 100 AND `delete` = 0'); - mysql_query('INSERT INTO `eff_users` (`hod`,`v2`,`img2`,`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`v1`,`user_use`) VALUES ("-1","201","summon_pet_' . $tpa[$a['type']] . '.gif",22,"' . $this->users[$i]['id'] . '","' . $tpa3[$a['type']] . ' [' . $a['level'] . ']","' . $anl . '","100","77","priem","' . $this->users[$i]['id'] . '")'); + mysql_query('INSERT INTO `eff_users` (`hod`,`v2`,`img2`,`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`v1`,`user_use`) VALUES ("-1","201","summon_pet_' . $tpa[$a['type']] . '.gif",22,"' . $this->users[$i]['id'] . '","' . $tpa3[$a['type']] . ' [' . $a['level'] . ']","' . $anl . '","100","77","priem","' . $this->users[$i]['id'] . '")'); - //добавление духа от дракона - if ($a['type'] == 7) { - if ($a['level'] == 10) { - $this->users[$i]['tactic7'] = floor((50 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); - } elseif ($a['level'] == 11) { - $this->users[$i]['tactic7'] = floor((65 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); - } elseif ($a['level'] == 12) { - $this->users[$i]['tactic7'] = floor((90 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); - } - } - // - $anl = $u->lookStats($anl); + //добавление духа от дракона + if ($a['type'] == 7) { + if ($a['level'] == 10) { + $this->users[$i]['tactic7'] = floor((50 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); + } elseif ($a['level'] == 11) { + $this->users[$i]['tactic7'] = floor((65 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); + } elseif ($a['level'] == 12) { + $this->users[$i]['tactic7'] = floor((90 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); + } + } + // + $anl = $u->lookStats($anl); - $vLog = 'time1=' . time() . '||s1=' . $this->users[$i]['sex'] . '||t1=' . $this->users[$i]['team'] . '||login1=' . $this->users[$i]['login'] . ''; - $vLog .= '||s2=1||t2=' . $this->users[$i]['team'] . '||login2=' . $a['name'] . ' (Зверь ' . $this->users[$i]['login'] . ')'; + $vLog = 'time1=' . time() . '||s1=' . $this->users[$i]['sex'] . '||t1=' . $this->users[$i]['team'] . '||login1=' . $this->users[$i]['login'] . ''; + $vLog .= '||s2=1||t2=' . $this->users[$i]['team'] . '||login2=' . $a['name'] . ' (Зверь ' . $this->users[$i]['login'] . ')'; - $mas1 = ['time' => time(), 'battle' => $this->info['id'], 'id_hod' => 1, 'text' => '', 'vars' => $vLog, 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1']; + $mas1 = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => 1, + 'text' => '', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; - $ba = ''; - $i6 = 0; - while ($i6 < count($u->items['add'])) { - if (isset($anl['add_' . $u->items['add'][$i6]])) { - if ($anl['add_' . $u->items['add'][$i6]] > 0) { - if ($u->items['add'][$i6] == 'mib1') { - $ba .= 'Броня головы: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; - } elseif ($u->items['add'][$i6] == 'mib2') { - $ba .= 'Броня корпуса: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; - } elseif ($u->items['add'][$i6] == 'mib3') { - $ba .= 'Броня пояса: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; - } elseif ($u->items['add'][$i6] == 'mib4') { - $ba .= 'Броня ног: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; - } elseif ($u->items['add'][$i6] == 'mab1' || $u->items['add'][$i6] == 'mab2' || $u->items['add'][$i6] == 'mab3' || $u->items['add'][$i6] == 'mab4') { + $ba = ''; + $i6 = 0; + while ($i6 < count($u->items['add'])) { + if (isset($anl['add_' . $u->items['add'][$i6]])) { + if ($anl['add_' . $u->items['add'][$i6]] > 0) { + if ($u->items['add'][$i6] == 'mib1') { + $ba .= 'Броня головы: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; + } elseif ($u->items['add'][$i6] == 'mib2') { + $ba .= 'Броня корпуса: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; + } elseif ($u->items['add'][$i6] == 'mib3') { + $ba .= 'Броня пояса: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; + } elseif ($u->items['add'][$i6] == 'mib4') { + $ba .= 'Броня ног: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; + } elseif ($u->items['add'][$i6] == 'mab1' || $u->items['add'][$i6] == 'mab2' || $u->items['add'][$i6] == 'mab3' || $u->items['add'][$i6] == 'mab4') { + } else { + $ba .= $u->is[$u->items['add'][$i6]] . ': +' . $anl['add_' . $u->items['add'][$i6]] . ', '; + } + } + } + $i6++; + } + $ba = trim($ba, ', '); + if ($ba == '') { + $ba = 'Эффект отсутсвует'; + } - } else { - $ba .= $u->is[$u->items['add'][$i6]] . ': +' . $anl['add_' . $u->items['add'][$i6]] . ', '; - } - } - } - $i6++; - } - $ba = trim($ba, ', '); - if ($ba == '') { - $ba = 'Эффект отсутсвует'; - } + $mas1['text'] = '{tm1} {u2} очнулся от медитации, и призвал заклятье "' . $tpa3[$a['type']] . ' [' . $a['level'] . ']" на {u1}. (' . $ba . ')'; + $nxtlg[count($nxtlg)] = $mas1; + mysql_query('UPDATE `users_animal` SET `eda` = `eda` - 1 WHERE `id` = "' . $a['id'] . '" LIMIT 1'); + //$this->add_log($mas1); + $this->get_comment(); + } else { + //$u->send('',$this->users[$i]['room'],$this->users[$i]['city'],'',$this->users[$i]['login'],''.$a['name'].' нуждается в еде...',time(),6,0,0,0,1); + } + } + } - $mas1['text'] = '{tm1} {u2} очнулся от медитации, и призвал заклятье "' . $tpa3[$a['type']] . ' [' . $a['level'] . ']" на {u1}. (' . $ba . ')'; - $nxtlg[count($nxtlg)] = $mas1; - mysql_query('UPDATE `users_animal` SET `eda` = `eda` - 1 WHERE `id` = "' . $a['id'] . '" LIMIT 1'); - $this->get_comment(); + mysql_query('UPDATE `stats` SET `last_hp` = "0",`tactic1`="0",`tactic2`="0",`tactic3`="0",`tactic4`="0",`tactic5`="0",`tactic6`="0",`tactic7` = "' . ($this->users[$i]['tactic7']) . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + + $rs[$this->users[$i]['team']] .= $u->microLogin($this->users[$i], 2) . ', '; + } + $up .= '`uid` = "' . $pl['id'] . '" OR'; + //battle-user (статистика, начальная) + $mybu = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" AND `uid` = "' . mysql_real_escape_string($pl['id']) . '" LIMIT 1')); + if (!isset($mybu['id'])) { + //Пустое значение статистики для данного персонажа за текущий бой + $this->addstatuser($pl['id']); + } + $i++; + } + + /* + if($i == 0) { + $t = mysql_query('SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "'.$this->info['id'].'" AND `st`.`hpNow` > 0'); + $i = 0; $bi = 0; $up = ''; + while($pl = mysql_fetch_array($t)) + { + //записываем данные + if($pl['login2']=='') + { + $pl['login2'] = $pl['login']; + } + $this->users[$i] = $pl; + $this->uids[$pl['id']] = $i; + if($pl['bot']>0) + { + $this->bots[$bi] = $pl['id']; + $this->iBots[$pl['id']] = $bi; + $bi++; + } + //записываем статы + $this->stats[$i] = $u->getStats($pl,0); + //Заносим старт + if($this->info['start1']==0) + { + if(!isset($ts[$this->users[$i]['team']])) + { + $tsi++; + $ts[$this->users[$i]['team']] = $tsi; } - } - } - mysql_query('UPDATE `stats` SET `last_hp` = "0",`tactic1`="0",`tactic2`="0",`tactic3`="0",`tactic4`="0",`tactic5`="0",`tactic6`="0",`tactic7` = "' . ($this->users[$i]['tactic7']) . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); - $rs[$this->users[$i]['team']] .= $u->microLogin($this->users[$i], 2) . ', '; - } - $up .= '`uid` = "' . $pl['id'] . '" OR'; - $mybu = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" AND `uid` = "' . mysql_real_escape_string($pl['id']) . '" LIMIT 1')); - if (!isset($mybu['id'])) { - //Пустое значение статистики для данного персонажа за текущий бой - $this->addstatuser($pl['id']); - } - $i++; - } - - $up = rtrim($up, ' OR'); - //Заносим в лог начало поединка - - if ($this->info['start1'] == 0) { - $tststrt = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `start1` = "0" LIMIT 1')); - if (isset($tststrt['id'])) { - $upd = mysql_query('UPDATE `battle` SET `start1` = "' . time() . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); - if ($upd) { - $i = 0; - $r = ''; - while ($i <= $tsi) { - if (isset($rs[$i]) && $rs[$i] != '') { - $r .= rtrim($rs[$i], ', ') . ' и '; + if($this->users[$i]['level']<=7) + { + $this->users[$i]['tactic7'] = floor(10/$this->stats[$i]['hpAll']*$this->stats[$i]['hpNow']); + }elseif($this->users[$i]['level']==8) + { + $this->users[$i]['tactic7'] = floor(20/$this->stats[$i]['hpAll']*$this->stats[$i]['hpNow']); + }elseif($this->users[$i]['level']==9) + { + $this->users[$i]['tactic7'] = floor(30/$this->stats[$i]['hpAll']*$this->stats[$i]['hpNow']); + }elseif($this->users[$i]['level']>=10) + { + $this->users[$i]['tactic7'] = floor(40/$this->stats[$i]['hpAll']*$this->stats[$i]['hpNow']); } - $i++; - } - $r = rtrim($r, ' и '); - $r = str_replace('"', '\\\\\"', $r); - $this->hodID++; - $vLog = 'time1=' . time() . '||'; - $mass = ['time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'text' => 'test', 'vars' => $vLog, 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1']; - $r = 'Часы показывали ' . date('d.m.Y H:i', $this->info['time_start']) . ', когда ' . $r . ' бросили вызов друг другу.'; - $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $r . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); - if (!$ins) { - //echo $r; - } - $this->info['start1'] = time(); - } - } - // + $this->users[$i]['tactic7'] += $this->stats[$i]['s7']; - if (count($nxtlg) > 0) { - $i = 0; - while ($i < count($nxtlg)) { - $this->add_log($nxtlg[$i]); + mysql_query('UPDATE `stats` SET `tactic1`="0",`tactic2`="0",`tactic3`="0",`tactic4`="0",`tactic5`="0",`tactic6`="0",`tactic7`="0",`tactic7` = "'.($this->users[$i]['tactic7']).'" WHERE `id` = "'.$this->users[$i]['id'].'" LIMIT 1'); + + $rs[$tsi] .= $u->microLogin($this->users[$i],2).', '; + } + $up .= '`uid` = "'.$pl['id'].'" OR'; $i++; } } + */ - // - } - } - } + $up = rtrim($up, ' OR'); + //mysql_query('UPDATE `eff_users` SET `timeAce` = "0" WHERE ('.$up.') AND `delete` = "0"'); + //echo '


'; - //Возращаем зоны блока по умолчанию - public function restZonb($uid1, $uid2) - { - if ($this->stnZbVs[$uid1] > 0) { - $this->stats[$this->uids[$uid1]]['zonb'] = $this->stnZbVs[$uid1]; - } - if ($this->stnZbVs[$uid2] > 0) { - $this->stats[$this->uids[$uid1]]['zonb'] = $this->stnZbVs[$uid2]; - } - } + //Заносим в лог начало поединка - //проверка блока (Визуальная) - public function testZonbVis() - { - global $u; - if ($this->stnZbVs == 0) { - $zb = $this->stats[$this->uids[$u->info['id']]]['zonb']; - $this->stnZbVs = $zb; - } else { - $zb = $this->stnZb; - } - $eu = $this->users[$this->uids[$u->info['id']]]['enemy']; - if ($zb > 3) { - $zb = 3; - } - if ($eu != '' && $eu != 0) { - if ($this->stats[$this->uids[$eu]]['weapon1'] == 1 || $this->stats[$this->uids[$eu]]['weapon2'] == 1) { - if ($this->stats[$this->uids[$u->info['id']]]['weapon1'] != 1 && $this->stats[$this->uids[$u->info['id']]]['weapon2'] != 1) { - $zb -= 1; - } - } - } - if ($zb < 1) { - $zb = 1; - } - return $zb; - } + if ($this->info['start1'] == 0) { + $tststrt = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `start1` = "0" LIMIT 1')); + if (isset($tststrt['id'])) { + $upd = mysql_query('UPDATE `battle` SET `start1` = "' . time() . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + if ($upd) { + $i = 0; + $r = ''; + while ($i <= $tsi) { + if (isset($rs[$i]) && $rs[$i] != '') { + $r .= rtrim($rs[$i], ', ') . ' и '; + } + $i++; + } + $r = rtrim($r, ' и '); + $r = str_replace('"', '\\\\\"', $r); + $this->hodID++; + $vLog = 'time1=' . time() . '||'; + $mass = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'text' => 'test', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + $r = 'Часы показывали ' . date('d.m.Y H:i', + $this->info['time_start']) . ', когда ' . $r . ' бросили вызов друг другу.'; + $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $r . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); + if (!$ins) { + //echo $r; + } + $this->info['start1'] = time(); + } + } - //проверка блока - public function testZonb($uid, $uid2) - { - global $u; - $zba = [1 => 0, 2 => 0]; + // - $zba[1] = $this->stats[$this->uids[$uid]]['zonb']; - $zba[2] = $this->stats[$this->uids[$uid2]]['zonb']; + if (count($nxtlg) > 0) { + $i = 0; + while ($i < count($nxtlg)) { + $this->add_log($nxtlg[$i]); + $i++; + } + } + // + } + } + } - if ($this->stnZb[$uid] == 0) { - $zba[1] = $this->stats[$this->uids[$uid]]['zonb']; - $this->stnZb[$uid] = $zba[1]; - } else { - $zba[1] = $this->stnZb[$uid]; - } + //Возращаем зоны блока по умолчанию + public function restZonb($uid1, $uid2) + { + if ($this->stnZbVs[$uid1] > 0) { + $this->stats[$this->uids[$uid1]]['zonb'] = $this->stnZbVs[$uid1]; + } + if ($this->stnZbVs[$uid2] > 0) { + $this->stats[$this->uids[$uid1]]['zonb'] = $this->stnZbVs[$uid2]; + } + } - if ($this->stnZb[$uid2] == 0) { - $zba[2] = $this->stats[$this->uids[$uid2]]['zonb']; - $this->stnZb[$uid] = $zba[2]; - } else { - $zba[2] = $this->stnZb[$uid2]; - } + //проверка блока (Визуальная) + public function testZonbVis() + { + global $u; + if ($this->stnZbVs == 0) { + $zb = $this->stats[$this->uids[$u->info['id']]]['zonb']; + $this->stnZbVs = $zb; + } else { + $zb = $this->stnZb; + } + $eu = $this->users[$this->uids[$u->info['id']]]['enemy']; + if ($zb > 3) { + $zb = 3; + } + if ($eu != '' && $eu != 0) { + if ($this->stats[$this->uids[$eu]]['weapon1'] == 1 || $this->stats[$this->uids[$eu]]['weapon2'] == 1) { + if ($this->stats[$this->uids[$u->info['id']]]['weapon1'] != 1 && $this->stats[$this->uids[$u->info['id']]]['weapon2'] != 1) { + $zb -= 1; + } + } + } + if ($zb < 1) { + $zb = 1; + } + return $zb; + } - if ($zba[1] > 3) { - $zba[1] = 3; - } - if ($zba[2] > 3) { - $zba[2] = 3; - } + //проверка блока + public function testZonb($uid, $uid2) + { + global $u; + $zba = [1 => 0, 2 => 0]; - //Блоки игрока 1 - if ($this->stats[$this->uids[$uid2]]['weapon1'] == 1 || $this->stats[$this->uids[$uid2]]['weapon2'] == 1) { - if ($this->stats[$this->uids[$uid]]['weapon1'] != 1 && $this->stats[$this->uids[$uid]]['weapon2'] != 1) { - $zba[1] -= 1; - } - } + $zba[1] = $this->stats[$this->uids[$uid]]['zonb']; + $zba[2] = $this->stats[$this->uids[$uid2]]['zonb']; - //Блоки игрока 2 - if ($this->stats[$this->uids[$uid]]['weapon1'] == 1 || $this->stats[$this->uids[$uid]]['weapon2'] == 1) { - if ($this->stats[$this->uids[$uid2]]['weapon1'] != 1 && $this->stats[$this->uids[$uid2]]['weapon2'] != 1) { - $zba[2] -= 1; - } - } + if ($this->stnZb[$uid] == 0) { + $zba[1] = $this->stats[$this->uids[$uid]]['zonb']; + $this->stnZb[$uid] = $zba[1]; + } else { + $zba[1] = $this->stnZb[$uid]; + } - if ($zba[1] < 1) { - $zba[1] = 1; - } - if ($zba[2] < 1) { - $zba[2] = 1; - } + if ($this->stnZb[$uid2] == 0) { + $zba[2] = $this->stats[$this->uids[$uid2]]['zonb']; + $this->stnZb[$uid] = $zba[2]; + } else { + $zba[2] = $this->stnZb[$uid2]; + } - $this->stats[$this->uids[$uid]]['zonb'] = $zba[1]; - $this->stats[$this->uids[$uid2]]['zonb'] = $zba[2]; - if ($this->stats[$this->uids[$uid]]['min_zonb'] > 0 && $this->stats[$this->uids[$uid]]['zonb'] < $this->stats[$this->uids[$uid]]['min_zonb']) { - $this->stats[$this->uids[$uid]]['zonb'] = $this->stats[$this->uids[$uid]]['min_zonb']; - } - if ($this->stats[$this->uids[$uid2]]['min_zonb'] > 0 && $this->stats[$this->uids[$uid2]]['zonb'] < $this->stats[$this->uids[$uid2]]['min_zonb']) { - $this->stats[$this->uids[$uid2]]['zonb'] = $this->stats[$this->uids[$uid2]]['min_zonb']; - } - } + if ($zba[1] > 3) { + $zba[1] = 3; + } + if ($zba[2] > 3) { + $zba[2] = 3; + } - //генерируем команды - public function genTeams($you) - { - global $u; - $ret = ''; - $teams = []; - //выделяем пользователей - $i = 0; - $j = 1; - $tms = []; - //if( $this->users[$this->uids[$you]]['team'] > 0 && $this->stats[$this->uids[$you]]['hpNow'] > 0 ) { - $teams[$this->users[$this->uids[$you]]['team']] = ''; - $tms[0] = $this->users[$this->uids[$you]]['team']; - //} - while ($i < count($this->uids)) { - if ($this->stats[$i]['hpNow'] > 0) { - if (!isset($teams[$this->users[$i]['team']])) { - $tms[$j] = $this->users[$i]['team']; - $j++; - } - if ($this->stats[$i]['hpNow'] < 0) { - $this->stats[$i]['hpNow'] = 0; - } - if ($this->stats[$i]['hpAll'] < $this->stats[$i]['hpNow']) { - $this->stats[$i]['hpNow'] = $this->stats[$i]['hpAll']; - } - $a1ms = ''; - if (isset($this->ga[$this->users[$i]['id']][$you]) && $this->ga[$this->users[$i]['id']][$you] != false) { - $a1mc = ''; - $ac = mysql_fetch_array(mysql_query('SELECT * FROM `battle_act` WHERE `id` = "' . $this->ga[$this->users[$i]['id']][$you] . '" LIMIT 1')); - if (isset($ac) && $ac['time'] + $this->info['timeout'] - 15 < time()) { - $a1mc = 'color:red;'; - } - $a1ms = 'style=\"text-decoration: underline; ' . $a1mc . '\"'; - } elseif (isset($this->ag[$this->users[$i]['id']][$you]) && $this->ag[$this->users[$i]['id']][$you] != false) { - $a1mc = ''; - $ac = mysql_fetch_array(mysql_query('SELECT * FROM `battle_act` WHERE `id` = "' . $this->ag[$this->users[$i]['id']][$you] . '" LIMIT 1')); - if (isset($ac) && $ac['time'] + $this->info['timeout'] - 15 < time()) { - $a1mc = 'color:green;'; - } - $a1ms = 'style=\"text-decoration: overline; ' . $a1mc . '\"'; - } - if ($this->users[$i]['login2'] == '') { - $this->users[$i]['login2'] = $this->users[$i]['login']; - } - if ($this->users[$i]['align'] == 9) { - $this->stats[$i]['hpNow'] = $this->stats[$i]['hpNow'] / ($this->stats[$i]['hpAll'] / 100); - $this->stats[$i]['hpAll'] = '100%'; - } - $ldr = ''; - if ($this->users[$i]['lider'] == $this->info['id']) { - $ldr = 'users[$i]['team'] . '.gif \>'; - } - $teams[$this->users[$i]['team']] .= ', ' . $ldr . 'users[$i]['team'] . '\" onClick=\"top.chat.addto(\'' . $this->users[$i]['login2'] . '\',\'to\'); return false;\" oncontextmenu=\"top.infoMenu(\'' . $this->users[$i]['login2'] . '\',event,\'main\'); return false;\">' . $this->users[$i]['login2'] . ' [' . floor($this->stats[$i]['hpNow']) . '/' . $this->stats[$i]['hpAll'] . ']'; - } - $i++; - } + //Блоки игрока 1 + if ($this->stats[$this->uids[$uid2]]['weapon1'] == 1 || $this->stats[$this->uids[$uid2]]['weapon2'] == 1) { + if ($this->stats[$this->uids[$uid]]['weapon1'] != 1 && $this->stats[$this->uids[$uid]]['weapon2'] != 1) { + $zba[1] -= 1; + } + } - //генерируем команды - $i = 0; - while ($i < count($tms)) { - $teams[$tms[$i]] = ltrim($teams[$tms[$i]], ', '); - if ($teams[$tms[$i]] != '') { - $teams[$tms[$i]] = ' ' . $teams[$tms[$i]]; - $ret .= $teams[$tms[$i]]; - if (count($tms) > $i + 1) { - $ret .= '   против   '; - } - } - $i++; - } - return 'genteam("' . $ret . '");'; - } + //Блоки игрока 2 + if ($this->stats[$this->uids[$uid]]['weapon1'] == 1 || $this->stats[$this->uids[$uid]]['weapon2'] == 1) { + if ($this->stats[$this->uids[$uid2]]['weapon1'] != 1 && $this->stats[$this->uids[$uid2]]['weapon2'] != 1) { + $zba[2] -= 1; + } + } + + if ($zba[1] < 1) { + $zba[1] = 1; + } + if ($zba[2] < 1) { + $zba[2] = 1; + } + + $this->stats[$this->uids[$uid]]['zonb'] = $zba[1]; + $this->stats[$this->uids[$uid2]]['zonb'] = $zba[2]; + if ($this->stats[$this->uids[$uid]]['min_zonb'] > 0 && $this->stats[$this->uids[$uid]]['zonb'] < $this->stats[$this->uids[$uid]]['min_zonb']) { + $this->stats[$this->uids[$uid]]['zonb'] = $this->stats[$this->uids[$uid]]['min_zonb']; + } + if ($this->stats[$this->uids[$uid2]]['min_zonb'] > 0 && $this->stats[$this->uids[$uid2]]['zonb'] < $this->stats[$this->uids[$uid2]]['min_zonb']) { + $this->stats[$this->uids[$uid2]]['zonb'] = $this->stats[$this->uids[$uid2]]['min_zonb']; + } + } + + //генерируем команды + public function genTeams($you) + { + global $u; + $ret = ''; + $teams = []; + //выделяем пользователей + $i = 0; + $j = 1; + $tms = []; + //if( $this->users[$this->uids[$you]]['team'] > 0 && $this->stats[$this->uids[$you]]['hpNow'] > 0 ) { + $teams[$this->users[$this->uids[$you]]['team']] = ''; + $tms[0] = $this->users[$this->uids[$you]]['team']; + //} + while ($i < count($this->uids)) { + if ($this->stats[$i]['hpNow'] > 0) { + if (!isset($teams[$this->users[$i]['team']])) { + $tms[$j] = $this->users[$i]['team']; + $j++; + } + if ($this->stats[$i]['hpNow'] < 0) { + $this->stats[$i]['hpNow'] = 0; + } + if ($this->stats[$i]['hpAll'] < $this->stats[$i]['hpNow']) { + $this->stats[$i]['hpNow'] = $this->stats[$i]['hpAll']; + } + $a1ms = ''; + if (isset($this->ga[$this->users[$i]['id']][$you]) && $this->ga[$this->users[$i]['id']][$you] != false) { + $a1mc = ''; + $ac = mysql_fetch_array(mysql_query('SELECT * FROM `battle_act` WHERE `id` = "' . $this->ga[$this->users[$i]['id']][$you] . '" LIMIT 1')); + if (isset($ac) && $ac['time'] + $this->info['timeout'] - 15 < time()) { + $a1mc = 'color:red;'; + } + $a1ms = 'style=\"text-decoration: underline; ' . $a1mc . '\"'; + } elseif (isset($this->ag[$this->users[$i]['id']][$you]) && $this->ag[$this->users[$i]['id']][$you] != false) { + $a1mc = ''; + $ac = mysql_fetch_array(mysql_query('SELECT * FROM `battle_act` WHERE `id` = "' . $this->ag[$this->users[$i]['id']][$you] . '" LIMIT 1')); + if (isset($ac) && $ac['time'] + $this->info['timeout'] - 15 < time()) { + $a1mc = 'color:green;'; + } + $a1ms = 'style=\"text-decoration: overline; ' . $a1mc . '\"'; + } + if ($this->users[$i]['login2'] == '') { + $this->users[$i]['login2'] = $this->users[$i]['login']; + } + if ($this->users[$i]['align'] == 9) { + $this->stats[$i]['hpNow'] = $this->stats[$i]['hpNow'] / ($this->stats[$i]['hpAll'] / 100); + $this->stats[$i]['hpAll'] = '100%'; + } + $ldr = ''; + if ($this->users[$i]['lider'] == $this->info['id']) { + $ldr = 'users[$i]['team'] . '.gif \>'; + } + $teams[$this->users[$i]['team']] .= ', ' . $ldr . 'users[$i]['team'] . '\" onClick=\"top.chat.addto(\'' . $this->users[$i]['login2'] . '\',\'to\'); return false;\" oncontextmenu=\"top.infoMenu(\'' . $this->users[$i]['login2'] . '\',event,\'main\'); return false;\">' . $this->users[$i]['login2'] . ' [' . floor($this->stats[$i]['hpNow']) . '/' . $this->stats[$i]['hpAll'] . ']'; + } + $i++; + } + + //генерируем команды + $i = 0; + while ($i < count($tms)) { + $teams[$tms[$i]] = ltrim($teams[$tms[$i]], ', '); + if ($teams[$tms[$i]] != '') { + //if($u->info['team'] == $tms[$i]) { + // $teams[$tms[$i]] = ' '.$teams[$tms[$i]]; + //}else{ + $teams[$tms[$i]] = ' ' . $teams[$tms[$i]]; + //} + $ret .= $teams[$tms[$i]]; + if (count($tms) > $i + 1) { + $ret .= '   против   '; + } + } + $i++; + } + return 'genteam("' . $ret . '");'; + } - public function addTravm($uid, $type, $lvl) - { - global $u; - $t = $type; - if ($t == 1) { - $name = 'Легкая травма'; - $stat = rand(1, 3); // пока без духовности - $timeEnd = rand(1, 3);// время травмы от 1.30 до 6 часов - $data = 'add_s' . $stat . '=-' . $lvl; - $img = 'eff_travma1.gif'; - $v1 = 1; - //echo ''.$name.''; - } elseif ($t == 2) { - $name = 'Средняя травма'; - $stat = rand(1, 3); // пока без духовности - $timeEnd = rand(3, 5);// время травмы от 6 до 12 часов - $data = 'add_s' . $stat . '=-' . ($lvl * 2); - $v1 = 2; - $img = 'eff_travma2.gif'; - } elseif ($t == 3) { - $name = 'Тяжелая травма'; - $stat = rand(1, 3); // пока без духовности - $timeEnd = rand(5, 7);// время травмы от 12 до 6 часов - $data = 'add_s' . $stat . '=-' . ($lvl * 3); - $v1 = 3; - $img = 'eff_travma3.gif'; - } elseif ($t == 4) { - $name = 'Неизлечимая травма'; - $stat = rand(1, 3); // пока без духовности - $timeEnd = 24;// время травмы от 24 часа - $data = 'add_s' . $stat . '=-' . ($lvl * 50); - $v1 = 4; - $img = 'eff_travma4.gif'; - } - $timeEnd = $timeEnd * 3600; - $ins = mysql_query('INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES ("0","' . time() . '","-1","' . $name . '","' . $data . '","' . $uid . '", "4", "' . $img . '","' . $timeEnd . '", "' . $v1 . '")'); - $ins = mysql_query('INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES ("0","' . time() . '","-1","Иммунитет: Защита от травм","add_notravma=1","' . $uid . '", "263", "cure1.gif","21600", "")'); - } + public function addTravm($uid, $type, $lvl) + { + global $u; + $t = $type; + if ($t == 1) { + $name = 'Легкая травма'; + $stat = rand(1, 3); // пока без духовности + $timeEnd = rand(1, 3);// время травмы от 1.30 до 6 часов + $data = 'add_s' . $stat . '=-' . $lvl; + $img = 'eff_travma1.gif'; + $v1 = 1; + //echo ''.$name.''; + } elseif ($t == 2) { + $name = 'Средняя травма'; + $stat = rand(1, 3); // пока без духовности + $timeEnd = rand(3, 5);// время травмы от 6 до 12 часов + $data = 'add_s' . $stat . '=-' . ($lvl * 2); + $v1 = 2; + $img = 'eff_travma2.gif'; + } elseif ($t == 3) { + $name = 'Тяжелая травма'; + $stat = rand(1, 3); // пока без духовности + $timeEnd = rand(5, 7);// время травмы от 12 до 6 часов + $data = 'add_s' . $stat . '=-' . ($lvl * 3); + $v1 = 3; + $img = 'eff_travma3.gif'; + } elseif ($t == 4) { + $name = 'Неизлечимая травма'; + $stat = rand(1, 3); // пока без духовности + $timeEnd = 24;// время травмы от 24 часа + $data = 'add_s' . $stat . '=-' . ($lvl * 50); + $v1 = 4; + $img = 'eff_travma4.gif'; + } + $timeEnd = $timeEnd * 3600; + // + //$timeEnd = $timeEnd/3600; + // + $ins = mysql_query('INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES ("0","' . time() . '","-1","' . $name . '","' . $data . '","' . $uid . '", "4", "' . $img . '","' . $timeEnd . '", "' . $v1 . '")'); + $ins = mysql_query('INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES ("0","' . time() . '","-1","Иммунитет: Защита от травм","add_notravma=1","' . $uid . '", "263", "cure1.gif","21600", "")'); + } - public function testUserInfoBattle($uid) - { - global $u; - if (!isset($this->uids[$uid])) { - //Заносим данные об игроке снова (видимо он погиб и его стерло с инфо) - if (!isset($this->uids[$uid])) { - $this->uids[$uid] = count($this->users); - } - $this->users[$this->uids[$uid]] = mysql_fetch_array(mysql_query('SELECT + public function testUserInfoBattle($uid) + { + global $u; + if (!isset($this->uids[$uid])) { + //Заносим данные об игроке снова (видимо он погиб и его стерло с инфо) + if (!isset($this->uids[$uid])) { + $this->uids[$uid] = count($this->users); + } + $this->users[$this->uids[$uid]] = mysql_fetch_array(mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`login2`,`u`.`online`,`u`.`admin`,`u`.`city`,`u`.`cityreg`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`, `u`.`level`,`u`.`money`,`u`.`money3`,`u`.`money2`,`u`.`money4`,`u`.`battle`,`u`.`sex`,`u`.`obraz`,`u`.`win`,`u`.`win_t`, @@ -9218,89 +11719,88 @@ class battleClass `st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id` = "' . $uid . '" LIMIT 1')); - $this->stats[$this->uids[$uid]] = $u->getStats($this->users[$this->uids[$uid]], 0, 0, false, false, true); - } - } + $this->stats[$this->uids[$uid]] = $u->getStats($this->users[$this->uids[$uid]], 0, 0, false, false, true); + } + } - ///----Спасение функция - public function spaCheck($u1) - { - if ($this->stats[$this->uids[$u1]]['hpNow'] < 1) { - mysql_query('DELETE FROM `battle_act` WHERE `uid1` = "' . $u1 . '" OR `uid2` = "' . $u1 . '"'); - if ($this->stats[$this->uids[$u1]]['spasenie'] > 0 && $this->users[$this->uids[$u1]]['tactic7'] >= 25) // - { - //Свиток спасения - // - if ($this->stats[$this->uids[$u1]]['s7'] > 49 && $this->stats[$this->uids[$u1]]['s7'] < 75) { - //Даем призрачку - mysql_query("INSERT INTO `eff_users` + ///----Спасение функция + public function spaCheck($u1) + { + if ($this->stats[$this->uids[$u1]]['hpNow'] < 1) { + mysql_query('DELETE FROM `battle_act` WHERE `uid1` = "' . $u1 . '" OR `uid2` = "' . $u1 . '"'); + if ($this->stats[$this->uids[$u1]]['spasenie'] > 0 && $this->users[$this->uids[$u1]]['tactic7'] >= 25) // + { + //Свиток спасения + // + if ($this->stats[$this->uids[$u1]]['s7'] > 49 && $this->stats[$this->uids[$u1]]['s7'] < 75) { + //Даем призрачку + mysql_query("INSERT INTO `eff_users` (`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES (22, '" . $u1 . "', 'Призрачная защита', 'add_zmproc=75|add_zaproc=75', 0, 77, 0, '" . $u1 . "', 0, 'priem', 141, 'spirit_block25.gif', 1, 1, '0', 0, 0, '', 0, 0, 0, 0, 0);"); - $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll'] * 0.5); - $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll'] * 0.5); - - } elseif ($this->stats[$this->uids[$u1]]['s7'] > 74 && $this->stats[$this->uids[$u1]]['s7'] < 100) { - //Абсолютная защита - mysql_query("INSERT INTO `eff_users` + $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll'] * 0.5); + $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll'] * 0.5); + } elseif ($this->stats[$this->uids[$u1]]['s7'] > 74 && $this->stats[$this->uids[$u1]]['s7'] < 100) { + //Абсолютная защита + mysql_query("INSERT INTO `eff_users` (`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES (22, '" . $u1 . "', 'Абсолютная защита', 'add_zmproc=100|add_zaproc=100', 0, 77, 0, '" . $u1 . "', 0, 'priem', 358, 'block_absolute.gif', 1, 1, '0', 0, 0, '', 0, 0, 0, 0, 0);"); - $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll'] * 0.75); - $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll'] * 0.75); - } elseif ($this->stats[$this->uids[$u1]]['s7'] > 99) { - //Абсолютная защита x2 - mysql_query("INSERT INTO `eff_users` + $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll'] * 0.75); + $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll'] * 0.75); + } elseif ($this->stats[$this->uids[$u1]]['s7'] > 99) { + //Абсолютная защита x2 + mysql_query("INSERT INTO `eff_users` (`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES (22, '" . $u1 . "', 'Защита Мироздателя', 'add_zmproc=100|add_zaproc=100', 0, 77, 0, '" . $u1 . "', 0, 'priem', 358, 'wis_white_shield.gif', 1, 2, '0', 0, 0, '', 0, 0, 0, 0, 0);"); - $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll']); - $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll']); - } + $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll']); + $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll']); + } - if ($this->stats[$this->uids[$u1]]['hpNow'] < 1) { - $this->stats[$this->uids[$u1]]['hpNow'] = 1; - } - if ($this->stats[$this->uids[$u1]]['mpNow'] < 1) { - $this->stats[$this->uids[$u1]]['mpNow'] = 1; - } - if ($this->stats[$this->uids[$u1]]['hpNow'] > $this->stats[$this->uids[$u1]]['hpAll']) { - $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll']); - } - if ($this->stats[$this->uids[$u1]]['mpNow'] > $this->stats[$this->uids[$u1]]['mpAll']) { - $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll']); - } + if ($this->stats[$this->uids[$u1]]['hpNow'] < 1) { + $this->stats[$this->uids[$u1]]['hpNow'] = 1; + } + if ($this->stats[$this->uids[$u1]]['mpNow'] < 1) { + $this->stats[$this->uids[$u1]]['mpNow'] = 1; + } + if ($this->stats[$this->uids[$u1]]['hpNow'] > $this->stats[$this->uids[$u1]]['hpAll']) { + $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll']); + } + if ($this->stats[$this->uids[$u1]]['mpNow'] > $this->stats[$this->uids[$u1]]['mpAll']) { + $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll']); + } - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $u1 . '" AND `id_eff` = 22 AND `v1` = "priem" AND `v2` = 324'); - mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->stats[$this->uids[$u1]]['hpNow'] . '",`mpNow` = "' . $this->stats[$this->uids[$u1]]['mpNow'] . '", `tactic7` = `tactic7` - 25 WHERE `id` = "' . $u1 . '" LIMIT 1'); - $mas['text'] = '{tm1} ' . $this->stats[$this->uids[$u1]]['login'] . ' убит...' . $this->stats[$this->uids[$u1]]['login'] . ' был спасен. '; - $this->priemAddLog($id, 1, 2, $u->info['id'], $u1, - ' ', - $mas['text'], - ($this->hodID + 0) - ); - // + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $u1 . '" AND `id_eff` = 22 AND `v1` = "priem" AND `v2` = 324'); + mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->stats[$this->uids[$u1]]['hpNow'] . '",`mpNow` = "' . $this->stats[$this->uids[$u1]]['mpNow'] . '", `tactic7` = `tactic7` - 25 WHERE `id` = "' . $u1 . '" LIMIT 1'); + $mas['text'] = '{tm1} ' . $this->stats[$this->uids[$u1]]['login'] . ' убит...' . $this->stats[$this->uids[$u1]]['login'] . ' был спасен. '; + $this->priemAddLog($id, 1, 2, $u->info['id'], $u1, + ' ', + $mas['text'], + ($this->hodID + 0) + ); + // - } else { - - if (isset($this->stats[$this->uids[$u1]]['login'])) { - mysql_query('UPDATE `stats` SET `hpNow` = "0",`mpNow` = "0" WHERE `id` = "' . $u1 . '" LIMIT 1'); - $this->stats[$this->uids[$u1]]['hpNow'] = 0; - $this->users[$this->uids[$u1]]['hpNow'] = 0; - $mas['text'] = '{tm1} ' . $this->stats[$this->uids[$u1]]['login'] . ' погиб.'; - $this->priemAddLog($id, 1, 2, $u->info['id'], $u1, - ' ', - $mas['text'], - ($this->hodID + 1) - //Удаляем размен из базы //ТУТ возможен лаг удаления - ); - mysql_query('DELETE FROM `battle_act` WHERE `uid1` = "' . $this->stats[$this->uids[$u1]]['id'] . '" OR `uid2` = "' . $this->stats[$this->uids[$u1]]['id'] . '" OR `uid2` = "-' . $this->stats[$this->uids[$u1]]['id'] . '"'); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->stats[$this->uids[$u1]]['id'] . '" AND `v1` = "priem" AND `delete` =0'); - // v1 priem - } - } - } - } - //Конец спасения + } else { + if (isset($this->stats[$this->uids[$u1]]['login'])) { + mysql_query('UPDATE `stats` SET `hpNow` = "0",`mpNow` = "0" WHERE `id` = "' . $u1 . '" LIMIT 1'); + $this->stats[$this->uids[$u1]]['hpNow'] = 0; + $this->users[$this->uids[$u1]]['hpNow'] = 0; + $mas['text'] = '{tm1} ' . $this->stats[$this->uids[$u1]]['login'] . ' погиб.'; + $this->priemAddLog($id, 1, 2, $u->info['id'], $u1, + ' ', + $mas['text'], + ($this->hodID + 1) + //Удаляем размен из базы //ТУТ возможен лаг удаления + ); + mysql_query('DELETE FROM `battle_act` WHERE `uid1` = "' . $this->stats[$this->uids[$u1]]['id'] . '" OR `uid2` = "' . $this->stats[$this->uids[$u1]]['id'] . '" OR `uid2` = "-' . $this->stats[$this->uids[$u1]]['id'] . '"'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->stats[$this->uids[$u1]]['id'] . '" AND `v1` = "priem" AND `delete` =0'); + // v1 priem + } + } + } + } + //Конец спасения } -$btl = new battleClass; \ No newline at end of file +$btl = new battleClass; +?> diff --git a/_incl_data/class/__battle.php-cleared b/_incl_data/class/__battle.php-cleared new file mode 100644 index 00000000..49474796 --- /dev/null +++ b/_incl_data/class/__battle.php-cleared @@ -0,0 +1,8360 @@ +db = $db; + } + + /** Должно бы уехать в Priems. + * @param $u1 + * @param $u2 + * @param $type + * @return string + */ + public function maginfoattack($u1, $u2, $type) + { + /* + 1 - огонь, + 2 - воздух, + 3 - вода, + 4 - земля + */ + $v_l = str_replace(' ', ' ', $this->users[$this->uids[$u1]]['login']); + + //защита цели + $v_z = 0 + $this->stats[$this->uids[$u2]]['zm' . $type]; + //подавление защиты от магии + $v_p = round(($this->stats[$this->uids[$u1]]['pzm' . $type] + $this->stats[$this->uids[$u1]]['pzm']) * 0.4); + //мощность мага + $v_m = 0 + $this->stats[$this->uids[$u1]]['pm' . $type]; + + return + ' magelogin=' . $v_l . + ' onMouseOver=top.hi(this,maginfo(' . $v_z . ',' . $v_p . ',' . $v_m . ',this),event,3,1,1,1,null); onMouseOut=top.hic(); onMouseDown=top.hic(); '; + } + + /** Узнаём тип поединка в зависимоти от $x + * @param $x + * @return array + */ + private function typeBattle($x) + { + $r = [0, 0, 'Обычный поединок', 'Кровавый Поединок']; + if ($x >= 50000 && $x < 100000) { + $r = [25, 50, 'Великая Битва', 'Кровавая Битва']; + } elseif ($x < 500000) { + $r = [50, 75, 'Величайшая Битва', 'Кровавая Резня']; + } elseif ($x < 1000000) { + $r = [75, 100, 'Историческая Битва', 'Кровавая Сеча']; + } elseif ($x < 2500000) { + $r = [100, 125, 'Эпохальная Битва', 'Кровавое Побоище']; + } elseif ($x >= 5000000) { + $r = [150, 150, 'Судный День', 'Судный День']; + } + return $r; + } + + ## ВСЕ ТРИ ПЕРЕМЕННЫЕ - КОНСТАНТЫ ДЛЯ PRIEMS (номерные) + public $mncolor = [ + 1 => '006699', + 2 => '006699', + 3 => '006699', + 4 => '006699', + 5 => '006699', + 6 => '006699', + 7 => '006699', + ]; //не крит + public $mcolor = [ + 1 => 'A00000', + 2 => '008080', + 3 => '0000FF', + 4 => 'A52A2A', + 5 => '006699', + 6 => '006699', + 7 => '006699', + ]; //не крит + public $mname = [ + 'огонь' => 1, + 'воздух' => 2, + 'вода' => 3, + 'земля' => 4, + 'свет' => 5, + 'тьма' => 6, + 'серая' => 7, + ]; + + /** Перечень приёмов (?) + *
act: + *
1 - когда персонаж получает повреждение + *
2 - когда персонаж наносит удар + *
type_of: + *
1 - уворот + *
2 - крит + *
3 - атака + *
4 - защита + *
5 - прочее + * @var array[] + */ + private $prm = [ + 1 => ['name' => 'Прикрыться', 'act' => 1, 'type_of' => 5], + 2 => ['name' => 'Вломить', 'act' => 2, 'type_of' => 3], + 4 => ['name' => 'Сильный удар', 'act' => 2, 'type_of' => 3], + 7 => ['name' => 'Активная защита', 'act' => 1, 'type_of' => 4], + + 290 => ['name' => 'Вытягивание души', 'act' => 1, 'type_of' => 4], + + //Излом хаоса + //291 => array( 'name' => 'Грация Боя', 'act' => 2, 'type_of' => 4 ), + + //Канализация + 294 => ['name' => 'Зловонная Вода', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 295 => ['name' => 'Проткнуть', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 296 => ['name' => 'Гнилая Кровь', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 297 => ['name' => 'Собраться', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 298 => ['name' => 'Приказ Слабости', 'act' => 2, 'type_of' => 3], + + 141 => ['name' => 'Призрачная защита', 'act' => 2, 'type_of' => 4], + 147 => ['name' => 'Призрачный кинжал', 'act' => 2, 'type_of' => 4], + 148 => ['name' => 'Призрачный топор', 'act' => 2, 'type_of' => 4], + 149 => ['name' => 'Призрачный удар', 'act' => 2, 'type_of' => 4], + 150 => ['name' => 'Призрачное лезвие', 'act' => 2, 'type_of' => 4], + + 142 => ['name' => 'Призрачный огонь', 'act' => 2, 'type_of' => 4], + 144 => ['name' => 'Призрачный воздух', 'act' => 2, 'type_of' => 4], + 146 => ['name' => 'Призрачная земля', 'act' => 2, 'type_of' => 4], + 145 => ['name' => 'Призрачная вода', 'act' => 2, 'type_of' => 4], + + 8 => ['name' => 'Танец ветра', 'act' => 1, 'type_of' => 1], + 9 => ['name' => 'Дикая удача', 'act' => 2, 'type_of' => 3], + 10 => ['name' => 'Предвидение', 'act' => 1, 'type_of' => 1], + 11 => ['name' => 'Удачный удар', 'act' => 2, 'type_of' => 3], + + 45 => ['name' => 'Полная защита', 'act' => 1, 'type_of' => 4], + + 47 => ['name' => 'Слепая удача', 'act' => 2, 'type_of' => 2], + 48 => ['name' => 'Танец лезвий', 'act' => 1, 'type_of' => 1], + 49 => ['name' => 'Второе дыхание', 'act' => 1, 'type_of' => 1], + 138 => ['name' => 'Сокрушающий удар', 'act' => 2, 'type_of' => 3], + 140 => ['name' => 'Абсолютная защита', 'act' => 1, 'type_of' => 4], + 193 => ['name' => 'Усиленные удары', 'act' => 2, 'type_of' => 3], + 204 => ['name' => 'Обречённость', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 211 => ['name' => 'Агрессивная защита', 'act' => 1, 'type_of' => 4], + 213 => ['name' => 'Коварный Уход', 'act' => 1, 'type_of' => 4], + 215 => ['name' => 'Скрытая ловкость', 'act' => 1, 'type_of' => 1], + 216 => ['name' => 'Скрытая сила', 'act' => 2, 'type_of' => 2], + 217 => ['name' => 'Разгадать тактику', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 219 => ['name' => 'Точный удар', 'act' => 2, 'type_of' => 3], + 220 => ['name' => 'Ставка на опережение', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 222 => ['name' => 'Последний удар', 'act' => 2, 'type_of' => 3], + 225 => ['name' => 'Магическая защита', 'act' => 1, 'type_of' => 4], + 226 => ['name' => 'Возмездие', 'act' => 1, 'type_of' => 4], + 231 => ['name' => 'Глухая защита', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 234 => ['name' => 'Осторожность', 'act' => 2, 'type_of' => 4], + 235 => ['name' => 'Шокирующий удар', 'act' => 2, 'type_of' => 3], + 342 => ['name' => 'Круговая Защита', 'act' => 0, 'type_of' => 0], + 343 => ['name' => 'Натиск', 'act' => 0, 'type_of' => 0], + + 237 => ['name' => 'Разведка боем', 'act' => 2, 'type_of' => 3 /*, 'moment' => 3*/], + + 239 => ['name' => 'Поступь смерти', 'act' => 2, 'type_of' => 3], + 240 => ['name' => 'Хлебнуть крови', 'act' => 2, 'type_of' => 5], + + //Оледенение + 21 => ['name' => 'Оледенение [4]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 73 => ['name' => 'Оледенение [5]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 74 => ['name' => 'Оледенение [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 75 => ['name' => 'Оледенение [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 76 => ['name' => 'Оледенение [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 77 => ['name' => 'Оледенение [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 78 => ['name' => 'Оледенение [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 79 => ['name' => 'Оледенение [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + + //Отравление + 22 => ['name' => 'Отравление [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 80 => ['name' => 'Отравление [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 81 => ['name' => 'Отравление [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 82 => ['name' => 'Отравление [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 83 => ['name' => 'Отравление [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 84 => ['name' => 'Отравление [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + + //Регенерация + 36 => ['name' => 'Регенерация [5]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 85 => ['name' => 'Регенерация [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 86 => ['name' => 'Регенерация [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 87 => ['name' => 'Регенерация [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 88 => ['name' => 'Регенерация [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 89 => ['name' => 'Регенерация [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 90 => ['name' => 'Регенерация [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + + //Ядовитое облако + 23 => ['name' => 'Ядовитое Облако [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 70 => ['name' => 'Ядовитое Облако [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 71 => ['name' => 'Ядовитое Облако [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 72 => ['name' => 'Ядовитое Облако [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + + //Иней + 269 => ['name' => 'Иней [8]', 'act' => 2, 'type_of' => 9], + 276 => ['name' => 'Иней [9]', 'act' => 2, 'type_of' => 9], + 277 => ['name' => 'Иней [10]', 'act' => 2, 'type_of' => 9], + + 270 => ['name' => 'Духи Льда', 'act' => 2, 'type_of' => 5, 'type_sec' => 5], + 280 => ['name' => 'Хватка Льда', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 281 => ['name' => 'Жертва Воде', 'act' => 2, 'type_of' => 5], + 282 => ['name' => 'Ледяное Спасение', 'act' => 2, 'type_of' => 5], + + //Медитация + 24 => ['name' => 'Медитация', 'act' => 2, 'type_of' => 0, 'moment' => 3], + + //Магический барьер + 210 => ['name' => 'Магический Барьер [4]', 'act' => 2, 'type_of' => 8], + 209 => ['name' => 'Магический Барьер [7]', 'act' => 2, 'type_of' => 8], + 208 => ['name' => 'Магический Барьер [8]', 'act' => 2, 'type_of' => 8], + 207 => ['name' => 'Магический Барьер [9]', 'act' => 2, 'type_of' => 8], + 206 => ['name' => 'Магический Барьер [10]', 'act' => 2, 'type_of' => 8], + 284 => ['name' => 'Магический Барьер [11]', 'act' => 2, 'type_of' => 8], + + //Силовое поле + 175 => ['name' => 'Магический Барьер [7]', 'act' => 2, 'type_of' => 8], + 176 => ['name' => 'Магический Барьер [8]', 'act' => 2, 'type_of' => 8], + 177 => ['name' => 'Магический Барьер [9]', 'act' => 2, 'type_of' => 8], + 178 => ['name' => 'Магический Барьер [10]', 'act' => 2, 'type_of' => 8], + 179 => ['name' => 'Магический Барьер [11]', 'act' => 2, 'type_of' => 8], + + //Метеорит + 42 => ['name' => 'Метеорит [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 121 => ['name' => 'Метеорит [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 122 => ['name' => 'Метеорит [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 123 => ['name' => 'Метеорит [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 124 => ['name' => 'Метеорит [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 125 => ['name' => 'Метеорит [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + + 249 => ['name' => 'Каменный Щит', 'act' => 2, 'type_of' => 4], + 248 => ['name' => 'Песчаный Щит', 'act' => 2, 'type_of' => 4], + 251 => ['name' => 'Заземление: Плюс', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 252 => ['name' => 'Заземление: Минус', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + + //Туманный образ + 273 => ['name' => 'Туманный Образ [10]', 'act' => 1, 'type_of' => 4], + 286 => ['name' => 'Туманный Образ [9]', 'act' => 1, 'type_of' => 4], + 287 => ['name' => 'Туманный Образ [8]', 'act' => 1, 'type_of' => 4], + 288 => ['name' => 'Туманный Образ [7]', 'act' => 1, 'type_of' => 4], + + 255 => ['name' => 'Воздушный Щит', 'act' => 2, 'type_of' => 8], + + ////Пещерные приемы + 337 => ['name' => 'Выпить Душу', 'act' => 2, 'type_of' => 5], + + //Пожирающее Пламя + 33 => ['name' => 'Пожирающее Пламя [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 56 => ['name' => 'Пожирающее Пламя [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 57 => ['name' => 'Пожирающее Пламя [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 58 => ['name' => 'Пожирающее Пламя [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 59 => ['name' => 'Пожирающее Пламя [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 60 => ['name' => 'Пожирающее Пламя [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + + //Огненный Щит + 245 => ['name' => 'Огненный Щит', 'act' => 2, 'type_of' => 9], + + ////Эффекты + 327 => ['name' => 'Живая Вода', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 328 => ['name' => 'Сушеный Мухомор', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 329 => ['name' => 'Мешочек Пыли', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 330 => ['name' => 'Отвар когтей ПГ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 331 => ['name' => 'Отвар Василиска', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 332 => ['name' => 'Точильный Камень', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 333 => ['name' => 'Волшебный Эликсир', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 334 => ['name' => 'Цепь Защитника', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 335 => ['name' => 'Эликсир Безумного Критовика', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3,], + + //1 сентября, квест + 299 => ['name' => 'Ядовитые язвы', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 300 => ['name' => 'Элементарный заряд', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 301 => ['name' => 'Темное ранение', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 302 => ['name' => 'Подлечиться', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 303 => ['name' => 'Шкура поглощения', 'act' => 2, 'type_of' => 4], + 304 => ['name' => 'Особенное проклятье!', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 305 => ['name' => 'Кровожадность', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + ]; + + /** Сохраняем лог в архив + * @return void + */ + private function saveLogs() + { + mysql_query('INSERT INTO `battle_logs_save` SELECT `id`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type` FROM `battle_logs` WHERE `battle` = ' . $this->info['id'] . ' AND `id_hod` <= ' . $this->hodID); + mysql_query('DELETE FROM `battle_logs` WHERE `battle` = ' . $this->info['id'] . 'all'); + mysql_query('DELETE FROM `battle_stat` WHERE `battle` < ' . ($this->info['id'] - 100)); + mysql_query('DELETE FROM `battle_actions` WHERE `btl` = ' . $this->info['id']); + } + + /** Кандидат на перенос в Priems + * @param $uid + * @param $hp + * @param $false_t7 + * @return false|float + */ + public function hphe($uid, $hp, $false_t7 = false) + { + if (!isset($this->stats[$this->uids[$uid]])) { + echo 'WARNING! ОШИБКА! ПОТЕРЯНА ПЕРЕМЕННАЯ ЗДОРОВЬЯ ПЕРСОНАЖА!'; + } else { + $hpnow = floor($this->stats[$this->uids[$uid]]['hpNow']); + $hpall = $this->stats[$this->uids[$uid]]['hpAll']; + if ($hp > 0) { + //Хиляем + if ($hpnow + $hp > $hpall) { + $hpli = $hpnow + $hp - $hpall; + $hp -= $hpli; + } + if (isset($this->stats[$this->uids[$uid]]['min_heal_proc']) && $this->stats[$this->uids[$uid]]['min_heal_proc'] < -99) { + $hp = 0; + } else { + $hp = $hp / 100 * (100 + $this->stats[$this->uids[$uid]]['min_heal_proc']); + } + //Отнимаем тактику + if (!$false_t7) { + if ($this->users[$this->uids[$uid]]['tactic7'] <= 0) { + $hp = 0; + $this->users[$this->uids[$uid]]['tactic7'] = 0; + $this->stats[$this->uids[$uid]]['tactic7'] = $this->users[$this->uids[$uid]]['tactic7']; + } else { + $gdhh = round($hp / $this->stats[$this->uids[$uid]]['hpAll'] * 10, 2); + if ($gdhh == 0) { + $gdhh = 0.01; + } + + $gdhd = round($this->users[$this->uids[$uid]]['tactic7'] / $gdhh * 100); + + $this->users[$this->uids[$uid]]['tactic7'] = round(($this->users[$this->uids[$uid]]['tactic7'] - $gdhh), + 2); + if ($this->users[$this->uids[$uid]]['tactic7'] < 0) { + $this->users[$this->uids[$uid]]['tactic7'] = 0; + } + $this->stats[$this->uids[$uid]]['tactic7'] = $this->users[$this->uids[$uid]]['tactic7']; + if ($gdhd < 100) { + $hp = floor($hp / 100 * $gdhd); + } + } + } + } elseif ($hp < 0) { + //Отнимаемф + if ($hpnow + $hp < 0) { + $hpli = $hpnow + $hp; + $hp += -($hpli); + } + } + + if ($this->stats[$this->uids[$uid]]['hpNow'] < 1) { + $hp = 0; + } + + $this->stats[$this->uids[$uid]]['last_hp'] = -$hp; + mysql_query('UPDATE `stats` SET + `last_hp` = ' . $this->users[$this->uids[$uid]]['last_hp'] . ', + `tactic7` = ' . $this->users[$this->uids[$uid]]['tactic7'] . ' + WHERE `id` = ' . $uid); + } + + return floor($hp); + } + + public function deleffm($pid, $uid, $id) + { + if ($id > 0) { + if (!mysql_query('DELETE FROM `eff_users` WHERE `id` = ' . $id . ' AND `v1` = "priem" AND `v2` != 0')) { + echo '[*Ошибка удаления прием[' . $id . ',' . $pid . ',' . $uid . ']]'; + } + } else { + mysql_query('DELETE FROM `eff_users` WHERE `uid` = ' . $uid . ' AND `v1` = "priem" AND `v2` = ' . $pid); + } + } + + /** возможность использовать удар + * @var int + */ + private $na = 1; + + /** % опыта в бою + * @var int + */ + private $expCoef = 0; + + /** Добавочный опыт в боях + * @var int + */ + private $aBexp = 0; + + /** Список uid кто нанес удар и по кому + * $ga[ {id кого ударили} ][ {id кто ударил} ] + * @var array + */ + private $ag = []; + + /** ID ботов + * @var array + */ + private $bots = []; + + /** i бота ??? + * @var array + */ + private $iBots = []; + + private $stnZbVs = 0; + private $stnZb = []; + + /** Если игрок нанес удар (?) [константа?] + * @var array + */ + private $uAtc = [ + 'id' => 0, + 'a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0], + 'b' => 0, + ]; + + /** Чем лупили + * @var string[][] + */ + private $lg_itm = [ + 0 => ['грудью', 'ребром руки', 'лбом', 'кулаком', 'ногой', 'левой ногой', 'правой ногой', 'коленом'], + 1 => ['ножом', 'тыльной стороной лезвия ножа', 'рукоятью ножа', 'лезвием ножа'], + 2 => ['сучковатой палкой', 'поленом', 'тяжелой дубиной', 'дубиной', 'рукоятью молота'], + 3 => ['секирой', 'топором', 'лезвием секиры', 'алебардой', 'тяжелым держаком', 'длинной секирой'], + 4 => ['ножнами', 'гардой', 'мечом', 'лезвием меча', 'рукоятью меча', 'тупым лезвием', 'острой стороной меча', 'огромным мечом',], + 5 => ['сучковатой палкой', 'посохом', 'тяжелой тростью', 'корявым посохом', 'основанием посоха'], + 22 => ['костылем'], + ]; + + /** Куда лупили + * @var string[][] + */ + private $lg_zon = [ + 1 => ['в нос', 'в глаз', 'в челюсть', 'по переносице', 'в кадык', 'по затылку', 'в правый глаз', 'в левый глаз', 'в скулу',], + 2 => ['в грудь', 'в корпус', 'в солнечное сплетение', 'в сердце', 'в область лопаток'], + 3 => ['в бок', 'по желудку', 'по левой руке', 'по правой руке'], + 4 => ['по <вырезано цензурой>', 'в пах', 'в промежность', 'по левой ягодице', 'по правой ягодице'], + 5 => ['по ногам', 'в область правой пятки', 'в область левой пятки', 'по коленной чашечке', 'по икрам'], + ]; + + /** Ошибка (текст) + * @var + */ + public $e; + + /**Кэширование данных + * @var bool + */ + public $cached = false; + + /** Отображаем главное окно: + *
1 - можно бить, + *
2 - ожидаем ход противника, + *
3 - Проиграли. Ожидаем завершения поединка + * @var int + */ + public $mainStatus = 1; + + /** Информация о поединке + * @var array + */ + public $info = []; + + /** Информация о пользователях в этом бою + * @var array + */ + public $users = []; + + /** Информация о статах пользователей в этом бою + * @var array + */ + public $stats = []; + + /** Список пользователей и их id в stats или users. + *
Пример id пользователя = 555 , то $uids[555] выдаст его порядковый номер в массиве users \ stats + * @var array + */ + public $uids = []; + + /** Список ударов в этом бою (действующих) + * @var array + */ + public $atacks = []; + + /** Список uid кто нанес удар и по кому + *
$ga[ {id кто ударил} ][ {id кого ударил} ] + * @var array + */ + public $ga = []; + public $hodID = 0; + + public $is = []; + public $items = []; + + private $uclearc = []; + private $ucleari = []; + private $user = []; + /** + * @param $uid + * @return void + */ + private function clear_cache($uid) + { + if ($uid > 0 && !isset($this->uclearc[$uid])) { + $this->uclearc[$uid] = true; + $this->ucleari[] = $uid; + } + } + + /** + * @return void + */ + public function clear_cache_start() + { + $q = 'delete from battle_cache where uid in (' . implode(', ', $this->ucleari) . ')'; + mysql_query($q); + } + + // + + /** Проверка урон приемов над защитными. Перенести в Priems. + *
Логика работы ускользает от понимания. + * @param $pid + * @param $u1 + * @param $u2 + * @param $hp + * @return mixed + */ + public function testYronPriemAttack($pid, $u1, $u2, $hp) + { + //Игрок 1 бьет по Игроку 2 при помощи приема № pid на hp ед. здоровья + /* Полная защита */ + //Получаем приемы и смотрим когда какой действует + + foreach ($this->stats[$this->uids[$u2]]['effects'] as $effect) { + if ( + isset($effect) && + $effect['id_eff'] == 22 && + $effect['v1'] == 'priem' && + in_array($effect['v2'], [45, 140, 211]) + ) { + //Приемы от которых урон = 1 , то есть выдаем 0 + $hp['y'] = -1; + $hp['r'] = 1; + $hp['k'] = 2; + $hp['m_y'] = 1; + $hp['m_k'] = 2; + } + } + return $hp; + } + + /** Расчет опыта + * @param $y + * @param $s1 + * @param $s2 + * @param $id1 + * @param $id2 + * @return float|int + */ + private function testExp($y, $s1, $s2, $id1, $id2) + { + global $c; + //ТУТ таблица умножения оыта + $oplevel = [ // Максимум для каждого уровня. + 0 => 1, + 1 => 1, + 2 => 1, + 3 => 1, + 4 => 2, + 5 => 2, + 6 => 2, + 7 => 2, + 8 => 3, + 9 => 4, + 10 => 5, + 11 => 6, + 12 => 7, + 13 => 50, + 14 => 75, + ]; + + if ($y < 0) { + $y = 0; + } + if ($s2['hpNow'] < 0) { + $y = 0; + } + if ($s2['hpNow'] < $y) { + $y = $s2['hpNow']; + } + if ($y < 0) { + $y = 0; + } + $addExp = (int)($y * $oplevel[$this->users[$this->uids[$s2['id']]]['level']]); + if ($s2['hpAll'] - $y <= 0) { + $addExp = 100; + } + + if ($addExp < 0) { + $addExp = 0; + } + if ($s2['levels'] != 'undefined' && $this->users[$this->uids[$s2['id']]]['pass'] != 'saintlucia') { + if ($this->info['razdel'] != 5 && $c['exp_limit_many']) { + $texp = mysql_fetch_array(mysql_query('SELECT COUNT(`a`.`id`) FROM `battle_users` AS `a` WHERE `a`.`uid` = ' . $id1 . ' AND `a`.`battle` IN ( SELECT `b`.`battle` FROM `battle_users` AS `b` WHERE `b`.`uid` = ' . $id2 . ' AND `b`.`team` != `a`.`team` AND `b`.`time` > ' . (time() - 86400) . ' ) LIMIT 1')); + $texp = $texp[0]; + // + if ($texp > 5) { + $addExp = $addExp * 0.00; + } elseif ($texp > 4) { + $addExp = $addExp * 0.50; + } elseif ($texp > 3) { + $addExp = $addExp * 0.75; + } elseif ($texp > 2) { + $addExp = $addExp * 1.00; + } elseif ($texp > 1) { + $addExp = $addExp * 1.00; + } else { + $addExp = $addExp * 1.00; + } + } + } else { + $addExp = 0; + } + + return $addExp; + } + + /** Добавляем опыт \ нанесенный урон + * @param $id + * @param $y + * @param $id1 + * @param $id2 + * @param $mgregen + * @return void + */ + public function takeExp($id, $y, $id1, $id2, $mgregen = false) + { + global $u; + if (isset($this->users[$this->uids[$id]])) { + $s1 = $this->stats[$this->uids[$id1]]; + $s2 = $this->stats[$this->uids[$id2]]; + if ($id1 != $id2) { + $e = $this->testExp($y, $s1, $s2, $id1, $id2); + } else { + $e = 0; + } + + if ( + (int)$this->users[$this->uids[$id1]]['bot_id'] == 0 && + $this->users[$this->uids[$id1]]['dnow'] != 0 && + $this->info['dungeon'] != 1 + ) { + $dun_limitForLevel = [ // Максимум для каждого уровня. + 4 => 750, + 5 => 1500, + 6 => 3500, + 7 => 8000, + 8 => 25000, + 9 => 50000, + 10 => 75000, + 11 => 125000, + 12 => 250000, + 13 => 500000, + 14 => 750000, + ]; + $dun_expFactor = [ // Максимум для каждого уровня. + 4 => 5, + 5 => 5, + 6 => 5, + 7 => 5, + 8 => 5, + 9 => 3, + 10 => 1, + 11 => 1, + 12 => 1, + 13 => 1, + 14 => 1, + ]; + + if (isset($dun_expFactor[(int)$this->users[$this->uids[$id1]]['level']])) { + $e = $e * $dun_expFactor[(int)$this->users[$this->uids[$id1]]['level']]; + } + if ($this->info['dungeon'] > 1 && $this->users[$this->uids[$id1]]['battle'] > 0) { // пещерный лимит + $dun_exp = []; // Текущий лимит опыта игрока в подземельях. + $rep = mysql_fetch_array(mysql_query('SELECT `dungeonexp`,`id` FROM `rep` WHERE `id` = ' . $this->users[$this->uids[$id1]]['id'])); + $rep = explode(',', $rep['dungeonexp']); + foreach ($rep as $key => $val) { + $val = explode('=', $val); + if (isset($val[0]) && isset($val[1]) && $val[0] != '' && $val[1] != 0) { + $dun_exp[(int)$val[0]] = (int)$val[1]; + } // текущий лимит опыта в подземке + } + unset($rep); + + if (!isset($dun_exp[$this->info['dungeon']])) { + $dun_exp[$this->info['dungeon']] = 0; + } + if (!isset($dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']])) { // Если лимит не задан, опыт не даем. + $e = 0; + } elseif ( + isset($dun_exp[$this->info['dungeon']]) && + $dun_exp[$this->info['dungeon']] >= $dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] + ) { // Если лимит уже достигнут, опыт не даем. + $e = 0; + } elseif ( + isset($dun_exp[$this->info['dungeon']]) && + $dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] > $dun_exp[$this->info['dungeon']] + ) { // Если текущая репутация не достигла лимита. + if (($dun_exp[$this->info['dungeon']] + $e) > $dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']]) { + // Если опыта набрано достаточно, для достижения лимита. + $e = abs($e - abs($dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] - ($e + $dun_exp[$this->info['dungeon']]))); + $dun_exp[$this->info['dungeon']] += $e; + } elseif ($dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] > ($dun_exp[$this->info['dungeon']] + $e)) { + // Если опыта недостаточно, для достижения лимита. + $dun_exp[$this->info['dungeon']] += $e; + } else { + $e = 0; + } + } else { // В любой непонятной ситуцаии. + $e = 0; + } + } else // Опыт в пещерах. + { + if ($this->info['dungeon'] == 102) { + $e = floor($e * 0.002); + } + } + } + + $this->users[$this->uids[$id1]]['battle_exp'] += floor($e); + // + if (!$mgregen) { + $this->users[$this->uids[$id1]]['battle_yron'] += floor($y); + if ($this->stats[$this->uids[$id1]]['notactic'] != 1) { + if ($s2['hpAll'] <= 1000) { + if ($this->stats[$this->uids[$id2]]['this_animal'] == 0) { + $this->users[$this->uids[$id1]]['tactic6'] += round(0.1 * (floor($y) / $s2['hpAll'] * 100), + 10); + } else { + $this->users[$this->uids[$id1]]['tactic6'] += round(0.1 * (floor($y) / $s2['hpAll'] * 100), + 10) / 3; + } + } else { + if ($this->stats[$this->uids[$id2]]['this_animal'] == 0) { + $this->users[$this->uids[$id1]]['tactic6'] += round(0.1 * (floor($y) / 1000 * 100), 10); + } else { + $this->users[$this->uids[$id1]]['tactic6'] += round(0.1 * (floor($y) / 1000 * 100), 10) / 3; + } + } + } + } + + $upd = mysql_query('UPDATE `stats` SET `last_hp` = ' . $this->users[$this->uids[$id1]]['last_hp'] . ',`tactic6` = ' . $this->users[$this->uids[$id1]]['tactic6'] . ',`battle_yron` = ' . $this->users[$this->uids[$id1]]['battle_yron'] . ',`battle_exp` = ' . $this->users[$this->uids[$id1]]['battle_exp'] . ' WHERE `id` = ' . (int)$id1); + if (!$upd) { + echo '[не удача при использовании приема]'; + } else { + $this->stats[$this->uids[$id1]]['battle_exp'] = $this->users[$this->uids[$id1]]['battle_exp']; + $this->clear_cache($id1); + $this->stats[$this->uids[$id1]]['tactic6'] = $this->users[$this->uids[$id1]]['tactic6']; + if ($id1 == $u->info['id']) { + $u->info['tactic6'] = $this->users[$this->uids[$id1]]['tactic6']; + $u->stats['tactic6'] = $this->users[$this->uids[$id1]]['tactic6']; + $u->info['battle_exp'] = $this->users[$this->uids[$id1]]['battle_exp']; + $u->info['battle_yron'] = $this->users[$this->uids[$id1]]['battle_yron']; + $u->info['notactic'] = $this->users[$this->uids[$id1]]['notactic']; + $u->stats['notactic'] = $this->users[$this->uids[$id1]]['notactic']; + } + } + unset($s1, $s2); + } + } + + /** Добавляем нанесенный урон. + * @param $uid + * @param $y + * @return void + * @todo Перенести в класс Priems. + */ + public function takeYronNow($uid, $y) + { + global $u; + $this->users[$this->uids[$uid]]['battle_yron'] += floor($y); + $this->stats[$this->uids[$uid]]['battle_yron'] += floor($y); + if ($uid == $u->info['id']) { + $u->info['battle_yron'] += floor($y); + $u->stats['battle_yron'] += floor($y); + } + mysql_query('UPDATE `stats` SET `battle_yron` = `battle_yron` + ' . mysql_real_escape_string(floor($y)) . ' WHERE `id` = ' . (int)$uid); + } + + /** JS информация о игроке. Действительно, что ещё хранить в _battles.. + * @param $id + * @param $t + * @return false|string + */ + public function myInfo($id, $t) + { + global $u; + if (isset($this->users[$this->uids[$id]]) || $u->info['id'] == $id) { + if ($u->info['id'] == $id || ($u->info['enemy'] == $id && $id > 0)) { + //Всегда обновляем + $this->users[$this->uids[$id]] = mysql_fetch_array(mysql_query('SELECT + + `u`.`zag`,`u`.`id`,`u`.`login`,`u`.`login2`,`u`.`online`,`u`.`admin`,`u`.`city`,`u`.`cityreg`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`, + `u`.`level`,`u`.`money`,`u`.`money3`,`u`.`money2`,`u`.`money4`,`u`.`battle`,`u`.`sex`,`u`.`obraz`,`u`.`win`,`u`.`win_t`, + `u`.`lose`,`u`.`lose_t`,`u`.`nich`,`u`.`timeMain`,`u`.`invis`,`u`.`bot_id`,`u`.`animal`,`u`.`type_pers`, + `u`.`notrhod`,`u`.`bot_room`,`u`.`inUser`,`u`.`inTurnir`,`u`.`inTurnirnew`,`u`.`activ`,`u`.`stopexp`,`u`.`real`, + + `st`.* + + FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id` = "' . $id . '" LIMIT 1')); + $this->stats[$this->uids[$id]] = $u->getStats($this->users[$this->uids[$id]], 0, 0, false, false, true); + } + + $ur = $this->users[$this->uids[$id]]; + $st = $this->stats[$this->uids[$id]]; + $itm = $this->stats[$this->uids[$id]]['items']; + $eff = $this->stats[$this->uids[$id]]['effects']; + $ef = ''; + $i = 0; + if ($u->info['seff'] < 1) { + $ef .= '
Свернуть\',event,3,1,1,1,\'\');\" onmouseout=\"top.hic();\" onmousedown=\"top.hic();\">
'; + + while ($i != -1) { + $nseef = 0; + if ($this->users[$this->uids[$ur['id']]]['id'] != $u->info['id'] && $ur['id'] != 0) { + if ($this->stats[$this->uids[$ur['id']]]['seeAllEff'] != 1) { + $nseef = 1; + if ($eff[$i]['v1'] == 'priem') { + $eff[$i]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')); + } + if (isset($eff[$i]['priem']['id']) && $eff[$i]['priem']['neg'] == 1) { + $nseef = 0; + } + } + } + + if (isset($eff[$i]) && $eff[$i] != 'delete') { + if ($nseef == 0) { + $ei = '' . $eff[$i]['name'] . ''; + if ($eff[$i]['x'] > 1) { + $ei .= ' x' . $eff[$i]['x'] . ' '; + } + if ($eff[$i]['type1'] > 0 && $eff[$i]['type1'] < 7) { + $ei .= ' (Эликсир)'; + } elseif (($eff[$i]['type1'] > 6 && $eff[$i]['type1'] < 11) || $eff[$i]['type1'] == 16) { + $ei .= ' (Заклятие)'; + } elseif ($eff[$i]['type1'] == 14) { + $ei .= ' (Прием)'; + } elseif ($eff[$i]['type1'] == 15) { + $ei .= ' (Изучение)'; + } elseif ($eff[$i]['type1'] == 17) { + $ei .= ' (Проклятие)'; + } elseif ($eff[$i]['type1'] == 18 || $eff[$i]['type1'] == 19) { + $ei .= ' (Травма)'; + } elseif ($eff[$i]['type1'] == 20) { + $ei .= ' (Пристрастие)'; + } elseif ($eff[$i]['type1'] == 22) { + $ei .= ' (Ожидание)'; + } else { + $ei .= ' (Эффект)'; + } + $ei .= '
'; + + $out = ''; + $time_still = ($eff[$i]['timeUse'] + ($eff[$i]['timeAce'] - $eff[$i]['timeUse']) + $eff[$i]['actionTime']); + if ($eff[$i]['timeAce'] == 0) { + $time_still += $eff[$i]['timeUse']; + } + $time_still -= time(); + if ($eff[$i]['bp'] == 0 && $eff[$i]['timeUse'] != 77) { + if ($eff[$i]['type1'] != 13) { + $ei .= 'Осталось: ' . $u->timeOut($time_still); + } + } else { + if ($eff[$i]['timeUse'] != 77 && $eff[$i]['hod'] < 1) { + $ei .= 'Осталось: ' . $u->timeOut($time_still); + } elseif ($eff[$i]['hod'] >= 0) { + $ei .= 'Зарядов: ' . $eff[$i]['hod']; + } + } + + if ($eff[$i]['user_use'] != '') { + if ($this->users[$this->uids[$eff[$i]['user_use']]]['login2'] != '') { + $ei .= '
Автор: ' . $this->users[$this->uids[$eff[$i]['user_use']]]['login2'] . ''; + } elseif ($this->users[$this->uids[$eff[$i]['user_use']]]['login'] != '') { + $ei .= '
Автор: ' . $this->users[$this->uids[$eff[$i]['user_use']]]['login'] . ''; + } + } + + //Действие эффекта + $tr = ''; + $ti = $u->items['add']; + $x = 0; + $ed = $this->lookStats($eff[$i]['data']); + while ($x < count($ti)) { + $n = $ti[$x]; + if (isset($ed['add_' . $n], $u->is[$n]) && $n != 'pog') { + $z = ''; + if ($ed['add_' . $n] > 0) { + $z = '+'; + } + $tr .= '
' . $u->is[$n] . ': ' . $z . $ed['add_' . $n]; + } + $x++; + } + + if ($ed['add_mib1'] != 0) { + if ($ed['add_mab1'] != 0) { + $tr .= '
Броня головы: ' . $ed['add_mib1'] . '-' . $ed['add_mab1']; + } else { + $m1l = $ed['add_mib1']; + if ($m1l > 0) { + $m1l = '+' . $m1l; + } + $tr .= '
Броня головы: ' . $m1l; + } + } + if ($ed['add_mib2'] != 0) { + if ($ed['add_mab2'] != 0) { + $tr .= '
Броня корпуса: ' . $ed['add_mib2'] . '-' . $ed['add_mab2']; + } else { + $m1l = $ed['add_mib2']; + if ($m1l > 0) { + $m1l = '+' . $m1l; + } + $tr .= '
Броня корпуса: ' . $m1l; + } + } + if ($ed['add_mib3'] != 0) { + if ($ed['add_mab3'] != 0) { + $tr .= '
Броня пояса: ' . $ed['add_mib3'] . '-' . $ed['add_mab3']; + } else { + $m1l = $ed['add_mib3']; + if ($m1l > 0) { + $m1l = '+' . $m1l; + } + $tr .= '
Броня пояса: ' . $m1l; + } + } + if ($ed['add_mib4'] != 0) { + if ($ed['add_mab4'] != 0) { + $tr .= '
Броня ног: ' . $ed['add_mib4'] . '-' . $ed['add_mab4']; + } else { + $m1l = $ed['add_mib4']; + if ($m1l > 0) { + $m1l = '+' . $m1l; + } + $tr .= '
Броня ног: ' . $m1l; + } + } + + $efix = 0; + if (isset($ed['add_pog2']) && $ed['add_pog2'] > 0) { + $efix = $ed['add_pog2']; + } + if (isset($ed['add_pog'])) { + $tr .= '
Магический барьер способен поглотить еще ' . $ed['add_pog'] . ' ед. урона'; + } + if (isset($ed['add_pog2'])) { + $tr .= '
Магический барьер способен поглотить еще ' . $ed['add_pog2'] . ' ед. урона (' . $ed['add_pog2p'] . '%)'; + } + + if ($tr != '') { + $ei .= $tr; + } + if ($eff[$i]['info'] != '') { + $ei .= '
Информация:
' . $eff[$i]['info']; + } + + $ef .= '
'; + unset($efix); + } + } elseif ($eff[$i] != 'delete') { + $i = -2; + } + $i++; + } + } else { + $ef .= '
Развернуть\',event,3,1,1,1,\'\');\" onmouseout=\"top.hic();\" onmousedown=\"top.hic();\">
'; + } + + $ca = ''; + if ($ur['clan'] > 0) { + $cl = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = ' . $ur['clan'])); + if (isset($cl['id'])) { + $ca = ''; + } + } + if ($ur['align'] > 0) { + $ca = '' . $ca; + } + if ($ur['login2'] == '') { + $ur['login2'] = $ur['login']; + } + if (floor($st['hpNow']) > $st['hpAll']) { + $st['hpNow'] = $st['hpAll']; + } + if (floor($st['mpNow']) > $st['mpAll']) { + $st['mpNow'] = $st['mpAll']; + } + $stsua = '' . $ur['login2'] . ''; + $stsua .= '
Сила: ' . $st['s1']; + $stsua .= '
Ловкость: ' . $st['s2']; + $stsua .= '
Интуиция: ' . $st['s3']; + $stsua .= '
Выносливость: ' . $st['s4']; + if ($st['s5'] != 0) { + $stsua .= '
Интелект: ' . $st['s5']; + } + if ($st['s6'] != 0) { + $stsua .= '
Мудрость: ' . $st['s6']; + } + if ($st['s7'] != 0) { + $stsua .= '
Духовность: ' . $st['s7']; + } + if ($u->info['admin'] > 0) { + $align = $ur['align']; + } + $tp_img = [ + 1 => 4, + 2 => 5, + 14 => 6, + 3 => 7, + 5 => 8, + 7 => 9, + 17 => 10, + 16 => 11, + 13 => 12, + 10 => 13, + 9 => 14, + 8 => 15, + 11 => 17, //кольцо 2 + 12 => 18 //кольцо 3 + ]; + $info = 'info_reflesh(' . $t . ',' . $ur['id'] . ',"' . $ca . '' . $ur['login2'] . ' [' . $ur['level'] . '] ","' . $ur['obraz'] . '",' . floor($st['hpNow']) . ',' . floor($st['hpAll']) . ',' . floor($st['mpNow']) . ',' . floor($st['mpAll']) . ',0,' . $ur['sex'] . ',"' . $ef . '","' . $stsua . '", "' . $align . '", "' . $ur['zag'] . '");shpb();'; + $i = 0; + while ($i < count($itm)) { + // + if (isset($st['items_img'][$tp_img[$itm[$i]['inOdet']]])) { + $itm[$i]['img'] = $st['items_img'][$tp_img[$itm[$i]['inOdet']]]; + } + //генерируем предметы + $ttl = '' . $itm[$i]['name'] . ''; + $td = $this->lookStats($itm[$i]['data']); + $lvar = ''; + if ($td['add_hpAll'] > 0) { + $td['add_hpAll'] = '+' . $td['add_hpAll']; + $lvar .= '
Уровень жизни: ' . $td['add_hpAll']; + } + if ($td['sv_yron_max'] > 0 || $td['sv_yron_min'] > 0) { + $lvar .= '
Урон: ' . (0 + $td['sv_yron_min']) . '-' . (0 + $td['sv_yron_max']); + } + if ($td['add_mab1'] > 0) { + if ($td['add_mib1'] == $td['add_mab1'] && $pl['geniration'] == 1) { + $m1l = '+'; + $lvar .= '
Броня головы: ' . $m1l . (0 + $td['add_mab1']); + } else { + $lvar .= '
Броня головы: ' . (0 + $td['add_mib1']) . '-' . (0 + $td['add_mab1']); + } + } + if ($td['add_mab2'] > 0) { + if ($td['add_mib2'] == $td['add_mab2'] && $pl['geniration'] == 1) { + $m1l = '+'; + $lvar .= '
Броня корпуса: ' . $m1l . (0 + $td['add_mab2']); + } else { + $lvar .= '
Броня корпуса: ' . (0 + $td['add_mib2']) . '-' . (0 + $td['add_mab2']); + } + } + if ($td['add_mab3'] > 0) { + if ($td['add_mib3'] == $td['add_mab3'] && $pl['geniration'] == 1) { + $m1l = '+'; + $lvar .= '
Броня пояса: ' . $m1l . (0 + $td['add_mab3']); + } else { + $lvar .= '
Броня пояса: ' . (0 + $td['add_mib3']) . '-' . (0 + $td['add_mab3']); + } + } + if ($td['add_mab4'] > 0) { + if ($td['add_mib4'] == $td['add_mab4'] && $pl['geniration'] == 1) { + $m1l = '+'; + $lvar .= '
Броня ног: ' . $m1l . (0 + $td['add_mab4']); + } else { + $lvar .= '
Броня ног: ' . (0 + $td['add_mib4']) . '-' . (0 + $td['add_mab4']); + } + } + if ($itm[$i]['iznosMAX'] > 0) { + if ($itm[$i]['iznosMAXi'] == 999999999) { + $lvar .= '
Долговечность: неразрушимо'; + } else { + $lvar .= '
Долговечность: ' . floor($itm[$i]['iznosNOW']) . '/' . floor($itm[$i]['iznosMAX']); + } + } + $ttl .= $lvar; + $ccv = ''; + + if ($itm[$i]['magic_inci'] != '' || $itm[$i]['magic_inc'] != '') { + if ($itm[$i]['magic_inc'] == '') { + $itm[$i]['magic_inc'] = $itm[$i]['magic_inci']; + } + $temp01 = mysql_query('SELECT * FROM `eff_main` WHERE `id2` = ' . $itm[$i]['magic_inc'] . ' AND `type1` = 12345 LIMIT 1'); + if ($temp01) { + $mgi = mysql_fetch_array($temp01); + if (isset($mgi['id2'])) { + $ccv .= 'top.useMagicBattle(\'' . $mgi['mname'] . '\',' . $itm[$i]['id'] . ',\'' . $mgi['img'] . '\',1,2);'; + } + } + } + + $info .= 'abitms(' . (0 + $t) . ',' . (0 + $itm[$i]['uid']) . ',' . (0 + $itm[$i]['id']) . ',' . (0 + $itm[$i]['inOdet']) . ',"' . $itm[$i]['name'] . '","' . $ttl . '","' . $itm[$i]['img'] . '","' . $ccv . '");'; + $i++; + } + + return $info; + } else { + return false; + } + } + + //Проверка на выживших + public function testUsersLive() + { + $tl = 0; + for ($i = 0; $i < count($this->uids); $i++) { + if ($this->stats[$i]['id'] <= 0) { + continue; + } + if (isset($tml[$this->users[$i]['team']]) || floor($this->stats[$i]['hpNow']) < 1) { + continue; + } + $tml[$this->users[$i]['team']] = 1; + $tl++; + if ($tl > 1) { + break; + } + } + return $tl > 1; + } + + //Мини лог + private function miniLogAdd(array $user, $text) + { + $time = time(); + $vLog = 'at1=00000||at2=00000||zb1=0||zb2=0||bl1=0||bl2=0||time1=' . $time . + '||time2=' . $time . + '||s1=' . $user['sex'] . + '||t1=' . $user['team'] . + '||login1=' . $user['login'] . + '||'; + $mas1 = [ + 'time' => $time, + 'battle' => $this->info['id'], + 'id_hod' => ($this->hodID + 1), + 'text' => $text, + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + + $this->add_log($mas1); + } + + /** Проверяем завершение боя. + *
[Оптимизируй меня]: много повторяющихся элементов. + * @return void + */ + public function testFinish() + { + global $u; + // + mysql_query('START TRANSACTION;'); + // + $test = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `team_win` = -1 LIMIT 1 FOR UPDATE')); + // + mysql_query('COMMIT;'); + // + if ($this->info['team_win'] == -1 && isset($test['id'])) { + $hp = []; + $tml = []; + $tmv = []; + $tl = 0; + $i = 0; + $j = 0; + while ($i < count($this->uids)) { + if ($this->stats[$i]['id'] > 0) { + if (floor($this->stats[$i]['hpNow']) < 1) { + $this->stats[$i]['hpNow'] = 0; + } + $hp[$this->users[$i]['team']] += floor($this->stats[$i]['hpNow']); + if (!isset($tml[$this->users[$i]['team']]) && floor($this->stats[$i]['hpNow']) >= 1) { + $tml[$this->users[$i]['team']] = 1; + $tmv[$j] = $this->users[$i]['team']; + $tl++; + } + } + $i++; + } + + if ($tl <= 1) { + //Доп.проверка + $tmHpNow = []; + $tmNow = []; + $sp = mysql_query('SELECT `u`.`login`,`u`.`id`,`u`.`battle`,`s`.`team`,`s`.`hpNow` FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `u`.`battle` = "' . $this->info['id'] . '"'); + while ($pl = mysql_fetch_array($sp)) { + if (!isset($tmHpNow[$pl['team']])) { + $tmHpNow[$pl['team']] = 0; + $tmNow[] = $pl['team']; + } + $hpTm = floor($pl['hpNow']); + if ($hpTm < 0) { + $hpTm = 0; + } + if ($hpTm > 0) { + $tmHpNow[$pl['team']] += $pl['hpNow']; + } + } + $gdj = 0; + $i = 0; + while ($i < count($tmNow)) { + if (isset($tmNow[$i])) { + $j = $tmNow[$i]; + if ($tmHpNow[$j] > 0) { + $gdj++; + } + } + $i++; + } + if ($gdj > 1) { + $tl = $gdj; + echo 'Поединок может завершиться не корректно... (Сообщите Администрации об этом)'; + } + } + + if ($tl <= 1) { + //завершаем поединок, кто-то один победил, либо ничья + + $i = 0; + $tmwin = 0; + while ($i < count($tmv)) { + if ($tmv[$i] >= 1 && $tml[$tmv[$i]] > 0) { + $tmwin = $tmv[$i]; + } + $i++; + } + + if ($this->info['izlom'] == 0) { + $rs = ''; + $ts = []; + $tsi = 0; + if ($this->info['id'] > 0) { + //данные о игроках в бою + unset($this->users, $this->stats, $this->uids, $this->bots, $this->iBots); + $trl = mysql_query('SELECT `u`.`no_ip`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`money3`,`u`.`money2`,`u`.`bot_id` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '" ORDER BY `st`.`bot` DESC'); + $ir = 0; + $bi = 0; + $this->users = null; + $this->stats = null; + $this->uids = null; + $this->bots = null; + $this->iBots = null; + while ($pl = mysql_fetch_array($trl)) { + //записываем данные + if ($pl['login2'] == '') { + $pl['login2'] = $pl['login']; + } + $this->users[$ir] = $pl; + $this->uids[$pl['id']] = $ir; + if ($pl['bot'] > 0) { + $this->bots[$bi] = $pl['id']; + $this->iBots[$pl['id']] = $bi; + $bi++; + } + //записываем статы + $this->stats[$ir] = $u->getStats($pl, 0, 0, false, false, true); + $ir++; + } + } + } elseif (!isset($this->uids[$u->info['id']])) { + $rs = ''; + $ts = []; + $tsi = 0; + if ($this->info['id'] > 0) { + //данные о игроках в бою + $trl = mysql_query('SELECT `u`.`no_ip`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id` = "' . $this->info['id'] . '" LIMIT 1'); + $pl = mysql_fetch_array($trl); + //записываем данные + if ($pl['login2'] == '') { + $pl['login2'] = $pl['login']; + } + $this->users[] = $pl; + $this->uids[$pl['id']] = $ir; + if ($pl['bot'] > 0) { + $this->bots[] = $pl['id']; + $this->iBots[$pl['id']] = $bi; + } + //записываем статы + $this->stats[] = $u->getStats($pl, 0, 0, false, false, true); + } + } + + + if ($this->info['izlom'] > 0 && $tmwin == 1) { + // выкидываем ботов из боя + $i = 0; + $dlt = ''; + $dlt2 = ''; + $sp = mysql_query('SELECT `users`.`id`,`stats`.`bot`,`stats`.`team` FROM `users`,`stats` WHERE `users`.`battle` = "' . $this->info['id'] . '" AND `stats`.`id` = `users`.`id` LIMIT 250'); + while ($pl = mysql_fetch_array($sp)) { + if ($pl['bot'] == 1 && $pl['team'] != $u->info['team']) { + $dlt .= ' `id`="' . $pl['id'] . '" OR'; + $dlt2 .= ' `uid`="' . $pl['id'] . '" OR'; + $i++; + } + } + + if ($i > 0) { + $dlt = trim($dlt, 'OR'); + $dlt2 = trim($dlt2, 'OR'); + mysql_query('DELETE FROM `users` WHERE ' . $dlt . ' LIMIT ' . $i); + mysql_query('DELETE FROM `stats` WHERE ' . $dlt . ' LIMIT ' . $i); + mysql_query('DELETE FROM `items_users` WHERE ' . $dlt2 . ' LIMIT ' . ($i * 100)); + mysql_query('DELETE FROM `eff_users` WHERE ' . $dlt2 . ' LIMIT ' . ($i * 100)); + } + + unset($i, $dlt, $dlt2); + + $j = 0; + $k = 0; + $obr = 0; + + //Это излом, добавляем еще ботов + if ($this->get_chanse(20)) { + //Уникальные монстры + if ($this->info['izlomLvl'] == 8) { + $bots = [ + 'Валентайский Охотник', + 'Шипокрыл Хаоса', + 'Шипокрыл', + 'Лик Хаоса', + 'Фанатик Хаоса', + ]; + //$bots = array( 'Валентайский Охотник' ); + } + $logins_bot = []; + // + echo '
Приближается нечто...
'; + // + $id2 = rand(0, (count($bots) - 1)); + $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); + $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, + round($this->info['izlomRoundSee'])); + if (isset($id['id']) && $bot) { + // + $btxt = ''; + if ($id['align'] > 0) { + $btxt = $btxt . ''; + } + if ($id['clan'] > 0) { + $btxt = $btxt . ''; + } + $btxt = $btxt . '{u1}[' . $id['level'] . ']'; + if ($id['sex'] == 1) { + $btxt = $btxt . ' вмешалась в поединок.'; + } else { + $btxt = $btxt . ' вмешался в поединок.'; + } + $this->miniLogAdd([ + 'login' => $id['login'], + 'sex' => $id['sex'], + 'team' => 0, + ], '{tm1} ' . $btxt); + // + $logins_bot = $bot['logins_bot']; + mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + $u->addAction(time(), 'win_bot_' . $id['id'], '', $this->users[$i]['id']); + if (rand(0, 10000) < 1500) { + $obr++; + } + $j++; + } + } else { + //Обычные монстры + if ($this->info['izlomLvl'] == 8) { + $bots = [ + 'Литейщик', + 'Проклятие Глубин', + 'Пустынник Маньяк', + 'Пустынник Убийца', + 'Рабочий Мглы', + 'Смотритель Мглы', + 'Сторож Мглы', + ]; + } + $logins_bot = []; + // + $id2 = rand(0, (count($bots) - 1)); + $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); + $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, + ($this->info['izlomRoundSee'] * 2)); + if (isset($id['id']) && $bot) { + // + $btxt = ''; + if ($id['align'] > 0) { + $btxt = $btxt . ''; + } + if ($id['clan'] > 0) { + $btxt = $btxt . ''; + } + $btxt = $btxt . '{u1}[' . $id['level'] . ']'; + if ($id['sex'] == 1) { + $btxt = $btxt . ' вмешалась в поединок.'; + } else { + $btxt = $btxt . ' вмешался в поединок.'; + } + $this->miniLogAdd([ + 'login' => $id['login'], + 'sex' => $id['sex'], + 'team' => 0, + ], '{tm1} ' . $btxt); + // + $logins_bot = $bot['logins_bot']; + mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + if (rand(0, 10000) < 1500) { + $obr++; + } + $j++; + } + // + $id2 = rand(0, (count($bots) - 1)); + $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); + $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, $this->info['izlomRoundSee']); + if (isset($id['id']) && $bot) { + // + $btxt = ''; + if ($id['align'] > 0) { + $btxt = $btxt . ''; + } + if ($id['clan'] > 0) { + $btxt = $btxt . ''; + } + $btxt = $btxt . '{u1}[' . $id['level'] . ']'; + if ($id['sex'] == 1) { + $btxt = $btxt . ' вмешалась в поединок.'; + } else { + $btxt = $btxt . ' вмешался в поединок.'; + } + $this->miniLogAdd([ + 'login' => $id['login'], + 'sex' => $id['sex'], + 'team' => 0, + ], '{tm1} ' . $btxt); + // + $logins_bot = $bot['logins_bot']; + mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + if (rand(0, 10000) < 1500) { + $obr++; + } + $j++; + } + // + if (rand(0, 100) < 70) { + $id2 = rand(0, (count($bots) - 1)); + $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); + $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, + $this->info['izlomRoundSee']); + if (isset($id['id']) && $bot) { + // + $btxt = ''; + if ($id['align'] > 0) { + $btxt = $btxt . ''; + } + if ($id['clan'] > 0) { + $btxt = $btxt . ''; + } + $btxt = $btxt . '{u1}[' . $id['level'] . ']'; + if ($id['sex'] == 1) { + $btxt = $btxt . ' вмешалась в поединок.'; + } else { + $btxt = $btxt . ' вмешался в поединок.'; + } + $this->miniLogAdd([ + 'login' => $id['login'], + 'sex' => $id['sex'], + 'team' => 0, + ], '{tm1} ' . $btxt); + // + $logins_bot = $bot['logins_bot']; + mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + if (rand(0, 10000) < 1500) { + $obr++; + } + $j++; + } + } + //Каждые 10 вол = +1 монстр + $irb = floor($this->info['izlomRoundSee'] / 10); + while ($irb > 0) { + // + if (rand(0, 100) < 20) { + $id2 = rand(0, (count($bots) - 1)); + $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); + $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, + $this->info['izlomRoundSee']); + if (isset($id['id']) && $bot) { + // + $btxt = ''; + if ($id['align'] > 0) { + $btxt = $btxt . ''; + } + if ($id['clan'] > 0) { + $btxt = $btxt . ''; + } + $btxt = $btxt . '{u1}[' . $id['level'] . ']'; + if ($id['sex'] == 1) { + $btxt = $btxt . ' вмешалась в поединок.'; + } else { + $btxt = $btxt . ' вмешался в поединок.'; + } + $this->miniLogAdd([ + 'login' => $id['login'], + 'sex' => $id['sex'], + 'team' => 0, + ], '{tm1} ' . $btxt); + // + $logins_bot = $bot['logins_bot']; + mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + if (rand(0, 10000) < 1500) { + $obr++; + } + $j++; + } + } + $irb--; + } + } + // + unset($logins_bot); + if ($j == 0) { + //конец излома + $this->finishBattle($tml, $tmv, null, $tl); + $fin1 = mysql_query('INSERT INTO `izlom_rating` (`uid`,`time`,`voln`,`level`,`bots`,`rep`,`obr`,`btl`) VALUES ("' . $u->info['id'] . '","' . time() . '","' . $this->info['izlomRoundSee'] . '","' . $this->info['izlomLvl'] . '","0","0","' . ($this->info['izlomObr'] - $this->info['izlomObrNow']) . '","' . $this->info['id'] . '")'); + } else { + $this->info['izlomRound'] = $iz['round']; + mysql_query('UPDATE `battle` SET `izlomObrNow` = ' . $obr . ',`izlomObr` = `izlomObr` + ' . $obr . ',`timeout` = (`timeout`+5),`izlomRound` = "' . ($this->info['izlomRound'] + 1) . '",`izlomRoundSee` = `izlomRoundSee`+1 WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + $this->stats[$this->uids[$u->info['id']]]['hpNow'] += $this->stats[$this->uids[$u->info['id']]]['hpAll'] * 0.25; + $this->stats[$this->uids[$u->info['id']]]['mpNow'] += $this->stats[$this->uids[$u->info['id']]]['mpAll'] * 0.25; + $this->users[$this->uids[$u->info['id']]]['hpNow'] = $this->stats[$this->uids[$u->info['id']]]['hpAll']; + $this->users[$this->uids[$u->info['id']]]['mpNow'] = $this->stats[$this->uids[$u->info['id']]]['mpAll']; + $vLog = 'at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . '||bl1=' . $this->atacks[$id]['b' . $a] . '||bl2=' . $this->atacks[$id]['b' . $b] . '||time1=' . $this->atacks[$id]['time'] . '||time2=' . $this->atacks[$id]['time2'] . '||s2=' . $this->users[$this->uids[$u2]]['sex'] . '||s1=' . $this->users[$this->uids[$u1]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2'] . ''; + + $mas = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => ($this->hodID + 1), + 'vars' => $vLog, + 'type' => 1, + ]; + if ($u->info['sex'] == 1) { + $mas['text'] = '' . date('H:i') . ' ' . $u->info['login'] . ' воспользовалась приемом "Передышка".'; + } else { + $mas['text'] = '' . date('H:i') . ' ' . $u->info['login'] . ' воспользовался приемом "Передышка".'; + } + if ($u->stats['hpNow'] < $u->stats['hpAll']) { + $hpSks = floor(($u->stats['hpAll'] * ((rand(15, 25)) / 100))); + if ($hpSks > floor($u->stats['hpAll'] - $u->stats['hpNow'])) { + $hpSks = floor($u->stats['hpAll'] - $u->stats['hpNow']); + } + $mas['text'] .= ' +' . $hpSks . ''; + } else { + $hpSks = 0; + $mas['text'] .= ' --'; + } + $mas['text'] .= ' [' . floor($u->info['hpNow'] + $hpSks) . '/' . $u->stats['hpAll'] . ']'; + $this->add_log($mas); + + mysql_query('UPDATE `stats` SET `hpNow` = "' . ($u->info['hpNow'] + ($u->stats['hpAll'] * ((rand(15, + 25)) / 100))) . '",`mpNow` = "' . ($u->info['mpNow'] + ($u->stats['mpAll'] * 0.25)) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } + } else { + //завершаем бой + $this->finishBattle($tml, $tmv, null, $tl); + if ($this->info['izlom'] > 0) { + $fin1 = mysql_query('INSERT INTO `izlom_rating` (`uid`,`time`,`voln`,`level`,`bots`,`rep`,`obr`,`btl`) VALUES ("' . $u->info['id'] . '","' . time() . '","' . $this->info['izlomRoundSee'] . '","' . $this->info['izlomLvl'] . '","0","0","' . ($this->info['izlomObr'] - $this->info['izlomObrNow']) . '","' . $this->info['id'] . '")'); + } + } + if (isset($fin1)) { + mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","31","23","' . $u->info['id'] . '","Касание Хаоса","nofastfinisheff=1","' . time() . '")'); + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "','Вы создали предмет "Образец"x" . (($this->info['izlomObr'] - $this->info['izlomObrNow']) * 7) . "','" . time() . "','6','0')"); + $i01 = 1; + while ($i01 <= (($this->info['izlomObr'] - $this->info['izlomObrNow'])) * 7) { + $u->addItem(1226, $u->info['id'], '|sudba=' . $u->info['login']); + $i01++; + } + mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("' . $u->info['id'] . '","' . time() . '","capitalcity","' . $u->info['room'] . '","izlom"," ","","")'); + unset($fin1); + } + } + } else { + mysql_query('START TRANSACTION;'); + $test = mysql_fetch_array(mysql_query('SELECT `id`,`team_win`, `testfinish` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `team_win` != -1 LIMIT 1 FOR UPDATE')); + mysql_query('COMMIT;'); + if (isset($test['id'])) { + $this->finishBattle(null, null, 10, $tl); + } + } + } + + + /** Завершение поединка. + *
ЁБИЧЕСКАЯ СИЛА! СЮДА НАПИХАНО ВСЁ! + *
Эта функция принесёт больше всего проблем. + * @param $t ??? + * @param $v ??? + * @param $nl ??? + * @param $tl [unused] ??? + * @return void + */ + private function finishBattle($t, $v, $nl, $tl) + { + global $u, $c; + mysql_query('LOCK TABLES users,stats,battle,battle_last,battle_end,chat WRITE'); + $frtu = false; + $test = mysql_fetch_array(mysql_query('SELECT `id`,`team_win`,`testfinish` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `team_win` != -1 LIMIT 1;')); + if ($test['testfinish'] != -1) { + $trtt = mysql_query('UPDATE `battle` SET `testfinish` = "-1" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + $relbf = $this->info['team_win']; + if ($nl != 10) { + $i = 0; + $dnr = 0; + if ($this->info['team_win'] == -1) { + $this->info['team_win'] = 0; + while ($i < count($v)) { + if ($v[$i] >= 1 && $t[$v[$i]] > 0) { + $this->info['team_win'] = $v[$i]; + } + $i++; + } + } + } + + + //данные о игроках в бою + $t = mysql_query('SELECT `u`.`stopexp`,`u`.`twink`,`u`.`city`,`u`.`room`,`u`.`no_ip`,`u`.`pass`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '"'); + $i = 0; + $bi = 0; + while ($pl = mysql_fetch_array($t)) { + //записываем данные + if ($pl['login2'] == '') { + $pl['login2'] = $pl['login']; + } + $this->users[$i] = $pl; + $this->uids[$pl['id']] = $i; + if ($pl['bot'] > 0) { + $this->bots[$bi] = $pl['id']; + $this->iBots[$pl['id']] = $bi; + $bi++; + } + //записываем статы + $this->stats[$i] = $u->getStats($pl, 0, 0, false, false, true); + $i++; + } + unset($pl, $t); + + if ($this->info['time_over'] == 0) { + $tststrt = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `time_over` = "0" LIMIT 1')); + if (isset($tststrt['id'])) { + if ($this->info['inTurnir'] == 0 || $this->info['type'] == 500) { + mysql_query('UPDATE `battle` SET `time_over` = "' . time() . '",`team_win` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + } + mysql_query('UPDATE `battle_stat` SET `team_win` = "' . $this->info['team_win'] . '" WHERE `battle_id` = "' . $this->info['id'] . '"'); + //Заносим данные о завершении боя + $i = 0; + $vl = ''; + $vtvl = ''; + $relu = 0; + while ($i < count($this->users)) { + $vl .= '("' . $this->users[$i]['login'] . '","' . $this->users[$i]['city'] . '","' . $this->info['id'] . '","' . $this->users[$i]['id'] . '","' . time() . '","' . $this->users[$i]['team'] . '","' . $this->users[$i]['level'] . '","' . $this->users[$i]['align'] . '","' . $this->users[$i]['clan'] . '","' . $this->users[$i]['exp'] . '","' . $this->users[$i]['bot'] . '","' . $this->users[$i]['money'] . '","' . $this->users[$i]['money2'] . '","' . $this->users[$i]['money3'] . '"),'; + if ($this->users[$i]['team'] == $this->info['team_win'] && $this->info['team_win'] > 0) { + $vtvl .= '' . $this->users[$i]['login'] . ', '; + } + $i++; + } + + $this->info['players_c'] = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `users` WHERE `login` NOT LIKE "%(зверь%" AND `battle` = "' . $this->info['id'] . '" LIMIT 1')); + $this->info['players_c'] = $this->info['players_c'][0]; + + mysql_query('UPDATE `battle` SET `players_c` = "' . $this->info['players_c'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + + if ($vtvl != '') { + $vtvl = rtrim($vtvl, ', '); + $vtvl = str_replace('"', '\\\\\"', $vtvl); + $this->hodID++; + $vLog = 'time1=' . time(); + $mass = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'text' => 'test', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + $vtvl = 'Бой закончен, победа за ' . $vtvl . '.'; + } else { + $this->info['players_cc'] = mysql_fetch_array(mysql_query('SELECT COUNT(`u`.`id`) FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `s`.`hpNow` > 0 AND `u`.`battle` = "' . $this->info['id'] . '" AND `s`.`team` != "' . $u->info['team'] . '" LIMIT 1')); + $this->info['players_cc'] = $this->info['players_cc'][0]; + $this->info['players_cc2'] = mysql_fetch_array(mysql_query('SELECT COUNT(`u`.`id`) FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `s`.`hpNow` >= 1 AND `u`.`battle` = "' . $this->info['id'] . '" AND `s`.`team` != "' . $u->info['team'] . '" LIMIT 1')); + $this->info['players_cc2'] = $this->info['players_cc2'][0]; + $inf_test = ', users: ' . $this->info['players_cc'] . ' and ' . $this->info['players_cc2'] . ''; + $this->hodID++; + $vLog = 'time1=' . time(); + $mass = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'text' => 'test', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + $vtvl = 'Бой закончен, ничья.'; + } + $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); + + $this->saveLogs(); + + if ($this->info['type'] == 99) { + $vLog = 'time1=' . time(); + $mass = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'text' => 'test', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + $vtvl = 'И победители стали калечить проигравших...'; + $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); + $i = 0; + $vtvl = ''; + $tr_nm = [ + 1 => 'легкую', + 2 => 'среднюю', + 3 => 'тяжелую', + 4 => 'неизлечимую', + ]; + while ($i < count($this->users)) { + if ($this->users[$i]['team'] != $this->info['team_win']) { + $tr_pl = mysql_fetch_array(mysql_query('SELECT `id`,`v1` FROM `eff_users` WHERE `id_eff` = 4 AND `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = "0" ORDER BY `v1` DESC LIMIT 1')); + if (!isset($tr_pl['id']) || $tr_pl['v1'] < 3) { + if ($this->info['smert'] == 1) { + $tr_tp = 4; + } else { + $tr_tp = rand(1, 3); + } + if (isset($tr_pl['id'])) { + $tr_tp = rand(($tr_pl['v1'] + 1), 3); + } + if ($this->users[$i]['sex'] == 1) { + $vtvl = '' . $this->users[$i]['login'] . ' получила повреждение: ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; + } else { + $vtvl = '' . $this->users[$i]['login'] . ' получил повреждение: ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; + } + $this->addTravm($this->users[$i]['id'], $tr_tp, rand(3, 5)); + } + } + $i++; + } + $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); + } + + if ($vl != '') { + $vl = rtrim($vl, ','); + mysql_query('INSERT INTO `battle_last` (`login`,`city`,`battle_id`,`uid`,`time`,`team`,`lvl`,`align`,`clan`,`exp`,`bot`,`money`,`money2`,`money3`) VALUES ' . $vl . ''); + } + mysql_query('INSERT INTO `battle_end` (`battle_id`,`city`,`time`,`team_win`) VALUES ("' . $this->info['id'] . '","' . $this->info['city'] . '","' . $this->info['time_start'] . '","' . $this->info['team_win'] . '")'); + } + + + $vLog = 'time1=' . time(); + $mass = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'text' => 'test', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + $i = 0; + $vtvl = ''; + $tr_nm = [ + 1 => 'легкую', + 2 => 'среднюю', + 3 => 'тяжелую', + 4 => 'неизлечимую', + ]; + while ($i < count($this->users)) { + if ($this->users[$i]['team'] != $this->info['team_win'] && $this->info['team_win'] > 0) { + $tr_pl = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `v1` = "priem" AND `v2` = 292 AND `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = "0" LIMIT 1')); + + $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl2 . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); + + if (isset($tr_pl['id'])) { + if (rand(0, 100) < $tr_pl['data']) { + $tr_tp = rand(($tr_pl['v1'] + 1), 3); + if ($this->users[$i]['sex'] == 1) { + $vtvl = '' . $this->users[$i]['login'] . ' получила повреждение (Искалечить, автор: ' . $this->users[$this->uids[$tr_pl['user_use']]]['login'] . '): ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; + } else { + $vtvl = '' . $this->users[$i]['login'] . ' получил повреждение (Искалечить, автор: ' . $this->users[$this->uids[$tr_pl['user_use']]]['login'] . '): ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; + } + $this->addTravm($this->users[$i]['id'], $tr_tp, rand(3, 5)); + } + } + } + $i++; + } + if ($vtvl != '') { + if ($this->info['type'] != 99) { + $vtvl2 = 'И победители стали калечить проигравших...'; + $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl2 . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); + } + $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); + } + + //Турнир БС + if ($this->info['inTurnir'] > 0 && $this->info['dungeon'] != 15 && $u->info['room'] != 413) { + $bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "' . $this->info['inTurnir'] . '" LIMIT 1')); + $i = 0; + $j = 0; + while ($i < count($this->users)) { + if ($this->stats[$i]['hpNow'] < 1 && $this->users[$i]['clone'] == 0 && $this->stats[$i]['clone'] == 0) { + //Добавляем в лог БС + if ($this->users[$i]['sex'] == 0) { + $text .= '{u1} повержен и выбывает из турнира'; + } else { + $text .= '{u1} повержена и выбывает из турнира'; + } + //Выкидываем предметы с персонажа + $spik = mysql_query('SELECT `id`,`item_id` FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` ="0"'); + while ($plik = mysql_fetch_array($spik)) { + /* + БС-1 + */ + mysql_query('INSERT INTO `dungeon_items` (`dn`,`item_id`,`time`,`x`,`y`) VALUES ( + "' . $this->users[$i]['dnow'] . '","' . $plik['item_id'] . '","' . (time() - 600) . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '" + )'); + } + unset($spik, $plik); + // + $usrreal = ''; + $usr_real = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `login` = "' . $this->users[$i]['login'] . '" AND `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1')); + if (!isset($usr_real['id'])) { + $usr_real = $this->users[$i]; + } + if (isset($usr_real['id'])) { + if ($usr_real['align'] > 0) { + $usrreal .= ''; + } + if ($usr_real['clan'] > 0) { + $usrreal .= ''; + } + $usrreal .= '' . $usr_real['login'] . '[' . $usr_real['level'] . ']'; + } else { + $mereal = 'Невидимка[??]'; + } + $text = str_replace('{u1}', $usrreal, $text); + mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( + "1", "' . mysql_real_escape_string($text) . '", "' . time() . '", "' . $bs['id'] . '", "' . $bs['count'] . '", "' . $bs['city'] . '", + "' . round($bs['money'] * 0.85, 2) . '","' . $i . '" + )'); + // + //Удаление клона + mysql_query('DELETE FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `stats` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `actions` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); + mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); + mysql_query('DELETE FROM `users_delo` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); + //Обновление персонажа + mysql_query('UPDATE `users` SET `inUser` = "0" WHERE `login` = "' . $this->users[$i]['login'] . '" OR `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + //Обновляем заявку + mysql_query('UPDATE `bs_zv` SET `off` = "' . time() . '" WHERE `inBot` = "' . $this->users[$i]['id'] . '" AND `off` = "0" LIMIT 1'); + unset($text, $usrreal, $usr_real); + if ($this->users[$i]['pass'] != 'bstowerbot') { + $bs['users']--; + $bs['users_finish']++; + } else { + $bs['arhiv']--; + } + $j++; + } + $i++; + } + if ($j > 0) { + mysql_query('UPDATE `bs_turnirs` SET `arhiv` = "' . $bs['arhiv'] . '",`users` = "' . $bs['users'] . '",`users_finish` = "' . $bs['users_finish'] . '" WHERE `id` = "' . $bs['id'] . '" LIMIT 1'); + } + + unset($bs, $j); + } + + //Награда за события + if ($this->info['type'] == 500 && isset($tststrt['id'])) { + //Предметы которые выпадают в центр + + $i = 0; + while ($i < count($this->users)) { + if ($this->users[$i]['no_ip'] == 'trupojor') { + $mon = mysql_fetch_array(mysql_query('SELECT * FROM `aaa_monsters` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 1')); + if (isset($mon['id'])) { + if ($this->info['team_win'] == 0) { + //Ничья + mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->stats[$i]['hpAll'] . '",`mpNow` = "' . $this->stats[$i]['mpAll'] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Внимание! ' . mysql_real_escape_string(str_replace('{b}', + '' . $this->users[$i]['login'] . ' [' . $this->users[$i]['level'] . ']users[$i]['id'] . ' >', + $mon['nich_text'])) . ' ","' . $this->users[$i]['city'] . '","","6","1","' . time() . '")'); + } elseif ($this->info['team_win'] != $this->users[$i]['team']) { + //Выиграли + $j = 0; + $usrwin = ''; + while ($j < count($this->users)) { + if ($this->users[$j]['no_ip'] != 'trupojor' && $this->users[$j]['bot'] == 0) { + if ($this->stats[$j]['hpNow'] > 0) { + $usrwin .= ', '; + if ($this->users[$j]['align'] > 0) { + $usrwin .= 'users[$j]['align'] . '.gif >'; + } + if ($this->users[$j]['clan'] > 0) { + $usrwin .= 'users[$j]['clan'] . '.gif >'; + } + $usrwin .= '' . $this->users[$j]['login'] . ' [' . $this->users[$j]['level'] . ']users[$j]['id'] . ' >'; + } + } + $j++; + } + if ($usrwin != '') { + $usrwin = ltrim($usrwin, ', '); + } else { + $usrwin = 'Команда героев'; + } + + + mysql_query('UPDATE `users` SET `room` = "303" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + + $truptimelast = time() + rand(1800, 3600); + + mysql_query('UPDATE `stats` SET `res_x` = "' . $truptimelast . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Внимание! ' . mysql_real_escape_string(str_replace('{b}', + '' . $this->users[$i]['login'] . ' [' . $this->users[$i]['level'] . ']users[$i]['id'] . ' >', + str_replace('{u}', $usrwin, + $mon['win_text']))) . ' ","' . $this->users[$i]['city'] . '","","6","1","' . time() . '")'); + unset($usrwin); + } else { + //Проиграли + if ($mon['win_back'] == 1) { + mysql_query('UPDATE `users` SET `room` = "303" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + } + mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->stats[$i]['hpAll'] . '",`mpNow` = "' . $this->stats[$i]['mpAll'] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Внимание! ' . mysql_real_escape_string(str_replace('{b}', + '' . $this->users[$i]['login'] . ' [' . $this->users[$i]['level'] . ']users[$i]['id'] . ' >', + $mon['lose_text'])) . ' ","' . $this->users[$i]['city'] . '","","6","1","' . time() . '")'); + } + } + } + $i++; + } + } + } + + // выкидываем ботов из боя + $i = 0; + $botsi = 0; + if (isset($tststrt['id'])) { + while ($i < count($this->users)) { + //Тут выкидываем юзеров из Призавого хаота + if ($this->info['type'] == 33) { + $plde = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1')); + if (isset($plde['mail']) && $plde['mail'] == "haot@new-combats.com") { + $pld = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1')); + + if (isset($pld['id'])) { + if ($this->users[$i]['battle_yron'] >= 500) { + $u->addItem(4754, $pld['id'], ''); + $u->addItem(4754, $pld['id'], ''); + $u->addItem(4754, $pld['id'], ''); + $u->addItem(4754, $pld['id'], ''); + $u->addItem(4754, $pld['id'], ''); + $pld['battle_text'] .= ' За Героическое Сражение вы получаете Реликвия Ангела (x5). '; + mysql_query('UPDATE `users_achiv` SET `pg`= `pg`+1 WHERE `id` = "' . $pld['id'] . '" LIMIT 1'); + + if ($this->users[$i]['team'] == $this->info['team_win']) { + if (rand(1, 100) <= 5) { + $u->addItem(10020, $pld['id'], ''); + $pld['battle_text'] .= ' и Жетон Успеха. '; + } + } + } else { + $pld['battle_text'] .= ' Вы ничего не получили. Нужно набить больше 500 урона урона .'; + } + + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $pld['city'] . "','" . $pld['room'] . "','','" . $pld['login'] . "','" . $pld['battle_text'] . "','-1','6','0')"); + mysql_query('DELETE FROM `stats` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); + mysql_query('UPDATE `users` SET `inUser` = "0" WHERE `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + } + } + + unset ($plde, $pld); + } + + if ($this->users[$i]['bot'] == 1) { + $botsi++; + mysql_query('DELETE FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `stats` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); + } elseif ($this->users[$i]['bot'] == 2) { + $this->users[$i]['battle'] = 0; + mysql_query('UPDATE `users` SET `battle` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "0",`exp` = `exp` + `battle_exp`,`battle_exp` = "0",`battle_yron` = "0",`enemy` = "0", `timeGo` = "' . time() . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + //mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "0",`exp` = `exp` + `battle_exp`,`battle_exp` = "0",`timeGo` = "'.time().'" WHERE `id` = "'.$this->users[$i]['id'].'" LIMIT 1'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); + } elseif ($this->users[$i]['bot'] > 0) { + $this->users[$i]['battle'] = 0; + mysql_query('UPDATE `users` SET `battle` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "0",`exp` = `exp` + `battle_exp`,`battle_exp` = "0",`battle_yron` = "0",`enemy` = "0", `timeGo` = "' . time() . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); + } + if ($this->users[$i]['clone'] > 0 && $this->users[$i]['bot'] > 0 && isset($this->users[$this->uids[$this->users[$i]['clone']]]['id']) && $this->users[$this->uids[$this->users[$i]['clone']]]['team'] != $this->users[$i]['team']) { + //Добавляем что клон побежден + if ($this->users[$this->uids[$this->users[$i]['clone']]]['team'] == $this->info['team_win']) { + $u->addAction(time(), 'win_bot_clone', '', $this->users[$i]['clone']); + } elseif ($this->info['team_win'] == 0) { + $u->addAction(time(), 'nich_bot_clone', '', $this->users[$i]['clone']); + } else { + $u->addAction(time(), 'lose_bot_clone', '', $this->users[$i]['clone']); + } + } elseif ($this->users[$i]['bot'] > 0 && $this->users[$i]['bot_id'] > 0) { + //Добавляем что бота победили + $j = 0; + while ($j < count($this->users)) { + if ($this->users[$j]['bot'] == 0 && $this->users[$j]['team'] != $this->users[$i]['team']) { + if ($this->users[$j]['team'] == $this->info['team_win']) { + $u->addAction(time(), 'win_bot_' . $this->users[$i]['bot_id'], '', + $this->users[$j]['id']); + // + mysql_query('UPDATE `dialog_act` SET `now` = `now` + 1 WHERE `uid` = "' . $this->users[$j]['id'] . '" AND + ( `btl_bot` LIKE "' . $this->users[$i]['bot_id'] . '!%" OR `btl_bot` LIKE "%!' . $this->users[$i]['bot_id'] . '!%" ) + AND `val` != 1 + LIMIT 1'); + // + } elseif ($this->info['team_win'] == 0) { + $u->addAction(time(), 'nich_bot_' . $this->users[$i]['bot_id'], '', + $this->users[$j]['id']); + } else { + $u->addAction(time(), 'lose_bot_' . $this->users[$i]['bot_id'], '', + $this->users[$j]['id']); + } + } + $j++; + } + } + $i++; + } + } + + $botss = []; + + if ($nl != 10) { + //Из бота падают предметы + if ($this->info['dungeon'] > 0) { + if ($this->info['team_win'] == $u->info['team'] && $this->info['dungeon'] == 102) { + $j1 = mysql_fetch_array(mysql_query('SELECT * FROM `laba_obj` WHERE `type` = 2 AND `lib` = "' . $this->info['dn_id'] . '" AND `x` = "' . $this->info['x'] . '" AND `y` = "' . $this->info['y'] . '" LIMIT 1')); + if (isset($j1['id'])) { + mysql_query('DELETE FROM `laba_obj` WHERE `id` = "' . $j1['id'] . '" LIMIT 1'); + //Выпадает шмотка + mysql_query('INSERT INTO `laba_obj` (`use`,`lib`,`time`,`type`,`x`,`y`,`vars`) VALUES ( + "0","' . $j1['lib'] . '","' . time() . '","6","' . $j1['x'] . '","' . $j1['y'] . '","' . (0 + $botsi) . '" + )'); + } + } elseif ($this->info['team_win'] == $u->info['team']) { + //выйграли люди, выкидываем предметы из мобов + $j1 = mysql_query('SELECT * FROM `dungeon_bots` WHERE `dn` = "' . $this->info['dn_id'] . '" AND `for_dn` = "0" AND `x` = "' . $this->info['x'] . '" AND `delete` = "0" AND `y`= "' . $this->info['y'] . '" LIMIT 100'); + while ($tbot = mysql_fetch_array($j1)) { + $j2 = 0; + while ($j2 < $tbot['colvo']) { + if (isset($tbot['id2'])) { + $tbot2 = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `id` = "' . $tbot['id_bot'] . '" LIMIT 1')); + $itms = explode('|', $tbot2['p_items']); + $tii = 0; + $testdrop = 0; + while ($tii < count($itms) && $testdrop == 0) { + $itmz = explode('=', $itms[$tii]); + if ($itmz[0] > 0) { + if (isset($itmz[2]) && $itmz[2] != '') { + $questDrop = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `vars` LIKE "%' . $itmz[2] . '%" AND `vals` = "go" AND `uid` = "' . $u->info['id'] . '" LIMIT 1')); + } + if (isset($questDrop['id'])) { // Если квест есть, предмет имеет шанс выпасть + } elseif (isset($itmz[2]) && $itmz[2] != '') { + $itmz[1] = 0; + } // Если предмет квестовый, а квеста у игрока нет, то предмет выпадет с вероятностью 0 + unset($questDrop); + + //Добавляем этот предмет в зону Х и У + if ($itmz[1] * 100000 >= rand(1, 10000000)) { + $tou = 0; //какому юзеру предназначено + /* выделяем случайного юзера из команды */ + $itmnm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itmz[0] . '" LIMIT 1')); + $itmnm = $itmnm['name']; + + $rtxt = 'У ' . $tbot2['login'] . ' был предмет "' . $itmnm . '" и кто угодно может поднять его'; + mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[0]['city'] . "','" . $this->users[0]['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); + + $ins = mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`) VALUES ( + "' . $this->info['dn_id'] . '", + "' . $tou . '", + "' . $itmz[0] . '", + "' . time() . '", + "' . $this->info['x'] . '", + "' . $this->info['y'] . '")'); + if (!isset($questDrop['id'])) { + $testdrop = 1; //ТУТ drop-drop //quest + } + } + } + $tii++; + } + } + $j2++; + } + // + //Квест 1-15 сентября, + if (date('m') == 9 && date('d') < 15) { + if ($this->get_chanse(99)) { + //Не выпало + } elseif ($this->info['dungeon'] == 12 || $this->info['dungeon'] == 101) { + $tou = 0; //какому юзеру предназначено + /* выделяем случайного юзера из команды */ + $itmz = [ + rand(4745, 4751), + 100, + ]; + // + $itmnm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itmz[0] . '" LIMIT 1')); + $itmnm = $itmnm['name']; + + $rtxt = 'У ' . $tbot2['login'] . ' был предмет "' . $itmnm . '" и кто угодно может поднять его'; + mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[0]['city'] . "','" . $this->users[0]['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); + + $ins = mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`) VALUES ( + "' . $this->info['dn_id'] . '", + "' . $tou . '", + "' . $itmz[0] . '", + "' . time() . '", + "' . $this->info['x'] . '", + "' . $this->info['y'] . '")'); + } + } + // + //Странички саныча, + + if (rand(1, 100) <= 99) { + //Не выпало + } elseif ($this->info['dungeon'] == 12 || $this->info['dungeon'] == 3 || + $this->info['dungeon'] == 101 || $this->info['dungeon'] == 16 || + $this->info['dungeon'] == 9 || $this->info['dungeon'] == 10 || + $this->info['dungeon'] == 13 || $this->info['dungeon'] == 106) { + $tou = 0; //какому юзеру предназначено + // выделяем случайного юзера из команды + $itmz = rand(3143, 3192); + // + $itmnm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itmz . '" LIMIT 1')); + $itmnm = $itmnm['name']; + + $rtxt = 'У ' . $tbot2['login'] . ' был предмет "' . $itmnm . '" и кто угодно может поднять его'; + mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[0]['city'] . "','" . $this->users[0]['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); + + $ins = mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`) VALUES ( + "' . $this->info['dn_id'] . '", + "' . $tou . '", + "' . $itmz . '", + "' . time() . '", + "' . $this->info['x'] . '", + "' . $this->info['y'] . '")'); + } + } + mysql_query('UPDATE `dungeon_bots` SET `delete` = "' . time() . '" AND `inBattle` = "' . $this->info['id'] . '" WHERE `dn` = "' . $this->info['dn_id'] . '" AND `for_dn` = "0" AND `delete` = "0" '); + } else { + //выкидываем всех игроков в клетку RESTART + $dnr = 1; + if ($this->info['dungeon'] != 102) { + mysql_query('UPDATE `dungeon_bots` SET `inBattle` = "0" WHERE `dn` = "' . $this->info['dn_id'] . '" AND `for_dn` = "0" AND `x` = "' . $this->info['x'] . '" AND `y`= "' . $this->info['y'] . '"'); + } + } + } + } + $gm = []; + $gms = []; + $bm = []; + $bms = []; + + //Квестовый раздел + //Квестовый раздел + //завершаем поединок + $i = $this->uids[$u->info['id']]; + + if ($this->info['team_win'] >= 0) { + if ($this->stats[$i]['pbe'] > 0) { + //Бонус покупателя + $this->expCoef += $this->stats[$i]['pbe']; + } + + if ( + $this->info['razdel'] == 5 && + (($c['m'] >= 6 && $c['m'] <= 8) || ($c['w'] == 0 || $c['w'] == 6)) + ) { + //Лето и выходные + $this->expCoef += 5; + } + + $this->stats[$i]['exp'] += $this->expCoef; + + $this->stats[$i]['exp'] += $this->aBexp * $c['exp']; + + if ($this->stats[$i]['os4'] > 0) { + $this->stats[$i]['exp'] += $this->stats[$i]['os4']; + } + + $act01 = 0; + $this->users[$i]['battle_exp'] = round($this->users[$i]['battle_exp'] + ($this->users[$i]['battle_exp'] / 100 * (1 + $this->info['addExp'] + $this->stats[$i]['exp']))); + + if ($this->info['type'] == 564) { + //Бой с копией + $this->users[$i]['battle_exp'] = 0; + } + + if ($this->info['dungeon'] == 104) { + $this->users[$i]['battle_exp'] = ($u->info['level'] * 2) * (count($this->uids) - 1); + } elseif ($this->info['dungeon'] > 0 && $this->users[$i]['dnow'] != 0 && $this->info['dungeon'] != 1 && $this->users[$i]['team'] == $this->info['team_win']) { + $dun_limitForLevel = [ + 4 => 750, + 5 => 1500, + 6 => 3500, + 7 => 8000, + 8 => 25000, + 9 => 50000, + 10 => 75000, + 11 => 100000, + 12 => 100000, + 13 => 100000, + 14 => 100000, + ]; + // Максимум для каждого уровня. + + if ($this->users[$i]['battle_exp'] > 0) { + $dun_exp = []; // Текущий лимит опыта игрока в подземельях. + $rep = mysql_fetch_array(mysql_query('SELECT `dungeonexp`,`id` FROM `rep` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1')); + $rep = explode(',', $rep['dungeonexp']); + foreach ($rep as $key => $val) { + $val = explode('=', $val); // текущий лимит опыта в подземке + if (isset($val[0]) && isset($val[1]) && $val[0] != '' && $val[1] != 0) { + $dun_exp[(int)$val[0]] = (int)$val[1]; + } + } + unset($rep); + } + + if (!isset($dun_exp[$this->info['dungeon']])) { + $dun_exp[$this->info['dungeon']] = 0; + } + + if (!isset($dun_limitForLevel[(int)$this->users[$i]['level']])) { // Если лимит не задан, опыт не даем. + $this->users[$i]['battle_exp'] = 0; + } elseif ( + isset($dun_exp[$this->info['dungeon']]) && + $dun_exp[$this->info['dungeon']] >= $dun_limitForLevel[(int)$this->users[$i]['level']] + ) { // Если лимит уже достигнут, опыт не даем. + $this->users[$i]['battle_exp'] = 0; + } elseif ( + isset($dun_exp[$this->info['dungeon']]) && + $dun_limitForLevel[(int)$this->users[$i]['level']] > $dun_exp[$this->info['dungeon']] + ) { // Если текущая репутация не достигла лимита. + if (($dun_exp[$this->info['dungeon']] + $this->users[$i]['battle_exp']) > $dun_limitForLevel[(int)$this->users[$i]['level']]) { + // Если опыта набрано достаточно, для достижения лимита. + $this->users[$i]['battle_exp'] = abs($this->users[$i]['battle_exp'] - abs($dun_limitForLevel[(int)$this->users[$i]['level']] - ($this->users[$i]['battle_exp'] + $dun_exp[$this->info['dungeon']]))); + $dun_exp[$this->info['dungeon']] += $this->users[$i]['battle_exp']; + } elseif ($dun_limitForLevel[(int)$this->users[$i]['level']] > ($dun_exp[$this->info['dungeon']] + $this->users[$i]['battle_exp'])) { + // Если опыта недостаточно, для достижения лимита. + $dun_exp[$this->info['dungeon']] += $this->users[$i]['battle_exp']; + } else { + $this->users[$i]['battle_exp'] = 0; + } + } else { // В любой непонятной ситуцаии. + $this->users[$i]['battle_exp'] = 0; + } + + + if ($this->users[$i]['battle_exp'] > 0 && isset($dun_exp[$this->info['dungeon']]) && $dun_exp[$this->info['dungeon']] > 0) { + $dunexp = []; + foreach ($dun_exp as $key => $val) { + $dunexp[$key] = $key . '=' . $val; // текущий лимит опыта в подземке + } + $dun_exp = implode(",", $dunexp); + mysql_query('UPDATE `rep` SET `dungeonexp` = "' . $dun_exp . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + unset($dunexp, $dun_exp); + } + unset($dun_limitForLevel); + } + + $sinf = ''; + if ($c['exp_mega']) { + $this->users[$i]['battle_exp'] += floor($this->users[$i]['battle_exp'] / 100 * $c['exp_mega_val'][$this->users[$i]['level']]); + } + + if ($this->info['team_win'] == 0 && $this->info['type'] != 564) { + //ничья + if ($this->users[$i]['level'] <= 1) { + $this->users[$i]['battle_exp'] = floor($this->users[$i]['battle_exp'] * 0.50); + } else { + $this->users[$i]['battle_exp'] = ceil($this->users[$i]['battle_exp'] * 0.10); + } + $this->users[$i]['nich'] += 1; + // + mysql_query('UPDATE `users` SET `swin` = 0, `slose` = 0 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + // + } elseif ($this->users[$i]['team'] == $this->info['team_win'] && $this->info['type'] != 564) { + //выйграл + $gm[$i] = $this->info['money']; + + $gms[$i] = $this->info['money3']; + + $this->users[$i]['win'] += 1; + $act01 = 1; + // + mysql_query('UPDATE `users` SET `swin` = `swin` + 1, `slose` = 0 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + // + } elseif ($this->info['type'] != 564) { + //проиграл + if ($this->users[$i]['level'] <= 1) { + $this->users[$i]['battle_exp'] = ceil($this->users[$i]['battle_exp'] * 0.33); + } else { + $this->users[$i]['battle_exp'] = ceil($this->users[$i]['battle_exp'] * 0.10); + } + $bm[$i] = $this->info['money']; + + $bms[$i] = $this->info['money3']; + + $this->users[$i]['lose'] += 1; + mysql_query('UPDATE `users` SET `swin` = 0, `slose` = `slose` + 1 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + $act01 = 2; + } + //Рассчитываем кол-во выигрышных сумм и кто сколько получил (для екр.) + if ($this->info['money3'] > 0 && isset($gms[$i]) && $this->info['type'] != 564) { + $mn = [ + 'l' => 0, //сколько проигравших игроков + 'w' => 0, //сколько выигрывших игроков + 'm' => 0 //сумма выигрыша (общая) + ]; + if ($act01 == 1) { + $mn['l'] = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" AND `team` != "' . $this->users[$i]['team'] . '" LIMIT 1')); + $mn['l'] = $mn['l'][0]; + $mn['w'] = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" AND `team` = "' . $this->users[$i]['team'] . '" LIMIT 1')); + $mn['w'] = $mn['w'][0]; + $mn['m'] = round(($mn['l'] * $this->info['money3']) / 100 * 87, 2); + $gms[$i] = round(($mn['m'] / $mn['w']), 2); + } + } + // + //заносим данные в БД + //Поломка предметов + if ($act01 == 1) { + //победа + if ($this->users[$i]['dnow'] == 0) { + if ($this->users[$i]['hpNow'] < 1) { + $lom = 0.05; + } + } + } elseif ($act01 == 2) { + //поражение + $lom = 0.55; + } else { + //ничья + $lom = 0.05; + } + //$lom = round($lom*2.75,2); + $nlom = [0 => rand(0, 18), 1 => rand(0, 18), 2 => rand(0, 18), 3 => rand(0, 18)]; + if ($this->info['type'] == 564) { + $lom = 0; + } + if ($this->stats[$i]['silver'] >= 4) { + $lom = 0; + } + mysql_query('UPDATE `items_users` SET `iznosNOW` = `iznosNOW`+' . $lom . ' WHERE `inOdet` < "18" AND `inOdet` > "0" AND `uid` = "' . $this->users[$i]['id'] . '" AND `inOdet`!="0" AND `inOdet`!=' . $nlom[0] . ' AND `inOdet`!=' . $nlom[1] . ' AND `inOdet`!=' . $nlom[2] . ' AND `inOdet`!=' . $nlom[3] . ' LIMIT 18'); + + $prc = ''; + if ($this->users[$i]['align'] == 2) { + $this->users[$i]['battle_exp'] = floor($this->users[$i]['battle_exp'] / 2); + } + if ($this->users[$i]['animal'] > 0) { + $ulan = $u->testAction('`uid` = "' . $this->users[$i]['id'] . '" AND `vars` = "animal_use' . $this->info['id'] . '" LIMIT 1', + 1); + if (isset($ulan['id']) && $this->users[$i]['team'] == $this->info['team_win'] && $this->users[$i]['level'] > $ulan['vals']) { + $a004 = mysql_fetch_array(mysql_query('SELECT `max_exp`,`name` FROM `users_animal` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `id` = "' . $this->users[$i]['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); + //33% от опыта переходит зверю, но не более максимума + $aexp = (round($this->users[$i]['battle_exp'] / 100 * 33)); + if ($aexp > $a004['max_exp']) { + $aexp = $a004['max_exp']; + } + unset($ulan); + // + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat` + ) VALUES ( + '1','" . $this->users[$i]['city'] . "','" . $this->users[$i]['room'] . "','','" . $this->users[$i]['login'] . "' + ,'Ваш питомец "" . $a004['name'] . "" получил опыт: " . $aexp . "','-1','6','0')"); + // + $upd = mysql_query('UPDATE `users_animal` SET `exp` = `exp` + ' . $aexp . ' WHERE `id` = "' . $this->users[$i]['animal'] . '" AND `level` < ' . $this->users[$i]['level'] . ' LIMIT 1'); + if ($upd) { + $this->users[$i]['battle_exp'] = round($this->users[$i]['battle_exp'] / 100 * 67); + $this->info['addExp'] -= 33.333; + } + } + } + + $prsusers = mysql_fetch_array(mysql_query('SELECT SUM(`price1`) FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" LIMIT 1')); + unset($prsusers); + $btlstatus = $this->typeBattle($prsusers[0]); + if ($this->info['smert'] == 1) { + $btlstatus = [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение']; + } + // + if ($this->stats[$i]['clanpos'] > 0) { + if ($this->stats[$i]['clanpos'] == 1) { + $this->info['addExp'] += 0; + } elseif ($this->stats[$i]['clanpos'] == 2) { + $this->info['addExp'] += 0; + } elseif ($this->stats[$i]['clanpos'] == 3) { + $this->info['addExp'] += 0; + } + } + + unset($r1); + //Статусная битва + if ($btlstatus[0] > 0) { + if ($this->info['type'] == 99) { + $this->info['addExp'] += $btlstatus[1]; + } else { + $this->info['addExp'] += $btlstatus[0]; + } + } + + if ($this->users[$i]['align'] == 2 || $this->users[$i]['haos'] > time()) { + $this->stats[$i]['exp'] = -($this->info['addExp'] + 50); + } + if ($this->info['addExp'] + $this->stats[$i]['exp'] != 0) { + $prc = ' (' . (100 + $this->info['addExp'] + $this->stats[$i]['exp']) . '%)'; + } + if ($this->info['money'] > 0) { + if (isset($gm[$i])) { + $prc .= ' Вы выйграли ' . $gm[$i] . ' кр. за этот бой.'; + $u->addDelo(4, $this->users[$i]['id'], + '"System.battle": Персонаж выйграл ' . $gm[$i] . ' кр. (В бою №' . $this->info['id'] . ').', + time(), $this->info['city'], 'System.battle', 0, 0); + $this->users[$i]['money'] += $gm[$i]; + } elseif (isset($bm[$i])) { + $prc .= ' Вы заплатили ' . $bm[$i] . ' кр. за этот бой.'; + $u->addDelo(4, $this->users[$i]['id'], + '"System.battle": Персонаж проиграл ' . $gm[$i] . ' кр. (В бою №' . $this->info['id'] . ').', + time(), $this->info['city'], 'System.battle', 0, 0); + $this->users[$i]['money'] -= $bm[$i]; + } + } + // + if ($c['money_haot'] && $this->users[$i]['exp'] <= 200000000) { + if ($act01 == 1 && $this->info['razdel'] == 5 && $this->users[$i]['level'] >= 8) { + //Сколько нужно опыта набить + $trexp = [ + 8 => 1200, + 9 => 3000, + 10 => 4500, + 11 => 12000, + 12 => 20000, + 13 => 30000, + 14 => 30000, + 15 => 30000, + 16 => 30000, + 17 => 30000, + 18 => 30000, + 19 => 30000, + 20 => 30000, + 21 => 30000, + ]; + $trexp = $trexp[$this->users[$i]['level']]; + + //Какая цена фулла должна быть + $trmn = [ + 8 => 1000, + 9 => 3000, + 10 => 2500, + 11 => 3000, + 12 => 3000, + 13 => 3000, + 14 => 3000, + 15 => 3000, + 16 => 3000, + 17 => 3000, + 18 => 3000, + 19 => 3000, + 20 => 3000, + 21 => 3000, + ]; + $trmn = $trmn[$this->users[$i]['level']]; + + //Сколько екр дается + $admn = [ + 8 => 0.05, //0.05 + 9 => 0.065, //0.065 + 10 => 0.075, //0.075 + 11 => 0.085, //0.085 + 12 => 0.1, //0.1 + 13 => 0.1, + 14 => 0.1, + 15 => 0.1, + 16 => 0.1, + 17 => 0.1, + 18 => 0.1, + 19 => 0.1, + 20 => 0.1, + 21 => 0.1, + ]; + $admn = $admn[$this->users[$i]['level']]; + + if ($c['m'] >= 6 && $c['m'] <= 8) { + //Летний период + if ($c['w'] == 0 || $c['w'] == 5 || $c['w'] == 6) { + //Выходные дни + $admn = $admn * 2; + } + } elseif ($c['w'] == 0 || $c['w'] == 5 || $c['w'] == 6) { + //Выходные дни + $admn = $admn * 2; + } + if ($this->users[$i]['battle_exp'] < $trexp) { + //недостаточно опыта набито за бой + $prc .= ', Награда 0 ЕКР за этот бой (Мало опыта набили).'; + //недостаточно стоимость кр вещей + } elseif ($admn > 0) { + if ($this->info['type'] != 33) { + $prc .= ', Награда ' . $admn . ' ЕКР за этот бой.'; + } + $u->addDelo(4, $this->users[$i]['id'], + '"System.battle": Персонаж получил ' . $admn . ' ЕКР (В бою №' . $this->info['id'] . ').', + time(), $this->info['city'], 'System.battle', 0, 0); + $this->users[$i]['money2'] += $admn; + } + } + } + + if ($this->info['money3'] > 0) { + if (isset($gms[$i])) { + $prc .= ' Вы выйграли ' . $gms[$i] . ' $. за этот бой.'; + $u->addDelo(4, $this->users[$i]['id'], + '"System.battle": Персонаж выйграл ' . $gms[$i] . ' $. (В бою №' . $this->info['id'] . ').', + time(), $this->info['city'], 'System.battle', 0, 0); + $this->users[$i]['money3'] += $gms[$i]; + mysql_query('UPDATE `users` SET `money3` = `money3` + "' . $gms[$i] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + } elseif (isset($bms[$i])) { + $prc .= ' Вы заплатили ' . $bms[$i] . ' $. за этот бой.'; + $u->addDelo(4, $this->users[$i]['id'], + '"System.battle": Персонаж проиграл ' . $gms[$i] . ' $. (В бою №' . $this->info['id'] . ').', + time(), $this->info['city'], 'System.battle', 0, 0); + $this->users[$i]['money3'] -= $bms[$i]; + mysql_query('UPDATE `users` SET `money3` = `money3` - "' . $bms[$i] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + } + } + + $lime = [ + 8 => 18000, + 9 => 28000, + 10 => 84000, + 11 => 100, + 12 => 100, + 13 => 100, + 14 => 100, + 15 => 100, + 16 => 100, + 17 => 100, + 18 => 100, + 19 => 100, + 20 => 100, + 21 => 100, + ]; + + if ($this->users[$i]['level'] < 8) { + $lime = 5400; + } else { + $lime = $lime[$this->users[$i]['level']]; + } + + if ($this->stats[$i]['silver'] >= 5) { + $lime += round($lime); + } + + if ($this->users[$i]['stopexp'] == 1) { + $lime = 0; + $this->users[$i]['battle_exp'] = 0; + } + + if ($lime < $this->users[$i]['battle_exp'] && $c['limitedexp']) { + $this->users[$i]['battle_exp'] = $lime; + } + unset($lime); + + if ($btlstatus[0] > 0) { + if ($this->info['type'] == 99) { + $prc .= ' (' . $btlstatus[3] . ')'; + } else { + $prc .= ' (' . $btlstatus[2] . ')'; + } + } + + if ($this->info['dungeon'] == 1 && $this->users[$i]['team'] == $this->info['team_win']) { + //канализация лимит + $rep = mysql_fetch_array(mysql_query('SELECT `dl1`,`id` FROM `rep` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1')); + if ($rep['dl' . $this->info['dungeon']] > 0) { + $this->users[$i]['battle_exp'] += 3 * count($this->users); + if ($rep['dl' . $this->info['dungeon']] > $this->users[$i]['battle_exp']) { + $rep['dl' . $this->info['dungeon']] -= $this->users[$i]['battle_exp']; + } else { + $this->users[$i]['battle_exp'] = $rep['dl' . $this->info['dungeon']]; + $rep['dl' . $this->info['dungeon']] = 0; + } + mysql_query('UPDATE `rep` SET `dl' . $this->info['dungeon'] . '` = "' . $rep['dl' . $this->info['dungeon']] . '" WHERE `id` = "' . $rep['id'] . '" LIMIT 1'); + } else { + $this->users[$i]['battle_exp'] = 0; + } + } + + if ($this->users[$i]['battle_exp'] < 1) { + $this->users[$i]['battle_exp'] = 0; + } + + if ( + $this->users[$i]['battle_exp'] < 1 && + $this->users[$i]['twink'] == 0 && + $this->info['money'] == 0 && + $this->info['money3'] == 0 && + $this->info['kingfight'] == 0 && + empty($admnb) + ) { + $prc = ''; + } + + if ($this->user[$i]['host_reg'] == 'real_bot_user') { + $this->users[$i]['battle_exp'] = round($this->users[$i]['battle_exp'] / 3); + } + + if ($sinf != '') { + $sinf = ' ( ' . $sinf . ' )'; + } + + //--------------Лимит 8-9-------------- + + if ($this->users[$i]['level'] == 8 && $this->users[$i]['battle_exp'] >= 23000) { + $this->users[$i]['battle_exp'] = 23000; + } + if ($this->users[$i]['level'] == 9 && $this->users[$i]['battle_exp'] >= 31000) { + $this->users[$i]['battle_exp'] = 31000; + } + if ($this->users[$i]['level'] == 10 && $this->users[$i]['battle_exp'] >= 52000) { + $this->users[$i]['battle_exp'] = 52000; + } + if ($this->users[$i]['level'] >= 11 && $this->users[$i]['battle_exp'] >= 75000) { + $this->users[$i]['battle_exp'] = 75000; + } + //------------------------------------- + + if ($this->info['type'] != 33) { + $this->users[$i]['battle_text'] = 'Бой закончен. Всего вами нанесено урона: ' . floor($this->users[$i]['battle_yron']) . ' HP. Получено опыта: ' . (0 + $this->users[$i]['battle_exp']) . '' . $prc . '.' . $sinf; //stats + } + + /*Выпадение зубов в конце боя */ + if ($c['nolevel']) { + $rex95 = substr($this->users[$i]['exp'], -1); + if ($this->users[$i]['money4'] < 1000 && $this->users[$i]['exp'] == 12499) { + $rex95 = 6; + $rex95 = 5; + } + } else { + $rex95 = 5; + } + + if ($c['zuby'] && $this->info['dungeon'] == 0 && ($this->info['clone'] == 0 || $this->users[$i]['level'] < 5) && $rex95 != 9 && $this->info['type'] != 564) { + if ($this->users[$i]['align'] != 2 && $this->users[$i]['level'] >= 0 && $this->users[$i]['level'] < 8 && $this->users[$i]['battle_exp'] > 0) { + $rzb = 0; + + if ($this->get_chanse(50)) { + $rzb += rand(1, 3); + } elseif ($this->users[$i]['battle_exp'] > 15) { + $rzb += 1; + } + + $chzbs = 100; + + if ($this->stats[$i]['silver'] > 0) { + $chzbs = 150; + } + + if ($this->users[$i]['battle_exp'] > 9) { + if ($this->users[$i]['level'] > 1) { + //Нормальный зуб + if ($this->get_chanse(25 / 100 * $chzbs)) { + $rzb += 10; + } + } elseif ($this->users[$i]['level'] == 1 && $this->get_chanse(30 / 100 * $chzbs)) { + $rzb += 10; + } + + if ($this->users[$i]['level'] > 3 && $this->get_chanse(5 / 100 * $chzbs)) { + $rzb += 100; + } + } + + if ($this->users[$i]['team'] == $this->info['team_win']) { + //выиграли + if ($this->users[$i]['level'] < 8) { + $rzb += 1; + } + } elseif ($this->users[$i]['team'] == 0) { + //ничья + if ($this->get_chanse(25 / 100 * $chzbs) && $this->users[$i]['battle_exp'] > 2) { + $rzb = rand(0, 1); + } else { + $rzb = 0; + } + } else { + //проиграли + if ($this->users[$i]['level'] >= 1) { + $rzb = 0; + } else { + if ($this->users[$i]['battle_exp'] < 3) { + $rzb = 0; + } elseif ($this->user[$i]['lose'] > $this->user[$i]['win']) { + if ($this->get_chanse(5 / 100 * $chzbs)) { + $rzb = rand(0, 1); + } else { + $rzb = 0; + } + } elseif ($this->get_chanse(10 / 100 * $chzbs)) { + $rzb = rand(0, 1); + } + } + $rzb = 0; + } + + if ($rex95 == 6) { + $rzb = $this->users[$i]['battle_exp'] > 10 ? rand(0, 1) : 0; + } + + if ($rzb > 0 && rand(0, 1000) <= 500) { + $rzb = rand(1, 3); + } + if ($rzb > 0) { + if ($this->stats[$i]['silver'] >= 5) { + $rzb = $rzb * 2; + } + mysql_query('UPDATE `users` SET `money4` = `money4` + "' . $rzb . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + $this->users[$i]['battle_text'] .= ' Вы получили ' . $u->zuby($rzb, + 1) . ' за этот бой.'; + } + } + } + + if ($this->info['priz'] > 0) { + //Призовой хаот + /* + [4754] + 2-3 лвл = 1 жетон + 4-5 лвл = 1 жетона + 6-7 лвл = 2 жетонов + 8-9 лвл = 3 жетонов + В случаи победы (х3) + + */ + + $tmon = [ + 2 => 1, + 3 => 1, + 4 => 1, + 5 => 1, + 6 => 1, + 7 => 2, + 8 => 3, + 9 => 3, + 10 => 5, + 11 => 5, + ]; + $tmon = $tmon[$this->users[$i]['level']]; + // + $tmonc = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `battle` WHERE `id` IN ( SELECT `battle_id` FROM `battle_last` WHERE `uid` = "' . $this->users[$i]['id'] . '" ) AND `priz` > 0 AND `time_start` > "' . strtotime(date('d.m.Y')) . '"')); + $tmonc = $tmonc[0]; + // + if ($this->users[$i]['team'] == $this->info['team_win']) { + //При выигрыше увеличиваем + if ($tmonc < 1) { + $tmonc = 1; + } elseif ($tmonc > 96) { + $tmonc = 96; + } + $tmon = ($tmon * $tmonc); + } + // + $tmoni = 1; + while ($tmoni <= floor($tmon / 2)) { + $u->addItem(4754, $this->users[$i]['id'], ''); // + $tmoni++; + } + // + $this->users[$i]['battle_text'] .= ' За призовой хаот вы получаете Призовой Жетон (x' . floor($tmon / 2) . '). (Чем больше призовых хаотов вы примите за сутки, тем больше будет выдаваться жетонов при победе! Призовых хаотов посещено сегодня ' . ($tmonc) . '/96 )'; + // + unset($tmon, $tmoni); + } + //Снижение времени Право на подвиг Титул за победу в хаоте + if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $this->users[$i]['team'] == $this->info['team_win']) { + //ТУТ2 + $u->repexp_add($this->users[$i]['id'], 2); //Репутация за поб в хаоте +2 + $check = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `id_eff` = 478 AND `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = 0 ORDER BY `overType` DESC LIMIT 1;')); + if (isset($check['id'])) { + $urcheck = 10000; + if ($this->users[$i]['level'] == 8) { + $urcheck = 3000; + } elseif ($this->users[$i]['level'] == 9) { + $urcheck = 7000; + } elseif ($this->users[$i]['level'] == 10) { + $urcheck = 12000; + } elseif ($this->users[$i]['level'] >= 11) { + $urcheck = 18000; + } + + if ($this->users[$i]['battle_yron'] >= $urcheck) { + mysql_query('UPDATE `eff_users` SET `timeUse` = `timeUse` - 300 WHERE `id_eff`=478 AND `delete` = 0 AND `uid` =' . $this->users[$i]['id'] . ' LIMIT 1'); + $this->users[$i]['battle_text'] .= ' За победу в хаоте и нанесение урона в ' . $urcheck . ' и более вы получаете -5 мин. к праву на подвиг!'; + } + } + mysql_query('UPDATE `users_achiv` SET `vx`= `vx`+1 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); // + + } + //Награда за клан вар + if ($this->info['dungeon'] == 0 && $this->info['type'] == 250 && $this->users[$i]['team'] == $this->info['team_win']) { + mysql_query('UPDATE `users_achiv` SET `kw`= `kw`+1 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + if (date('w') == 0 || date('w') == 6 || date('w') == 4) { + $u->repexp_add($this->users[$i]['id'], 25); //Клановые войны(победа) 25 + } + } + //Награда за клан вар + if ($this->info['dungeon'] == 0 && $this->info['type'] == 99 && $this->users[$i]['team'] == $this->info['team_win']) { + if (date('w') == 0 || date('w') == 6 || date('w') == 5) { + $u->repexp_add($this->users[$i]['id'], 10); //Кровавые войны(победа) 10 + } + } + + //Новая выдача на трупожора + if ($this->info['dungeon'] == 0 && $this->info['type'] == 500 && $this->users[$i]['team'] == $this->info['team_win'] && $this->users[$i]['no_ip'] != 'trupojor' && $this->users[$i]['bot'] == 0) { + if ($this->users[$i]['level'] > 9) { + $mid = 903093; + } else { + $mid = 89489; + } + $mon = mysql_fetch_array(mysql_query('SELECT * FROM `aaa_monsters` WHERE `uid` = "' . $mid . '" LIMIT 1')); + + if ($this->users[$i]['battle_yron'] >= 2000) { + $ritem = rand(1, 100); + if ($ritem <= 20) { + $mon['win_itm'] = '4459@1'; + } elseif ($ritem <= 40) { + $mon['win_itm'] = '4460@1'; + } elseif ($ritem <= 60) { + $mon['win_itm'] = '4461@1'; + } elseif ($ritem <= 80) { + $mon['win_itm'] = '4462@1'; + } else { + $mon['win_itm'] = '4463@1'; + } + } elseif ($this->users[$i]['battle_yron'] >= 1500) { + $ritem = rand(1, 100); + if ($ritem <= 20) { + $mon['win_itm'] = '4459@1'; + } elseif ($ritem <= 40) { + $mon['win_itm'] = '4460@1'; + } elseif ($ritem <= 60) { + $mon['win_itm'] = '4461@1'; + } elseif ($ritem <= 80) { + $mon['win_itm'] = '4462@1'; + } else { + $mon['win_itm'] = '4463@1'; + } + } elseif ($this->users[$i]['battle_yron'] >= 1000) { + $ritem = rand(1, 100); + if ($ritem <= 25) { + $mon['win_itm'] = '4460@1'; + } elseif ($ritem <= 50) { + $mon['win_itm'] = '4461@1'; + } elseif ($ritem <= 75) { + $mon['win_itm'] = '4462@1'; + } else { + $mon['win_itm'] = '4463@1'; + } + } else { + $mon['win_itm'] = '4392@1'; + $timewait = 0; + } + if ($this->users[$i]['battle_yron'] > 0) { + mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","478","111","' . $this->users[$i]['id'] . '","Право на подвиг","pravonapodvig=1","' . time() . '")'); + } + mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("' . $this->users[$i]['id'] . '","' . (time() - $timewait) . '","capitalcity","' . $this->users[$i]['room'] . '","end_trup"," ","","")'); + mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","479","112","' . $u->info['id'] . '","Защита от нападения","zashitatk=1","' . time() . '")'); + $ritem = rand(1, 1000); + if ($ritem == 555) { + $mon['win_itm'] = $mon['win_itm'] . ',5022@1'; + } + + $this->addGlobalItems($mid, $this->users[$i]['id'], $mon['win_itm'], $mon['win_eff'], + $mon['win_ico'], 1, $mon['win_money1'], $mon['win_money2']); //$mon['win_exp'] + + } + + if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $u->info['battle_yron'] >= 2000) { + //Реликвия Ангела ang_g + if ($this->users[$i]['team'] == $this->info['team_win']) { + //При выигрыше увеличиваем + $tmoni = 2; + } else { + $tmoni = 1; + } + + $tmon = $tmoni; + $effblago = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = ' . $this->users[$i]['id'] . ' AND `delete` = 0 AND `id_eff`= 414 LIMIT 1')); + if (isset ($effblago['id'])) { + $limitg = 50; + } else { + $limitg = 25; + } + while ($tmoni >= 1) { + if ($u->info['ang_g'] < $limitg) { + $u->addItem(4754, $this->users[$i]['id'], ''); + mysql_query('UPDATE `users` SET `ang_g`=`ang_g`+1 WHERE `id` =' . $this->users[$i]['id']); + } else { + $tmon--; + } + $tmoni--; + } + + if ($this->info['type'] != 33) { + $this->users[$i]['battle_text'] .= ' За хаот вы получаете Реликвия Ангела (' . $tmon . '). Всего [' . ($u->info['ang_g'] + $tmon) . '/' . $limitg . '] в день. '; + } + unset($tmon, $tmoni, $effblago, $limitg); + } + + + if ($this->info['razdel'] == 5 || $this->info['razdel'] == 4) { + if (date('d.m') == '31.10' || (date('m') == 11 && date('d') < 7)) { + //Хэллоуин 4504 + $this->users[$i]['battle_text'] .= ' Вы получаете Тыква (x1).'; + $u->addItem(4504, $this->users[$i]['id'], '|sudba=1'); + } + } + + + //Добавляем воинственность + if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $this->users[$i]['exp'] >= 1500 + ) { + if ($this->users[$i]['battle_exp'] > 100 * $this->users[$i]['level']) { + $rzbvo = $this->users[$i]['battle_exp'] * 6 / 1000; + + if ($this->users[$i]['level'] == 8) { + if ($rzbvo >= 100) { + $rzbvo = 100; + } + } + if ($this->users[$i]['level'] == 9) { + if ($rzbvo >= 150) { + $rzbvo = 150; + } + } + if ($this->users[$i]['level'] == 10) { + if ($rzbvo >= 200) { + $rzbvo = 200; + } + } + if ($this->users[$i]['level'] == 11) { + if ($rzbvo >= 250) { + $rzbvo = 250; + } + } + if ($this->users[$i]['level'] == 12) { + if ($rzbvo >= 250) { + $rzbvo = 250; + } + } + if ($this->info['type'] != 33) { + $this->users[$i]['battle_text'] .= ' Вы получили ' . $rzbvo . ' воинственности за этот бой.'; + } + mysql_query('UPDATE `rep` SET `rep3` = `rep3` + ' . $rzbvo . ' WHERE `id` = ' . $this->users[$i]['id']); + mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("' . $this->users[$i]['id'] . '","' . time() . '","capitalcity","' . $this->users[$i]['room'] . '","end_xaot"," ","' . $zadID . '","")'); + } + } + + if ($this->stats[$i]['hpNow'] >= 1) { + $this->stats[$i]['test_heal'] = mysql_fetch_array(mysql_query('SELECT SUM(`yrn`) FROM `battle_stat` WHERE `uid2` = "' . $this->users[$i]['id'] . '" AND `battle` = "' . $this->info['id'] . '" LIMIT 1')); + $this->stats[$i]['test_heal'] = $this->stats[$i]['test_heal'][0]; + $this->stats[$i]['test_start'] = mysql_fetch_array(mysql_query('SELECT `hpStart` FROM `battle_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `battle` = "' . $this->info['id'] . '" LIMIT 1')); + $this->stats[$i]['test_start'] = $this->stats[$i]['test_start']['hpStart']; + // + $this->stats[$i]['hpNow'] = ($this->stats[$i]['test_start'] - $this->stats[$i]['test_heal']); + if ($this->stats[$i]['hpNow'] < 1) { + $this->stats[$i]['hpNow'] = 1; + } + } else { + $this->stats[$i]['hpNow'] = 0; + } + + unset($this->stats[$i]['test_heal']); + + $this->users[$i]['last_b'] = $this->info['id']; //stats + $this->users[$i]['last_a'] = $act01; + $this->users[$i]['battle'] = -1; //users + $this->users[$i]['battle_yron'] = 0; //stats + + $this->users[$i]['exp'] += $this->users[$i]['battle_exp']; //users + + //Добавляем клан опыт (Все кроме пещер) + + if ($this->users[$i]['clan'] > 0) { + $cpr = 1; + if ($this->info['typeBattle'] == 9) { + $cpr = 25; + } elseif ($this->info['typeBattle'] == 50) { + $cpr = 65; + } + if ($this->stats[$i]['silver'] >= 5) { + $cpr = floor($cpr / 100 * 150); + } + mysql_query('UPDATE `clan` SET `exp` = `exp` + "' . round($this->users[$i]['battle_exp'] / 100 * $cpr) . '" WHERE `id` = "' . $this->users[$i]['clan'] . '" LIMIT 1'); + } + + $this->users[$i]['battle_exp'] = 0; //stats + + if ($this->users[$i]['team'] == $this->info['team_win']) { + mysql_query('UPDATE `rep` SET `n_capitalcity` = `n_capitalcity` + ' . $this->users[$i]['bn_capitalcity'] . ' ,`n_demonscity` = `n_demonscity` + ' . $this->users[$i]['bn_demonscity'] . ' ,`n_demonscity` = `n_demonscity` + ' . $this->users[$i]['bn_suncity'] . ' WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + } + + //репутация + $this->users[$i]['bn_demonscity'] = 0; + $this->users[$i]['bn_capitalcity'] = 0; + $this->users[$i]['bn_suncity'] = 0; + //завершение эффектов с финишем + $spe = mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `file_finish` != "" AND `v1` = "priem" LIMIT 30'); + while ($ple = mysql_fetch_array($spe)) { + if (file_exists('../../_incl_data/class/priems/' . $ple['file_finish'] . '.php')) { + require('../../_incl_data/class/priems/' . $ple['file_finish'] . '.php'); + } + } + //обновляем данные + mysql_query('DELETE FROM `eff_users` WHERE `v1` = "priem" AND `uid` = "' . $this->users[$i]['id'] . '" LIMIT 50'); + if ($dnr == 1) { + if ($this->users[$i]['room'] == 370) { + $dies = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `dn` = "' . $this->users[$i]['dnow'] . '" AND `vars` = "dielaba" LIMIT 1')); + $dies = $dies[0]; + mysql_query('INSERT INTO `dungeon_actions` (`dn`,`uid`,`x`,`y`,`time`,`vars`,`vals`) VALUES ( + "' . $this->users[$i]['dnow'] . '","' . $this->users[$i]['id'] . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '","' . time() . '","dielaba","" + )'); + } else { + $dies = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `dn` = "' . $this->users[$i]['dnow'] . '" AND `vars` = "die" LIMIT 1')); + $dies = $dies[0]; + mysql_query('INSERT INTO `dungeon_actions` (`dn`,`uid`,`x`,`y`,`time`,`vars`,`vals`) VALUES ( + "' . $this->users[$i]['dnow'] . '","' . $this->users[$i]['id'] . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '","' . time() . '","die","" + )'); + } + if ($dies < 2 || $this->info['dungeon'] == 15) { + // + $tshbn = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = 0 AND `item_id` = "4910" LIMIT 1')); + if (isset($tshbn['id'])) { + //выбрасываем шайбу + mysql_query('DELETE FROM `items_users` WHERE `id` = "' . $tshbn['id'] . '" LIMIT 1'); + // + mysql_query('INSERT INTO `dungeon_obj` ( + `name`,`dn`,`x`,`y`,`img`,`delete`,`action`,`for_dn`, + `type`,`w`,`h`,`s`,`s2`,`os1`,`os2`,`os3`,`os4`,`type2`,`top`,`left`,`date` + ) VALUES ( + "Шайба","' . $this->info['dn_id'] . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '","shaiba.png","0","fileact:15/shaiba","0", + "0","120","220","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt1:69,rl1:-47,rt2:74,rl2:126,rt3:76,rl3:140,rt4:80,rl4:150}" + )'); + // + } + //телепортируем в рестарт (координата 0х0) + $this->users[$i]['x'] = $this->users[$i]['res_x']; + $this->users[$i]['y'] = $this->users[$i]['res_y']; + $this->users[$i]['s'] = $this->users[$i]['res_s']; + $r_n = mysql_fetch_array(mysql_query('SELECT `name` FROM `room` WHERE `id` = "' . (int)$this->users[$i]['room'] . '" LIMIT 1')); + if ($this->users[$i]['room'] == 370) { + if ($this->users[$i]['sex'] == 0) { + $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб и находится в начале лабиринта'; + } else { + $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла и находится в начале лабиринта'; + } + } else { + if ($this->users[$i]['sex'] == 0) { + $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб и находится в комнате "' . $r_n['name'] . '"'; + } else { + $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла и находится в комнате "' . $r_n['name'] . '"'; + } + } + } elseif ($this->info['dungeon'] == 102) { + $nld = ''; + $lab = mysql_fetch_array(mysql_query('SELECT `id`,`users` FROM `laba_now` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1')); + if ($lab['users'] < 2) { + //Удаляем подземелье + mysql_query('DELETE FROM `laba_now` WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `laba_map` WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `laba_obj` WHERE `lib` = "' . $lab['id'] . '"'); + mysql_query('DELETE FROM `laba_act` WHERE `lib` = "' . $lab['id'] . '"'); + mysql_query('DELETE FROM `laba_itm` WHERE `lib` = "' . $lab['id'] . '"'); + } else { + $lab['users']--; + mysql_query('UPDATE `laba_now` SET `users` = "' . $lab['users'] . '" WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); + } + mysql_query('UPDATE `stats` SET `dnow` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `room` = "369" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + //удаляем все предметы которые пропадают после выхода из пещеры + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` < 1234567890 AND `inShop` = "0" AND (`dn_delete` = "1" OR `data` LIKE "%fromlaba=1%")'); + if ($this->users[$i]['login'] != '') { + if ($this->users[$i]['sex'] == 0) { + $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб без права на воскрешение и покидает подземелье' . $nld; + } else { + $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла без права на воскрешение и покидает подземелье' . $nld; + } + } + } else { + $tinf = mysql_fetch_array(mysql_query('SELECT `uid` FROM `dungeon_now` WHERE `id` = "' . $this->info['dn_id'] . '" LIMIT 1')); + $nld = ''; + if ($tinf['uid'] == $this->users[$i]['id']) { + $tinf = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dnow` = "' . $this->info['dn_id'] . '" AND `hpNow` >= 1 LIMIT 1')); + if (isset($tinf['id'])) { + $tinf = mysql_fetch_array(mysql_query('SELECT `id`,`login` FROM `users` WHERE `id` = "' . $tinf['id'] . '" LIMIT 1')); + $nld .= ', новым лидером становится "' . $tinf['login'] . '"'; + mysql_query('UPDATE `dungeon_now` SET `uid` = "' . $tinf['id'] . '" WHERE `id` = "' . $this->info['dn_id'] . '" LIMIT 1'); + } + } + $rooms = [ + 374 => 372, //ПТП (Кэпитал сити) + 189 => 188, //Водосток (Кэпитал сити) + 392 => 393, //Шахты (Кэпитал сити) + + 398 => 397, //Шахты (Ангелс сити) + 243 => 395, //Водосток (Ангелс сити) + 360 => 242, //Бездна (Ангелс сити) + + 19 => 293 //Катакомбы + ]; + // $n_rm = $rooms[$this->users[$i]['room']]; + mysql_query('UPDATE `stats` SET `dnow` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `room` = "321" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + //удаляем все предметы которые пропадают после выхода из пещеры + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `dn_delete` = "1" LIMIT 1000'); + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "1189" OR `item_id` = "4447" OR `item_id` = "1174") LIMIT 1000'); + if ($this->users[$i]['sex'] == 0) { + $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб без права на воскрешение и покидает подземелье' . $nld; + } else { + $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла без права на воскрешение и покидает подземелье' . $nld; + } + } + if ($rtxt != '') { + mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[$i]['city'] . "','" . $this->users[$i]['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); + } + } + + mysql_query('UPDATE `users` SET `login2` = "" WHERE `battle` = "' . $this->info['id'] . '"'); + mysql_query('UPDATE `users` SET `login2` = "", `money` = "' . $this->users[$i]['money'] . '", `money2` = "' . $this->users[$i]['money2'] . '",`win` = "' . $this->users[$i]['win'] . '",`lose` = "' . $this->users[$i]['lose'] . '",`nich` = "' . $this->users[$i]['nich'] . '",`battle` = "-1" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + + if ($u->info['id'] == $this->users[$i]['id']) { + $u->info['battle_text'] = $this->users[$i]['battle_text']; + } + + mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->stats[$i]['hpNow'] . '",`mpNow` = "' . $this->stats[$i]['mpNow'] . '",`bn_capitalcity` = 0,`bn_demonscity` = 0,`smena` = 3,`tactic7` = "-100",`x`="' . $this->users[$i]['x'] . '",`y`="' . $this->users[$i]['y'] . '",`priems_z`="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",`last_pr`="0",`tactic1`="0",`tactic2`="0",`tactic3`="0",`tactic4`="0",`tactic5`="0",`tactic6`="0.00000000",`tactic7`="10",`exp` = "' . $this->users[$i]['exp'] . '",`battle_exp` = "' . $this->users[$i]['battle_exp'] . '",`battle_text` = "' . $this->users[$i]['battle_text'] . '",`battle_yron` = "0",`enemy` = "0",`last_b`="' . $this->info['id'] . '",`regHP` = "' . time() . '",`regMP` = "' . time() . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + if ($this->info['turnir'] == 0) { + //пишем в чат + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$i]['city'] . "','" . $this->users[$i]['room'] . "','','" . $this->users[$i]['login'] . "','" . $this->users[$i]['battle_text'] . "','-1','6','0')"); + } else { + mysql_query('UPDATE `turnirs` SET `winner` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['turnir'] . '" LIMIT 1'); + } + //завершаем сам бой + mysql_query('UPDATE `battle` SET `time_over` = "' . time() . '",`team_win` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + + // Жрать хочет + if ($this->users[$i]['animal'] > 0) { + $a = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal` WHERE `uid` = ' . $this->users[$i]['id'] . ' AND `id` = ' . $this->users[$i]['animal'] . ' AND `pet_in_cage` = 0 AND `delete` = 0 LIMIT 1')); + if (isset($a['id'])) { + if ($a['eda'] < 1) { + $u->send('', $this->users[$i]['room'], $this->users[$i]['city'], '', + $this->users[$i]['login'], '' . $a['name'] . ' нуждается в еде...', + time(), 6, 0, 0, 0, 1); + } + } + } + mysql_query("UPDATE `stats` SET `battle_text` = '',`last_b` = 0 WHERE `id` = " . $this->users[$i]['id']); + mysql_query("UPDATE `battle_users` SET `finish` = 1 WHERE `uid` = " . $this->users[$i]['id']); + $this->saveLogs(); + if ($u->info['battle'] != 0 && !isset($u->info['battle_lsto'])) { + echo ''; + } + } + } else { + sleep(2); + } + mysql_query('UPDATE `battle` SET `testfinish` = 0 WHERE `id` = ' . $this->info['id']); + mysql_query('UNLOCK TABLES'); + } + + //Выдаем предметы + private $ainm = []; + + /** + * @param $uid + * @param int $itemId + * @param string $data + * @return void + */ + private function addGlobalItem($uid, $itemId, $data) + { + $room = $this->users[$this->uids[$uid]]['room']; + $login = $this->users[$this->uids[$uid]]['login']; + $q = "insert into items_local (room, time, item_id, data, tr_login, colvo) values + ($room, unix_timestamp(), $itemId, $data, $login, 1)"; + mysql_query($q); + } + + private function addGlobalItems($bid, $uid, $itm, $eff, $ico, $exp, $cr, $ecr) + { + global $u; + // + //Выпадение дропа на ЦП + if ($bid == 1008) { + //Старый Новый Год + $jit = 0; + $iit = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `online` > unix_timestamp() - 120')); + $iit = floor($iit[0] / 20); + $iit = rand(1, $iit); + while ($jit < $iit) { + if (rand(0, 100) < 50) { + $svtk = array_fill(0, 71, 1000); + array_push($svtk, + 1461, 1462, 1463, 4037, + 4038, 4039, 4040, 911, + 1172, 1173, 2142, 2141, + 2143, 2870, 2144); + + $svtk = $svtk[rand(0, count($svtk) - 1)]; + if ($svtk == 1000) { + $this->addGlobalItem($uid, $svtk, '|nosale=1|srok=259200'); + $this->addGlobalItem($uid, $svtk, '|nosale=1|srok=259200'); + $this->addGlobalItem($uid, $svtk, '|nosale=1|srok=259200'); + $this->addGlobalItem($uid, $svtk, '|nosale=1|srok=259200'); + $this->addGlobalItem($uid, $svtk, '|nosale=1|srok=259200'); + $this->addGlobalItem($uid, $svtk, '|nosale=1|srok=259200'); + } + $this->addGlobalItem($uid, $svtk, '|nosale=1|srok=259200'); + } + $jit++; + } + unset($svtk); + } elseif ($bid == 1007) { + //Хэллоуин, Тыквоголовый CAPITAL CITY + $jit = 0; + $iit = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `online` > unix_timestamp() - 120')); + $iit = floor($iit[0] / 20); + $iit = rand(1, $iit); + while ($jit < $iit) { + if (rand(0, 100) < 50) { + $this->addGlobalItem($uid, 4504, ''); + } + $jit++; + } + } elseif ($bid == 1006) { + //Трупожор CAPITAL CITY + if (rand(0, 100) < 10) { + $this->addGlobalItem($uid, 4451, 'srok=86400'); + } + } elseif ($bid == 1000) { + //Трупожор CAPITAL CITY + $this->addGlobalItem($uid, 4460, 'srok=2592000'); + } elseif ($bid == 1001) { + //Трупожор CAPITAL CITY + $this->addGlobalItem($uid, 4461, 'srok=2592000'); + } elseif ($bid == 1002) { + //Трупожор CAPITAL CITY + $this->addGlobalItem($uid, 4462, 'srok=2592000'); + } elseif ($bid == 1003) { + //Трупожор CAPITAL CITY + $this->addGlobalItem($uid, 4463, 'srok=2592000'); + } elseif ($bid == 1004) { + //Трупожор CAPITAL CITY + $this->addGlobalItem($uid, 4459, 'srok=2592000'); + } + + if ($exp >= 0) { + $this->users[$this->uids[$uid]]['battle_exp'] += round($exp * $this->users[$this->uids[$uid]]['battle_yron'] / $this->stats[$this->uids[$bid]]['hpAll']); + mysql_query('UPDATE `stats` SET `battle_exp` = "' . mysql_real_escape_string($this->users[$this->uids[$uid]]['battle_exp']) . '" WHERE `id` = "' . mysql_real_escape_string($uid) . '" LIMIT 1'); + } + + if ($cr != '' && $cr > 0) { + if ($this->stats[$this->uids[$uid]]['hpNow'] > 0) { + mysql_query('UPDATE `users` SET `money` = (`money` + ' . mysql_real_escape_string($cr) . ') WHERE `id` = "' . mysql_real_escape_string($uid) . '" LIMIT 1'); + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы получили кредиты: " . mysql_real_escape_string($cr) . " кр.','-1','6','0')"); + } + } + // + if ($ecr != '' && $ecr > 0) { + if ($this->stats[$this->uids[$uid]]['hpNow'] > 0) { + $this->users[$this->uids[$uid]]['money2'] += $ecr; + $resulttp = mysql_query('UPDATE `users` SET `money2` = (`money2` + ' . mysql_real_escape_string($ecr) . ') WHERE `id` = "' . $this->users[$this->uids[$uid]]['id'] . '" LIMIT 1'); + if (!$resulttp) { + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Трупожор был пуст!!!','-1','6','0')"); + $u->addDelo(4, $this->users[$this->uids[$uid]]['id'], + '"System.battle>": (В бою трупожор), ПУСТ!!! ', + time(), + $this->users[$this->uids[$uid]]['city'], 'System.battle', 0, 0); + } else { + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы получили Евро-кредиты: " . mysql_real_escape_string($ecr) . " екр.','-1','6','0')"); + $u->addDelo(4, $this->users[$this->uids[$uid]]['id'], + '"System.battle": Персонаж получил ' . $ecr . ' ЕКР (В бою трупожор), сейчас: ' . $this->users[$this->uids[$uid]]['money2'] . ' ЕКР', + time(), $this->users[$this->uids[$uid]]['city'], 'System.battle', 0, 0); + } + } + } + // + if ($ico != '') { + /* + 0(тип, 1 - значок, 2 - подвиг)@ + 1(время в минутах)@ + 2(название картинки)@ + 3(название)@ + 4(требует остаться в живых 0 или 1, либо игрок умер -1)@ + 5(требует набить с ботам урона в % Например 0.001)@ + 6(действия например: add_s1=5|add_hpAll=50)@ + 7(Требует другой значок, название картинки)@ + 8(плюсует значок 0 или 1)@ + 9(удаляем прошлый значок 0 or 1) + */ + $i = 0; + $txt = ''; + $ico = explode('#', $ico); + while ($i < count($ico)) { + $ico_e = explode('@', $ico[$i]); + if (isset($ico_e[3])) { + // + $add = 1; + if ($ico_e[4] == 1 && floor($this->stats[$this->uids[$uid]]['hpNow']) < 1) { + $add = 0; + } + if ($add == 1) { + $ins = false; + if ($ico_e[8] == 0) { + $ins = true; + if ($ico_e[9] == 1) { + mysql_query('DELETE FROM `users_ico` WHERE `uid` = ' . (int)$uid . ' AND `img` = ' . mysql_real_escape_string($ico_e[2])); + } + } else { + $old_ico = mysql_fetch_array(mysql_query('SELECT `id` FROM `users_ico` WHERE `uid` = ' . (int)$uid . ' AND (`endTime` > unix_timestamp() OR `endTime` = 0) AND `img` = ' . mysql_real_escape_string($ico_e[2]) . ' LIMIT 1')); + if (!isset($old_ico['id'])) { + $ins = true; + } else { + if ($old_ico['id'] > 0) { + $txt .= ', "' . $ico_e[3] . ' (Обновление)"'; + mysql_query('UPDATE `users_ico` SET `x` = `x` + 1,`endTime` = ' . (time() + $ico_e[1] * 60) . ' WHERE `id` = ' . $old_ico['id']); + } else { + $ins = true; + } + } + unset($old_ico); + } + + if ($ins) { + if ($ico_e[9] == 1) { + mysql_query('DELETE FROM `users_ico` WHERE `uid` = ' . mysql_real_escape_string($uid) . ' AND `img` = ' . mysql_real_escape_string($ico_e[2])); + } + mysql_query('INSERT INTO `users_ico` (`uid`,`time`,`text`,`img`,`endTime`,`type`,`bonus`) VALUES ( + ' . mysql_real_escape_string($uid) . ', + unix_timestamp(), + ' . mysql_real_escape_string($ico_e[3]) . ', + ' . mysql_real_escape_string($ico_e[2]) . ', + ' . mysql_real_escape_string(time() + $ico_e[1] * 60) . ', + ' . mysql_real_escape_string($ico_e[0]) . ', + ' . mysql_real_escape_string($ico_e[6]) . ' + )'); + $txt .= ', "' . $ico_e[3] . '"'; + } + } + } + $i++; + } + if ($txt != '') { + $txt = ltrim($txt, ', '); + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы совершили подвиг: " . mysql_real_escape_string($txt) . "','-1','6','0')"); + } + } + // + if ($itm != '') { + $i = 0; + $txt = ''; + $itm = explode(',', $itm); + while ($i < count($itm)) { + $itm_e = explode('@', $itm[$i]); + if ($itm_e[0] > 0) { + $j = 0; + while ($j < $itm_e[1]) { + $u->addItem($itm_e[0], $uid, '|' . $itm_e[2]); + $j++; + } + if (!isset($this->ainm[$itm_e[0]])) { + $this->ainm[$itm_e[0]] = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = ' . mysql_real_escape_string($itm_e[0]))); + } + if (isset($this->ainm[$itm_e[0]]['id'])) { + //Добавляем текст о добавлении предмета + $txt .= ', ' . $this->ainm[$itm_e[0]]['name'] . ''; + if ($itm_e[1] > 1) { + $txt .= ' (x' . $itm_e[1] . ')'; + } + } + } + $i++; + } + if ($txt != '') { + $txt = ltrim($txt, ', '); + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы получили предметы: " . mysql_real_escape_string($txt) . "','-1','6','0')"); + } + } + } + + /** Удар + * @return void + */ + private function addNewAtack() + { + global $u; + if (!isset($this->ga[$u->info['id']][$u->info['enemy']])) { + if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] > 0) { + $us = $this->stats[$this->uids[$u->info['id']]]; + $i = 1; + $no = 0; + + while ($i <= $us['zona']) { + if ($this->uAtc['a'][$i] == 0) { + $no = 1; + } + $i++; + } + + if ($this->uAtc['b'] == 0) { + $no = 1; + } + + if ($no == 0) { + //наносим удар + if ($u->info['enemy'] > 0) { + if (!isset($this->ga[$u->info['enemy']][$u->info['id']])) { + if ( + $this->stats[$this->uids[$u->info['id']]]['hpNow'] >= 1 && + $this->stats[$this->uids[$u->info['enemy']]]['hpNow'] >= 1 + ) { + //наносим новый удар + $a = $this->uAtc['a'][1] . + $this->uAtc['a'][2] . + $this->uAtc['a'][3] . + $this->uAtc['a'][4] . + $this->uAtc['a'][5]; + $b = $this->uAtc['b']; + mysql_query('DELETE FROM `battle_act` WHERE `battle` = ' . $this->info['id'] . ' AND ((`uid2` = ' . $u->info['id'] . ' AND `uid1` = ' . $u->info['enemy'] . ') OR (`uid1` = ' . $u->info['id'] . ' AND `uid2` = ' . $u->info['enemy'] . ')) LIMIT 2'); + $d = mysql_query('INSERT INTO `battle_act` (`battle`,`time`,`uid1`,`uid2`,`a1`,`b1`) VALUES (' . $this->info['id'] . ',' . time() . ',' . $u->info['id'] . ',' . $u->info['enemy'] . ',' . $a . ',' . $b . ')'); + if (!$d) { + $this->e = 'Не удалось нанести удар по противнику...'; + } else { + $this->ga[$u->info['id']][$u->info['enemy']] = mysql_insert_id(); + } + } + } else { + //отвечаем на удар противника + if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] >= 1 && $this->stats[$this->uids[$u->info['enemy']]]['hpNow'] >= 1) { + if (isset($this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['id'])) { + $this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['a2'] = $this->uAtc['a'][1] . $this->uAtc['a'][2] . $this->uAtc['a'][3] . $this->uAtc['a'][4] . $this->uAtc['a'][5]; + $this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['b2'] = $this->uAtc['b']; + $this->startAtack($this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['id']); + } + } + } + } + } else { + $this->e = 'Выберите зоны удара и блока'; + } + } else { + $this->e = 'Для вас поединок закончен, ожидайте пока завершат другие...'; + } + } + } + + + /** Запускаем магические предметы, если в них что-то встроено. + * Ещё один дебильный файл с инклюдами. Неиспользуемые переменные могут передаваться в инклюды. + *
Файлы: /class/priems/* + * @param int $uid1 + * @param int $uid2 + * @param int $end если > 0, то подключается *.end.php, иначе *.php + * @return void + */ + private function magicItems($uid1, $uid2, $end) + { + if (!isset($this->stats[$this->uids[$uid1]])) { + return; + } + foreach ($this->stats[$this->uids[$uid1]]['items'] as $item) { + if (!$item['id'] || !$this->lookStats($item['data'])['bm_a1']) { + continue; + } + $file = $this->lookStats($item['data'])['bm_a1'] . $end > 0 ? '.end.php' : '.php'; + if (file_exists('../../_incl_data/class/priems/' . $file)) { + require_once '../../_incl_data/class/priems/' . $file; + } + } + } + + private $rehodeff = []; + + //Поглощение урона + private $poglast = []; + + public function testPogB($uid, $yr, $pliid, $test = 0) + { + $yr2 = $yr; + + $checktuman = mysql_fetch_array(mysql_query('SELECT id FROM `eff_users` WHERE `uid` = ' . $uid . ' + AND v2 in (273, 286, 287, 288) + AND `delete` =0 LIMIT 1')); //проверка на туманный образ + //if ( !isset($checktuman['id'])) + if ($yr > 0 && !isset($checktuman['id'])) { + global $priem; + $i = 0; + while ($i < count($this->stats[$this->uids[$uid]]['set_pog2'])) { + $j = $this->stats[$this->uids[$uid]]['set_pog2'][$i]; + if ($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['id'] == $pliid || $test == 1) { + $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] = str_replace('add_pog2=' . $j['y'], + 'add_pog2=$', $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); + $dt3 = $this->lookStats($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); + + $dt3['add_pog2p'] = min(floor($j['y'] / $yr2 * 100), $dt3['add_pog2p']); + + if (isset($dt3['add_pog2mp'])) { + if ((round(round($yr2 / 100 * (100 - $dt3['add_pog2p'])) * $dt3['add_pog2mp'])) > $this->stats[$this->uids[$uid]]['mpNow']) { + //не хватило маны, считаем сколько хватит % от поглощенного урона + $j['yhj'] = $this->stats[$this->uids[$uid]]['mpNow'] / (round(round($yr2 / 100 * (100 - $dt3['add_pog2p'])) * $dt3['add_pog2mp'])) * 100; + $j['yhj'] = floor($j['yhj']); //Сколько % мы можем поглотить + $dt3['add_pog2p'] = floor($dt3['add_pog2p'] / 100 * $j['yhj']); + } + if ($test == 1) { + $priem->minMana($uid, round(round($yr2 / 100 * $dt3['add_pog2p']) * $dt3['add_pog2mp'])); + } + } + if (!isset($this->poglast[$uid])) { + $this->poglast[$uid] = 0; + } + $this->poglast[$uid] += $yr2; + if ($test == 1) { + $j['y'] -= round($this->poglast[$uid] / 100 * $dt3['add_pog2p']); + $priem->minMana($uid, + round(round($this->poglast[$uid] / 100 * $dt3['add_pog2p']) * $dt3['add_pog2mp'])); + } + if (isset($dt3['add_pog2p'])) { + $yr2 = round($yr2 / 100 * (100 - $dt3['add_pog2p'])); + } + if ($j['y'] < 0 || ($this->stats[$this->uids[$uid]]['mpNow'] <= 0 && $dt3['add_pog2mp'] > 0)) { + $dt2 = $this->lookStats($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); + if (isset($dt2['endPog']) && $dt2['endPog'] == 1) { + //удаляем прием + //Добавляем в лог + $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['v2'] . '" LIMIT 1')); + $this->delPriem($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1], + $this->users[$this->uids[$uid]], 4, $uid); + $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1] = 'delete'; + } + unset($dt2); + $j['y'] = 0; + } + $this->stats[$this->uids[$uid]]['set_pog'][$i]['y'] = $j['y']; + if (isset($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'])) { + $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] = str_replace('add_pog2=$', + 'add_pog2=' . $j['y'], $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); + mysql_query('UPDATE `eff_users` SET `data` = ' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] . ' WHERE `id` = ' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['id']); + } + + if ($j['y'] - $this->poglast[$uid] + $yr2 < 0) { + $yr -= $yr + ($j['y'] - $this->poglast[$uid] + $yr2); + $yr2 = $yr; + $i = count($this->stats[$this->uids[$uid]]['set_pog2']) + 1; + } + } + $i++; + } + } + return $yr2; + } + + /** Тестируем удары и т.д */ + private function newRazmen($id) + { + $at = [1 => [0], 2 => [0]]; + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + if ($this->atacks[$id]['out1'] == 0) { + $at[1] = $this->usersTestAtack($id, $uid1, $uid2); + } + if ($this->atacks[$id]['out2'] == 0) { + $at[2] = $this->usersTestAtack($id, $uid2, $uid1); + } + + return $at; + } + + /** Игрок1 наносит удар Игрок2 (сломано?) */ + private function usersTestAtack($id, $uid1, $uid2) + { + $r = []; + $block = [0, 0, 0, 0, 0, 0,]; + + //Проверка блоков + $i = 1; + if ($uid1 == $this->atacks[$id]['uid1']) { + $a = 2; + $j = $this->atacks[$id]['b2']; + $atack = [ + 0, + $this->atacks[$id]['a1'][0], + $this->atacks[$id]['a1'][1], + $this->atacks[$id]['a1'][2], + $this->atacks[$id]['a1'][3], + $this->atacks[$id]['a1'][4], + ]; + } elseif ($uid2 == $this->atacks[$id]['uid1']) { + $a = 1; + $j = $this->atacks[$id]['b1']; + $atack = [ + 0, + $this->atacks[$id]['a2'][0], + $this->atacks[$id]['a2'][1], + $this->atacks[$id]['a2'][2], + $this->atacks[$id]['a2'][3], + $this->atacks[$id]['a2'][4], + ]; + } + if ($this->atacks[$id]['out' . $a] == 0) { + while ($i <= $this->stats[$this->uids[$uid2]]['zonb']) { + //echo '{'.$j.'}'; + $block[$j] = 1; + $j++; + if ($j > 5 || $j < 1) { + $j = 1; + } + $i++; + } + } + //Проверка ударов + $i = 1; + while ($i <= $this->stats[$this->uids[$uid1]]['zona']) { + if (!isset($atack[$i]) || $atack[$i] == 0) { + $atack[$i] = rand(1, 5); + } + if ($atack[$i] > 0) { + if ($block[$atack[$i]] == 1) { + //удар был заблокирован + // КУДА БИЛ , ТИП УДАРА + $r['atack'][] = [$atack[$i], 3, 0]; + } else { + //Удар прошел + // КУДА БИЛ , ТИП УДАРА + $r['atack'][] = [$atack[$i], 1, 0]; + } + } + $i++; + } + return $r; + } + + //Проверка зоны и блока + + /** + * @param $id + * @param $uid1 + * @param $uid2 + * @param $atack + * @return bool (bool) удар был заблокирован + */ + public function testRazmenblock1($id, $uid1, $uid2, $atack) + { + $block = []; + //Проверка блоков + $i = 1; + $j = 0; + if ($uid1 == $this->atacks[$id]['uid1']) { + $j = $this->atacks[$id]['b2']; + } elseif ($uid2 == $this->atacks[$id]['uid1']) { + $j = $this->atacks[$id]['b1']; + } + if ($this->atacks[$id]['out2'] == 0) { + while ($i <= $this->stats[$this->uids[$uid2]]['zonb']) { + //echo '{'.$j.'}'; + $block[$j] = 1; + $j++; + if ($j > 5 || $j < 1) { + $j = 1; + } + $i++; + } + } + //Проверка ударов + return $atack > 0 && $block[$atack] == 1; + } + + //Первичный расчет мф. эффектов (пример) + /** + * private function firstRazmen($id, $at) + * { + * $uid1 = $this->atacks[$id]['uid1']; + * $uid2 = $this->atacks[$id]['uid2']; + * + * $i = 1; + * while ($i <= 2) { + * if ($i == 1) { + * $u1 = $uid1; + * $u2 = $uid2; + * } else { + * $u1 = $uid2; + * $u2 = $uid1; + * } + * + * //Расчет уворота Цели от Атакующего + * $i++; + * } + * return $at; + * } + */ + + /** Для yhod_user. + * @var int + */ + private $import_user = 0; + + /** Проверка ухода удара в игрока */ + private function yhod_user($uid1, $uid2, $type) + { + // 1 - кто бьет . 2 - в кого бьют . тип + //Удал летит прямо в противника + if ($this->import_user == 0) { + $r = $uid1; + $rand_user = false; + if ($type == 2) { + //Случайный персонаж из своей команды (в том числе игрок) + $i = 0; + while ($i < count($this->users)) { + if ($this->users[$i]['team'] == $this->users[$this->uids[$uid2]]['team']) { + $rand_user[] = $this->users[$i]['id']; + } + $i++; + } + } elseif ($type == 4) { + //Случайный персонаж, любой + $i = 0; + while ($i < count($this->users)) { + //if( $this->users[$i]['team'] == $this->users[$this->uids[$uid1]]['team'] ) { + $rand_user[] = $this->users[$i]['id']; + //} + $i++; + } + } elseif ($type == 5) { + //Случайный персонаж, любой (кроме игрока) + $i = 0; + while ($i < count($this->users)) { + if ($this->users[$i]['team'] == $this->users[$this->uids[$uid2]]['team'] && $uid2 != $this->users[$i]['id']) { + $rand_user[] = $this->users[$i]['id']; + } + $i++; + } + } elseif ($type == 6) { + //Случайный персонаж из команды противника + $i = 0; + while ($i < count($this->users)) { + if ($this->users[$i]['team'] != $this->users[$this->uids[$uid2]]['team']) { + $rand_user[] = $this->users[$i]['id']; + } + $i++; + } + } elseif ($type > 100) { + //Удар идет в конкретного игрока + if (!isset($this->users[$this->uids[$type]]) || $this->users[$this->uids[$type]]['id'] != $type) { + $r = $uid2; + } else { + $r = $type; + } + } + if (!empty($rand_user)) { + $r = $rand_user[rand(0, (count($rand_user) - 1))]; + } + $this->import_user = $r; + } else { + $r = $this->import_user; + } + return $r; + } + + /** Расчет уворота игроков */ + private function mf1Razmen($id, $at, $v, $pat = false, $rjd = 0) + { + if ($pat) { + $pat = $at; + $at = $pat['p']; + } else { + $pat = false; + } + + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { + $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); + } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { + $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); + } + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = $uid1; + $u2 = $uid2; + } else { + $a = 2; + $b = 1; + $u1 = $uid2; + $u2 = $uid1; + } + + //Расчет уворота Цели (u2) от Атакующего (u1) + $j = 0; + $wp01 = 3; + $k01 = 0; + if ($rjd > 0) { + $j = $rjd - 1; + } + while ($j < count($at[$a]['atack']) && $j < 8) { + // КУДА БИЛ , ТИП УДАРА + if ($k01 == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) { + //Левая рука + $wp01 = 3; + $k01 = 1; + } else { + //Правая рука + if ( + isset($this->stats[$this->uids[$u1]]['wp14id']) && + $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13 + ) { + $wp01 = 14; + } else { + $wp01 = 3; + } + $k01 = 0; + } + $witm_type01 = 0; + $witm01 = $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp' . $wp01 . 'id']]; + $witm_data01 = $this->lookStats($witm01['data']); + if ($at[$a]['atack'][$j][2] == $v) { + $tyv = $this->mfs(2, [ + 'u1' => $u1, + 'u2' => $u2, + 'mf' => $this->stats[$this->uids[$u2]]['m4'], + 'amf' => (int)$this->stats[$this->uids[$u2]]['m15'], + 'smf' => ($this->stats[$this->uids[$u1]]['m5'] + $witm_data01['sv_m5']), + 'asmf' => $this->stats[$this->uids[$u1]]['m21'], + ], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']); + if ($tyv == 1 && $this->atacks[$id]['out' . $b] == 0) { + //увернулся, гад :) + $this->stats[$this->uids[$u1]]['nopryh'] = floor(0 + (int)$this->stats[$this->uids[$u1]]['nopryh']); + if (!isset($this->stats[$this->uids[$u1]]['nopryh']) || $this->stats[$this->uids[$u1]]['nopryh'] <= 0) { + $at[$a]['atack'][$j][1] = 2; + } else { + $this->stats[$this->uids[$u1]]['nopryh']--; + $this->stats[$this->uids[$u1]]['nopryh_act']++; + } + } + } + $j++; + } + $i++; + } + unset($witm01, $witm_type01, $wp01, $k01); + + if ($pat) { + $pat['p'] = $at; + $at = $pat; + } + + return $at; + } + + /** Расчет крита игроков */ + private function mf2Razmen($id, $at, $v, $pat = false, $rjd = 0) + { + global $u; + + if ($pat) { + $pat = $at; + $at = $pat['p']; + } else { + $pat = false; + } + + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { + $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); + } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { + $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); + } + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $u1 = $uid1; + $u2 = $uid2; + } else { + $a = 2; + $u1 = $uid2; + $u2 = $uid1; + } + + //Расчет крита Атакующего (u1) по Цели (u2) + $j = 0; + $wp01 = 0; + $k01 = 0; + if ($rjd > 0) { + $j = $rjd - 1; + } + while ($j < count($at[$a]['atack']) && $j <= 8) { + // КУДА БИЛ , ТИП УДАРА + if ($k01 == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) { + //Левая рука + $wp01 = 3; + $k01 = 1; + } else { + //Правая рука + if ( + isset($this->stats[$this->uids[$u1]]['wp14id']) && + $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13 + ) { + $wp01 = 14; + } else { + $wp01 = 3; + } + $k01 = 0; + } + $witm_type01 = 0; + $witm01 = $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp' . $wp01 . 'id']]; + $witm_data01 = $this->lookStats($witm01['data']); + if ($this->mfs(1, [ + 'u1' => $u1, + 'u2' => $u2, + 'mf' => $this->stats[$this->uids[$u1]]['m1'] + $witm_data01['sv_m1'], + 'amf' => $this->stats[$this->uids[$u1]]['m14'], + 'smf' => $this->stats[$this->uids[$u2]]['m2'], + 'aamf1' => (int)$this->stats[$this->uids[$u2]]['enemy_am1'], + ], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']) == 1) { + //кританул, гад :) + if ($at[$a]['atack'][$j][1] == 3) { + //в блок + $at[$a]['atack'][$j][1] = 4; //Тут тест + } elseif ($at[$a]['atack'][$j][1] != 2 && $at[$a]['atack'][$j][1] != 6 && $at[$a]['atack'][$j][1] != 7 && $at[$a]['atack'][$j][1] != 8) { + //обычный крит + $at[$a]['atack'][$j][1] = 5; + } else { + $at[$a]['atack'][$j][1] = 1; + } + } + $j++; + } + $i++; + } + unset($witm01, $witm_type01, $k01, $wp01); + + if ($pat) { + $pat['p'] = $at; + $at = $pat; + } + + return $at; + } + + /**Расчет парирования игроков*/ + private function mf3Razmen($id, $at, $v, $pat = false, $rjd = 0) + { + if ($pat) { + $pat = $at; + $at = $pat['p']; + } else { + $pat = false; + } + + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { + $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); + } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { + $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); + } + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = $uid1; + $u2 = $uid2; + } else { + $a = 2; + $b = 1; + $u1 = $uid2; + $u2 = $uid1; + } + + //Расчет парирования Цели (u2) от Атакующего (u1) + //print_r( $at[$i] ); + $j = 0; + if ($rjd > 0) { + $j = $rjd - 1; + } + while ($j < count($at[$a]['atack']) && $j < 8) { + // КУДА БИЛ , ТИП УДАРА + if ((!isset($this->stats[$this->uids[$u2]]['no_pr1']) || $this->stats[$this->uids[$u2]]['no_pr1'] == 0) && $at[$a]['atack'][$j][2] == $v) { + if ($this->mfs(3, [ + 'u1' => $u1, + 'u2' => $u2, + '1' => $this->stats[$this->uids[$u2]]['m7'], + '2' => $this->stats[$this->uids[$u1]]['m7'], + ], $this->users[$this->uids[$u1]]['level'], + $this->users[$this->uids[$u2]]['level']) == 1 && $this->atacks[$id]['out' . $b] == 0) { + //Парировал, гад :) + $this->stats[$this->uids[$u1]]['nopryh'] = floor(0 + (int)$this->stats[$this->uids[$u1]]['nopryh']); + if ((!isset($this->stats[$this->uids[$u1]]['nopryh']) || $this->stats[$this->uids[$u1]]['nopryh'] == 0) && $this->stats[$this->uids[$u1]]['nopryh_act'] < 1) { + $at[$a]['atack'][$j][1] = 6; + $this->stats[$this->uids[$u1]]['nopryh']--; + $this->stats[$this->uids[$u1]]['nopryh_act']++; + } + } + } + $j++; + } + $i++; + } + + if ($pat) { + $pat['p'] = $at; + $at = $pat; + } + + return $at; + } + + /**Расчет блока щитом игроков (скорее всего сломано) */ + private function mf4Razmen($id, $at, $v, $pat = false, $rjd = 0) + { + if ($pat) { + $pat = $at; + $at = $pat['p']; + } else { + $pat = false; + } + + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { + $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); + } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { + $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); + } + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = $uid1; + $u2 = $uid2; + } else { + $a = 2; + $b = 1; + $u1 = $uid2; + $u2 = $uid1; + } + if ($this->stats[$this->uids[$u2]]['sheld1'] > 0) { + //Расчет блока щитом Цели (u2) от Атакующего (u1) + //print_r( $at[$i] ); + $j = 0; + while ($j < count($at[$a]['atack']) && $j < 8) { + // КУДА БИЛ , ТИП УДАРА + if ($at[$a]['atack'][$j][2] == $v && $this->mfs(5, + ($this->stats[$this->uids[$u2]]['m8'] / 2 + $this->stats[$this->uids[$u2]]['m18']), + $this->users[$this->uids[$u1]]['level'], + $this->users[$this->uids[$u2]]['level']) == 1 && $this->atacks[$id]['out' . $b] == 0) { + //блокировал щитом, гад :) + $at[$a]['atack'][$j][1] = 7; + } + $j++; + } + } + $i++; + } + + if ($pat) { + $pat['p'] = $at; + $at = $pat; + } + + return $at; + } + + /**Расчет контрудара игроков*/ + private function mf5Razmen($id, $at, $v, $rjd = 0) + { + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { + $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); + } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { + $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); + } + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = $uid1; + $u2 = $uid2; + } else { + $a = 2; + $b = 1; + $u1 = $uid2; + $u2 = $uid1; + } + + //Расчет контрудара Цели (u2) по Атакующему (u1) + $j = 0; + if ($rjd > 0) { + $j = $rjd - 1; + } + while ($j < count($at[$a]['atack']) && $j < 8) { + // КУДА БИЛ , ТИП УДАРА + if ($at[$a]['atack'][$j][2] == $v && $at[$a]['atack'][$j][1] == 2 && $this->mfs(6, [ + 'u1' => $u1, + 'u2' => $u2, + 'a' => $this->stats[$this->uids[$u2]]['m6'], + 'b' => $this->stats[$this->uids[$u1]]['m6'], + ], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']) == 1) { + //контрудар, гад :) + $at[$a]['atack'][$j][1] = 8; + $rnd_a = rand(1, 5); + $rjd = count($at[$b]['atack']); + if (!$this->testRazmenblock1($id, $u2, $u1, $rnd_a)) { + $at[$b]['atack'][] = [$rnd_a, 1, 0, 1]; // 3 , 0 , 1 + } else { + $at[$b]['atack'][] = [$rnd_a, 3, 0, 1]; // 3 , 0 , 1 + } + $at = $this->contrRestart($id, $at, 1, $rjd); + } + $j++; + } + $i++; + } + return $at; + } + + //Выделение из лог текста + public function addlt($a, $id, $s, $rnd = null) + { + global $log_text; + if (is_null($rnd)) { + $rnd = rand(0, (count($log_text[$s][$id]) - 1)); + } + return '{' . $a . 'x' . $id . 'x' . $rnd . '}'; + } + + private function addNewStatDb($id) + { + mysql_query('INSERT INTO `battle_stat` + ( `battle`,`uid1`,`uid2`,`time`,`type`,`a`,`b`,`ma`,`mb`,`type_a`,`type_b`,`yrn`,`yrn_krit`,`tm1`,`tm2` ) VALUES ( + ' . $this->info['id'] . ', + ' . $id['uid1'] . ', + ' . $id['uid2'] . ', + ' . $id['time'] . ', + ' . $id['type'] . ', + ' . $id['a'] . ', + ' . $id['b'] . ', + ' . $id['ma'] . ', + ' . $id['mb'] . ', + ' . $id['type_a'] . ', + ' . $id['type_b'] . ', + ' . $id['yrn'] . ', + ' . $id['yrn_krit'] . ', + ' . $id['tm1'] . ', + ' . $id['tm2'] . ' + )'); + } + + //Добавляем статистику + public function addNewStat($stat) + { + if (isset($stat[1])) { + $this->addNewStatDb($stat[1]); + } + if (isset($stat[2])) { + $this->addNewStatDb($stat[2]); + } + } + + //Добавляем размены в лог + private function addlogRazmen($id, $at) + { + $this->hodID++; + + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + $dies = [ + 1 => 0, + 2 => 0, + ]; + + //массив для статистики + $stat = [ + 1 => [ + 'uid1' => 0, + 'uid2' => 0, + 'time' => time(), + 'type' => 0, + 'a' => '00000', + 'b' => '0', + 'type_a' => '', + 'type_b' => '0', + 'yrn' => 0, + 'yrn_krit' => 0, + 'ma' => 0, + 'mb' => 0, + 'tm1' => 0, + 'tm2' => 0, + ], + 2 => [ + 'uid1' => 0, + 'uid2' => 0, + 'time' => time(), + 'type' => 0, + 'a' => '00000', + 'b' => '0', + 'type_a' => '', + 'type_b' => '0', + 'yrn' => 0, + 'yrn_krit' => 0, + 'ma' => 0, + 'mb' => 0, + 'tm1' => 0, + 'tm2' => 0, + ], + ]; + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = $uid1; + $u2 = $uid2; + } else { + $a = 2; + $b = 1; + $u1 = $uid2; + $u2 = $uid1; + } + + if ($this->stats[$this->uids[$u2]]['yhod'] > 0) { + $u2 = $this->yhod_user($u1, $u2, $this->stats[$this->uids[$u2]]['yhod']); + } + + $s1 = $this->users[$this->uids[$u1]]['sex']; + $s2 = $this->users[$this->uids[$u2]]['sex']; + + $stat[$a]['uid1'] = $u1; + $stat[$a]['uid2'] = $u2; + $stat[$a]['ma'] = $this->stats[$this->uids[$u1]]['zona']; + $stat[$a]['mb'] = $this->stats[$this->uids[$u1]]['zonb']; + $stat[$a]['tm1'] = $this->users[$this->uids[$u1]]['team']; + $stat[$a]['tm2'] = $this->users[$this->uids[$u2]]['team']; + $stat[$a]['a'] = $this->atacks[$id]['a' . $a]; + $stat[$a]['b'] = $this->atacks[$id]['b' . $a]; + + $vLog = + 'at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . + '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . + '||bl1=' . $this->atacks[$id]['b' . $a] . + '||bl2=' . $this->atacks[$id]['b' . $b] . + '||time1=' . $this->atacks[$id]['time'] . + '||time2=' . $this->atacks[$id]['time2'] . + '||s' . $a . '=' . $s1 . + '||s' . $b . '=' . $s2 . + '||t2=' . $this->users[$this->uids[$u2]]['team'] . + '||t1=' . $this->users[$this->uids[$u1]]['team'] . + '||login1=' . $this->users[$this->uids[$u1]]['login2'] . + '||login2=' . $this->users[$this->uids[$u2]]['login2']; + + $mas = [ + 'text' => '', + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'vars' => $vLog, + 'type' => 1, + ]; + + if (!isset($at[$a]['atack'])) { //ТУТ тест пропуска + if ($this->atacks[$id]['tpo' . $a] == 2) { + $mas['text'] .= '{u1} потратил свой ход на магию.'; + } else { + // + if ($this->info['razdel'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) { + mysql_query('INSERT INTO `battle_out` (`battle`,`uid1`,`uid2`,`time`,`out`) VALUES ( + ' . $this->info['id'] . ',' . $u1 . ',' . $u2 . ', unix_timestamp(), 1)'); + } + // + if (isset($u1)) { + $mas['text'] .= '{u1} пропустил свой ход.'; + //Проверка сброс туманок + mysql_query('update eff_users set `delete` = unix_timestamp() where `uid` = ' . $u1 . ' AND `delete` = 0 AND `v1` = "priem" AND v2 in (288, 287, 286, 273) LIMIT 1'); + } + } + $mas['text'] = '{tm1} ' . $mas['text']; + $this->add_log($mas); + } else { + $j = 0; + while ($j < count($at[$a]['atack']) && $j < 8) { + // + $mas['text'] = ''; + // + $wt = [ + 21 => 4, + 22 => 5, + 20 => 2, + 28 => 2, + 19 => 3, + 18 => 1, + 26 => 22, + ]; + $par = [ + 'zona' => '{zn2_' . $at[$a]['atack'][$j][0] . '} ', + 'kyda' => $this->lg_zon[$at[$a]['atack'][$j][0]][rand(0, + (count($this->lg_zon[$at[$a]['atack'][$j][0]]) - 1))], + 'chem' => $this->lg_itm[$wt[$at[$a]['atack'][$j]['wt']]][rand(0, + (count($this->lg_itm[$wt[$at[$a]['atack'][$j]['wt']]]) - 1))], + ]; + // + $this->atacks[$id]['uid_' . $u1 . '_t' . $at[$a]['atack'][$j][1]]++; + + // + if ($at[$a]['atack'][$j][1] == 1 || $at[$a]['atack'][$j][1] == 5) { + //u1 ударил обычным ударом u2 + //u1 ударил критическим ударом u2 + $mas['text'] .= + $par['zona'] . '{u2} ' . + $this->addlt($b, 1, $s2) . + $this->addlt($b, 2, $s2) . + $this->addlt($a, 3, $s1) . ' {u1} ' . + $this->addlt($a, 4, $s1) . + $this->addlt($a, 5, $s1) . + $this->addlt($a, 6, $s1) . ' ' . + $this->addlt(1, 7, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . + $par['chem'] . ' ' . $par['kyda'] . '. '; + } elseif ($at[$a]['atack'][$j][1] == 2) { + //u2 увернулся от u1 + $mas['text'] .= + $par['zona'] . '{u1} ' . + $this->addlt($a, 8, $s1) . + $this->addlt($a, 9, $s1) . ' {u2} ' . + $this->addlt($b, 11, $s2) . ' ' . + $par['chem'] . ' ' . $par['kyda'] . '. '; + } elseif ($at[$a]['atack'][$j][1] == 3) { + //u2 заблокировал удар u1 + $mas['text'] .= $par['zona'] . '{u1} ' . + $this->addlt($a, 8, $s1) . + $this->addlt($a, 9, $s1) . ' {u2} ' . + $this->addlt($b, 10, $s2) . ' ' . + $this->addlt(1, 7, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . + $par['chem'] . ' ' . $par['kyda'] . '. '; + } elseif ($at[$a]['atack'][$j][1] == 4) { + //u1 пробил блок u2 критом + if (isset($at[$a]['atack'][$j]['yron']['t'])) { + $mas['text'] .= + $par['zona'] . '{u2} ' . + $this->addlt($b, 1, $s2) . + $this->addlt($b, 2, $s2) . + $this->addlt($a, 3, $s1) . ' {u1} ' . + $this->addlt($a, 4, $s1) . + $this->addlt($a, 5, $s1) . ', пробив блок, ' . + $this->addlt($a, 6, $s1) . ' ' . + $this->addlt(1, 7, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . + $par['chem'] . ' ' . $par['kyda'] . '. '; + } + } elseif ($at[$a]['atack'][$j][1] == 6) { + //u2 парировал удар u1 + $mas['text'] .= + $par['zona'] . '{u1} ' . + $this->addlt($a, 8, $s1) . + $this->addlt($a, 9, $s1) . ' {u2} неожиданно парировал ' . + $this->addlt(1, 7, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . + $par['chem'] . ' ' . $par['kyda'] . '. '; + } elseif ($at[$a]['atack'][$j][1] == 7) { + //u2 блокировал щитом удар u1 + $mas['text'] .= + $par['zona'] . '{u1} ' . + $this->addlt($a, 8, $s1) . + $this->addlt($a, 9, $s1) . ' {u2}, воспользовавшись своим щитом, ' . + $this->addlt($b, 10, $s2) . ' ' . + $this->addlt(1, 7, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . + $par['chem'] . ' ' . $par['kyda'] . '. '; + } elseif ($at[$a]['atack'][$j][1] == 8) { + //u2 увернулся от удара u1 и нанес по нему контрудар + $mas['text'] .= + $par['zona'] . '{u1} ' . + $this->addlt($a, 8, $s1) . + $this->addlt($a, 9, $s1) . ' {u2} ' . + $this->addlt($b, 11, $s2) . ' ' . + $par['chem'] . ' ' . $par['kyda'] . ' и нанес контрудар. '; + } + + $stat[$a]['type_a'] .= '' . $at[$a]['atack'][$j][1]; + if ( + (!isset($this->stats[$this->uids[$u2]]['notravma']) || $this->stats[$this->uids[$u2]]['notravma'] == 0) && + isset($at[$a]['atack'][$j]['yron']['travma']) && + $at[$a]['atack'][$j]['yron']['travma'][0] > 0 && + floor($at[$a]['atack'][$j]['yron']['hp']) <= 0 + ) { + $tr_pl = mysql_fetch_array(mysql_query('SELECT `id`,`v1` FROM `eff_users` WHERE `id_eff` = 4 AND `uid` = ' . $u2 . ' AND `delete` = 0 ORDER BY `v1` DESC LIMIT 1')); + if (!isset($tr_pl['id']) || $tr_pl['v1'] < 3) { + //263 + if (isset($tr_pl['id'])) { + $at[$a]['atack'][$j]['yron']['travma'][0] = rand(($tr_pl['v1'] + 1), 3); + } + $tr_pl2 = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `uid` = ' . $u2 . ' AND `delete` = 0 AND `name` LIKE "%Защита от травм%" limit 1')); + if (!isset($tr_pl2['id']) && $at[$a]['atack'][$j]['yron']['travma'][0] <= 3) { + $mas['text'] = rtrim($mas['text'], '. '); + $mas['text'] .= ', нанеся противнику '; + if ($at[$a]['atack'][$j]['yron']['travma'][0] == 1) { + $mas['text'] .= 'Легкую'; + $this->addTravm($u2, 1, rand(3, 5)); + } elseif ($at[$a]['atack'][$j]['yron']['travma'][0] == 2) { + $mas['text'] .= 'Среднюю'; + $this->addTravm($u2, 2, rand(3, 5)); + } elseif ($at[$a]['atack'][$j]['yron']['travma'][0] == 3) { + $mas['text'] .= 'Тяжелую'; + $this->addTravm($u2, 3, rand(3, 5)); + } + $mas['text'] .= ' травму. '; + } + } + unset($tr_pl); + } + if ($at[$a]['atack'][$j]['yron']['pb'] == 1 && isset($at[$a]['atack'][$j]['yron']['hp'])) { + $mas['text'] = rtrim($mas['text'], '. '); + $mas['text'] .= ' пробив броню. '; + } + if ($at[$a]['atack'][$j][3] == 1) { + $mas['text'] .= '(контрудар) '; + } + if (isset($at[$a]['atack'][$j]['yron'])) { + if ($at[$a]['atack'][$j]['yron']['w'] == 3) { + $mas['textWP'] = '(правая рука)'; + } elseif ($at[$a]['atack'][$j]['yron']['w'] == 14) { + $mas['textWP'] = '(левая рука)'; + } else { + $mas['textWP'] = '(непонятно чем)'; + } + if ( + ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5 || $at[$a]['atack'][$j][1] == 1) && + $at[$a]['atack'][$j]['yron']['y'] < 1 + ) { + $at[$a]['atack'][$j]['yron']['r'] = '--'; + } + if ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5) { + $stat[$a]['yrn_krit'] += -$at[$a]['atack'][$j]['yron']['r']; + $mas['text'] .= ' ' . $at[$a]['atack'][$j]['yron']['r'] . ''; + } else { + $mas['text'] .= ' ' . $at[$a]['atack'][$j]['yron']['r'] . ''; + } + $stat[$a]['yrn'] += -$at[$a]['atack'][$j]['yron']['r']; + } + if (isset($at[$a]['atack'][$j]['yron']['hp'])) { + if ($this->users[$this->uids[$u2]]['align'] == 9) { + $at[$a]['atack'][$j]['yron']['hp'] = $at[$a]['atack'][$j]['yron']['hp'] / ($at[$a]['atack'][$j]['yron']['hpAll'] / 100); + $at[$a]['atack'][$j]['yron']['hpAll'] = '100%'; + } + $mas['text'] .= ' [' . floor($at[$a]['atack'][$j]['yron']['hp']) . '/' . floor($at[$a]['atack'][$j]['yron']['hpAll']) . ']'; + } + // + if ($mas['text'] != '') { + $mas['text'] = '{tm1} ' . $mas['text']; + } + + if (count($at[$a]['atack'][$j]['yron']['plog']) > 0) { + $il = 0; + while ($il <= count($at[$a]['atack'][$j]['yron']['plog'])) { + if (isset($at[$a]['atack'][$j]['yron']['plog'][$il])) { + eval($at[$a]['atack'][$j]['yron']['plog'][$il]); + } + $il++; + } + } + $this->add_log($mas); + $j++; + } + } + $i++; + } + + //Добавляем статистику + записываем в баттл_юзерс НР игроков + $this->addNewStat($stat); + + //Вывод в лог смерти персонажа + if (floor($this->stats[$this->uids[$u1]]['hpNow']) < 1) { + $dies[1] = 1; + } + if (floor($this->stats[$this->uids[$u2]]['hpNow']) < 1) { + $dies[2] = 1; + } + if ($dies[1] > 0 || $dies[2] > 0) { + $rtngwin = [1, 2, 3, 5, 10, 20, 40, 80, 160]; + $rtnglos = [0, 0, 0, -1, -2, -5, -10, -20, -40]; + + if ($this->info['typeBattle'] == 99) { + if ($btlstatus[0] == 0) { + //Кровавые бои обычные + $rtngwin = [2, 4, 6, 10, 20, 40, 80, 160, 320]; + if ($this->info['razdel'] == 5) { + //не хаот + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } else { + //хаот + $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + } elseif ($btlstatus[0] == 25) { + //Кровавая битва + $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($btlstatus[0] == 50) { + //Кровавая резня + $rtngwin = [4, 8, 16, 32, 64, 128, 256, 512, 1024]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($btlstatus[0] == 75) { + //Кровавая сеча + $rtngwin = [5, 10, 20, 40, 80, 160, 320, 640, 1280]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($btlstatus[0] == 100) { + //Кровавое побоище + $rtngwin = [6, 12, 24, 48, 98, 196, 392, 784, 1568]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($btlstatus[0] == 150) { + //Судный день + $rtngwin = [7, 14, 28, 56, 112, 224, 448, 896, 1792]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } + } else { + if ($btlstatus[0] == 0) { + //Обычный поединок + if ($this->info['razdel'] != 5) { + //хаот + $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + } elseif ($btlstatus[0] == 25) { + //великая битва + $rtngwin = [2, 4, 6, 10, 20, 40, 80, 160, 320]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($btlstatus[0] == 50) { + //величайшая битва + $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($btlstatus[0] == 75) { + //историческая битва сеча + $rtngwin = [4, 8, 16, 32, 64, 128, 256, 512, 1024]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($btlstatus[0] == 100) { + //эпохальная битва + $rtngwin = [5, 10, 20, 40, 80, 160, 320, 640, 1280]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($btlstatus[0] == 150) { + //судный день + $rtngwin = [7, 14, 28, 56, 112, 224, 448, 896, 1792]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } + } + + if ($this->info['dn_id'] > 0 || $this->info['izlom'] != 0 || $this->info['turnir'] != 0) { + //Пещерные бои не считаются и Изломы тоже, ну и Турниры + $rtngwin = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + } elseif ($this->info['clan1'] > 0 && $this->info['clan2'] > 0) { + //Клановая война + $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; + $rtnglos = [-1, -2, -4, -8, -16, -32, -64, -128, -256]; + } + + if ($dies[1] == 1) { + if ($this->info['dn_id'] > 0) { + //не дается репутация + } else { + if ($this->users[$this->uids[$u1]]['level'] >= 4) { + $rtng1 += $rtnglos[$this->users[$this->uids[$u1]]['level'] - 4]; + $rtng2 += $rtngwin[$this->users[$this->uids[$u1]]['level'] - 4]; + } + } + //Персонаж 1 погиб от рук персонаж 2 + $this->spaCheck($this->users[$this->uids[$u1]]['id']); + } + if ($dies[2] == 1) { + if ($this->info['dn_id'] > 0) { + //не дается репутация + } else { + if ($this->users[$this->uids[$u1]]['level'] >= 4) { + $rtng1 += $rtnglos[$this->users[$this->uids[$u1]]['level'] - 4]; + $rtng2 += $rtngwin[$this->users[$this->uids[$u1]]['level'] - 4]; + } + } + //Персонаж 2 погиб от рук персонаж 1 + $this->spaCheck($this->stats[$this->uids[$u2]]['id']); + } + //Записываем рейтинг + // + if ( + $this->info['type'] != 564 && + $this->stats[$this->uids[$u1]]['inTurnir'] == 0 && + $this->stats[$this->uids[$u2]]['inTurnir'] == 0 && + $this->info['dn_id'] == 0 && + $this->info['izlom'] == 0 + ) { + // + if ($this->users[$this->uids[$u2]]['bot'] == 0) { + mysql_query('INSERT INTO `users_reting` (`uid`,`time`,`val`,`align`,`clan`) VALUES ( + ' . $u1 . ', + unix_timestamp(), + ' . $rtng1 . ', + ' . $this->users[$this->uids[$u1]]['align'] . ', + ' . $this->users[$this->uids[$u1]]['clan'] . ') + '); + } + unset($rtng); + if ($this->users[$this->uids[$u1]]['bot'] == 0) { + mysql_query('INSERT INTO `users_reting` (`uid`,`time`,`val`,`align`,`clan`) VALUES ( + ' . $u2 . ', + unix_timestamp(), + ' . $rtng2 . ', + ' . $this->users[$this->uids[$u2]]['align'] . ', + ' . $this->users[$this->uids[$u2]]['clan'] . ') + '); + } + } + unset($rtng1, $rtng2); + } + } + + //Добавляем в лог действия приема + public function priemAddLog($id, $a, $b, $u1, $u2, $prm, $text, $hodID, $tm1 = 0, $tm2 = 0) + { + if ($tm1 === 0) { + if (isset($this->atacks[$id])) { + $tm1 = $this->atacks[$id]['time']; + } else { + $tm1 = time(); + } + } + if ($tm2 === 0) { + if (isset($this->atacks[$id])) { + $tm2 = $this->atacks[$id]['time2']; + } else { + $tm2 = time(); + } + } + $vLog = + 'prm=' . $prm . + '||at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . + '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . + '||bl1=' . $this->atacks[$id]['b' . $a] . + '||bl2=' . $this->atacks[$id]['b' . $b] . + '||time1=' . $tm1 . + '||time2=' . $tm2 . + '||s' . $a . '=' . $this->users[$this->uids[$u1]]['sex'] . + '||s' . $b . '=' . $this->users[$this->uids[$u2]]['sex'] . + '||t2=' . $this->users[$this->uids[$u2]]['team'] . + '||t1=' . $this->users[$this->uids[$u1]]['team'] . + '||login1=' . $this->users[$this->uids[$u1]]['login2'] . + '||login2=' . $this->users[$this->uids[$u2]]['login2']; + $mas = [ + 'text' => $text, + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $hodID, + 'vars' => $vLog, + 'type' => 1, + ]; + $this->add_log($mas); + } + + //Добавляем в лог действия приема (без атаки) + public function priemAddLogFast($u1, $u2, $prm, $text, $hodID, $tm) + { + $vLog = + 'prm=' . $prm . + '||time1=' . $tm . + '||time2=' . $tm . + '||s1=' . $this->users[$this->uids[$u1]]['sex'] . + '||s2=' . $this->users[$this->uids[$u2]]['sex'] . + '||t2=' . $this->users[$this->uids[$u2]]['team'] . + '||t1=' . $this->users[$this->uids[$u1]]['team'] . + '||login1=' . $this->users[$this->uids[$u1]]['login2'] . + '||login2=' . $this->users[$this->uids[$u2]]['login2']; + $mas = [ + 'text' => $text, + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => ($this->hodID + $hodID), + 'vars' => $vLog, + 'type' => 1, + ]; + $this->add_log($mas); + } + + //Считаем контру + private function contrRestart($id, $at, $v, $rjd = 0) + { + //уворот + $at = $this->mf1Razmen($id, $at, $v, true, $rjd); + //парирование + $at = $this->mf3Razmen($id, $at, $v, true, $rjd); + //контрудар + //$at = $this->mf5Razmen($id,$at,$v,true,$rjd); + //блок щитом (если есть щит, конечно) + $at = $this->mf4Razmen($id, $at, $v, true, $rjd); + //Проверяем урон + //$at = $this->yronRazmen($id,$at); + //крит + $at = $this->mf2Razmen($id, $at, $v, true, $rjd); + + return $this->yronRazmen($id, $at, true, $rjd); + } + + //Расчитываем ед. урона + public function yronGetrazmen($uid1, $uid2, $wp, $zona) + { + global $u; + $r = ['r' => '--',]; + //Определяем тип урона + /* + Колющий + Рубящий + Режущий + Дробящий + */ + $witm = 0; + $witm_type = 0; + + if ($wp > 0) { + $witm = $this->stats[$this->uids[$uid1]]['items'][$this->stats[$this->uids[$uid1]]['wp' . $wp . 'id']]; + $witm_data = $this->lookStats($witm['data']); + $witm_type = $this->weaponTx($witm); + } + + if ($witm_type == 0 || $witm_type == 12) { + $witm_type2 = ''; + } else { + $witm_type2 = $witm_type; + } + $r['t'] = $witm_type2; + //Расчет брони + /* + голова + грудь + живот + пояс + ноги + */ + $bron = [ + 1 => [$this->stats[$this->uids[$uid2]]['mib1'], $this->stats[$this->uids[$uid2]]['mab1']], + 2 => [$this->stats[$this->uids[$uid2]]['mib2'], $this->stats[$this->uids[$uid2]]['mab2']], + 3 => [$this->stats[$this->uids[$uid2]]['mib2'], $this->stats[$this->uids[$uid2]]['mab2']], + 4 => [$this->stats[$this->uids[$uid2]]['mib3'], $this->stats[$this->uids[$uid2]]['mab3']], + 5 => [$this->stats[$this->uids[$uid2]]['mib4'], $this->stats[$this->uids[$uid2]]['mab4']], + ]; + // + //Увеличиваем параметры от текущего оружия которым бьем + //$witm_data + $iii = 1; + while ($iii <= 7) { + if (isset($witm_data['sv_a' . $iii]) && $witm_data['sv_a' . $iii] != 0) { + $this->stats[$this->uids[$uid1]]['a' . $iii] += $witm_data['sv_a' . $iii]; + } + if (isset($witm_data['sv_mg' . $iii]) && $witm_data['sv_mg' . $iii] != 0) { + $this->stats[$this->uids[$uid1]]['mg' . $iii] += $witm_data['sv_mg' . $iii]; + } + $iii++; + } + $iii = 1; + while ($iii <= 4) { + if (isset($witm_data['sv_aall']) && $witm_data['sv_aall'] != 0) { + $this->stats[$this->uids[$uid1]]['a' . $iii] += $witm_data['sv_aall']; + } + $iii++; + } + $iii = 1; + while ($iii <= 4) { + if (isset($witm_data['sv_mall']) && $witm_data['sv_mall'] != 0) { + $this->stats[$this->uids[$uid1]]['mg' . $iii] += $witm_data['sv_mall']; + } + $iii++; + } + $iii = 1; + while ($iii <= 7) { + if (isset($witm_data['sv_m2all']) && $witm_data['sv_m2all'] != 0) { + $this->stats[$this->uids[$uid1]]['mg' . $iii] += $witm_data['sv_m2all']; + } + $iii++; + } + + if (isset($witm_data['sv_m3']) && $witm_data['sv_m3'] != 0) { + $this->stats[$this->uids[$uid1]]['m3'] += $witm_data['sv_m3']; + } + + $iii = 1; + while ($iii <= 7) { + if (isset($witm_data['sv_pa' . $iii]) && $witm_data['sv_pa' . $iii] != 0) { + $this->stats[$this->uids[$uid1]]['pa' . $iii] += $witm_data['sv_pa' . $iii] + $witm_data['sv_m10']; + } + if (isset($witm_data['sv_pm' . $iii]) && $witm_data['sv_pm' . $iii] != 0) { + $this->stats[$this->uids[$uid1]]['pm' . $iii] += $witm_data['sv_pm' . $iii] + $witm_data['sv_m11a']; + if ($iii < 5) { + $this->stats[$this->uids[$uid1]]['pm' . $iii] += $witm_data['sv_m11']; + } + } + $iii++; + } + //мощность + подавление мощности противником + $wAp = 0; + + if ($witm_type == 12) { + //удар кулаком + $wAp += $this->stats[$this->uids[$uid1]]['m10']; + if ($this->users[$this->uids[$uid1]]['align'] == 7) { + $wAp += 15; + } + } elseif ($witm_type < 5) { + $wAp += $this->stats[$this->uids[$uid1]]['pa' . $witm_type]; + $wAp -= $this->stats[$this->uids[$uid2]]['antpa' . $witm_type]; + } else { + $wAp += $this->stats[$this->uids[$uid1]]['m10'] + $this->stats[$this->uids[$uid1]]['pm' . ($witm_type - 4)] + $this->stats[$this->uids[$uid1]]['m11a'] + $witm_data['sv_pm' . ($witm_type - 4)]; + $wAp -= $this->stats[$this->uids[$uid2]]['antpm' . ($witm_type - 4)]; + } + + //Владение данным оружием + $vladenie = 0; + + //Пробой брони + $proboi = 0; + $witm_data['m9'] = $this->stats[$this->uids[$uid1]]['m9']; + if (rand(1, 100) < floor($witm_data['m9'] / 2)) { + $proboi = floor($witm_data['m9'] / 2); + $r['pb'] = 1; + } + + $y = $this->yrn( + $this->stats[$this->uids[$uid1]], + $this->stats[$this->uids[$uid2]], + $this->users[$this->uids[$uid1]], + $this->users[$this->uids[$uid2]], + $this->users[$this->uids[$uid1]]['level'], + $this->users[$this->uids[$uid2]]['level'], + // + $witm_type, + $this->stats[$this->uids[$uid1]]['minAtack'], //мин. урон (добавочный) + $this->stats[$this->uids[$uid1]]['maxAtack'], //макс. урон + $bron[$zona][0], //броня мин. + $bron[$zona][1], //броня макс + // + $vladenie, //владения + $wAp, //мощность урона + (round($this->stats[$this->uids[$uid1]]['m3'])), //мощность крита + (($this->stats[$this->uids[$uid2]]['za' . $witm_type2]) - $this->stats[$this->uids[$uid1]]['pza']), + //защита от урона + $this->stats[$this->uids[$uid1]]['ozash'], //подавление защиты + $proboi, //пробой брони + 0, //хз + ($witm_data['sv_yron_min'] + $this->stats[$this->uids[$uid1]]['yron_min']), + ($witm_data['sv_yron_max'] + $this->stats[$this->uids[$uid1]]['yron_max']), + $this->stats[$this->uids[$uid2]]['zaproc'], + $this->stats[$this->uids[$uid2]]['zmproc'], + (($this->stats[$this->uids[$uid2]]['zm' . ($witm_type2 - 4)]) - round($this->stats[$this->uids[$uid1]]['pzm'] * 0.8)), + //защита от урона + $this->stats[$this->uids[$uid1]]['omzash'], //подавление защиты + $witm['type'], + $witm + ); + + $r['y'] = round(rand($y['min'] + $proboi, $y['max'] + round($proboi / 2))); + $r['k'] = round(rand($y['Kmin'] + round($proboi / 4), $y['Kmax'] + round($proboi / 8))); + $r['m_y'] = $y['max']; + $r['m_k'] = $y['Kmax']; + $r['bRND'] = $y['bRND']; + $r['w_type'] = $witm_type; + + + //тип от оружия + if ($witm['type'] == 18) { + $tp = 1; + } elseif ($witm['type'] == 19) { + $tp = 2; + } elseif ($witm['type'] == 20) { + $tp = 3; + } elseif ($witm['type'] == 21) { + $tp = 4; + } + + if ($tp != $witm_type && $wp > 0) // ТУТ + { + $r['y'] = round($r['y'] / 3); + $r['r'] = round($r['r'] / 3); + $r['k'] = round($r['k'] / 3); + $r['m_k'] = round($r['m_k'] / 3); + $r['m_y'] = round($r['m_y'] / 3); + } + + if (isset($this->stats[$this->uids[$uid2]]['zaproc'])) { + $r['y'] = round($r['y'] - $r['y'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); + $r['r'] = round($r['r'] - $r['r'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); + $r['k'] = round($r['k'] - $r['k'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); + $r['m_k'] = round($r['m_k'] - $r['m_k'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); + $r['m_y'] = round($r['m_y'] - $r['m_y'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); + if ($r['k'] < 1) { + $r['k'] = 2; + } + } + + if ($r['y'] < 1) { + $r['y'] = 1; + } + if ($r['r'] >= 0) { + $r['r'] = -1; + } + if ($r['k'] < 1) { + $r['k'] = 1; + } + if ($r['m_k'] < 1) { + $r['m_k'] = 1; + } + if ($r['m_y'] < 1) { + $r['m_y'] = 1; + } + return $r; + } + + //Считаем урон + private function yronRazmen($id, $at, $pat = false, $rjd = 0) + { + if ($pat) { + $pat = $at; + $at = $pat['p']; + } else { + unset($pat); + } + + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { + $yhod = [1 => 1, 2 => 0]; + } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { + $yhod = [1 => 0, 2 => 1]; + } + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $u1 = $uid1; + $u2 = $uid2; + } else { + $a = 2; + $u1 = $uid2; + $u2 = $uid1; + } + + //Считаем свойства от предметов + + + //Расчет удара (u2) по (u1) + $j = 0; + $k = 0; + if ($rjd > 0) { + $j = $rjd - 1; + } + //ТУТ + + while ($j < count($at[$a]['atack']) && $j < 8) { + // КУДА БИЛ , ТИП УДАРА + if ($k == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) { + //Левая рука + $wp = 3; + $k = 1; + } else { + //Правая рука + if ( + isset($this->stats[$this->uids[$u1]]['wp14id']) && + $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13 + ) { + $wp = 14; + } else { + $wp = 3; + } + $k = 0; + } + $witm = $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp' . $wp . 'id']]; + $witm_type = $this->weaponTx($witm); + $at[$a]['atack'][$j]['wt'] = $witm['type']; + // + $at[$a]['atack'][$j]['yhod'] = $yhod[$a]; + + if (!isset($at[$a]['atack'][$j]['yron']) && ( + $at[$a]['atack'][$j][1] == 1 || + $at[$a]['atack'][$j][1] == 4 || + $at[$a]['atack'][$j][1] == 5) + ) { + $at[$a]['atack'][$j]['yron'] = $this->yronGetrazmen($u1, $u2, $wp, $at[$a]['atack'][$j][0]); + + if ($at[$a]['atack'][$j][1] == 4) { + $at[$a]['atack'][$j]['yron']['y_old'] = $at[$a]['atack'][$j]['yron']['y']; + $at[$a]['atack'][$j]['yron']['y'] = round($at[$a]['atack'][$j]['yron']['k'] / 2); + } elseif ($at[$a]['atack'][$j][1] == 5) { + $at[$a]['atack'][$j]['yron']['y_old'] = $at[$a]['atack'][$j]['yron']['y']; + $at[$a]['atack'][$j]['yron']['y'] = $at[$a]['atack'][$j]['yron']['k']; + } + $at[$a]['atack'][$j]['yron']['2h'] = $witm['2h']; + $at[$a]['atack'][$j]['yron']['w'] = $wp; + if ($at[$a]['atack'][$j]['yron']['y'] < 1) { + $at[$a]['atack'][$j]['yron']['r'] = '--'; + } else { + $at[$a]['atack'][$j]['yron']['r'] = '-' . $at[$a]['atack'][$j]['yron']['y']; + } + } else { + $at[$a]['atack'][$j]['block'] = $this->yronGetrazmen($u1, $u2, $wp, $at[$a]['atack'][$j][0]); + + if ($at[$a]['atack'][$j][1] == 4) { + $at[$a]['atack'][$j]['block']['y_old'] = $at[$a]['atack'][$j]['block']['y']; + $at[$a]['atack'][$j]['block']['y'] = round($at[$a]['atack'][$j]['block']['k'] / 2); + } elseif ($at[$a]['atack'][$j][1] == 5) { + $at[$a]['atack'][$j]['block']['y_old'] = $at[$a]['atack'][$j]['block']['y']; + $at[$a]['atack'][$j]['block']['y'] = $at[$a]['atack'][$j]['block']['k']; + } + $at[$a]['atack'][$j]['block']['2h'] = $witm['2h']; + $at[$a]['atack'][$j]['block']['w'] = $wp; + if ($at[$a]['atack'][$j]['block']['y'] < 1) { + $at[$a]['atack'][$j]['block']['r'] = '--'; + } else { + $at[$a]['atack'][$j]['block']['r'] = '-' . $at[$a]['atack'][$j]['block']['y']; + } + } + $j++; + } + $i++; + } + + if ($pat) { + $pat['p'] = $at; + $at = $pat; + } + return $at; + } + + //Обновление здоровья + private function updateHealth($id, $at) + { + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { + $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); + } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { + $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); + } + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $a = 1; + $b = 2; + $u1 = $uid1; + $u2 = $uid2; + } else { + $a = 2; + $b = 1; + $u1 = $uid2; + $u2 = $uid1; + } + + //Рассчет дополнительных тактик + if ($this->atacks[$id]['out' . $b] > 0) { + //Игрок ${'u'.$a} получает тактики, возможно + //выдаем тактику контрудара + if (rand(0, 100) < min(floor($this->stats[$this->uids[$u1]]['m6'] / 5), 20) && + $this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic3']++; + } + //выдаем тактику щита + if (rand(0, 100) < min(floor($this->stats[$this->uids[$u1]]['m8'] / 4), 20) && + $this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic4']++; + } + } + + //Расчет удара Цели (u2) по Атакующему (u1) + $j = 0; + while ($j < count($at[$a]['atack']) && $j < 8) { + //Добавляем тактики + if ($at[$a]['atack'][$j][1] == 1) { + //u1 ударил обычным ударом u2 + if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic1']++; + } + //Двуручка + if ( + $at[$a]['atack'][$j]['yron']['2h'] == 1 && + $this->stats[$this->uids[$u2]]['this_animal'] == 0 + ) { + $this->users[$this->uids[$u1]]['tactic1'] += 2; + } + } elseif ($at[$a]['atack'][$j][1] == 2) { + //u2 увернулся от u1 + } elseif ($at[$a]['atack'][$j][1] == 3) { + //u2 заблокировал удар u1 + if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u2]]['tactic4']++; + } + } elseif ($at[$a]['atack'][$j][1] == 4) { + //u1 пробил блок u2 критом + if ( + !isset($at[$a]['atack'][$j]['notactic2']) && + $this->stats[$this->uids[$u2]]['this_animal'] == 0 + ) { + $this->users[$this->uids[$u1]]['tactic2']++; + } + $this->users[$this->uids[$u2]]['tactic4']++; //тактика за пробив блок + } elseif ($at[$a]['atack'][$j][1] == 5) { + //u1 ударил критическим ударом u2 + if (!isset($at[$a]['atack'][$j]['notactic2'])) { + if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic2'] += 2; + } + //Двуручка + if ( + $at[$a]['atack'][$j]['yron']['2h'] == 1 && + $this->stats[$this->uids[$u2]]['this_animal'] == 0 + ) { + $this->users[$this->uids[$u1]]['tactic2'] += 1; + } + } + } elseif ($at[$a]['atack'][$j][1] == 6) { + //u2 парировал удар u1 + if ( + !isset($at[$a]['atack'][$j]['notactic5']) && + $this->stats[$this->uids[$u1]]['this_animal'] == 0 + ) { + $this->users[$this->uids[$u2]]['tactic5']++; + } + } elseif ($at[$a]['atack'][$j][1] == 7) { + //u2 блокировал щитом удар u1 //ТУТ ЩИТ + if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u2]]['tactic4']++; + } + } elseif ($at[$a]['atack'][$j][1] == 8) { + //u2 увернулся от удара u1 и нанес по нему контрудар + if ($this->stats[$this->uids[$u1]]['this_animal'] == 0) { + $this->users[$this->uids[$u2]]['tactic3']++; + } + } + // КУДА БИЛ , ТИП УДАРА + if (isset($at[$a]['atack'][$j]['yron']) && ( + $at[$a]['atack'][$j][1] == 1 || + $at[$a]['atack'][$j][1] == 4 || + $at[$a]['atack'][$j][1] == 5)) { + if ($this->stats[$this->uids[$u2]]['hpNow'] <= $at[$a]['atack'][$j]['yron']['y']) { + $at[$a]['atack'][$j]['yron']['y'] = $this->stats[$this->uids[$u2]]['hpNow']; + } + if ($this->stats[$this->uids[$u2]]['hpNow'] <= $at[$a]['atack'][$j]['yron']['k']) { + $at[$a]['atack'][$j]['yron']['k'] = $this->stats[$this->uids[$u2]]['hpNow']; + } + + if ($at[$a]['atack'][$j]['yron']['y'] < 0) { + $at[$a]['atack'][$j]['yron']['y'] = 1; + $at[$a]['atack'][$j]['yron']['r'] = -1; + $at[$a]['atack'][$j]['yron']['k'] = 1; + } + if ($this->stats[$this->uids[$u2]]['hpNow'] < 1) { + $at[$a]['atack'][$j]['yron']['y'] = 0; + $at[$a]['atack'][$j]['yron']['r'] = -1; + $at[$a]['atack'][$j]['yron']['k'] = 0; + } + + //Добавляем нанесенный урон и опыт + $this->takeExp($u1, $at[$a]['atack'][$j]['yron']['y'], $u1, $u2); + //Отнимаем НР + $this->stats[$this->uids[$u2]]['hpNow'] -= $at[$a]['atack'][$j]['yron']['y']; + $this->users[$this->uids[$u2]]['last_hp'] = -$at[$a]['atack'][$j]['yron']['y']; + + $at[$a]['atack'][$j]['yron']['hp'] = $this->stats[$this->uids[$u2]]['hpNow']; + if ($at[$a]['atack'][$j]['yron']['hp'] < 1) { + $at[$a]['atack'][$j]['yron']['hp'] = 0; + } + $at[$a]['atack'][$j]['yron']['hpAll'] = $this->stats[$this->uids[$u2]]['hpAll']; + if ($at[$a]['atack'][$j]['yron']['hp'] > $at[$a]['atack'][$j]['yron']['hpAll']) { + $at[$a]['atack'][$j]['yron']['hp'] = $at[$a]['atack'][$j]['yron']['hpAll']; + } + // + //Травмирование + if ( + rand(0, 100) <= 50 && + ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5) && + !isset($at[$a]['atack'][$j]['yron']['travma']) && + rand(0, 1000) < 500 && + $this->users[$this->uids[$u2]]['level'] > 1 && + $this->stats[$this->uids[$u1]] > 1 + ) { + $trvm_chns = floor(rand(0, 200) / 10); + if ($trvm_chns > 3 || $trvm_chns < 1) { + $trvm_chns = 0; + } + $at[$a]['atack'][$j]['yron']['travma'] = [$trvm_chns, 'Обыкновенная травма']; + unset($trvm_chns); + } + } + $j++; + } + $i++; + } + return $at; + } + + //Добавляем новую статистику игрока + private function addstatuser($id) + { + if (!$id && !is_numeric($id)) { + return; + } + + mysql_query('INSERT INTO `battle_users` + ( `battle`,`uid`,`time_enter`,`login`,`level`,`align`,`clan`,`hpAll`,`hp`,`hpStart`,`team` ) + VALUES + ( + ' . $this->info['id'] . ', + ' . $id . ', + unix_timestamp(), + ' . $this->users[$this->uids[$id]]['login'] . ', + ' . $this->users[$this->uids[$id]]['level'] . ', + ' . $this->users[$this->uids[$id]]['align'] . ', + ' . $this->users[$this->uids[$id]]['clan'] . ', + ' . $this->stats[$this->uids[$id]]['hpAll'] . ', + ' . $this->stats[$this->uids[$id]]['hp'] . ', + ' . $this->stats[$this->uids[$id]]['hpNow'] . ', + ' . $this->users[$this->uids[$id]]['team'] . ' + )'); + } + + //Проверяем приемы + public function priemsRazmen($id, $at) + { + if ($at == 'fast') { + $uid1 = $id[0]; + $uid2 = $id[1]; + } else { + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + } + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $u1 = $uid1; + } else { + $u1 = $uid2; + } + + //Получаем приемы и смотрим когда какой действует + $eff = $this->stats[$this->uids[$u1]]['effects']; + $this->stats[$this->uids[$u1]]['u_priem'] = []; + $j = 0; + while ($j <= count($eff)) { + if (isset($eff[$j]) && $eff[$j]['id_eff'] == 22 && $eff[$j]['v1'] == 'priem' && $eff[$j]['v2'] > 0) { + $this->stats[$this->uids[$u1]]['u_priem'][] = [ + $j, + $eff[$j]['v2'], + $this->prm[$eff[$j]['v2']]['act'], + $eff[$j]['id'], + $this->prm[$eff[$j]['v2']]['type_of'], + $this->prm[$eff[$j]['v2']]['moment'], + $this->prm[$eff[$j]['v2']]['moment_end'], + $this->prm[$eff[$j]['v2']]['type_sec'], + ]; + } + $j++; + } + $i++; + } + } + + //Приемы которые используются моментально + private function priemsRazmenMoment($id, $at) + { + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $u1 = $uid1; + $u2 = $uid2; + } else { + $u1 = $uid2; + $u2 = $uid1; + } + if (!isset($at['p']['p_cast'])) { + $at['p'] = $at; + $at['p']['p_cast'] = true; + } + // + + //Приемы ухода от удара + if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 1) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + $this->stats[$this->uids[$u2]]['nopryh']--; + } + } + $j++; + } + } + //Приемы крита + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 2) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Приемы атаки + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 3) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + if (isset($fx_priem)) { + $at = $fx_priem($id, $at, $u1, $j); + } + unset(${'fx_priem'}); + } + } + $j++; + } + //Приемы защиты + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 4) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 5) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + $i++; + } + //return $at; + } + + //Приемы которые используются моментально (в конце хода) + private function priemsRazmenMomentEnd($id, $at) + { + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $u1 = $uid1; + $u2 = $uid2; + } else { + $u1 = $uid2; + $u2 = $uid1; + } + if (!isset($at['p']['p_cast'])) { + $at['p'] = $at; + $at['p']['p_cast'] = true; + } + // + + //Приемы ухода от удара + if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 1) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + $this->stats[$this->uids[$u2]]['nopryh']--; + } + } + $j++; + } + } + //Приемы крита + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 2) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Приемы атаки + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 3) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + if (isset($fx_priem)) { + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + } + $j++; + } + //Приемы защиты + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 4) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 5) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + $pr_moment = true; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + $i++; + } + //return $at; + } + + + //Используем приемы + private function priemsTestRazmen($id, $at) + { + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $u1 = $uid1; + $u2 = $uid2; + } else { + $u1 = $uid2; + $u2 = $uid1; + } + + if (!isset($at['p']['p_cast'])) { + $at['p'] = $at; + $at['p']['p_cast'] = true; + } + + //ставка + + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 220 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 237 + || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 286 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 287 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 288 + || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 213) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + + //Приемы ухода от удара + if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 1) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + $this->stats[$this->uids[$u2]]['nopryh']--; + } + } + $j++; + } + } + //Приемы крита + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 2) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + + //Приемы атаки + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 3) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + if (isset($fx_priem)) { + $at = $fx_priem($id, $at, $u1, $j); + } + unset(${'fx_priem'}); + } + } + $j++; + } + + //Приемы защиты + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 4) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + if (isset($fx_priem)) { + $at = $fx_priem($id, $at, $u1, $j); + } + unset(${'fx_priem'}); + } + } + $j++; + } + + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + if (isset($fx_priem)) { + $at = $fx_priem($id, $at, $u1, $j); + } + unset(${'fx_priem'}); + } + } + $j++; + } + $i++; + } + + $i = 1; + while ($i <= 2) { + $u1 = $i == 1 ? $uid1 : $uid2; + + if (!isset($at['p']['p_cast'])) { + $at['p'] = $at; + $at['p']['p_cast'] = true; + } + + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 8) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 9) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_used_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + $i++; + } + + return $at; + } + + //Повторная проверка приемов + private function priemsRestartRazmen($id, $at) + { + if (isset($at['p'])) { + // + //Проверка + $uid1 = $this->atacks[$id]['uid1']; + $uid2 = $this->atacks[$id]['uid2']; + + /* + Если возникнут проблемы с приемами, придется переписать алгоритм, сейчас он выглядит так: + Цикл 1. Проверяем пользователя + Цикл 2 внутри Цикла 1. Проверяем приемы поторые пользователь использовал + Придется сделать: + Цикл 1. Проверяем пользователя + Цикл 2 внутри Цикла 1. Проверяем приемы уворота + Цикл 3. Проверяем пользователя + Цикл 4 внутри Цикла 3. Проверяем приемы крита + и т.д. + */ + $i = 1; + while ($i <= 2) { + if ($i == 1) { + $u1 = $uid1; + $u2 = $uid2; + } else { + $u1 = $uid2; + $u2 = $uid1; + } + + if (!isset($at['p']['p_cast'])) { + $at['p'] = $at; + $at['p']['p_cast'] = true; + } + + //Приемы ухода от удара + if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 1) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_tested_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + $this->stats[$this->uids[$u2]]['nopryh']--; + } + } + $j++; + } + } + //Приемы крита + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 2) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_tested_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Приемы защиты + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 4) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_tested_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Приемы атаки + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 3) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_tested_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_tested_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u1, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 8) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { + $pr_tested_this = $u2; + require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u2, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 9) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { + $pr_tested_this = $u2; + require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); + $at = $fx_priem($id, $at, $u2, $j); + unset(${'fx_priem'}); + } + } + $j++; + } + + $i++; + } + } + return $at['p']; + } + + //Проверка урона приемов + public $um_priem = []; + + /** + * Трогать очень осторожно. Этот шайтан как-то проверяет приёмы на враге + * и рассчитывает урон учитывая и эти приёмы тоже. + * @param $uid1 + * @param $uid2 + * @param $priem + * @param $yron + * @param $profil + * @param $stabil [deprecated] + * @param $test [deprecated] + * @param $inlog + * @return float|int|mixed + */ + public function testYronPriem($uid1, $uid2, $priem, $yron, $profil, $stabil, $test = false, $inlog = 0) + { + /* + profil = { + -1 - урон оружием + -2 - урон магией + 0 - неизвестно + 1-4 - профильный оружия + 5-12 - профильный магия + } + stabil - урон не подвержен мощностям и т.д + */ + //Проверка + $u1 = $uid1; + $u2 = $uid2; + + //Проверяем приемы защиты игрока $u1 на урон игрока $u2 + //Получаем приемы и смотрим когда какой действует + if (!isset($this->stats[$this->uids[$u2]]['u_priem'])) { + $eff = $this->stats[$this->uids[$u2]]['effects']; + $j = 0; + while ($j <= count($eff)) { + if (isset($eff[$j]) && $eff[$j]['id_eff'] == 22 && $eff[$j]['v1'] == 'priem' && $eff[$j]['v2'] > 0) { + $this->stats[$this->uids[$u2]]['u_priem'][] = [ + $j, + $eff[$j]['v2'], + $this->prm[$eff[$j]['v2']]['act'], + $eff[$j]['id'], + $this->prm[$eff[$j]['v2']]['type_of'], + $this->prm[$eff[$j]['v2']]['moment'], + ]; + } + $j++; + } + unset($eff); + } + //Приемы защиты + $j = 0; + while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { + if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 4) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { + $pr_momental_this = $u2; + require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); + $yron = $fx_moment($u2, $u1, $j, $yron, $profil); + unset(${'fx_moment'}); + } + } + $j++; + } + + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_momental_this = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + if (isset($fx_moment)) { + $yron = $fx_moment($u1, $u2, $j, $yron, $profil, $inlog); + } + unset(${'fx_moment'}); + } + } + $j++; + } + + //Прочие приемы (влияет на урон от моментальных приемов) + $j = 0; + while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { + if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][7] == 5) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { + $pr_momental_this_seven = $u1; + require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + if (isset($fx_moment_seven)) { + $yron = $fx_moment_seven($u1, $u2, $j, $yron, $profil, $inlog); + } + unset(${'fx_moment_seven'}); + } + } + $j++; + } + + //Прочие приемы + $j = 0; + while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { + if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 8) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { + $pr_momental_this = $u2; + require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); + if (isset($fx_moment)) { + $yron = $fx_moment($u2, $u1, $j, $yron, $profil, $inlog); + } + unset(${'fx_moment'}); + } + } + if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 9) { + if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { + $pr_momental_this = $u2; + require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); + if (isset($fx_moment)) { + $yron = $fx_moment($u2, $u1, $j, $yron, $profil, $inlog); + } + unset(${'fx_moment'}); + } + } + $j++; + } + + if ($this->stats[$this->uids[$u2]]['zaproc'] > 0) { + $yron = round($yron - $yron * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); + if ($yron < 1) { + $yron = 1; + } + } + + return $yron; + } + + //Опыт + набитый урон за удар приемом\магией + + /** + * @param $u1 + * @param $u2 + * @param $yron + * @param $type [deprecated] + * @return void + */ + public function priemYronSave($u1, $u2, $yron, $type = 0) + { + //$type 0 - урон , 1 - хил + + $this->testUserInfoBattle($u1); + $this->testUserInfoBattle($u2); + + if (isset($this->uids[$u1])) { + if ($this->stats[$this->uids[$u2]]['hpAll'] <= 1000) { + $adt6 = round(0.1 * (floor($yron) / $this->stats[$this->uids[$u2]]['hpAll'] * 100), 10); + } else { + $adt6 = round(0.1 * (floor($yron) / 1000 * 100), 10); + } + + if ($yron > $this->stats[$this->uids[$u2]]['hpNow']) { + $yron = $this->stats[$this->uids[$u2]]['hpNow']; + } + + if ($yron > 0) { + $this->users[$this->uids[$u1]]['battle_yron'] += $yron; + $this->users[$this->uids[$u1]]['battle_exp'] += round($this->testExp($yron, + $this->stats[$this->uids[$u1]], $this->stats[$this->uids[$u2]], $u1, $u2)); + if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic6'] += $adt6; + $this->stats[$this->uids[$u1]]['tactic6'] += $adt6; + } else { + $this->users[$this->uids[$u1]]['tactic6'] += $adt6 / 3; + $this->stats[$this->uids[$u1]]['tactic6'] += $adt6 / 3; + } + } else { + $adt6 = 0; + } + // + $this->users[$this->uids[$u2]]['last_hp'] = -$yron; + // + mysql_query('UPDATE `stats` SET + `tactic6` = `tactic6` + ' . $adt6 . ', + `battle_yron` = `battle_yron` + ' . $yron . ', + `battle_exp` = `battle_exp` + ' . round($this->testExp($yron, $this->stats[$this->uids[$u1]], + $this->stats[$this->uids[$u2]], $u1, $u2)) . ' + WHERE `id` = ' . $u1); + // + mysql_query('UPDATE `stats` SET + `last_hp` = ' . $this->users[$this->uids[$u2]]['last_hp'] . ' + WHERE `id` = ' . $u2); + } + + $this->addNewStat([ + 1 => [ + 'battle' => $this->info['id'], + 'uid1' => $this->users[$this->uids[$u1]]['id'], + 'uid2' => $this->users[$this->uids[$u2]]['id'], + 'time' => time(), + 'type' => 0, + 'a' => '10000', + 'b' => 0, + 'type_a' => 1, + 'type_b' => 0, + 'ma' => 1, + 'mb' => 1, + 'yrn' => $yron, + 'yrn_krit' => 0, + 'tm1' => $this->users[$this->uids[$u1]]['team'], + 'tm2' => $this->users[$this->uids[$u2]]['team'], + ], + ]); + } + + //Наносим удар между игроками + + public function startAtack($id) + { + global $c, $u, $priem; + + if (!isset($this->atacks[$id]) || $this->atacks[$id]['lock'] != 0) { + return; + }//Прием разгадать тактику + $i = 1; + $j = 2; + $k = 0; + + while ($i <= 2) { + $untac = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `v1` = "priem" AND `v2` = 217 AND `uid` = ' . $this->atacks[$id]['uid' . $i] . ' AND `delete` = 0')); + + $agrs = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `v1` = "priem" AND `v2` = 211 AND `uid` = ' . $this->atacks[$id]['uid' . $j] . ' AND `delete` = 0')); + + if (isset($untac['id']) && !isset($agrs['id'])) { + // AND `a`.`v2` != 235 // AND `a`.`v2` != 273 AND `a`.`v2` != 286 AND `a`.`v2` != 287 AND `a`.`v2` != 288 + + $pvr['sp'] = mysql_query('SELECT * FROM `eff_users` WHERE + `uid` = ' . $this->atacks[$id]['uid' . $j] . ' + AND `delete` = 0 + AND `v1` = "priem" + and `v2` not in (222, 238, 228, 229, 139, 188, 226, 211, 49, 233, 227, 220, 191, 332, 333, + 334, 335, 236, 201, 261, 262, 206, 207, 208, 209, 210, 284, 263, 258, 29, 30, 31, 32, 526, 249, + 248, 187, 245, 175, 176, 177, 178, 179, 285, 36, 85, 86, 87, 88, 89, 90, 269, 276, 277, 270, + 174, 324, 217) + AND `name` NOT LIKE "%Иммунитет%" + LIMIT 30'); + while ($pvr['pl'] = mysql_fetch_array($pvr['sp'])) { + $pvr['pl']['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $pvr['pl']['v2'] . '" LIMIT 1')); + if (isset($pvr['pl']['priem']['id']) && $pvr['pl']['priem']['neg'] == 0) { + $this->delPriem($pvr['pl'], $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 100); + } + } + // + $k++; + } + $j--; + $i++; + } + + //Восстановление манны 1% за ход + if ($this->atacks[$id]['out1'] == 0) { + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['s6'] / 4 < $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['level']) { + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] += floor($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['level'] + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hod_minmana']); + } else { + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] += floor($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['s6'] / 4 + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hod_minmana']); + } + $this->users[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] = $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow']; + } + // + if ($this->atacks[$id]['out2'] == 0) { + if ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['s6'] / 4 < $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['level']) { + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] += floor($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['level'] + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hod_minmana']); + } else { + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] += floor($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['s6'] / 4 + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hod_minmana']); + } + $this->users[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] = $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow']; + } + + //Антистаты + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['antm3'] != 0) { + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['m3'] -= round($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['antm3']); + } + if ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['antm3'] != 0) { + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['m3'] -= round($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['antm3']); + } + + //Расчет количества блоков и противников + $this->testZonb($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2']); + + //Запускаем магию предметов + $this->magicItems($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $id); + $this->magicItems($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $id); + + // Получаем приемы игроков + $this->priemsRazmen($id, $at); + $this->priemsRazmenMoment($id, $at); + $this->priemsRazmen($id, $at); + + $at = $this->newRazmen($id); + + // Тестируем какие еще могут быть варианты при ударе + // Уворот, парирование, крит, пробить блок, блок щитом + // Блок щитом (если есть щит, конечно) + $at = $this->mf2Razmen($id, $at, $v); //крит + $at = $this->mf3Razmen($id, $at, $v); //парирование + $at = $this->mf4Razmen($id, $at, $v); //блок щитом + + $at = $this->mf1Razmen($id, $at, $v); //уворот + $at = $this->mf5Razmen($id, $at, $v); //контрудар + + $at = $this->yronRazmen($id, $at); //расчет урона + + // Проверяем приемы + // Получаем приемы игроков + $at = $this->priemsTestRazmen($id, $at); + // Собираем размен (пересчитываем и расчитываем урон и т.д) + $at = $this->priemsRestartRazmen($id, $at); //Повторная проверка приемов (если требуется) + // + + //Минусуем поглощенный урон + if (count($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['set_pog']) > 0) { + $this->testPogB($this->atacks[$id]['uid1'], 1, $id, 1); + } + if (count($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['set_pog']) > 0) { + $this->testPogB($this->atacks[$id]['uid2'], 1, $id, 1); + } + + // Обновляем НР и добавляем тактики + $at = $this->updateHealth($id, $at); + + // Заносим в логи + записываем статистику боя + $this->addlogRazmen($id, $at); + // NEW BATTLE SYSTEM + + //Запускаем магию предметов + $this->magicItems($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $id); + $this->magicItems($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $id); + + // + //Возращаем зоны блока + $this->restZonb($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2']); + //обновляем задержки приемов + $zd1 = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems_z']); + $zd2 = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems_z']); + // + $prmos = []; + // + $i5 = 0; + + while ($i5 < 51) { + if (isset($zd1[$i5]) && $zd1[$i5] > 0) { + //Если приемы не требуют ход + $zd1[$i5] -= 1; + } else { + $zd1[$i5] = 0; + } + if (isset($zd2[$i5]) && $zd2[$i5] > 0) { + //Если приемы не требуют ход + $zd2[$i5] -= 1; + } else { + $zd2[$i5] = 0; + } + $i5++; + } + unset($prmos); + + if ($this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy'] == $this->users[$this->uids[$this->atacks[$id]['uid2']]]['id']) { + $this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy'] = -$this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy']; + } + + if ($this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy'] == $this->users[$this->uids[$this->atacks[$id]['uid1']]]['id']) { + $this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy'] = -$this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy']; + } + + $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems_z'] = implode('|', $zd1); + $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems_z'] = implode('|', $zd2); + if ($this->atacks[$id]['uid1'] == $u->info['id']) { + $u->info['priems_z'] = implode('|', $zd1); + } elseif ($this->atacks[$id]['uid2'] == $u->info['id']) { + $u->info['priems_z'] = implode('|', $zd2); + } + // + //Проверяем тактики + $i = 1; + while ($i <= 6) { + if ($this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] > 25) { + $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] = 25; + } elseif ($this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] <= 0) { + $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] = 0; + } + if ($this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] > 25) { + $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] = 25; + } elseif ($this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] <= 0) { + $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] = 0; + } + $i++; + } + // + //Обновляем задержки предметов + mysql_query('UPDATE `items_users` SET `btl_zd` = `btl_zd` - 1 WHERE (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '") AND `btl_zd` > 0 AND `inOdet` > 0 LIMIT 100'); + + mysql_query('UPDATE `users` SET `notrhod` = "-1" WHERE `id` = "' . $this->atacks[$id]['uid1'] . '" OR `id` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 2'); + + //Обновляем задержки пирожков + mysql_query('UPDATE `pirogi` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")'); + mysql_query('UPDATE `tactic` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")'); + + //Тактики + mysql_query('DELETE FROM `pirogi` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1'); + mysql_query('DELETE FROM `tactic` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1'); + + //Обновляем задержки пирожков + mysql_query('UPDATE `spells` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")'); + mysql_query('DELETE FROM `spells` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1'); + + + //Обновляем данные в battle_users + mysql_query('UPDATE `battle_users` SET `hp` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hpNow'] . '" + WHERE `battle` = "' . $this->info['id'] . '" AND `uid` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1'); + mysql_query('UPDATE `battle_users` SET `hp` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hpNow'] . '" + WHERE `battle` = "' . $this->info['id'] . '" AND `uid` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1'); + //Восстановление манны 25% от мудрости за ход + + + if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { + $this->save_stats($this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'])); + } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { + $this->save_stats($this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'])); + } + // + $this->save_stats($this->atacks[$id]['uid1']); + $this->save_stats($this->atacks[$id]['uid2']); + + $this->priemsRazmenMomentEnd($id, $at); + + //Минусуем заряд приема \ эффекта + $j = 1; + while ($j <= 2) { + $eff = $this->stats[$this->uids[$this->atacks[$id]['uid' . $j]]]['effects']; + $i = 0; + while ($i < count($eff)) { + if (isset($eff[$i])) { + if ($eff[$i]['timeUse'] == 77 && $eff[$i]['hod'] > -1) { + $eff[$i]['hod']--; + $eff[$i]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = ' . $eff[$i]['v2'])); + if (round($eff[$i]['priem']['minmana'] * $eff[$i]['x']) != 0) { + //Отнимаем ману у того кто кастовал + $priem->minMana($eff[$i]['user_use'], + round($eff[$i]['priem']['minmana'] * $eff[$i]['x'])); + if ($this->stats[$this->uids[$eff[$i]['user_use']]]['mpNow'] <= 0) { + $eff[$i]['hod'] = 0; + } + } + if (strripos($eff[$i]['data'], 'minprocmanahod')) { + $pvr = [ + 'x1' => 0, + 'x2' => 0, + 'd' => explode('|', $eff[$i]['data']), + 'i' => 0, + 'uid' => $eff[$i]['uid'], + 'color' => '', + 'color2' => '', + 'effx' => '', + 'x' => $eff[$i]['name'], + ]; + + while ($pvr['i'] < count($pvr['d'])) { + if (isset($pvr['d'][$pvr['i']])) { + $pvr['d1'] = explode('=', $pvr['d'][$pvr['i']]); + if ($pvr['d1'][0] == 'minprocmanahod') { + $pvr['d1'] = explode('x', $pvr['d1'][1]); + $pvr['x1'] = $pvr['d1'][0]; + $pvr['x2'] = $pvr['d1'][1]; + } + } + $pvr['i']++; + } + + $pvr['mp'] = round($this->stats[$this->uids[$pvr['uid']]]['mpAll'] / 100 * rand($pvr['x1'], + $pvr['x2'])); + $pvr['mpSee'] = 0; + $pvr['mpNow'] = floor($this->stats[$this->uids[$pvr['uid']]]['mpNow']); + $pvr['mpAll'] = $this->stats[$this->uids[$pvr['uid']]]['mpAll']; + $pvr['mpTr'] = $pvr['mpAll'] - $pvr['mpNow']; + + if ($pvr['mpTr'] > 0) { + //Требуется хилл + if ($pvr['mpTr'] < $pvr['mp']) { + $pvr['mp'] = $pvr['mpTr']; + } + $pvr['mpSee'] = '+' . $pvr['mp']; + $pvr['mpNow'] += $pvr['mp']; + } + if ($pvr['mpNow'] > $pvr['mpAll']) { + $pvr['mpNow'] = $pvr['mpAll']; + } elseif ($pvr['mpNow'] < 0) { + $pvr['mpNow'] = 0; + } + if ($pvr['mpSee'] == 0) { + $pvr['mpSee'] = '--'; + } + + + $this->stats[$this->uids[$pvr['uid']]]['mpNow'] = $pvr['mpNow']; + $this->users[$this->uids[$pvr['uid']]]['mpNow'] = $pvr['mpNow']; + mysql_query('UPDATE `stats` SET `mpNow` = ' . $this->stats[$this->uids[$pvr['uid']]]['mpNow'] . ' WHERE `id` = ' . $pvr['uid']); + + $pvr['text'] = $this->addlt(1, 21, $this->users[$this->uids[$pvr['uid']]]['sex']); + $pvr['text2'] = '{tm1} ' . $pvr['text'] . ' на ' . $pvr['mpSee'] . ' [' . $pvr['mpNow'] . '/' . $pvr['mpAll'] . '] (Мана)'; + $this->priemAddLog($id, 1, 2, $pvr['uid'], 0, + '' . $pvr['x'] . '', + $pvr['text2'], + ($this->hodID) + ); + + unset($pvr); + } + + if (isset($this->rehodeff[$eff[$i]['id']])) { + $eff[$i]['hod'] = $this->rehodeff[$eff[$i]['id']]; + } + if ($eff[$i]['hod'] > 0) { + $this->stats[$this->uids[$this->atacks[$id]['uid' . $j]]]['effects']['hod'] = $eff[$i]['hod']; + mysql_query('UPDATE `eff_users` SET `hod` = "' . $eff[$i]['hod'] . '" WHERE `id` = "' . $eff[$i]['id'] . '" LIMIT 1'); + } else { + //удаляем прием + if ($eff[$i]['v2'] > 0) { + if ($j == 1) { + $jn = 2; + } else { + $jn = 1; + } + $this->delPriem($eff[$i], $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], + 3, $this->atacks[$id]['uid' . $jn]); + } + } + } elseif ($eff[$i]['timeUse'] == 77 && $eff[$i]['hod'] == -2) { + $eff[$i]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')); + $priem->hodUsePriem($eff[$i], $eff[$i]['priem']); + } else { + $eff[$i]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')); + if (isset($eff[$i]['priem']['minmana']) && round($eff[$i]['priem']['minmana'] * $eff[$i]['x']) != 0) { + //Отнимаем ману у того кто кастовал + $priem->minMana($eff[$i]['user_use'], + round($eff[$i]['priem']['minmana'] * $eff[$i]['x'])); + if ($this->stats[$this->uids[$eff[$i]['user_use']]]['mpNow'] <= 0) { + $eff[$i]['hod'] = 0; + if (isset($this->rehodeff[$eff[$i]['id']])) { + $eff[$i]['hod'] = $this->rehodeff[$eff[$i]['id']]; + } + if ($eff[$i]['v2'] > 0) { + if ($j == 1) { + $jn = 2; + } else { + $jn = 1; + } + $this->delPriem($eff[$i], + $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 3, + $this->atacks[$id]['uid' . $jn]); + } + } + } elseif ($eff[$i]['timeUse'] > 100 && $eff[$i]['hod'] > -1 && $c['effz'] > 0) { + $eff[$i]['hod']--; + if (isset($this->rehodeff[$eff[$i]['id']])) { + $eff[$i]['hod'] = $this->rehodeff[$eff[$i]['id']]; + } + if ($eff[$i]['hod'] > 0) { + $this->stats[$this->uids[$this->atacks[$id]['uid' . $j]]]['effects']['hod'] = $eff[$i]['hod']; + mysql_query('UPDATE `eff_users` SET `hod` = "' . $eff[$i]['hod'] . '" WHERE `id` = "' . $eff[$i]['id'] . '" LIMIT 1'); + } else { + //удаляем прием + if ($eff[$i]['v2'] > 0) { + if ($j == 1) { + $jn = 2; + } else { + $jn = 1; + } + $this->delPriem($eff[$i], + $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 3, + $this->atacks[$id]['uid' . $jn]); + } + } + } + } + } + $i++; + } + $j++; + } + // + // + //Проверяем + if ($c['propsk_die'] > 0 && $this->info['razdel'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) { + $cn1 = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `battle_out` WHERE `battle` = "' . $this->info['id'] . '" AND `uid1` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1')); + $cn2 = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `battle_out` WHERE `battle` = "' . $this->info['id'] . '" AND `uid1` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1')); + if ($cn1[0] > 3) { + // + $pvr['text2'] = '{tm1} Персонаж {u1} был убит из-за большого количества пропусков хода.'; + $this->priemAddLog($id, 1, 2, $this->atacks[$id]['uid1'], 0, '', + $pvr['text2'], + ($this->hodID) + ); + unset($pvr); + mysql_query('UPDATE `stats` SET `hpNow` = 0 WHERE `id` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1'); + } + if ($cn2[0] > $c['propsk_die']) { + $pvr['text2'] = '{tm1} Персонаж {u1} был убит из-за большого количества пропусков хода.'; + $this->priemAddLog($id, 1, 2, $this->atacks[$id]['uid2'], 0, '', + $pvr['text2'], + ($this->hodID) + ); + unset($pvr); + mysql_query('UPDATE `stats` SET `hpNow` = 0 WHERE `id` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1'); + } + } + // + //Обновляем текущего противника + if ($u->info['id'] == $this->atacks[$id]['uid1']) { + $u->info['enemy'] = $this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy']; + } + if ($u->info['id'] == $this->atacks[$id]['uid2']) { + $u->info['enemy'] = $this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy']; + } + //Удаляем размен из базы //ТУТ возможен лаг удаления + mysql_query('DELETE FROM `battle_act` WHERE ( `uid1` = "' . $this->atacks[$id]['uid1'] . '" AND `uid2` = "' . $this->atacks[$id]['uid2'] . '" ) OR + ( `uid2` = "' . $this->atacks[$id]['uid1'] . '" AND `uid1` = "' . $this->atacks[$id]['uid2'] . '" )'); + + unset($old_s1, $old_s2); + unset($this->ga[$this->atacks[$id]['uid1']][$this->atacks[$id]['uid2']], $this->ga[$this->atacks[$id]['uid2']][$this->atacks[$id]['uid1']]); + unset($this->ag[$this->atacks[$id]['uid1']][$this->atacks[$id]['uid2']], $this->ag[$this->atacks[$id]['uid2']][$this->atacks[$id]['uid1']]); + unset($this->atacks[$id]); + mysql_query('DELETE FROM `battle_act` WHERE `id` = ' . $id); + // + + unset($old_s1, $old_s2); + // + } + + //Сохранение данные + private function save_stats($uid) + { + mysql_query('UPDATE `stats` SET + `hpNow` = ' . $this->stats[$this->uids[$uid]]['hpNow'] . ', + `mpNow` = ' . $this->stats[$this->uids[$uid]]['mpNow'] . ', + `tactic1` = ' . $this->users[$this->uids[$uid]]['tactic1'] . ', + `tactic2` = ' . $this->users[$this->uids[$uid]]['tactic2'] . ', + `tactic3` = ' . $this->users[$this->uids[$uid]]['tactic3'] . ', + `tactic4` = ' . $this->users[$this->uids[$uid]]['tactic4'] . ', + `tactic5` = ' . $this->users[$this->uids[$uid]]['tactic5'] . ', + `tactic6` = ' . $this->users[$this->uids[$uid]]['tactic6'] . ', + `tactic7` = ' . $this->users[$this->uids[$uid]]['tactic7'] . ', + `enemy` = ' . $this->users[$this->uids[$uid]]['enemy'] . ', + `battle_yron` = ' . $this->users[$this->uids[$uid]]['battle_yron'] . ', + `last_hp` = ' . $this->users[$this->uids[$uid]]['last_hp'] . ', + `battle_exp` = ' . $this->users[$this->uids[$uid]]['battle_exp'] . ', + `priems_z` = ' . $this->users[$this->uids[$uid]]['priems_z'] . ' + WHERE `id` = ' . $uid); + } + + //Выводим лог боя + public function lookLog() + { + global $u; + $hodID = mysql_fetch_array(mysql_query('SELECT `id_hod` FROM `battle_logs` WHERE `battle` = ' . $this->info['id'] . ' ORDER BY `time`')); + if ($hodID['id_hod'] <= 1) { + $u->info['alog'] = 0; + } + + if ($_POST['idlog'] < 1) { + $_POST['idlog'] = 0; + } + $talog = mysql_fetch_array(mysql_query('SELECT `alog` FROM `stats` WHERE `id` = ' . $u->info['id'])); + $sp = mysql_query('SELECT + `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` + FROM `battle_logs` + WHERE `battle` = ' . $this->info['id'] . ' AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'); + if (isset($sp) && $this->info['team_win'] != -1) { + $sp = mysql_query('SELECT + `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` + FROM `battle_logs_save` + WHERE `battle` = ' . $this->info['id'] . ' AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'); + } + $jin = 0; + $forYou2 = 0; + $js = ''; + $pll = 0; + if ($_POST['idlog'] < 1) { + $_POST['idlog'] = 0; + } + $talog = mysql_fetch_array(mysql_query('SELECT `alog` FROM `stats` WHERE `id` = ' . $u->info['id'])); + $sp = mysql_query('SELECT + `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` + FROM `battle_logs` + WHERE `battle` = ' . $this->info['id'] . ' AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'); + if (isset($sp) && $this->info['team_win'] != -1) { + $sp = mysql_query('SELECT + `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` + FROM `battle_logs_save` + WHERE `battle` = ' . $this->info['id'] . ' AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'); + } + $jin = 0; + $forYou2 = 0; + while ($pl = mysql_fetch_array($sp)) { + if ($jin == 0) { + $u->info['alog'] = $pl['id_hod']; + } + $jin++; + + $rt = $pl['text']; + $pl['vars'] = str_replace('^^^^', 'rvnO', $pl['vars']); + $rt = str_replace('{tm1}', '' . date('H:i', $pl['time']) . '', $rt); + $rt = str_replace('{tm2}', '' . date('H:i', $pl['time']) . '', $rt); + $rt = str_replace('{tm3}', + '' . date('d.m.Y H:i', $pl['time']) . '', $rt); + $rt = str_replace('{tm4}', + '' . date('d.m.Y H:i', $pl['time']) . '', $rt); + $pl['text'] = $rt; + + unset($rt); + if ($pll < $pl['id']) { + $pll = $pl['id']; + } + $js = 'add_log(' . $pl['id'] . ',' . $forYou2 . ',"' . $pl['text'] . '",' . $pl['id_hod'] . ',0,0,"' . str_replace('"', + '"', $pl['vars']) . '");' . $js; + } + mysql_query('UPDATE `stats` SET `alog`=' . $u->info['alog'] . ' WHERE `id` =' . $u->info['id']); + $js .= 'id_log=' . $pll . ';'; + + return $js; + } + +//Новый лог Мой Лог + public function lookmLog() + { + $u = user::start(); + $js = ''; + $pll = 0; + + if ($this->info['type'] != 9) { + $hodID = mysql_fetch_array(mysql_query('SELECT `id`,`id_hod` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` LIMIT 1')); + if ($hodID['id_hod'] <= 1) { + $u->info['mlog'] = 0; + } + if (isset($hodID['id']) && $this->info['team_win'] != -1) { + $hodID = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_logs_save` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` LIMIT 1')); + } + if (isset($hodID['id'])) { + $hodID = $hodID['id']; + } else { + $hodID = 0; + } + $tmlog = mysql_fetch_array(mysql_query('SELECT `mlog` FROM `stats` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1')); + $spm = mysql_query('SELECT + `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` + FROM `battle_logs` + WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $tmlog['mlog'] . ' AND `vars` LIKE "%' . $u->info['login'] . '%" ORDER BY `id` DESC'); + + if (isset($spm) && $this->info['team_win'] != -1) { + $spm = mysql_query('SELECT + `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` + FROM `battle_logs_save` + WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $tmlog['mlog'] . ' AND `vars` LIKE "%' . $u->info['login'] . '%" ORDER BY `id` DESC'); + } + + $jin = 0; + $forYou2 = 0; + + while ($plm = mysql_fetch_array($spm)) { + if ($jin == 0) { + $u->info['mlog'] = $plm['id_hod']; + } + $jin++; + $rt = $plm['text']; + $plm['vars'] = str_replace('^^^^', 'rvnO', $plm['vars']); + $rt = str_replace('{tm1}', '' . date('H:i', $plm['time']) . '', $rt); + $rt = str_replace('{tm2}', '' . date('H:i', $plm['time']) . '', $rt); + $rt = str_replace('{tm3}', '' . date('d.m.Y H:i', $plm['time']) . '', + $rt); + $rt = str_replace('{tm4}', '' . date('d.m.Y H:i', $plm['time']) . '', + $rt); + $plm['text'] = $rt; + unset($rt); + if ($pll < $plm['id']) { + $pll = $plm['id']; + } + $js = 'add_mlog(' . $plm['id'] . ',' . $forYou2 . ',"' . $plm['text'] . '",' . $plm['id_hod'] . ',0,0,"' . str_replace('"', + '"', $plm['vars']) . '");' . $js; + } + $js .= 'id_mlog=' . $pll . ';'; + mysql_query('UPDATE `stats` SET `mlog`=' . $u->info['mlog'] . ' WHERE `id` =' . $u->info['id']); + } + return $js; + } +//====================== + + //Добавляем в лог + public function add_log($mass) + { + if ($mass['time'] != '' && $mass['text'] != '') { + mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`type`) VALUES (' . $mass['time'] . ',' . $mass['battle'] . ',' . $mass['id_hod'] . ',' . $mass['text'] . ',' . $mass['vars'] . ',' . $mass['type'] . ')'); + if (rand(2, 10) == 10) { + $this->get_comment(); + } + } + } + + ///Комментатор + private function get_comment() + { + $boycom = [ + 'А танцуешь ты лучше.', + 'А мы что, в прятки тут играем?', + 'А вы разве пингвинов никогда не видели?', + 'А, ведь когда-то, вы были красивыми… А теперь? Ну и рожи! Жуть!', + 'А потом еще труп пинать будут.', + 'А я вчера ночью за соседями подглядывал. Они точно так же кувыркались', + 'А ведь вы живых людей дубасите...', + 'А вот я вчера в зоопарке был...', + 'А вы в стройбате не служили?', + 'А вы видели, чтобы так на улице делали!?', + 'А вы знали что ёжики размножаются в интернете?', + 'А жить-то, как хочется:', + 'А из-за чего вы собственно дерётесь?', + 'А чего ржёте, вы ещё остальных не видели', + 'А что произойдёт если ты испугаешся до полусмерти дважды?!', + 'Больше так не делай. Ты же не садист?', + 'Без комментариев...', + 'Больно ведь!', + 'Быстро ты за монитор спрятался!', + 'Все хотят попасть в рай, но никто не хочет умирать!', + 'Вчера с такой девчонкой познакомился.', + 'Всего 5 минут знакомы, а дерутся, словно супруги с 20-ти летним стажем...', + 'Все. Я так больше не могу.', + 'В конце концов, кто-то победит?', + 'Вы чего, с дерева упали?', + 'Возятся как сонные мухи... давайте я вам лучше анекдот расскажу: ...', + 'Вот видишь, как полезно чистить зубы на ночь?', + 'Вот вы все руками махаете, а за вами уже очередь', + 'Вот попадёте вы в плен и вас там будут долго бить. Но вы ничего не расскажете... и не потому, что вы такой стойкий, просто вы ничего не знаете', + 'Вы бы лучше пошли потренировались!', + 'Вы все еще разминаетесь? Позовите, когда кости в муку друг другу разминать будете.', + 'Вы же бойцы! Имейте совесть!', + 'Гаси недоумка!', + 'Да, если бы я смог это остановить, то получил бы нобелевскую премию `За мир` ', + 'Да куда они бьют?!', + 'Давайте быстрее! За вами уже очередь образовалась.', + 'Давайте обойдемся сегодня таймаутом. А? А то мне уже кошмары скоро будут сниться.', + 'Дерутся как девчонки!', + 'Дети, посмотрите налево... Ой!.. Нет, туда лучше не смотреть.', + 'Если так будет продолжаться, то скоро мы заснем!', + 'Если бы у меня было кресло-качалка, я бы в нём качался...', + 'Если вы что-то сказать хотите, то лучше молчите :)', + 'Жестокость не порок.', + 'Жизнь вне нашего клуба - это пустая трата кислорода!!!', + 'Жми! Дави! Кусай! Царапай!', + 'За такие бои надо в хаос отправлять!', + 'Знаете откуда в комиссионном магазине столько вещей? Это я после ваших гулянок собираю и сдаю туда. Иногда вместе с частями тела, застрявшими в них.', + 'Здесь люди так близки друг к другу. Просто иначе ударить нельзя.', + 'И пролитая кровь еще пульсирует...', + 'Инвалидов развелось...', + 'Какой бой!!!', + 'Кто!? Кто здесь?!', + 'Кто вас этому научил?', + 'Кузнечик, блин...', + 'Куплю импортный проигрыватель грампластинок.', + 'Лошадью ходи!', + 'Лучше враг, чем друг - враг.', + 'Ладно, вы тут пока друг друга за волосы таскайте, а я пойду, пообедаю.', + 'Мне ваш балет уже надоел!', + 'Может, начнется-таки настоящий бой???', + 'Мысли лезут в голову изнутри, а удары снаружи.', + 'Ну и где ваши коронные удары? Где живописные падения я спрашиваю!', + 'Ну, нельзя же так наотмашь лупить!', + 'Надо раньше было думать, теперь смертельно поздно...', + 'На такое зрелище билеты продавать можно. Народ ухохочется!', + 'Нет! Не надо драки! А... ладно деритесь, все равно не умеете.', + 'Нет, ну должен быть повод, должен же быть повод?', + 'Нет, я отказываюсь это комментировать!', + 'Не таких обламывали!', + 'Ну выпили вы рюмку, ну две... ну литр, ну два... так зачем же после этого драку затевать?!', + 'Ну и кто за этот погром платить будет?', + 'Ну и оскал у вас. Из вашей улыбки кастеты делать можно.', + 'Ну, что же ты..? Не печалься. Выше голову, так по ней удобней попасть.', + 'Ничего... Блок тоже удар.', + 'Обернись!!!.... Поздно...', + 'Ого! Научите меня так не делать.', + 'Осторожно! Сделаешь дырочку, уже не запломбируешь!', + 'Оно вам надо???', + 'Обычное дело...там что-то отклеилось.', + 'Ой, и заболтался я с вами...', + 'Он же не промахнётся если ты не отойдёшь!', + 'По-моему, кому-то светит инвалидность.', + 'Подкинь ему грабли, на которые он еще не наступал.', + 'Прав был кот Леопольд, давайте жить дружно?', + 'При ударе в живот нарушается кислотно-щелочной баланс.', + 'Проверь, не торчит ли у тебя нож из живота.', + 'Перестаньте мне орать!', + 'Подкинь ему грабли, на которые он еще не наступал.', + 'Прыгают тут как блохи... Все, я пошел за дихлофосом!', + 'Разбудите меня когда эта порнография закончится...', + 'Ребенок сильнее ударил бы!', + 'Славно вмазал!', + 'Славно они веселятся', + 'Смотрю вот на вас, и слезы наворачиваются.', + 'Сначала учатся ходить, а потом только в драку лезут.', + 'Так они друг другу что-нибудь сломают.', + 'Так ты ему все кости переломаешь!', + 'У меня в подъезде точно так же соседа отмудохали', + 'Убогих развелось...', + 'Ух ты, какой прыткий!', + 'Фашист!! Надо ж, так по больному месту врезать...', + 'Хватит бить его об угол моей кабинки! Мне же потом ее чинить.', + 'Хулиганы, прекратите немедленно!', + 'Хочешь, подскажу, куда он ударит?', + 'Хорошо, что у меня ловкости больше чем у вас всех, а то б вы и меня в инвалидную коляску посадили бы.', + 'Хороший бой!', + 'Хороший удар!', + 'Хиляк-разрядник!', + 'Что ты его за волосы схватил?! Отпусти немедленно!', + 'Щас я вас настигну, вот тогда мы и похохочем', + 'Это была какая-то неизвестная мне техника...', + 'Это же противник, а не глина! Хватит мяться!', + 'Это не бой, это издевательское избиение.', + 'Это поубавит спеси', + 'Это и был твой план `Б` ?', + 'Это была какая-то неизвестная мне техника...', + 'Я же предупреждал, - будет больно.', + 'Я не страдаю безумием. Я наслаждаюсь им каждую минуту :)', + 'Я красивый, я сильный, я умный, я добрый. А вот вы? Вы себя-то видели?!', + 'Я тоже умею драться, но не буду...', + '(тревожно озираясь) я вам по секрету скажу... за вами наблюдают!', + '<вырезано цензурой> после боя я этих <вырезано цензурой> обоих в <вырезано цензурой> и <вырезано цензурой>', + '<вырезано цензурой> каратисты фиговы', + ]; + if (rand(1, 12) !== 12) { + return; + } + shuffle($boycom); + $this->add_log([ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'text' => '{tm1} Комментатор: ' . current($boycom) . '', + 'vars' => 'time1=' . time(), + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]); + } + + //Расчет типа удара от оружия + public function weaponTx($item) + { + if (!isset($item['id'])) { + $i = 1; + while ($i <= 4) { + $itm['tya' . $i] = 1; + $i++; + } + } + $itm = $this->lookStats($item['data']); + $t[0]['z'] = 0; + $t[0]['t'] = 0; + //колящий урон + $t[1]['z'] = round(0 + $itm['tya1']); + $t[1]['t'] = 1; + //рубящий урон + $t[2]['z'] = round(0 + $itm['tya2']); + $t[2]['t'] = 2; + //дробящий урон + $t[3]['z'] = round(0 + $itm['tya3']); + $t[3]['t'] = 3; + //режущий урон + $t[4]['z'] = round(0 + $itm['tya4']); + $t[4]['t'] = 4; + //урон огня + $t[5]['z'] = round(0 + $itm['tym1']); + $t[5]['t'] = 5; + //урон воздуха + $t[6]['z'] = round(0 + $itm['tym2']); + $t[6]['t'] = 6; + //урон воды + $t[7]['z'] = round(0 + $itm['tym3']); + $t[7]['t'] = 7; + //урон земли + $t[8]['z'] = round(0 + $itm['tym4']); + $t[8]['t'] = 8; + //урон света + $t[9]['z'] = round(0 + $itm['tym5']); + $t[9]['t'] = 9; + //урон тьмы + $t[10]['z'] = round(0 + $itm['tym6']); + $t[10]['t'] = 10; + //урон серой магией + $t[11]['z'] = round(0 + $itm['tym7']); + $t[11]['t'] = 11; + + + $tpt = $t[0]['z']; + $tpmin = $t[0]; + $tpmax = $t[0]; + $i = 1; + + while ($i <= 11) { + if ($t[$i]['z'] > $tpt) { + $tpt = $t[$i]['z']; + $tpmax = $t[$i]; + $ii = $i; + } + $i++; + } + $t[$ii]['z'] = 0; + + $tpt = $t[0]['z']; + $i = 1; + while ($i <= 11) { + if ($t[$i]['z'] > $tpt) { + $tpt = $t[$i]['z']; + $tpmin = $t[$i]; + } + $i++; + } + + $setclass = rand(1, 100); + + if ($setclass > $tpmax['z']) { + $tp = $tpmin['t']; + } else { + $tp = $tpmax['t']; + } + + return $tp; + } + + //Расчет урона от оружия + public function weaponAt22($item, $st = 0) + { + if (empty($item['data'])) { + return []; + } + $itm = $this->lookStats($item['data']); + //начинаем расчет урона + $min = $itm['sv_yron_min'] + $itm['yron_min'] + $st['minAtack']; + $max = $itm['sv_yron_max'] + $itm['yron_max'] + $st['maxAtack']; + + return [$min, $max]; + } + + //Гамс + //Расчет защиты + private function zago($v) + { + return round((1 - (pow(0.5, (max($v, 1700) / 399.51)))) * 100, 2); + } + + //Расчет защиты (магия) + public function zmgo($v) + { + return (1 - (pow(0.5, ($v / 250)))) * 100; + } + + + /** + * @param $st1 + * @param $st2 + * @param $u1 + * @param $u2 + * @param $level + * @param $level2 [not used?] + * @param $type + * @param $min_yron + * @param $max_yron + * @param $min_bron [not used?] + * @param $max_bron [not used?] + * @param $vladenie + * @param $power_yron + * @param $power_krit + * @param $zashita + * @param $ozashita [not used?] + * @param $proboi + * @param $weapom_damage [not used?] + * @param $weapom_min + * @param $weapom_max + * @param $za_proc [not used?] + * @param $zm_proc [not used?] + * @param $zashitam [not used?] + * @param $ozashitam [not used?] + * @param $wp_type + * @param $witm + * @return array + */ + public function yrn( + $st1, + $st2, + $u1, + $u2, + $level, + $level2 = null, + $type, + $min_yron, + $max_yron, + $min_bron = null, + $max_bron = null, + $vladenie, + $power_yron, + $power_krit, + $zashita, + $ozashita = null, + $proboi, + $weapom_damage = null, + $weapom_min, + $weapom_max, + $za_proc = null, + $zm_proc = null, + $zashitam = null, // pzm тут! + $ozashitam = null, + $wp_type, + $witm + ) { + global $u; + + //Поправка + if ($zashita < 1) { + $zashita = 1; + } + + if ($min_yron < 1) { + $min_yron = 1; + } + + if ($max_yron < 1) { + $max_yron = 1; + } + + if (!isset($type) || $type == '') { + $type = 12; + } + + //Параметры для возврвата + $p = [ + 'Y' => 0, + 'B' => [0 => 0, 1 => 0, 'rnd' => false], + 'L' => $level, + 'W' => [$weapom_min, $weapom_max, 'rnd' => false], //минимальный урон //максимальный урон добавочный + 'U' => $vladenie, //владение оружием + 'M' => $power_yron, //мощность урона + 'K' => $power_krit, //мощность крита + 'S' => 0, //влияние статов на проф.урон + 'T' => 1, //Кф. оружия + 'iT' => 1, //Итоговый доп. Кф. оружия + /* + (S) - влияние наших статов на профильный урон + Колющий: S = Сила * 0,3 + Ловкость * 0,7 + Рубящий: S = Сила * 0,5 + Ловкость * 0,25 + Интуиция * 0,25 + Дробящий: S = Сила * 1 + Режущий: S = Сила * 0,3 + Интуиция * 0,7 + */ + ]; + + //Умножитель 1.33 для двуручки и 1.00 для одной руки + + $witmdata = $this->lookStats($witm['data']); + + //Расчет типа урона + + if ($wp_type == 18) { + $r['type'] = 1; + } elseif ($wp_type == 19) { + $r['type'] = 2; + } elseif ($wp_type == 20) { + $r['type'] = 3; + } elseif ($wp_type == 21) { + $r['type'] = 4; + } else { + $r['type'] = 0; + } + //ТУТ Профильный урон + //колющий + if ($r['type'] == 1) { + $p['S'] = $st1['s1'] * 0.25 + $st1['s2'] * 0.75; + $p['U'] = $st1['a1'] * 1.00; //кинжалы + //рубящий + } elseif ($r['type'] == 2) { + $p['S'] = $st1['s1'] * 1.20; + $p['U'] = $st1['a2'] * 1.00; //топоры + //дробящий + } elseif ($r['type'] == 3) { + $p['S'] = $st1['s1'] * 0.5 + $st1['s4'] * 1.00; + $p['U'] = $st1['a3'] * 1.00; //дубины + //режущий + } elseif ($r['type'] == 4) { + $p['S'] = $st1['s3'] * 1.00; + $p['U'] = $st1['a4'] * 1.00; //мечи + //Магиечески + } elseif ($r['type'] >= 5 && $r['type'] < 12) { + $p['S'] = $st1['s1'] * 0.5 + $st1['s2'] * 0.5; + $p['U'] = $st1['mg' . ($r['type'] - 4)] * 1.00; //магией + $p['Mage'] = true; + } else { + $p['S'] = 0; + $p['U'] = 0; // для кулака(нужно переписывать + } + + $r['bron']['rnd'] = rand($r['bron'][0], $r['bron'][1]); + + //Остальные расчеты (коэфицент) + $p['B'][0] = 2 + $level + $st1['s1'] - round($st1['s1'] / 5); + $p['B'][1] = $p['B'][0] + 3; + + $p['B']['rnd'] = rand($p['B'][0], $p['B'][1]); + $p['W']['rnd'] = rand($p['W'][0], $p['W'][1]); + + //Обычный урон + if ($r['type'] == 12) { + $r['min'] = ($p['B'][0] + $weapom_min) * $p['T'] * (1 + $p['M'] / 100); + $r['max'] = ($p['B'][1] + $weapom_max) * $p['T'] * (1 + $p['M'] / 100); + } else { + $r['min'] = (($p['B'][0] + $p['S'] * 2 + $weapom_min * 2 + $p['U'] * 2) * $p['T']) * (1 + $p['M'] / 100); + $r['max'] = (($p['B'][1] + $p['S'] * 2 + $weapom_max * 2 + $p['U'] * 2) * $p['T']) * (1 + $p['M'] / 100); + } + + $r['bRND'] = $p['B']['rnd']; + + $r['Kmin'] = ceil((2 + ($p['K'] / 100)) * $r['min']); + $r['Kmax'] = ceil((2 + ($p['K'] / 100)) * $r['max']); + + //Расчет брони + //для обычного + if ($r['type'] < 5 || $r['type'] == 12) { + $r['min_abron'] = round($r['min'] * 0.05); + $r['max_abron'] = round($r['max'] * 0.05); + + if ($proboi != 0) { + $r['bron']['rndold'] = $r['bron']['rnd']; + } + + //Новые исправления в броне + $r['Kmin'] -= $r['bron']['rnd'] * 2; //было умножить на 2 + $r['Kmax'] -= $r['bron']['rnd'] * 2; //было умножить на 2 + + $r['min'] -= $r['bron']['rnd']; //не было деления ни на чо. + $r['max'] -= $r['bron']['rnd']; //не было деления ни на чо. + + } + + //Расчет защиты (не более 80%) + if ($r['type'] < 5 || $r['type'] == 12) { + $r['min'] = round($r['min'] / 100 * (100 - $this->zago($st2['za']))); + $r['max'] = round($r['max'] / 100 * (100 - $this->zago($st2['za']))); + $r['Kmin'] = round($r['Kmin'] / 100 * (100 - $this->zago($st2['za']))); + $r['Kmax'] = round($r['Kmax'] / 100 * (100 - $this->zago($st2['za']))); + } else { + $r['min'] = round($r['min'] / 100 * (100 - $this->zmgo($st2['zm']))); + $r['max'] = round($r['max'] / 100 * (100 - $this->zmgo($st2['zm']))); + $r['Kmin'] = round($r['Kmin'] / 100 * (100 - $this->zmgo($st2['zm']))); + $r['Kmax'] = round($r['Kmax'] / 100 * (100 - $this->zmgo($st2['zm']))); + } + + $r['min'] = round($r['min']); + $r['max'] = round($r['max']); + $r['Kmin'] = round($r['Kmin']); + $r['Kmax'] = round($r['Kmax']); + + $min_yrn = 0; //% + + if ($u1['clone'] > 0) { + $min_yrn = 75; + } + + $r['min'] -= floor($r['min'] / 100 * $min_yrn); + $r['max'] -= floor($r['max'] / 100 * $min_yrn); + $r['Kmin'] -= floor($r['Kmin'] / 100 * ($min_yrn)); + $r['Kmax'] -= floor($r['Kmax'] / 100 * ($min_yrn)); + $r['min_'] -= floor($r['min_'] / 100 * $min_yrn); + $r['max_'] -= floor($r['max_'] / 100 * $min_yrn); + $r['Kmin_'] -= floor($r['Kmin_'] / 100 * ($min_yrn)); + $r['Kmax_'] -= floor($r['Kmax_'] / 100 * ($min_yrn)); + + $defd = mysql_fetch_array(mysql_query('SELECT SUM(`vals`) FROM `battle_actions` WHERE `btl` = ' . $this->info['id'] . ' AND `vars` = "use_defteam' . $u2['team'] . '" LIMIT 1')); + if ($defd[0] > 100) { + $defd[0] = 100; + } + $defd = 0 + $defd[0]; + $powd = mysql_fetch_array(mysql_query('SELECT SUM(`vals`) FROM `battle_actions` WHERE `btl` = ' . $this->info['id'] . ' AND `vars` = "use_powteam' . $u1['team'] . '" LIMIT 1')); + if ($powd[0] > 100) { + $powd[0] = 100; + } + $powd = 0 + $powd[0]; + $defd = $defd - $powd; + + $r['min'] -= floor($defd); + $r['max'] -= floor($defd); + $r['Kmin'] -= floor($defd * 2); + $r['Kmax'] -= floor($defd * 2); + $r['min_'] -= floor($defd); + $r['max_'] -= floor($defd); + $r['Kmin_'] -= floor($defd * 2); + $r['Kmax_'] -= floor($defd * 2); + + $r['min'] += $st1['maxAtack']; + $r['max'] += $st1['maxAtack']; + $r['Kmin'] += $st1['maxAtack'] * 2; + $r['Kmin'] += $st1['maxAtack'] * 2; + + if ($r['min'] < 1) { + $r['min'] = 1; + } + if ($r['max'] < 1) { + $r['max'] = 1; + } + if ($r['Kmin'] < 2) { + $r['Kmin'] = 2; + } + if ($r['Kmax'] < 2) { + $r['Kmax'] = 2; + } + if ($r['Kmin_'] < 2) { + $r['Kmin_'] = 2; + } + if ($r['Kmin_'] < 2) { + $r['Kmax_'] = 2; + } + + $r['m_k'] = $r['Kmax']; + + return $r; + } + + //Завершение действия приема + // pl прием + // u1 инфа юзера + // t1 тип снятия + // 99 = очищение кровью + // u2 + //$this->delPriem($pd[$k2][1][$k],${'p'.$k2},1,${'p'.$k2jn}); + public $del_val = []; + + public function delPriem( + $pl, + $u1, + $t = 1, + $u2 = false, + $rznm = 'Очиститься Кровью' + ) { + global $u; + if (isset($pl['priem']['id']) && !isset($this->del_val['eff'][$pl['priem']['id']])) { + if ($pl['x'] > 1) { + $pl['name'] = $pl['name'] . ' x' . $pl['x']; + } + if ($pl['timeUse'] == 77) { + //завершаем прием + mysql_query('DELETE FROM `eff_users` WHERE `id` = ' . $pl['id']); + } + $vLog = 'time1=' . time() . '||s1=' . $u1['sex'] . '||t1=' . $u1['team'] . '||login1=' . $u1['login']; + if (isset($u2['id'])) { + $vLog .= '||s2=' . $u2['sex'] . '||t2=' . $u2['team'] . '||login2=' . $u2['login']; + } + $mas1 = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'text' => '', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + if ($t == 4) { + $mas1['id_hod']++; + $t = 2; + } + if ($t == 1) { + $mas1['id_hod']++; + if ($pl['priem']['file'] != '0') { + if (file_exists('../../_incl_data/class/priems/' . $pl['priem']['file'] . '.php')) { + require('priems/' . $pl['priem']['file'] . '.php'); + } + } elseif ($pl['priem']['file3'] != '0') { + if (file_exists('../../_incl_data/class/priems/' . $pl['priem']['file3'] . '.php')) { + require('priems/' . $pl['priem']['file3'] . '.php'); + } + } else { + $mas1['text'] = '{tm1} {u1} {1x16x0} прием "' . $pl['name'] . '".'; + $this->del_val['eff'][$pl['priem']['id']] = true; + } + } elseif ($t == 2) { + $mas1['text'] = '{tm1} У персонажа {u1} закончилось действие магии "' . $pl['name'] . '".'; + } elseif ($t == 99) { + $mas1['text'] = '{u1} Снял эфект "' . $pl['name'] . '" с помощью ' . $rznm . ' .'; + } else { + if ($t == 100) { + $mas1['id_hod']++; + } + $mas1['text'] = '{tm1} Закончилось действие эффекта "' . $pl['name'] . '" для {u1}.'; + } + if ($pl['priem']['id'] != 24) { + $this->add_log($mas1); + } + $this->stats[$this->uids[$pl['uid']]] = $u->getStats($pl['uid'], 0, 0, false, false, true); + } + } + + //Разбираем массив со статами + public function lookStats($m) + { + return json_decode(str_replace(['=', '|'], ['":', ',"'], '{"' . $m . '}'), true); + } + + //Расчет МФ + + /** + * @param $type + * @param $mf + * @param $lvl1 [not used?] + * @param $lvl2 [not used?] + * @return int + */ + private function mfs($type, $mf, $lvl1 = null, $lvl2 = null) + { + $rval = 0; + switch ($type) { + case 1: + + //Крит + + if ($mf['amf'] < 0) { + $mf['amf'] = 0; + } + if ($mf['mf'] < 0) { + $mf['mf'] = 0; + } + if ($mf['mf'] > $mf['smf']) { + $rval = 100 - floor(((($mf['smf']) / ($mf['mf'] + 1)) * 100)); + } + + if ($rval < 1) { + $rval = 0; + } + if ($rval > 75) { + $rval = 75; + } + if ($mf['amf'] >= 1) { + if ($mf['amf'] > 100) { + $mf['amf'] = 100; + } + if (($mf['amf'] * 100) >= mt_rand(1, 10000)) { + $rval = 100; + } + } + + break; + case 2: + + if ($mf['mf'] < 0) { + $mf['mf'] = 0; + } + if ($mf['amf'] < 0) { + $mf['amf'] = 0; + } + if ($mf['smf'] < 0) { + $mf['smf'] = 0; + } + if ($mf['asmf'] < 0) { + $mf['asmf'] = 0; + } + + if ($mf['mf'] > $mf['smf']) { + $rval = 100 - floor(((($mf['smf']) / ($mf['mf'] + 1)) * 100)); //2.5 + } + if ($rval < 1) { + $rval = 0; + } + if ($rval > 75) { + $rval = 75; + } + if ($mf['asmf'] >= 0) // + { + if ($mf['asmf'] > 100) { + $mf['asmf'] = 100; + } + if ($mf['asmf'] >= rand(1, 100)) { + $rval = 0; + } + } + if ($mf['amf'] >= 0) { + if ($mf['amf'] > 100) { + $mf['amf'] = 100; + } + if ($mf['amf'] >= rand(1, 100)) { + $rval = 100; + } + } + break; + case 3: + if ($mf[1] < 1) { + $mf[1] = 1; + } + if ($mf[2] < 1) { + $mf[2] = 1; + } + + //Парирование + $rval = $mf[1] - $mf[2] / 2; + if ($rval > 75) { + $rval = 75; + } + if ($rval < 1) { + $rval = 1; + } + + break; + case 4: + $mf = round($mf * 0.6); + if ($mf < 1) { + $mf = 0; + } + if ($mf > 100) { + $mf = 100; + } + $rval = min($mf, 100); //пробой брони + break; + case 5: + if ($mf < 1) { + $mf = 0; + } + $rval = min($mf, 85); //блок щитом + break; + case 6: + //Контрудар + //$mf['a'] защита + //$mf['b'] атака + if ($mf['a'] > 0) { + if ($mf['b'] > 0) { + $rval = round($mf['a'] - ($mf['b'] / 2)); + } else { + $rval = $mf['a']; + } + } + + if ($rval < 1) { + $rval = 0; + } + if ($rval > 75) { + $rval = 75; + } + + break; + } + + return $this->get_chanse($rval) ? 1 : 0; + } + + public function get_chanse($percent) + { + if ($percent <= 0) { + return false; + } + return mt_rand(1, 100) <= max($percent, 100); + } + + //Смена противника + public function smena($uid, $auto = false, $lastdie = false) + { + global $u; + if (($auto || $u->info['smena'] <= 0) && !$auto) { + return 'У вас закончились смены противника'; + } + if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] < 1) { + return 'Для вас поединок закончен, ожидайте пока завершат другие...'; + } + if ( + !isset($this->uids[$uid]) || + $uid == $u->info['id'] || + $this->users[$this->uids[$uid]]['team'] == $this->users[$this->uids[$u->info['id']]]['team'] + ) { + return 'Нельзя сменить на выбранную цель []'; + } + if (isset($this->ga[$u->info['id']][$uid]) && !$lastdie) { + return 'Нельзя сменить на выбранную цель!'; + } + if (ceil($this->stats[$this->uids[$uid]]['hpNow']) < 1) { + return 'Нельзя сменить, противник уже мертв'; + }//меняем противника + if (!$auto) { + $u->info['smena']--; + } + mysql_query('UPDATE `stats` SET `enemy` = ' . $uid . ',`smena` = ' . $u->info['smena'] . ' WHERE `id` = ' . $u->info['id']); + $u->info['enemy'] = $uid; + $this->users[$this->uids[$uid]]['smena'] = $u->info['smena']; + $this->users[$this->uids[$u->info['id']]]['enemy'] = $uid; + return 1; + } + + //авто-смена противника //ТУТ баг выбора + public function autoSmena() + { + global $u; + $ms = []; + $ms_all = []; + $ms_ansf = []; + $i = 0; + $j = 0; + $z = 0; + while ($i < count($this->users)) { + if (isset($this->users[$i]) && $this->users[$i]['id'] != $u->info['id'] && $this->users[$i]['team'] != $u->info['team'] && $this->stats[$i]['hpNow'] > 0 && -($u->info['enemy']) != $this->users[$i]['id']) { + if (!isset($this->ga[$u->info['id']][$this->users[$i]['id']])) { + $ms[$j] = $this->users[$i]['id']; + $j++; + } + if (!isset($this->uids[(-($u->info['enemy']))])) { + $ms_all[] = $this->users[$i]['id']; + } + if (isset($this->ga[$this->users[$i]['id']][$u->info['id']])) { + $ms_ansf[$z] = $this->users[$i]['id']; + $z++; + } + } + $i++; + } + $msh = []; + if ($j == 0 && $z == 0) { + $enemydie = 0; + + if (isset($this->stats[$this->uids[$u->info['enemy']]])) { + $u->info['enemy'] = 0; + $enemydie = 1; + } + + if ((!isset($this->uids[(-($u->info['enemy']))]) || $this->stats[$this->uids[(-($u->info['enemy']))]]['hpNow'] < 1) && ($u->info['enemy'] < 0 || $enemydie == 1)) { + $i = 0; + $j = 0; + while ($i < count($this->users)) { + if (isset($this->users[$i]) && $this->users[$i]['id'] != $u->info['id'] && $this->users[$i]['team'] != $u->info['team'] && $this->stats[$i]['hpNow'] >= 1 && -($u->info['enemy']) != $this->users[$i]['id']) { + $ms[$j] = $this->users[$i]['id']; + $msh[$ms[$j]] = true; + $j++; + } + $i++; + } + } + } + + $ms = $ms[rand(0, $j - 1)]; + $ms_ansf = $ms_ansf[rand(0, $z - 1)]; + if ($z > 0) { + $this->smena($ms_ansf, true); + } elseif ($j > 0) { + if (isset($msh[$ms])) { + $this->smena($ms, true, true); + } else { + $this->smena($ms, true); + } + } else { + if ($u->info['enemy'] < 0) { + $smnr5 = $this->smena(-($u->info['enemy']), true); + unset($smnr5); + } + } + } + + //Действия бота (атака) + private function botAtack($uid, $pl, $tp) + { + $test_atack = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_act` WHERE `battle` = "' . $this->info['id'] . '" AND (( + `uid1` = "' . $pl . '" AND `uid2` = "' . $uid . '" + ) OR ( + `uid2` = "' . $pl . '" AND `uid1` = "' . $uid . '" + )) LIMIT 1')); + + if ($tp == 1 && !isset($test_atack['id'])) { + $test_uid = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $uid . '" AND `hpNow` >= 1 LIMIT 1')); + $test_pl = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $pl . '" AND `hpNow` >= 1 LIMIT 1')); + if (isset($test_uid['id']) && isset($test_pl['id']) && $test_uid['id'] != $test_pl['id']) { + $a = rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5); + $b = rand(1, 5); + mysql_query('INSERT INTO `battle_act` (`battle`,`time`,`uid1`,`uid2`,`a1`,`b1`) VALUES ("' . $this->info['id'] . '","' . time() . '","' . $pl . '","' . $uid . '","' . $a . '","' . $b . '")'); + } + } elseif ($tp == 2) { + //бот отвечает на удар + $test_uid = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $uid . '" AND `hpNow` >= 1 LIMIT 1')); + $test_pl = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $pl['uid2'] . '" AND `hpNow` >= 1 LIMIT 1')); + if (isset($test_uid['id']) && isset($test_pl['id']) && $test_uid['id'] != $test_pl['id']) { + $bot = $this->users[$this->uids[$pl['uid2']]]; + $na = ['id' => 0, 'a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0], 'b' => 0]; + $a222 = rand(1, 5) . '_' . rand(1, 5) . '_' . rand(1, 5) . '_' . rand(1, 5) . '_' . rand(1, 5); + $a = explode('_', $a222); + $i = 1; + $na['id'] = time(); + while ($i <= 5) { + if (isset($a[$i - 1])) { + $a[$i - 1] = intval(round($a[$i - 1])); + if ($a[$i - 1] >= 1 && $a[$i - 1] <= 5) { + $na['a'][$i] = $a[$i - 1]; + } else { + $na['a'][$i] = 0; + } + } + $i++; + } + $na['b'] = rand(1, 5); + //Проводим удар + + $this->atacks[$pl['id']]['a2'] = $a222; + $this->atacks[$pl['id']]['b2'] = $na['b']; + $this->startAtack($pl['id']); + } + } + //unset($test_uid,$test_pl,$test_atack); + } + + //Проверяем удары, приемы, свитки, зверей + public function testActions() + { + //проверяем удары + $m = mysql_query('SELECT * FROM `battle_act` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `id`'); + $i = 0; + $botA = []; + $botR = []; + while ($pl = mysql_fetch_array($m)) { + //mysql_query('DELETE FROM `battle_act` WHERE `battle` = "'.$this->info['id'].'" AND `uid1` = "'.$pl['uid2'].'" AND `uid2` = "'.$pl['uid1'].'"'); + $pluids = mysql_fetch_array(mysql_query('SELECT `hpNow` FROM `stats` WHERE (`id` = "' . $pl['uid1'] . '" AND `hpNow` <= 0) OR (`id` = "' . $pl['uid2'] . '" AND `hpNow` <= 0) LIMIT 1')); + + $pltest = mysql_fetch_array(mysql_query('SELECT * FROM `battle_act` WHERE `id` = "' . $pl['id'] . '" LIMIT 1')); + if (isset($pltest['id'])) { + if (isset($pluids['hpNow'])) { + mysql_query('DELETE FROM `battle_act` WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } elseif ($pl['time'] + $this->info['timeout'] > time()) { + //удар не пропущен по тайму, просто заносим данные + $this->atacks[$pl['id']] = $pl; + $this->ga[$pl['uid1']][$pl['uid2']] = $pl['id']; + $this->ag[$pl['uid2']][$pl['uid1']] = $pl['id']; + if (isset($this->iBots[$pl['uid1']])) { + //ударил бот и нет ответа + $botA[$pl['uid1']] = $pl['id']; + } elseif (isset($this->iBots[$pl['uid2']])) { + //ударили бота и он не ответил + $botR[$pl['uid2']] = $pl['id']; + if ($this->users[$this->uids[$pl['uid2']]]['timeGo'] < time()) { + $this->botAtack($pl['uid1'], $pl, 2); + } + } + } else { + //пропуск по тайму + $pl['time'] = time(); + if ($pl['a1'] == 0 && $pl['a2'] == 0) { + //игрок 1 пропустил по тайму + $pl['out1'] = time(); + $pl['tout1'] = 1; + //игрок 2 пропустил по тайму + $pl['out2'] = time(); + $pl['tout2'] = 1; + } elseif ($pl['a1'] == 0) { + //игрок 1 пропустил по тайму + $pl['out1'] = time(); + $pl['tout1'] = 1; + } elseif ($pl['a2'] == 0) { + //игрок 2 пропустил по тайму + $pl['out2'] = time(); + $pl['tout2'] = 1; + } + //наносим удар по пропуску + $this->atacks[$pl['id']] = $pl; + $this->startAtack($pl['id']); + mysql_query('DELETE FROM `battle_act` WHERE `id` = ' . $pl['id']); + } + } + } + //тест удара + if ($this->uAtc['id'] > 0 && $this->na == 1) { + if ($pl['out1'] == 0 && $pl['out2'] == 0) { + //Может разменяться только тот кто бил + if ($pl['uid1'] == $u->info['id'] || $pl['uid2'] == $u->info['id']) { + $this->addNewAtack(); + } + } else { + $this->addNewAtack(); + } + } + //тест использования заклятий + + //тест использования приемов + + //тест, бот делает удары + while ($i < count($this->bots)) { + $bot = $this->bots[$i]; + if (isset($bot) && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['pass'] != 'saintlucia') //Тут проверка на бота saintlucia + { + $j = 0; + while ($j < count($this->users)) { + if ($this->info['razdel'] == 0) { + $tnbot = time() + rand(1, 1); + } else { + $tnbot = time() + rand(1, 2); + } + if ($this->users[$j]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['team'] != $this->users[$j]['team']) { + if (isset($this->users[$j]) && $this->stats[$j]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && !isset($this->ga[$bot][$this->users[$j]['id']]) && !isset($this->ag[$bot][$this->users[$j]['id']]) && $this->users[$j]['id'] != $bot && $this->users[$j]['team'] != $this->users[$this->uids[$bot]]['team']) { + if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time()) { + $this->botAtack($this->users[$j]['id'], $bot, 1); + mysql_query('UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1'); + } + } elseif (isset($this->users[$i]) && $this->users[$i]['bot'] > 0 && $this->stats[$i]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && $this->users[$i]['id'] != $bot && $this->users[$i]['team'] != $this->users[$this->uids[$bot]]['team']) { + if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time() && $this->botAct($bot)) { + if (!isset($this->ga[$bot][$this->users[$i]['id']]) && $this->users[$this->uids[$bot]]['timeGo'] < time() && !isset($this->ag[$bot][$this->users[$i]['id']])) { + $this->botAtack($this->users[$i]['id'], $bot, 1); + mysql_query('UPDATE `stats` SET `timeGo` = ' . $tnbot . ' WHERE `id` = ' . $this->users[$this->uids[$bot]]['id']); + } elseif (isset($this->ga[$bot][$this->users[$i]['id']]) && $this->users[$this->uids[$bot]]['timeGo'] < time()) { + $this->botAtack($bot, $this->users[$i]['id'], 1); + mysql_query('UPDATE `stats` SET `timeGo` = ' . $tnbot . ' WHERE `id` = ' . $this->users[$this->uids[$bot]]['id']); + } + } + } else { + //Удары между ботами + // + if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time() && $this->users[$j]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['hpNow'] >= 1) { + $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['a1'] = + rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5); + $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['b1'] = rand(1, 5); + $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['a2'] = + rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5); + $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['b2'] = rand(1, 5); + $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['a1'] = + rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5); + $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['b1'] = rand(1, 5); + $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['a2'] = + rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5); + $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['b2'] = rand(1, 5); + if (isset($this->ga[$bot][$this->users[$j]['id']]) && $this->users[$j]['bot'] > 0) { + if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time()) { + $tnbot = time() + rand(3, 7); + if ($this->info['type'] == 329) { // тестовый бой + $tnbot = time() - 1; + } + $this->startAtack($this->ga[$bot][$this->users[$j]['id']]); + $this->users[$this->uids[$bot]]['timeGo'] = $tnbot; + mysql_query('UPDATE `stats` SET `timeGo` = ' . $tnbot . ' WHERE `id` = ' . $this->users[$this->uids[$bot]]['id']); + } + } elseif (isset($this->ag[$bot][$this->users[$j]['id']]) && $this->users[$j]['bot'] > 0) { + if ($this->users[$this->uids[$bot]]['timeGo'] < time() && $this->users[$j]['timeGo'] < time()) { + $this->startAtack($this->ag[$bot][$this->users[$j]['id']]); + $tnbot = time() + rand(3, 7); + if ($this->info['type'] == 329) { // тестовый бой + $tnbot = time() - 1; + } + $this->users[$this->uids[$bot]]['timeGo'] = $tnbot; + mysql_query('UPDATE `stats` SET `timeGo` = ' . $tnbot . ' WHERE `id` = ' . $this->users[$this->uids[$bot]]['id']); + } + } + } + } + } + $j++; + } + } + $i++; + } + } + + //Действия бота + private function botAct($uid) + { + if ($this->users[$this->uids[$uid]]['bot'] > 0) { + if ($this->users[$this->uids[$uid]]['online'] < time() - 3) { + $this->users[$this->uids[$uid]]['online'] = time(); + mysql_query('UPDATE `users` SET `online` = unix_timestamp() WHERE `id` = ' . (int)$uid); + return true; + } elseif (rand(0, 2) == 1) { + return true; + } + } + return false; + } + + //получаем данные о поединке + public function battleInfo($id) + { + $b = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = ' . (int)$id)); + if (isset($b['id'])) { + $this->hodID = mysql_fetch_array(mysql_query('SELECT `id_hod` FROM `battle_logs` WHERE `battle` = ' . $b['id'] . ' ORDER BY `id` DESC LIMIT 1')); + if (isset($this->hodID['id_hod'])) { + $this->hodID = $this->hodID['id_hod']; + } else { + $this->hodID = 0; + } + return $b; + } else { + return false; + } + } + + //наносим удар противнику + public function addAtack() + { + global $js; + if (isset($_POST['atack'], $_POST['block'])) { + $na = [ + 'id' => time(), + 'a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0], + 'b' => intval(round($_POST['block'])), + ]; + + $a = explode('_', $_POST['atack']); + $i = 1; + + while ($i <= 5) { + if (isset($a[$i - 1])) { + $a[$i - 1] = intval(round($a[$i - 1])); + if ($a[$i - 1] >= 1 && $a[$i - 1] <= 5) { + $na['a'][$i] = $a[$i - 1]; + } else { + $na['a'][$i] = 0; + } + } + $i++; + } + + if ($na['b'] < 1 || $na['b'] > 5) { + $na['b'] = 0; + } + + $this->uAtc = $na; + $js .= 'testClearZone();'; + } else { + $this->e = 'Выберите зоны удара и блока'; + } + } + + //выделяем пользователей + public function teamsTake() + { + global $u; + $rs = ''; + $ts = []; + $tsi = 0; + if ($this->info['id'] > 0) { + //данные о игроках в бою + $nxtlg = []; + $t = mysql_query('SELECT `u`.`room`,`u`.`no_ip`,`u`.`twink`,`u`.`stopexp`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '"'); + $i = 0; + $bi = 0; + $up = ''; + if ($this->info['start2'] == 0) { + $tststrt = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = ' . $this->info['id'] . ' AND `start2` = 0 LIMIT 1')); + if (isset($tststrt['id'])) { + mysql_query('UPDATE `battle` SET `start2` = unix_timestamp() WHERE `id` = ' . $this->info['id'] . ' LIMIT 1'); + } else { + $this->info['start2'] = time(); + } + } + while ($pl = mysql_fetch_array($t)) { + //записываем данные + if ($pl['login2'] == '') { + $pl['login2'] = $pl['login']; + } + $this->users[$i] = $pl; + $this->uids[$pl['id']] = $i; + + if ($this->info['start2'] == 0) { + mysql_query('UPDATE `users` SET `notrhod` = -1 WHERE `id` = ' . $this->users[$i]['id'] . ' LIMIT 1'); + $this->users[$i]['notrhod'] = -1; + } + + if ($pl['bot'] > 0) { + $this->bots[$bi] = $pl['id']; + $this->iBots[$pl['id']] = $bi; + $bi++; + } + //записываем статы + $this->stats[$i] = $u->getStats($pl, 0, 0, false, $this->cached, true); + //Заносим старт + if ($this->info['start2'] == 0) { + if (!isset($ts[$this->users[$i]['team']])) { + $tsi++; + $ts[$this->users[$i]['team']] = $tsi; + } + + if ($this->users[$i]['level'] <= 7) { + $this->users[$i]['tactic7'] = floor(10 / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); + } elseif ($this->users[$i]['level'] == 8) { + $this->users[$i]['tactic7'] = floor(20 / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); + } elseif ($this->users[$i]['level'] == 9) { + $this->users[$i]['tactic7'] = floor(30 / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); + } elseif ($this->users[$i]['level'] >= 10) { + $this->users[$i]['tactic7'] = floor((40 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); + } + + if ($this->stats[$i]['s7'] > 49) { + mysql_query('UPDATE `eff_users` SET `delete`= unix_timestamp() WHERE `uid` = ' . $this->users[$i]['id'] . ' AND `overType` = 101 AND `delete` = 0'); + mysql_query(" + INSERT INTO `eff_users` ( `id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES + ( 22, '" . $this->stats[$i]['id'] . "', 'Спасение', 'add_spasenie=1', 101, 77, 0, '" . $this->stats[$i]['id'] . "', 0, 'priem', 324, 'preservation.gif', 1, -1, 'спасение', 0, 0, '', 0, 0, 0, 1, 0); + "); + } + + + ##### + // Бафф Зверя animal_bonus + if ($this->users[$i]['animal'] > 0) { + $a = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `id` = "' . $this->users[$i]['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); + if (isset($a['id']) && $a['eda'] >= 1) { + $anl = mysql_fetch_array(mysql_query('SELECT `bonus` FROM `levels_animal` WHERE `type` = "' . $a['type'] . '" AND `level` = "' . $a['level'] . '" LIMIT 1')); + $anl = $anl['bonus']; + + $tpa = [ + 1 => 'cat', + 2 => 'owl', + 3 => 'wisp', + 4 => 'demon', + 5 => 'dog', + 6 => 'pig', + 7 => 'dragon', + ]; + $tpa2 = [ + 1 => 'Кота', + 2 => 'Совы', + 3 => 'Светляка', + 4 => 'Чертяки', + 5 => 'Пса', + 6 => 'Свина', + 7 => 'Дракона', + ]; + $tpa3 = [ + 1 => 'Кошачья Ловкость', + 2 => 'Интуиция Совы', + 3 => 'Сила Стихий', + 4 => 'Демоническая Сила', + 5 => 'Друг', + 6 => 'Полная Броня', + 7 => 'Инферно', + ]; + + mysql_query('UPDATE `eff_users` SET `delete`="' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `overType` = 100 AND `delete` = 0'); + + mysql_query('INSERT INTO `eff_users` (`hod`,`v2`,`img2`,`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`v1`,`user_use`) VALUES ("-1","201","summon_pet_' . $tpa[$a['type']] . '.gif",22,"' . $this->users[$i]['id'] . '","' . $tpa3[$a['type']] . ' [' . $a['level'] . ']","' . $anl . '","100","77","priem","' . $this->users[$i]['id'] . '")'); + + //добавление духа от дракона + if ($a['type'] == 7) { + if ($a['level'] == 10) { + $this->users[$i]['tactic7'] = floor((50 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); + } elseif ($a['level'] == 11) { + $this->users[$i]['tactic7'] = floor((65 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); + } elseif ($a['level'] == 12) { + $this->users[$i]['tactic7'] = floor((90 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); + } + } + // + $anl = $this->lookStats($anl); + + $vLog = + 'time1=' . time() . + '||s1=' . $this->users[$i]['sex'] . + '||t1=' . $this->users[$i]['team'] . + '||login1=' . $this->users[$i]['login']; + $vLog .= + '||s2=1||t2=' . $this->users[$i]['team'] . + '||login2=' . $a['name'] . ' (Зверь ' . $this->users[$i]['login'] . ')'; + + $mas1 = [ + 'time' => time(), + 'battle' => $this->info['id'], + 'id_hod' => 1, + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + + $ba = ''; + $i6 = 0; + while ($i6 < count($u->items['add'])) { + if (isset($anl['add_' . $u->items['add'][$i6]]) && $anl['add_' . $u->items['add'][$i6]] > 0) { + if ($u->items['add'][$i6] == 'mib1') { + $ba .= 'Броня головы: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; + } elseif ($u->items['add'][$i6] == 'mib2') { + $ba .= 'Броня корпуса: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; + } elseif ($u->items['add'][$i6] == 'mib3') { + $ba .= 'Броня пояса: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; + } elseif ($u->items['add'][$i6] == 'mib4') { + $ba .= 'Броня ног: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; + } elseif ( + $u->items['add'][$i6] != 'mab1' && + $u->items['add'][$i6] != 'mab2' && + $u->items['add'][$i6] != 'mab3' && + $u->items['add'][$i6] != 'mab4' + ) { + $ba .= $u->is[$u->items['add'][$i6]] . ': +' . $anl['add_' . $u->items['add'][$i6]] . ', '; + } + } + $i6++; + } + $ba = trim($ba, ', '); + if ($ba == '') { + $ba = 'Эффект отсутсвует'; + } + + $mas1['text'] = '{tm1} {u2} очнулся от медитации, и призвал заклятье "' . $tpa3[$a['type']] . ' [' . $a['level'] . ']" на {u1}. (' . $ba . ')'; + $nxtlg[] = $mas1; + mysql_query('UPDATE `users_animal` SET `eda` = `eda` - 1 WHERE `id` = "' . $a['id'] . '" LIMIT 1'); + $this->get_comment(); + } + } + + mysql_query('UPDATE `stats` SET `last_hp` = "0",`tactic1`="0",`tactic2`="0",`tactic3`="0",`tactic4`="0",`tactic5`="0",`tactic6`="0",`tactic7` = "' . ($this->users[$i]['tactic7']) . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); + + $rs[$this->users[$i]['team']] .= $u->microLogin($this->users[$i], 2) . ', '; + } + $up .= '`uid` = "' . $pl['id'] . '" OR'; + //battle-user (статистика, начальная) + $mybu = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" AND `uid` = "' . mysql_real_escape_string($pl['id']) . '" LIMIT 1')); + if (!isset($mybu['id'])) { + //Пустое значение статистики для данного персонажа за текущий бой + $this->addstatuser($pl['id']); + } + $i++; + } + + $up = rtrim($up, ' OR'); + + //Заносим в лог начало поединка + + if ($this->info['start1'] == 0) { + $tststrt = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `start1` = "0" LIMIT 1')); + if (isset($tststrt['id'])) { + $upd = mysql_query('UPDATE `battle` SET `start1` = "' . time() . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + if ($upd) { + $i = 0; + $r = ''; + while ($i <= $tsi) { + if (isset($rs[$i]) && $rs[$i] != '') { + $r .= rtrim($rs[$i], ', ') . ' и '; + } + $i++; + } + $r = rtrim($r, ' и'); + $r = str_replace('"', '\\\\\"', $r); + $this->hodID++; + $time = time(); + $mass = [ + 'time' => $time, + 'battle' => $this->info['id'], + 'id_hod' => $this->hodID, + 'vars' => "time1=$time||", + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + $r = 'Часы показывали ' . date('d.m.Y H:i', + $this->info['time_start']) . ', когда ' . $r . ' бросили вызов друг другу.'; + mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $r . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); + + $this->info['start1'] = time(); + } + } + + if (!empty($nxtlg)) { + foreach ($nxtlg as $item) { + $this->add_log($item); + } + } + } + } + } + + //Возращаем зоны блока по умолчанию + private function restZonb($uid1, $uid2) + { + if ($this->stnZbVs[$uid1] > 0) { + $this->stats[$this->uids[$uid1]]['zonb'] = $this->stnZbVs[$uid1]; + } + if ($this->stnZbVs[$uid2] > 0) { + $this->stats[$this->uids[$uid1]]['zonb'] = $this->stnZbVs[$uid2]; + } + } + + //проверка блока (Визуальная) + public function testZonbVis() + { + global $u; + if ($this->stnZbVs == 0) { + $zb = $this->stats[$this->uids[$u->info['id']]]['zonb']; + $this->stnZbVs = $zb; + } else { + $zb = $this->stnZb; + } + $eu = $this->users[$this->uids[$u->info['id']]]['enemy']; + if ($zb > 3) { + $zb = 3; + } + if ( + !empty($eu) && + ($this->stats[$this->uids[$eu]]['weapon1'] == 1 || $this->stats[$this->uids[$eu]]['weapon2'] == 1) && + $this->stats[$this->uids[$u->info['id']]]['weapon1'] != 1 && $this->stats[$this->uids[$u->info['id']]]['weapon2'] != 1 + ) { + $zb -= 1; + } + if ($zb < 1) { + $zb = 1; + } + return $zb; + } + + //проверка блока + private function testZonb($uid, $uid2) + { + $zba = []; + + if ($this->stnZb[$uid] == 0) { + $zba[1] = $this->stats[$this->uids[$uid]]['zonb']; + $this->stnZb[$uid] = $zba[1]; + } else { + $zba[1] = $this->stnZb[$uid]; + } + + if ($this->stnZb[$uid2] == 0) { + $zba[2] = $this->stats[$this->uids[$uid2]]['zonb']; + $this->stnZb[$uid] = $zba[2]; + } else { + $zba[2] = $this->stnZb[$uid2]; + } + + if ($zba[1] > 3) { + $zba[1] = 3; + } + if ($zba[2] > 3) { + $zba[2] = 3; + } + + //Блоки игрока 1 + if ( + ($this->stats[$this->uids[$uid2]]['weapon1'] == 1 || $this->stats[$this->uids[$uid2]]['weapon2'] == 1) && + $this->stats[$this->uids[$uid]]['weapon1'] != 1 && $this->stats[$this->uids[$uid]]['weapon2'] != 1 + ) { + $zba[1] -= 1; + } + + //Блоки игрока 2 + if ( + ($this->stats[$this->uids[$uid]]['weapon1'] == 1 || $this->stats[$this->uids[$uid]]['weapon2'] == 1) && + $this->stats[$this->uids[$uid2]]['weapon1'] != 1 && $this->stats[$this->uids[$uid2]]['weapon2'] != 1 + ) { + $zba[2] -= 1; + } + + if ($zba[1] < 1) { + $zba[1] = 1; + } + if ($zba[2] < 1) { + $zba[2] = 1; + } + + $this->stats[$this->uids[$uid]]['zonb'] = $zba[1]; + $this->stats[$this->uids[$uid2]]['zonb'] = $zba[2]; + if ( + $this->stats[$this->uids[$uid]]['min_zonb'] > 0 && + $this->stats[$this->uids[$uid]]['zonb'] < $this->stats[$this->uids[$uid]]['min_zonb'] + ) { + $this->stats[$this->uids[$uid]]['zonb'] = $this->stats[$this->uids[$uid]]['min_zonb']; + } + if ( + $this->stats[$this->uids[$uid2]]['min_zonb'] > 0 && + $this->stats[$this->uids[$uid2]]['zonb'] < $this->stats[$this->uids[$uid2]]['min_zonb'] + ) { + $this->stats[$this->uids[$uid2]]['zonb'] = $this->stats[$this->uids[$uid2]]['min_zonb']; + } + } + + //генерируем команды + public function genTeams($you) + { + $ret = ''; + $teams = []; + //выделяем пользователей + $i = 0; + $j = 1; + $tms = []; + + $teams[$this->users[$this->uids[$you]]['team']] = ''; + $tms[0] = $this->users[$this->uids[$you]]['team']; + + while ($i < count($this->uids)) { + if ($this->stats[$i]['hpNow'] > 0) { + if (!isset($teams[$this->users[$i]['team']])) { + $tms[$j] = $this->users[$i]['team']; + $j++; + } + if ($this->stats[$i]['hpNow'] < 0) { + $this->stats[$i]['hpNow'] = 0; + } + if ($this->stats[$i]['hpAll'] < $this->stats[$i]['hpNow']) { + $this->stats[$i]['hpNow'] = $this->stats[$i]['hpAll']; + } + $a1ms = ''; + if ($this->ga[$this->users[$i]['id']][$you]) { + $a1mc = ''; + $ac = mysql_fetch_array(mysql_query('SELECT * FROM `battle_act` WHERE `id` = "' . $this->ga[$this->users[$i]['id']][$you] . '" LIMIT 1')); + if (isset($ac) && $ac['time'] + $this->info['timeout'] - 15 < time()) { + $a1mc = 'color:red;'; + } + $a1ms = 'style=\"text-decoration: underline; ' . $a1mc . '\"'; + } elseif ($this->ag[$this->users[$i]['id']][$you]) { + $a1mc = ''; + $ac = mysql_fetch_array(mysql_query('SELECT * FROM `battle_act` WHERE `id` = "' . $this->ag[$this->users[$i]['id']][$you] . '" LIMIT 1')); + if (isset($ac) && $ac['time'] + $this->info['timeout'] - 15 < time()) { + $a1mc = 'color:green;'; + } + $a1ms = 'style=\"text-decoration: overline; ' . $a1mc . '\"'; + } + if ($this->users[$i]['login2'] == '') { + $this->users[$i]['login2'] = $this->users[$i]['login']; + } + if ($this->users[$i]['align'] == 9) { + $this->stats[$i]['hpNow'] = $this->stats[$i]['hpNow'] / ($this->stats[$i]['hpAll'] / 100); + $this->stats[$i]['hpAll'] = '100%'; + } + $ldr = ''; + if ($this->users[$i]['lider'] == $this->info['id']) { + $ldr = 'users[$i]['team'] . '.gif \>'; + } + $teams[$this->users[$i]['team']] .= ', ' . $ldr . 'users[$i]['team'] . '\" onClick=\"top.chat.addto(\'' . $this->users[$i]['login2'] . '\',\'to\'); return false;\" oncontextmenu=\"top.infoMenu(\'' . $this->users[$i]['login2'] . '\',event,\'main\'); return false;\">' . $this->users[$i]['login2'] . ' [' . floor($this->stats[$i]['hpNow']) . '/' . $this->stats[$i]['hpAll'] . ']'; + } + $i++; + } + + //генерируем команды + $i = 0; + while ($i < count($tms)) { + $teams[$tms[$i]] = ltrim($teams[$tms[$i]], ', '); + if ($teams[$tms[$i]] != '') { + $teams[$tms[$i]] = ' ' . $teams[$tms[$i]]; + $ret .= $teams[$tms[$i]]; + if (count($tms) > $i + 1) { + $ret .= '   против   '; + } + } + $i++; + } + return "genteam($ret);"; + } + + public function addTravm($uid, $type, $lvl) + { + $timeEnd = 0; + if ($type == 1) { + $name = 'Легкая травма'; + $stat = rand(1, 3); // пока без духовности + $timeEnd = rand(1, 3);// время травмы от 1.30 до 6 часов + $data = 'add_s' . $stat . '=-' . $lvl; + $img = 'eff_travma1.gif'; + $v1 = 1; + } elseif ($type == 2) { + $name = 'Средняя травма'; + $stat = rand(1, 3); // пока без духовности + $timeEnd = rand(3, 5);// время травмы от 6 до 12 часов + $data = 'add_s' . $stat . '=-' . ($lvl * 2); + $v1 = 2; + $img = 'eff_travma2.gif'; + } elseif ($type == 3) { + $name = 'Тяжелая травма'; + $stat = rand(1, 3); // пока без духовности + $timeEnd = rand(5, 7);// время травмы от 12 до 6 часов + $data = 'add_s' . $stat . '=-' . ($lvl * 3); + $v1 = 3; + $img = 'eff_travma3.gif'; + } elseif ($type == 4) { + $name = 'Неизлечимая травма'; + $stat = rand(1, 3); // пока без духовности + $timeEnd = 24;// время травмы от 24 часа + $data = 'add_s' . $stat . '=-' . ($lvl * 50); + $v1 = 4; + $img = 'eff_travma4.gif'; + } + $timeEnd *= 3600; + + mysql_query('INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES (0,unix_timestamp(), -1, ' . $name . ',' . $data . ',' . $uid . ', 4, ' . $img . ',' . $timeEnd . ', ' . $v1 . ')'); + mysql_query('INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES (0,unix_timestamp(), -1, "Иммунитет: Защита от травм","add_notravma=1",' . $uid . ', 263, "cure1.gif",21600, "")'); + } + + public function testUserInfoBattle($uid) + { + global $u; + if (!isset($this->uids[$uid])) { + //Заносим данные об игроке снова (видимо он погиб и его стерло с инфо) + if (!isset($this->uids[$uid])) { + $this->uids[$uid] = count($this->users); + } + $this->users[$this->uids[$uid]] = mysql_fetch_array(mysql_query('SELECT + + `u`.`id`,`u`.`login`,`u`.`login2`,`u`.`online`,`u`.`admin`,`u`.`city`,`u`.`cityreg`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`, + `u`.`level`,`u`.`money`,`u`.`money3`,`u`.`money2`,`u`.`money4`,`u`.`battle`,`u`.`sex`,`u`.`obraz`,`u`.`win`,`u`.`win_t`, + `u`.`lose`,`u`.`lose_t`,`u`.`nich`,`u`.`timeMain`,`u`.`invis`,`u`.`bot_id`,`u`.`animal`,`u`.`type_pers`, + `u`.`notrhod`,`u`.`bot_room`,`u`.`inUser`,`u`.`inTurnir`,`u`.`inTurnirnew`,`u`.`activ`,`u`.`stopexp`,`u`.`real`, + + `st`.* + + FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id` = "' . $uid . '" LIMIT 1')); + $this->stats[$this->uids[$uid]] = $u->getStats($this->users[$this->uids[$uid]], 0, 0, false, false, true); + } + } + + ///----Спасение функция + public function spaCheck($u1) + { + if ($this->stats[$this->uids[$u1]]['hpNow'] < 1) { + mysql_query('DELETE FROM `battle_act` WHERE `uid1` = "' . $u1 . '" OR `uid2` = "' . $u1 . '"'); + if ($this->stats[$this->uids[$u1]]['spasenie'] > 0 && $this->users[$this->uids[$u1]]['tactic7'] >= 25) // + { + //Свиток спасения + // + if ($this->stats[$this->uids[$u1]]['s7'] > 49 && $this->stats[$this->uids[$u1]]['s7'] < 75) { + //Даем призрачку + mysql_query("INSERT INTO `eff_users` + (`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES + (22, '" . $u1 . "', 'Призрачная защита', 'add_zmproc=75|add_zaproc=75', 0, 77, 0, '" . $u1 . "', 0, 'priem', 141, 'spirit_block25.gif', 1, 1, '0', 0, 0, '', 0, 0, 0, 0, 0);"); + $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll'] * 0.5); + $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll'] * 0.5); + } elseif ($this->stats[$this->uids[$u1]]['s7'] > 74 && $this->stats[$this->uids[$u1]]['s7'] < 100) { + //Абсолютная защита + mysql_query("INSERT INTO `eff_users` + (`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES + (22, '" . $u1 . "', 'Абсолютная защита', 'add_zmproc=100|add_zaproc=100', 0, 77, 0, '" . $u1 . "', 0, 'priem', 358, 'block_absolute.gif', 1, 1, '0', 0, 0, '', 0, 0, 0, 0, 0);"); + $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll'] * 0.75); + $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll'] * 0.75); + } elseif ($this->stats[$this->uids[$u1]]['s7'] > 99) { + //Абсолютная защита x2 + mysql_query("INSERT INTO `eff_users` + (`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES + (22, '" . $u1 . "', 'Защита Мироздателя', 'add_zmproc=100|add_zaproc=100', 0, 77, 0, '" . $u1 . "', 0, 'priem', 358, 'wis_white_shield.gif', 1, 2, '0', 0, 0, '', 0, 0, 0, 0, 0);"); + $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll']); + $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll']); + } + + if ($this->stats[$this->uids[$u1]]['hpNow'] < 1) { + $this->stats[$this->uids[$u1]]['hpNow'] = 1; + } + if ($this->stats[$this->uids[$u1]]['mpNow'] < 1) { + $this->stats[$this->uids[$u1]]['mpNow'] = 1; + } + if ($this->stats[$this->uids[$u1]]['hpNow'] > $this->stats[$this->uids[$u1]]['hpAll']) { + $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll']); + } + if ($this->stats[$this->uids[$u1]]['mpNow'] > $this->stats[$this->uids[$u1]]['mpAll']) { + $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll']); + } + + mysql_query('DELETE FROM `eff_users` WHERE `uid` = ' . $u1 . ' AND `id_eff` = 22 AND `v1` = "priem" AND `v2` = 324'); + mysql_query('UPDATE `stats` SET `hpNow` = ' . $this->stats[$this->uids[$u1]]['hpNow'] . ',`mpNow` = ' . $this->stats[$this->uids[$u1]]['mpNow'] . ', `tactic7` = `tactic7` - 25 WHERE `id` = ' . $u1 . ' LIMIT 1'); + $mas['text'] = '{tm1} ' . $this->stats[$this->uids[$u1]]['login'] . ' убит...' . $this->stats[$this->uids[$u1]]['login'] . ' был спасен. '; + $this->priemAddLog($id, 1, 2, $u->info['id'], $u1, + ' ', + $mas['text'], + ($this->hodID + 0) + ); + + + } else { + if (isset($this->stats[$this->uids[$u1]]['login'])) { + mysql_query('UPDATE `stats` SET `hpNow` = 0,`mpNow` = 0 WHERE `id` = ' . $u1 . ' LIMIT 1'); + $this->stats[$this->uids[$u1]]['hpNow'] = 0; + $this->users[$this->uids[$u1]]['hpNow'] = 0; + $mas['text'] = '{tm1} ' . $this->stats[$this->uids[$u1]]['login'] . ' погиб.'; + $this->priemAddLog($id, 1, 2, $u->info['id'], $u1, + ' ', + $mas['text'], + ($this->hodID + 1) + //Удаляем размен из базы //ТУТ возможен лаг удаления + ); + mysql_query('DELETE FROM `battle_act` WHERE `uid1` = ' . $this->stats[$this->uids[$u1]]['id'] . ' OR `uid2` = ' . $this->stats[$this->uids[$u1]]['id'] . ' OR `uid2` = -' . $this->stats[$this->uids[$u1]]['id']); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = ' . $this->stats[$this->uids[$u1]]['id'] . ' AND `v1` = "priem" AND `delete` = 0'); + // v1 priem + } + } + } + } + //Конец спасения + + +} + +if (!defined('GAME')) { + die(); +} +ignore_user_abort(true); +ini_set('memory_limit', '512M'); + +$btl = new battleClass(new Db()); diff --git a/_incl_data/class/__magic.php.bac b/_incl_data/class/__magic.php.bac deleted file mode 100644 index 6935600f..00000000 --- a/_incl_data/class/__magic.php.bac +++ /dev/null @@ -1,2482 +0,0 @@ - 1, //Зелье Могущества - //264 => 1, //Снадобье Великана - //306 => 1, //Нектар Великана - //383 => 1, //Големский - - //Пристрастие на ловкость - //8 => 2, - //265 => 2, - //308 => 2, //Нектар Змеи - //385 => 2, //Големский - - //Пристрастие на интуицию - //7 => 3, - //266 => 3, - //307 => 3, //Нектар Предчувствия - //384 => 3, //Големский - - //Пристрастие на Интеллект - //9 => 4, - //267 => 4, - //309 => 4, //Нектар Разума - //333 => 4, - //405 => 4, //Големский - - //Пристрастие на Защиту от урона - //14 => 5, - //27 => 5, - //37 => 5, - //361 => 5, - - //Пристрастие на Защиту от колющего урона - //10 => 6, - //Пристрастие на Защиту от рубящего урона - //12 => 7, - //Пристрастие на Защиту от дробящего урона - //13 => 8, - //Пристрастие на Защиту от режущего урона - //11 => 9, - - //Пристрастие на Защиту от магии - //28 => 10, - //38 => 10, - //362 => 10, - //369 => 10, - - //Пристрастие на Защиту от огня - 272 => 11, - 370 => 11, - //Пристрастие на Защиту от воды - 334 => 12, - 275 => 12, - 372 => 12, - //Пристрастие на Защиту от воздуха - 274 => 13, - 373 => 13, - //Пристрастие на Защиту от земли - 273 => 14, - 374 => 14, - - //Восстановление здоровья - 268 => 15, - //Восстановление маны - 300 => 16, - - 10000000000000 => 0 - );*/ - - /*Пристрастия (Снимается эффект) - public $pgtype_second = array( - //Пристрастие на Защиту от урона - 14 => array(6,7,8,9), - 27 => array(6,7,8,9), - 37 => array(6,7,8,9), - 361 => array(6,7,8,9), - - //Пристрастие на Защиту от колющего урона - 10 => array(5,7,8,9), - //Пристрастие на Защиту от рубящего урона - 12 => array(6,5,8,9), - //Пристрастие на Защиту от дробящего урона - 13 => array(6,7,5,9), - //Пристрастие на Защиту от режущего урона - 11 => array(6,7,8,5), - - //Пристрастие на Защиту от магии - //28 => 10, - //38 => 10, - - //Пристрастие на Защиту от огня - 272 => array( 10 , 11 , 12 , 13 , 14 ), - 370 => array( 10 , 11 , 12 , 13 , 14 ), - //Пристрастие на Защиту от воды - 334 => array( 10 , 11 , 12 , 13 , 14 ), - 275 => array( 10 , 11 , 12 , 13 , 14 ), - 372 => array( 10 , 11 , 12 , 13 , 14 ), - //Пристрастие на Защиту от воздуха - 274 => array( 10 , 11 , 12 , 13 , 14 ), - 373 => array( 10 , 11 , 12 , 13 , 14 ), - //Пристрастие на Защиту от земли - 273 => array( 10 , 11 , 12 , 13 , 14 ), - 374 => array( 10 , 11 , 12 , 13 , 14 ), - - //Восстановление здоровья - //268 => 15, - //Восстановление маны - //300 => 16, - - 10000000000000 => 0 - ); - - //Параметры пристрастия - //Название , максимальный уровень , негативный эффект , сколько времени длится каждый уровень в сутках , имя негативного параметра - public $pgpar = array( - 1 => array('Сила', 25, 29, 1.2, 's1', 301), - 2 => array('Ловкость', 25, 29, 1.2, 's2', 302), - 3 => array('Интуиция', 25, 29, 1.2, 's3', 303), - 4 => array('Интеллект', 25, 29, 1.2, 's5', 304), - - 5 => array('Защита от урона', 25, 175, 1.2, 'za', 321), - 6 => array('Защита от колющего урона', 25, 98, 1.2, 'za1', 322), - 7 => array('Защита от рубящего урона', 25, 98, 1.2, 'za2', 323), - 8 => array('Защита от дробящего урона', 25, 98, 1.2, 'za3', 324), - 9 => array('Защита от режущего урона', 25, 98, 1.2, 'za4', 325), - - 10 => array('Защита от магии', 25, 175, 1.2, 'zm', 326), - 11 => array('Защита от магии огня', 25, 98, 1.2, 'zm1', 327), - 12 => array('Защита от магии воды', 25, 98, 1.2, 'zm3', 328), - 13 => array('Защита от магии воздуха', 25, 98, 1.2, 'zm2', 329), - 14 => array('Защита от магии земли', 25, 98, 1.2, 'zm4', 330), - - 15 => array('Восстановление HP', 25, 294, 1.2, 'speedhp', 331), - 16 => array('Восстановление MP', 25, 294, 1.2, 'speedmp', 332) - ); - - //Действия элика под пристрастием - public $pgel = array( - //сила - 1 => array(5), //Зелье Могущества - 264 => array(7), //Снадобье Великана - 306 => array(7), - 383 => array(6), - //ловкость - 8 => array(5), - 265 => array(7), - 308 => array(7), - 385 => array(6), - //интуиция - 7 => array(5), - 266 => array(7), - 307 => array(7), - 384 => array(6), - //Интеллект - 9 => array(5), - 267 => array(7), - 309 => array(7), - 333 => array(5), - 405 => array(6), - //Защита от урона - 14 => array(12), - 27 => array(18), - 37 => array(25), - 361 => array(45), - //Защита от колющего урона - 10 => array(12), - //Защита от режущего урона - 11 => array(12), - //Защита от рубящего урона - 12 => array(12), - //Защита от дробящего урона - 13 => array(12), - //Защита от магии - 369 => array(8), - 28 => array(18), - 38 => array(25), - 362 => array(45), - - //Защита от магии воды - 334 => array(18), //Снадобье Океанов - // - 272 => array(12), - 273 => array(12), - 274 => array(12), - 275 => array(12), - // - 370 => array(20), - 372 => array(20), - 373 => array(20), - 374 => array(20), - // - //Восстановление НР - 268 => array(75), - //Восстановление МР - 300 => array(75) - ); - - //Эликсиры разгона пристрастий - public $elrazgon = array( 405 => true , 383 => true , 384 => true , 385 => true ); - - public function paguba( $eff ) { - //global $u; - if(isset($this->pgtype[$eff['id2']])) { - global $u; - $re = ''; - - $tp = $this->pgtype[$eff['id2']]; - $tp_sec = $this->pgtype_second[$eff['id2']]; - $v = $this->pgpar[$tp]; - $el = $this->pgel[$eff['id2']]; - $pgb = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `v1` = "pgb'.$tp.'" AND `delete` = "0" AND `uid` = "'.$u->info['id'].'" ORDER BY `id` DESC LIMIT 1')); - if( is_array($tp_sec) ) { - $i = 0; - while( $i < count($tp_sec) ) { - if( $tp_sec[$i] > 0 ) { - $pgb_ref = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `v1` = "pgb'.$tp_sec[$i].'" AND `delete` = "0" AND `uid` = "'.$u->info['id'].'" ORDER BY `id` DESC LIMIT 1')); - if( isset($pgb_ref['id']) ) { - $lvl = explode('[',$pgb['name']); - $lvl = explode(']',$lvl[1]); - $lvl = $lvl[0]; - mysql_query('UPDATE `eff_users` SET `deactiveTime` = "'.(time()+$eff['actionTime']).'", `timeUse` = "'.(time()+floor($lvl*$this->pgpar[$tp_sec[$i]][3]*86400)).'" WHERE `id` = "'.$pgb_ref['id'].'" LIMIT 1'); - } - } - $i++; - } - unset($pgb_ref,$i); - } - if(!isset($pgb['id'])) { - //Пристрастия нет, но оно может появиться, шанс 10% - $prc11 = 5; - if( $this->elrazgon[$eff['id2']] == true ) { - $prc11 = 101; - } - if(rand(0,100) < $prc11) { - //Добавляем пристрастие - $d = 'add_'.$v[4].'=-'.ceil($v[2]/$v[1]*1); - mysql_query('INSERT INTO `eff_users` (`v1`,`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`,`no_Ace`,`deactiveTime`) VALUES ("pgb'.$tp.'","0","'.$v[5].'","'.$u->info['id'].'","Пагубное пристрастие [1]","'.(time()+floor($v[3]*86400)).'","'.$d.'","0","'.(time()+$eff['actionTime']).'")'); - } - }else{ - $lvl = explode('[',$pgb['name']); - $lvl = explode(']',$lvl[1]); - $lvl = $lvl[0]; - $prc11 = 7; - if( $this->elrazgon[$eff['id2']] == true ) { - $prc11 = 101; - } - //Пристрастия есть и возможно повысить его уровень 5% , если прошло 75% времени эликсира - if(rand(0,100) < $prc11 && $lvl < $v[1]) { - //Добавляем новое пристрастие - $lvl++; - $d = 'add_'.$v[4].'=-'.ceil($v[2]/$v[1]*$lvl); - mysql_query('DELETE FROM `eff_users` WHERE `id` = "'.$pgb['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `eff_users` (`v1`,`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`,`no_Ace`,`deactiveTime`) VALUES ("pgb'.$tp.'","0","'.$v[5].'","'.$u->info['id'].'","Пагубное пристрастие ['.$lvl.']","'.(time()+floor($lvl*$v[3]*86400)).'","'.$d.'","0","'.(time()+$eff['actionTime']).'")'); - $pgb = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `v1` = "pgb'.$tp.'" AND `delete` = "0" AND `uid` = "'.$u->info['id'].'" RODER BY `id` DESC LIMIT 1')); - }else{ - //Обновляем заряд пристрастия - mysql_query('UPDATE `eff_users` SET `deactiveTime` = "'.(time()+$eff['actionTime']).'", `timeUse` = "'.(time()+floor($lvl*$v[3]*86400)).'" WHERE `id` = "'.$pgb['id'].'" LIMIT 1'); - } - - - //Перезаписываем эффект пристрастия - $eff['mdata'] = $u->lookStats($eff['mdata']); - $eff['mdata']['add_'.$v[4]] += floor($el[0]/$v[1]*$lvl); - $eff['mdata'] = $u->impStats($eff['mdata']); - } - } - return $eff; - }*/ - - - - - - public function inBattleLog($txt,$usr=NULL) { - global $u; - $lastHOD = mysql_fetch_array(mysql_query('SELECT * FROM `battle_logs` WHERE `battle` = "'.$u->info['battle'].'" ORDER BY `id_hod` DESC LIMIT 1')); - if(isset($lastHOD['id'])) { - $id_hod = $lastHOD['id_hod']; - if($lastHOD['type']!=6) { - $id_hod++; - } - mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("'.time().'","'.$u->info['battle'].'","'.($id_hod).'","{tm1} '.$txt.'","login1='.$u->info['login'].'||t1='.$u->info['team'].'||login2='.$usr['login'].'||t2='.$usr['team'].'||time1='.time().'","","","","","6")'); - } - } - - - - //Использование предмета - public function useItems($id) - { - global $u, $c, $code, $btl, $e_magic, $c_magic; - - $itm = mysql_fetch_array(mysql_query('SELECT `iu`.`id` AS `iuid`,`im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`uid` = "'.$u->info['id'].'" AND `iu`.`inShop`="0" AND `iu`.`delete`="0" AND `iu`.`id` = "'.mysql_real_escape_string((int)$id).'" LIMIT 1')); - $bs_is = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "'.$u->info['inTurnir'].'" LIMIT 1')); - if(isset($itm['id'])) - { - - if($itm['group'] == 1) { - //Группа предметов - if($u->itemsX($itm['id'])>1) { - //вытаскиваем предмет из группы - $u->unstack($itm['id'],1); - /*$itm = mysql_fetch_array(mysql_query('SELECT `iu`.`id` AS `iuid`,`im`.*, `iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`delete`="1000" AND `iu`.`inGroup` = "'.$itm['id'].'" LIMIT 1')); - if(!isset($itm['id'])) { - $this->error = 'Группа предметов ошибочна...'; - }else{ - $itm['delete'] = 0; - }*/ - } - } - - $st = $u->lookStats($itm['data']); - - if($itm['magic_chance'] > 0 && $itm['magic_chance'] < 100) { - $itm['magic_chance'] += floor($u->stats['s5']*3); - if($itm['magic_chance'] >= 99) { $itm['magic_chance'] = 99; } - } - if(isset($bs_is['id'])) { - if(in_array($itm['item_id'], $e_magic) || in_array($itm['item_id'], $c_magic)) { - $itm['magic_chance'] += $bs_is['users']; - if($itm['magic_chance'] >= 99) { $itm['magic_chance'] = 99; } - } - } - - if($itm['iznosNOW'] >= $itm['iznosMAX']) { - $u->error = 'Не осталось зарядов...'; - }elseif( $st['useOnlyInBattle'] == 1 && $u->info['battle'] == 0 ) { - //Можно использовать только в поединке - $u->error = 'Можно использовать только в поединке'; - }elseif( $u->info['battle'] > 0 && $itm['btl_zd'] > 0 ) { - //Можно использовать только в поединке - $u->error = 'Задержка использования еще '.$itm['btl_zd'].' ходов'; - }elseif( $st['useOnlyInBattle'] == 1 && $u->info['battle'] > 0 && $u->stats['hpNow'] < 1 ) { - //Можно использовать только в поединке - $u->error = 'Вы погибли, нельзя пользоваться свитками и магией'; - } elseif($itm['magic_chance'] > 0 && rand(0, 100) > $itm['magic_chance']) { - - - $u->error = 'Каст "'.$itm['name'].'" сгорел'; - $itm['iznosNOW']++; - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = 0, `delete` = 0 WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - $u->addDelo(1, $u->info['id'],'"System.inventory":(КАСТ СГОРЕЛ) Персонаж использовал "'.$itm['name'].'" ('.$us[1].') [itm:'.$itm['id'].'].',time(),$u->info['city'],'System.inventory',0,0); - - } elseif(isset($st['usefromfile'])) { - - //используем заклятие - $st = $u->lookStats($itm['data']); - if( isset($st['zazuby']) && $_GET['login'] != $u->info['login'] ) { - //unset($st['useOnLogin']); - $_GET['login'] = $u->info['login']; - } - $jl = $_GET['login']; - $_GET['login'] = urlencode($_GET['login']); - //используем на персонажа (все кроме себя) - $_GET['login'] = str_replace('%',' ',$_GET['login']); - $_GET['login'] = str_replace('25','',$_GET['login']); - $jl = str_replace('%',' ',$jl); - $jl = str_replace('25','',$jl); - - if(isset($st['useOnLogin']) && $st['useOnLogin']==1) { - if( $u->info['inTurnir'] == 0 ) { - if( $u->info['battle'] > 0 ) { - $usr = mysql_fetch_array(mysql_query('SELECT `st`.`atack`, `st`.`clone`, `u`.`bot_id`, `u`.`type_pers`,`u`.`inTurnir`,`st`.`zv`,`st`.`bot`,`st`.`hpNow`,`u`.`login`,`st`.`dnow`,`u`.`id`,`u`.`align`,`u`.`admin`,`u`.`clan`,`u`.`level`,`u`.`room`,`u`.`online`,`u`.`battle`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`city` = "'.$u->info['city'].'" AND `u`.`battle` = "'.$u->info['battle'].'" AND (`u`.`login`="'.mysql_real_escape_string($_GET['login']).'" OR `u`.`login`="'.mysql_real_escape_string($jl).'") LIMIT 1')); - }else{ - $usr = mysql_fetch_array(mysql_query('SELECT `st`.`atack`, `st`.`clone`, `u`.`bot_id`, `u`.`type_pers`,`u`.`inTurnir`,`st`.`zv`,`st`.`bot`,`st`.`hpNow`,`u`.`login`,`st`.`dnow`,`u`.`id`,`u`.`align`,`u`.`admin`,`u`.`clan`,`u`.`level`,`u`.`room`,`u`.`online`,`u`.`battle`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`city` = "'.$u->info['city'].'" AND (`u`.`login`="'.mysql_real_escape_string($_GET['login']).'" OR `u`.`login`="'.mysql_real_escape_string($jl).'") LIMIT 1')); - } - }else{ - if( $u->info['battle'] > 0 ) { - $usr = mysql_fetch_array(mysql_query('SELECT `st`.`atack`,`st`.`clone`,`u`.`bot_id`,`u`.`type_pers`,`u`.`inTurnir`,`st`.`zv`,`st`.`bot`,`st`.`hpNow`,`u`.`login`,`st`.`dnow`,`u`.`id`,`u`.`align`,`u`.`admin`,`u`.`clan`,`u`.`level`,`u`.`room`,`u`.`online`,`u`.`battle`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`city` = "'.$u->info['city'].'" AND `u`.`battle` = "'.$u->info['battle'].'" AND (`u`.`login`="'.mysql_real_escape_string($_GET['login']).'" OR `u`.`login`="'.mysql_real_escape_string($jl).'") AND `u`.`inTurnir` > 0 LIMIT 1')); - }else{ - $usr = mysql_fetch_array(mysql_query('SELECT `st`.`atack`,`st`.`clone`,`u`.`bot_id`,`u`.`type_pers`,`u`.`inTurnir`,`st`.`zv`,`st`.`bot`,`st`.`hpNow`,`u`.`login`,`st`.`dnow`,`u`.`id`,`u`.`align`,`u`.`admin`,`u`.`clan`,`u`.`level`,`u`.`room`,`u`.`online`,`u`.`battle`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`city` = "'.$u->info['city'].'" AND (`u`.`login`="'.mysql_real_escape_string($_GET['login']).'" OR `u`.`login`="'.mysql_real_escape_string($jl).'") AND `u`.`inTurnir` > 0 LIMIT 1')); - } - } - } - - if($st['usefromfile']==1) { - if($u->info['battle'] > 0) { - if(file_exists('../../_incl_data/class/magic/'.$itm['magic_inci'].'.php')) - { - require('../../_incl_data/class/magic/'.$itm['magic_inci'].'.php'); - }else{ - $u->error = 'Не удалось использовать ('.$itm['magic_inci'].'.b)'; - } - }else{ - if(file_exists('_incl_data/class/magic/'.$itm['magic_inci'].'.php')) - { - require('_incl_data/class/magic/'.$itm['magic_inci'].'.php'); - }else{ - $u->error = 'Не удалось использовать ('.$itm['magic_inci'].')'; - } - } - }else{ - if($itm['useInBattle'] > 0) { - if(file_exists('../../_incl_data/class/priems/'.$st['usefromfile'].'.php')) - { - require('../../_incl_data/class/priems/'.$st['usefromfile'].'.php'); - }else{ - $u->error = 'Не удалось использовать ('.$st['usefromfile'].'.)'; - } - }else{ - $u->error = 'Не удалось использовать ('.$st['usefromfile'].'!)'; - } - } - }elseif($itm['type']==30) - { - //Эликсиры - $goodUse = 0; $use = array(); - if(isset($st['moment'])) - { - //Эликсир используется моментально (Восстановление НР или МР) - if(isset($st['moment_hp'])) { - //Восстанавливаем здоровье - if($u->stats['hpNow']<$u->stats['hpAll']) { - $goodUse = 1; - $use['moment_hp'] = $st['moment_hp']; - - if($u->stats['hpNow']+$use['moment_hp']>$u->stats['hpAll']) { - $use['moment_hp'] = ceil($u->stats['hpAll']-$u->stats['hpNow']); - } - - $u->error .= 'Вы восстановили '.($use['moment_hp']).' HP.
'; - }else{ - $u->error = 'Ваше здоровье и так полностью восстановлено
'; - $goodUse = 0; - } - } - - if(isset($st['moment_mp'])) { - //Восстанавливаем здоровье - if($u->stats['mpNow'] < $u->stats['mpAll']) { - $goodUse = 1; - $use['moment_mp'] = $st['moment_mp']; - if($u->stats['mpNow']+$use['moment_mp'] > $u->stats['mpAll']) { - $use['moment_mp'] = ceil($u->stats['mpAll']-$u->stats['mpNow']); - } - $u->error .= 'Вы восстановили '.($use['moment_mp']).' MP.
'; - } else { - $u->error = 'Ваша манна и так полностью восстановлена'; - $goodUse = 0; - } - } - - if($itm['iznosNOW']>=$itm['iznosMAX']) - { - $u->error = 'Эликсир был испорчен...'; - $goodUse = 0; - } - - if(($u->info['align']==2 || $u->info['haos']>time()) && isset($st['nohaos'])) - { - $goodUse = 0; - $u->error = 'Хаосники не могут использовать данный эликсир'; - } - - //Заносим данные в БД - if($goodUse==1) - { - $itm['iznosNOW']++; - $upd = mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - if($upd) { - $u->stats['hpNow'] += $use['moment_hp']; - $u->info['hpNow'] += $use['moment_hp']; - $u->stats['mpNow'] += $use['moment_mp']; - $u->info['mpNow'] += $use['moment_mp']; - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - mysql_query('UPDATE `stats` SET `hpNow` = "'.$u->info['hpNow'].'", `mpNow` = "'.$u->info['mpNow'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->addDelo(1,$u->info['id'],'"System.inventory": Персонаж использовал эликсир "'.$itm['name'].'" (+'.$use['moment_hp'].' HP) [itm:'.$itm['id'].'].',time(),$u->info['city'],'System.inventory',0,0); - $this->youuse++; - $u->error = 'Вы успешно использовали эликсир "'.$itm['name'].'"
'.$u->error.''; - }else{ - $u->error = 'Не удалось использовать эликсир...'; - } - } - }else{ - //Эликсиры с продолжительным эффектом - $goodUse = 1; - if(($u->info['align']==2 || $u->info['haos']>time()) && isset($st['nohaos'])) - { - $goodUse = 0; - $u->error = 'Хаосники не могут использовать данный эликсир'; - } - if($goodUse==1) - { - $upd1 = 1; - $upd2 = 1; - //добавляем эффект персонажу - if(isset($st['onlyOne'])) - { - //убираем прошлые эффекты - $goodUse = 0; - $upd1 = mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `id_eff` = "'.$itm['magic_inc'].'"'); - if($upd1) - { - $goodUse = 1; - } - } - if(isset($st['oneType'])) - { - //убираем прошлые эффекты - $goodUse = 0; - $upd2 = mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `overType` = "'.$itm['overType'].'"'); - if($upd1) - { - $goodUse = 1; - } - } - if($goodUse == 1) - { - $us = $this->add_eff($u->info['id'],$itm['magic_inc']); - if($us[0]==1) - { - $itm['iznosNOW']++; - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - $u->addDelo(1,$u->info['id'],'"System.inventory": Персонаж использовал эликсир "'.$itm['name'].'" ('.$us[1].') [itm:'.$itm['id'].'].',time(),$u->info['city'],'System.inventory',0,0); - $this->youuse++; - $u->error = 'Вы успешно использовали эликсир "'.$itm['name'].'"
'.$us[1].''; - }else{ - $u->error = 'Не удалось использовать "'.$itm['name'].'"'; - } - }else{ - $u->error = 'Не удалось использовать "'.$itm['name'].'"'; - } - } - } - //--------------- - }elseif($itm['type']==29) - { - //используем заклятие - $st = $u->lookStats($itm['data']); - if( isset($st['zazuby']) && $_GET['login'] != $u->info['login'] ) { - //unset($st['useOnLogin']); - $_GET['login'] = $u->info['login']; - } - $jl = $_GET['login']; - $_GET['login'] = urlencode($_GET['login']); - //используем на персонажа (все кроме себя) - $_GET['login'] = str_replace('%',' ',$_GET['login']); - $_GET['login'] = str_replace('25','',$_GET['login']); - $jl = str_replace('%',' ',$jl); - $jl = str_replace('25','',$jl); - if($itm['magic_inci']=='nextuplvl') { - if($itm['iznosNOW']>=$itm['iznosMAX']) { - $u->error = 'Свиток был исполчен...'; - }elseif( $u->info['battle'] > 0 ) { - // - $u->error = 'Вы не можете использовать свиток в бою'; - }else{ - if( $u->info['twink'] > 0 ) { - $u->error = 'Используйте свиток на основном персонаже'; - }else{ - mysql_query('UPDATE `users` SET `stopexp` = 0 WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `users_twink` SET `stopexp` = 0 WHERE `uid` = "'.$u->info['id'].'" LIMIT 1'); - $itm['iznosNOW']++; - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - } - } - }elseif(isset($st['useOnLogin']) && $st['useOnLogin']==1) - { - if( $u->info['inTurnir'] == 0 ) { - if( $u->info['battle'] > 0 ) { - $usr = mysql_fetch_array(mysql_query('SELECT `st`.`atack`, `st`.`clone`, `u`.`bot_id`, `u`.`type_pers`,`u`.`inTurnir`,`st`.`zv`,`st`.`bot`,`st`.`hpNow`,`u`.`login`,`st`.`dnow`,`u`.`id`,`u`.`align`,`u`.`admin`,`u`.`clan`,`u`.`level`,`u`.`room`,`u`.`online`,`u`.`battle`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`city` = "'.$u->info['city'].'" AND `u`.`battle` = "'.$u->info['battle'].'" AND (`u`.`login`="'.mysql_real_escape_string($_GET['login']).'" OR `u`.`login`="'.mysql_real_escape_string($jl).'") LIMIT 1')); - }else{ - $usr = mysql_fetch_array(mysql_query('SELECT `st`.`atack`, `st`.`clone`, `u`.`bot_id`, `u`.`type_pers`,`u`.`inTurnir`,`st`.`zv`,`st`.`bot`,`st`.`hpNow`,`u`.`login`,`st`.`dnow`,`u`.`id`,`u`.`align`,`u`.`admin`,`u`.`clan`,`u`.`level`,`u`.`room`,`u`.`online`,`u`.`battle`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`city` = "'.$u->info['city'].'" AND (`u`.`login`="'.mysql_real_escape_string($_GET['login']).'" OR `u`.`login`="'.mysql_real_escape_string($jl).'") LIMIT 1')); - } - }else{ - if( $u->info['battle'] > 0 ) { - $usr = mysql_fetch_array(mysql_query('SELECT `st`.`atack`,`st`.`clone`,`u`.`bot_id`,`u`.`type_pers`,`u`.`inTurnir`,`st`.`zv`,`st`.`bot`,`st`.`hpNow`,`u`.`login`,`st`.`dnow`,`u`.`id`,`u`.`align`,`u`.`admin`,`u`.`clan`,`u`.`level`,`u`.`room`,`u`.`online`,`u`.`battle`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`city` = "'.$u->info['city'].'" AND `u`.`battle` = "'.$u->info['battle'].'" AND (`u`.`login`="'.mysql_real_escape_string($_GET['login']).'" OR `u`.`login`="'.mysql_real_escape_string($jl).'") AND `u`.`inTurnir` > 0 LIMIT 1')); - }else{ - $usr = mysql_fetch_array(mysql_query('SELECT `st`.`atack`,`st`.`clone`,`u`.`bot_id`,`u`.`type_pers`,`u`.`inTurnir`,`st`.`zv`,`st`.`bot`,`st`.`hpNow`,`u`.`login`,`st`.`dnow`,`u`.`id`,`u`.`align`,`u`.`admin`,`u`.`clan`,`u`.`level`,`u`.`room`,`u`.`online`,`u`.`battle`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`city` = "'.$u->info['city'].'" AND (`u`.`login`="'.mysql_real_escape_string($_GET['login']).'" OR `u`.`login`="'.mysql_real_escape_string($jl).'") AND `u`.`inTurnir` > 0 LIMIT 1')); - } - } - if(isset($usr['id'])) - { - //заклятье нападения - if($itm['iznosNOW']>=$itm['iznosMAX']) - { - $u->error = 'Свиток был исполчен...'; - }elseif($itm['magic_inci']=='snowball') - { - if( $u->info['battle'] == 0 ) { - $usr = mysql_fetch_array(mysql_query('SELECT `st`.`clone`,`u`.`type_pers`,`u`.`bot_id`,`st`.`zv`,`u`.`inTurnir`,`st`.`bot`,`st`.`hpNow`,`u`.`login`,`st`.`dnow`,`u`.`id`,`u`.`align`,`u`.`admin`,`u`.`clan`,`u`.`level`,`u`.`room`,`u`.`online`,`u`.`battle`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`city` = "'.$u->info['city'].'" AND (`u`.`battle` = 0 OR `u`.`battle` = "'.$u->info['battle'].'") AND (`u`.`login`="'.mysql_real_escape_string($_GET['login']).'" OR `u`.`login`="'.mysql_real_escape_string($jl).'") LIMIT 1')); - }else{ - $usr = mysql_fetch_array(mysql_query('SELECT `st`.`clone`,`u`.`type_pers`,`u`.`bot_id`,`st`.`zv`,`u`.`inTurnir`,`st`.`bot`,`st`.`hpNow`,`u`.`login`,`st`.`dnow`,`u`.`id`,`u`.`align`,`u`.`admin`,`u`.`clan`,`u`.`level`,`u`.`room`,`u`.`online`,`u`.`battle`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`city` = "'.$u->info['city'].'" AND (`u`.`battle` = 0 OR `u`.`battle` = "'.$u->info['battle'].'") AND (`u`.`login`="'.mysql_real_escape_string($_GET['login']).'" OR `u`.`login`="'.mysql_real_escape_string($jl).'") AND `u`.`battle` = "'.$u->info['battle'].'" LIMIT 1')); - } - if($usr['battle']>0 && $u->info['battle']!=$usr['battle']) - { - $u->error = 'Персонаж находится в бою'; - }elseif($usr['battle']>0) { - //Кидаемся в поединке - if($usr['team'] != $u->info['team'] && $usr['hpNow'] > 0) { - $txt = 1; - - //Отморозки - if($usr['bot_id'] >= 439 && $usr['bot_id'] <= 460) { - $txt = 500; - }elseif($usr['bot_id'] == 291 ) { - if($usr['hpNow'] < 961) { - $txt = 1982; - }elseif($usr['hpNow'] > 980 && $usr['hpNow'] < 1981) { - $txt = 1982; - } - }elseif($usr['id'] == 1008 ) { - $txt = $u->info['level']*250; - } - - $usr['hpNow'] -= $txt; - if($txt<0) { - $txt = '+'.$txt; - }elseif($txt==0) { - $txt = '--'; - }else{ - $txt = '-'.$txt; - } - if($usr['hpNow']<0) - { - $usr['hpNow'] = 0; - } - $btl->stats[$btl->uids[$usr['id']]]['hpNow'] = $usr['hpNow']; - $lastHOD = mysql_fetch_array(mysql_query('SELECT * FROM `battle_logs` WHERE `battle` = "'.$u->info['battle'].'" ORDER BY `id_hod` DESC LIMIT 1')); - if(isset($lastHOD['id'])) - { - $btl->stats[$btl->uids[$usr['id']]]['hpNow'] = floor($btl->stats[$btl->uids[$usr['id']]]['hpNow']); - if($btl->stats[$btl->uids[$usr['id']]]['hpNow'] > $btl->stats[$btl->uids[$usr['id']]]['hpAll']) { - $btl->stats[$btl->uids[$usr['id']]]['hpNow'] = $btl->stats[$btl->uids[$usr['id']]]['hpAll']; - } - if($btl->stats[$btl->uids[$usr['id']]]['hpNow'] < 1) { - $btl->stats[$btl->uids[$usr['id']]]['hpNow'] = 0; - } - $id_hod = $lastHOD['id_hod']; - if($lastHOD['type']!=6) - { - $id_hod++; - } - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$usr['id']]]['hpNow'].'" WHERE `id` = "'.$usr['id'].'" LIMIT 1'); - $itm['iznosNOW']++; - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - $txt = ''.$txt.''; - if($u->info['sex']==1) { - $txt = 'Хитрая {u1} бросила кусок снега в {u2}. '.$txt.' ['.$btl->stats[$btl->uids[$usr['id']]]['hpNow'].'/'.$btl->stats[$btl->uids[$usr['id']]]['hpAll'].']'; - }else{ - $txt = 'Хитрый {u1} бросил кусок снега в {u2}. '.$txt.' ['.$btl->stats[$btl->uids[$usr['id']]]['hpNow'].'/'.$btl->stats[$btl->uids[$usr['id']]]['hpAll'].']'; - } - mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("'.time().'","'.$u->info['battle'].'","'.($id_hod).'","{tm1} '.$txt.'","login1='.$u->info['login'].'||t1='.$u->info['team'].'||login2='.$usr['login'].'||t2='.$usr['team'].'||time1='.time().'","","","","","6")'); - } - - unset($txt); - }else{ - $u->error = 'Нельзя использовать на данного персонажа'; - } - }elseif($u->info['dnow']!=$usr['dnow']) - { - $u->error = 'Персонаж находится в другой комнате'; - }elseif($usr['id']==$u->info['id']) - { - $u->error = 'Нельзя кидаться в самого себя'; - }elseif($usr['online']error = 'Персонаж находится в реальном мире ;)'; - }elseif($usr['room']!=$u->info['room']) - { - $u->error = 'Персонаж находится в другой комнате'; - }elseif($usr['admin']>0 && $u->info['admin']==0) - { - $u->error = 'Нельзя кидаться в Ангелов'; - }else{ - $usr['hpNow'] -= 1000; - if($usr['hpNow']<0) - { - $usr['hpNow'] = 0; - } - $upd = mysql_query('UPDATE `stats` SET `hpNow` = "'.$usr['hpNow'].'" WHERE `id` = "'.$usr['id'].'" LIMIT 1'); - if($upd) - { - $sx = 'ый'; $sx2 = ''; - if($u->info['sex']==1) - { - $sx = 'ая'; $sx2 = 'а'; - } - $itm['iznosNOW']++; - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - $urs_st = $u->getStats($usr['id']); - $rtxt = '[img[items/snowball1.gif]] Хитр'.$sx.' "'.$u->info['login'].'" бросил'.$sx2.' кусок снега в "'.$usr['login'].'". -1000 ['.floor($urs_st['hpNow']).'/'.$urs_st['hpAll'].']'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - unset($sx,$sx2); - }else{ - $u->error = 'Не удалось кинуть снежок...'; - } - } - }elseif($itm['magic_inci']=='atack') - { - //заклятье нападения - $usta = $u->getStats($usr['id'],0); // статы цели - $rgd = $u->regen($usr['id'],$usta,1); - $usta['hpNow'] = $rgd['hpNow']; - $usta['mpNow'] = $rgd['mpNow']; - $minHp = floor($usta['hpAll']/100*33); // минимальный запас здоровья цели при котором можно напасть - $batlatest = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "'.$usr['battle'].'" AND `team_win` = -1 LIMIT 1')); - $test = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_last` WHERE `uid` = "'.$u->info['id'].'" AND `battle_id` = "'.$usr['battle'].'" LIMIT 1')); - if(isset($test['id'])) { - echo 'Нельзя вмешаться, вы уже были в этом поединке.'; - }elseif( time() - $usr['timereg'] < 86400*10 ) - { - $u->error = 'Нападать на новичков запрещается! Сейчас придет Мироздатель и превратит тебя в лягушку...'; - }elseif($usr['atack']==1 || $usr['atack'] > time()) - { - $u->error = 'На персонаже метка нападения, нападайте через неё...'; - }elseif($u->info['dnow']!=$usr['dnow']) - { - $u->error = 'Персонаж находится в другой комнате (пещере)'; - }elseif($usr['inTurnirnew'] > 0) - { - $u->error = 'Персонаж принимает участие в турнире'; - }elseif($u->info['battle']>0) - { - $u->error = 'Вы уже находитесь в бою'; - }elseif($usr['id']==$u->info['id']) - { - $u->error = 'Нельзя нападать на самого себя'; - }elseif($usr['bot']==2) { - $u->error = 'Не удалость напасть на бота '.$usr['login'].''; - }elseif($usr['online']error = 'Персонаж не в сети'; - }elseif($usr['admin']==1) - { - $u->error = 'Уважайте хранителей...'; - }elseif($usr['room']!=$u->info['room'] && $u->info['battle'] != $usr['battle'] && $u->info['battle'] > 0) - { - $u->error = 'Персонаж находится в другой комнате!'; - }elseif($usr['room']!=$u->info['room']) - { - $u->error = 'Персонаж находится в другой комнате'; - }elseif($batlatest['noatack']==1) - { - $u->error = 'Поединок защищен магией! Вы не можете вмешаться!'; - }elseif($minHp>$usta['hpNow'] && !isset($batlatest['id'])) - { - //мало хп - $u->error = 'Персонаж слишком слаб ('.floor($usta['hpNow']).'HP)'; - }elseif($u->info['noatack']!=0) - { - //мало хп - $u->error = 'В этой комнате нападения запрещены.'; - }else{ - - if($usr['type_pers'] > 0) { - $kroww=$usr['type_pers']; - }elseif($itm['item_id']=='2391'){ - $kroww=99; - }elseif($itm['item_id']=='11117'){ - $kroww=222; - }else{ - $kroww=0; - } - - $kulak = 0; - if( $itm['item_id'] == 4404 ) { - $kulak = 1; - } - if($u->info['inTurnir'] > 0) { $bsi = $u->info['inTurnir']; } else { $bsi = 0; } - $atc = $this->atackUser($u->info['id'],$usr['id'],$usr['team'],$usr['battle'], 0, $kroww, $kulak, $bsi); - if($atc > 0) - { - //отправляем системку в чат - $sx = ''; - if($u->info['sex']==1) - { - $sx = 'а'; - } - $itm['iznosNOW']++; - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - $rtxt = '[img[items/pal_button8.gif]] "'.$u->info['login'].'" использовал'.$sx.' магию нападения на персонажа "'.$usr['login'].'".'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES ('1','".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','11','0','1')"); - //напали, обновляем экран - - die(''); - }else{ - if( $u->error == '' ) { - $u->error = 'Не удалось напасть на персонажа...'; - } - } - } - }elseif($itm['magic_inci']=='cureHP') { - //Реген НР,MP - $po = $u->lookStats($itm['data']); - if($u->info['battle'] > 0) { - //используем свиток в поединке - $bu = mysql_fetch_array(mysql_query('SELECT * FROM `spells` WHERE `btl` = "'.$u->info['battle'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1')); - if(isset($bu['id'])) { - $u->error = 'Нельзя использовать свиток каждый ход...'; - }elseif( $usr['battle']!=$u->info['battle'] ) { - $u->error = 'Неудалось использовать, персонаж в другом поединке...'; - }elseif( $usr['team']!=$u->info['team'] ) { - $u->error = 'Неудалось использовать на противника...'; - }elseif( $usr['hpNow'] < 1 ) { - $u->error = 'Неудалось использовать на мертвых...'; - }elseif( $u->info['hpNow'] < 1 ) { - $u->error = 'Неудалось использовать, вы погибли...'; - }elseif($btl->info['noeff'] > 0 ) { - $u->error = 'Запрет на использования свитков восстановления'; - }elseif( $po['magic_hpNow'] < 1 && $po['magic_mpNow'] < 1 ) { - $u->error = 'Неудалось использовать, в магическом свитке нет магии...'; - }elseif(($usr['battle']==$u->info['battle'] && ($u->info['team']==$usr['team'] && ($po['magic_hpNow']>0 || $po['magic_mpNow']>0))) && $usr['hpNow']>=1 && $u->info['hpNow']>=1) { - //кастуем - if(isset($po['magic_hpNow'])) { - - mysql_query('INSERT INTO `spells` (`btl`,`uid`,`time`,`item_id`,`var`,`hod`) VALUES ( - "'.$u->info['battle'].'","'.$u->info['id'].'","'.time().'","'.$itm['item_id'].'","'.$itm['name'].'","1" - )'); - - $txt = $po['magic_hpNow']; - - if($btl->stats[$btl->uids[$usr['id']]]['hpAll']-$btl->stats[$btl->uids[$usr['id']]]['hpNow'] < $txt) { - $txt = floor($btl->stats[$btl->uids[$usr['id']]]['hpAll']-$btl->stats[$btl->uids[$usr['id']]]['hpNow']); - } - //653 - 400 - //253 - //453 1306 - $gdhh = round($txt/$btl->stats[$btl->uids[$usr['id']]]['hpAll']*5,2); - $gdhd = round($gdhh/$btl->users[$btl->uids[$usr['id']]]['tactic7']*100); - if($gdhd > 100) { - $txt = floor($txt/100*$gdhd); - } - - if($btl->users[$btl->uids[$usr['id']]]['tactic7'] >= 1) { - if($txt > 0) { - $btl->stats[$btl->uids[$usr['id']]]['hpNow'] += $txt; - $btl->users[$btl->uids[$usr['id']]]['tactic7'] -= $gdhh; - if($btl->users[$btl->uids[$usr['id']]]['tactic7'] < 0) { - $btl->users[$btl->uids[$usr['id']]]['tactic7'] = 0; - } - } - mysql_query('UPDATE `stats` SET `last_hp` = "'.$txt.'", `hpNow` = `hpNow` + '.$po['magic_hpNow'].', `tactic7` = "'.$btl->users[$btl->uids[$usr['id']]]['tactic7'].'" WHERE `id` = "'.$usr['id'].'" LIMIT 1'); - if($txt > 0) { - $txt = '+'.$txt; - } elseif($txt == 0){ - $txt = '--'; - } - } else { - $txt = '--'; - } - $lastHOD = mysql_fetch_array(mysql_query('SELECT * FROM `battle_logs` WHERE `battle` = "'.$u->info['battle'].'" ORDER BY `id_hod` DESC LIMIT 1')); - if(isset($lastHOD['id'])) - { - $btl->stats[$btl->uids[$usr['id']]]['hpNow'] = floor($btl->stats[$btl->uids[$usr['id']]]['hpNow']); - if($btl->stats[$btl->uids[$usr['id']]]['hpNow'] > $btl->stats[$btl->uids[$usr['id']]]['hpAll']) { - $btl->stats[$btl->uids[$usr['id']]]['hpNow'] = $btl->stats[$btl->uids[$usr['id']]]['hpAll']; - } - if($btl->stats[$btl->uids[$usr['id']]]['hpNow'] < 1) { - $btl->stats[$btl->uids[$usr['id']]]['hpNow'] = 0; - } - $id_hod = $lastHOD['id_hod']; - if($lastHOD['type'] != 6) - { - $id_hod++; - } - $txt = ''.$txt.''; - if($u->info['id']==$usr['id']) { - if($u->info['sex']==1) { - $txt = '{u1} использовала "'.$itm['name'].'" на себя. '.$txt.' ['.$btl->stats[$btl->uids[$usr['id']]]['hpNow'].'/'.$btl->stats[$btl->uids[$usr['id']]]['hpAll'].']'; - }else{ - $txt = '{u1} использовал "'.$itm['name'].'" на себя. '.$txt.' ['.$btl->stats[$btl->uids[$usr['id']]]['hpNow'].'/'.$btl->stats[$btl->uids[$usr['id']]]['hpAll'].']'; - } - }else{ - if($u->info['sex']==1) { - $txt = '{u1} использовала "'.$itm['name'].'" на {u2}. '.$txt.' ['.$btl->stats[$btl->uids[$usr['id']]]['hpNow'].'/'.$btl->stats[$btl->uids[$usr['id']]]['hpAll'].']'; - }else{ - $txt = '{u1} использовал "'.$itm['name'].'" на {u2}. '.$txt.' ['.$btl->stats[$btl->uids[$usr['id']]]['hpNow'].'/'.$btl->stats[$btl->uids[$usr['id']]]['hpAll'].']'; - } - } - mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("'.time().'","'.$u->info['battle'].'","'.($id_hod).'","{tm1} '.$txt.'","login1='.$u->info['login'].'||t1='.$u->info['team'].'||login2='.$usr['login'].'||t2='.$usr['team'].'||time1='.time().'","","","","","6")'); - } - } - $itm['iznosNOW']++; - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - - // сообщение в лог боя - $sx = 'ый'; $sx2 = ''; - if($u->info['sex']==1) - { - $sx = 'ая'; $sx2 = 'а'; - } - $u->error = 'Свиток "'.$itm['name'].'" был успешно использован.'; - }else{ - $u->error = 'Нельзя использовать на данного персонажа'; - } - }elseif($u->info['dnow']!=$usr['dnow']) - { - $u->error = 'Персонаж находится в другой комнате [пещера]'; - }elseif($usr['online']error = 'Персонаж находится в реальном мире'; - }elseif($usr['room']!=$u->info['room']) - { - $u->error = 'Персонаж находится в другой комнате'; - }elseif($usr['battle']!=$u->info['battle']) - { - $u->error = 'Персонаж находится в поединке'; - }else{ - //кастуем - if(isset($po['magic_hpNow'])) { - mysql_query('UPDATE `stats` SET `hpNow` = `hpNow` + '.$po['magic_hpNow'].' WHERE `id` = "'.$usr['id'].'" LIMIT 1'); - } - - $itm['iznosNOW']++; - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - - // сообщение в чат - $sx = 'ый'; $sx2 = ''; - if($u->info['sex']==1) - { - $sx = 'ая'; $sx2 = 'а'; - } - $u->error = 'Свиток "'.$itm['name'].'" был успешно использован.'; - $rtxt = '[img[items/'.$itm['img'].']] Персонаж "'.$u->info['login'].'" использовал'.$sx2.' "'.$itm['name'].'" на "'.$usr['login'].'".'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - } - }elseif($itm['magic_inci']=='cureMP') { - //Реген НР,MP - $po = $u->lookStats($itm['data']); - if($u->info['battle'] > 0) { - //используем свиток в поединке - $bu = mysql_fetch_array(mysql_query('SELECT * FROM `spells` WHERE `btl` = "'.$u->info['battle'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1')); - if(isset($bu['id'])) { - $u->error = 'Нельзя использовать свиток каждый ход...'; - }elseif($btl->info['noeff'] > 0 ) { - $u->error = 'Запрет на использования свитков восстановления'; - }elseif(($usr['battle']==$u->info['battle'] && ($u->info['team']==$usr['team'] && ($po['magic_hpNow']>0 || $po['magic_mpNow']>0))) && $usr['hpNow']>1 && $u->info['hpNow']>=1) { - //кастуем - if(isset($po['magic_mpNow'])) { - - mysql_query('INSERT INTO `spells` (`btl`,`uid`,`time`,`item_id`,`var`,`hod`) VALUES ( - "'.$u->info['battle'].'","'.$u->info['id'].'","'.time().'","'.$itm['item_id'].'","'.$itm['name'].'","1" - )'); - - $txt = $po['magic_mpNow']; - - if($btl->stats[$btl->uids[$usr['id']]]['mpAll']-$btl->stats[$btl->uids[$usr['id']]]['mpNow'] < $txt) { - $txt = floor($btl->stats[$btl->uids[$usr['id']]]['mpAll']-$btl->stats[$btl->uids[$usr['id']]]['mpNow']); - } - - $gdhh = round($txt/$btl->stats[$btl->uids[$usr['id']]]['mpAll']*5); - $gdhd = round($gdhh/$btl->users[$btl->uids[$usr['id']]]['tactic7']*100); - if( $gdhd > 100 ) { - $txt = floor($txt/100*$gdhd); - } - - if($btl->users[$btl->uids[$usr['id']]]['tactic7'] >= 1) { // поставить >= 1 , если требует дух - if($txt > 0) { - $btl->stats[$btl->uids[$usr['id']]]['mpNow'] += $txt; - $btl->users[$btl->uids[$usr['id']]]['tactic7'] -= $gdhh; - if($btl->users[$btl->uids[$usr['id']]]['tactic7'] < 0) { - $btl->users[$btl->uids[$usr['id']]]['tactic7'] = 0; - } - } - mysql_query('UPDATE `stats` SET `mpNow` = `mpNow` + '.$txt.', `tactic7` = "'.$btl->users[$btl->uids[$usr['id']]]['tactic7'].'" WHERE `id` = "'.$usr['id'].'" LIMIT 1'); - if($txt>0) { - $txt = '+'.$txt; - }elseif($txt==0){ - $txt = '--'; - } - } else { - $txt = '--'; - } - $lastHOD = mysql_fetch_array(mysql_query('SELECT * FROM `battle_logs` WHERE `battle` = "'.$u->info['battle'].'" ORDER BY `id_hod` DESC LIMIT 1')); - if(isset($lastHOD['id'])) - { - $btl->stats[$btl->uids[$usr['id']]]['mpNow'] = floor($btl->stats[$btl->uids[$usr['id']]]['mpNow']); - if($btl->stats[$btl->uids[$usr['id']]]['mpNow'] > $btl->stats[$btl->uids[$usr['id']]]['mpAll']) { - $btl->stats[$btl->uids[$usr['id']]]['mpNow'] = $btl->stats[$btl->uids[$usr['id']]]['mpAll']; - } - if($btl->stats[$btl->uids[$usr['id']]]['mpNow']<1) { - $btl->stats[$btl->uids[$usr['id']]]['mpNow'] = 0; - } - $id_hod = $lastHOD['id_hod']; - if($lastHOD['type']!=6) - { - $id_hod++; - } - $txt = ''.$txt.''; - if($u->info['id']==$usr['id']) { - if($u->info['sex']==1) { - $txt = '{u1} использовала "'.$itm['name'].'" на себя. '.$txt.' ['.$btl->stats[$btl->uids[$usr['id']]]['mpNow'].'/'.$btl->stats[$btl->uids[$usr['id']]]['mpAll'].'] (Мана)'; - }else{ - $txt = '{u1} использовал "'.$itm['name'].'" на себя. '.$txt.' ['.$btl->stats[$btl->uids[$usr['id']]]['mpNow'].'/'.$btl->stats[$btl->uids[$usr['id']]]['mpAll'].'] (Мана)'; - } - }else{ - if($u->info['sex']==1) { - $txt = '{u1} использовала "'.$itm['name'].'" на {u2}. '.$txt.' ['.$btl->stats[$btl->uids[$usr['id']]]['mpNow'].'/'.$btl->stats[$btl->uids[$usr['id']]]['mpAll'].'] (Мана)'; - }else{ - $txt = '{u1} использовал "'.$itm['name'].'" на {u2}. '.$txt.' ['.$btl->stats[$btl->uids[$usr['id']]]['mpNow'].'/'.$btl->stats[$btl->uids[$usr['id']]]['mpAll'].'] (Мана)'; - } - } - mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("'.time().'","'.$u->info['battle'].'","'.($id_hod).'","{tm1} '.$txt.'","login1='.$u->info['login'].'||t1='.$u->info['team'].'||login2='.$usr['login'].'||t2='.$usr['team'].'||time1='.time().'","","","","","6")'); - } - } - $itm['iznosNOW']++; - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - - // сообщение в лог боя - $sx = 'ый'; $sx2 = ''; - if($u->info['sex']==1) - { - $sx = 'ая'; $sx2 = 'а'; - } - $u->error = 'Свиток "'.$itm['name'].'" был успешно использован.'; - }else{ - $u->error = 'Нельзя использовать на данного персонажа'; - } - }elseif($u->info['dnow']!=$usr['dnow']) - { - $u->error = 'Персонаж находится в другой комнате [пещера]'; - }elseif($usr['online']error = 'Персонаж находится в реальном мире'; - }elseif($usr['room']!=$u->info['room']) - { - $u->error = 'Персонаж находится в другой комнате'; - }elseif($usr['battle']!=$u->info['battle']) - { - $u->error = 'Персонаж находится в поединке'; - }else{ - //кастуем - if(isset($po['magic_mpNow'])) { - mysql_query('UPDATE `stats` SET `mpNow` = `mpNow` + '.$po['magic_mpNow'].' WHERE `id` = "'.$usr['id'].'" LIMIT 1'); - } - - $itm['iznosNOW']++; - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - - // сообщение в чат - $sx = 'ый'; $sx2 = ''; - if($u->info['sex']==1) - { - $sx = 'ая'; $sx2 = 'а'; - } - $u->error = 'Свиток "'.$itm['name'].'" был успешно использован.'; - $rtxt = '[img[items/'.$itm['img'].']] Персонаж "'.$u->info['login'].'" использовал'.$sx2.' "'.$itm['name'].'" на "'.$usr['login'].'".'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - } - }elseif($itm['magic_inci']=='lech_1' or $itm['magic_inci']=='lech_2' or $itm['magic_inci']=='lech_3'){ - - if($u->info['battle'] > 0) { - //используем свиток в поединке - - }elseif($u->info['dnow']!=$usr['dnow']) - { - $u->error = 'Персонаж находится в другой комнате [пещера]'; - }elseif($usr['online']error = 'Персонаж находится в реальном мире'; - }elseif($usr['room']!=$u->info['room']) - { - $u->error = 'Персонаж находится в другой комнате'; - }elseif($usr['battle']!=$u->info['battle']) - { - $u->error = 'Персонаж находится в поединке'; - }else{ - - $travm = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid`="'.$usr['id'].'" and `id_eff`="4" and `delete`="0" ORDER BY `v1` DESC LIMIT 1')); - //$type_lechenie = $travm['v1']; - $itm['magic_inci'] = 'lech_'.$travm['v1']; - if($itm['magic_inci']=='lech_1'){ - $type_lechenie=1; // тип травмы котору лечим - $text_msg='"Легкой травмы"'; - $text_msg2 = 'легких'; - }elseif($itm['magic_inci']=='lech_2'){ - $type_lechenie=2; // тип травмы котору лечим - $text_msg='"Средней травмы"'; - $text_msg2 = 'средних'; - }elseif($itm['magic_inci']=='lech_3'){ - $type_lechenie=3; // тип травмы котору лечим - $text_msg='"Тяжелой травмы"'; - $text_msg2 = 'тяжелых'; - } - if($travm){ - $lech_aa = array( 0 , 2 , 3 , 4 ); - $travm_cep = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid`="'.$usr['id'].'" and `id_eff`="335" and `delete`="0" and `v1`="'.$type_lechenie.'" LIMIT 1')); - if( $travm_cep['timeUse'] < time() - 360 ) { - unset($travm_cep); - } - - $cep_users = explode(',',$travm_cep['data']); - $it_i = 0; - $it_no = 0; - $it_users = ''; - while( $it_i < count($cep_users) ) { - $it_u = $cep_users[$it_i]; - if( $it_u == $u->info['id'] ) { - $it_no = 1; - } - $it_u = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`level`,`align`,`clan`,`room` FROM `users` WHERE `id` = "'.$it_u.'" LIMIT 1')); - if( isset($it_u['id']) ) { - $it_users .= ', '.$it_u['login'].''; - } - $it_i++; - } - $it_u = ltrim($it_u,', '); - - $lech_co = round($travm_cep['x']+1); - if( $it_no == 1 ) { - $u->error = 'Вы уже один из лекарей'; - }elseif( $lech_co >= $lech_aa[$type_lechenie] ) { - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$travm['id'].'" LIMIT 1'); - $itm['iznosNOW']++; - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - - $rtxt = '[img[items/cure_g1.gif]] Лекарь "'.$u->info['login'].'" кинул цепь исцеления на игрока "'.$usr['login'].'".'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - - //mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$travm_cep['id'].'" LIMIT 1'); - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$usr['id'].'" AND `id_eff` = 4 AND `delete` = 0 LIMIT 1'); - - // сообщение в чат - $u->error = 'Персонаж излечен от '.$text_msg.'.'; - $rtxt = '[img[items/cure'.$type_lechenie.'.gif]] Лекари "'.$u->info['login'].$it_users.'" вылечили от '.$text_msg.' игрока "'.$usr['login'].'".'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - }else{ - if( isset($travm_cep['id']) ) { - $travm_cep['x']++; - $u->error = 'Вы присоединились к цепи исцеления для "'.$text_msg.'" (исцеление '.$text_msg2.' травм)'; - mysql_query('UPDATE `eff_users` SET `x` = "'.$travm_cep['x'].'" - ,`data` = "'.$travm_cep['data'].','.$u->info['id'].'" - WHERE `id` = "'.$travm_cep['id'].'" LIMIT 1'); - }else{ - $u->error = 'Вы создали цепь исцеления для "'.$text_msg.'" (исцеление '.$text_msg2.' травм), у остальных лекарей есть 5 минут, чтобы завершить заклинание'; - mysql_query('INSERT INTO `eff_users` - ( - `id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`user_use`,`v1`,`x` - ) VALUES ( - "335","'.$usr['id'].'","Цепь исцеления","'.$u->info['id'].'","28","'.time().'","'.$u->info['id'].'","'.$type_lechenie.'","1" - )'); - } - //mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$travm['id'].'" LIMIT 1'); - $itm['iznosNOW']++; - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - // сообщение в чат - $rtxt = '[img[items/cure_g1.gif]] Лекарь "'.$u->info['login'].'" кинул цепь исцеления на игрока "'.$usr['login'].'".'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - - } - }else{ - $u->error = 'Персонаж не имеет данной травмы.'; - } - - } - - - }elseif($itm['magic_inci']=='lech_free_1' or $itm['magic_inci']=='lech_free_2' or $itm['magic_inci']=='lech_free_3'){ - - if($u->info['battle'] > 0) { - //используем свиток в поединке - - }elseif($u->info['dnow']!=$usr['dnow']) - { - $u->error = 'Персонаж находится в другой комнате [пещера]'; - }elseif($usr['online']error = 'Персонаж находится в реальном мире'; - }elseif($usr['room']!=$u->info['room']) - { - $u->error = 'Персонаж находится в другой комнате'; - }elseif($usr['battle']!=$u->info['battle']) - { - $u->error = 'Персонаж находится в поединке'; - }else{ - - $travm = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid`="'.$usr['id'].'" and `id_eff`="4" and `delete`="0" ORDER BY `v1` DESC LIMIT 1')); - //$type_lechenie = $travm['v1']; - //$itm['magic_inci'] = 'lech_free_'.$travm['v1']; - if($itm['magic_inci']=='lech_free_1'){ - $type_lechenie=1; // тип травмы котору лечим - $text_msg='"Легкой травмы"'; - $text_msg2 = 'легких'; - }elseif($itm['magic_inci']=='lech_free_2'){ - $type_lechenie=2; // тип травмы котору лечим - $text_msg='"Средней травмы"'; - $text_msg2 = 'средних'; - }elseif($itm['magic_inci']=='lech_free_3'){ - $type_lechenie=3; // тип травмы котору лечим - $text_msg='"Тяжелой травмы"'; - $text_msg2 = 'тяжелых'; - } - if($travm['v1'] != $type_lechenie) { - $u->error = 'Неподходящий свиток для данной травмы.'; - }elseif($travm['id']){ - $lech_aa = array( 0 , 0 , 0 , 0 ); - $travm_cep = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid`="'.$usr['id'].'" and `id_eff`="335" and `delete`="0" and `v1`="'.$type_lechenie.'" LIMIT 1')); - if( $travm_cep['timeUse'] < time() - 360 ) { - unset($travm_cep); - } - - $cep_users = explode(',',$travm_cep['data']); - $it_i = 0; - $it_no = 0; - $it_users = ''; - while( $it_i < count($cep_users) ) { - $it_u = $cep_users[$it_i]; - if( $it_u == $u->info['id'] ) { - $it_no = 1; - } - $it_u = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`level`,`align`,`clan`,`room` FROM `users` WHERE `id` = "'.$it_u.'" LIMIT 1')); - if( isset($it_u['id']) ) { - $it_users .= ', '.$it_u['login'].''; - } - $it_i++; - } - $it_u = ltrim($it_u,', '); - - $lech_co = round($travm_cep['x']+1); - if( $it_no == 1 ) { - $u->error = 'Вы уже один из лекарей'; - }elseif( $lech_co >= $lech_aa[$type_lechenie] ) { - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$travm['id'].'" LIMIT 1'); - $itm['iznosNOW']++; - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - - //$rtxt = '[img[items/cure_g1.gif]] Лекарь "'.$u->info['login'].'" кинул цепь исцеления на игрока "'.$usr['login'].'".'; - //mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - - //mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$travm_cep['id'].'" LIMIT 1'); - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$usr['id'].'" AND `id_eff` = 4 AND `delete` = 0 LIMIT 1'); - - // сообщение в чат - $u->error = 'Персонаж излечен от '.$text_msg.'.'; - $rtxt = '[img[items/cure'.$type_lechenie.'.gif]] Лекари "'.$u->info['login'].$it_users.'" вылечили от '.$text_msg.' игрока "'.$usr['login'].'".'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - }else{ - if( isset($travm_cep['id']) ) { - $travm_cep['x']++; - $u->error = 'Вы присоединились к цепи исцеления для "'.$text_msg.'" (исцеление '.$text_msg2.' травм)'; - mysql_query('UPDATE `eff_users` SET `x` = "'.$travm_cep['x'].'" - ,`data` = "'.$travm_cep['data'].','.$u->info['id'].'" - WHERE `id` = "'.$travm_cep['id'].'" LIMIT 1'); - }else{ - $u->error = 'Вы создали цепь исцеления для "'.$text_msg.'" (исцеление '.$text_msg2.' травм), у остальных лекарей есть 5 минут, чтобы завершить заклинание'; - mysql_query('INSERT INTO `eff_users` - ( - `id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`user_use`,`v1`,`x` - ) VALUES ( - "335","'.$usr['id'].'","Цепь исцеления","'.$u->info['id'].'","28","'.time().'","'.$u->info['id'].'","'.$type_lechenie.'","1" - )'); - } - //mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$travm['id'].'" LIMIT 1'); - $itm['iznosNOW']++; - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - // сообщение в чат - $rtxt = '[img[items/cure_g1.gif]] Лекарь "'.$u->info['login'].'" кинул цепь исцеления на игрока "'.$usr['login'].'".'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - - } - }else{ - $u->error = 'Персонаж не имеет данной травмы.'; - } - - } - - - }else{ - if( $u->info['id'] != $usr['id'] ) { - $lsct = mysql_fetch_array(mysql_query('SELECT `id_eff` FROM `eff_users` WHERE `uid` = "'.$usr['id'].'" AND `delete` = "0" AND (`overType` = "'.$itm['overType'].'" OR (`id_eff` = "'.$itm['magic_inc'].'" AND "'.(0+$st['onlyOne']).'" != "0")) LIMIT 1')); - $lsct['good'] = 1; - //Касты - if( $lsct['id_eff'] >= 291 && $lsct['id_eff'] <= 296 && $itm['magic_inc'] >= 291 && $itm['magic_inc'] <= 296 ) { - if( $lsct['id_eff'] > $itm['magic_inc'] ) { - $u->error = 'На персонаже есть каст лучше этого!'; - $lsct['good'] = 0; - } - } - }else{ - $lsct['good'] = 1; - } - //просто используем на персонажа - if($lsct['good'] == 0) { - - } elseif($u->info['dnow'] != $usr['dnow']) { - $u->error = 'Персонаж находится в другой комнате [пещера]'; - }elseif($usr['room']==217 || $usr['room']==218 || $usr['room']==219) { - $u->error = 'Персонаж '.$u->microLogin($usr['id'],1).' находится в Общежитии!'; - } elseif($usr['inTurnir'] != 0 && ($u->info['inTurnir'] != $usr['inTurnir'])) { - $u->error = 'Участвует в турнире Башни смерти...'; - } elseif($usr['id']==$u->info['id'] && isset($st['useOnlyUser'])) { - $u->error = 'Нельзя использовать это заклятие на самого себя'; - }elseif($usr['online']error = 'Персонаж находится в реальном мире ;)'; - }elseif($usr['room']!=$u->info['room'] && $usr['battle'] != $u->info['battle'] && $u->info['battle'] > 0) - { - $u->error = 'Персонаж находится в другой комнате ['.$usr['room'].' '.$u->info['room'].']'; - }elseif($usr['admin']>0 && $u->info['admin']==0 && isset($st['useNoAdmin'])) - { - $u->error = 'Нельзя использовать данное заклятие на Ангелов'; - }elseif($usr['battle']>0 && $u->info['battle']!=$usr['battle']) - { - $u->error = 'Персонаж находится в бою'; - }elseif(($u->info['align']==2 || $u->info['haos']>time()) && isset($st['nohaos'])) - { - $u->error = 'Хаосники не могут использовать данное заклятие'; - }else{ - //добавляем эффект персонажу - $goodUse = 1; - // - $tpsm = 0; - if( $itm['useInBattle'] == 0 && $usr['battle'] > 0 ) { - //Нельзя юзать - $goodUse = 0; - }else{ - if( $usr['battle'] > 0 ) { - global $btl; - if($u->info['team'] != $btl->users[$btl->uids[$usr['id']]]['team'] ) { - if( $itm['useInBattle'] == 1 ) { - $goodUse = 0; - } - $tpsm = 2; - }elseif($u->info['team'] == $btl->users[$btl->uids[$usr['id']]]['team'] ) { - if( $itm['useInBattle'] == 2 ) { - $goodUse = 0; - } - $tpsm = 1; - } - } - } - // - if( $goodUse == 1 ) { - if(isset($st['onlyOne'])) - { - //убираем прошлые эффекты - $goodUse = 0; - $upd1 = mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$usr['id'].'" AND `delete` = "0" AND `id_eff` = "'.$itm['magic_inc'].'"'); - if($upd1) - { - $goodUse = 1; - } - } - if(isset($st['oneType'])) - { - //убираем прошлые эффекты - $goodUse = 0; - $upd2 = mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$usr['id'].'" AND `delete` = "0" AND `overType` = "'.$itm['overType'].'"'); - if($upd1) - { - $goodUse = 1; - } - } - } - // - if( $goodUse == 1 && $itm['magic_inc'] == 'unclone' ) { - //Переманить клона - if($usr['clone'] > 0 && $usr['hpNow'] >= 1 && $usr['team'] != $u->info['team']) { - mysql_query('UPDATE `stats` SET `team` = "'.$u->info['team'].'" WHERE `id` = "'.$usr['id'].'" LIMIT 1'); - if( $u->info['sex'] == 0 ) { - $txt_m = '{u1} переманил клона {u2} на свою сторону.'; - }else{ - $txt_m = '{u1} переманила клона {u2} на свою сторону.'; - } - $this->inBattleLog($txt_m,$usr); - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.($itm['iznosNOW'] + 1).'" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - mysql_query('UPDATE `items_users` SET `btl_zd` = "1" WHERE `item_id` = "'.$itm['item_id'].'" AND `inOdet` > 0 AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" LIMIT 20'); - $u->error = 'Вы успешно использовали заклинание "'.$itm['name'].'" на "'.$usr['login'].'"'; - }else{ - $u->error = 'Вы не можете переманивать данного персонажа...'; - } - }elseif($goodUse == 1) - { - $us = $this->add_eff($usr['id'],$itm['magic_inc']); - if($us[0]==1) { - $mmmid = mysql_insert_id(); - $itm['iznosNOW']++; - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - if($u->info['id']!=$usr['id']) - { - $u->addDelo(1,$u->info['id'],'"System.inventory": Персонаж использовал заклинание "'.$itm['name'].'" ('.$us[1].') на персонажа "'.$usr['login'].'" (id'.$usr['id'].') [itm:'.$itm['id'].'].',time(),$u->info['city'],'System.inventory',0,0); - $u->addDelo(1,$usr['id'],'"System.inventory": Персонаж "'.$u->info['login'].'" (id'.$u->info['id'].') использовал заклинание "'.$itm['name'].'" ('.$us[1].') на персонажа [itm:'.$itm['id'].'].',time(),$usr['city'],'System.inventory',0,0); - $u->error = 'Вы успешно использовали заклинание "'.$itm['name'].'" на персонажа "'.$usr['login'].'"
'.$us[1].''; - //$rtxt = '[img[items/'.$itm['img'].']] "'.$u->info['login'].'" использовал'.$sx.' заклинание "'.$itm['name'].'" на персонажа "'.$usr['login'].'".'; - //mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES ('1','".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - }else{ - $u->addDelo(1,$u->info['id'],'"System.inventory": Персонаж использовал заклинание "'.$itm['name'].'" ('.$us[1].') на персонажа самого себя [itm:'.$itm['id'].'].',time(),$u->info['city'],'System.inventory',0,0); - $u->error = 'Вы успешно использовали заклинание "'.$itm['name'].'" на самого себя
'.$us[1].''; - - //$rtxt = '[img[items/'.$itm['img'].']] "'.$u->info['login'].'" использовал'.$sx.' заклинание "'.$itm['name'].'" на себя.'; - //mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES ('1','".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - - } - // - if( $usr['battle'] > 0 ) { - //Заносим в лог - $txt_m = ''; - if( $u->info['sex'] == 0 ) { - if($u->info['id']!=$usr['id']) { - $txt_m .= '{u1} воспользовался магией "'.$itm['name'].'" на {u2}.'; - }else{ - $txt_m .= '{u1} воспользовался магией "'.$itm['name'].'" на себя.'; - } - }else{ - if($u->info['id']!=$usr['id']) { - $txt_m .= '{u1} воспользовалась магией "'.$itm['name'].'" на {u2}.'; - }else{ - $txt_m .= '{u1} воспользовалась магией "'.$itm['name'].'" на себя.'; - } - } - $this->inBattleLog($txt_m,$usr); - // - //По завершению боя эффект должен слетать - //306 - положительное , 307 - отрицательное - if( $tpsm == 1 ) { - //306 - mysql_query('UPDATE `eff_users` SET `v1` = "priem",`v2` = "306",`timeUse` = "77",`hod` = "-1",`img2` = "'.$itm['img'].'" WHERE `id` = "'.$mmmid.'" LIMIT 1'); - }elseif( $tpsm == 2 ) { - //307 - mysql_query('UPDATE `eff_users` SET `v1` = "priem",`v2` = "307",`timeUse` = "77",`hod` = "-1",`img2` = "'.$itm['img'].'" WHERE `id` = "'.$mmmid.'" LIMIT 1'); - } - // - } - // - $this->youuse++; - }else{ - $u->error = 'Не удалось использовать "'.$itm['name'].'" ... ('.$itm['magin_inc'].' and '.$itm['magic_inci'].', Эффект не добавлен)'; - } - }else{ - $u->error = 'Не удалось использовать "'.$itm['name'].'"'; - } - } - } - }else{ - $u->error = 'Персонаж "'.$jl.'" не найден в этом городе ('.$u->info['city'].')'; - } - }elseif(isset($st['useOnItem']) && $st['useOnItem']==1) - { - //используем на предмет - - }else{ - //на себя - $goodUse = 1; - if(($u->info['align']==2 || $u->info['haos']>time()) && isset($st['nohaos'])) - { - $goodUse = 0; - $u->error = 'Хаосники не могут использовать данное заклятие'; - } - - if($itm['magic_inci'] == 'sanich2') { - if($u->info['battle'] == 0) { - $sz = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "sanich2" AND `time` > '.(time()-4*60*60).' LIMIT 1',1); - if(!isset($sz['id'])) { - $slech=rand(0,4); - $goodUse = 0; - if($slech==1){ - //3083 Настойка на жучьей требухе - //$this->add_eff($u->info['id'],3083); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `id_eff` = 290 AND `delete` =0'); - $this->add_eff($u->info['id'],290); - $echotext = 'Настойка на жучьей требухе!'; - $u->error = 'Вы получили эфект от '.$echotext.''; - }elseif($slech==2){ - //5239 Амброзия подмастерья Владык - //$this->add_eff($u->info['id'],5239); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `id_eff` = 472 AND `delete` =0'); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `id_eff` = 470 AND `delete` =0'); - $this->add_eff($u->info['id'],472); - $echotext = 'Амброзия подмастерья Владык!'; - $u->error = 'Вы получили эфект от '.$echotext.''; - }elseif($slech==3){ - //5069 Амброзия Скучающих Владык - //$this->add_eff($u->info['id'],470); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `id_eff` = 472 AND `delete` =0'); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `id_eff` = 470 AND `delete` =0'); - $this->add_eff($u->info['id'],470); - $echotext = 'Амброзия Скучающих Владык!'; - $u->error = 'Вы получили эфект от '.$echotext.''; - }elseif($slech==4){ - //1463 Звездное Сияние - //$this->add_eff($u->info['id'],1463); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `id_eff` = 35 AND `delete` =0'); - $this->add_eff($u->info['id'],35); - $echotext = 'Звездное Сияние!'; - $u->error = 'Вы получили эфект от '.$echotext.''; - }else{ - $slech=1; - - $echotext = 'Не удалось прочитать страницу!'; - $u->error = ' '.$echotext.' '; - } - - $itm['iznosNOW'] += $slech; - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - $u->addAction(time(),'sanich2',$slech); - - if($u->info['sex'] == 1) { - $rtxt = '[img[items/'.$itm['img'].']] "'.$u->info['login'].'" использовала "'.$itm['name'].' Саныча" и получила эффект '.$echotext.' травмы.'; - }else{ - $rtxt = '[img[items/'.$itm['img'].']] "'.$u->info['login'].'" использовал "'.$itm['name'].' Саныча" и получил эффект '.$echotext.' травмы.'; - } - - - - /* - $slech = 0; - $strm = mysql_fetch_array(mysql_query('SELECT `id`,`v1` FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `id_eff` = 4 AND `delete` = "0" LIMIT 1')); - if(isset($strm['id'])) { - if($strm['v1'] == 1) { - $slech = 1; - }elseif($strm['v1'] == 2) { - $slech = 2; - }elseif($strm['v1'] == 3) { - $slech = 3; - } - } - if($slech > 0) { - - $goodUse = 0; - - $slf = 'легкой'; - if($slech == 2) { - $slf = 'средней'; - }elseif($slech == 3) { - $slf = 'тяжелой'; - } - - if($u->info['sex'] == 1) { - $rtxt = '[img[items/'.$itm['img'].']] "'.$u->info['login'].'" использовала "'.$itm['name'].' Саныча" и исцеласб от '.$slf.' травмы.'; - }else{ - $rtxt = '[img[items/'.$itm['img'].']] "'.$u->info['login'].'" использовал "'.$itm['name'].' Саныча" и исцелился от '.$slf.' травмы.'; - } - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$strm['id'].'" LIMIT 1'); - $u->error = 'Вы успешно исцелились от '.$slf.' травмы.'; - $itm['iznosNOW'] += $slech; - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - $u->addAction(time(),'sanich2',$slech); - }else{ - $u->error = 'У персонажа нет физических увечий которые можно излечить'; - }*/ - - }else{ - $u->error = 'Задержка использования '.$u->timeOut(($sz['time']+4*60*60)-time()).'.'; - } - }else{ - $u->error = 'Невозможно использовать в бою'; - } - - }elseif($itm['magic_inci'] == 'sanich1' && $u->info['battle'] > 0) { - - $sz = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "sanich1" AND `time` > '.(time()-6*60).' LIMIT 1',1); - if(!isset($sz['id'])) { - $goodUse = 0; - $u->error = 'Вы успешно использовали "'.$itm['name'].'"'; - $z = 1; - while($z <= 5) { - $u->info['tactic'.$z]++; - if($u->info['tactic'.$z] > 25) { - $u->info['tactic'.$z] = 25; - }elseif($u->info['tactic'.$z] < 0) { - $u->info['tactic'.$z] = 0; - } - $z++; - } - if($u->info['sex'] == 1) { - $this->inBattleLog('{u1} использовала "'.$itm['name'].' Саныча".'); - }else{ - $this->inBattleLog('{u1} использовал "'.$itm['name'].' Саныча".'); - } - mysql_query('UPDATE `stats` SET `tactic1` = "'.$u->info['tactic1'].'",`tactic2` = "'.$u->info['tactic2'].'",`tactic3` = "'.$u->info['tactic3'].'",`tactic4` = "'.$u->info['tactic4'].'",`tactic5` = "'.$u->info['tactic5'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $itm['iznosNOW']++; - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - $u->addAction(time(),'sanich1',$u->info['battle']); - }else{ - $u->error = 'Задержка использования '.$u->timeOut(($sz['time']+6*60)-time()).'.'; - } - - }elseif($itm['magic_inci'] == 'sanich3' && $u->info['battle'] > 0) { - - $sz = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "sanich3" AND `time` > '.(time()-3*60*60).' LIMIT 1',1); - if(!isset($sz['id'])) { - - $usr = mysql_fetch_array(mysql_query('SELECT `u`.`id`,`u`.`level`,`s`.`hpNow`,`s`.`team`,`u`.`login`,`u`.`sex` FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `u`.`id` = "'.$u->info['enemy'].'" AND `u`.`battle` = "'.$u->info['battle'].'" LIMIT 1')); - if(isset($usr['id']) && $usr['hpNow'] >= 1) { - $iznslvl = $usr['level']; - - $goodUse = 0; - $u->error = 'Вы успешно использовали "'.$itm['name'].'" на '.$usr['login'].''; - - if($u->info['sex'] == 1) { - $this->inBattleLog('{u1} использовала "'.$itm['name'].' Саныча" на {u2}.',$usr); - }else{ - $this->inBattleLog('{u1} использовал "'.$itm['name'].' Саныча" на {u2}.',$usr); - } - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$usr['hpNow'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `hpNow` = "'.$u->stats['hpNow'].'" WHERE `id` = "'.$usr['id'].'" LIMIT 1'); - $itm['iznosNOW'] += $iznslvl; - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - $u->addAction(time(),'sanich3',$u->info['battle']); - }else{ - $u->error = 'Нет подходящего противника'; - } - - }else{ - $u->error = 'Задержка использования '.$u->timeOut(($sz['time']+3*60*60)-time()).'.'; - } - - }elseif($itm['magic_inci']=='lech') - { - $goodUse = 0; - if($u->info['level']>=2 and $u->info['level']<=13){ - $travm = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid`="'.$u->info['id'].'" and `id_eff`="4" and `delete`="0" LIMIT 1')); - if($travm) { - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$travm['id'].'" LIMIT 1'); - $itm['iznosNOW']++; - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - }else{ - $u->error = 'У вас нету травмы.'; - } - }else{ - $u->error = 'Ваш уровень не подходит для использования свитка.'; - } - } - - - if($goodUse==1) - { - - $upd1 = 1; - $upd2 = 1; - //добавляем эффект персонажу - if(isset($st['onlyOne'])) - { - //убираем прошлые эффекты - $goodUse = 0; - $upd1 = mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `id_eff` = "'.$itm['magic_inc'].'"'); - if($upd1) - { - $goodUse = 1; - } - } - if(isset($st['oneType'])) - { - //убираем прошлые эффекты - $goodUse = 0; - $upd2 = mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `overType` = "'.$itm['overType'].'"'); - if($upd1) - { - $goodUse = 1; - } - } - - if($itm['magic_inci']=='unclone') - { - //Свиток клонирования - if( $u->info['hpNow'] < 1 ) { - $u->error = 'Вам не удалось переманить клона...'; - }elseif( $u->info['battle'] == 0 ) { - $u->error = 'Можно использовать только в поединке...'; - }else{ - //Преманиваем - $u->error = 'Переманили...'; - } - }elseif($itm['magic_inci']=='cloneMe') - { - //Свиток клонирования - if( true == false ) { - $u->error = 'Свитки клонирования запрещены в нашем проекте.'; - }elseif( $u->info['hpNow'] < 1 ) { - $u->error = 'Вы успешно клонировали свой труп ;)'; - }elseif( $u->info['battle'] == 0 ) { - $u->error = 'Можно использовать только в поединке...'; - }else{ - $bot_cou = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `users` WHERE `login` LIKE "%'.$u->info['login'].' (клон%" AND `battle` = "'.$u->info['battle'].'" LIMIT 1')); - $bot_cou = $bot_cou[0]+1; - //Добавляем бота - $clone = array( - 'id' => $u->info['id'], - 'login' => $u->info['login'].' (клон '.$bot_cou.')', - 'level' => $u->info['level'], - 'city' => $u->info['city'], - 'cityreg' => $u->info['cityreg'], - 'name' => $u->info['name'], - 'sex' => $u->info['sex'], - 'deviz' => $u->info['deviz'], - 'hobby' => $u->info['hobby'], - 'time_reg' => $u->info['time_reg'], - 'obraz' => $u->info['obraz'], - 'stats' => $u->info['stats'], - 'upLevel' => $u->info['upLevel'], - 'priems' => $u->info['priems'], - 'loclon' => true, - 'inTurnir' => $u->info['inTurnir'] - ); - $bot = $u->addNewbot(1,NULL,$clone,NULL,true); - if( $bot > 0 ) { - mysql_query('UPDATE `stats` SET `team` = "'.$u->info['team'].'",`hpNow` = "'.$u->stats['hpNow'].'",`mpNow` = "'.$u->stats['mpNow'].'" WHERE `id` = "'.$bot.'" LIMIT 1'); - mysql_query('UPDATE `users` SET `battle` = "'.$u->info['battle'].'" WHERE `id` = "'.$bot.'" LIMIT 1'); - //Доабвляем лог - if( $u->info['sex'] == 0 ) { - $txt_m = '{u1} использовал "'.$itm['name'].'" и породил клона.'; - }else{ - $txt_m = '{u1} использовала "'.$itm['name'].'" и породила клона.'; - } - $this->inBattleLog($txt_m,NULL); - if( $u->info['sex'] == 0 ) { - $txt_m = ''.$u->info['login'].' (клон '.$bot_cou.')['.$u->info['level'].'] вмешался в поединок!'; - }else{ - $txt_m = ''.$u->info['login'].' (клон '.$bot_cou.')['.$u->info['level'].'] вмешалась в поединок!'; - } - $this->inBattleLog($txt_m,$usr_m); - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.($itm['iznosNOW'] + 1).'" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - mysql_query('UPDATE `items_users` SET `btl_zd` = "1" WHERE `item_id` = "'.$itm['item_id'].'" AND `inOdet` > 0 AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" LIMIT 20'); - $u->error = 'Заклятие "'.$itm['name'].'" было успешно использовано'; - }else{ - $u->error = 'Неудалось использовать заклятие...'; - } - unset($txt_m,$usr_m,$clone,$bot_cou,$bot); - } - - } elseif($itm['magic_inci'] == 'scan') { - if($u->info['inTurnir'] != 0) { - $sp = mysql_query('SELECT `st`.*, `u`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `inTurnir` = "'.$u->info['inTurnir'].'"'); - while($pl = mysql_fetch_array($sp)) { - $rrm = mysql_fetch_array(mysql_query('SELECT * FROM `bs_map` WHERE `x` = "'.$pl['x'].'" AND `y` = "'.$pl['y'].'"')); - $trnt .= $pl['login'].' Комната : '.$rrm['name'].', '; - } - $trnt = rtrim($trnt,', '); - $it_ = $u->addItem(2435, $u->info['id'], 'noodet=1|noremont=1|sudba='.$u->info['login'].''); - mysql_query('UPDATE `items_users` SET `use_text` = 500 WHERE `id` = "'.$it_.'" LIMIT 1'); - mysql_query('INSERT INTO `items_text` (`item_id`,`time`,`login`,`text`,`city`,`x`,`type`) VALUES ("'.$it_.'","'.time().'","","'.mysql_real_escape_string($trnt).'","'.$u->info['city'].'","1","1")'); - mysql_query('DELETE FROM `items_users` WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - $u->error = 'Вы получили выписку...'; - - } else { - $u->error = 'Используется только в Башне смерти...'; - } - }elseif($itm['magic_inci']=='tactic') { - //Выдаем тактику - if( $u->stats['hpNow'] >= 1 ) { - - $bu = mysql_fetch_array(mysql_query('SELECT * FROM `tactic` WHERE `btl` = "'.$u->info['battle'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1')); - if(isset($bu['id'])) { - $u->error = 'Нельзя использовать свиток каждый ход...'; - }else{ - // - mysql_query('INSERT INTO `tactic` (`btl`,`uid`,`time`,`item_id`,`var`,`hod`) VALUES ("'.$u->info['battle'].'","'.$u->info['id'].'","'.time().'","'.$itm['item_id'].'","'.$itm['name'].'","1")'); - // - mysql_query('INSERT INTO `battle_actions` (`uid`,`btl`,`time`,`vars`,`vals`) VALUES ( - "'.$u->info['id'].'","'.$u->info['battle'].'","'.time().'","use_cast_tactic","" - )'); - $u->info['tactic'.$st['addtac']] += $st['addtacv']; - mysql_query('UPDATE `stats` SET `tactic'.$st['addtac'].'` = "'.$u->info['tactic'.$st['addtac']].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - //Доабвляем лог - if( $u->info['sex'] == 0 ) { - $txt_m = '{u1} применил заклинание "'.$itm['name'].'".'; - }else{ - $txt_m = '{u1} применила заклинание "'.$itm['name'].'".'; - } - $this->inBattleLog($txt_m,NULL); - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.($itm['iznosNOW'] + 1).'" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - $u->error = 'Заклятие "'.$itm['name'].'" было успешно использовано'; - } - }else{ - $u->error = 'Вы погибли...'; - } - }elseif($itm['magic_inci']=='add_animal') - { - if($u->info['animal']>0) - { - $u->error = 'Не удалось использовать "'.$itm['name'].'", у Вас уже есть зверь.'; - }else{ - $anm = array('type'=>1,'name'=>'','obraz'=>'','stats'=>'','sex'=>0); - - //Выбираем тип зверя - - if($itm['name'] == 'Призвать Сову') { - $anm['type'] = 2; - }elseif($itm['name'] == 'Призвать Светляка') { - $anm['type'] = 3; - }elseif($itm['name'] == 'Призвать Кота') { - $anm['type'] = 1; - }elseif($itm['name'] == 'Призвать Чертяку') { - - $anm['type'] = 4; - }elseif($itm['name'] == 'Призвать Свина') { - $anm['type'] = 6; - }elseif($itm['name'] == 'Призвать Пса') { - $anm['type'] = 5; - }elseif($itm['name'] == 'Призвать Дракона') { - $anm['type'] = 7; - - if($anm['type']==1) - { - $anm['name'] = 'Кот'; - $anm['sex'] = 0; - $anm['obraz'] = array(1=>'20864.gif',2=>'21301.gif',3=>'21139.gif',4=>'20427.gif'); - $anm['stats'] = 's1=2|s2=5|s3=2|s4=5|rinv=40|m9=5|m6=10'; - }elseif($anm['type']==7) - { - $anm['name'] = 'Дракон'; - $anm['sex'] = 0; - $anm['obraz'] = array(1=>'21338_pgtpdbx.gif'); - $anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10'; - } - }elseif($anm['type']==2) - { - $anm['name'] = 'Сова'; - $anm['sex'] = 1; - $anm['obraz'] = array(1=>'21415.gif',2=>'21722.gif',3=>'21550.gif'); - $anm['stats'] = 's1=2|s2=2|s3=5|s4=5|rinv=40|m9=5|m6=10'; - }elseif($anm['type']==3) - { - $anm['name'] = 'Светляк'; - $anm['sex'] = 0; - $anm['obraz'] = array(1=>'22277.gif',2=>'22265.gif',3=>'22333.gif',4=>'22298.gif'); - $anm['stats'] = 's1=3|s2=10|s3=3|s4=4|rinv=40|m9=5|m6=10'; - }elseif($anm['type']==4) - { - $anm['name'] = 'Чертяка'; - $anm['sex'] = 0; - $anm['obraz'] = array(1=>'22177.gif',2=>'21976.gif',3=>'21877.gif'); - $anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10'; - }elseif($anm['type']==5) - { - $anm['name'] = 'Пес'; - $anm['sex'] = 0; - $anm['obraz'] = array(1=>'22352.gif',2=>'23024.gif',3=>'22900.gif',4=>'22501.gif',5=>'22700.gif'); - $anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10'; - }elseif($anm['type']==6) - { - $anm['name'] = 'Свин'; - $anm['sex'] = 0; - $anm['obraz'] = array(1=>'24000.gif',2=>'25000.gif',3=>'27000.gif',4=>'28000.gif'); - $anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10'; - } - $anm['obraz'] = $anm['obraz'][rand(1,count($anm['obraz']))]; - $anm['obraz'] = str_replace('.gif','',$anm['obraz']); - $anm['obraz'] = str_replace('.jpg','',$anm['obraz']); - $anm['obraz'] = str_replace('.png','',$anm['obraz']); - $ins = mysql_query('INSERT INTO `users_animal` (`type`,`name`,`uid`,`obraz`,`stats`,`sex`) VALUES ("'.$anm['type'].'","'.$anm['name'].'","'.$u->info['id'].'","'.$anm['obraz'].'","'.$anm['stats'].'","'.$anm['sex'].'")'); - if($ins) - { - - $u->info['animal'] = mysql_insert_id(); - mysql_query('UPDATE `users` SET `animal` = "'.$u->info['animal'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = 'Вы успешно использовали "'.$itm['name'].'" и помните - "Мы в ответе за тех, кого приручили".'; - $itm['iznosNOW']++; - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - $u->addDelo(1,$u->info['id'],'"System.inventory": Персонаж использовал заклинание "'.$itm['name'].'" ('.$us[1].') [itm:'.$itm['id'].'].',time(),$u->info['city'],'System.inventory',0,0); - }else{ - $u->error = 'Не удалось использовать "'.$itm['name'].'", что-то здесь не так ...'; - } - } - }elseif($goodUse == 1) - { - if($itm['magic_inc'] == '') { - $itm['magic_inc'] = $itm['magic_inci']; - } - $us = $this->add_eff($u->info['id'],$itm['magic_inc']); - if($us[0]==1) - { - $itm['iznosNOW']++; - mysql_query('UPDATE `items_users` SET `iznosNOW` = "'.$itm['iznosNOW'].'" WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - if($itm['inGroup'] > 0 && $itm['delete'] == 0) { - mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - $u->addDelo(1,$u->info['id'],'"System.inventory": Персонаж использовал заклинание "'.$itm['name'].'" ('.$us[1].') [itm:'.$itm['id'].'].',time(),$u->info['city'],'System.inventory',0,0); - $this->youuse++; - $u->error = 'Вы успешно использовали заклинание "'.$itm['name'].'"
'.$us[1].''; - //$rtxt = '[img[items/'.$itm['img'].']] "'.$u->info['login'].'" использовал'.$sx.' заклинание "'.$itm['name'].'" на себя.'; - //mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES ('1','".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','11','0','1')"); - }else{ - if($u->error != '') { - $u->error = 'Не удалось использовать "'.$itm['name'].'"...
'.$u->error; - }else{ - $u->error = 'Не удалось использовать "'.$itm['name'].'"...'; - } - } - }else{ - if($u->error != '') { - $u->error = 'Не удалось использовать "'.$itm['name'].'"
'.$u->error; - }else{ - $u->error = 'Не удалось использовать "'.$itm['name'].'"'; - } - } - } - //------------------------------ - } - } - if( $goodUse == 1 ) { - mysql_query('UPDATE `items_users` SET `lastUPD` = '.time().' WHERE `id` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - } - }else{ - if ($id==5555) - { - mysql_query('UPDATE `stats` SET `seff` = 0 WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = 'Эфекты развернуты'; - - }elseif ($id==7777){ - mysql_query('UPDATE `stats` SET `seff` = 1 WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = 'Эфекты свернуты'; - }else{ - $u->error = 'Предмет не найден в инвентаре'; - } - - } - } - - - public function add_eff($uid,$id,$is_no = NULL) - { - $g = array(0=>0,1=>''); - $eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "'.$id.'" LIMIT 1')); - - if($is_no != NULL) { - //добавляем эффект персонажу - if($eff['onlyOne'] > 0) - { - //убираем прошлые эффекты - $goodUse = 0; - $upd1 = mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$uid.'" AND `delete` = "0" AND `id_eff` = "'.$eff['id2'].'"'); - if($upd1) - { - $goodUse = 1; - } - } - if($st['oneType'] > 0) - { - //убираем прошлые эффекты - $goodUse = 0; - $upd2 = mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$uid.'" AND `delete` = "0" AND `overType` = "'.$eff['overType'].'"'); - if($upd2) - { - $goodUse = 1; - } - } - } - if($goodUse == 1 || $is_no == NULL) { - if(isset($eff['id2'])) - { - //$eff = $this->paguba($eff); - $n = $eff['mname']; - $d = $eff['mdata']; - $ins = mysql_query('INSERT INTO `eff_users` (`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`,`no_Ace`) VALUES ("'.$eff['oneType'].'","'.$eff['id2'].'","'.$uid.'","'.$n.'","'.time().'","'.$d.'","'.$eff['noAce'].'")'); - if($ins) - { - $g[0] = 1; - $g[1] = '...'; - } - } - } - return $g; - } - - //Проверка склонностей в поединке, куда вмешиваемся - public function testAlignAtack( $u1 , $u2 , $btl_test ) { - $r = true; - if( $btl_test['type'] != 500 && $btl_test['dn_id'] == 0 && $btl_test['team_win'] == -1 ) { - $u1 = mysql_fetch_array(mysql_query('SELECT `id`,`align` FROM `users` WHERE `id` = "'.mysql_real_escape_string($u1).'" LIMIT 1')); - $u2 = mysql_fetch_array(mysql_query('SELECT `id`,`team` FROM `stats` WHERE `id` = "'.mysql_real_escape_string($u2).'" LIMIT 1')); - $u1['align'] = floor($u1['align']); - $tm = $tm[$u1['team']]; - $no_align = array(); - if( $u1['align'] == 1 ) { - $no_align[3] = true; - }elseif( $u1['align'] == 3 ) { - $no_align[1] = true; - } - - $sp = mysql_query('SELECT `u`.`align`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON `st`.`id` = `u`.`id` WHERE `u`.`battle` = "'.$btl_test['id'].'" AND `st`.`team` != "'.$u2['team'].'"'); - while( $pl = mysql_fetch_array($sp) ) { - if( $no_align[floor($pl['align'])] == true ) { - $r = false; - } - } - } - return $r; - } - - //Проверка травмы - public function testTravma( $uid , $vals ) { - $r = false; - $tr_pl = mysql_fetch_array(mysql_query('SELECT `id`,`v1` FROM `eff_users` WHERE `id_eff` = 4 AND `uid` = "'.$uid.'" AND `delete` = "0" ORDER BY `v1` DESC LIMIT 1')); - if( isset($tr_pl['id']) && $tr_pl['v1'] >= $vals ) { - $r = true; - } - return $r; - } - - //создаем нападение на персонажа - public function atackUser($uid1, $uid2, $tm, $btl, $addExp = 0, $type = 0, $kulak = 0, $bsid = 0) { - global $u; - $usr = mysql_fetch_array(mysql_query('SELECT `u`.*,`s`.* FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `u`.`id` = `s`.`id` WHERE `u`.`id` = "'.$uid2.'" LIMIT 1')); - $btl_test = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "'.$btl.'" AND `team_win` = -1 LIMIT 1')); - //$u->info['clan'] - Мой $usr['clan'] - Противник // кланвар - $clan_test = mysql_fetch_array(mysql_query('SELECT * FROM `clan_wars` WHERE ((`clan1`="'.$u->info['clan'].'" AND `clan2`="'.$usr['clan'].'") OR (`clan2`="'.$u->info['clan'].'" AND `clan1`="'.$usr['clan'].'")) AND `time_finish` > "'.time().'" LIMIT 1')); - $good = 0; - //Эффекты из-за которых нельзя нападать - $efsno = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$uid2.'" - AND `name` LIKE "%Лепим снежок%" AND `delete` = "0" - LIMIT 1')); - //$check = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars`= "end_trup" AND `time` > "'.(time()-3*60*60).'" ORDER BY `actions`.`time` DESC LIMIT 1;')); - $check = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `id_eff` = 478 AND `uid` = "'.$u->info['id'].'" AND `delete` = 0 ORDER BY `overType` DESC LIMIT 1;')); - $check2 = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE (`id_eff` = 479 OR `id_eff` = 480 OR `id_eff` = 481) AND `uid` = "'.$usr['id'].'" AND `delete` = 0 ORDER BY `overType` DESC LIMIT 1;')); - /*if( $usr['no_ip'] == 'trupojor' && $usr['level'] != $u->info['level'] ) { - $u->error = 'Нельзя нападать на монстра этого уровня!';*/ - if( $usr['no_ip'] == 'trupojor' && $usr['level'] ==9 && $u->info['level']>9 ) { - $u->error = 'Нельзя нападать на монстра этого уровня!'; - }elseif( $usr['no_ip'] == 'trupojor' && $usr['level'] ==10 && ($u->info['level']<10 || $u->info['level']>11 )) { - $u->error = 'Нельзя нападать на монстра этого уровня!'; - }elseif( $ua['no_ip'] == 'trupojor' && isset($check['id']) ) { //&& $ua['level'] >9 - $u->error = 'Нельзя нападать на монстра чаще одного раза в 3 часа!'; - }elseif(isset($check2['id'])) { //&& $ua['level'] >9 - $u->error = 'Персонаж имеет защиту от нападения!'; - //}elseif( $u->info['level'] > $usr['level']+1 ) { - //$u->error = 'Вы слишком сильны для этого боя'; - }elseif( $usr['level']==8 && $usr['no_ip'] != 'trupojor') { - $u->error = 'На 8-е уровни нападать нельзя.'; - }elseif( $u->info['level'] != $usr['level'] && $usr['no_ip'] != 'trupojor' && !isset ($clan_test['id'])) { - $u->error = 'Нападать можно на персонажей только своего уровня!!!'; - }elseif( isset($btl_test['id']) && $btl_test['noatack'] > 0 ) { - $u->error = 'Поединок защищен магией! Вы не можете вмешаться!'; - }elseif($usr['level'] < 8) { - $u->error = 'Новички находятся под защитой Мироздателя...'; - }elseif($u->info['level'] < 8) { - $u->error = 'Тренируйтесь вам пока еще рано...'; - }elseif( isset($efsno['id']) && $efsno['delete'] > 0 ) { - $u->error = 'Невозможно напасть, противник чем-то занят...'; - }elseif($usr['admin']==1 && $u->info['admin'] == 0 ) { - $u->error = 'Уважайте хранителей...'; - }elseif($this->testTravma($uid2 , 3) == true) { - $u->error = 'Противник тяжело травмирован, нельзя напасть!'; - } elseif($this->testTravma($uid1 , 2) == true) { - $u->error = 'Вы травмированы, нельзя напасть!'; - } elseif($bsid != 0 && ($u->info['x'] != $usr['x'] || $u->info['y'] != $usr['y'] )) { - $u->error = 'Вы находитесь в разных комнатах...'; - } elseif($usr['clan'] != 0 && ($usr['clan'] == $u->info['clan']) && $u->info['admin'] == 0) { - $u->error = 'Чтите честь ваших сокланов.'; - } elseif($btl != 0 && $btl_test['smert'] == 1 && $type != 222) { - $u->error = 'Вы не можете вмешаться в этот кровавый поединок!'; - } elseif($btl == 0) { - $s01 = $u->getStats($uid1,0); - if($s01['hpNow'] < floor($s01['hpAll']/100*33) ) { - $u->error = 'Нельзя напасть, у противника не восстановилось здоровье'; - } else { - $addExp += $usr['bbexp']; - //effect ненападения - if( $usr['no_ip'] == 'trupojor') - { - mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","479","112","'.$u->info['id'].'","Защита от нападения","zashitatk=1","'.time().'")'); - } - //тут клан вар - - //************ - //нападаем на персонажа - $timewait=rand(1,3); - //===Удаление защиты от нападения в результате нападения пользователем - $dsl=mysql_query('SELECT * FROM `eff_users` WHERE (`id_eff` = 479 OR `id_eff` = 480 OR `id_eff` = 481) AND `uid` = "'.$u->info['id'].'" AND `delete` = 0 ORDER BY `overType` DESC;'); - while( $dpl = mysql_fetch_array($dsl)) - { - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$dpl['id'].'";'); - } - //======= - if ($type==222) // - { - $ins = mysql_query('INSERT INTO `battle` (`kulak`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`, `inTurnir`, `clan1`, `clan2`, `smert` ) VALUES ( - "'.$kulak.'", - "'.$u->info['city'].'", - "'.time().'", - "'.$u->info['login'].','.$usr['login'].'", - "'.(60*$timewait).'", - "99", - "0", - "0", - "50", - "9", - "'.$addExp.'", - "0", - "'.$bsid.'", - "'.$u->info['clan'].'", - "'.$usr['clan'].'", - "1" - )'); - } - elseif (isset ($clan_test['id'])) // - { - $ins = mysql_query('INSERT INTO `battle` (`kulak`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`, `inTurnir`, `clan1`, `clan2` ) VALUES ( - "'.$kulak.'", - "'.$u->info['city'].'", - "'.time().'", - "'.$u->info['login'].','.$usr['login'].'", - "'.(60*$timewait).'", - "250", - "0", - "0", - "50", - "9", - "'.$addExp.'", - "0", - "'.$bsid.'", - "'.$u->info['clan'].'", - "'.$usr['clan'].'")'); - } - else - { - $ins = mysql_query('INSERT INTO `battle` (`kulak`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`, `inTurnir`) VALUES ( - "'.$kulak.'", - "'.$u->info['city'].'", - "'.time().'", - "'.$u->info['login'].','.$usr['login'].'", - "'.(60*$timewait).'", - "'.$type.'", - "0", - "0", - "50", - "9", - "'.$addExp.'", - "0", "'.$bsid.'")'); - } - unset($timewait); - if($ins) - { - $btl_id = mysql_insert_id(); - //Обновляем НР и МР игрокам - if($s01['level']<=7) - { - $s01['tactic7'] = floor(10/$s01['hpAll']*$s01['hpNow']); - }elseif($s01['level']==8) - { - $s01['tactic7'] = floor(20/$s01['hpAll']*$s01['hpNow']); - }elseif($s01['level']==9) - { - $s01['tactic7'] = floor(30/$s01['hpAll']*$s01['hpNow']); - }elseif($s01['level']>=10) - { - $s01['tactic7'] = floor(40/$s01['hpAll']*$s01['hpNow']); - } - $s01 = array( 'hpAll' => $s01['hpAll'] , 'hpNow' => $s01['hpNow'] , 'mpAll' => $s01['mpAll'] , 'mpNow' => $s01['mpNow'] ); - $s02 = $u->getStats($uid2,0); - if($s02['level']<=7) - { - $s02['tactic7'] = floor(10/$s02['hpAll']*$s02['hpNow']); - }elseif($s02['level']==8) - { - $s02['tactic7'] = floor(20/$s02['hpAll']*$s02['hpNow']); - }elseif($s02['level']==9) - { - $s02['tactic7'] = floor(30/$s02['hpAll']*$s02['hpNow']); - }elseif($s02['level']>=10) - { - $s02['tactic7'] = floor(40/$s02['hpAll']*$s02['hpNow']); - } - - //Духовность, спасение - /*if( $s01['s7'] > 49 ) { - mysql_query(" - INSERT INTO `eff_users` ( `id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES - ( 22, '".$s01['id']."', 'Спасение', 'add_spasenie=1', 0, 77, 0, '".$s01['id']."', 0, 'priem', 324, 'preservation.gif', 1, -1, 'спасение', 0, 0, '', 0, 0, 0, 1, 0); - "); - } - if( $s02['s7'] > 49 ) { - mysql_query(" - INSERT INTO `eff_users` ( `id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES - ( 22, '".$s02['id']."', 'Спасение', 'add_spasenie=1', 0, 77, 0, '".$s02['id']."', 0, 'priem', 324, 'preservation.gif', 1, -1, 'спасение', 0, 0, '', 0, 0, 0, 1, 0); - "); - }*/ - // - - $s02 = array( 'hpAll' => $s02['hpAll'] , 'hpNow' => $s02['hpNow'] , 'mpAll' => $s02['mpAll'] , 'mpNow' => $s02['mpNow'] ); - - $upd2 = mysql_query('UPDATE `users` SET `battle`="'.$btl_id.'" WHERE `id` = "'.$uid1.'" OR `id` = "'.$uid2.'" LIMIT 2'); - mysql_query('UPDATE `stats` SET `lider` = "'.$btl_id.'",`tactic7` = "'.$s01['tactic7'].'",`hpNow` = "'.$s01['hpNow'].'",`mpNow` = "'.$s01['mpNow'].'",`team`="1",`zv` = "0" WHERE `id` = "'.$uid1.'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `lider` = "'.$btl_id.'",`tactic7` = "'.$s02['tactic7'].'",`hpNow` = "'.$s02['hpNow'].'",`mpNow` = "'.$s02['mpNow'].'",`team`="2",`zv` = "0" WHERE `id` = "'.$uid2.'" LIMIT 1'); - - if( $kulak > 0 || $btl_test['kulak'] > 0 ) { - mysql_query('UPDATE `items_users` SET `inOdet` = "0" WHERE ( `uid` = "'.$uid1.'" OR `uid` = "'.$uid2.'" ) AND `delete` = "0"'); - } - - $good = $btl_id; - if($bsid != 0) { - $bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "'.$u->info['inTurnir'].'" LIMIT 1')); - if($u->info['sex'] == 0) { - $text = ' {u1} напал на {u2} завязался бой »»'; - } else { - $text = ' {u1} напала на {u2} завязался бой »»'; - } - $usr_real = mysql_fetch_array(mysql_query('SELECT `id`, `login`, `align`, `clan`, `battle`, `level` FROM `users` WHERE (`inUser` = "'.$usr['id'].'" OR `id` = "'.$usr['id'].'") LIMIT 1')); - if(!isset($usr_real['id'])) { $usr_real = $usr; } - if(isset($usr_real['id'])) { - $usrreal = ''; - if($usr_real['align'] > 0) { $usrreal .= ''; } - if($usr_real['clan'] > 0) { $usrreal .= ''; } - $usrreal .= ''.$usr_real['login'].'['.$usr_real['level'].']'; - } else { - $usrreal = 'Невидимка[??]'; - } - $me_real = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "'.$u->info['id'].'" AND `login` = "'.$u->info['login'].'" LIMIT 1')); - if(isset($me_real['id'])) { - $mereal = ''; - if($me_real['align'] > 0) { $mereal .= ''; } - if($me_real['clan'] > 0) { $mereal .= ''; } - $mereal .= ''.$me_real['login'].'['.$me_real['level'].']'; - } else { - $mereal = 'Невидимка[??]'; - } - $text = str_replace('{u1}', $mereal, $text); - $text = str_replace('{u2}', $usrreal, $text); - mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( - "1", "'.mysql_real_escape_string($text).'", "'.time().'", "'.$bs['id'].'", "'.$bs['count'].'", "'.$bs['city'].'", - "'.round($bs['money']*0.85,2).'","'.$i.'")'); - unset($text, $usrreal, $mereal, $usr_real, $me_real); - } - } - } - }elseif( isset($btl_test['id']) && $btl_test['type'] == 500 && $usr['team'] == 1 ){ - $u->error = 'Нельзя сражаться на стороне монстров!'; - }elseif( isset($btl_test['id']) && $btl_test['type'] == 250 && $u->info['clan'] != $btl_test['clan1'] && $u->info['clan'] != $btl_test['clan2']){ - $u->error = 'Нельзя попасть в клановые бои - если вы неявляетесь представителем данных кланов!!!'; - }elseif( isset($btl_test['id']) && $btl_test['invis'] > 0 ){ - $u->error = 'Нельзя вмешиваться в невидимый бой!'; - }elseif( $btl_test['noatack'] > 0 ) { - $u->error = 'В этот поединок нельзя вмешиваться!'; - }else{ - - //вмешиваемся в бой - //effect ненападения - if( $usr['no_ip'] == 'trupojor') - { - mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","479","112","'.$u->info['id'].'","Защита от нападения","zashitatk=1","'.time().'")'); - } - $upd = mysql_query('UPDATE `users` SET `battle`="'.$btl.'" WHERE `id` = "'.$uid1.'" LIMIT 1'); - if($upd) - { - - if( $kulak > 0 || $btl_test['kulak'] > 0 ) { - mysql_query('UPDATE `items_users` SET `inOdet` = "0" WHERE `uid` = "'.$uid1.'" AND `delete` = "0"'); - } - - $uid1st = $u->getStats($uid1); - $uid1u = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`level`,`clan`,`align`,`sex` FROM `users` WHERE `id` = "'.$uid1.'" LIMIT 1')); - - if($uid1u['level']<=7) - { - $uid1st['tactic7'] = floor((10+$uid1st['s7'])/$uid1st['hpAll']*$uid1st['hpNow']); - }elseif($uid1u['level']==8) - { - $uid1st['tactic7'] = floor((20+$uid1st['s7'])/$uid1st['hpAll']*$uid1st['hpNow']); - }elseif($uid1u['level']==9) - { - $uid1st['tactic7'] = floor((30+$uid1st['s7'])/$uid1st['hpAll']*$uid1st['hpNow']); - }elseif($uid1u['level']>=10) - { - $uid1st['tactic7'] = floor((40+$uid1st['s7'])/$uid1st['hpAll']*$uid1st['hpNow']); - }else{ - $uid1st['tactic7'] = floor((10+$uid1st['s7'])/$uid1st['hpAll']*$uid1st['hpNow']); - } - - //Духовность, спасение - if( $uid1st['s7'] > 49 ) { - mysql_query('UPDATE `eff_users` SET `delete`="'.time().'" WHERE `uid` = "'.$uid1st['id'].'" AND `overType` = 101 AND `delete` = 0'); - mysql_query(" - INSERT INTO `eff_users` ( `id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES - ( 22, '".$uid1st['id']."', 'Спасение', 'add_spasenie=1', 101, 77, 0, '".$uid1st['id']."', 0, 'priem', 324, 'preservation.gif', 1, -1, 'спасение', 0, 0, '', 0, 0, 0, 1, 0); - "); - } - - - $btxt = ''; - if( $uid1u['align'] > 0 ) { - $btxt = $btxt.''; - } - if( $uid1u['align2'] > 0 ) { - $btxt = $btxt.''; - } - if( $uid1u['clan'] > 0 ) { - $btxt = $btxt.''; - } - $btxt = $btxt.'{u1}['.$uid1u['level'].']'; - if( $uid1u['sex'] == 1 ) { - $btxt = $btxt.' вмешалась в поединок.'; - }else{ - $btxt = $btxt.' вмешался в поединок.'; - } - - if( $kulak > 0 ) { - $btxt .= ' (Кулачное нападение)'; - } - - $lastHOD = mysql_fetch_array(mysql_query('SELECT * FROM `battle_logs` WHERE `battle` = "'.$btl.'" ORDER BY `id_hod` DESC LIMIT 1')); - if(isset($lastHOD['id'])) { - $id_hod = $lastHOD['id_hod']; - if($lastHOD['type']!=6) { - $id_hod++; - } - mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("'.time().'","'.$btl.'","'.($id_hod).'","{tm1} '.$btxt.'","login1='.$uid1st['login'].'||t1='.$uid1st['team'].'||login2='.$uid1st['login'].'||t2='.$uid1st['team'].'||time1='.time().'","","","","","6")'); - } - - // Бафф Зверя animal_bonus --------------------------------- - if($u->info['animal'] > 0) { - $a = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal` WHERE `uid` = "'.$u->info['id'].'" AND `id` = "'.$u->info['animal'].'" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); - if(isset($a['id'])) { - if($a['eda']>=1) { - $anl = mysql_fetch_array(mysql_query('SELECT `bonus` FROM `levels_animal` WHERE `type` = "'.$a['type'].'" AND `level` = "'.$a['level'].'" LIMIT 1')); - $anl = $anl['bonus']; - - $tpa = array(1=>'cat',2=>'owl',3=>'wisp',4=>'demon',5=>'dog',6=>'pig',7=>'dragon'); - $tpa2 = array(1=>'Кота',2=>'Совы',3=>'Светляка',4=>'Чертяки',5=>'Пса',6=>'Свина',7=>'Дракона'); - $tpa3 = array(1=>'Кошачья Ловкость',2=>'Интуиция Совы',3=>'Сила Стихий',4=>'Демоническая Сила',5=>'Друг',6=>'Полная Броня',7=>'Инферно'); - - mysql_query('UPDATE `eff_users` SET `delete`="'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `overType` = 100 AND `delete` = 0'); - mysql_query('INSERT INTO `eff_users` (`hod`,`v2`,`img2`,`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`v1`,`user_use`) VALUES ("-1","201","summon_pet_'.$tpa[$a['type']].'.gif",22,"'.$u->info['id'].'","'.$tpa3[$a['type']].' ['.$a['level'].']","'.$anl.'","100","77","priem","'.$u->info['id'].'")'); - - if ($a['type']==6) - { - if($a['level']==1 || $a['level']==2 || $a['level']==3){$zhp=50;} - elseif($a['level']==4){$zhp=75;} - elseif($a['level']==5 || $a['level']==6){$zhp=125;} - elseif($a['level']==7 || $a['level']==8){$zhp=150;} - elseif($a['level']==9){$zhp=200;}elseif($a['level']==10){$zhp=300;} - else {$zhp=0;} - $u->info['hpNow']+=$zhp; - mysql_query('UPDATE `stats` SET `hpNow` = "'.$u->info['hpNow'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - - /*$anl = $u->lookStats($anl); - - $vLog = 'time1='.time().'||s1='.$u->info['sex'].'||t1='.$u->info['team'].'||login1='.$u->info['login'].''; - $vLog .= '||s2=1||t2='.$u->info['team'].'||login2='.$a['name'].' (Зверь '.$u->info['login'].')'; - - $mas1 = array('time'=>time(),'battle'=>$btl,'id_hod'=>1,'text'=>'','vars'=>$vLog,'zona1'=>'','zonb1'=>'','zona2'=>'','zonb2'=>'','type'=>'1'); - - $ba = ''; - $i6 = 0; - while($i6items['add'])) { - if(isset($anl['add_'.$u->items['add'][$i6]])) { - if($anl['add_'.$u->items['add'][$i6]] > 0) { - $ba .= $u->is[$u->items['add'][$i6]].': +'.$anl['add_'.$u->items['add'][$i6]].', '; - } - } - $i6++; - } - $ba = trim($ba,', '); - if($ba == '') { - $ba = 'Эффект отсутсвует'; - } - */ - //$mas1['text'] = '{tm1} {u2} очнулся от медитации, и призвал заклятье "'.$tpa3[$a['type']].' ['.$a['level'].']" на {u1}. ('.$ba.')'; - //$nxtlg[count($nxtlg)] = $mas1; - //mysql_query('UPDATE `users_animal` SET `eda` = `eda` - 1 WHERE `id` = "'.$a['id'].'" LIMIT 1'); - //$btl->add_log($mas1); - //$btl->get_comment();*/ - }else{ - $u->send('',$u->info['room'],$u->info['city'],'',$u->info['login'],''.$a['name'].' нуждается в еде...',time(),6,0,0,0,1); - } - } - } - // Бафф Зверя animal_bonus --------------------------------- - $ltm = array(1=>2, 2=>1); - mysql_query('UPDATE `stats` SET `hpNow` = "'.$uid1st['hpNow'].'",`mpNow` = "'.$uid1st['mpNow'].'",`team`="'.$ltm[$tm].'",`tactic7`="'.(0+$uid1st['tactic7']).'" WHERE `id` = "'.$uid1.'" LIMIT 1'); - $good = $btl; - unset($uid1st); - if($bsid != 0) { - $bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "'.$u->info['inTurnir'].'" LIMIT 1')); - //$cloneuid=mysql_fetch_array(mysql_query('SELECT `uid` FROM `battle_users` WHERE `login` = "'.$u->info['login'].'" AND `battle` ="'.$btl.'" LIMIT 1')); // uid клона - //mysql_query('UPDATE `stats` SET `tactic7`= 10.000 WHERE `id` = "'.$cloneuid.'" LIMIT 1'); - if($u->info['sex'] == 0) { - $text = ' {u1} вмешался в поединок против {u2} »»'; - } else { - $text = ' {u1} вмешалась в поединок против {u2} »»'; - } - $usr_real = mysql_fetch_array(mysql_query('SELECT `id`, `login`, `align`, `clan`, `battle`, `level` FROM `users` WHERE `inUser` = "'.$usr['id'].'" LIMIT 1')); - if(!isset($usr_real['id'])) { $usr_real = $usr; } - if(isset($usr_real['id'])) { - $usrreal = ''; - if($usr_real['align'] > 0) { $usrreal .= ''; } - if($usr_real['clan'] > 0) { $usrreal .= ''; } - $usrreal .= ''.$usr_real['login'].'['.$usr_real['level'].']'; - } else { - $mereal = 'Невидимка[??]'; - } - $me_real = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "'.$u->info['id'].'" AND `login` = "'.$u->info['login'].'" LIMIT 1')); - if(isset($me_real['id'])) { - $mereal = ''; - if($me_real['align'] > 0) { $mereal .= ''; } - if($me_real['clan'] > 0) { $mereal .= ''; } - $mereal .= ''.$me_real['login'].'['.$me_real['level'].']'; - } else { - $mereal = 'Невидимка[??]'; - } - $text = str_replace('{u1}', $mereal, $text); - $text = str_replace('{u2}', $usrreal, $text); - mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( - "1", "'.mysql_real_escape_string($text).'", "'.time().'", "'.$bs['id'].'", "'.$bs['count'].'", "'.$bs['city'].'", - "'.round($bs['money']*0.85,2).'","'.$i.'")'); - unset($text,$usrreal,$mereal,$usr_real,$me_real); - } - } - } - return $good; - } - - //Нападение на центральной площади - public function magicCentralAttack() { - global $c, $code, $u, $re; - } -} - -$magic = new Magic; - -?> \ No newline at end of file diff --git a/_incl_data/class/__seasons.php b/_incl_data/class/__seasons.php index e91d3078..2e582ec1 100644 --- a/_incl_data/class/__seasons.php +++ b/_incl_data/class/__seasons.php @@ -1,35 +1,37 @@ array( 1 , '01' , 'Январь' , 'Январьский' ), - 2 => array( 2 , '02' , 'Февраль' , 'Февральский' ), - 3 => array( 3 , '03' , 'Март' , 'Мартовский' ), - 4 => array( 4 , '04' , 'Апрель' , 'Апрельский' ), - 5 => array( 5 , '05' , 'Май' , 'Майский' ), - 6 => array( 6 , '06' , 'Июнь' , 'Июньский' ), - 7 => array( 7 , '07' , 'Июль' , 'Июльский' ), - 8 => array( 8 , '08' , 'Август' , 'Августовский' ), - 9 => array( 9 , '09' , 'Сентябрь' , 'Сентябрьский' ), - 10 => array( 10 , '10' , 'Октябрь' , 'Октябрьский' ), - 11 => array( 11 , '11' , 'Ноябрь' , 'Ноябрьский' ), - 12 => array( 12 , '12' , 'Декабрь' , 'Декабрьский' ), - ); - - public static $date = array( ), $m = array( ); - - public static function data( $val ) { - self::$m = mysql_fetch_array(mysql_query('SELECT * FROM `sss_m` WHERE `id` = "'.mysql_real_escape_string((int)$val).'" LIMIT 1')); - if( self::$m['s'] != self::$date['m'] ) { - self::$m = array( ); - } - } - -} +class season +{ -?> \ No newline at end of file + public static $yy = [ + 1 => [1, '01', 'Январь', 'Январьский'], + 2 => [2, '02', 'Февраль', 'Февральский'], + 3 => [3, '03', 'Март', 'Мартовский'], + 4 => [4, '04', 'Апрель', 'Апрельский'], + 5 => [5, '05', 'Май', 'Майский'], + 6 => [6, '06', 'Июнь', 'Июньский'], + 7 => [7, '07', 'Июль', 'Июльский'], + 8 => [8, '08', 'Август', 'Августовский'], + 9 => [9, '09', 'Сентябрь', 'Сентябрьский'], + 10 => [10, '10', 'Октябрь', 'Октябрьский'], + 11 => [11, '11', 'Ноябрь', 'Ноябрьский'], + 12 => [12, '12', 'Декабрь', 'Декабрьский'], + ]; + + public static $date = [], $m = []; + + public static function data($val) + { + self::$m = Db::getRow('select * from sss_m where id = ?', [$val]); + if (self::$m['s'] != self::$date['m']) { + self::$m = []; + } + } + +} diff --git a/_incl_data/class/__user.php b/_incl_data/class/__user.php index 967e3cf3..a990e51c 100644 --- a/_incl_data/class/__user.php +++ b/_incl_data/class/__user.php @@ -24,25 +24,25 @@ function getdr($s, $v, $d) class user { private static $flag_one; - public $pokol = 2; //Акктуальное поколение предметов + public $pokol = 2; //Акктуальное поколение предметов public $ekrcast = [ - 310 => true, //Снадобье Забытых Мастеров - 33 => true, //Звездная Энергия - 34 => true, //Звездная Тяжесть - 35 => true, //Звездная РЎРёСЏРЅРёРµ - 42 => true, //Неуязвимость Оружию - 43 => true, //Неуязвимость Стихиям + 310 => true, //Снадобье Забытых Мастеров + 33 => true, //Звездная Энергия + 34 => true, //Звездная Тяжесть + 35 => true, //Звездная Сияние + 42 => true, //Неуязвимость Оружию + 43 => true, //Неуязвимость Стихиям 296 => true ]; public $aves = ['now' => 0, 'max' => 0], $rep, $tfer, $error2 = '', $room = [], $bank = [], $align_nm = [ - 1 => 'Свет', - 2 => 'Хаос', - 3 => 'РўСЊРјР°', - 7 => 'Нейтралитет' + 1 => 'Свет', + 2 => 'Хаос', + 3 => 'Тьма', + 7 => 'Нейтралитет' ], $mod_nm = [ 0 => [0 => ''], - 1 => ['1' => 'Свет', '1.1' => 'Паладин Поднебесья', '1.4' => 'Таможенный Паладин', '1.5' => 'Паладин Солнечной Улыбки', '1.6' => 'Рнквизитор', '1.7' => 'Паладин Огненной Зари', '1.75' => 'Паладин-Хранитель', '1.9' => 'Паладин Неба', '1.91' => 'Старший Паладин Неба', '1.92' => 'Ветеран Ордена', '1.99' => 'Верховный Паладин'], - 3 => ['3' => 'РўСЊРјР°', '3.01' => 'Тарман-Служитель', '3.05' => 'Тарман-Надсмотрщик', '3.06' => 'Каратель', '3.07' => 'Тарман-Убийца', '3.075' => 'Тарман-Хранитель', '3.09' => 'Тарман-Палач', '3.091' => 'Тарман-Владыка', '3.092' => 'Ветеран Армады', '3.99' => 'Тарман Патриарх'] + 1 => ['1' => 'Свет', '1.1' => 'Паладин Поднебесья', '1.4' => 'Таможенный Паладин', '1.5' => 'Паладин Солнечной Улыбки', '1.6' => 'Инквизитор', '1.7' => 'Паладин Огненной Зари', '1.75' => 'Паладин-Хранитель', '1.9' => 'Паладин Неба', '1.91' => 'Старший Паладин Неба', '1.92' => 'Ветеран Ордена', '1.99' => 'Верховный Паладин'], + 3 => ['3' => 'Тьма', '3.01' => 'Тарман-Служитель', '3.05' => 'Тарман-Надсмотрщик', '3.06' => 'Каратель', '3.07' => 'Тарман-Убийца', '3.075' => 'Тарман-Хранитель', '3.09' => 'Тарман-Палач', '3.091' => 'Тарман-Владыка', '3.092' => 'Ветеран Армады', '3.99' => 'Тарман Патриарх'] ]; public $btl_txt = '', $rgd = [0 => 0, 1 => 0], $error = '', @@ -52,13 +52,70 @@ class user $city_name2 = ['emeraldscity' => 'Emeraldscity', 'abandonedplain' => 'Abandonedplain', 'capitalcity' => 'Capitalcity', 'angelscity' => 'Angelscity', 'newcapitalcity' => 'Newcapitalcity', 'demonscity' => 'Demonscity', 'fallenearth' => 'FallenEarth', 'dreamscity' => 'Dreams City', 'suncity' => 'Sun City', 'devilscity' => 'Devils City'], $stats, $info, $map, $mapUsers, $is = [ - 'acestar' => 'Следующий каст будет критическим', 'spasenie' => 'Спасение после смерти', 'more_awards' => 'Повышеная награда %', 'exp' => 'Получаемый опыт (%)', 'align_bs' => 'Служитель закона', - 'nopryh' => 'РџСЂСЏРјРѕРµ поподание', 'puti' => 'Запрет перемещения', 'align' => 'Склонность', 'hpAll' => 'Уровень жизни (HP)', 'mpAll' => 'Уровень маны (РњP)', 'enAll' => 'Уровень энергии', 'sex' => 'РџРѕР»', 'lvl' => 'Уровень', 's1' => 'Сила', 's2' => 'Ловкость', 's3' => 'Рнтуиция', 's4' => 'Выносливость', 's5' => 'Рнтеллект', 's6' => 'Мудрость', 's7' => 'Духовность', 's8' => 'Воля', 's9' => 'РЎРІРѕР±РѕРґР° РґСѓС…Р°', 's10' => 'Божественность', 's11' => 'Энергия', 'm1' => 'РњС„. критического удара (%)', 'm2' => 'РњС„. против критического удара (%)', 'm3' => 'РњС„. мощности РєСЂРёС‚. удара (%)', 'm21' => 'РњС„. абс. попадания (%)', 'm4' => 'РњС„. увертывания (%)', 'm5' => 'РњС„. против увертывания (%)', 'm6' => 'РњС„. контрудара (%)', 'm7' => 'РњС„. парирования (%)', 'm8' => 'РњС„. блока щитом (%)', 'm9' => 'РњС„. удара СЃРєРІРѕР·СЊ Р±СЂРѕРЅСЋ (%)', 'm14' => 'РњС„. абс. критического удара (%)', 'm15' => 'РњС„. абс. увертывания (%)', 'm16' => 'РњС„. абс. парирования (%)', 'm17' => 'РњС„. абс. контрудара (%)', 'm18' => 'РњС„. абс. блока щитом (%)', 'm19' => 'РњС„. абс. магический промах (%)', 'm20' => 'РњС„. удача (%)', 'a1' => 'Мастерство владения ножами, кинжалами', 'a2' => 'Мастерство владения топорами, секирами', 'a3' => 'Мастерство владения дубинами, молотами', 'a4' => 'Мастерство владения мечами', 'a5' => 'Мастерство владения магическими посохами', 'a6' => 'Мастерство владения луками', 'a7' => 'Мастерство владения арбалетами', 'aall' => 'Мастерство владения оружием', 'mall' => 'Мастерство владения магией стихий', 'm2all' => 'Мастерство владения магией', 'mg1' => 'Мастерство владения магией РѕРіРЅСЏ', 'mg2' => 'Мастерство владения магией РІРѕР·РґСѓС…Р°', 'mg3' => 'Мастерство владения магией РІРѕРґС‹', 'mg4' => 'Мастерство владения магией земли', 'mg5' => 'Мастерство владения магией Света', 'mg6' => 'Мастерство владения магией РўСЊРјС‹', 'mg7' => 'Мастерство владения серой магией', 'tj' => 'Тяжелая Р±СЂРѕРЅСЏ', 'lh' => 'Легкая Р±СЂРѕРЅСЏ', 'minAtack' => 'Минимальный СѓСЂРѕРЅ', 'maxAtack' => 'Максимальный СѓСЂРѕРЅ', 'm10' => 'РњС„. мощности СѓСЂРѕРЅР°', 'm11' => 'РњС„. мощности магии стихий', 'm11a' => 'РњС„. мощности магии', 'pa1' => 'РњС„. мощности колющего СѓСЂРѕРЅР°', 'pa2' => 'РњС„. мощности рубящего СѓСЂРѕРЅР°', 'pa3' => 'РњС„. мощности дробящего СѓСЂРѕРЅР°', 'pa4' => 'РњС„. мощности режущего СѓСЂРѕРЅР°', 'pm1' => 'РњС„. мощности магии РѕРіРЅСЏ', 'pm2' => 'РњС„. мощности магии РІРѕР·РґСѓС…Р°', 'pm3' => 'РњС„. мощности магии РІРѕРґС‹', 'pm4' => 'РњС„. мощности магии земли', 'pm5' => 'РњС„. мощности магии Света', 'pm6' => 'РњС„. мощности магии РўСЊРјС‹', 'pm7' => 'РњС„. мощности серой магии', 'za' => 'Защита РѕС‚ СѓСЂРѕРЅР°', 'zm' => 'Защита РѕС‚ магии стихий', 'zma' => 'Защита РѕС‚ магии', 'za1' => 'Защита РѕС‚ колющего СѓСЂРѕРЅР°', 'za2' => 'Защита РѕС‚ рубящего СѓСЂРѕРЅР°', 'za3' => 'Защита РѕС‚ дробящего СѓСЂРѕРЅР°', 'za4' => 'Защита РѕС‚ режущего СѓСЂРѕРЅР°', 'zm1' => 'Защита РѕС‚ магии РѕРіРЅСЏ', 'zm2' => 'Защита РѕС‚ магии РІРѕР·РґСѓС…Р°', 'zm3' => 'Защита РѕС‚ магии РІРѕРґС‹', 'zm4' => 'Защита РѕС‚ магии земли', 'zm5' => 'Защита РѕС‚ магии Света', 'zm6' => 'Защита РѕС‚ магии РўСЊРјС‹', 'zm7' => 'Защита РѕС‚ серой магии', 'magic_cast' => 'Дополнительный каст Р·Р° С…РѕРґ', 'pza' => 'Понижение защиты РѕС‚ СѓСЂРѕРЅР°', 'pzm' => 'Понижение защиты РѕС‚ магии', 'pza1' => 'Понижение защиты РѕС‚ колющего СѓСЂРѕРЅР°', 'min_heal_proc' => 'Эффект лечения (%)', 'notravma' => 'Защита РѕС‚ травм', 'yron_min' => 'Минимальный СѓСЂРѕРЅ', 'yron_max' => 'Максимальный СѓСЂРѕРЅ', 'zaproc' => 'Блокировка Физического РЈСЂРѕРЅР° (%)', 'zmproc' => 'Блокировка Магического РЈСЂРѕРЅР° (%)', 'zm2proc' => 'Защита РѕС‚ магии Р’РѕР·РґСѓС…Р° (%)', 'pza2' => 'Понижение защиты РѕС‚ рубящего СѓСЂРѕРЅР°', 'pza3' => 'Понижение защиты РѕС‚ дробящего СѓСЂРѕРЅР°', 'pza4' => 'Понижение защиты РѕС‚ режущего СѓСЂРѕРЅР°', 'pzm1' => 'Понижение защиты РѕС‚ магии РѕРіРЅСЏ', 'pzm2' => 'Понижение защиты РѕС‚ магии РІРѕР·РґСѓС…Р°', 'pzm3' => 'Понижение защиты РѕС‚ магии РІРѕРґС‹', 'pzm4' => 'Понижение защиты РѕС‚ магии земли', 'pzm5' => 'Понижение защиты РѕС‚ магии Света', 'pzm6' => 'Понижение защиты РѕС‚ магии РўСЊРјС‹', 'pzm7' => 'Понижение защиты РѕС‚ серой магии', 'speedhp' => 'Регенерация Р·РґРѕСЂРѕРІСЊСЏ (%)', 'speedmp' => 'Регенерация маны (%)', 'tya1' => 'Колющие атаки', 'tya2' => 'Рубящие атаки', 'tya3' => 'Дробящие атаки', 'tya4' => 'Режущие атаки', 'tym1' => 'Огненные атаки', 'mg2static_points' => 'Уровень заряда (Р’РѕР·РґСѓС…)', 'tym2' => 'Электрические атаки', 'tym3' => 'Ледяные атаки', 'tym4' => 'Земляные атаки', 'hpProc' => 'Уровень жизни (%)', 'mpProc' => 'Уровень маны (%)', 'tym5' => 'Атаки Света', 'tym6' => 'Атаки РўСЊРјС‹', 'tym7' => 'Серые атаки', 'min_use_mp' => 'Уменьшает расход маны', 'pog' => 'Поглощение СѓСЂРѕРЅР°', 'pog2' => 'Поглощение СѓСЂРѕРЅР°', 'pog2p' => 'Процент поглощение СѓСЂРѕРЅР°', 'pog2mp' => 'Цена поглощение СѓСЂРѕРЅР°', 'maxves' => 'Увеличивает рюкзак', 'bonusexp' => 'Увеличивает получаемый опыт', 'speeden' => 'Регенерация энергии (%)', - 'antm3' => 'РњС„. против мощности крита', 'repair_z' => 'Бесплатное извлечение заточек', 'repair_r' => 'Бесплатное извлечение СЂСѓРЅ', - 'yza' => 'Уязвимость физическому СѓСЂРѕРЅР° (%)', 'yzm' => 'Уязвимость магии стихий (%)', 'yzma' => 'Уязвимость магии (%)' - , 'yza1' => 'Уязвимость колющему СѓСЂРѕРЅР° (%)', 'yza2' => 'Уязвимость рубящему СѓСЂРѕРЅР° (%)', 'yza3' => 'Уязвимость дробящему СѓСЂРѕРЅР° (%)', 'yza4' => 'Уязвимость режущему СѓСЂРѕРЅР° (%)' - , 'yzm1' => 'Уязвимость магии РѕРіРЅСЏ (%)', 'yzm2' => 'Уязвимость магии РІРѕР·РґСѓС…Р° (%)', 'yzm3' => 'Уязвимость магии РІРѕРґС‹ (%)', 'yzm4' => 'Уязвимость магии земли (%)', 'yzm5' => 'Уязвимость магии (%)', 'yzm6' => 'Уязвимость магии (%)', 'yzm7' => 'Уязвимость магии (%)', 'rep' => 'Репутация Рыцаря' - , 'repair_discount' => 'РЎРєРёРґРєР° РЅР° ремонт вещей', 'hpVinos' => 'Бонус жизни', 'bronze' => 'Bronze Premium Account', 'silvers' => 'Silver Premium Account', 'gold' => 'Благодать Ангела', 'speed_dungeon' => 'Скорость передвижения РїРѕ подземельям', 'zona' => 'Дополнительная Р·РѕРЅР° атаки' + 'acestar' => 'Следующий каст будет критическим', 'spasenie' => 'Спасение после смерти', + 'more_awards' => 'Повышеная награда %', 'exp' => 'Получаемый опыт (%)', 'align_bs' => 'Служитель закона', + 'nopryh' => 'Прямое поподание', + 'puti' => 'Запрет перемещения', + 'align' => 'Склонность', + 'hpAll' => 'Уровень жизни (HP)', + 'mpAll' => 'Уровень маны (МP)', + 'enAll' => 'Уровень энергии', + 'sex' => 'Пол', + 'lvl' => 'Уровень', + 's1' => 'Сила', 's2' => 'Ловкость', 's3' => 'Интуиция', 's4' => 'Выносливость', + 's5' => 'Интеллект', 's6' => 'Мудрость', 's7' => 'Духовность', 's8' => 'Воля', + 's9' => 'Свобода духа', 's10' => 'Божественность', 's11' => 'Энергия', + 'm1' => 'Мф. критического удара (%)', 'm2' => 'Мф. против критического удара (%)', + 'm3' => 'Мф. мощности крит. удара (%)', 'm21' => 'Мф. абс. попадания (%)', 'm4' => 'Мф. увертывания (%)', + 'm5' => 'Мф. против увертывания (%)', 'm6' => 'Мф. контрудара (%)', 'm7' => 'Мф. парирования (%)', + 'm8' => 'Мф. блока щитом (%)', 'm9' => 'Мф. удара сквозь броню (%)', 'm14' => 'Мф. абс. критического удара (%)', + 'm15' => 'Мф. абс. увертывания (%)', 'm16' => 'Мф. абс. парирования (%)', 'm17' => 'Мф. абс. контрудара (%)', + 'm18' => 'Мф. абс. блока щитом (%)', 'm19' => 'Мф. абс. магический промах (%)', 'm20' => 'Мф. удача (%)', + 'a1' => 'Мастерство владения ножами, кинжалами', 'a2' => 'Мастерство владения топорами, секирами', + 'a3' => 'Мастерство владения дубинами, молотами', 'a4' => 'Мастерство владения мечами', + 'a5' => 'Мастерство владения магическими посохами', 'a6' => 'Мастерство владения луками', + 'a7' => 'Мастерство владения арбалетами', 'aall' => 'Мастерство владения оружием', + 'mall' => 'Мастерство владения магией стихий', 'm2all' => 'Мастерство владения магией', + 'mg1' => 'Мастерство владения магией огня', 'mg2' => 'Мастерство владения магией воздуха', + 'mg3' => 'Мастерство владения магией воды', 'mg4' => 'Мастерство владения магией земли', + 'mg5' => 'Мастерство владения магией Света', 'mg6' => 'Мастерство владения магией Тьмы', + 'mg7' => 'Мастерство владения серой магией', 'tj' => 'Тяжелая броня', 'lh' => 'Легкая броня', + 'minAtack' => 'Минимальный урон', 'maxAtack' => 'Максимальный урон', 'm10' => 'Мф. мощности урона', + 'm11' => 'Мф. мощности магии стихий', 'm11a' => 'Мф. мощности магии', 'pa1' => 'Мф. мощности колющего урона', + 'pa2' => 'Мф. мощности рубящего урона', 'pa3' => 'Мф. мощности дробящего урона', 'pa4' => 'Мф. мощности режущего урона', + 'pm1' => 'Мф. мощности магии огня', 'pm2' => 'Мф. мощности магии воздуха', 'pm3' => 'Мф. мощности магии воды', + 'pm4' => 'Мф. мощности магии земли', 'pm5' => 'Мф. мощности магии Света', 'pm6' => 'Мф. мощности магии Тьмы', + 'pm7' => 'Мф. мощности серой магии', 'za' => 'Защита от урона', 'zm' => 'Защита от магии стихий', + 'zma' => 'Защита от магии', 'za1' => 'Защита от колющего урона', 'za2' => 'Защита от рубящего урона', + 'za3' => 'Защита от дробящего урона', 'za4' => 'Защита от режущего урона', 'zm1' => 'Защита от магии огня', + 'zm2' => 'Защита от магии воздуха', 'zm3' => 'Защита от магии воды', 'zm4' => 'Защита от магии земли', + 'zm5' => 'Защита от магии Света', 'zm6' => 'Защита от магии Тьмы', 'zm7' => 'Защита от серой магии', + 'magic_cast' => 'Дополнительный каст за ход', 'pza' => 'Понижение защиты от урона', 'pzm' => 'Понижение защиты от магии', + 'pza1' => 'Понижение защиты от колющего урона', 'min_heal_proc' => 'Эффект лечения (%)', 'notravma' => 'Защита от травм', + 'yron_min' => 'Минимальный урон', 'yron_max' => 'Максимальный урон', 'zaproc' => 'Блокировка Физического Урона (%)', + 'zmproc' => 'Блокировка Магического Урона (%)', 'zm2proc' => 'Защита от магии Воздуха (%)', + 'pza2' => 'Понижение защиты от рубящего урона', 'pza3' => 'Понижение защиты от дробящего урона', + 'pza4' => 'Понижение защиты от режущего урона', 'pzm1' => 'Понижение защиты от магии огня', + 'pzm2' => 'Понижение защиты от магии воздуха', 'pzm3' => 'Понижение защиты от магии воды', + 'pzm4' => 'Понижение защиты от магии земли', 'pzm5' => 'Понижение защиты от магии Света', + 'pzm6' => 'Понижение защиты от магии Тьмы', 'pzm7' => 'Понижение защиты от серой магии', + 'speedhp' => 'Регенерация здоровья (%)', 'speedmp' => 'Регенерация маны (%)', 'tya1' => 'Колющие атаки', + 'tya2' => 'Рубящие атаки', 'tya3' => 'Дробящие атаки', 'tya4' => 'Режущие атаки', 'tym1' => 'Огненные атаки', + 'mg2static_points' => 'Уровень заряда (Воздух)', 'tym2' => 'Электрические атаки', 'tym3' => 'Ледяные атаки', + 'tym4' => 'Земляные атаки', 'hpProc' => 'Уровень жизни (%)', 'mpProc' => 'Уровень маны (%)', 'tym5' => 'Атаки Света', + 'tym6' => 'Атаки Тьмы', 'tym7' => 'Серые атаки', 'min_use_mp' => 'Уменьшает расход маны', 'pog' => 'Поглощение урона', + 'pog2' => 'Поглощение урона', 'pog2p' => 'Процент поглощение урона', 'pog2mp' => 'Цена поглощение урона', + 'maxves' => 'Увеличивает рюкзак', 'bonusexp' => 'Увеличивает получаемый опыт', 'speeden' => 'Регенерация энергии (%)', + 'antm3' => 'Мф. против мощности крита', 'repair_z' => 'Бесплатное извлечение заточек', + 'repair_r' => 'Бесплатное извлечение рун', + 'yza' => 'Уязвимость физическому урона (%)', 'yzm' => 'Уязвимость магии стихий (%)', 'yzma' => 'Уязвимость магии (%)', + 'yza1' => 'Уязвимость колющему урона (%)', 'yza2' => 'Уязвимость рубящему урона (%)', 'yza3' => 'Уязвимость дробящему урона (%)', + 'yza4' => 'Уязвимость режущему урона (%)', 'yzm1' => 'Уязвимость магии огня (%)', 'yzm2' => 'Уязвимость магии воздуха (%)', + 'yzm3' => 'Уязвимость магии воды (%)', 'yzm4' => 'Уязвимость магии земли (%)', 'yzm5' => 'Уязвимость магии (%)', + 'yzm6' => 'Уязвимость магии (%)', 'yzm7' => 'Уязвимость магии (%)', 'rep' => 'Репутация Рыцаря', + 'repair_discount' => 'Скидка на ремонт вещей', 'hpVinos' => 'Бонус жизни', 'bronze' => 'Bronze Premium Account', + 'silvers' => 'Silver Premium Account', 'gold' => 'Благодать Ангела', + 'speed_dungeon' => 'Скорость передвижения по подземельям', 'zona' => 'Дополнительная зона атаки' ]; public $items = [ 'tr' => ['sex', 'align', 'lvl', 's1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', 's10', 's11', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'mg1', 'mg2', 'mg3', 'mg4', 'mg5', 'mg6', 'mg7', 'mall', 'm2all', 'aall', 'rep', 'align_bs'], @@ -83,20 +140,20 @@ class user $test = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $id . '" AND `vars`= "day_quest" LIMIT 1')); $q = [ - '1' => 'Убийство Трупожоров', - '2' => 'Победы РІ хаотических Р±РѕСЏС…', - '3' => 'РЎРїСѓСЃРє РІ Подземелия', - '4' => 'Набрать РІ хаотических поединках 100 000 Опыта', - '5' => 'Открыть РЎСѓРЅРґСѓРє Трупожора', - '6' => 'Посетить Рзлом Хаоса', - '7' => 'Сдача 3 заданий РІ пещерах', - '8' => 'Поучаствовать РІ Башне Смерти' + '1' => 'Убийство Трупожоров', + '2' => 'Победы в хаотических боях', + '3' => 'Спуск в Подземелия', + '4' => 'Набрать в хаотических поединках 100 000 Опыта', + '5' => 'Открыть Сундук Трупожора', + '6' => 'Посетить Излом Хаоса', + '7' => 'Сдача 3 заданий в пещерах', + '8' => 'Поучаствовать в Башне Смерти' ]; if (!isset($test['id'])) { - $n = "Получить задание"; + $n = "Получить задание"; } else { - $n = "Сдать задание"; + $n = "Сдать задание"; $n = $n . "
" . $q[$test['vals']] . ""; } @@ -113,7 +170,7 @@ class user } elseif (date('w') == 0 || date('w') == 6) { $r = round($r * 2, 2); } - $r = $r . ' ЕКР.'; + $r = $r . ' ЕКР.'; } else { $r = $this->info['level']; if (date('m') >= 6 || date('m') <= 8) { @@ -121,7 +178,7 @@ class user } elseif (date('w') == 0 || date('w') == 6) { $r = round($r * 2, 2); } - $r = $r . ' РљР .'; + $r = $r . ' КР.'; } } else { if (($this->info['align'] > 0 || $this->info['clan'] > 0 || $this->info['level'] > 12) && $this->info['align'] != 2) { @@ -162,19 +219,19 @@ class user $r = ''; // if ($this->info['clan'] > 0) { - //Нельзя использовать персонажам РІ клане + //Нельзя использовать персонажам в клане } elseif ($type == 'test') { - if ($this->room['name'] == 'Зал Света' || $this->room['name'] == 'Зал Нейтралов' || $this->room['name'] == 'Зал РўСЊРјС‹') { + if ($this->room['name'] == 'Зал Света' || $this->room['name'] == 'Зал Нейтралов' || $this->room['name'] == 'Зал Тьмы') { if (isset($_GET['vhp'])) { $v = mysql_fetch_array(mysql_query('SELECT * FROM "vortex" WHERE "uid" = "' . $this->info['id'] . '" AND "type" = 1 ORDER BY "time" DESC LIMIT 1')); if (isset($v['id']) && $v['time'] > time() - 60 * 60) { - //Уже юзали - $this->error = 'Необходимо подождать еще ' . $this->timeOut($v['time'] + 60 * 60 - time()); + //Уже юзали + $this->error = 'Необходимо подождать еще ' . $this->timeOut($v['time'] + 60 * 60 - time()); } else { if ($this->stats['hpNow'] < 1) { $this->stats['hpNow'] = 0; } - $this->error = 'Р’С‹ успешно восстановили ' . round($this->stats['hpAll'] - $this->stats['hpNow']) . ' HP.'; + $this->error = 'Вы успешно восстановили ' . round($this->stats['hpAll'] - $this->stats['hpNow']) . ' HP.'; mysql_query('INSERT INTO `vortex` ( `uid`,`time`,`room`,`val`,`type` ) VALUES ( "' . $this->info['id'] . '","' . time() . '","' . $this->info['room'] . '","' . round($this->stats['hpAll'] - $this->stats['hpNow']) . '","1" )'); @@ -184,13 +241,13 @@ class user } elseif (isset($_GET['vmp'])) { $v = mysql_fetch_array(mysql_query('SELECT * FROM "vortex" WHERE "uid" = "' . $this->info['id'] . '" AND "type" = 2 ORDER BY "time" DESC LIMIT 1')); if (isset($v['id']) && $v['time'] > time() - 60 * 60) { - //Уже юзали - $this->error = 'Необходимо подождать еще ' . $this->timeOut($v['time'] + 60 * 60 - time()); + //Уже юзали + $this->error = 'Необходимо подождать еще ' . $this->timeOut($v['time'] + 60 * 60 - time()); } else { if ($this->stats['mpNow'] < 1) { $this->stats['mpNow'] = 0; } - $this->error = 'Р’С‹ успешно восстановили ' . round($this->stats['mpAll'] - $this->stats['mpNow']) . ' MP.'; + $this->error = 'Вы успешно восстановили ' . round($this->stats['mpAll'] - $this->stats['mpNow']) . ' MP.'; mysql_query('INSERT INTO `vortex` ( `uid`,`time`,`room`,`val`,`type` ) VALUES ( "' . $this->info['id'] . '","' . time() . '","' . $this->info['room'] . '","' . round($this->stats['mpAll'] - $this->stats['mpNow']) . '","2" )'); @@ -201,28 +258,28 @@ class user } } elseif ($type == 'look') { // - if ($this->room['name'] == 'Зал Света' || $this->room['name'] == 'Зал РўСЊРјС‹' || $this->room['name'] == 'Зал Нейтралов') { + if ($this->room['name'] == 'Зал Света' || $this->room['name'] == 'Зал Тьмы' || $this->room['name'] == 'Зал Нейтралов') { $vid = 0; // - if ($this->room['name'] == 'Зал Света') { + if ($this->room['name'] == 'Зал Света') { $vid = 6; - } elseif ($this->room['name'] == 'Зал РўСЊРјС‹') { + } elseif ($this->room['name'] == 'Зал Тьмы') { $vid = 7; - } elseif ($this->room['name'] == 'Зал Нейтралов') { + } elseif ($this->room['name'] == 'Зал Нейтралов') { $vid = 10; } // $v = mysql_fetch_array(mysql_query('SELECT * FROM `vortex` WHERE `uid` = "' . $this->info['id'] . '" AND `type` = 1 ORDER BY `time` DESC LIMIT 1')); if (isset($v['id']) && $v['time'] + 60 * 60 > time()) { - $r .= ' '; + $r .= ' '; } else { - $r .= ' '; + $r .= ' '; } $v = mysql_fetch_array(mysql_query('SELECT * FROM `vortex` WHERE `uid` = "' . $this->info['id'] . '" AND `type` = 2 ORDER BY `time` DESC LIMIT 1')); if (isset($v['id']) && $v['time'] + 60 * 60 > time()) { - $r .= ' '; + $r .= ' '; } else { - $r .= ' '; + $r .= ' '; } } // @@ -289,7 +346,7 @@ class user return $val; } - //Удаление определенного типа предметов + //Удаление определенного типа предметов public function deleteItemID($id, $uid, $coldel) { $sp = mysql_query('SELECT * FROM `items_users` WHERE `item_id` = "' . mysql_real_escape_string($id) . '" AND `uid` = "' . mysql_real_escape_string($uid) . '" AND (`delete` = 0 OR `delete` = 1000) ORDER BY `inGroup` DESC LIMIT ' . $coldel); @@ -324,15 +381,15 @@ class user public function repobmen($id, $type) { - //echo 'обмен'; + //echo 'обмен'; $pl = mysql_fetch_array(mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`uid`="' . $this->info['id'] . '" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`id` = "' . ((int)$id) . '" LIMIT 1;')); $d = mysql_fetch_array(mysql_query('SELECT * FROM `items_main_data` WHERE `items_id` = "' . $pl['item_id'] . '" LIMIT 1')); $po = $this->lookStats($pl['data']); //echo $po['dungeon'].' '.$po['tr_lvl']; if ((!isset($po['frompisher']) or $po['tr_lvl'] < 4) and $pl['type'] != 31) { - $e = 'РќРµ удалось обменять предмет РЅР° репутацию.'; + $e = 'Не удалось обменять предмет на репутацию.'; } else { - $e = 'Обмен предмета "' . $pl['name'] . '" РЅР° репутацию РЎapitalcity прошел удачно.'; + $e = 'Обмен предмета "' . $pl['name'] . '" на репутацию Сapitalcity прошел удачно.'; mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); $this->rep['repcapitalcity'] += 1; mysql_query('UPDATE `rep` SET `repcapitalcity` = "' . $this->rep['repcapitalcity'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); @@ -380,20 +437,20 @@ class user public function bsfinish($id, $bu, $di) { if ($bu == true) { - /* РІ этом Р±РѕСЋ проверяем юзеров */ + /* в этом бою проверяем юзеров */ $i = 0; while ($i < count($bu[$i])) { if ($bu[$i]['lose'] > 0 || $bu[$i]['nich']) { mysql_query('UPDATE `users` SET `lose` = "' . $bu[$i]['lose'] . '", `nick` = "' . $bu[$i]['nich'] . '" WHERE `id` = "' . $bu[$i]['id'] . '" LIMIT 1'); mysql_query('UPDATE `bs_turnirs` SET `users_finish` = `users_finish` + 1 WHERE `id` = "' . $id['id'] . '" LIMIT 1'); - /* удаляем юзера */ + /* удаляем юзера */ if ($bu['inBot'] == 0) { $pls1 = mysql_fetch_array(mysql_query('SELECT `id`, `bsid`, `money`, `finish`, `time`, `inBot`, `uid` FROM `bs_zv` WHERE `bsid` = "' . $id['id'] . '" AND `finish` = 0 AND `time` = "' . $id['time_start'] . '" AND `inBot` = "' . $bu[$i]['id'] . '" LIMIT 1')); if (isset($pls1['id'])) { mysql_query('DELETE FROM `users` WHERE `id` = "' . $bu[$i]['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `stats` WHERE `id` = "' . $bu[$i]['id'] . '" LIMIT 1'); - //выкидываем предметы РЅР° землю + //выкидываем предметы на землю $spi = mysql_query('SELECT `id`,`item_id` FROM `items_users` WHERE `uid` = "' . $bu[$i]['id'] . '" LIMIT 500'); $ins = ''; while ($pli = mysql_fetch_array($spi)) { @@ -425,9 +482,9 @@ class user } } - /* завершаем БС */ + /* завершаем БС */ if (isset($win['id']) && $win['lose'] == 0 && $win['nich'] == 0 && $win['id'] > 0) { - //есть победитель + //есть победитель $bsep = 0; if ($winr['level'] < 6) { $bsep = 2500; @@ -440,20 +497,20 @@ class user } else { $bsep = 50000; } - /* Выдаем РїСЂРёР· */ + /* Выдаем приз */ $mn = (round($id['money'] / 100 * 85)); mysql_query('UPDATE `users` SET `money` = `money` + "' . $mn . '" WHERE `id` = "' . $winr['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `exp` = `exp` + "' . $bsep . '" WHERE `id` = "' . $winr['id'] . '" LIMIT 1'); - /* чат */ - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','" . $winr['login'] . "','Поздравляем! Р’С‹ победили РІ турнире "Башня Смерти"! Получено опыта: " . $bsep . ", деньги: " . $mn . " РєСЂ.','-1','6','0')"); - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','','Внимание! Завершился турнир "Башня Смерти", победитель турнира: " . $winr['login'] . "! Поздравляем!','-1','5','0')"); - $this->addDelo(1, $uid, '"WinTournament.' . $this->info['city'] . '" (Башня Смерти): Получено "' . $mn . ' РєСЂ."', time(), $this->info['city'], 'WinTournament.' . $this->info['city'] . '', 0, 0); + /* чат */ + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','" . $winr['login'] . "','Поздравляем! Вы победили в турнире "Башня Смерти"! Получено опыта: " . $bsep . ", деньги: " . $mn . " кр.','-1','6','0')"); + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','','Внимание! Завершился турнир "Башня Смерти", победитель турнира: " . $winr['login'] . "! Поздравляем!','-1','5','0')"); + $this->addDelo(1, $uid, '"WinTournament.' . $this->info['city'] . '" (Башня Смерти): Получено "' . $mn . ' кр."', time(), $this->info['city'], 'WinTournament.' . $this->info['city'] . '', 0, 0); } else { - //нет победителя - //Выдаем травму + //нет победителя + //Выдаем травму - /* чат */ - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','','Внимание! Завершился турнир "Башня Смерти", победитель турнира: отсутствует.','-1','5','0')"); + /* чат */ + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','','Внимание! Завершился турнир "Башня Смерти", победитель турнира: отсутствует.','-1','5','0')"); } $sp = mysql_query('SELECT `id`,`bsid`,`money`,`finish`,`time`,`inBot`,`uid` FROM `bs_zv` WHERE `bsid` = "' . $id['id'] . '" AND `time` = "' . $id['time_start'] . '" ORDER BY `money` DESC LIMIT 100'); @@ -474,12 +531,12 @@ class user } } - //вес предметов Сѓ юзера + //вес предметов у юзера public function ves($u) { $r = ['now' => 0, 'max' => 0]; if ($u == null) { - //текущий персонаж + //текущий персонаж $r['now'] = mysql_fetch_array(mysql_query('SELECT SUM(`im`.`massa`) FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `iu`.`item_id` = `im`.`id` WHERE `iu`.`uid` = "' . $this->info['id'] . '" AND (`iu`.`delete` = "0" OR (`iu`.`delete` = "1000" AND `iu`.`inGroup` > 0)) AND `iu`.`inShop` = "0" AND `iu`.`inOdet` = "0"')); $r['now'] = 0 + $r['now'][0]; @$r['max'] = 40 + ($this->stats['os7'] * 10) + $this->stats['s4'] + $this->stats['maxves'] + $this->stats['s1'] * 4; @@ -489,7 +546,7 @@ class user return $r; } - //Переплавка вещей \ СЂСѓРЅ + //Переплавка вещей \ рун public function plavka($id, $type) { $e = ''; @@ -506,38 +563,38 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($po['tr_lvl'] < 4 && $pl['item_id'] != 1035) { - $e = 'Предмет должен быть 4-РіРѕ Рё выше СѓСЂРѕРІРЅСЏ'; + $e = 'Предмет должен быть 4-го и выше уровня'; } elseif ($pl['type'] != 1 && $pl['type'] != 3 && $pl['type'] != 5 && $pl['type'] != 6 && $pl['type'] != 8 && $pl['type'] != 9 && $pl['type'] != 10 && $pl['type'] != 11 && $pl['type'] != 12 && $pl['type'] != 14 && $pl['type'] != 15 && $pl['type'] != 18 && $pl['type'] != 19 && $pl['type'] != 20 && $pl['type'] != 21 && $pl['type'] != 22 && $pl['type'] != 13 && $pl['item_id'] != 1035) { - $e = 'Хрен вам, Р° РЅРµ СЂСѓРЅС‹! РљСѓРґР° кидаешь предмет? РќРµ РїРѕРґС…РѕРґРёС‚ РѕРЅ! РџСЂРёС…РѕРґРё как будет что-то стоющее!'; + $e = 'Хрен вам, а не руны! Куда кидаешь предмет? Не подходит он! Приходи как будет что-то стоющее!'; } elseif ($po['tr_lvl'] >= 7 && $this->rep['rep1'] < 0)//100 { - $e = 'Для растворения предметов 7-РіРѕ Рё старше СѓСЂРѕРІРЅСЏ требуется знак Храма Знаний первого РєСЂСѓРіР°'; + $e = 'Для растворения предметов 7-го и старше уровня требуется знак Храма Знаний первого круга'; } elseif ($po['tr_lvl'] >= 9 && $this->rep['rep1'] < 1000) { - $e = 'Для растворения предметов 9-РіРѕ Рё старше СѓСЂРѕРІРЅСЏ требуется знак Храма Знаний второго РєСЂСѓРіР°'; + $e = 'Для растворения предметов 9-го и старше уровня требуется знак Храма Знаний второго круга'; } elseif ($po['tr_lvl'] >= 10 && $this->rep['rep1'] < 10000) { - $e = 'Для растворения предметов 10-РіРѕ Рё старше СѓСЂРѕРІРЅСЏ требуется знак Храма Знаний третьего РєСЂСѓРіР°'; + $e = 'Для растворения предметов 10-го и старше уровня требуется знак Храма Знаний третьего круга'; } elseif ($rn > 0) { if (isset($pl['id'], $d['id'])) { $pl['rep'] = 1; - //вероятность выпадения СЂСѓРЅС‹ + //вероятность выпадения руны // mysql_query('UPDATE `rep` SET `rep1` = `rep1` + "'.$pl['rep'].'" WHERE `id` = "'.$this->info['id'].'" LIMIT 1')); - $e = 'Удачно растворен предмет "' . $pl['name'] . '"! Получено репутации: +' . $pl['rep'] . ' ед.'; + $e = 'Удачно растворен предмет "' . $pl['name'] . '"! Получено репутации: +' . $pl['rep'] . ' ед.'; mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); $this->rep['rep1'] += $pl['rep']; mysql_query('UPDATE `rep` SET `rep1` = "' . $this->rep['rep1'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); } else { - $e = 'Предмет РЅРµ найден, либо РЅРµ РїРѕРґС…РѕРґРёС‚ ' . $pl['item_id'] . '...'; + $e = 'Предмет не найден, либо не подходит ' . $pl['item_id'] . '...'; } } else { - $e = 'РќРµ удалось переплавить, рецепты СЂСѓРЅ были потеряны ...'; + $e = 'Не удалось переплавить, рецепты рун были потеряны ...'; } return $e; } - //Выводим вещи котоыре нужно отремонтировать + //Выводим вещи котоыре нужно отремонтировать public function info_remont() { $r = ''; @@ -547,20 +604,20 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`uid` = "' . ((int)$this->info['id']) . '" AND `iu`.`delete` = "0" AND `iu`.`inShop` = "0" AND `iu`.`inOdet` > "0" AND `iu`.`inOdet` < "18" LIMIT 18'); while ($pl = mysql_fetch_array($sp)) { if ($pl['iznosNOW'] > ceil($pl['iznosMAX'] * 0.80)) { - $r .= '' . $pl['name'] . ' [' . floor($pl['iznosNOW']) . '/' . ceil($pl['iznosMAX']) . '] требуется ремонт
'; + $r .= '' . $pl['name'] . ' [' . floor($pl['iznosNOW']) . '/' . ceil($pl['iznosMAX']) . '] требуется ремонт
'; } } $r = '
' . $r . '
'; return $r; } - //Расчет СѓСЂРѕРЅР° РѕС‚ оружия + //Расчет урона от оружия public function weaponAtc($item, $st, $x) { $tp = 0; if (isset($item['id'])) { $itm = $this->lookStats($item['data']); - //начинаем расчет СѓСЂРѕРЅР° + //начинаем расчет урона if (!isset($st['minAtack'])) { $st['minAtack'] = 0; } @@ -591,26 +648,26 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` //if($x!=0) //{ - //РўРёРї СѓСЂРѕРЅР°: 0 - нет СѓСЂРѕРЅР°, 1 - колющий, 2 - рубящий, 3 - дробящий, 4 - режущий, 5 - РѕРіРѕРЅСЊ, 6 - РІРѕР·РґСѓС…, 7 - РІРѕРґР°, 8 - земля, 9 - свет, 10 - тьма, 11 - серая + //Тип урона: 0 - нет урона, 1 - колющий, 2 - рубящий, 3 - дробящий, 4 - режущий, 5 - огонь, 6 - воздух, 7 - вода, 8 - земля, 9 - свет, 10 - тьма, 11 - серая if ($item['type'] == 18) { - //колющий + //колющий $sss = ceil($st['s2'] * 0.75); } elseif ($item['type'] == 19) { - //рубящий + //рубящий $sss = ceil($st['s1'] * 0.75); } elseif ($item['type'] == 20) { - //дробящий + //дробящий $sss = ceil($st['s4'] * 1.5); } elseif ($item['type'] == 21) { - //режущий + //режущий $sss = ceil($st['s3'] * 1); } else { - //без профильного СѓСЂРѕРЅР° + //без профильного урона $sss = ceil($st['s1'] * 0.1); } - //Обычный СѓСЂРѕРЅ + //Обычный урон //$p['B'][0] = 5; //$p['B'][1] = 9; @@ -621,37 +678,37 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $p['B'][1] = $p['B'][0] + 3; $p['B']['rnd'] = rand($p['B'][0], $p['B'][1]); - //Добавочный минимальный СѓСЂРѕРЅ + //Добавочный минимальный урон $p['W'][0] = $min; $p['W'][1] = $max; $p['W']['rnd'] = rand($p['W'][0], $p['W'][1]); - // РљРѕСЌС„. оружия + // Коэф. оружия $p['T'] = 1; - //Владения + //Владения $bn = 0; if ($item['type'] == 21) { - // меч + // меч $p['M'] = $st['pa4']; $bn = $st['a4']; - //РўРЈРў $p['M'] = $st['pa'.$x]; + //ТУТ $p['M'] = $st['pa'.$x]; } elseif ($item['type'] == 20) { - // РґСѓР±РёРЅР° + // дубина $p['M'] = $st['pa3']; $bn = $st['a3']; } elseif ($item['type'] == 19) { - // топор + // топор $p['M'] = $st['pa2']; $bn = $st['a2']; } elseif ($item['type'] == 18) { - // РЅРѕР¶ + // нож $p['M'] = $st['pa1']; $bn = $st['pa1']; } elseif ($item['type'] == 22) { - // РїРѕСЃРѕС… + // посох $p['M'] = $st['pa3']; $bn = $st['a5']; } - //Мощнность + //Мощнность $min = (($p['B'][0] + $sss + $p['W'][0]) * $p['T'] * (1 + 0.005 * $bn)) * (1 + $p['M'] / 100); $max = (($p['B'][1] + $sss + $p['W'][1]) * $p['T'] * (1 + 0.005 * $bn)) * (1 + $p['M'] / 100); @@ -664,7 +721,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` return $tp; } - //Расчет защиты + //Расчет защиты public function zago($v) { if ($v > 1700) { @@ -673,7 +730,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` return round((1 - (pow(0.5, ($v / 399.51)))) * 100, 2); } - //Расчет защиты (магия) + //Расчет защиты (магия) public function zmgo($v) { if ($v > 1000) { @@ -690,7 +747,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $r = ''; if ($v == 'yrontest' || $v == 'yrontest-krit') { $y = []; - /* первое оружие или кулак */ + /* первое оружие или кулак */ $w1 = 0; $w2 = 0; $i = 0; @@ -727,7 +784,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $r .= '' . $y[0] . '-' . $y[1] . ''; } else { - //СѓСЂРѕРЅ кулаком + //урон кулаком $y[0] = ceil(2 + $this->info['level'] + $this->stats ['s1'] - round($this->stats['s1'] / 5)) + $this->stats['minAtack'] + $this->stats['yron_min']; $y[1] = ceil($y[0] + 3) + $this->stats['maxAtack'] + $this->stats['yron_max']; if ($y[0] < 1) { @@ -738,7 +795,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $r .= $y[0] . '-' . $y[1]; } - /* второе оружие */ + /* второе оружие */ if (isset($w2['id'])) { $tp = 0; $t = 0; @@ -767,7 +824,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` /* --- */ } elseif ($v == 'yron') { $y = []; - /* первое оружие или кулак */ + /* первое оружие или кулак */ $w1 = 0; $w2 = 0; $i = 0; @@ -800,7 +857,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $r .= '' . $y[0] . '-' . $y[1] . ''; } else { - //СѓСЂРѕРЅ кулаком + //урон кулаком $y[0] = ceil($this->stats['s1'] * 1.4) + $this->stats['minAtack'] + $this->stats['yron_min']; $y[1] = ceil(0.4 + $y[0] / 0.9) + $this->stats['maxAtack'] + $this->stats['yron_max']; if ($y[0] < 1) { @@ -811,7 +868,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $r .= $y[0] . '-' . $y[1]; } - /* второе оружие */ + /* второе оружие */ if (isset($w2['id'])) { $tp = 0; $t = 0; @@ -834,9 +891,9 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $r .= ' / ' . $y[0] . '-' . $y[1] . ''; } } else { - //модификаторы + //модификаторы $y = []; - /* первое оружие или кулак */ + /* первое оружие или кулак */ $w1 = 0; $w2 = 0; $i = 0; @@ -864,11 +921,11 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $ry = $y; $r .= '' . $y . ''; } else { - //кулаком + //кулаком $r .= $this->stats[$v]; $ry = $this->stats[$v]; } - /* второе оружие */ + /* второе оружие */ if (isset($w2['id'])) { $tp = 0; $t = 0; @@ -881,7 +938,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $r = str_replace('title="' . $w1['name'] . '"', '', $r); } } - //модификаторы + //модификаторы } return $r; } @@ -895,7 +952,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($tmp > 0) { $id++; if ($id < 3) { - $out .= $tmp . " мес. "; + $out .= $tmp . " мес. "; } $time_still = $time_still - $tmp * 2592000; } @@ -903,7 +960,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($tmp > 0) { $id++; if ($id < 3) { - $out .= $tmp . " РґРЅ. "; + $out .= $tmp . " дн. "; } $time_still = $time_still - $tmp * 86400; } @@ -911,7 +968,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($tmp > 0) { $id++; if ($id < 3) { - $out .= $tmp . " С‡. "; + $out .= $tmp . " ч. "; } $time_still = $time_still - $tmp * 3600; } @@ -919,14 +976,14 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($tmp > 0) { $id++; if ($id < 3) { - $out .= $tmp . " РјРёРЅ. "; + $out .= $tmp . " мин. "; } } if ($out == '') { if ($time_still < 0) { $time_still = 0; } - $out = $time_still . ' сек.'; + $out = $time_still . ' сек.'; } return $out; } @@ -934,105 +991,105 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` public function rep_zv($id, $e) { if ($id == 1) { - //Храм знаний + //Храм знаний if ($e > 9999) { - $r = 'Посвященный третьего РєСЂСѓРіР°, ' . $e . ' / ??'; + $r = 'Посвященный третьего круга, ' . $e . ' / ??'; } elseif ($e > 999) { - $r = 'Посвященный второго РєСЂСѓРіР°, ' . $e . ' / 9999'; + $r = 'Посвященный второго круга, ' . $e . ' / 9999'; } elseif ($e > 99) { - $r = 'Посвященный первого РєСЂСѓРіР°, ' . $e . ' / 999'; + $r = 'Посвященный первого круга, ' . $e . ' / 999'; } else { $r = $e . ' / 99'; } } elseif ($id == 2) { //Capital city if ($e > 24999) { - $r = 'Рыцарь второго РєСЂСѓРіР°, ' . $e . ' / ??'; + $r = 'Рыцарь второго круга, ' . $e . ' / ??'; } elseif ($e > 9999) { - $r = 'Рыцарь первого РєСЂСѓРіР°, ' . $e . ' / 24999'; + $r = 'Рыцарь первого круга, ' . $e . ' / 24999'; } else { $r = $e . ' / 10000'; } } elseif ($id == 3) { //Angels city if ($e > 24999) { - $r = 'Рыцарь второго РєСЂСѓРіР°, ' . $e . ' / ??'; + $r = 'Рыцарь второго круга, ' . $e . ' / ??'; } elseif ($e > 9999) { - $r = 'Рыцарь первого РєСЂСѓРіР°, ' . $e . ' / 24999'; + $r = 'Рыцарь первого круга, ' . $e . ' / 24999'; } else { $r = $e . ' / 10000'; } } elseif ($id == 4) { //Demons city if ($e > 24999) { - $r = 'Рыцарь второго РєСЂСѓРіР°, ' . $e . ' / ??'; + $r = 'Рыцарь второго круга, ' . $e . ' / ??'; } elseif ($e > 9999) { - $r = 'Рыцарь первого РєСЂСѓРіР°, ' . $e . ' / 24999'; + $r = 'Рыцарь первого круга, ' . $e . ' / 24999'; } else { $r = $e . ' / 10000'; } } elseif ($id == 5) { - //Алтарь РљСЂРѕРІРё + //Алтарь Крови if ($e > 99) { - $r = 'Посвященный первого РєСЂСѓРіР° ' . $e . ' / 999'; + $r = 'Посвященный первого круга ' . $e . ' / 999'; } else { $r = $e . ' / 99'; } } elseif ($id == 6) { //Sand if ($e > 24999) { - $r = 'Рыцарь второго РєСЂСѓРіР°, ' . $e . ' / ??'; + $r = 'Рыцарь второго круга, ' . $e . ' / ??'; } elseif ($e > 9999) { - $r = 'Рыцарь первого РєСЂСѓРіР°, ' . $e . ' / 24999'; + $r = 'Рыцарь первого круга, ' . $e . ' / 24999'; } else { $r = $e . ' / 10000'; } } elseif ($id == 7) { //Sun if ($e > 24999) { - $r = 'Рыцарь второго РєСЂСѓРіР°, ' . $e . ' / ??'; + $r = 'Рыцарь второго круга, ' . $e . ' / ??'; } elseif ($e > 9999) { - $r = 'Рыцарь первого РєСЂСѓРіР°, ' . $e . ' / 24999'; + $r = 'Рыцарь первого круга, ' . $e . ' / 24999'; } else { $r = $e . ' / 10000'; } } elseif ($id == 8) { //Moon if ($e > 24999) { - $r = 'Рыцарь второго РєСЂСѓРіР°, ' . $e . ' / ??'; + $r = 'Рыцарь второго круга, ' . $e . ' / ??'; } elseif ($e > 9999) { - $r = 'Рыцарь первого РєСЂСѓРіР°, ' . $e . ' / 24999'; + $r = 'Рыцарь первого круга, ' . $e . ' / 24999'; } else { $r = $e . ' / 10000'; } } elseif ($id == 9) { //Dreams city if ($e > 9999) { - $r = 'Посвященный третьего РєСЂСѓРіР°, [' . $e . ']'; + $r = 'Посвященный третьего круга, [' . $e . ']'; } elseif ($e > 4999) { - $r = 'Посвященный второго РєСЂСѓРіР°,' . $e . ' / 9999'; + $r = 'Посвященный второго круга,' . $e . ' / 9999'; } elseif ($e > 999) { - $r = 'Посвященный первого РєСЂСѓРіР°, ' . $e . ' / 4999'; + $r = 'Посвященный первого круга, ' . $e . ' / 4999'; } else { $r = $e . ' / 999'; } } elseif ($id == 10) { - //Гора легиона + //Гора легиона if ($e > 9999) { - $r = 'Посвященный второго РєСЂСѓРіР°,[' . $e . ']'; + $r = 'Посвященный второго круга,[' . $e . ']'; } elseif ($e > 999) { - $r = 'Посвященный первого РєСЂСѓРіР°, ' . $e . ' / 4999'; + $r = 'Посвященный первого круга, ' . $e . ' / 4999'; } else { $r = $e . ' / 999'; } } elseif ($id == 11) { - //Рзлом Хаоса + //Излом Хаоса if ($e > 9999) { - $r = 'Легенда Рзлома Хаоса, [' . $e . ']'; + $r = 'Легенда Излома Хаоса, [' . $e . ']'; } elseif ($e > 4999) { - $r = 'Чемпион Рзлома Хаоса,' . $e . ' / 9999'; + $r = 'Чемпион Излома Хаоса,' . $e . ' / 9999'; } elseif ($e > 999) { - $r = 'Знаток Рзлома Хаоса, ' . $e . ' / 4999'; + $r = 'Знаток Излома Хаоса, ' . $e . ' / 4999'; } else { $r = $e . ' / 999'; } @@ -1053,7 +1110,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $i = mysql_fetch_array(mysql_query('SELECT `im`.`id`,`im`.`name`,`im`.`img`,`im`.`type`,`im`.`inslot`,`im`.`2h`,`im`.`2too`,`im`.`iznosMAXi`,`im`.`inRazdel`,`im`.`price1`,`im`.`price2`,`im`.`pricerep`,`im`.`magic_chance`,`im`.`info`,`im`.`massa`,`im`.`level`,`im`.`magic_inci`,`im`.`overTypei`,`im`.`group`,`im`.`group_max`,`im`.`geni`,`im`.`ts`,`im`.`srok`,`im`.`class`,`im`.`class_point`,`im`.`anti_class`,`im`.`anti_class_point`,`im`.`max_text`,`im`.`useInBattle`,`im`.`lbtl`,`im`.`lvl_itm`,`im`.`lvl_exp`,`im`.`lvl_aexp` FROM `items_main` AS `im` WHERE `im`.`id` = "' . mysql_real_escape_string($id) . '" LIMIT 1')); if (isset($i['id'])) { $d = mysql_fetch_array(mysql_query('SELECT `id`,`items_id`,`data` FROM `items_main_data` WHERE `items_id` = "' . $i['id'] . '" LIMIT 1')); - //новая дата + //новая дата $data = $d['data']; if ($i['ts'] > 0) { if ($nosudba == null) { @@ -1063,12 +1120,12 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } if ($md != null) { $data .= $md; - $data = $this->lookStats($data); // Если РІ функции имеются РґРІРµ одинаковых константы SROK? + $data = $this->lookStats($data); // Если в функции имеются две одинаковых константы SROK? $data = $this->impStats($data); } - //предмет СЃ настройками РёР· подземелья + //предмет с настройками из подземелья if ($dn != null && $dn['dn_delete'] > 0) { $i['dn_delete'] = 1; } @@ -1100,10 +1157,10 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $ads = ''; if ($plavka != null) { - $ads = 'Расплавлен предмет : [' . $plavka . ']'; + $ads = 'Расплавлен предмет : [' . $plavka . ']'; } - //Записываем РІ личное дело что предмет получен - $ld = $this->addDelo(1, $uid, '"AddItems.' . $this->info['city'] . '": Получен предмет "' . $i['name'] . '" (x1) [#' . $i['iid'] . ']. ' . $ads . '', time(), $this->info['city'], 'AddItems.' . $this->info['city'] . '', 0, 0); + //Записываем в личное дело что предмет получен + $ld = $this->addDelo(1, $uid, '"AddItems.' . $this->info['city'] . '": Получен предмет "' . $i['name'] . '" (x1) [#' . $i['iid'] . ']. ' . $ads . '', time(), $this->info['city'], 'AddItems.' . $this->info['city'] . '', 0, 0); } else { $rt = 0; } @@ -1181,19 +1238,19 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $r .= ' ' . $inf['login'] . ' [' . $inf['level'] . ']'; } else { - $r = 'Невидимка [??]'; + $r = 'Невидимка [??]'; } return $r; } public function testHome() { - /*----Быстрый(Особенность)----*/ + /*----Быстрый(Особенность)----*/ $timeforwait = 3600; if (isset($st['os3']) && $st['os3'] > 0) { $timeforwait = 3600 - (($st['os6'] * 5) * 60); } - /*----Быстрый(Особенность)----*/ + /*----Быстрый(Особенность)----*/ $hgo = $this->testAction('`uid` = "' . $this->info['id'] . '" AND `time` >= ' . (time() - $timeforwait) . ' AND `vars` = "go_homeworld" LIMIT 1', 1); if ($this->info['level'] == 0 || $this->info['active'] != '' || $this->info['inTurnir'] > 0 || $this->info['inTurnirnew'] > 0 || $this->info['zv'] > 0 || $this->info['dnow'] > 0) { $hgo['id'] = true; @@ -1332,7 +1389,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if (isset($this->info['id'])) { if ($this->info['invis'] == 1 || $this->info['invis'] > time()) { - $this->info['cast_login'] = 'Невидимка'; + $this->info['cast_login'] = 'Невидимка'; } else { $this->info['cast_login'] = $this->info['login']; } @@ -1387,11 +1444,11 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $hgo = $this->testHome(); if (!isset($hgo['id']) && $this->info['room'] != 274 && $this->info['align'] != 2 && $this->info['inTurnir'] == 0) { $this->addAction(time(), 'go_homeworld', ''); - $rmt = mysql_fetch_array(mysql_query('SELECT `id`,`lider`,`name`,`city`,`code`,`timeGO`,`file`,`level`,`align`,`clan`,`items`,`effects`,`destroy`,`close`,`roomGo`,`sex`,`FR`,`noatack`,`botgo`,`block_all`,`zvsee` FROM `room` WHERE `name` = "Центральная площадь" AND `city` = "' . $this->info['city'] . '" LIMIT 1')); + $rmt = mysql_fetch_array(mysql_query('SELECT `id`,`lider`,`name`,`city`,`code`,`timeGO`,`file`,`level`,`align`,`clan`,`items`,`effects`,`destroy`,`close`,`roomGo`,`sex`,`FR`,`noatack`,`botgo`,`block_all`,`zvsee` FROM `room` WHERE `name` = "Центральная площадь" AND `city` = "' . $this->info['city'] . '" LIMIT 1')); if (isset($rmt['id'])) { - //Удаляем РІСЃРµ ставки РІ БС + //Удаляем все ставки в БС if ($this->room['file'] == 'bsenter') { - //Удаляем РІСЃРµ ставки РІ БС + //Удаляем все ставки в БС $sp_bs = mysql_query('SELECT `id`,`bsid`,`money` FROM `bs_zv` WHERE `uid` = "' . $this->info['id'] . '" AND `inBot` = "0" AND `finish` = "0"'); while ($pl_bs = mysql_fetch_array($sp_bs)) { mysql_query('UPDATE `bs_turnirs` SET `users` = `users` - 1 WHERE `id` = "' . $pl_bs['bsid'] . '" LIMIT 1'); @@ -1403,17 +1460,17 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` mysql_query('UPDATE `users` SET `room` = "' . $this->info['room'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); } else { - $this->error = 'Р’ этом РіРѕСЂРѕРґРµ нельзя пользоваться РєРЅРѕРїРєРѕР№ возрата'; + $this->error = 'В этом городе нельзя пользоваться кнопкой возрата'; } unset($rmt); } else { - $this->error = 'Вам запрещено пользоваться РєРЅРѕРїРєРѕР№ возрата'; + $this->error = 'Вам запрещено пользоваться кнопкой возрата'; } unset($hgo); } } - //Заносим текст + //Заносим текст if (isset($_GET['itmid']) && isset($_GET['addtext'])) { $itm = mysql_fetch_array(mysql_query('SELECT `i`.`id`,`i`.`item_id`,`i`.`1price`,`i`.`2price`,`i`.`uid`,`i`.`use_text`,`i`.`data`,`i`.`inOdet`,`i`.`inShop`,`i`.`delete`,`i`.`iznosNOW`,`i`.`iznosMAX`,`i`.`gift`,`i`.`gtxt1`,`i`.`gtxt2`,`i`.`kolvo`,`i`.`geniration`,`i`.`magic_inc`,`i`.`maidin`,`i`.`lastUPD`,`i`.`timeOver`,`i`.`overType`,`i`.`secret_id`,`i`.`time_create`,`i`.`inGroup`,`i`.`dn_delete`,`i`.`inTransfer`,`i`.`post_delivery`,`i`.`lbtl_`,`i`.`bexp`,`i`.`so`,`i`.`blvl` @@ -1433,46 +1490,46 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` mysql_query('UPDATE `items_users` SET `use_text` = "' . $itm['use_text'] . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); mysql_query('INSERT INTO `items_text` (`item_id`,`time`,`login`,`text`,`city`,`x`) VALUES ("' . $itm['id'] . '","' . time() . '","' . $this->info['login'] . '","' . mysql_real_escape_string(htmlspecialchars($txt, null, 'cp1251')) . '","' . $this->info['city'] . '","' . $sx . '")'); - $this->error = 'Запись успешно произведена'; + $this->error = 'Запись успешно произведена'; } else { - $this->error = 'Нужно что-то написать...'; + $this->error = 'Нужно что-то написать...'; } } else { - $this->error = 'Предмет для записи РЅРµ РїРѕРґС…РѕРґРёС‚'; + $this->error = 'Предмет для записи не подходит'; } } else { - $this->error = 'Предмет для записи РЅРµ найден'; + $this->error = 'Предмет для записи не найден'; } } - //Кидаем передачу + //Кидаем передачу if (isset($_POST['trnLogin'], $_GET['transfer']) && $this->info['battle'] == 0) { if ($this->info['level'] < 4 && $this->info['admin'] == 0) { - $this->error = 'Передавать предметы РјРѕРіСѓС‚ персонажи старше 4-РіРѕ СѓСЂРѕРІРЅСЏ'; + $this->error = 'Передавать предметы могут персонажи старше 4-го уровня'; } elseif ($this->info['align'] == 2 && $this->info['admin'] == 0) { - $this->error = 'Хаосники РЅРµ РјРѕРіСѓС‚ передавать предметы РґСЂСѓРіРёРј персонажам'; + $this->error = 'Хаосники не могут передавать предметы другим персонажам'; } else { $t = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`login2`,`pass`,`pass2`,`emailconfirmation`,`securetime`,`sys`,`online`,`ip`,`ipreg`,`joinIP`,`admin`,`city`,`room`,`banned`,`auth`,`align`,`mod_zvanie`,`clan`,`nextMsg`,`molch1`,`molch2`,`molch3`,`level`,`money`,`battle`,`cityreg`,`invBlock`,`invBlockCode`,`zag`,`a1`,`q1`,`mail`,`name`,`bithday`,`sex`,`city_real`,`icq`,`icq_hide`,`homepage`,`deviz`,`hobby`,`chatColor`,`timereg`,`add_smiles`,`obraz`,`win`,`lose`,`nich`,`cityreg2`,`host`,`info_delete`,`dateEnter`,`afk`,`dnd`,`timeMain`,`clan_prava`,`addpr`,`marry`,`city2`,`invis`,`bot_id`,`haos`,`host_reg`,`inUser`,`jail`,`animal`,`vip`,`catch`,`frg`,`no_ip`,`type_pers`,`bot_room` FROM `users` WHERE `login` = "' . mysql_real_escape_string($_POST['trnLogin']) . '" AND `city` = "' . $this->info['city'] . '" LIMIT 1')); if (isset($t['id'])) { if ($this->info['login'] == $t['login']) { - $this->error = 'Р’С‹ РЅРµ можете передать самому себе, персонаж ' . $this->microLogin($t['id'], 1) . ''; + $this->error = 'Вы не можете передать самому себе, персонаж ' . $this->microLogin($t['id'], 1) . ''; } elseif ($t['battle'] > 0) { - $this->error = 'Персонаж находится РІ Р±РѕСЋ'; + $this->error = 'Персонаж находится в бою'; } elseif ($t['level'] < 4 && $this->info['admin'] == 0) { - $this->error = 'Р’С‹ РЅРµ можете передавать предметы персонажам ниже 4-РіРѕ СѓСЂРѕРІРЅСЏ'; + $this->error = 'Вы не можете передавать предметы персонажам ниже 4-го уровня'; } elseif ($t['align'] == 2 && $this->info['admin'] == 0) { - $this->error = 'Р’С‹ РЅРµ можете передавать предметы хаосникам'; + $this->error = 'Вы не можете передавать предметы хаосникам'; } elseif ($t['room'] != $this->info['room']) { - $this->error = 'Р’С‹ должны находится РІ РѕРґРЅРѕР№ комнате СЃ персонажем'; + $this->error = 'Вы должны находится в одной комнате с персонажем'; } else { - //создаем передачу + //создаем передачу $tt = mysql_fetch_array(mysql_query('SELECT `id`,`time`,`uid1`,`uid2`,`city`,`room`,`good1`,`good2`,`cancel1`,`cancel2`,`money1`,`money2`,`start1`,`start2`,`text`,`r0`,`r1`,`r2`,`finish1`,`finish2` FROM `transfers` WHERE (`uid1` = "' . $this->info['id'] . '" OR `uid2` = "' . $this->info['id'] . '") AND (`cancel1` = "0" OR (`finish1` > 0 AND `uid1` = "' . $this->info['id'] . '") OR (`finish2` > 0 AND `uid2` = "' . $this->info['id'] . '")) AND (`cancel2` = "0" OR (`finish2` > 0 AND `uid2` = "' . $this->info['id'] . '") OR (`finish1` > 0 AND `uid1` = "' . $this->info['id'] . '")) ORDER BY `id` DESC LIMIT 1')); if (isset($tt['id'])) { - $this->error = 'Р’С‹ уже находитесь РІ передаче'; + $this->error = 'Вы уже находитесь в передаче'; } else { $tt = mysql_fetch_array(mysql_query('SELECT `id`,`time`,`uid1`,`uid2`,`city`,`room`,`good1`,`good2`,`cancel1`,`cancel2`,`money1`,`money2`,`start1`,`start2`,`text`,`r0`,`r1`,`r2`,`finish1`,`finish2` FROM `transfers` WHERE (`uid1` = "' . $t['id'] . '" OR `uid2` = "' . $t['id'] . '") AND (`cancel1` = "0" OR (`finish1` > 0 AND `uid1` = "' . $t['id'] . '") OR (`finish2` > 0 AND `uid2` = "' . $t['id'] . '")) AND (`cancel2` = "0" OR (`finish2` > 0 AND `uid2` = "' . $t['id'] . '") OR (`finish1` > 0 AND `uid1` = "' . $t['id'] . '")) ORDER BY `id` DESC LIMIT 1')); if (isset($tt['id'])) { - $this->error = 'Персонаж уже РїСЂРѕРІРѕРґРёС‚ сделку'; + $this->error = 'Персонаж уже проводит сделку'; } else { $ins = mysql_query('INSERT INTO `transfers` (`uid1`,`uid2`,`city`,`room`,`time`,`text`,`start1`) VALUES ("' . $this->info['id'] . '","' . $t['id'] . '","' . $this->info['city'] . '","' . $this->info['room'] . '","' . time() . '","' . mysql_real_escape_string(htmlspecialchars($_POST['textarea'], null, 'cp1251')) . '","' . time() . '")'); if ($ins) { @@ -1482,12 +1539,12 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } } } else { - $this->error = 'Персонаж РЅРµ найден РІ этом РіРѕСЂРѕРґРµ'; + $this->error = 'Персонаж не найден в этом городе'; } } } - //Выделяем передачи + //Выделяем передачи $this->tfer = mysql_fetch_array(mysql_query('SELECT `id`,`time`,`uid1`,`uid2`,`city`,`room`,`good1`,`good2`,`cancel1`,`cancel2`,`money1`,`money2`,`start1`,`start2`,`text`,`r0`,`r1`,`r2`,`finish1`,`finish2` FROM `transfers` WHERE (`uid1` = "' . $this->info['id'] . '" OR `uid2` = "' . $this->info['id'] . '") AND (`cancel1` = "0" OR (`finish1` > 0 AND `uid1` = "' . $this->info['id'] . '") OR (`finish2` > 0 AND `uid2` = "' . $this->info['id'] . '")) AND (`cancel2` = "0" OR (`finish2` > 0 AND `uid2` = "' . $this->info['id'] . '") OR (`finish1` > 0 AND `uid1` = "' . $this->info['id'] . '")) ORDER BY `id` DESC LIMIT 1')); if ($this->tfer['uid1'] == $this->tfer['uid2']) { $this->tfer = false; @@ -1501,7 +1558,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($this->tfer['uid2'] == $this->info['id'] && $this->tfer['start2'] == 0) { $this->tfer = false; } elseif ($this->tfer['time'] < time() - 1800) { - //если передача дольше 30 РјРёРЅСѓС‚, то отмена + //если передача дольше 30 минут, то отмена $upd = mysql_query('UPDATE `transfers` SET `cancel1` = "' . time() . '",`cancel2` = "' . time() . '" WHERE `id` = "' . $this->tfer['id'] . '" LIMIT 1'); if ($upd) { unset($this->tfer, $upd); @@ -1522,11 +1579,11 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $upd = mysql_query('UPDATE `transfers` SET `cancel' . $upd . '` = "' . time() . '" WHERE `id` = "' . $this->tfer['id'] . '" LIMIT 1'); if ($upd) { - $this->error = 'Р’С‹ успешно отказались РѕС‚ передачи.'; + $this->error = 'Вы успешно отказались от передачи.'; mysql_query('UPDATE `items_users` SET `inTransfer` = "0" WHERE (`uid` = "' . $this->tfer['uid1'] . '" OR `uid` = "' . $this->tfer['uid2'] . '") AND `inTransfer` > 0'); - //Добавляем сообщение РІ чат + //Добавляем сообщение в чат unset($this->tfer, $upd); } } @@ -1534,22 +1591,22 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } /* - автофлудераст + автофлудераст */ - //Статистика персонажа РЅР° сегодня + //Статистика персонажа на сегодня $stat = $this->testAction('`uid` = "' . $this->info['id'] . '" AND `time` >= ' . strtotime('now 00:00:00') . ' AND `vars` = "statistic_today" LIMIT 1', 1); if (!isset($stat['id'])) { $this->addAction(time(), 'statistic_today', 'e=' . $this->info['exp'] . '|w=' . $this->info['win'] . '|l=' . $this->info['lose'] . '|n=' . $this->info['nich']); } - //Одеваем боевой комплект + //Одеваем боевой комплект if (isset($_GET['usec1']) && $this->info['battle'] == 0) { $cmp = mysql_fetch_array(mysql_query('SELECT `id`,`uid`,`type`,`val`,`name`,`time`,`delete` FROM `save_com` WHERE `uid` = "' . $this->info['id'] . '" AND `delete` = "0" AND `id` = "' . mysql_real_escape_string($_GET['usec1']) . '" LIMIT 1')); if (isset($cmp['id'])) { - //снимаем РІСЃРµ вещи + //снимаем все вещи mysql_query('UPDATE `items_users` SET `inOdet` = "0" WHERE `uid` = "' . $this->info['id'] . '"'); - //одеваем вещи, если РѕРЅРё РЅРµ удалены + //одеваем вещи, если они не удалены $cm = $this->lookStats($cmp['val']); $i = 1; while ($i <= 250) { @@ -1572,7 +1629,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if (isset($this->bank)) { mysql_query('UPDATE `bank` SET `useNow` = "' . (time() + 24 * 60 * 60) . '" WHERE `id` = "' . $this->bank['id'] . '" LIMIT 1'); } else { - $this->bank['error'] = 'Неверный пароль РѕС‚ счета'; + $this->bank['error'] = 'Неверный пароль от счета'; } } elseif (!isset($_GET['bank_exit'])) { $this->bank = mysql_fetch_array(mysql_query('SELECT `id`,`uid`,`block`,`create`,`pass`,`money1`,`money2`,`useNow`,`notmail` FROM `bank` WHERE `uid` = "' . $this->info['id'] . '" AND `block` = "0" AND `useNow` > ' . time() . ' ORDER BY `useNow` DESC LIMIT 1')); @@ -1583,7 +1640,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } if (!isset($_GET['obt_sel']) && $this->info['battle'] == 0 && $this->info['obraz'] != '0.gif') { - //Проверяем текущий образ + //Проверяем текущий образ $this->stats = $this->getStats($this->info['id'], 0); $tr = true; $o = mysql_fetch_array(mysql_query('SELECT `id`,`sex`,`tr`,`img`,`login`,`level`,`admin`,`align`,`clan`,`itm` FROM `obraz` WHERE `img` = "' . mysql_real_escape_string($this->info['obraz']) . '" AND `sex` = "' . $this->info['sex'] . '" AND (`login` = "" OR `login` = "' . $this->info['login'] . '") LIMIT 1')); @@ -1660,7 +1717,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $j++; } if ($tritm != '' && $tr == false) { - $this->error = 'Необходимы предметы: ' . $tritm . ''; + $this->error = 'Необходимы предметы: ' . $tritm . ''; } } while ($x < count($t)) { @@ -1668,7 +1725,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if (isset($po['tr_' . $n])) { if ($po['tr_' . $n] > $this->stats[$n]) { $tr = false; - $this->error = 'Недостаточно характеристик или параметров персонажа'; + $this->error = 'Недостаточно характеристик или параметров персонажа'; } } $x++; @@ -1687,7 +1744,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } } } else { - $this->error = 'Выбирать образ можно РЅРµ чаще РѕРґРЅРѕРіРѕ раза РІ сутки, следующая смена ' . date('d.m.Y H:i', $sm['time'] + 86400) . ''; + $this->error = 'Выбирать образ можно не чаще одного раза в сутки, следующая смена ' . date('d.m.Y H:i', $sm['time'] + 86400) . ''; unset($_GET['obr_sel']); $_GET['inv'] = 1; } @@ -1704,7 +1761,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($this->info['wipe'] != 0) { $this->wipe(); } else { - //проверяем статы + //проверяем статы } @@ -1720,24 +1777,24 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` global $magic; if (isset($_GET['use_snowball'])) { $this->stats = $this->getStats($this->info, 0); - //Начинаем лепить снежок РЅР° ЦП + //Начинаем лепить снежок на ЦП if (isset($this->stats['items'][$this->stats['wp13id']]['id']) && $this->stats['items'][$this->stats['wp13id']]['item_id'] == 998) { - //варежки одеты, РІСЃРµ РѕРє - if ($this->room['name'] != 'Центральная площадь') { - $this->error2 = 'Собирать снег можно только РЅР° Центральной площади'; + //варежки одеты, все ок + if ($this->room['name'] != 'Центральная площадь') { + $this->error2 = 'Собирать снег можно только на Центральной площади'; } else { $smt = $this->testAction('`uid` = "' . $this->info['id'] . '" AND `time`>=' . (time() - 120) . ' AND `vars` = "create_snowball_cp" LIMIT 1', 1); if (isset($smt['id'])) { - $this->error2 = 'Нельзя лепить несколько снежков одновременно ;)'; + $this->error2 = 'Нельзя лепить несколько снежков одновременно ;)'; } else { $smt = $this->testAction('`uid` = "' . $this->info['id'] . '" AND `time`>=' . strtotime('now 00:00:00') . ' AND `vars` = "create_snowball_cp" LIMIT 25', 2); $smt = $smt[0]; if ($smt < 10) { $this->addAction(time(), 'create_snowball_cp', $this->info['city']); $magic->add_eff($this->info['id'], 24); - $this->error2 = 'Начинаем лепить снежок, осталось ' . (10 - $smt) . ' раз РЅР° сегодня ...'; + $this->error2 = 'Начинаем лепить снежок, осталось ' . (10 - $smt) . ' раз на сегодня ...'; } else { - $this->error2 = 'Р’С‹ уже слепили 10 снежка Р·Р° сегодня ...'; + $this->error2 = 'Вы уже слепили 10 снежка за сегодня ...'; } } } @@ -1763,20 +1820,20 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $v = 0; } if ($t == 0) { - $names[] = ' '; - $names[] = ' '; - $names[] = ' '; - $names[] = ' '; + $names[] = ' '; + $names[] = ' '; + $names[] = ' '; + $names[] = ' '; } else { - $names[] = ' '; - $names[] = ' '; - $names[] = ' '; - $names[] = ' '; + $names[] = ' '; + $names[] = ' '; + $names[] = ' '; + $names[] = ' '; } $int = $v; do { $mod = $int % 10; - $int = floor($int / 10);//или быстрее $int = ($int-$mod)/10; + $int = floor($int / 10);//или быстрее $int = ($int-$mod)/10; $r = array_shift($names) . "" . $mod . "" . $r; } while ($int); @@ -1833,15 +1890,15 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($clon != null) { $r = false; if (is_array($clon)) { - //уже взяли инфу + //уже взяли инфу } else { $clon = $this->takePersInfo('`u`.`id` = "' . ((int)$clon) . '"'); } if (isset($clon['id'])) { if (!isset($clon['loclon'])) { - $clon['login'] .= ' (Клон)'; + $clon['login'] .= ' (Клон)'; } - //копируем пользователя + //копируем пользователя $ins1 = mysql_query('INSERT INTO `users` ( `align`, `login`, @@ -1875,7 +1932,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` )'); if ($ins1) { if ($round > 0) { - //Улучшаем РјС„. Рё статы Рё РќР  1 раунд = +10% + //Улучшаем мф. и статы и НР 1 раунд = +10% $statss = $this->lookStats($clon['stats']); // $statss['s1'] = ceil($statss['s1'] * (1 + 0.1 * ($round))); @@ -1897,7 +1954,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` unset($statss); } if ($luser == true && $clon['level'] < 8) { - //Хуже СѓРІРѕСЂРѕС‚, РєСЂРёС‚ Рё защита + //Хуже уворот, крит и защита $statss = $this->lookStats($clon['stats']); $statss['m1'] = ceil($statss['m1'] * 0.75); $statss['m2'] = ceil($statss['m2'] * 0.75); @@ -1910,16 +1967,16 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` unset($statss); } $uid = mysql_insert_id(); - //копируем статы + //копируем статы $ins2 = mysql_query('INSERT INTO `stats` (`clone`,`id`,`stats`,`hpNow`,`upLevel`,`bot`,`priems`) VALUES ("' . $clon['id'] . '","' . $uid . '","' . $clon['stats'] . '","1000000","' . $clon['upLevel'] . '","1","' . $clon['priems'] . '")'); if ($ins2) { - //копируем предметы + //копируем предметы $sp = mysql_query('SELECT `id`,`item_id`,`1price`,`2price`,`3price`,`uid`,`use_text`,`data`,`inOdet`,`inShop`,`delete`,`iznosNOW`,`iznosMAX`,`gift`,`gtxt1`,`gtxt2`,`kolvo`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`timeOver`,`overType`,`secret_id`,`time_create`,`inGroup`,`dn_delete`,`inTransfer`,`post_delivery`,`lbtl_`,`bexp`,`so`,`blvl` FROM `items_users` WHERE `uid` = "' . $clon['id'] . '" AND `inOdet` > 0 AND `delete` = "0" LIMIT 50'); while ($pl = mysql_fetch_array($sp)) { $pl['data'] = str_replace('toclan', 'to_clan_', $pl['data']); mysql_query('INSERT INTO `items_users` (`uid`,`item_id`,`data`,`inOdet`,`iznosMAX`,`kolvo`) VALUES ("' . $uid . '","' . $pl['item_id'] . '","' . $pl['data'] . '","' . $pl['inOdet'] . '","' . $pl['iznosMAX'] . '","' . $pl['kolvo'] . '")'); } - //копируем эффекты + //копируем эффекты $sp = mysql_query('SELECT `id`,`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`timeAce`,`user_use`,`delete`,`v1`,`v2`,`img2`,`x`,`hod`,`bj`,`sleeptime`,`no_Ace`,`tr_life_user` FROM `eff_users` WHERE `uid` = "' . $clon['id'] . '" AND `delete` = "0" AND `deactiveTime` < "' . time() . '" AND `v1` != "priem" LIMIT 50'); while ($pl = mysql_fetch_array($sp)) { mysql_query('INSERT INTO `eff_users` (`uid`,`id_eff`,`data`,`name`,`overType`,`timeUse`,`x`) VALUES ("' . $uid . '","' . $pl['id_eff'] . '","' . $pl['data'] . '","' . $pl['name'] . '","' . $pl['overType'] . '","' . $pl['timeUse'] . '","' . $pl['x'] . '")'); @@ -1982,7 +2039,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($ins1) { $uid = mysql_insert_id(); if ($round > 0) { - //Улучшаем РјС„. Рё статы Рё РќР  1 раунд = +20% + //Улучшаем мф. и статы и НР 1 раунд = +20% $statss = $this->lookStats($bot['stats']); // $statss['s1'] = ceil($statss['s1'] * (1 + 0.20 * ($round))); @@ -2009,7 +2066,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $bot['logins_bot'] = $logins_bot; $ret = $bot; - //Выдаем предметы + //Выдаем предметы //$this->addItem($item_id,$uid); $iu = explode(',', $bot['itemsUse']); $i = 0; @@ -2051,13 +2108,13 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } /* - * $iid Уникальный id прдемета Рё одновремено флаг что - * РїРѕРєСѓРїРєР° РёР· РєРѕРјРєР°. + * $iid Уникальный id прдемета и одновремено флаг что + * покупка из комка. */ public function buyItem($sid, $itm, $x, $mdata = null, $vip = false) { global $c, $code, $sid; - // sid 700 - 730 зарезервированный диапазон для РєСѓР·РЅРёС† РІ пещере (РђРџ вешей РґРѕ 10лвл) + // sid 700 - 730 зарезервированный диапазон для кузниц в пещере (АП вешей до 10лвл) $x = round((int)$x); if ($x < 1) { $x = 1; @@ -2073,9 +2130,9 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $test = $this->testVipItems($i['type']); } if ($vip == true && $test == false) { - $r = 'Данная РїРѕРєСѓРїРєР° ограничена VIP аккаунтом, приобретите более РґРѕСЂРѕРіРѕР№ аккаунт'; + $r = 'Данная покупка ограничена VIP аккаунтом, приобретите более дорогой аккаунт'; } elseif ($this->info['allLock'] > time()) { - $r = 'Вам запрещено совершать РїРѕРєСѓРїРєРё РґРѕ ' . date('d.m.y H:i', $this->info['allLock']) . ''; + $r = 'Вам запрещено совершать покупки до ' . date('d.m.y H:i', $this->info['allLock']) . ''; } elseif (isset($i['id'])) { if ($i['price_4'] <= 0) { $i['price_4'] = $i['price3']; @@ -2121,7 +2178,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $trn = 1; } - if (isset($i['tr_reputation']) && $i['tr_reputation'] != '') { // Требуемая репутация для РїРѕРєСѓРїРєРё + if (isset($i['tr_reputation']) && $i['tr_reputation'] != '') { // Требуемая репутация для покупки $need_rep = 0; $tr_rep = $this->lookStats($i['tr_reputation']); foreach ($tr_rep as $row) { @@ -2140,21 +2197,21 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } if ($i['max_buy'] < $x && $i['max_buy'] > 0) { - $r = 'Для РїРѕРєСѓРїРєРё доступно ' . $i['max_buy'] . ' шт.'; + $r = 'Для покупки доступно ' . $i['max_buy'] . ' шт.'; } elseif ($need_rep > 0) { - $r = 'Р’С‹ РЅРµ заслужили нашего доверия, РјС‹ РЅРµ продадим вам этот товар.'; + $r = 'Вы не заслужили нашего доверия, мы не продадим вам этот товар.'; } elseif ($mxby == -1) { - $r = 'Максимальное количество РїРѕРєСѓРїРѕРє для данного предмета исчерпана'; + $r = 'Максимальное количество покупок для данного предмета исчерпана'; } elseif ($trn == 0 && $this->info['admin'] == 0) { - $r = 'РЈ вас недостаточно требуемых предметов (РЅРµ хватает ' . $trnt . ')'; + $r = 'У вас недостаточно требуемых предметов (не хватает ' . $trnt . ')'; } elseif ($i['price_4'] * $x > ($this->rep['rep3'] - $this->rep['rep3_buy'])) { - $r = 'РЈ вас недостаточно репутации (РЅРµ хватает ' . ($price - ($this->rep['rep3'] - $this->rep['rep3_buy'])) . ' репутации.)'; + $r = 'У вас недостаточно репутации (не хватает ' . ($price - ($this->rep['rep3'] - $this->rep['rep3_buy'])) . ' репутации.)'; } else { $d = mysql_fetch_array(mysql_query('SELECT `id`,`items_id`,`data` FROM `items_main_data` WHERE `items_id` = "' . $i['id'] . '" LIMIT 1')); $this->rep['rep3_buy'] += $price; $upd = mysql_query('UPDATE `rep` SET `rep3_buy` = "' . mysql_real_escape_string($this->rep['rep3_buy']) . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); if ($upd) { - //новая дата + //новая дата $data = ''; $data .= $d['data']; if ($mdata != null) { @@ -2190,36 +2247,36 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $ix++; } if ($ins) { - //Записываем РІ личное дело что предмет получен + //Записываем в личное дело что предмет получен if ($trnt != '' && $i['tr_items'] != '') { $trnt = ', ' . $trnt; } - $r = 'Р’С‹ приобрели предмет "' . $i['name'] . '" (x' . $x . ' / ' . $gix . ') Р·Р° ' . $price . ' репутации. ' . $trnt . '
Предмет успешно добавлен РІ инвентарь.'; + $r = 'Вы приобрели предмет "' . $i['name'] . '" (x' . $x . ' / ' . $gix . ') за ' . $price . ' репутации. ' . $trnt . '
Предмет успешно добавлен в инвентарь.'; $j = 0; while ($j < count($detrn)) { $ost = ((int)$detrn[$j][1]); $s4 = mysql_query('SELECT `id`,`item_id`,`1price`,`2price`,`3price`,`uid`,`use_text`,`data`,`inOdet`,`inShop`,`delete`,`iznosNOW`,`iznosMAX`,`gift`,`gtxt1`,`gtxt2`,`kolvo`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`timeOver`,`overType`,`secret_id`,`time_create`,`inGroup`,`dn_delete`,`inTransfer`,`post_delivery`,`lbtl_`,`bexp`,`so`,`blvl` FROM `items_users` WHERE `item_id` = "' . ((int)$detrn[$j][0]) . '" AND `uid` = "' . $this->info['id'] . '" AND (`delete` = "0" OR `delete` = "1000") AND `inShop` = "0" AND `inOdet` = "0" ORDER BY `inGroup` DESC LIMIT ' . ((int)$detrn[$j][1]) . ''); while ($itm = mysql_fetch_array($s4)) { - //удаляем предмет + //удаляем предмет mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } $j++; } - //mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','','Артефактный магазин! Персонаж ".$this->info['login']." приобрел предмет "".$i['name']."" , Поздравляем СЃ удачной РїРѕРєСѓРїРєРѕР№!','-1','5','0')"); + //mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','','Артефактный магазин! Персонаж ".$this->info['login']." приобрел предмет "".$i['name']."" , Поздравляем с удачной покупкой!','-1','5','0')"); mysql_query('UPDATE `items_shop` SET `kolvo` = "' . ($i['kolvo'] - $x) . '" WHERE `iid` = "' . $i['iid'] . '" LIMIT 1'); - $ld = $this->addDelo(1, $this->info['id'], '"Shop.' . $this->info['city'] . '": Приобрел предмет "' . $i['name'] . '" (x' . $x . ') [#' . $i['iid'] . '] Р·Р° ' . $price . ' репутации.', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); + $ld = $this->addDelo(1, $this->info['id'], '"Shop.' . $this->info['city'] . '": Приобрел предмет "' . $i['name'] . '" (x' . $x . ') [#' . $i['iid'] . '] за ' . $price . ' репутации.', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); } else { - //Записываем РІ личное дело что предмет РЅРµ получен - $r = 'Вам РЅРµ удалось приобрести "' . $i['name'] . '". Администрация магазина РІ "' . $this->city_name[$this->info['city']] . '" должна Вам ' . $price . ' репутации.
РџСЂРёРЅРѕСЃРёРј СЃРІРѕРё извинения Р·Р° неудобства.'; - $ld = $this->addDelo(1, $this->info['id'], '"Shop.' . $this->info['city'] . '": РЅРµ удалось приобрести предмет #' . $i['iid'] . '. Рљ возрату: ' . $price . ' репутации. ', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); + //Записываем в личное дело что предмет не получен + $r = 'Вам не удалось приобрести "' . $i['name'] . '". Администрация магазина в "' . $this->city_name[$this->info['city']] . '" должна Вам ' . $price . ' репутации.
Приносим свои извинения за неудобства.'; + $ld = $this->addDelo(1, $this->info['id'], '"Shop.' . $this->info['city'] . '": не удалось приобрести предмет #' . $i['iid'] . '. К возрату: ' . $price . ' репутации. ', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); if (!$ld) { - echo '
Ошибка, невозможно добавить запись в /db/usersDelo/!
'; + echo '
Ошибка, невозможно добавить запись в /db/usersDelo/!
'; } } } else { - $r = 'Вам РЅРµ удалось приобрести предмет...'; + $r = 'Вам не удалось приобрести предмет...'; } } } elseif ($i['price_3'] > 0) { @@ -2262,7 +2319,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $trn = 1; } - if (isset($i['tr_reputation']) && $i['tr_reputation'] != '') { // Требуемая репутация для РїРѕРєСѓРїРєРё + if (isset($i['tr_reputation']) && $i['tr_reputation'] != '') { // Требуемая репутация для покупки $need_rep = 0; $tr_rep = $this->lookStats($i['tr_reputation']); foreach ($tr_rep as $row) { @@ -2281,21 +2338,21 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } if ($i['max_buy'] < $x && $i['max_buy'] > 0) { - $r = 'Для РїРѕРєСѓРїРєРё доступно ' . $i['max_buy'] . ' шт.'; + $r = 'Для покупки доступно ' . $i['max_buy'] . ' шт.'; } elseif ($need_rep > 0) { - $r = 'Р’С‹ РЅРµ заслужили нашего доверия, РјС‹ РЅРµ продадим вам этот товар.'; + $r = 'Вы не заслужили нашего доверия, мы не продадим вам этот товар.'; } elseif ($mxby == -1) { - $r = 'Максимальное количество РїРѕРєСѓРїРѕРє для данного предмета исчерпана'; + $r = 'Максимальное количество покупок для данного предмета исчерпана'; } elseif ($trn == 0 && $this->info['admin'] == 0) { - $r = 'РЈ вас недостаточно требуемых предметов (РЅРµ хватает ' . $trnt . ')'; + $r = 'У вас недостаточно требуемых предметов (не хватает ' . $trnt . ')'; } elseif ($i['price_3'] * $x > $this->info['money3']) { - $r = 'РЈ вас недостаточно валюты (РЅРµ хватает ' . ($price - $this->info['money3']) . ' $)'; + $r = 'У вас недостаточно валюты (не хватает ' . ($price - $this->info['money3']) . ' $)'; } else { $d = mysql_fetch_array(mysql_query('SELECT `id`,`items_id`,`data` FROM `items_main_data` WHERE `items_id` = "' . $i['id'] . '" LIMIT 1')); $this->info['money3'] -= $price; $upd = mysql_query('UPDATE `users` SET `money3` = "' . mysql_real_escape_string($this->info['money3']) . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); if ($upd) { - //новая дата + //новая дата $data = ''; $data .= $d['data']; if ($mdata != null) { @@ -2331,36 +2388,36 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $ix++; } if ($ins) { - //Записываем РІ личное дело что предмет получен + //Записываем в личное дело что предмет получен if ($trnt != '' && $i['tr_items'] != '') { $trnt = ', ' . $trnt; } - $r = 'Р’С‹ приобрели предмет "' . $i['name'] . '" (x' . $x . ' / ' . $gix . ') Р·Р° ' . $price . ' $. ' . $trnt . '
Предмет успешно добавлен РІ инвентарь.'; + $r = 'Вы приобрели предмет "' . $i['name'] . '" (x' . $x . ' / ' . $gix . ') за ' . $price . ' $. ' . $trnt . '
Предмет успешно добавлен в инвентарь.'; $j = 0; while ($j < count($detrn)) { $ost = ((int)$detrn[$j][1]); $s4 = mysql_query('SELECT `id`,`item_id`,`1price`,`2price`,`3price`,`uid`,`use_text`,`data`,`inOdet`,`inShop`,`delete`,`iznosNOW`,`iznosMAX`,`gift`,`gtxt1`,`gtxt2`,`kolvo`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`timeOver`,`overType`,`secret_id`,`time_create`,`inGroup`,`dn_delete`,`inTransfer`,`post_delivery`,`lbtl_`,`bexp`,`so`,`blvl` FROM `items_users` WHERE `item_id` = "' . ((int)$detrn[$j][0]) . '" AND `uid` = "' . $this->info['id'] . '" AND (`delete` = "0" OR `delete` = "1000") AND `inShop` = "0" AND `inOdet` = "0" ORDER BY `inGroup` DESC LIMIT ' . ((int)$detrn[$j][1]) . ''); while ($itm = mysql_fetch_array($s4)) { - //удаляем предмет + //удаляем предмет mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } $j++; } - //mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','','Артефактный магазин! Персонаж ".$this->info['login']." приобрел предмет "".$i['name']."" , Поздравляем СЃ удачной РїРѕРєСѓРїРєРѕР№!','-1','5','0')"); + //mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','','Артефактный магазин! Персонаж ".$this->info['login']." приобрел предмет "".$i['name']."" , Поздравляем с удачной покупкой!','-1','5','0')"); mysql_query('UPDATE `items_shop` SET `kolvo` = "' . ($i['kolvo'] - $x) . '" WHERE `iid` = "' . $i['iid'] . '" LIMIT 1'); - $ld = $this->addDelo(1, $this->info['id'], '"Shop.' . $this->info['city'] . '": Приобрел предмет "' . $i['name'] . '" (x' . $x . ') [#' . $i['iid'] . '] Р·Р° ' . $price . ' $', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); + $ld = $this->addDelo(1, $this->info['id'], '"Shop.' . $this->info['city'] . '": Приобрел предмет "' . $i['name'] . '" (x' . $x . ') [#' . $i['iid'] . '] за ' . $price . ' $', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); } else { - //Записываем РІ личное дело что предмет РЅРµ получен - $r = 'Вам РЅРµ удалось приобрести "' . $i['name'] . '". Администрация магазина РІ "' . $this->city_name[$this->info['city']] . '" должна Вам ' . $price . ' $
РџСЂРёРЅРѕСЃРёРј СЃРІРѕРё извинения Р·Р° неудобства.'; - $ld = $this->addDelo(1, $this->info['id'], '"Shop.' . $this->info['city'] . '": РЅРµ удалось приобрести предмет #' . $i['iid'] . '. Рљ возрату: ' . $price . ' $ ', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); + //Записываем в личное дело что предмет не получен + $r = 'Вам не удалось приобрести "' . $i['name'] . '". Администрация магазина в "' . $this->city_name[$this->info['city']] . '" должна Вам ' . $price . ' $
Приносим свои извинения за неудобства.'; + $ld = $this->addDelo(1, $this->info['id'], '"Shop.' . $this->info['city'] . '": не удалось приобрести предмет #' . $i['iid'] . '. К возрату: ' . $price . ' $ ', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); if (!$ld) { - echo '
Ошибка, невозможно добавить запись в /db/usersDelo/!
'; + echo '
Ошибка, невозможно добавить запись в /db/usersDelo/!
'; } } } else { - $r = 'Вам РЅРµ удалось приобрести предмет...'; + $r = 'Вам не удалось приобрести предмет...'; } } } elseif ($sid == 2 || $sid == 777) { @@ -2377,14 +2434,14 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $i['price_2'] = round($i['price_2'] / 20, 2); } - //РЎРєРёРґРєР° РІ государственный магазин 5% + //Скидка в государственный магазин 5% if ($this->stats['silver'] >= 1) { if ($sid == 2) { $i['price_1'] = round($i['price_1'] / 100 * 95, 2); } } - //РЎРєРёРґРєР° РІ березку магазин 5% + //Скидка в березку магазин 5% if ($this->stats['silver'] >= 5) { if ($sid == 2) { $i['price_2'] = round($i['price_2'] / 100 * 95, 2); @@ -2401,11 +2458,11 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } if ($i['max_buy'] < $x && $i['max_buy'] > 0) { - $r = 'Для РїРѕРєСѓРїРєРё доступно ' . $i['max_buy'] . ' шт.'; + $r = 'Для покупки доступно ' . $i['max_buy'] . ' шт.'; } elseif ($mxby == -1) { - $r = 'Максимальное количество РїРѕРєСѓРїРѕРє для данного предмета исчерпана'; + $r = 'Максимальное количество покупок для данного предмета исчерпана'; } elseif ($i['price_2'] * $x > $this->info['money2']) { - $r = 'РЈ вас недостаточно денег РЅР° счете (РЅРµ хватает ' . ($price - $this->info['money2']) . ' екр.)'; + $r = 'У вас недостаточно денег на счете (не хватает ' . ($price - $this->info['money2']) . ' екр.)'; } else { $d = mysql_fetch_array(mysql_query('SELECT `id`,`items_id`,`data` FROM `items_main_data` WHERE `items_id` = "' . $i['id'] . '" LIMIT 1')); $this->info['money2'] -= $price; @@ -2413,7 +2470,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($upd) { $this->info['frg'] += $price; mysql_query('UPDATE `users` SET `frg` = "' . floor($this->info['frg']) . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); - //новая дата + //новая дата $data = ''; $data .= $d['data']; $i['time_create'] = time(); @@ -2456,23 +2513,23 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $ix++; } if ($ins) { - //Записываем РІ личное дело что предмет получен - $r = 'Р’С‹ приобрели предмет "' . $i['name'] . '" (x' . $x . ' / ' . $gix . ') Р·Р° ' . $price . ' екр.
Предмет успешно добавлен РІ инвентарь.'; + //Записываем в личное дело что предмет получен + $r = 'Вы приобрели предмет "' . $i['name'] . '" (x' . $x . ' / ' . $gix . ') за ' . $price . ' екр.
Предмет успешно добавлен в инвентарь.'; mysql_query('UPDATE `items_shop` SET `kolvo` = "' . ($i['kolvo'] - $x) . '" WHERE `iid` = "' . $i['iid'] . '" LIMIT 1'); - $ld = $this->addDelo(1, $this->info['id'], '"EkrShop.' . $this->info['city'] . '": Приобрел предмет "' . $i['name'] . '" (x' . $x . ',add items ' . $gix . ') [#' . $i['iid'] . '] Р·Р° ' . $price . ' екр.', time(), $this->info['city'], 'EkrShop.' . $this->info['city'] . '', (int)$price, 0); + $ld = $this->addDelo(1, $this->info['id'], '"EkrShop.' . $this->info['city'] . '": Приобрел предмет "' . $i['name'] . '" (x' . $x . ',add items ' . $gix . ') [#' . $i['iid'] . '] за ' . $price . ' екр.', time(), $this->info['city'], 'EkrShop.' . $this->info['city'] . '', (int)$price, 0); } else { - //Записываем РІ личное дело что предмет РЅРµ получен - $r = 'Вам РЅРµ удалось приобрести "' . $i['name'] . '". Администрация магазина РІ "' . $this->city_name[$this->info['city']] . '" должна Вам ' . $price . ' екр.
РџСЂРёРЅРѕСЃРёРј СЃРІРѕРё извинения Р·Р° неудобства.'; - $ld = $this->addDelo(1, $this->info['id'], '"EkrShop.' . $this->info['city'] . '": РЅРµ удалось приобрести предмет #' . $i['iid'] . '. Рљ возрату: ' . $price . ' екр.', time(), $this->info['city'], 'EkrShop.' . $this->info['city'] . '', 0, 0); + //Записываем в личное дело что предмет не получен + $r = 'Вам не удалось приобрести "' . $i['name'] . '". Администрация магазина в "' . $this->city_name[$this->info['city']] . '" должна Вам ' . $price . ' екр.
Приносим свои извинения за неудобства.'; + $ld = $this->addDelo(1, $this->info['id'], '"EkrShop.' . $this->info['city'] . '": не удалось приобрести предмет #' . $i['iid'] . '. К возрату: ' . $price . ' екр.', time(), $this->info['city'], 'EkrShop.' . $this->info['city'] . '', 0, 0); if (!$ld) { - echo '
Ошибка, невозможно добавить запись в /db/usersDelo/!
'; + echo '
Ошибка, невозможно добавить запись в /db/usersDelo/!
'; } } } else { - $r = 'Вам РЅРµ удалось приобрести предмет...'; + $r = 'Вам не удалось приобрести предмет...'; } } - } elseif (($sid >= 700 && $sid <= 730) /*OR ( $sid >= 800 && $sid <=805 )*/) { // nalpva2.php Покупаем предмет, Рё перемещаем РІ него Чарку, Р СѓРЅСѓ Рё прочее. + } elseif (($sid >= 700 && $sid <= 730) /*OR ( $sid >= 800 && $sid <=805 )*/) { // nalpva2.php Покупаем предмет, и перемещаем в него Чарку, Руну и прочее. if ($i['kolvo'] < $x) $x = $i['kolvo']; if ($x < 1) $x = 1; if ($i['price_1'] <= 0 && $i['tr_items'] == '') $i['price_1'] = $i['price1']; @@ -2511,7 +2568,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $trn = 1; } - if (isset($i['tr_reputation']) && $i['tr_reputation'] != '') { // Требуемая репутация для РїРѕРєСѓРїРєРё + if (isset($i['tr_reputation']) && $i['tr_reputation'] != '') { // Требуемая репутация для покупки $need_rep = 0; $tr_rep = $this->lookStats($i['tr_reputation']); foreach ($tr_rep as $row) { @@ -2530,17 +2587,17 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } if ($i['max_buy'] < $x && $i['max_buy'] > 0) { - $r = 'Для РїРѕРєСѓРїРєРё доступно ' . $i['max_buy'] . ' шт.'; + $r = 'Для покупки доступно ' . $i['max_buy'] . ' шт.'; } elseif ($need_rep > 0) { - $r = 'Р’С‹ РЅРµ заслужили нашего доверия, РјС‹ РЅРµ продадим вам этот товар.'; + $r = 'Вы не заслужили нашего доверия, мы не продадим вам этот товар.'; } elseif ($i['price_1'] * $x > $this->info['money4'] && $zuby == 1) { - $r = 'РЈ вас недостаточно денег.'; + $r = 'У вас недостаточно денег.'; } elseif ($mxby == -1) { - $r = 'Максимальное количество РїРѕРєСѓРїРѕРє для данного предмета исчерпана
Возможно купить: ' . $i['max_buy'] . ' шт.'; + $r = 'Максимальное количество покупок для данного предмета исчерпана
Возможно купить: ' . $i['max_buy'] . ' шт.'; } elseif ($trn == 0 && $this->info['admin'] == 0) { - $r = 'РЈ вас недостаточно требуемых предметов (РЅРµ хватает ' . $trnt . ')'; + $r = 'У вас недостаточно требуемых предметов (не хватает ' . $trnt . ')'; } elseif ($i['price_1'] * $x > $this->info['money'] && $zuby == 0) { - $r = 'РЈ вас недостаточно денег (РЅРµ хватает ' . ($price - $this->info['money']) . ' РєСЂ.)'; + $r = 'У вас недостаточно денег (не хватает ' . ($price - $this->info['money']) . ' кр.)'; } else { $d = mysql_fetch_array(mysql_query('SELECT `id`,`items_id`,`data` FROM `items_main_data` WHERE `items_id` = "' . $i['id'] . '" LIMIT 1')); if ($zuby == 0) { @@ -2548,7 +2605,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $upd = mysql_query('UPDATE `users` SET `money` = "' . mysql_real_escape_string(round($this->info['money'], 2)) . '",`money4` = "' . mysql_real_escape_string(round($this->info['money4'], 2)) . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); if ($upd) { - //новая дата + //новая дата $data = ''; $data .= $d['data']; if ($mdata != null) { @@ -2607,11 +2664,11 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } if ($c_itm > 0) { $data = $this->lookStats($data); - // Чарка + // Чарка if (isset($c_itm_data_a['spell_st_name']) && isset($c_itm_data_a['spell_st_val']) && $c_itm_data_a['spell_st_name'] != '' && $c_itm_data_a['spell_st_val'] != '') { $data['add_' . $c_itm_data_a['spell_st_name']] = (int)(isset($data['add_' . $c_itm_data_a['spell_st_name']]) ? (int)$data['add_' . $c_itm_data_a['spell_st_name']] : 0) + (int)$c_itm_data_a['spell_st_val']; } - // Р СѓРЅР° + // Руна if (isset($c_itm_data_a['rune']) && $c_itm_data_a['rune'] > 0) { $ritm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main_data` WHERE `items_id` = "' . $c_itm_data_a['rune_id'] . '" LIMIT 1')); @@ -2667,15 +2724,15 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $ix++; } if ($ins) { - //Записываем РІ личное дело что предмет получен + //Записываем в личное дело что предмет получен if ($trnt != '' && $i['tr_items'] != '') { $trnt = ', ' . $trnt; } if ($zuby == 0) { - $r = 'Р’С‹ приобрели предмет "' . $i['name'] . '" (x' . $x . ' / ' . $gix . ') Р·Р° ' . $price . ' РєСЂ. ' . $trnt . '
Предмет успешно добавлен РІ инвентарь.'; + $r = 'Вы приобрели предмет "' . $i['name'] . '" (x' . $x . ' / ' . $gix . ') за ' . $price . ' кр. ' . $trnt . '
Предмет успешно добавлен в инвентарь.'; } else { - $r = 'Р’С‹ приобрели предмет "' . $i['name'] . '" (x' . $x . ' / ' . $gix . ') Р·Р° ' . $this->zuby($price) . '. ' . $trnt . '
Предмет успешно добавлен РІ инвентарь.'; + $r = 'Вы приобрели предмет "' . $i['name'] . '" (x' . $x . ' / ' . $gix . ') за ' . $this->zuby($price) . '. ' . $trnt . '
Предмет успешно добавлен в инвентарь.'; } $j = 0; @@ -2683,27 +2740,27 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $ost = ((int)$detrn[$j][1]); $s4 = mysql_query('SELECT `id`,`item_id`,`1price`,`2price`,`3price`,`uid`,`use_text`,`data`,`inOdet`,`inShop`,`delete`,`iznosNOW`,`iznosMAX`,`gift`,`gtxt1`,`gtxt2`,`kolvo`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`timeOver`,`overType`,`secret_id`,`time_create`,`inGroup`,`dn_delete`,`inTransfer`,`post_delivery`,`lbtl_`,`bexp`,`so`,`blvl` FROM `items_users` WHERE `item_id` = "' . ((int)$detrn[$j][0]) . '" AND `uid` = "' . $this->info['id'] . '" AND (`delete` = "0" OR `delete` = "1000") AND `inShop` = "0" AND `inOdet` = "0" ORDER BY `inGroup` DESC LIMIT ' . ((int)$detrn[$j][1]) . ''); while ($itm = mysql_fetch_array($s4)) { - //удаляем предмет + //удаляем предмет mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } $j++; } mysql_query('UPDATE `items_shop` SET `kolvo` = "' . ($i['kolvo'] - $x) . '" WHERE `iid` = "' . $i['iid'] . '" LIMIT 1'); - $ld = $this->addDelo(1, $this->info['id'], '"Shop.' . $this->info['city'] . '": Приобрел предмет "' . $i['name'] . '" (x' . $x . ') [#' . $i['iid'] . '] Р·Р° ' . $price . ' РєСЂ.', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); + $ld = $this->addDelo(1, $this->info['id'], '"Shop.' . $this->info['city'] . '": Приобрел предмет "' . $i['name'] . '" (x' . $x . ') [#' . $i['iid'] . '] за ' . $price . ' кр.', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); } else { - //Записываем РІ личное дело что предмет РЅРµ получен - $r = 'Вам РЅРµ удалось приобрести "' . $i['name'] . '". Администрация магазина РІ "' . $this->city_name[$this->info['city']] . '" должна Вам ' . $price . ' РєСЂ.
РџСЂРёРЅРѕСЃРёРј СЃРІРѕРё извинения Р·Р° неудобства.'; - $ld = $this->addDelo(1, $this->info['id'], '"Shop.' . $this->info['city'] . '": РЅРµ удалось приобрести предмет #' . $i['iid'] . '. Рљ возрату: ' . $price . ' РєСЂ.', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); + //Записываем в личное дело что предмет не получен + $r = 'Вам не удалось приобрести "' . $i['name'] . '". Администрация магазина в "' . $this->city_name[$this->info['city']] . '" должна Вам ' . $price . ' кр.
Приносим свои извинения за неудобства.'; + $ld = $this->addDelo(1, $this->info['id'], '"Shop.' . $this->info['city'] . '": не удалось приобрести предмет #' . $i['iid'] . '. К возрату: ' . $price . ' кр.', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); if (!$ld) { - echo '
Ошибка, невозможно добавить запись в /db/usersDelo/!
'; + echo '
Ошибка, невозможно добавить запись в /db/usersDelo/!
'; } } } else { - $r = 'Вам РЅРµ удалось приобрести предмет...'; + $r = 'Вам не удалось приобрести предмет...'; } } - } else { // Стандартная РїРѕРєСѓРїРєР° предмета + } else { // Стандартная покупка предмета if ($i['kolvo'] < $x) { $x = $i['kolvo']; } @@ -2717,12 +2774,12 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $i['price_2'] = $i['price2']; } - //РЎРєРёРґРєР° РІ государственный магазин 5% + //Скидка в государственный магазин 5% if ($this->stats['silver'] >= 1 && $sid == 1) { $i['price_1'] = round($i['price_1'] / 100 * 95, 2); } - //РЎРєРёРґРєР° РІ березку магазин 5% + //Скидка в березку магазин 5% if ($this->stats['silver'] >= 5 && $sid == 2) { $i['price_2'] = round($i['price_2'] / 100 * 95, 2); } @@ -2761,7 +2818,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $trn = 1; } - if (isset($i['tr_reputation']) && $i['tr_reputation'] != '') { // Требуемая репутация для РїРѕРєСѓРїРєРё + if (isset($i['tr_reputation']) && $i['tr_reputation'] != '') { // Требуемая репутация для покупки $need_rep = 0; $tr_rep = $this->lookStats($i['tr_reputation']); foreach ($tr_rep as $key => $val) { @@ -2788,25 +2845,25 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $po = $this->lookStats($d['data']); if ($zuby == 1 && $po['tr_lvl'] > 7) { - $r = 'Данный предмет нельзя приобрести Р·Р° Р·СѓР±С‹.'; + $r = 'Данный предмет нельзя приобрести за зубы.'; } elseif (!isset($this->sid_zuby[$sid]) && $zuby == 1) { - $r = 'Данный предмет нельзя приобрести Р·Р° Р·СѓР±С‹.'; + $r = 'Данный предмет нельзя приобрести за зубы.'; } elseif ($zuby == 1 && $i['nozuby'] == 1) { - $r = 'Данный предмет нельзя приобрести Р·Р° Р·СѓР±С‹.'; + $r = 'Данный предмет нельзя приобрести за зубы.'; } elseif ($i['max_buy'] < $x && $i['max_buy'] > 0) { - $r = 'Для РїРѕРєСѓРїРєРё доступно ' . $i['max_buy'] . ' шт.'; + $r = 'Для покупки доступно ' . $i['max_buy'] . ' шт.'; } elseif (isset($need_rep) && $need_rep == 0) { - $r = 'Р’С‹ РЅРµ заслужили нашего доверия, РјС‹ РЅРµ продадим вам этот товар.'; + $r = 'Вы не заслужили нашего доверия, мы не продадим вам этот товар.'; } elseif ($zuby == 1 && $this->info['money4'] < $i['price_1']) { - $r = 'РЈ вас недостаточно Р·СѓР±РѕРІ.'; + $r = 'У вас недостаточно зубов.'; } elseif ($i['price_1'] * $x > $this->info['money4'] && $zuby == 1) { - $r = 'РЈ вас недостаточно денег.'; + $r = 'У вас недостаточно денег.'; } elseif ($mxby == -1) { - $r = 'Максимальное количество РїРѕРєСѓРїРѕРє для данного предмета исчерпана
Возможно купить: ' . $i['max_buy'] . ' шт.'; + $r = 'Максимальное количество покупок для данного предмета исчерпана
Возможно купить: ' . $i['max_buy'] . ' шт.'; } elseif ($trn == 0 && $this->info['admin'] == 0) { - $r = 'РЈ вас недостаточно требуемых предметов (РЅРµ хватает ' . $trnt . ')'; + $r = 'У вас недостаточно требуемых предметов (не хватает ' . $trnt . ')'; } elseif ($i['price_1'] * $x > $this->info['money'] && $zuby == 0) { - $r = 'РЈ вас недостаточно денег (РЅРµ хватает ' . ($price - $this->info['money']) . ' РєСЂ.)'; + $r = 'У вас недостаточно денег (не хватает ' . ($price - $this->info['money']) . ' кр.)'; } else { if ($zuby == 0) { $this->info['money'] -= $price; @@ -2815,7 +2872,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $upd = mysql_query('UPDATE `users` SET `money` = "' . mysql_real_escape_string(round($this->info['money'], 2)) . '",`money4` = "' . mysql_real_escape_string(round($this->info['money4'], 2)) . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); if ($upd) { - //новая дата + //новая дата $data = ''; $data .= $d['data']; $data = str_replace('sudba=1', 'sudba=' . $this->info['login'], $data); @@ -2868,15 +2925,15 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $ix++; } if ($ins) { - //Записываем РІ личное дело что предмет получен + //Записываем в личное дело что предмет получен if ($trnt != '' && $i['tr_items'] != '') { $trnt = ', ' . $trnt; } if ($zuby == 0) { - $r = 'Р’С‹ приобрели предмет "' . $i['name'] . '" (x' . $x . ' / ' . $gix . ') Р·Р° ' . $price . ' РєСЂ. ' . $trnt . '
Предмет успешно добавлен РІ инвентарь.'; + $r = 'Вы приобрели предмет "' . $i['name'] . '" (x' . $x . ' / ' . $gix . ') за ' . $price . ' кр. ' . $trnt . '
Предмет успешно добавлен в инвентарь.'; } else { - $r = 'Р’С‹ приобрели предмет "' . $i['name'] . '" (x' . $x . ' / ' . $gix . ') Р·Р° ' . $this->zuby($price) . '. ' . $trnt . '
Предмет успешно добавлен РІ инвентарь.'; + $r = 'Вы приобрели предмет "' . $i['name'] . '" (x' . $x . ' / ' . $gix . ') за ' . $this->zuby($price) . '. ' . $trnt . '
Предмет успешно добавлен в инвентарь.'; } $zx = 0; @@ -2885,14 +2942,14 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if (($sid == 1 || $sid == 5) && $i['level'] >= 4 && round($price / $x) > 25) { if ($this->stats['shopSale'] == 0 && $c['nosanich'] == false) { - //Выдаем странички Саныча РІ РіРѕСЃ магазине Рё канаве - $prmn = 0; //дополнительный Р±РѕРЅСѓСЃ + //Выдаем странички Саныча в гос магазине и канаве + $prmn = 0; //дополнительный бонус $prmn = (1 - (pow(0.5, ($price / $x / 200)))) * 100; $prmn = round(20 / 100 * $prmn); if (rand(0, 100) < 20 + $prmn && rand(0, 100) > 80 - $prmn) { //3143 - 3192 if (rand(0, 100) < 20 + $prmn && rand(0, 100) > 80 - $prmn) { - //обложка + //обложка $gitm = rand(3193, 3195); } else { $gitm = rand(3143, 3192); @@ -2901,7 +2958,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $gitm = 3194; } if ($sid == 5) { - //привязываем СЃСѓРґСЊР±РѕР№ + //привязываем судьбой } $this->addItem($gitm, $this->info['id']); $rs++; @@ -2913,19 +2970,19 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($rs > 1) { if (rand(0, 1) == 1) { - $r .= ' Предмет был завернут РІ какую-то бумажку. (x' . $rs . ')'; + $r .= ' Предмет был завернут в какую-то бумажку. (x' . $rs . ')'; } elseif (rand(0, 1)) { - $r .= ' Предмет был завернут РІ странный свиток. (x' . $rs . ')'; + $r .= ' Предмет был завернут в странный свиток. (x' . $rs . ')'; } else { - $r .= ' Рљ предмету была прикреплена какая-та бумажка. (x' . $rs . ')'; + $r .= ' К предмету была прикреплена какая-та бумажка. (x' . $rs . ')'; } } elseif ($rs > 0) { if (rand(0, 1) == 1) { - $r .= ' Предмет был завернут РІ какую-то бумажку.'; + $r .= ' Предмет был завернут в какую-то бумажку.'; } elseif (rand(0, 1)) { - $r .= ' Предмет был завернут РІ странный свиток.'; + $r .= ' Предмет был завернут в странный свиток.'; } else { - $r .= ' Рљ предмету была прикреплена какая-та бумажка.'; + $r .= ' К предмету была прикреплена какая-та бумажка.'; } } @@ -2935,7 +2992,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $ost = ((int)$detrn[$j][1]); $s4 = mysql_query('SELECT `id`,`item_id`,`1price`,`2price`,`3price`,`uid`,`use_text`,`data`,`inOdet`,`inShop`,`delete`,`iznosNOW`,`iznosMAX`,`gift`,`gtxt1`,`gtxt2`,`kolvo`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`timeOver`,`overType`,`secret_id`,`time_create`,`inGroup`,`dn_delete`,`inTransfer`,`post_delivery`,`lbtl_`,`bexp`,`so`,`blvl` FROM `items_users` WHERE `item_id` = "' . ((int)$detrn[$j][0]) . '" AND `uid` = "' . $this->info['id'] . '" AND (`delete` = "0" OR `delete` = "1000") AND `inShop` = "0" AND `inOdet` = "0" ORDER BY `inGroup` DESC LIMIT ' . ((int)$detrn[$j][1]) . ''); while ($itm = mysql_fetch_array($s4)) { - //удаляем предмет + //удаляем предмет mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } $j++; @@ -2945,24 +3002,24 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` mysql_query('UPDATE `items_shop` SET `kolvo` = "' . ($i['kolvo'] - $x) . '" WHERE `iid` = "' . $i['iid'] . '" LIMIT 1'); $zuby_inf = ''; if ($zuby == 1) { - $zuby_inf = ' (Р—Р° Р·СѓР±С‹)'; + $zuby_inf = ' (За зубы)'; } - $ld = $this->addDelo(1, $this->info['id'], '"Shop.' . $this->info['city'] . '": Приобрел предмет "' . $i['name'] . '" (x' . $x . ') [#' . $i['iid'] . '] Р·Р° ' . $price . ' РєСЂ.' . $zuby_inf . '', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); + $ld = $this->addDelo(1, $this->info['id'], '"Shop.' . $this->info['city'] . '": Приобрел предмет "' . $i['name'] . '" (x' . $x . ') [#' . $i['iid'] . '] за ' . $price . ' кр.' . $zuby_inf . '', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); } else { - //Записываем РІ личное дело что предмет РЅРµ получен - $r = 'Вам РЅРµ удалось приобрести "' . $i['name'] . '". Администрация магазина РІ "' . $this->city_name[$this->info['city']] . '" должна Вам ' . $price . ' РєСЂ.
РџСЂРёРЅРѕСЃРёРј СЃРІРѕРё извинения Р·Р° неудобства.'; - $ld = $this->addDelo(1, $this->info['id'], '"Shop.' . $this->info['city'] . '": РЅРµ удалось приобрести предмет #' . $i['iid'] . '. Рљ возрату: ' . $price . ' РєСЂ.', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); + //Записываем в личное дело что предмет не получен + $r = 'Вам не удалось приобрести "' . $i['name'] . '". Администрация магазина в "' . $this->city_name[$this->info['city']] . '" должна Вам ' . $price . ' кр.
Приносим свои извинения за неудобства.'; + $ld = $this->addDelo(1, $this->info['id'], '"Shop.' . $this->info['city'] . '": не удалось приобрести предмет #' . $i['iid'] . '. К возрату: ' . $price . ' кр.', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); if (!$ld) { - echo '
Ошибка, невозможно добавить запись в /db/usersDelo/!
'; + echo '
Ошибка, невозможно добавить запись в /db/usersDelo/!
'; } } } else { - $r = 'Вам РЅРµ удалось приобрести предмет...'; + $r = 'Вам не удалось приобрести предмет...'; } } } } else { - $r = 'Предмет РЅРµ найден РЅР° прилавке'; + $r = 'Предмет не найден на прилавке'; } return '
' . $r . '
'; } @@ -2980,7 +3037,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $this->info['money2'] += $pensia2[1]; mysql_query('UPDATE `users` SET `money2` = `money2` + "' . $pensia2[1] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); } - $this->error = 'Вам начислен Р±РѕРЅСѓСЃ РІ размере ' . $pensia1 . '! '; + $this->error = 'Вам начислен бонус в размере ' . $pensia1 . '! '; mysql_query('INSERT INTO `aaa_bonus` ( `uid`,`time`,`afk`,`type`,`money` ) VALUES ( @@ -3023,7 +3080,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $price = $i2['1price']; if (isset($i2['id']) && isset($iid) && $sid == 1 && $i2['inShop'] == 30) { if ($price > $this->info['money']) - $r = 'РЈ вас недостаточно денег (РЅРµ хватает ' . ($price - $this->info['money']) . ' РєСЂ.)'; + $r = 'У вас недостаточно денег (не хватает ' . ($price - $this->info['money']) . ' кр.)'; else { $UpdMoney = mysql_query('UPDATE `users` SET `money` = "' . mysql_real_escape_string(round($this->info['money'] - $price, 2)) . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); if ($UpdMoney) { @@ -3036,31 +3093,31 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } else { $UpItems = mysql_query('UPDATE `items_users` SET `uid` = ' . $this->info['id'] . ', `1price` = "' . $i1['price1'] . '", `lastUPD` = "' . time() . '", `inShop` = 0 WHERE `id` = "' . $iid . '" AND `inOdet` = "0" AND `delete` = "0" AND `uid`="' . $i2['uid'] . '" LIMIT 1'); } - //Вставляем функцию передачи кредитов владельцу предмета + //Вставляем функцию передачи кредитов владельцу предмета if ($UpItems) { - //Записываем РІ личное дело что предмет получен - $r = 'Р’С‹ приобрели предмет "' . $i1['name'] . ($col > 1 ? ' (x' . $col . ')' : '') . '" Р·Р° ' . $price . ' РєСЂ.
Предмет успешно добавлен РІ инвентарь.'; - $ld = $this->addDelo(1, $this->info['id'], '"ComissShop.' . $this->info['city'] . '": Приобрел предмет "' . $i1['name'] . ($col > 1 ? ' (x' . $col . ')' : '') . '" [item:' . $iid . '] РІ РєРѕРјРјРёСЃРёРѕРЅРЅРѕРј магазине Р·Р° ' . $price . ' РєСЂ. [Продавец: ' . ($i2['login'] != '' ? '' . $i2['login'] . '' : '(' . $i2['uid'] . ')') . ']', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', $price, 0); + //Записываем в личное дело что предмет получен + $r = 'Вы приобрели предмет "' . $i1['name'] . ($col > 1 ? ' (x' . $col . ')' : '') . '" за ' . $price . ' кр.
Предмет успешно добавлен в инвентарь.'; + $ld = $this->addDelo(1, $this->info['id'], '"ComissShop.' . $this->info['city'] . '": Приобрел предмет "' . $i1['name'] . ($col > 1 ? ' (x' . $col . ')' : '') . '" [item:' . $iid . '] в коммисионном магазине за ' . $price . ' кр. [Продавец: ' . ($i2['login'] != '' ? '' . $i2['login'] . '' : '(' . $i2['uid'] . ')') . ']', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', $price, 0); $u2s = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $i2['uid'] . '" LIMIT 1')); - $ld = $this->addDelo(1, $u2s['id'], '"ComissShop.' . $this->info['city'] . '": Продал предмет "' . $i1['name'] . ($col > 1 ? ' (x' . $col . ')' : '') . '" [item:' . $iid . '] через коммисионный магазине Р·Р° ' . $price . ' РєСЂ. [Покупатель: ' . $this->info['login'] . ']', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', 0, $price); + $ld = $this->addDelo(1, $u2s['id'], '"ComissShop.' . $this->info['city'] . '": Продал предмет "' . $i1['name'] . ($col > 1 ? ' (x' . $col . ')' : '') . '" [item:' . $iid . '] через коммисионный магазине за ' . $price . ' кр. [Покупатель: ' . $this->info['login'] . ']', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', 0, $price); } else { - //Записываем РІ личное дело что предмет РЅРµ получен - $r = 'Вам РЅРµ удалось приобрести "' . $i1['name'] . ($col > 1 ? ' (x' . $col . ')' : '') . '". Администрация магазина РІ "' . $this->city_name[$this->info['city']] . '" должна Вам ' . $price . ' екр.
Приносим свои извинения за неудобства.'; - $ld = $this->addDelo(1, $this->info['id'], '"EkrShop.' . $this->info['city'] . '": не удалось приобрести предмет #' . $i1['iid'] . '. К возрату: ' . $price . ' кр.', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); - if (!$ld) echo '
Ошибка, невозможно добавить запись в /db/usersDelo/!
'; + //Записываем в личное дело что предмет не получен + $r = 'Вам не удалось приобрести "' . $i1['name'] . ($col > 1 ? ' (x' . $col . ')' : '') . '". Администрация магазина в "' . $this->city_name[$this->info['city']] . '" должна Вам ' . $price . ' екр.
Приносим свои извинения за неудобства.'; + $ld = $this->addDelo(1, $this->info['id'], '"EkrShop.' . $this->info['city'] . '": не удалось приобрести предмет #' . $i1['iid'] . '. К возрату: ' . $price . ' кр.', time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0); + if (!$ld) echo '
Ошибка, невозможно добавить запись в /db/usersDelo/!
'; } } else { - $r = 'Вам РЅРµ удалось приобрести предмет...'; + $r = 'Вам не удалось приобрести предмет...'; } } } else - $r = 'Предмет РЅРµ найден РЅР° прилавке'; + $r = 'Предмет не найден на прилавке'; return '
' . $r . '
'; } public function commisonRent($action, $iid, $price = null) { - if ($action == "Сдать РІ магазин" && isset($iid) && $price > 0) { + if ($action == "Сдать в магазин" && isset($iid) && $price > 0) { $ChImtem = mysql_fetch_array(mysql_query('SELECT `id`, `item_id`, `data`, `inGroup`, `uid` FROM `items_users` WHERE `id` = ' . $iid . ' LIMIT 1')); $ChSudba = $this->lookStats($ChImtem['data']); if (isset($ChSudba['sudba']) || $ChSudba['sudba'] != 0 || $ChSudba['sudba'] == 1 || isset($ChSudba['toclan'])) { @@ -3077,7 +3134,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` mysql_query('UPDATE `items_users` set `inShop` = 30, `1price` = ' . $price . ' where `uid` = "' . $this->info['id'] . '" AND `id` = "' . $iid . '" AND `inOdet` = "0" AND `delete` = "0" '); } } - } elseif ($action == "Забрать" && isset($iid)) { + } elseif ($action == "Забрать" && isset($iid)) { $i = mysql_fetch_array(mysql_query('SELECT `im`.`price1`,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`id` = "' . $iid . '" AND `iu`.`inShop` = "30" AND `iu`.`delete` = "0" LIMIT 1')); if (isset($i['inGroup']) and $i['inGroup'] > 0) { $col = $this->itemsX($i['id']); @@ -3232,7 +3289,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); $i = 0; $steckCikl = 1; while ($pl = mysql_fetch_array($cl)) { - // количетсво одинаковых предметов РІ РєРѕРјРєРµ + // количетсво одинаковых предметов в комке if ($preview == "preview") { //$steck = mysql_fetch_array(mysql_query('SELECT COUNT(`item_id`) FROM `items_users` WHERE `item_id` = "'.$pl['item_id'].'" AND `inShop` = 30 LIMIT 1')); $steck = ['--', '--', '--', '--']; @@ -3254,7 +3311,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); $po = $this->lookStats($pl['data']); } if (($pl['type'] >= 18 && $pl['type'] <= 24) || $pl['type'] == 26 || $pl['type'] == 27) { - //Р—РѕРЅС‹ блока + + //Зоны блока + if ($pl['inOdet'] != 14) { $po['zonb']++; } @@ -3262,11 +3319,11 @@ ORDER BY `1price`ASC , inGroupCount DESC'); $is2 = ''; $is1 = '
'; if ($preview == "full") { - $is1 .= 'купить '; + $is1 .= 'купить '; } elseif ($preview == "preview") { - $is1 .= 'Просмотреть '; + $is1 .= 'Просмотреть '; } - //название + //название $col = $this->itemsX($pl[0]); if ($col > 1 && $pl['inGroup'] != 0 && $pl['inGroupCount'] > 1) { @@ -3275,41 +3332,41 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } $is2 .= '' . $pl['name'] . '    '; if ($pl['massa'] > 0 && $preview == "full") { - $is2 .= '(Масса: ' . round($pl['massa'], 2) . ')'; + $is2 .= '(Масса: ' . round($pl['massa'], 2) . ')'; if ($pl['gift'] != '') { $ttl = ''; if ($pl['gift'] == 1) { - $ttl = 'Р’С‹ РЅРµ можете передать этот предмет РєРѕРјСѓ-либо'; + $ttl = 'Вы не можете передать этот предмет кому-либо'; } else { - $ttl = 'Этот предмет подарил ' . $pl['gift'] . '. Р’С‹ РЅРµ сможете передать этот предмет РєРѕРјСѓ-либо еще'; + $ttl = 'Этот предмет подарил ' . $pl['gift'] . '. Вы не сможете передать этот предмет кому-либо еще'; } $is2 .= ' '; } if (isset($po['art'])) { - $is2 .= ' '; + $is2 .= ' '; } if (isset($po['sudba'])) { if ($po['sudba'] == '0') { - $is2 .= ' '; + $is2 .= ' '; } elseif ($po['sudba'] == '1') { - $is2 .= ' '; + $is2 .= ' '; } else { - $is2 .= ' '; + $is2 .= ' '; } } } - //цена - $is2 .= '
Цена: '; + //цена + $is2 .= '
Цена: '; if ($steck[0] > 1 && $preview == "preview") { - $is2 .= $steck[3] . '-' . $steck[4] . ' РєСЂ. '; + $is2 .= $steck[3] . '-' . $steck[4] . ' кр.
'; } else { - $is2 .= $pl['1price'] . ' РєСЂ. '; + $is2 .= $pl['1price'] . ' кр. '; } if ($pl['pricerep'] > 0) { - $is2 .= ' (' . round($pl['pricerep'], 2) . ' Воинственности)'; + $is2 .= ' (' . round($pl['pricerep'], 2) . ' Воинственности)'; } - //долговечность + //долговечность if ($pl['iznosMAX'] > 0) { $izcol = ''; if (floor($pl['iznosNOW']) >= (floor($pl['iznosMAX']) - ceil($pl['iznosMAX']) / 100 * 20)) { @@ -3317,41 +3374,41 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } } if ($preview == "preview") { - $is2 .= '
Долговечность: ' . floor($steck[1]) . '/' . ceil($steck[2]) . ''; + $is2 .= '
Долговечность: ' . floor($steck[1]) . '/' . ceil($steck[2]) . ''; } else { if ($pl['iznosMAXi'] == 999999999) { - $is2 .= '
Долговечность: неразрушимо'; + $is2 .= '
Долговечность: неразрушимо'; } else { - $is2 .= '
Долговечность: ' . floor($pl['iznosNOW']) . '/' . ceil($pl['iznosMAX']) . ''; + $is2 .= '
Долговечность: ' . floor($pl['iznosNOW']) . '/' . ceil($pl['iznosMAX']) . ''; } } - //РЎСЂРѕРє годности предмета + //Срок годности предмета if ($po['srok'] > 0) { $pl['srok'] = $po['srok']; } if ($pl['srok'] > 0 and $preview != "preview") { if ($pl['time_create'] + $pl['srok'] < time()) { - $is2 .= '
Срок годности: ' . $this->timeOut($pl['srok']) . ' (испорчен)'; + $is2 .= '
Срок годности: ' . $this->timeOut($pl['srok']) . ' (испорчен)'; } else { - $is2 .= '
Срок годности: ' . $this->timeOut($pl['srok']) . ' (до ' . date('d.m.Y H:i', $pl['time_create'] + $pl['srok']) . ')'; + $is2 .= '
Срок годности: ' . $this->timeOut($pl['srok']) . ' (до ' . date('d.m.Y H:i', $pl['time_create'] + $pl['srok']) . ')'; } } elseif ($pl['srok'] > 0) { - $is2 .= '
Срок годности: ' . $this->timeOut($pl['srok']); + $is2 .= '
Срок годности: ' . $this->timeOut($pl['srok']); } if ($pl['magic_chance'] > 0) { - $is2 .= '
Вероятность срабатывания: ' . min([$pl['magic_chance'], 100]) . '%'; + $is2 .= '
Вероятность срабатывания: ' . min([$pl['magic_chance'], 100]) . '%'; } - //Продолжительность действия магии: + //Продолжительность действия магии: if ((int)$pl['magic_inci'] > 0) { $efi = mysql_fetch_array(mysql_query('SELECT `id2`,`mname`,`type1`,`img`,`mdata`,`actionTime`,`type2`,`type3`,`onlyOne`,`oneType`,`noAce`,`see`,`info`,`overch`,`bp`,`noch` FROM `eff_main` WHERE `id2` = "' . ((int)$pl['magic_inci']) . '" LIMIT 1')); if (isset($efi['id2']) && $efi['actionTime'] > 0) { - $is2 .= '
Продолжительность действия: ' . $this->timeOut($efi['actionTime']); + $is2 .= '
Продолжительность действия: ' . $this->timeOut($efi['actionTime']); } } if ($preview == "full" || $preview == "preview") { - //Требуется минимальное: + //Требуется минимальное: $tr = ''; $t = $this->items['tr']; $x = 0; @@ -3371,7 +3428,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); $notr++; } } - $tr .= '
• '; + $tr .= '
• '; if ($n == 'rep') { $temp = explode('::', $po['tr_' . $n]); $tr .= $this->is[$n] . ' ' . ucfirst(str_replace('city', ' city', $temp[1])) . ': ' . $temp[0]; @@ -3379,9 +3436,9 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } elseif ($n != 'align') { if ($n == 'sex') { if ($po['tr_' . $n] == 1) { - $tr .= $this->is[$n] . ': Женский'; + $tr .= $this->is[$n] . ': Женский'; } else { - $tr .= $this->is[$n] . ': Мужской'; + $tr .= $this->is[$n] . ': Мужской'; } } else { $tr .= $this->is[$n] . ': ' . $po['tr_' . $n]; @@ -3399,9 +3456,9 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } if ($tr != '') { - $is2 .= '
Требуется минимальное:' . $tr; + $is2 .= '
Требуется минимальное:' . $tr; } - //Действует РЅР°: + //Действует на: $tr = ''; $t = $this->items['add']; $x = 0; @@ -3412,13 +3469,13 @@ ORDER BY `1price`ASC , inGroupCount DESC'); if ($po['add_' . $n] < 0) { $z = ''; } - $tr .= '
• ' . $this->is[$n] . ': ' . $z . '' . $po['add_' . $n]; + $tr .= '
• ' . $this->is[$n] . ': ' . $z . '' . $po['add_' . $n]; } $x++; } - //действует РЅР° (Р±СЂРѕРЅСЏ) + //действует на (броня) $i = 1; - $bn = [1 => 'головы', 2 => 'РєРѕСЂРїСѓСЃР°', 3 => 'РїРѕСЏСЃР°', 4 => 'РЅРѕРі']; + $bn = [1 => 'головы', 2 => 'корпуса', 3 => 'пояса', 4 => 'ног']; while ($i <= 4) { if (isset($po['add_mab' . $i])) { if ($po['add_mab' . $i] == $po['add_mib' . $i] && $pl['geniration'] == 1) { @@ -3426,21 +3483,21 @@ ORDER BY `1price`ASC , inGroupCount DESC'); if ($po['add_mab' . $i] < 0) { $z = ''; } - $tr .= '
• Броня ' . $bn[$i] . ': ' . $z . '' . $po['add_mab' . $i]; + $tr .= '
• Броня ' . $bn[$i] . ': ' . $z . '' . $po['add_mab' . $i]; } else { - $tr .= '
• Броня ' . $bn[$i] . ': ' . $po['add_mib' . $i] . '-' . $po['add_mab' . $i] . ' (' . $this->bronFx([$po['add_mib' . $i], $po['add_mab' . $i]]) . ')'; + $tr .= '
• Броня ' . $bn[$i] . ': ' . $po['add_mib' . $i] . '-' . $po['add_mab' . $i] . ' (' . $this->bronFx([$po['add_mib' . $i], $po['add_mab' . $i]]) . ')'; } } $i++; } if ($tr != '') { - $is2 .= '
Действует на:' . $tr; + $is2 .= '
Действует на:' . $tr; } - //Свойства предмета: + //Свойства предмета: $tr = ''; $t = $this->items['sv']; if (isset($po['sv_yron_min'], $po['sv_yron_max'])) { - $tr .= '
• Урон: ' . $po['sv_yron_min'] . ' - ' . $po['sv_yron_max']; + $tr .= '
• Урон: ' . $po['sv_yron_min'] . ' - ' . $po['sv_yron_max']; } $x = 0; while ($x < count($t)) { @@ -3450,18 +3507,18 @@ ORDER BY `1price`ASC , inGroupCount DESC'); if ($po['sv_' . $n] < 0) { $z = ''; } - $tr .= '
• ' . $this->is[$n] . ': ' . $z . '' . $po['sv_' . $n]; + $tr .= '
• ' . $this->is[$n] . ': ' . $z . '' . $po['sv_' . $n]; } $x++; } if ($pl['2too'] == 1) { - $tr .= '
• Второе оружие'; + $tr .= '
• Второе оружие'; } if ($pl['2h'] == 1) { - $tr .= '
• Двуручное оружие'; + $tr .= '
• Двуручное оружие'; } if (isset($po['zonb'])) { - $tr .= '
• Зоны блокирования: '; + $tr .= '
• Зоны блокирования: '; if ($po['zonb'] > 0) { $x = 1; while ($x <= $po['zonb']) { @@ -3469,12 +3526,12 @@ ORDER BY `1price`ASC , inGroupCount DESC'); $x++; } } else { - $tr .= '—'; + $tr .= '—'; } } if ($tr != '') { - $is2 .= '
Свойства предмета:' . $tr; + $is2 .= '
Свойства предмета:' . $tr; } $tr = ''; @@ -3491,12 +3548,12 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } else { $rnc = '#282828'; } - $po['imposed_name'] = str_replace('Чары ', '', $po['imposed_name']); - $tr .= '
Наложены заклятия: ' . $po['imposed_name'] . ' '; + $po['imposed_name'] = str_replace('Чары ', '', $po['imposed_name']); + $tr .= '
Наложены заклятия: ' . $po['imposed_name'] . ' '; unset($rnc); } if ($tr != '') { - $is2 .= '
Улучшения предмета:'; + $is2 .= '
Улучшения предмета:'; $is2 .= $tr; } @@ -3507,24 +3564,24 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } } if (isset($po['free_stats']) && $po['free_stats'] > 0) { - $is2 .= '
Распределение статов:'; - $is2 .= '• Возможных распределений: ' . $po['free_stats'] . ''; + $is2 .= '
Распределение статов:'; + $is2 .= '• Возможных распределений: ' . $po['free_stats'] . ''; } if (floor($pl['iznosNOW']) >= ceil($pl['iznosMAX'])) { $d[0] = 0; $d[2] = 0; } if (isset($po['complect']) || isset($po['complect2'])) { - $is2 .= '
Дополнительная информация:'; + $is2 .= '
Дополнительная информация:'; } if (isset($po['complect'])) { - //РЅРµ отображается - $com1 = ['name' => 'Неизвестный Комплект', 'x' => 0, 'text' => '']; + //не отображается + $com1 = ['name' => 'Неизвестный Комплект', 'x' => 0, 'text' => '']; $spc = mysql_query('SELECT `id`,`com`,`name`,`x`,`data` FROM `complects` WHERE `com` = "' . $po['complect'] . '" ORDER BY `x` ASC LIMIT 20'); while ($plc = mysql_fetch_array($spc)) { $com1['name'] = $plc['name']; $com1['text'] .= '    • ' . $plc['x'] . ': '; - //действие комплекта + //действие комплекта $i1c = 0; $i2c = 0; $i1e = $this->lookStats($plc['data']); @@ -3547,18 +3604,18 @@ ORDER BY `1price`ASC , inGroupCount DESC'); unset($i1c, $i2c, $i3c); $com1['x']++; } - $is2 .= '
• Часть комплекта: ' . $com1['name'] . '
'; + $is2 .= '
• Часть комплекта: ' . $com1['name'] . '
'; $is2 .= $com1['text']; $is2 .= ''; } if (isset($po['complect2'])) { - //РЅРµ отображается - $com1 = ['name' => 'Неизвестный Комплект', 'x' => 0, 'text' => '']; + //не отображается + $com1 = ['name' => 'Неизвестный Комплект', 'x' => 0, 'text' => '']; $spc = mysql_query('SELECT `id`,`com`,`name`,`x`,`data` FROM `complects` WHERE `com` = "' . $po['complect2'] . '" ORDER BY `x` ASC LIMIT 20'); while ($plc = mysql_fetch_array($spc)) { $com1['name'] = $plc['name']; $com1['text'] .= '    • ' . $plc['x'] . ': '; - //действие комплекта + //действие комплекта $i1c = 0; $i2c = 0; $i1e = $this->lookStats($plc['data']); @@ -3581,78 +3638,78 @@ ORDER BY `1price`ASC , inGroupCount DESC'); unset($i1c, $i2c, $i3c); $com1['x']++; } - $is2 .= '
• Часть комплекта (РїРѕРґРіРѕРЅРєР°): ' . $com1['name'] . '
'; + $is2 .= '
• Часть комплекта (подгонка): ' . $com1['name'] . '
'; $is2 .= $com1['text']; $is2 .= ''; } $is2 .= ''; if (isset($po['gravi'])) { - $is2 .= '
На поверхности выгравирована надпись: ' . $po['gravi'] . ''; + $is2 .= '
На поверхности выгравирована надпись: ' . $po['gravi'] . ''; } if ($pl['info'] != '') { - $is2 .= '
Рекомендации:
' . $pl['info'] . '
'; + $is2 .= '
Рекомендации:
' . $pl['info'] . '
'; } if ($po['info'] != '') { $is2 .= '
' . $po['info'] . '
'; } if ($pl['max_text'] - $pl['use_text'] > 0) { - $is2 .= '
Количество символов: ' . ($pl['max_text'] - $pl['use_text']) . '
'; + $is2 .= '
Количество символов: ' . ($pl['max_text'] - $pl['use_text']) . '
'; } if ($pl['maidin'] != '') { - // $is2 .= '
Сделано в '.$this->city_name[$pl['maidin']].'
'; + // $is2 .= '
Сделано в '.$this->city_name[$pl['maidin']].'
'; } if (isset($po['noremont'])) { - $is2 .= '
Предмет не подлежит ремонту
'; + $is2 .= '
Предмет не подлежит ремонту
'; } if (isset($po['nosale'])) { - $is2 .= '
Предмет нельзя продать
'; + $is2 .= '
Предмет нельзя продать
'; } if (isset($po['nomodif'])) { - $is2 .= '
Предмет нельзя улучшать
'; + $is2 .= '
Предмет нельзя улучшать
'; } if (isset($po['nodelete'])) { - $is2 .= '
Предмет нельзя выбросить
'; + $is2 .= '
Предмет нельзя выбросить
'; } if (isset($po['frompisher']) && $po['frompisher'] > 0) { - $is2 .= '
Предмет из подземелья
'; + $is2 .= '
Предмет из подземелья
'; } if (isset($po['sleep_moroz']) && $po['sleep_moroz'] > 0) { - $is2 .= '
Предмет не портится во время сна
'; + $is2 .= '
Предмет не портится во время сна
'; } if (isset($po['fromlaba']) && $po['fromlaba'] > 0) { - $is2 .= '
Предмет из лабиринта
'; + $is2 .= '
Предмет из лабиринта
'; } if (isset($po['vip_sale']) && $po['vip_sale'] > 0) { - $is2 .= '
Предмет куплен за 10% от стоимости
'; + $is2 .= '
Предмет куплен за 10% от стоимости
'; } if ($pl['dn_delete'] > 0) { - $is2 .= '
Предмет будет удален при выходе из подземелья
'; + $is2 .= '
Предмет будет удален при выходе из подземелья
'; } if ($this->pokol > $pl['geni']) { - $is2 .= '
Предмет устарел
'; + $is2 .= '
Предмет устарел
'; } if (isset($po['zazuby']) && $po['zazuby'] > 0) { - $is2 .= '
Предмет куплен за зубы
'; + $is2 .= '
Предмет куплен за зубы
'; } - //$is2 .= '
Сделано в '.$this->city_name[$this->info['city']].'
'; + //$is2 .= '
Сделано в '.$this->city_name[$this->info['city']].'
'; $is2 .= '
'; } if ($preview == "preview") { - $kolvoprint = "Количество: $steck[0] шт."; + $kolvoprint = "Количество: $steck[0] шт."; } echo '' . $is1 . '' . $kolvoprint . $is2 . ''; $i++; } } - if ($i == 0) echo 'Прилавок магазина РїСѓСЃС‚'; + if ($i == 0) echo 'Прилавок магазина пуст'; } public $sid_zuby = [ - //Кэпитал - 1 => 1, //РіРѕСЃ - 9 => 1, //таверна - 8 => 1 //Р·РѕРѕ + //Кэпитал + 1 => 1, //гос + 9 => 1, //таверна + 8 => 1 //зоо ]; public function shopItems($sid, $plu = '') @@ -3708,7 +3765,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } if (($pl['type'] >= 18 && $pl['type'] <= 24) || $pl['type'] == 26 || $pl['type'] == 27) { - //Р—РѕРЅС‹ блока + + //Зоны блока + $po['zonb']++; } @@ -3719,23 +3776,23 @@ ORDER BY `1price`ASC , inGroupCount DESC'); $is1 = '
'; } if ($sid == 609) { - $is1 .= 'купить'; + $is1 .= 'купить'; } else { //if($this->info['money']>$pl['price']) //{ if ($sid == 2 || $sid == 777) { - $is1 .= 'купить '; + $is1 .= 'купить '; } else { - $is1 .= 'купить '; + $is1 .= 'купить '; } //} if ($pl['nozuby'] == 0 && $this->info['level'] > 0 && $this->info['level'] < 8 && $pl['level'] < 8 && $sid_zuby == 1 && $c['zuby']) { - $is1 .= '
купить за зубы'; + $is1 .= '
купить за зубы'; } } - //название + //название if (isset($po['tr_align']) && !isset($po['tr_align_bs'])) { $pl['name'] .= ''; @@ -3748,7 +3805,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } if (isset($po['renameadd']) && $po['renameadd'] != '') { - $pl['name'] .= ' (Предмет: ' . $po['renameadd'] . ')'; + $pl['name'] .= ' (Предмет: ' . $po['renameadd'] . ')'; } if (isset($po['icos'])) { $pl['name'] = '' . $pl['name'] . '  ' . $po['icos'] . ' '; @@ -3757,28 +3814,28 @@ ORDER BY `1price`ASC , inGroupCount DESC'); if ($pl['massa'] > 0) { - $is2 .= '(Масса: ' . round($pl['massa'], 2) . ')'; + $is2 .= '(Масса: ' . round($pl['massa'], 2) . ')'; } if (isset($po['art'])) { - $is2 .= ' '; + $is2 .= ' '; } if (isset($po['sudba'])) { if ($po['sudba'] == '0') { - $is2 .= ' '; + $is2 .= ' '; } elseif ($po['sudba'] == '1') { - $is2 .= ' '; + $is2 .= ' '; } else { - $is2 .= ' '; + $is2 .= ' '; } } - //цена + //цена if ($this->info['admin'] > 0) { $is2 .= '
  ' . $pl['pos'] . '  
'; } - $is2 .= '
Цена: '; + $is2 .= '
Цена: '; if ($this->stats['silver'] >= 1 && $sid == 1) { $is2 .= ''; } elseif ($this->stats['silver'] >= 5 && ($sid == 2 || $sid == 777)) { @@ -3791,7 +3848,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); $is2 .= '' . round($pl['price_4']) . ''; } - $is2 .= ' Воинственности '; + $is2 .= '
Воинственности '; } elseif ($pl['price_3'] > 0) { if ($pl['price_3'] > $this->info['money3']) { $is2 .= '' . $pl['price_3'] . ''; @@ -3806,14 +3863,14 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } else { $is2 .= $pl['price_2']; } - $is2 .= ' екр. '; + $is2 .= ' екр. '; } else { if ($pl['price_1'] > $this->info['money']) { $is2 .= '' . $pl['price_1'] . ''; } else { $is2 .= $pl['price_1']; } - $is2 .= ' РєСЂ. '; + $is2 .= ' кр. '; } if ($this->stats['silver'] >= 1 && $sid == 1) { $is2 .= '   '; @@ -3822,7 +3879,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } else { $is2 .= round($pl['price_1'] * 0.95, 2); } - $is2 .= ' РєСЂ. РЎРєРёРґРєР° -5%'; + $is2 .= ' кр. Скидка -5%'; } elseif ($this->stats['silver'] >= 5 && ($sid == 2 || $sid == 777)) { $is2 .= '   '; if ($pl['price_2'] > $this->info['money2']) { @@ -3830,15 +3887,15 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } else { $is2 .= round($pl['price_2'] * 0.95, 2); } - $is2 .= ' екр. РЎРєРёРґРєР° -5%'; + $is2 .= ' екр. Скидка -5%'; } if ($pl['pricerep'] > 0) { - $is2 .= ' (' . round($pl['pricerep'], 2) . ' Воинственности)'; + $is2 .= ' (' . round($pl['pricerep'], 2) . ' Воинственности)'; } if ($pl['kolvo'] < 100000) { - $is2 .= '     (количество: ' . $pl['kolvo'] . ')'; + $is2 .= '     (количество: ' . $pl['kolvo'] . ')'; } if ($pl['nozuby'] == 0 && $sid != 609 && $c['zuby'] == true) { @@ -3882,7 +3939,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } if ($ttmm != '') { - $ttmm = '
Требует предмет: ' . rtrim($ttmm, ', ') . ' '; + $ttmm = '
Требует предмет: ' . rtrim($ttmm, ', ') . ' '; if ($trn == 0) { $ttmm = '' . $ttmm . ''; } @@ -3893,44 +3950,44 @@ ORDER BY `1price`ASC , inGroupCount DESC'); unset($ttmm); - //долговечность + //долговечность if ($pl['iznos'] > 0) { $pl['iznosMAXi'] = $pl['iznos']; } if ($pl['iznosMAXi'] > 0) { if ($pl['iznosMAXi'] == 999999999) { - $is2 .= 'Долговечность: неразрушимо
'; + $is2 .= 'Долговечность: неразрушимо
'; } else { - $is2 .= 'Долговечность: 0/' . $pl['iznosMAXi'] . '
'; + $is2 .= 'Долговечность: 0/' . $pl['iznosMAXi'] . '
'; } } if ($po['battleUseZd'] > 0) { - $is2 .= 'Задержка использования: ' . $this->timeOut($po['battleUseZd']) . '
'; + $is2 .= 'Задержка использования: ' . $this->timeOut($po['battleUseZd']) . '
'; } $is2 = rtrim($is2, '
'); - //РЎСЂРѕРє годности предмета + //Срок годности предмета if ($po['srok'] > 0) { $pl['srok'] = $po['srok']; } if ($pl['srok'] > 0) { - $is2 .= '
Срок годности: ' . $this->timeOut($pl['srok']); + $is2 .= '
Срок годности: ' . $this->timeOut($pl['srok']); } if ($pl['magic_chance'] > 0) { - $is2 .= '
Вероятность срабатывания: ' . min([$pl['magic_chance'], 100]) . '%'; + $is2 .= '
Вероятность срабатывания: ' . min([$pl['magic_chance'], 100]) . '%'; } - //Продолжительность действия магии: + //Продолжительность действия магии: if ((int)$pl['magic_inci'] > 0) { $efi = mysql_fetch_array(mysql_query('SELECT `id2`,`mname`,`type1`,`img`,`mdata`,`actionTime`,`type2`,`type3`,`onlyOne`,`oneType`,`noAce`,`see`,`info`,`overch`,`bp`,`noch` FROM `eff_main` WHERE `id2` = "' . ((int)$pl['magic_inci']) . '" LIMIT 1')); if (isset($efi['id2']) && $efi['actionTime'] > 0) { - $is2 .= '
Продолжительность действия: ' . $this->timeOut($efi['actionTime']); + $is2 .= '
Продолжительность действия: ' . $this->timeOut($efi['actionTime']); } } - //Требуется минимальное: + //Требуется минимальное: $tr = ''; $t = $this->items['tr']; $x = 0; @@ -3950,7 +4007,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); $notr++; } } - $tr .= '
• '; + $tr .= '
• '; if ($n == 'rep') { $temp = explode('::', $po['tr_' . $n]); $tr .= $this->is[$n] . ' ' . ucfirst(str_replace('city', ' city', $temp[1])) . ': ' . $temp[0]; @@ -3958,9 +4015,9 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } elseif ($n != 'align') { if ($n == 'sex') { if ($po['tr_' . $n] == 1) { - $tr .= $this->is[$n] . ': Женский'; + $tr .= $this->is[$n] . ': Женский'; } else { - $tr .= $this->is[$n] . ': Мужской'; + $tr .= $this->is[$n] . ': Мужской'; } } else { $tr .= $this->is[$n] . ': ' . $po['tr_' . $n]; @@ -3978,9 +4035,9 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } if ($tr != '') { - $is2 .= '
Требуется минимальное:' . $tr; + $is2 .= '
Требуется минимальное:' . $tr; } - //Действует РЅР°: + //Действует на: $tr = ''; $t = $this->items['add']; $x = 0; @@ -3991,13 +4048,13 @@ ORDER BY `1price`ASC , inGroupCount DESC'); if ($po['add_' . $n] < 0) { $z = ''; } - $tr .= '
• ' . $this->is[$n] . ': ' . $z . '' . $po['add_' . $n]; + $tr .= '
• ' . $this->is[$n] . ': ' . $z . '' . $po['add_' . $n]; } $x++; } - //действует РЅР° (Р±СЂРѕРЅСЏ) + //действует на (броня) $i = 1; - $bn = [1 => 'головы', 2 => 'РєРѕСЂРїСѓСЃР°', 3 => 'РїРѕСЏСЃР°', 4 => 'РЅРѕРі']; + $bn = [1 => 'головы', 2 => 'корпуса', 3 => 'пояса', 4 => 'ног']; while ($i <= 4) { if (isset($po['add_mab' . $i])) { if ($po['add_mab' . $i] == $po['add_mib' . $i] && $pl['geniration'] == 1) { @@ -4005,22 +4062,22 @@ ORDER BY `1price`ASC , inGroupCount DESC'); if ($po['add_mab' . $i] < 0) { $z = ''; } - $tr .= '
• Броня ' . $bn[$i] . ': ' . $z . '' . $po['add_mab' . $i]; + $tr .= '
• Броня ' . $bn[$i] . ': ' . $z . '' . $po['add_mab' . $i]; } else { - $tr .= '
• Броня ' . $bn[$i] . ': ' . $po['add_mib' . $i] . '-' . $po['add_mab' . $i]; + $tr .= '
• Броня ' . $bn[$i] . ': ' . $po['add_mib' . $i] . '-' . $po['add_mab' . $i]; } } $i++; } if ($tr != '') { - $is2 .= '
Действует на:' . $tr; + $is2 .= '
Действует на:' . $tr; } - //Свойства предмета: + //Свойства предмета: $tr = ''; $t = $this->items['sv']; if (isset($po['sv_yron_min'], $po['sv_yron_max'])) { - $tr .= '
• Урон: ' . $po['sv_yron_min'] . ' - ' . $po['sv_yron_max']; + $tr .= '
• Урон: ' . $po['sv_yron_min'] . ' - ' . $po['sv_yron_max']; } $x = 0; while ($x < count($t)) { @@ -4030,18 +4087,18 @@ ORDER BY `1price`ASC , inGroupCount DESC'); if ($po['sv_' . $n] < 0) { $z = ''; } - $tr .= '
• ' . $this->is[$n] . ': ' . $z . '' . $po['sv_' . $n]; + $tr .= '
• ' . $this->is[$n] . ': ' . $z . '' . $po['sv_' . $n]; } $x++; } if ($pl['2too'] == 1) { - $tr .= '
• Второе оружие'; + $tr .= '
• Второе оружие'; } if ($pl['2h'] == 1) { - $tr .= '
• Двуручное оружие'; + $tr .= '
• Двуручное оружие'; } if (isset($po['zonb'])) { - $tr .= '
• Зоны блокирования: '; + $tr .= '
• Зоны блокирования: '; if ($po['zonb'] > 0) { $x = 1; while ($x <= $po['zonb']) { @@ -4049,14 +4106,14 @@ ORDER BY `1price`ASC , inGroupCount DESC'); $x++; } } else { - $tr .= '—'; + $tr .= '—'; } } if ($tr != '') { - $is2 .= '
Свойства предмета:' . $tr; + $is2 .= '
Свойства предмета:' . $tr; } - //Особенности + //Особенности $tr = ''; @@ -4072,12 +4129,12 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } else { $rnc = '#282828'; } - $po['imposed_name'] = str_replace('Чары ', '', $po['imposed_name']); - $tr .= '
Наложены заклятия: ' . $po['imposed_name'] . ' '; + $po['imposed_name'] = str_replace('Чары ', '', $po['imposed_name']); + $tr .= '
Наложены заклятия: ' . $po['imposed_name'] . ' '; unset($rnc); } if ($tr != '') { - $is2 .= '
Улучшения предмета:'; + $is2 .= '
Улучшения предмета:'; $is2 .= $tr; } @@ -4090,18 +4147,18 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } if (isset($po['free_stats']) && $po['free_stats'] > 0) { - $is2 .= '
Распределение статов:
'; - $is2 .= '• Возможных распределений: +' . $po['free_stats'] . ' характеристик'; + $is2 .= '
Распределение статов:
'; + $is2 .= '• Возможных распределений: +' . $po['free_stats'] . ' характеристик'; } - //Встроенная магия + //Встроенная магия if ($pl['magic_inci'] != '' || $pl['magic_inc'] != '') { if ($pl['magic_inc'] == '') { $pl['magic_inc'] = $pl['magic_inci']; } $mgi = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $pl['magic_inc'] . '" AND `type1` = "12345" LIMIT 1')); if (isset($mgi['id2'])) { - $is2 .= '
Встроено заклятие ' . $mgi['minfo'] . '
'; + $is2 .= '
Встроено заклятие ' . $mgi['minfo'] . '
'; } } @@ -4110,16 +4167,16 @@ ORDER BY `1price`ASC , inGroupCount DESC'); $d[2] = 0; } if (isset($po['complect'])) { - $is2 .= '
Дополнительная информация:'; + $is2 .= '
Дополнительная информация:'; } if (isset($po['complect'])) { - //РЅРµ отображается - $com1 = ['name' => 'Неизвестный Комплект', 'x' => 0, 'text' => '']; + //не отображается + $com1 = ['name' => 'Неизвестный Комплект', 'x' => 0, 'text' => '']; $spc = mysql_query('SELECT `id`,`com`,`name`,`x`,`data` FROM `complects` WHERE `com` = "' . $po['complect'] . '" ORDER BY `x` ASC LIMIT 20'); while ($plc = mysql_fetch_array($spc)) { $com1['name'] = $plc['name']; $com1['text'] .= '    • ' . $plc['x'] . ': '; - //действие комплекта + //действие комплекта $i1c = 0; $i2c = 0; $i1e = $this->lookStats($plc['data']); @@ -4142,23 +4199,23 @@ ORDER BY `1price`ASC , inGroupCount DESC'); unset($i1c, $i2c, $i3c); $com1['x']++; } - $is2 .= '
• Часть комплекта: ' . $com1['name'] . '
'; + $is2 .= '
• Часть комплекта: ' . $com1['name'] . '
'; $is2 .= $com1['text']; $is2 .= ''; } if ($pl['max_text'] - $pl['use_text'] > 0) { - $is2 .= '
Количество символов: ' . ($pl['max_text'] - $pl['use_text']) . '
'; + $is2 .= '
Количество символов: ' . ($pl['max_text'] - $pl['use_text']) . '
'; } $is2 .= ''; if (isset($po['gravi'])) { - $is2 .= '
На поверхности выгравирована надпись: ' . $po['gravi'] . ''; + $is2 .= '
На поверхности выгравирована надпись: ' . $po['gravi'] . ''; } if ($pl['info'] != '') { - $is2 .= '
Рекомендации:
' . $pl['info'] . '
'; + $is2 .= '
Рекомендации:
' . $pl['info'] . '
'; } if ($po['info'] != '') { @@ -4166,47 +4223,47 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } if (isset($po['noremont'])) { - $is2 .= '
Предмет не подлежит ремонту
'; + $is2 .= '
Предмет не подлежит ремонту
'; } if (isset($po['nosale'])) { - $is2 .= '
Предмет нельзя продать
'; + $is2 .= '
Предмет нельзя продать
'; } if (isset($po['nomodif'])) { - $is2 .= '
Предмет нельзя улучшать
'; + $is2 .= '
Предмет нельзя улучшать
'; } if (isset($po['nodelete'])) { - $is2 .= '
Предмет нельзя выбросить
'; + $is2 .= '
Предмет нельзя выбросить
'; } if (isset($po['frompisher']) && $po['frompisher'] > 0) { - $is2 .= '
Предмет из подземелья
'; + $is2 .= '
Предмет из подземелья
'; } if (isset($po['sleep_moroz']) && $po['sleep_moroz'] > 0) { - $is2 .= '
Предмет не портится во время сна
'; + $is2 .= '
Предмет не портится во время сна
'; } if (isset($po['fromlaba']) && $po['fromlaba'] > 0) { - $is2 .= '
Предмет из лабиринта
'; + $is2 .= '
Предмет из лабиринта
'; } if (isset($po['vip_sale']) && $po['vip_sale'] > 0) { - $is2 .= '
Предмет куплен за 10% от стоимости
'; + $is2 .= '
Предмет куплен за 10% от стоимости
'; } if ($pl['dn_delete'] > 0) { - $is2 .= '
Предмет будет удален при выходе из подземелья
'; + $is2 .= '
Предмет будет удален при выходе из подземелья
'; } if ($this->pokol > $pl['geni']) { - $is2 .= '
Предмет устарел
'; + $is2 .= '
Предмет устарел
'; } if (isset($po['zazuby']) && $po['zazuby'] > 0) { - $is2 .= '
Предмет куплен за зубы
'; + $is2 .= '
Предмет куплен за зубы
'; } $is2 .= '
'; @@ -4214,7 +4271,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); $crd = ''; if ($this->info['admin'] > 0) { - $crd = 'Редактировать предмет   обновить
'; + $crd = 'Редактировать предмет   обновить
'; } echo '' . $is1 . ' ' . $crd . '' . $is2 . ''; @@ -4223,7 +4280,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } if ($i == 0) { - echo 'Прилавок магазина РїСѓСЃС‚'; + echo 'Прилавок магазина пуст'; } } @@ -4261,7 +4318,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); $n01 += $pl['ability']; $n02 += $pl['skills']; if ($ll < $pl['nextLevel']) { - $n01 += 1; //вынос + $n01 += 1; //вынос if ($this->info['level'] >= 9) { $n01 += 1; } @@ -4292,12 +4349,12 @@ ORDER BY `1price`ASC , inGroupCount DESC'); public function wipe() { if ($this->info['wipe'] > 0 && $this->info['battle'] == 0) { - //wipe = 1 , значит обнуляем статы Рё умения + //wipe = 1 , значит обнуляем статы и умения if ($this->info['wipe'] < 4) { $st = $this->lookStats($this->info['stats']); - $n1 = $this->info['ability']; //способности - $n2 = $this->info['skills']; //владение магией Рё оружием - $n3 = $this->info['sskills']; //особенности + $n1 = $this->info['ability']; //способности + $n2 = $this->info['skills']; //владение магией и оружием + $n3 = $this->info['sskills']; //особенности $n4 = $this->info['nskills']; //??? if ($this->info['wipe'] == 1 || $this->info['wipe'] == 2) { $i = 1; @@ -4337,7 +4394,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); $i++; } } - if ($this->info['wipe'] == 1 || $this->info['wipe'] == 3.5)#---РЎР±СЂРѕСЃ особенностей + if ($this->info['wipe'] == 1 || $this->info['wipe'] == 3.5)#---Сброс особенностей { $i = 1; while ($i <= 11) { @@ -4346,7 +4403,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); $i++; } } - //сохраняем данные + //сохраняем данные $st = $this->impStats($st); $upd = mysql_query('UPDATE `stats` SET `wipe`="0",`stats`="' . $st . '",`ability`="' . $n1 . '",`skills`="' . $n2 . '",`sskills`="' . $n3 . '",`nskills`="' . $n4 . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); if ($upd) { @@ -4362,10 +4419,10 @@ ORDER BY `1price`ASC , inGroupCount DESC'); public function __clone() { - trigger_error('Дублирование РЅРµ допускается.', E_USER_ERROR); + trigger_error('Дублирование не допускается.', E_USER_ERROR); } - //Сверяем требования предмета для его использования + //Сверяем требования предмета для его использования public function trItem($po) { $tr = ''; @@ -4397,7 +4454,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); if (isset($itm['id'])) { $po = $this->lookStats($itm['data']); - //статы + //статы if ($_GET['mf'] == 's1' || $_GET['mf'] == 's2' || $_GET['mf'] == 's3' || $_GET['mf'] == 's5') { if (isset($po['mf_stats']) && $po['mf_stats'] > 0 && isset($po['add_' . $_GET['mf']])) { $po['mf_stats'] = (int)$po['mf_stats']; @@ -4471,18 +4528,18 @@ ORDER BY `1price`ASC , inGroupCount DESC'); if ($itm['so'] > 0) { $s = (int)$s; if ($tp == 1) { - //статы + //статы if ($s == 1 || $s == 2 || $s == 3 || $s == 5) { if (10 + 25 * $po['add_s' . $s] <= $itm['so'] && $itm['so'] > 0) { $itm['so'] -= 10 + 25 * $po['add_s' . $s]; $po['add_s' . $s]++; - $this->error = 'Характеристика улучшена...'; + $this->error = 'Характеристика улучшена...'; } else { - $this->error = 'РќРµ хватает очков развития...'; + $this->error = 'Не хватает очков развития...'; } } } elseif ($tp == 2) { - //РјС„ + //мф if ($s > 0 && $s < 13) { $s2 = 0; if ($s == 9 || $s == 12) { @@ -4530,7 +4587,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); } $po['add_' . $s]++; } else { - $this->error = 'РќРµ хватает очков развития...'; + $this->error = 'Не хватает очков развития...'; } } } @@ -4544,7 +4601,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); { $itm = mysql_fetch_array(mysql_query('SELECT `im`.`id`,`im`.`name`,`im`.`img`,`im`.`type`,`im`.`inslot`,`im`.`2h`,`im`.`2too`,`im`.`iznosMAXi`,`im`.`inRazdel`,`im`.`price1`,`im`.`price2`,`im`.`pricerep`,`im`.`magic_chance`,`im`.`info`,`im`.`massa`,`im`.`level`,`im`.`magic_inci`,`im`.`overTypei`,`im`.`group`,`im`.`group_max`,`im`.`geni`,`im`.`ts`,`im`.`srok`,`im`.`class`,`im`.`class_point`,`im`.`anti_class`,`im`.`anti_class_point`,`im`.`max_text`,`im`.`useInBattle`,`im`.`lbtl`,`im`.`lvl_itm`,`im`.`lvl_exp`,`im`.`lvl_aexp`,`iu`.`id`,`iu`.`item_id`,`iu`.`1price`,`iu`.`2price`,`iu`.`uid`,`iu`.`use_text`,`iu`.`data`,`iu`.`inOdet`,`iu`.`inShop`,`iu`.`delete`,`iu`.`iznosNOW`,`iu`.`iznosMAX`,`iu`.`gift`,`iu`.`gtxt1`,`iu`.`gtxt2`,`iu`.`kolvo`,`iu`.`geniration`,`iu`.`magic_inc`,`iu`.`maidin`,`iu`.`lastUPD`,`iu`.`timeOver`,`iu`.`overType`,`iu`.`secret_id`,`iu`.`time_create`,`iu`.`time_sleep`,`iu`.`inGroup`,`iu`.`dn_delete`,`iu`.`inTransfer`,`iu`.`post_delivery`,`iu`.`lbtl_`,`iu`.`bexp`,`iu`.`so`,`iu`.`blvl` FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`uid`="' . $this->info['id'] . '" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`id` = "' . ((int)$id) . '" LIMIT 1')); if ($this->info['transfers'] < 1) { - $this->error = 'РќР° сегодня лимит передач исчерпан.'; + $this->error = 'На сегодня лимит передач исчерпан.'; } elseif (isset($itm['id'])) { if (isset($itm['inGroup']) and $itm['inGroup'] > 0) { $col = $this->itemsX($itm['id']); @@ -4557,7 +4614,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); $upd = mysql_query('UPDATE `items_users` SET `inShop` = 1 WHERE `uid` = "' . $this->info['id'] . '" AND `inShop` != "30" AND `id` = "' . $id . '" AND `inOdet` = "0" AND `delete` = "0" '); } } else { - $this->error = 'Предмет РЅРµ найден РІ рюкзаке'; + $this->error = 'Предмет не найден в рюкзаке'; } } @@ -4566,7 +4623,7 @@ ORDER BY `1price`ASC , inGroupCount DESC'); $itm = mysql_fetch_array(mysql_query('SELECT `im`.`id`,`im`.`name`,`im`.`img`,`im`.`type`,`im`.`inslot`,`im`.`2h`,`im`.`2too`,`im`.`iznosMAXi`,`im`.`inRazdel`,`im`.`price1`,`im`.`price2`,`im`.`pricerep`,`im`.`magic_chance`,`im`.`info`,`im`.`massa`,`im`.`level`,`im`.`magic_inci`,`im`.`overTypei`,`im`.`group`,`im`.`group_max`,`im`.`geni`,`im`.`ts`,`im`.`srok`,`im`.`class`,`im`.`class_point`,`im`.`anti_class`,`im`.`anti_class_point`,`im`.`max_text`,`im`.`useInBattle`,`im`.`lbtl`,`im`.`lvl_itm`,`im`.`lvl_exp`,`im`.`lvl_aexp`,`iu`.`id`,`iu`.`item_id`,`iu`.`1price`,`iu`.`2price`,`iu`.`uid`,`iu`.`use_text`,`iu`.`data`,`iu`.`inOdet`,`iu`.`inShop`,`iu`.`delete`,`iu`.`iznosNOW`,`iu`.`iznosMAX`,`iu`.`gift`,`iu`.`gtxt1`,`iu`.`gtxt2`,`iu`.`kolvo`,`iu`.`geniration`,`iu`.`magic_inc`,`iu`.`maidin`,`iu`.`lastUPD`,`iu`.`timeOver`,`iu`.`overType`,`iu`.`secret_id`,`iu`.`time_create`,`iu`.`time_sleep`,`iu`.`inGroup`,`iu`.`dn_delete`,`iu`.`inTransfer`,`iu`.`post_delivery`,`iu`.`lbtl_`,`iu`.`bexp`,`iu`.`so`,`iu`.`blvl` FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`uid`="' . $this->info['id'] . '" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="1" AND `iu`.`id` = "' . ((int)$id) . '" LIMIT 1')); if ($this->info['transfers'] < 1) { - $this->error = 'РќР° сегодня лимит передач исчерпан.'; + $this->error = 'На сегодня лимит передач исчерпан.'; } elseif (isset($itm['id'])) { if (isset($itm['inGroup']) && $itm['inGroup'] > 0) { $col = $this->itemsX($itm['id']); @@ -4579,7 +4636,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $upd = mysql_query('UPDATE `items_users` SET `inShop` = 0 WHERE `uid` = "' . $this->info['id'] . '" AND `id` = "' . $id . '" AND `inShop` != "30" AND `inOdet` = "0" AND `delete` = "0" '); } } else { - $this->error = 'Предмет РЅРµ найден РІ СЃСѓРЅРґСѓРєРµ'; + $this->error = 'Предмет не найден в сундуке'; } } @@ -4603,13 +4660,13 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $mx1 += $this->info['skills']; if ($mx1 > 0) { - //умения + //умения $s = $s - 100; if ($s > 5 && $s <= 12) { - //магия + //магия $po['add_mg' . ($s - 5)]++; } elseif ($s > 0) { - //оружие + //оружие $po['add_a' . $s]++; } } @@ -4701,7 +4758,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($vi > 0) { $itm_inv = $this->genInv(80, ' ' . rtrim($vid, 'OR') . ' '); - echo 'Выберите предмет для использования "' . $rune['name'] . '":

' . $itm_inv[2] . '
'; + echo 'Выберите предмет для использования "' . $rune['name'] . '":

' . $itm_inv[2] . '
'; die(); } else { unset($rune); @@ -4719,9 +4776,9 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` `i`.`id`,`i`.`item_id`,`i`.`1price`,`i`.`2price`,`i`.`uid`,`i`.`use_text`,`i`.`data`,`i`.`inOdet`,`i`.`inShop`,`i`.`delete`,`i`.`iznosNOW`,`i`.`iznosMAX`,`i`.`gift`,`i`.`gtxt1`,`i`.`gtxt2`,`i`.`kolvo`,`i`.`geniration`,`i`.`magic_inc`,`i`.`maidin`,`i`.`lastUPD`,`i`.`timeOver`,`i`.`overType`,`i`.`secret_id`,`i`.`time_create`,`i`.`inGroup`,`i`.`dn_delete`,`i`.`inTransfer`,`i`.`post_delivery`,`i`.`lbtl_`,`i`.`bexp`,`i`.`so`,`i`.`blvl` ,`m`.`name`,`m`.`type`,`m`.`level` FROM `items_users` AS `i` LEFT JOIN `items_main` AS `m` ON `i`.`item_id` = `m`.`id` WHERE `i`.`id` = "' . mysql_real_escape_string($ruid) . '" AND `i`.`uid` = "' . $this->info['id'] . '" AND `i`.`delete` = "0" AND `i`.`inShop` = "0" LIMIT 1')); if ($rune['level'] > $this->info['level'] && $rune['type'] == 31) { - $this->error = 'РЈ вас слишком маленький уровень чтобы использовать эту СЂСѓРЅСѓ'; + $this->error = 'У вас слишком маленький уровень чтобы использовать эту руну'; } elseif ($rune['type'] == 31) { - //Встраиваем СЂСѓРЅСѓ + //Встраиваем руну if ($idt['type'] == 7) { $idt['type'] = 6; } @@ -4733,40 +4790,40 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $data = $this->lookStats($id['data']); $type_rune = [ - 'С…Рё' => 9, //Серьги - 'С…СЌ' => 10, //Ожерелье - 'РІРё' => 11, //Кольцо - 'РІРѕ' => 12, //Перчатки - 'РєСЌ' => 14, //Поножи - 'РєРё' => 15, //РћР±СѓРІСЊ - 'РјРё' => 1, //Шлем - 'СЃРё' => 3, //Наручи - 'РјРѕ' => 6, //Броня - 'СЃРѕ' => 8 //РџРѕСЏСЃ + 'хи' => 9, //Серьги + 'хэ' => 10, //Ожерелье + 'ви' => 11, //Кольцо + 'во' => 12, //Перчатки + 'кэ' => 14, //Поножи + 'ки' => 15, //Обувь + 'ми' => 1, //Шлем + 'си' => 3, //Наручи + 'мо' => 6, //Броня + 'со' => 8 //Пояс ]; if ($rune['type'] == 5) { - $type_rune['РјРѕ'] = 5; + $type_rune['мо'] = 5; } $type_rune = $type_rune[substr($rune['name'], -2, 2)]; if ($type_rune != $id['type'] && $type_rune != '') { $type_rune2 = [ - 'С…Рё' => 'серьги', //Серьги - 'С…СЌ' => 'ожерелья', //Ожерелье - 'РІРё' => 'кольцо', //Кольцо - 'РІРѕ' => 'перчатки', //Перчатки - 'РєСЌ' => 'поножи', //Поножи - 'РєРё' => 'РѕР±СѓРІСЊ', //РћР±СѓРІСЊ - 'РјРё' => 'шлем', //Шлем - 'СЃРё' => 'наручи', //Наручи - 'РјРѕ' => 'Р±СЂРѕРЅСЋ', //Броня - 'СЃРѕ' => 'РїРѕСЏСЃ' //РџРѕСЏСЃ + 'хи' => 'серьги', //Серьги + 'хэ' => 'ожерелья', //Ожерелье + 'ви' => 'кольцо', //Кольцо + 'во' => 'перчатки', //Перчатки + 'кэ' => 'поножи', //Поножи + 'ки' => 'обувь', //Обувь + 'ми' => 'шлем', //Шлем + 'си' => 'наручи', //Наручи + 'мо' => 'броню', //Броня + 'со' => 'пояс' //Пояс ]; - $this->error = 'Встроить данную СЂСѓРЅСѓ возможно только РІ ' . $type_rune2[substr($rune['name'], -2, 2)] . ' (РўРёРї предмета: ' . $id['type'] . '. Требуемый тип: ' . $type_rune . ')'; + $this->error = 'Встроить данную руну возможно только в ' . $type_rune2[substr($rune['name'], -2, 2)] . ' (Тип предмета: ' . $id['type'] . '. Требуемый тип: ' . $type_rune . ')'; } elseif (isset($data['nomodif'])) { - $this->error = 'Улучшить данный предмет невозможно'; + $this->error = 'Улучшить данный предмет невозможно'; } elseif (isset($data['art']) && $data['tr_lvl'] < 0) { - $this->error = 'Встраивание усилений РІ артефакты ниже 10-РіРѕ СѓСЂРѕРІРЅСЏ недоступно'; + $this->error = 'Встраивание усилений в артефакты ниже 10-го уровня недоступно'; } else { if (isset($data['rune']) && $data['rune'] > 0) { $ritm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main_data` WHERE `items_id` = "' . $data['rune_id'] . '" LIMIT 1')); @@ -4783,7 +4840,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $data['rune_id'] = $rune['item_id']; $data['rune_name'] = $rune['name']; $data['rune_lvl'] = $rune['level']; - //Добавляем характеристики СЂСѓРЅС‹ + //Добавляем характеристики руны $add = $this->lookStats($rune['data']); $i = 0; while ($i < count($this->items['add'])) { @@ -4798,14 +4855,14 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` mysql_query('UPDATE `items_users` SET `data` = "' . $data . '" WHERE `id` = "' . $id['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); - $this->error = 'Встраивание СЂСѓРЅС‹ прошло успешно'; + $this->error = 'Встраивание руны прошло успешно'; } } else { $rune = mysql_fetch_array(mysql_query('SELECT `i`.`id`,`i`.`item_id`,`i`.`1price`,`i`.`2price`,`i`.`uid`,`i`.`use_text`,`i`.`data`,`i`.`inOdet`,`i`.`inShop`,`i`.`delete`,`i`.`iznosNOW`,`i`.`iznosMAX`,`i`.`gift`,`i`.`gtxt1`,`i`.`gtxt2`,`i`.`kolvo`,`i`.`geniration`,`i`.`magic_inc`,`i`.`maidin`,`i`.`lastUPD`,`i`.`timeOver`,`i`.`overType`,`i`.`secret_id`,`i`.`time_create`,`i`.`inGroup`,`i`.`dn_delete`,`i`.`inTransfer`,`i`.`post_delivery`,`i`.`lbtl_`,`i`.`bexp`,`i`.`so`,`i`.`blvl` ,`m`.`name`,`m`.`level`,`m`.`type` FROM `items_users` AS `i` LEFT JOIN `items_main` AS `m` ON `i`.`item_id` = `m`.`id` WHERE `i`.`id` = "' . mysql_real_escape_string($ruid) . '" AND `i`.`uid` = "' . $this->info['id'] . '" AND `i`.`delete` = "0" AND `i`.`inShop` = "0" LIMIT 1')); if (!isset($rune['id'])) { - $this->error = 'Усиление которое РІС‹ использовали РЅРµ найдено'; + $this->error = 'Усиление которое вы использовали не найдено'; } elseif ($rune['type'] == 62 && $rune['item_id'] == 6167) { //----------------------------------------------- $idt = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`geni`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id` = "' . $id['item_id'] . '" LIMIT` 1')); @@ -4813,9 +4870,9 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $data = $this->lookStats($id['data']); $add = $this->lookStats($rune['data']); if (isset($data['nomodif'])) { - $this->error = 'Улучшить данный предмет невозможно'; + $this->error = 'Улучшить данный предмет невозможно'; } elseif (isset($data['art']) && $data['tr_lvl'] < 0) { - $this->error = 'Встраивание усилений РІ артефакты ниже 10-РіРѕ СѓСЂРѕРІРЅСЏ недоступно'; + $this->error = 'Встраивание усилений в артефакты ниже 10-го уровня недоступно'; } else { if (isset($data['spell']) && $data['spell'] > 0) { @@ -4851,7 +4908,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } } - //Новая чарка + //Новая чарка $srune = mysql_query('SELECT * FROM `new_charov` WHERE 1'); $irun = 0; @@ -4872,7 +4929,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if (!isset($data['sudba'])) { $data['sudba'] = '0'; } - $data['spell_name'] = 'Зачарованно'; //$info + $data['spell_name'] = 'Зачарованно'; //$info $data['spell_st_name'] = $addrune['gname']; $data['spell_st_val'] = $addrunes; $data['spell_id'] = $rune['item_id']; @@ -4885,9 +4942,9 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $tid = mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $rune['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `items_users` SET `data` = "' . $data . '" WHERE `id` = "' . $id['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); if (isset($tid)) { - $this->error = 'Чарование прошло успешно!'; + $this->error = 'Чарование прошло успешно!'; } else { - $this->error = 'Что то пошло РЅРµ так!'; + $this->error = 'Что то пошло не так!'; } unset($tid); } @@ -4906,18 +4963,18 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $idt['type'] = 6; } //$id['type'] = $idt['type']; - //Встраиваем СЂСѓРЅСѓ + //Встраиваем руну $data = $this->lookStats($id['data']); $add = $this->lookStats($rune['data']); if (isset($data['nomodif'])) { - $this->error = 'Улучшить данный предмет невозможно'; + $this->error = 'Улучшить данный предмет невозможно'; } elseif (isset($data['art']) && $data['tr_lvl'] < 0) { - $this->error = 'Встраивание усилений РІ артефакты ниже 10-РіРѕ СѓСЂРѕРІРЅСЏ недоступно'; + $this->error = 'Встраивание усилений в артефакты ниже 10-го уровня недоступно'; /*}elseif(isset($data['spell_id']) && $data['spell_id'] == 6167) { - $this->error = 'Эту чарку использовать нелязя';*/ + $this->error = 'Эту чарку использовать нелязя';*/ } elseif (isset($add['onimposed'])) { - //Встраиваем магию - //Новая чарка + //Встраиваем магию + //Новая чарка $i = 0; $j = 0; $utp = explode(',', $add['onItemType']); @@ -4954,13 +5011,13 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $rune['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `items_users` SET `data` = "' . $data . '" WHERE `id` = "' . $id['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); - $this->error = 'Наложены чары "' . $add['onSpellName'] . '" РЅР° предмет "' . $id['name'] . '"'; + $this->error = 'Наложены чары "' . $add['onSpellName'] . '" на предмет "' . $id['name'] . '"'; } else { - $this->error = 'Предмет "' . $id['name'] . '" РЅРµ РїРѕРґС…РѕРґРёС‚ для усиления.,.'; + $this->error = 'Предмет "' . $id['name'] . '" не подходит для усиления.,.'; } } else { if (isset($data['spell']) && $data['spell'] > 0) { - //Отнимаем эффект РѕС‚ прошлых чарок + //Отнимаем эффект от прошлых чарок $litm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main_data` WHERE `items_id` = "' . $id['item_id'] . '" LIMIT 1')); $data_l = $this->lookStats($litm['data']); @@ -5031,12 +5088,12 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } } - //Новая чарка + //Новая чарка $i = 0; $utp = explode(',', $add['onItemType']); while ($i < count($utp)) { if ($utp[$i] == $id['type']) { - // Определили нужный тип оружия. + // Определили нужный тип оружия. $itm_twohand = mysql_fetch_array(mysql_query('SELECT `2h` FROM `items_main` WHERE `id` = "' . $id['item_id'] . '" LIMIT 1')); if (isset($itm_twohand['2h']) && $itm_twohand['2h'] == 1) $tw = '2'; else $tw = ''; $j = 0; @@ -5049,12 +5106,12 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if (isset($add['imposed']) && $add['imposed'] != '') { $imposed = [ - 'imposed' => '1', // Активно - 'imposed_id' => $rune['id'], // ID чарки свитка - 'imposed_name' => $rune['name'], // Наименование чар, которое отображается РЅР° предмете - 'imposed_level' => $rune['level'], // Цвет подсветки заклинания РїСЂРё отображении. РџРѕ умолчанию: 0; - 'bm_a1' => $add['imposed'], // РРјСЏ файла заклинания. - 'sudba' => $this->info['login'] // Цвет подсветки заклинания РїСЂРё отображении. РџРѕ умолчанию: 0; + 'imposed' => '1', // Активно + 'imposed_id' => $rune['id'], // ID чарки свитка + 'imposed_name' => $rune['name'], // Наименование чар, которое отображается на предмете + 'imposed_level' => $rune['level'], // Цвет подсветки заклинания при отображении. По умолчанию: 0; + 'bm_a1' => $add['imposed'], // Имя файла заклинания. + 'sudba' => $this->info['login'] // Цвет подсветки заклинания при отображении. По умолчанию: 0; ]; if (isset($add['imposed_name'])) $imposed['imposed_name'] = $add['imposed_name']; if (isset($add['imposed_level'])) $imposed['imposed_level'] = $add['imposed_level']; @@ -5072,13 +5129,13 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $rune['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `items_users` SET `data` = "' . $data . '" WHERE `id` = "' . $id['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); - $this->error = 'Наложены чары "' . $imposed['imposed_name'] . '" РЅР° предмет "' . $id['name'] . '"'; + $this->error = 'Наложены чары "' . $imposed['imposed_name'] . '" на предмет "' . $id['name'] . '"'; } elseif (!isset($this->is[$rnda]) && $rnda != 'mib1' && $rnda != 'mib2' && $rnda != 'mib3' && $rnda != 'mib4' && $rnda != 'mab1' && $rnda != 'mab2' && $rnda != 'mab3' && $rnda != 'mab4' ) { - $this->error = 'Попробуйте зачарить предмет СЃРЅРѕРІР°. ( ' . $rnda . ' )'; + $this->error = 'Попробуйте зачарить предмет снова. ( ' . $rnda . ' )'; } else { $data['add_' . $rnda] += $add[$tw . 'add' . $utp[$i] . '_' . $rnda]; if ($rnda == 'mab1' || $rnda == 'mab2' || $rnda == 'mab3' || $rnda == 'mab4') { @@ -5114,11 +5171,11 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $data = $this->impStats($data); - $this->is['mab1'] = 'Броня головы'; - $this->is['mab2'] = 'Броня РєРѕСЂРїСѓСЃР°'; - $this->is['mab3'] = 'Броня РїРѕСЏСЃР°'; - $this->is['mab4'] = 'Броня РЅРѕРі'; - $this->error = 'Увеличина характеристика предмета "' . $id['name'] . '", ' . $this->is[$rnda] . ': +' . $add[$tw . 'add' . $utp[$i] . '_' . $rnda]; + $this->is['mab1'] = 'Броня головы'; + $this->is['mab2'] = 'Броня корпуса'; + $this->is['mab3'] = 'Броня пояса'; + $this->is['mab4'] = 'Броня ног'; + $this->error = 'Увеличина характеристика предмета "' . $id['name'] . '", ' . $this->is[$rnda] . ': +' . $add[$tw . 'add' . $utp[$i] . '_' . $rnda]; unset($this->is['mab1'], $this->is['mab2'], $this->is['mab3'], $this->is['mab4']); @@ -5127,14 +5184,14 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` mysql_query('UPDATE `items_users` SET `data` = "' . $data . '" WHERE `id` = "' . $id['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); } } else { - $this->error = 'Что-то РЅРµ так, невозможно зачаровать данным свитком'; + $this->error = 'Что-то не так, невозможно зачаровать данным свитком'; } $i = 100499; } $i++; } if ($i < 100500) { - $this->error = 'Данный предмет РЅРµ РїРѕРґС…РѕРґРёС‚ для зачарования...'; + $this->error = 'Данный предмет не подходит для зачарования...'; } } @@ -5149,12 +5206,12 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } mysql_query('UPDATE `items_users` SET `iznosNOW` = "' . $id['iznosNOW'] . '" WHERE `id` = "' . $id['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $rune['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); - $this->error = 'Предмет ' . $id['name'] . ' успешно отремонтирован.'; + $this->error = 'Предмет ' . $id['name'] . ' успешно отремонтирован.'; } else { - $this->error = 'Предмет РЅРµ нуждаеться РІ ремонте...'; + $this->error = 'Предмет не нуждаеться в ремонте...'; } } else { - $this->error = 'Свиток ремонтирует только артефакты...'; + $this->error = 'Свиток ремонтирует только артефакты...'; } } elseif ($rune['type'] == 46) { $idt = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`geni`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id` = "' . $id['item_id'] . '" LIMIT` 1')); @@ -5171,9 +5228,9 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $data['srok'] = $id['srok']; } if ($data['srok'] + $id['time_create'] - time() > 86400 + 30) { - $this->error = 'Нельзя использовать РЅР° предметы СЃ СЃСЂРѕРєРѕРј годности 30 Рё более дней.'; + $this->error = 'Нельзя использовать на предметы с сроком годности 30 и более дней.'; } elseif ($id['inslot'] > 0 && $id['inslot'] < 20) { - $this->error = 'РЎСЂРѕРє годности предмета "' . $id['name'] . '" продлен РЅР° ' . $this->timeOut($add['uptimeitem']) . '.'; + $this->error = 'Срок годности предмета "' . $id['name'] . '" продлен на ' . $this->timeOut($add['uptimeitem']) . '.'; if (isset($data['sleep_moroz'])) { unset($data['sleep_moroz']); @@ -5185,24 +5242,24 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` mysql_query('UPDATE `items_users` SET `data` = "' . $data . '",`time_create` = `time_create` + ' . floor($add['uptimeitem']) . ' WHERE `id` = "' . $id['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); } else { - $this->error = 'Предмет данного типа нельзя продлить...'; + $this->error = 'Предмет данного типа нельзя продлить...'; } } else { - $this->error = 'Это работает только РЅР° предметы СЃ СЃСЂРѕРєРѕРј годности...'; + $this->error = 'Это работает только на предметы с сроком годности...'; } } else { - $this->error = 'Затачивать можно только оружие...'; + $this->error = 'Затачивать можно только оружие...'; } } else { - //Заточка + //Заточка $data = $this->lookStats($id['data']); $add = $this->lookStats($rune['data']); if (isset($data['upatack_id'])) { - $this->error = 'Предмет уже заточен, вытащите заточку РІ Ремонтной мастерской.'; + $this->error = 'Предмет уже заточен, вытащите заточку в Ремонтной мастерской.'; } elseif (isset($data['nomodif'])) { - $this->error = 'Улучшить данный предмет невозможно'; + $this->error = 'Улучшить данный предмет невозможно'; } elseif ($add['uptype'] != $id_type || $add['uptype'] == 0) { - $this->error = 'Заточка РЅРµ РїРѕРґС…РѕРґРёС‚ Рє данному предмету...'; + $this->error = 'Заточка не подходит к данному предмету...'; } else { if (isset($data['upatack_id']) && $data['upatack_id'] > 0) { @@ -5226,7 +5283,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $data['upatack_lvl'] = $add['upatack']; $data['upatack_lvl'] = $add['upatack']; - //Добавляем характеристики СЂСѓРЅС‹ + //Добавляем характеристики руны $i = 0; while ($i < count($this->items['add'])) { if (isset($add['add_' . $this->items['add'][$i]])) { @@ -5238,26 +5295,26 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $data['sv_yron_min'] += $add['upatack']; $data['sv_yron_max'] += $add['upatack']; - $this->addDelo(2, $this->info['id'], '"System.remont.upatack": Заточка "' . $data['upatack_name'] . '" была успешно встроена РІ предмет "' . $id['name'] . '" [itm:' . $id['id'] . ']', time(), $this->info['city'], 'System.remont.upatack', 0, 0); + $this->addDelo(2, $this->info['id'], '"System.remont.upatack": Заточка "' . $data['upatack_name'] . '" была успешно встроена в предмет "' . $id['name'] . '" [itm:' . $id['id'] . ']', time(), $this->info['city'], 'System.remont.upatack', 0, 0); $data = $this->impStats($data); mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $rune['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `items_users` SET `1price` = "' . $id['1price'] . '",`2price` = "' . $id['2price'] . '",`data` = "' . $data . '" WHERE `id` = "' . $id['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); - $this->error = 'Заточка "' . $id['name'] . '" прошла успешно'; + $this->error = 'Заточка "' . $id['name'] . '" прошла успешно'; } } } elseif ($rune['type'] == 48) { - //Профиль + //Профиль $data = $this->lookStats($id['data']); $add = $this->lookStats($rune['data']); if ($data['tya1'] >= 90 || $data['tya2'] >= 90 || $data['tya3'] >= 90 || $data['tya4'] >= 90) { - $this->error = 'Предмет уже имеет 90 своего профиля'; + $this->error = 'Предмет уже имеет 90 своего профиля'; } elseif (isset($data['nomodif'])) { - $this->error = 'Улучшить данный предмет невозможно'; + $this->error = 'Улучшить данный предмет невозможно'; } elseif ($add['uptype'] != $id_type || $add['uptype'] == 0) { - $this->error = 'Заточка РЅРµ РїРѕРґС…РѕРґРёС‚ Рє данному предмету...'; + $this->error = 'Заточка не подходит к данному предмету...'; } else { if ($add['tya1'] == 1) { @@ -5291,28 +5348,28 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } - $this->addDelo(2, $this->info['id'], '"System.remont.upatack": Заточка "' . $data['upatack_name'] . '" была успешно встроена РІ предмет "' . $id['name'] . '" [itm:' . $id['id'] . ']', time(), $this->info['city'], 'System.remont.upatack', 0, 0); - $this->error = 'Заточка "' . $id['name'] . '" прошла успешно! Колка:' . $data['tya1'] . ' Р СѓР±:' . $data['tya2'] . ' Дробь:' . $data['tya3'] . ' Реж:' . $data['tya4'] . ' '; + $this->addDelo(2, $this->info['id'], '"System.remont.upatack": Заточка "' . $data['upatack_name'] . '" была успешно встроена в предмет "' . $id['name'] . '" [itm:' . $id['id'] . ']', time(), $this->info['city'], 'System.remont.upatack', 0, 0); + $this->error = 'Заточка "' . $id['name'] . '" прошла успешно! Колка:' . $data['tya1'] . ' Руб:' . $data['tya2'] . ' Дробь:' . $data['tya3'] . ' Реж:' . $data['tya4'] . ' '; $data = $this->impStats($data); mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $rune['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `items_users` SET `1price` = "' . $id['1price'] . '",`2price` = "' . $id['2price'] . '",`data` = "' . $data . '" WHERE `id` = "' . $id['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); } } elseif ($rune['type'] == 50) { - //Страничка саныча + //Страничка саныча if ($id['item_id'] == 3196 || $id['item_id'] == 3197 || $id['item_id'] == 3198) { if ($id['iznosNOW'] > 0) { $id['iznosNOW']--; - $this->error = 'Восстановление "' . $id['name'] . '" прошла успешно! [' . round($id['iznosNOW']) . '/' . round($id['iznosMAX']) . ']'; + $this->error = 'Восстановление "' . $id['name'] . '" прошла успешно! [' . round($id['iznosNOW']) . '/' . round($id['iznosMAX']) . ']'; mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $rune['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `items_users` SET `iznosNOW` = "' . $id['iznosNOW'] . '" WHERE `id` = "' . $id['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); } else { - $this->error = 'Предмет "' . $id['name'] . '" имеет макисмальное значение прочности! [' . round($id['iznosNOW']) . '/' . round($id['iznosMAX']) . ']'; + $this->error = 'Предмет "' . $id['name'] . '" имеет макисмальное значение прочности! [' . round($id['iznosNOW']) . '/' . round($id['iznosMAX']) . ']'; } } else { - $this->error = 'Данный предмет РЅРµ РїРѕРґС…РѕРґРёС‚ для восстановления!!'; + $this->error = 'Данный предмет не подходит для восстановления!!'; } @@ -5323,13 +5380,13 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $id['type'] = $idt['type']; - //Встраиваем СЂСѓРЅСѓ + //Встраиваем руну $data = $this->lookStats($id['data']); $add = $this->lookStats($rune['data']); if (isset($data['nomodif'])) { - $this->error = 'Улучшить данный предмет невозможно'; + $this->error = 'Улучшить данный предмет невозможно'; } elseif (!isset($data['close']) && $data['close'] != 0) { - $this->error = 'РќРµ РїРѕРґС…РѕРґРёС‚ Рє данному предмету, РѕРЅ РЅРµ закрыт...'; + $this->error = 'Не подходит к данному предмету, он не закрыт...'; } else { $data['unopen'] = $rune['id']; $data['unopen_id'] = $rune['item_id']; @@ -5343,7 +5400,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $rune['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `items_users` SET `data` = "' . $data . '" WHERE `id` = "' . $id['id'] . '" AND `uid` = "' . $this->info['id'] . '" LIMIT 1'); - $this->error = 'Открытие "' . $id['name'] . '" прошло успешно'; + $this->error = 'Открытие "' . $id['name'] . '" прошло успешно'; } } elseif ($rune['type'] == 37) { @@ -5355,16 +5412,16 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` // if ($id['gift'] == '' || $id['gift'] == '0') { if (isset($data['notransfer'])) { - $this->error = 'Предмет нельзя передавать...'; + $this->error = 'Предмет нельзя передавать...'; } elseif (isset($data['sudba']) && $data['sudba'] != 0) { - $this->error = 'Предмет связан общей СЃСѓРґСЊР±РѕР№...'; + $this->error = 'Предмет связан общей судьбой...'; } else { if (isset($add['item_inbox']) && $add['item_inbox'] > 0) { - $this->error = 'Р’ упаковке уже что-то есть, осталось сделать подарок!'; + $this->error = 'В упаковке уже что-то есть, осталось сделать подарок!'; } elseif ($id['inTransfer'] > 0 || $id['inShop'] > 0 || $id['inGroup'] > 0) { - $this->error = 'Нельзя передать этот предмет, РѕРЅ РІ передаче, РЅР° прилавке или РІ РіСЂСѓРїРїРµ...'; + $this->error = 'Нельзя передать этот предмет, он в передаче, на прилавке или в группе...'; } else { - //Закидываем предмет РІ упаковку + //Закидываем предмет в упаковку $add['item_inbox'] = $id['id']; $add['open'] = 1; $add['nosale'] = 1; @@ -5373,23 +5430,23 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` mysql_query('UPDATE `items_users` SET `inGroup` = 0,`data` = "' . $add . '" WHERE `id` = "' . $rune['id'] . '" LIMIT 1'); mysql_query('UPDATE `items_users` SET `uid` = -1 WHERE `id` = "' . $id['id'] . '" LIMIT 1'); // - $this->error = 'Предмет "' . $idt['name'] . '" упакован РІ РєРѕСЂРѕР±РєСѓ.'; + $this->error = 'Предмет "' . $idt['name'] . '" упакован в коробку.'; // } } } else { - $this->error = 'Даренное РЅРµ дарят...'; + $this->error = 'Даренное не дарят...'; } // } else { - $this->error = 'Р’С‹ РЅРµ сможете упаковать упаковку...'; + $this->error = 'Вы не сможете упаковать упаковку...'; } } else { - $this->error = '(' . $rune['type'] . ') Усиление которое РІС‹ использовали РЅРµ найдено...'; + $this->error = '(' . $rune['type'] . ') Усиление которое вы использовали не найдено...'; } } } else { - $this->error = 'Подходящего предмета РЅРµ нашлось...'; + $this->error = 'Подходящего предмета не нашлось...'; } } @@ -5433,17 +5490,17 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $v = count($slot[9]) + count($slot[10]) + count($slot[11]); $a = count($itm) - $l - $v; if ($this->stats['silver'] == 2) { - // 3 Артефакта (1оружие Рё РІСЃРµ РєСЂРѕРјРµ ювелирки) + // 3 Артефакта (1оружие и все кроме ювелирки) if ($j > 3 || $l > 1 || $v > 0) { $r = false; } } elseif ($this->stats['silver'] == 3) { - // 6 Артефактов (1 оружие, 1 ювелирка Рё 4 вещи РЅР° выбор) + // 6 Артефактов (1 оружие, 1 ювелирка и 4 вещи на выбор) if ($j > 6 || $l > 1 || $v > 1) { $r = false; } } elseif ($this->stats['silver'] == 4) { - // 9 Артефактов (2 оружия, 2 ювелирки Рё 5 вещей РЅР° выбор) + // 9 Артефактов (2 оружия, 2 ювелирки и 5 вещей на выбор) if ($j > 9 || $l > 2 || $v > 2) { $r = false; } @@ -5460,7 +5517,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $r = $r / 100; } $r = $c['shop_type2']; - //$r = 1; //СЃРєСѓРїРєР° 100% + //$r = 1; //скупка 100% $r = round(($r / 100), 2); return $r; } @@ -5469,11 +5526,11 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` { global $c, $code; - $i = 0; // счетчик, просто обнуняем. - $j = 0; // Всего предметов while ++ - $k = 1; // 0 или 1 - $rt = [0 => 0, 1 => 0, 2 => '']; // Количество? Непонятно - $clr = [0 => 'c8c8c8', 1 => 'd4d4d4']; // Цвет фона для предметов + $i = 0; // счетчик, просто обнуняем. + $j = 0; // Всего предметов while ++ + $k = 1; // 0 или 1 + $rt = [0 => 0, 1 => 0, 2 => '']; // Количество? Непонятно + $clr = [0 => 'c8c8c8', 1 => 'd4d4d4']; // Цвет фона для предметов $sort = explode('ORDER BY', $sort); if (isset($sort[0], $sort[1])) { $where = $sort[0]; @@ -5500,28 +5557,28 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $is1 = ''; $is2 = ''; $d = []; - //тест + //тест $d[0] = 0; $d[1] = 1; $d[2] = 0; $po = $this->lookStats($pl['data']); $see1 = 1; - if ($type == 15) { //кормушка зверя + if ($type == 15) { //кормушка зверя if ($anm['type'] == 3 && substr_count($pl['img'], 'wisp') == 0) { - $see1 = 0; //светляк + $see1 = 0; //светляк } elseif ($anm['type'] == 2 && substr_count($pl['img'], 'owl') == 0) { - $see1 = 0; //СЃРѕРІР° + $see1 = 0; //сова } elseif ($anm['type'] == 1 && substr_count($pl['img'], 'cat') == 0) { - $see1 = 0; //РєРѕС‚ + $see1 = 0; //кот } elseif ($anm['type'] == 4 && substr_count($pl['img'], 'chrt') == 0) { - $see1 = 0; //чертяка + $see1 = 0; //чертяка } elseif ($anm['type'] == 5 && substr_count($pl['img'], 'dog') == 0) { - $see1 = 0; //собака + $see1 = 0; //собака } elseif ($anm['type'] == 6 && substr_count($pl['img'], 'pig') == 0) { - $see1 = 0; //СЃРІРёРЅСЊСЏ + $see1 = 0; //свинья } elseif ($anm['type'] == 7 && substr_count($pl['img'], 'dragon') == 0) { - $see1 = 0; //дракон + $see1 = 0; //дракон } } elseif (isset($po['nosale']) && $type == 2) { $see1 = 0; @@ -5544,7 +5601,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $see1 = 0; } elseif ($type == 67 && $pl['gift'] != '') { $see1 = 0; - } elseif ($type == 11) { // Храм Знаний (плавка предметов) + } elseif ($type == 11) { // Храм Знаний (плавка предметов) if ( $pl['inTransfer'] > 0 || (!empty($po['sudba']) && $po['sudba'] != $this->info['login']) || @@ -5553,7 +5610,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` ) { $see1 = 0; } - } elseif ($type == 14) { // Храм Знаний (плавка СЂСѓРЅ) + } elseif ($type == 14) { // Храм Знаний (плавка рун) if ($pl['inTransfer'] > 0 || !in_array($pl['type'], [31, 6001, 6002, 6003])) { $see1 = 0; } @@ -5569,12 +5626,12 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } elseif (isset($po['musor']) && $po['musor'] > 0 && $pl['iznosNOW'] >= $pl['iznosMAX']) { $see1 = 0; } elseif ($type == 57) { - //РџРѕРґРіРѕРЅРєР° + //Подгонка if ($pl['type'] < 18 || $pl['type'] > 28 || $pl['type'] == 25) { $see1 = 0; } } elseif ($type == 58) { - //Вытаскивание СЂСѓРЅ + //Вытаскивание рун if (!isset($po['rune_id'])) { $see1 = 0; } @@ -5624,19 +5681,19 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } else { $k = 1; } - if (($pl['type'] >= 18 && $pl['type'] <= 24) || $pl['type'] == 26 || $pl['type'] == 27) { //Р—РѕРЅС‹ блока + + if (($pl['type'] >= 18 && $pl['type'] <= 24) || $pl['type'] == 26 || $pl['type'] == 27) { //Зоны блока + if (!isset($po['zonb'])) { $po['zonb'] = 0; } $po['zonb']++; } - //правая часть + //правая часть $mx = ''; if (isset($po['upatack_lvl'])) { $mx .= ' +' . $po['upatack_lvl']; } if (isset($po['modif'])) { - $mx .= ' (РјС„)'; + $mx .= ' (мф)'; } $col = $this->itemsX($pl['id']); if ($col > 1 && $pl['inGroup'] != 0) { @@ -5653,7 +5710,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } } if (isset($po['renameadd']) && $po['renameadd'] != '') { - $pl['name'] .= ' (Предмет: ' . $po['renameadd'] . ')'; + $pl['name'] .= ' (Предмет: ' . $po['renameadd'] . ')'; } if (isset($po['icos'])) { $pl['name'] = '' . $pl['name'] . '  ' . $po['icos'] . ' '; @@ -5661,72 +5718,72 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $is2 = '' . $pl['name'] . '' . $mx . ''; $is2 .= '  '; if ($pl['massa'] > 0) { - $is2 .= ' (Масса: ' . ($pl['massa'] * $col) . ')'; + $is2 .= ' (Масса: ' . ($pl['massa'] * $col) . ')'; } if ($pl['gift'] != '') { $ttl = ''; if ($pl['gift'] == 1) { - $ttl = 'Р’С‹ РЅРµ можете передать этот предмет РєРѕРјСѓ-либо'; + $ttl = 'Вы не можете передать этот предмет кому-либо'; } else { - $ttl = 'Этот предмет вам подарил ' . $pl['gift'] . '. Р’С‹ РЅРµ сможете передать этот предмет РєРѕРјСѓ-либо еще'; + $ttl = 'Этот предмет вам подарил ' . $pl['gift'] . '. Вы не сможете передать этот предмет кому-либо еще'; } $is2 .= ' '; } if (isset($po['art'])) { - $is2 .= ' '; + $is2 .= ' '; } if (isset($po['sudba'])) { if ($po['sudba'] == '0') { - $is2 .= ' '; + $is2 .= ' '; } elseif ($po['sudba'] == '1') { - $is2 .= ' '; + $is2 .= ' '; } else { - $is2 .= ' '; + $is2 .= ' '; } } - if ($pl['price1'] > 0) { //цена + if ($pl['price1'] > 0) { //цена $pex = explode('.', $pl['price1']); if ($pex[1] == '00') { $pl['price1'] = $pex[0]; } if ($_GET['toRent'] == 2) { - $is2 .= '
Цена: ' . ($pl['price1']) . ' кр.'; + $is2 .= '
Цена: ' . ($pl['price1']) . ' кр.'; } else { - $is2 .= '
Цена: ' . ($pl['price1'] * $col) . ' кр.'; + $is2 .= '
Цена: ' . ($pl['price1'] * $col) . ' кр.'; } } if ($pl['pricerep'] > 0) { - $is2 .= ' (' . round($pl['pricerep'] * $col, 2) . ' Воинственности)'; + $is2 .= ' (' . round($pl['pricerep'] * $col, 2) . ' Воинственности)'; } - if ($pl['iznosMAX'] > 0) { //долговечность + if ($pl['iznosMAX'] > 0) { //долговечность $izcol = ''; if (floor($pl['iznosNOW']) >= (floor($pl['iznosMAX']) - ceil($pl['iznosMAX']) / 100 * 20)) { $izcol = 'brown'; } if ($pl['iznosMAXi'] == 999999999) { - $is2 .= '
Долговечность: неразрушимо'; + $is2 .= '
Долговечность: неразрушимо'; } else { - $is2 .= '
Долговечность: ' . floor($pl['iznosNOW']) . '/' . ceil($pl['iznosMAX']) . ''; + $is2 .= '
Долговечность: ' . floor($pl['iznosNOW']) . '/' . ceil($pl['iznosMAX']) . ''; } } if ($po['battleUseZd'] > 0) { - $is2 .= '
Задержка использования: ' . $this->timeOut($po['battleUseZd']) . ''; + $is2 .= '
Задержка использования: ' . $this->timeOut($po['battleUseZd']) . ''; } if (isset($po['srok']) && $po['srok'] > 0) { $pl['srok'] = $po['srok']; } - if ($pl['srok'] > 0) { //РЎСЂРѕРє годности предмета - $is2 .= '
РЎСЂРѕРє годности: ' . $this->timeOut($pl['srok']) . ' (РґРѕ ' . date('d.m.Y H:i', $pl['time_create'] + $pl['srok']) . ')'; + if ($pl['srok'] > 0) { //Срок годности предмета + $is2 .= '
Срок годности: ' . $this->timeOut($pl['srok']) . ' (до ' . date('d.m.Y H:i', $pl['time_create'] + $pl['srok']) . ')'; } if ($pl['magic_chance'] > 0) { - $is2 .= '
Вероятность срабатывания: ' . min([$pl['magic_chance'], 100]) . '%'; + $is2 .= '
Вероятность срабатывания: ' . min([$pl['magic_chance'], 100]) . '%'; } - if ((int)$pl['magic_inci'] > 0) { //Продолжительность действия магии: + if ((int)$pl['magic_inci'] > 0) { //Продолжительность действия магии: $efi = mysql_fetch_array(mysql_query('SELECT `id2`,`mname`,`type1`,`img`,`mdata`,`actionTime`,`type2`,`type3`,`onlyOne`,`oneType`,`noAce`,`see`,`info`,`overch`,`bp`,`noch` FROM `eff_main` WHERE `id2` = "' . ((int)$pl['magic_inci']) . '" LIMIT 1')); if (isset($efi['id2']) && $efi['actionTime'] > 0) { - $is2 .= '
Продолжительность действия: ' . $this->timeOut($efi['actionTime']); + $is2 .= '
Продолжительность действия: ' . $this->timeOut($efi['actionTime']); } } @@ -5734,7 +5791,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if (isset($po['sudba']) && $po['sudba'] != '0' && $po['sudba'] != $this->info['login']) { $notr++; } - //Требуется минимальное: + //Требуется минимальное: $tr = ''; $t = $this->items['tr']; $x = 0; @@ -5769,7 +5826,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $notr++; } } - $tr .= '
• '; + $tr .= '
• '; if ($n == 'rep') { $temp = explode('::', $po['tr_' . $n]); $tr .= $this->is[$n] . ' ' . ucfirst(str_replace('city', ' city', $temp[1])) . ': ' . $temp[0]; @@ -5777,9 +5834,9 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } elseif ($n != 'align' && $n != 'align_bs') { if ($n == 'sex') { if ($po['tr_' . $n] == 1) { - $tr .= $this->is[$n] . ': Женский'; + $tr .= $this->is[$n] . ': Женский'; } else { - $tr .= $this->is[$n] . ': Мужской'; + $tr .= $this->is[$n] . ': Мужской'; } } else { $tr .= $this->is[$n] . ': ' . $po['tr_' . $n]; @@ -5802,19 +5859,19 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $x++; } if ($tr != '') { - $is2 .= '
Требуется минимальное:' . $tr; + $is2 .= '
Требуется минимальное:' . $tr; } - //Действует РЅР°: + //Действует на: $tr = ''; $t = $this->items['add']; if (isset($po['mf_stats']) && $po['mf_stats'] > 0) { - $tr .= '
Свободные характеристики: ' . $po['mf_stats']; + $tr .= '
Свободные характеристики: ' . $po['mf_stats']; } if (isset($po['mf_mod']) && $po['mf_mod'] > 0) { - $tr .= '
Свободные модификаторы: ' . $po['mf_mod']; + $tr .= '
Свободные модификаторы: ' . $po['mf_mod']; } if (isset($po['mf_mib']) && $po['mf_mib'] > 0) { - $tr .= '
Свободные улучшения брони: ' . $po['mf_mib']; + $tr .= '
Свободные улучшения брони: ' . $po['mf_mib']; } $x = 0; @@ -5825,7 +5882,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($po['add_' . $n] < 0) { $z = ''; } - $tr .= '
• ' . $this->is[$n] . ': ' . $z . '' . $po['add_' . $n]; + $tr .= '
• ' . $this->is[$n] . ': ' . $z . '' . $po['add_' . $n]; if (isset($po['mf_stats']) && $po['mf_stats'] > 0 && ($n == 's1' || $n == 's2' || $n == 's3' || $n == 's5')) { $tr .= ' '; } @@ -5835,9 +5892,9 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $x++; } - //действует РЅР° (Р±СЂРѕРЅСЏ) + //действует на (броня) $i = 1; - $bn = [1 => 'головы', 2 => 'РєРѕСЂРїСѓСЃР°', 3 => 'РїРѕСЏСЃР°', 4 => 'РЅРѕРі']; + $bn = [1 => 'головы', 2 => 'корпуса', 3 => 'пояса', 4 => 'ног']; while ($i <= 4) { if (isset($po['add_mab' . $i])) { if ($po['add_mab' . $i] == $po['add_mib' . $i] && $pl['geniration'] == 1) { @@ -5845,9 +5902,9 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($po['add_mab' . $i] < 0) { $z = ''; } - $tr .= '
• Броня ' . $bn[$i] . ': ' . $z . '' . $po['add_mab' . $i]; + $tr .= '
• Броня ' . $bn[$i] . ': ' . $z . '' . $po['add_mab' . $i]; } else { - $tr .= '
• Броня ' . $bn[$i] . ': ' . $po['add_mib' . $i] . '-' . $po['add_mab' . $i]; + $tr .= '
• Броня ' . $bn[$i] . ': ' . $po['add_mib' . $i] . '-' . $po['add_mab' . $i]; } if (isset($po['mf_mib']) && $po['mf_mib'] > 0) { $tr .= ' '; @@ -5857,13 +5914,13 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } if ($tr != '') { - $is2 .= '
Действует на:' . $tr; + $is2 .= '
Действует на:' . $tr; } - //Свойства предмета: + //Свойства предмета: $tr = ''; $t = $this->items['sv']; if (isset($po['sv_yron_min'], $po['sv_yron_max'])) { - $tr .= '
• Урон: ' . $po['sv_yron_min'] . ' - ' . $po['sv_yron_max']; + $tr .= '
• Урон: ' . $po['sv_yron_min'] . ' - ' . $po['sv_yron_max']; } $x = 0; while ($x < count($t)) { @@ -5873,18 +5930,18 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($po['sv_' . $n] < 0) { $z = ''; } - $tr .= '
• ' . $this->is[$n] . ': ' . $z . '' . $po['sv_' . $n]; + $tr .= '
• ' . $this->is[$n] . ': ' . $z . '' . $po['sv_' . $n]; } $x++; } if ($pl['2too'] == 1) { - $tr .= '
• Второе оружие'; + $tr .= '
• Второе оружие'; } if ($pl['2h'] == 1) { - $tr .= '
• Двуручное оружие'; + $tr .= '
• Двуручное оружие'; } if (isset($po['zonb'])) { - $tr .= '
• Зоны блокирования: '; + $tr .= '
• Зоны блокирования: '; if ($po['zonb'] > 0) { $x = 1; while ($x <= $po['zonb']) { @@ -5892,11 +5949,11 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $x++; } } else { - $tr .= '—'; + $tr .= '—'; } } if ($tr != '') { - $is2 .= '
Свойства предмета:' . $tr; + $is2 .= '
Свойства предмета:' . $tr; } @@ -5913,34 +5970,34 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $d[0] = 0; $d[2] = 0; } - //Апгрейды вещей + //Апгрейды вещей $tr = ''; - //Встроенная магия + //Встроенная магия if ($pl['magic_inci'] != '' || $pl['magic_inc'] != '') { if ($pl['magic_inc'] == '') { $pl['magic_inc'] = $pl['magic_inci']; } $mgi = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $pl['magic_inc'] . '" AND `type1` = "12345" LIMIT 1')); if (isset($mgi['id2'])) { - $is2 .= '
Встроено заклятие ' . $mgi['minfo'] . '
'; + $is2 .= '
Встроено заклятие ' . $mgi['minfo'] . '
'; } } if (isset($po['rune']) && $po['rune'] > 0) { $rnc = explode(' ', $po['rune_name']); - if ($rnc[0] == 'РРіРЅРёСЃ') { + if ($rnc[0] == 'Игнис') { $rnc = '#9b5d40'; - } elseif ($rnc[0] == 'РђРєРІР°') { + } elseif ($rnc[0] == 'Аква') { $rnc = '#3a2b64'; - } elseif ($rnc[0] == 'РђСѓСЂР°') { + } elseif ($rnc[0] == 'Аура') { $rnc = '#20a3b0'; - } elseif ($rnc[0] == 'Тера') { + } elseif ($rnc[0] == 'Тера') { $rnc = '#4c7718'; } else { $rnc = '#4c4c4c'; } - $tr .= '
• Встроенная СЂСѓРЅР°: ' . $po['rune_name'] . ''; + $tr .= '
• Встроенная руна: ' . $po['rune_name'] . ''; unset($rnc); } @@ -5957,12 +6014,12 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } else { $rnc = '#d99800'; } - $po['spell_name'] = str_replace('Зачаровать ', '', $po['spell_name']); - $this->is['mab1'] = 'Броня головы'; - $this->is['mab2'] = 'Броня РєРѕСЂРїСѓСЃР°'; - $this->is['mab3'] = 'Броня РїРѕСЏСЃР°'; - $this->is['mab4'] = 'Броня РЅРѕРі'; - $tr .= '
• Встроенно зачарование: ' . $po['spell_name'] . ' (' . $this->is[$po['spell_st_name']] . ': +' . $po['spell_st_val'] . ')'; + $po['spell_name'] = str_replace('Зачаровать ', '', $po['spell_name']); + $this->is['mab1'] = 'Броня головы'; + $this->is['mab2'] = 'Броня корпуса'; + $this->is['mab3'] = 'Броня пояса'; + $this->is['mab4'] = 'Броня ног'; + $tr .= '
• Встроенно зачарование: ' . $po['spell_name'] . ' (' . $this->is[$po['spell_st_name']] . ': +' . $po['spell_st_val'] . ')'; unset($this->is['mab1'], $this->is['mab2'], $this->is['mab3'], $this->is['mab4']); unset($rnc); } @@ -5979,23 +6036,23 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } else { $rnc = '#282828'; } - $po['imposed_name'] = str_replace('Чары ', '', $po['imposed_name']); - $tr .= '
Наложены заклятия: ' . $po['imposed_name'] . ' '; + $po['imposed_name'] = str_replace('Чары ', '', $po['imposed_name']); + $tr .= '
Наложены заклятия: ' . $po['imposed_name'] . ' '; unset($rnc); } if ($tr != '') { - $is2 .= '
Улучшения предмета:'; + $is2 .= '
Улучшения предмета:'; $is2 .= $tr; } if (isset($po['free_stats']) && $po['free_stats'] > 0) { - $is2 .= '
Распределение статов:'; - $is2 .= '
Сила: ' . $po['add_s1'] . '
Ловкость: ' . $po['add_s2'] . '
Рнтуиция: ' . $po['add_s3'] . '
Рнтеллект: ' . $po['add_s5'] . '
'; - $is2 .= '• Осталось распределений: ' . $po['free_stats'] . ''; + $is2 .= '
Распределение статов:'; + $is2 .= '
Сила: ' . $po['add_s1'] . '
Ловкость: ' . $po['add_s2'] . '
Интуиция: ' . $po['add_s3'] . '
Интеллект: ' . $po['add_s5'] . '
'; + $is2 .= '• Осталось распределений: ' . $po['free_stats'] . ''; } if (isset($po['sm_abil'])) { - //Возможно сохранять Рё распределять скилы + //Возможно сохранять и распределять скилы $mx2 = 1; $mx1 = 0; $mx3 = $this->lookStats($this->info['stats']); @@ -6005,27 +6062,27 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $mx1 += $this->info['ability']; if ($mx1 > 0) { - $is2 .= '
Распределение характеристик:'; + $is2 .= '
Распределение характеристик:'; if (isset($po['sudba']) && $po['sudba'] == '0') { $mx1 = 0; - $is2 .= '
• Распределение характеристик будет доступно после первого одевания
'; + $is2 .= '
• Распределение характеристик будет доступно после первого одевания
'; } else { $is2 .= '
- Сила: ' . (0 + $po['add_s1']) . '
- Ловкость: ' . (0 + $po['add_s2']) . '
- Рнтуиция: ' . (0 + $po['add_s3']) . '
- Выносливость: ' . (0 + $po['add_s4']) . '
- Рнтеллект: ' . (0 + $po['add_s5']) . '
- Мудрость: ' . (0 + $po['add_s6']) . '
+ Сила: ' . (0 + $po['add_s1']) . '
+ Ловкость: ' . (0 + $po['add_s2']) . '
+ Интуиция: ' . (0 + $po['add_s3']) . '
+ Выносливость: ' . (0 + $po['add_s4']) . '
+ Интеллект: ' . (0 + $po['add_s5']) . '
+ Мудрость: ' . (0 + $po['add_s6']) . '
'; - $is2 .= 'Осталось распределений: ' . $mx1; + $is2 .= 'Осталось распределений: ' . $mx1; } } unset($mx1, $mx2, $mx3); } if (isset($po['sm_skill'])) { - //Возможно сохранять Рё распределять скилы + //Возможно сохранять и распределять скилы $mx2 = 1; $mx1 = 0; $mx3 = $this->lookStats($this->info['stats']); @@ -6035,42 +6092,42 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $mx1 += $this->info['skills']; if ($mx1 > 0) { - $is2 .= '
Распределение владений оружием и магией:'; + $is2 .= '
Распределение владений оружием и магией:'; if (isset($po['sudba']) && $po['sudba'] == '0') { $mx1 = 0; - $is2 .= '
• Распределение владений будет доступно после первого одевания
'; + $is2 .= '
• Распределение владений будет доступно после первого одевания
'; } else { $is2 .= '
- Мастерство владения мечами: ' . (0 + $po['add_a1']) . '
- Мастерство владения дубинами, булавами: ' . (0 + $po['add_a2']) . '
- Мастерство владения ножами, кастетами: ' . (0 + $po['add_a3']) . '
- Мастерство владения топорами, секирами: ' . (0 + $po['add_a4']) . '
- Мастерство владения магическими посохами: ' . (0 + $po['add_a5']) . '
- Мастерство владения стихией Огня: ' . (0 + $po['add_mg1']) . '
- Мастерство владения стихией Воздуха: ' . (0 + $po['add_mg2']) . '
- Мастерство владения стихией Воды: ' . (0 + $po['add_mg3']) . '
- Мастерство владения стихией Земли: ' . (0 + $po['add_mg4']) . '
- Мастерство владения магией Света: ' . (0 + $po['add_mg5']) . '
- Мастерство владения магией Тьмы: ' . (0 + $po['add_mg6']) . '
- Мастерство владения серой магией: ' . (0 + $po['add_mg7']) . '
+ Мастерство владения мечами: ' . (0 + $po['add_a1']) . '
+ Мастерство владения дубинами, булавами: ' . (0 + $po['add_a2']) . '
+ Мастерство владения ножами, кастетами: ' . (0 + $po['add_a3']) . '
+ Мастерство владения топорами, секирами: ' . (0 + $po['add_a4']) . '
+ Мастерство владения магическими посохами: ' . (0 + $po['add_a5']) . '
+ Мастерство владения стихией Огня: ' . (0 + $po['add_mg1']) . '
+ Мастерство владения стихией Воздуха: ' . (0 + $po['add_mg2']) . '
+ Мастерство владения стихией Воды: ' . (0 + $po['add_mg3']) . '
+ Мастерство владения стихией Земли: ' . (0 + $po['add_mg4']) . '
+ Мастерство владения магией Света: ' . (0 + $po['add_mg5']) . '
+ Мастерство владения магией Тьмы: ' . (0 + $po['add_mg6']) . '
+ Мастерство владения серой магией: ' . (0 + $po['add_mg7']) . '
'; - $is2 .= 'Осталось распределений: ' . $mx1; + $is2 .= 'Осталось распределений: ' . $mx1; } } unset($mx1, $mx2, $mx3); } if (isset($po['complect']) || isset($po['complect2'])) { - $is2 .= '
Дополнительная информация:'; + $is2 .= '
Дополнительная информация:'; } if (isset($po['complect'])) { - //РЅРµ отображается - $com1 = ['name' => 'Неизвестный Комплект', 'x' => 0, 'text' => '']; + //не отображается + $com1 = ['name' => 'Неизвестный Комплект', 'x' => 0, 'text' => '']; $spc = mysql_query('SELECT `id`,`com`,`name`,`x`,`data` FROM `complects` WHERE `com` = "' . $po['complect'] . '" ORDER BY `x` ASC LIMIT 20'); while ($plc = mysql_fetch_array($spc)) { $com1['name'] = $plc['name']; $com1['text'] .= '    • ' . $plc['x'] . ': '; - //действие комплекта + //действие комплекта $i1c = 0; $i2c = 0; $i1e = $this->lookStats($plc['data']); @@ -6093,18 +6150,18 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` unset($i1c, $i2c, $i3c); $com1['x']++; } - $is2 .= '
• Часть комплекта: ' . $com1['name'] . '
'; + $is2 .= '
• Часть комплекта: ' . $com1['name'] . '
'; $is2 .= $com1['text']; $is2 .= ''; } if (isset($po['complect2'])) { - //РЅРµ отображается - $com1 = ['name' => 'Неизвестный Комплект', 'x' => 0, 'text' => '']; + //не отображается + $com1 = ['name' => 'Неизвестный Комплект', 'x' => 0, 'text' => '']; $spc = mysql_query('SELECT `id`,`com`,`name`,`x`,`data` FROM `complects` WHERE `com` = "' . $po['complect2'] . '" ORDER BY `x` ASC LIMIT 20'); while ($plc = mysql_fetch_array($spc)) { $com1['name'] = $plc['name']; $com1['text'] .= '    • ' . $plc['x'] . ': '; - //действие комплекта + //действие комплекта $i1c = 0; $i2c = 0; $i1e = $this->lookStats($plc['data']); @@ -6127,13 +6184,13 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` unset($i1c, $i2c, $i3c); $com1['x']++; } - $is2 .= '
• Часть комплекта (РїРѕРґРіРѕРЅРєР°): ' . $com1['name'] . '
'; + $is2 .= '
• Часть комплекта (подгонка): ' . $com1['name'] . '
'; $is2 .= $com1['text']; $is2 .= ''; } if ($pl['max_text'] > 0) { - //Рнвентарь + //Инвентарь $sm_sp = mysql_query('SELECT `id`,`item_id`,`time`,`login`,`type`,`text`,`city`,`x` FROM `items_text` WHERE `item_id` = "' . $pl['id'] . '" ORDER BY `id` ASC LIMIT 500'); $sma = 0; $smt = ''; @@ -6152,10 +6209,10 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $smt .= ''; if ($pl['max_text'] - $pl['use_text'] > 0) { - $is2 .= '
Количество символов: ' . ($pl['max_text'] - $pl['use_text']) . '
'; + $is2 .= '
Количество символов: ' . ($pl['max_text'] - $pl['use_text']) . '
'; } if ($sma > 0) { - $is2 .= '
На предмете записан текст:
+ $is2 .= '
На предмете записан текст:
@@ -6166,7 +6223,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } unset($sm_sp, $sma, $sm_pl); } elseif (isset($po['onitm_text'])) { - $is2 .= '
На предмете записан текст:
+ $is2 .= '
На предмете записан текст:
' . $smt . '
@@ -6176,13 +6233,13 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } if (isset($po['gravi'])) { - $is2 .= '
На поверхности выгравирована надпись: ' . $po['gravi'] . ''; + $is2 .= '
На поверхности выгравирована надпись: ' . $po['gravi'] . ''; } $is2 .= ''; if ($pl['info'] != '') { - $is2 .= '
Рекомендации:
' . $pl['info'] . '
'; + $is2 .= '
Рекомендации:
' . $pl['info'] . '
'; } if (isset($po['info']) && $po['info'] != '') { @@ -6193,10 +6250,10 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $po['toclan1'] = explode('#', $po['toclan']); $clpo = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $po['toclan1'][0] . '" LIMIT 1')); if (isset($clpo['id'])) { - $is2 .= '
Предмет принадлежит клану ' . $clpo['name'] . ''; + $is2 .= '
Предмет принадлежит клану ' . $clpo['name'] . ''; $plpo = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`cityreg` FROM `users` WHERE `id` = "' . $po['toclan1'][1] . '" LIMIT 1')); if (isset($plpo['id'])) { - $is2 .= ' (Дар РёРіСЂРѕРєР° ' . $plpo['login'] . ')'; + $is2 .= ' (Дар игрока ' . $plpo['login'] . ')'; if ($plpo['login'] == $this->info['login']) { if (isset($_GET['backmyitm'])) { $pl['inOdet'] = 0; @@ -6205,33 +6262,33 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $pl['data'] = $this->impStats($po); mysql_query('UPDATE `items_users` SET `data` = "' . mysql_real_escape_string($pl['data']) . '",`inOdet` = 0,`uid` = "' . $pl['uid'] . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); } - $is2 .= '
(Вы владелец предмета: Вернуть предмет себе)'; + $is2 .= '
(Вы владелец предмета: Вернуть предмет себе)'; } } $is2 .= '
'; } } if (isset($po['noremont'])) { - $is2 .= '
Предмет не подлежит ремонту
'; + $is2 .= '
Предмет не подлежит ремонту
'; } if (isset($po['nosale'])) { - $is2 .= '
Предмет нельзя продать
'; + $is2 .= '
Предмет нельзя продать
'; } if (isset($po['nomodif'])) { - $is2 .= '
Предмет нельзя улучшать
'; + $is2 .= '
Предмет нельзя улучшать
'; } if (isset($po['nodelete'])) { - $is2 .= '
Предмет нельзя выбросить
'; + $is2 .= '
Предмет нельзя выбросить
'; } if (isset($po['frompisher'])) { - $is2 .= '
Предмет из подземелья
'; + $is2 .= '
Предмет из подземелья
'; } if (isset($po['sleep_moroz']) && $po['sleep_moroz'] > 0) { - $is2 .= '
Предмет не портится во время сна
'; + $is2 .= '
Предмет не портится во время сна
'; } if (isset($po['fromlaba']) && $po['fromlaba'] > 0) { - $is2 .= '
Предмет из лабиринта
'; + $is2 .= '
Предмет из лабиринта
'; } if (isset($po['vip_sale']) && $po['vip_sale'] > 0) { @@ -6240,27 +6297,27 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $pl['time_create'] = $this->stats['slvtm']; mysql_query('UPDATE `items_users` SET `time_create` = "' . $pl['time_create'] . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); } - $is2 .= '
Предмет будет недоступен через ' . $this->timeOut($pl['time_create'] - time()) . '
'; + $is2 .= '
Предмет будет недоступен через ' . $this->timeOut($pl['time_create'] - time()) . '
'; } else { - $is2 .= '
Предмет недоступен, приобретите конкретный VIP
'; + $is2 .= '
Предмет недоступен, приобретите конкретный VIP
'; if (($pl['time_create'] - time() + 86400 * 30) < 1) { - $is2 .= '
Предмет рассыпался у Вас на глазах...
'; + $is2 .= '
Предмет рассыпался у Вас на глазах...
'; } else { - $is2 .= '
Предмет исчезнет через ' . $this->timeOut($pl['time_create'] - time() + 86400 * 30) . '
'; + $is2 .= '
Предмет исчезнет через ' . $this->timeOut($pl['time_create'] - time() + 86400 * 30) . '
'; } } } if ($pl['dn_delete'] > 0) { - $is2 .= '
Предмет будет удален при выходе из подземелья
'; + $is2 .= '
Предмет будет удален при выходе из подземелья
'; } if ($this->pokol > $pl['geni']) { - $is2 .= '
Предмет устарел
'; + $is2 .= '
Предмет устарел
'; } if (isset($po['zazuby']) && $po['zazuby'] > 0) { - $is2 .= '
Предмет куплен за зубы
'; + $is2 .= '
Предмет куплен за зубы
'; } $is2 .= '
'; @@ -6283,18 +6340,18 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($type == 81) { - $is1 .= 'Выбрать данный предмет'; + $is1 .= 'Выбрать данный предмет'; } elseif ($type == 80) { //$this->lookStats($itm['data']); //$pl['id'] $itemrun = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `id` ="' . $pl['id'] . '" LIMIT 1')); $it = $this->lookStats($itemrun['data']); - if (!isset($it['rune_name']) || $_GET['otdel'] == 2) //отдел 2(заточки) + if (!isset($it['rune_name']) || $_GET['otdel'] == 2) //отдел 2(заточки) { - $is1 .= 'Выбрать данный предмет'; + $is1 .= 'Выбрать данный предмет'; } else { - $is1 .= 'Установленна:
' . $it['rune_name'] . '
'; + $is1 .= 'Установленна:
' . $it['rune_name'] . '
'; } unset($itemrun, $it); } elseif ($type == 69) { @@ -6306,61 +6363,61 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } $prs1 = $this->floordec($po['hprs'] * $col, 2); $rps1 = $this->floordec($po['hprp'] * $col); - $is1 .= 'Обменять на ' . $prs1 . ' кр.
Обменять РЅР° ' . $rps1 . ' ед. репутации'; + $is1 .= 'Обменять на ' . $prs1 . ' кр.
Обменять на ' . $rps1 . ' ед. репутации'; $is1 .= '
'; } elseif ($type == 68) { - $is1 .= 'Забрать
Отказаться'; + $is1 .= 'Забрать
Отказаться'; if ($pl['lastUPD'] > 0) { $is1 .= '

(' . $this->timeOut(($pl['lastUPD'] + 7 * 24 * 60 * 60) - time()) . ')'; } $is1 .= '
'; } elseif ($type == 67) { - $is1 .= 'передать Р·Р° ' . (round(1 + $pl['price1'] / 100 * 7) * $col) . ' РєСЂ.'; + $is1 .= 'передать за ' . (round(1 + $pl['price1'] / 100 * 7) * $col) . ' кр.'; } elseif ($type == 66) { $pos = explode('#', $po['toclan']); $us_1 = $pos[1]; if ($pl['uid'] < 1) { - $is1 .= 'Взять предмет'; + $is1 .= 'Взять предмет'; } else { $yui = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`cityreg` FROM `users` WHERE `id` = "' . mysql_real_escape_string($pl['uid']) . '" LIMIT 1')); - $is1 .= 'Предмет Сѓ РёРіСЂРѕРєР°
' . $yui['login'] . '
'; + $is1 .= 'Предмет у игрока
' . $yui['login'] . '
'; if ($this->info['tt'][14][0] == 1 || ($this->info['id'] == $us_1)) { - $is1 .= '
Рзъять предмет'; + $is1 .= '
Изъять предмет'; } } } elseif ($type == 65) { if (!isset($po['toclan'])) { - $is1 .= 'Пожертвовать'; + $is1 .= 'Пожертвовать'; } else { - $is1 .= 'Вернуть'; + $is1 .= 'Вернуть'; } } elseif ($type == 62) { $upgitm = mysql_fetch_array(mysql_query('SELECT * FROM `items_upgrade` WHERE `iid` = "' . $pl['item_id'] . '" LIMIT 1')); if (!isset($upgitm['id'])) { - $is1 .= 'Улучшение невозможно'; + $is1 .= 'Улучшение невозможно'; } else { $prcup = ''; if ($upgitm['price1'] > 0) { - $prcup .= $upgitm['price1'] . ' РєСЂ.'; + $prcup .= $upgitm['price1'] . ' кр.'; } if ($upgitm['price2'] > 0) { if ($prcup != '') { - $prcup .= ' Рё '; + $prcup .= ' и '; } - $prcup .= $upgitm['price2'] . ' екр.'; + $prcup .= $upgitm['price2'] . ' екр.'; } - $is1 .= 'Улучшить Р·Р° ' . $prcup . ''; + $is1 .= 'Улучшить за ' . $prcup . ''; unset($prcup); } } elseif ($type == 63) { $prcup = ''; - $is1 .= 'комплект'; + $is1 .= 'комплект'; unset($prcup); } elseif ($type == 64) { $prcup = ''; - $is1 .= 'Выбрать РґСЂСѓРіРѕР№ предмет'; + $is1 .= 'Выбрать другой предмет'; unset($prcup); - } elseif ($type == 61) { //улучшение предмета + } elseif ($type == 61) { //улучшение предмета if ($pl['price1'] > $pl['1price']) { $pl['1price'] = $pl['price1']; } @@ -6376,8 +6433,8 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $prpod = $prpod / 2.37; } $prpod = round($prpod + $prpod / 100 * (37.795 * ($po['upgrade'] + 1))); - $is1 .= 'Усилить Р·Р° ' . $prpod . ' РєСЂ.'; - } elseif ($type == 60) { //модифицирование + $is1 .= 'Усилить за ' . $prpod . ' кр.'; + } elseif ($type == 60) { //модифицирование if ($pl['price1'] > $pl['1price']) { $pl['1price'] = $pl['price1']; } @@ -6393,24 +6450,24 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $prpod = $prpod / 2; } $prpod = round($prpod); - $is1 .= 'Модифицировать Р·Р° ' . $prpod . ' РєСЂ.'; + $is1 .= 'Модифицировать за ' . $prpod . ' кр.'; - } elseif ($type == 59) { //дезинтеграция + } elseif ($type == 59) { //дезинтеграция if ($po['tr_lvl'] > $pl['level']) { $pl['level'] = $po['tr_lvl']; } //$prpod = $pl['level']*200; $prpod = 250; $prpod_ekr = $pl['level'] * 0.25; - //$is1 .= 'Дезинтегрировать Р·Р° '.$prpod.' РєСЂ.'; + //$is1 .= 'Дезинтегрировать за '.$prpod.' кр.'; if ($this->stats['repair_z'] >= 1) { - $is1 .= 'Бесплатная дезинтеграция'; + $is1 .= 'Бесплатная дезинтеграция'; } else { - $is1 .= 'Дезинтегрировать Р·Р° ' . $prpod . ' РљСЂ. - '; + $is1 .= 'Дезинтегрировать за ' . $prpod . ' Кр. + '; } - } elseif ($type == 58) { //вытаскивание СЂСѓРЅ + } elseif ($type == 58) { //вытаскивание рун if ($po['tr_lvl'] > $pl['level']) { $pl['level'] = $po['tr_lvl']; } @@ -6418,10 +6475,10 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $prpod = 2500; $prpod_ekr = $pl['level'] * 0.15; if ($this->stats['repair_r'] >= 1) { - $is1 .= 'Бесплатно извлечь СЂСѓРЅС‹'; + $is1 .= 'Бесплатно извлечь руны'; } else { - $is1 .= 'Рзвлечь СЂСѓРЅС‹ Р·Р° ' . $prpod . ' РљСЂ.
- '; } } elseif ($type == 57) { @@ -6432,19 +6489,19 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $prpod = 15; } if (isset($po['gravi'])) { - $is1 .= 'Рзменить надпись Р·Р° ' . $prpod . ' РєСЂ.'; + $is1 .= 'Изменить надпись за ' . $prpod . ' кр.'; } else { - $is1 .= 'Выгравировать надпись Р·Р° ' . $prpod . ' РєСЂ.'; + $is1 .= 'Выгравировать надпись за ' . $prpod . ' кр.'; } - } elseif ($type == 56) { //РџРѕРґРіРѕРЅРєР° + } elseif ($type == 56) { //Подгонка if ($po['tr_lvl'] > $pl['level']) { $pl['level'] = $po['tr_lvl']; } $prpod = 5 * $pl['level'] + 10; $prhp = 6 * $pl['level'] + 6; - $is1 .= 'Подогнать Р·Р° ' . $prpod . ' РєСЂ.'; - } elseif ($type == 15) { //кормушка зверя - $is1 .= 'Кормить'; + $is1 .= 'Подогнать за ' . $prpod . ' кр.'; + } elseif ($type == 15) { //кормушка зверя + $is1 .= 'Кормить'; } elseif ($type == 11) { $pl['rep'] = 0; if ($this->rep['rep1'] < 100) { @@ -6473,49 +6530,49 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $pl['rep'] = 2; } } - $is1 .= 'Выбрать'; + $is1 .= 'Выбрать'; } elseif ($type == 14) { - $is1 .= 'Выбрать'; + $is1 .= 'Выбрать'; } elseif ($type == 12) { - $is1 .= 'Выбрать'; + $is1 .= 'Выбрать'; } elseif ($type == 10) { - //Общага (отображение предметов РІ общаге (РїРѕРґ стеклом)) - $is1 .= 'Р’ рюкзак'; + //Общага (отображение предметов в общаге (под стеклом)) + $is1 .= 'В рюкзак'; } elseif ($type == 9) { - //Общага (отображение предметов РІ инвентаре (РїРѕРґ стеклом)) - $is1 .= 'РџРѕРґ стекло'; + //Общага (отображение предметов в инвентаре (под стеклом)) + $is1 .= 'Под стекло'; } elseif ($type == 8) { - //Общага (отображение предметов РІ инвентаре) - $is1 .= 'Р’ СЃСѓРЅРґСѓРє'; + //Общага (отображение предметов в инвентаре) + $is1 .= 'В сундук'; } elseif ($type == 7) { - //Общага (отображение предметов РІ общаге) - $is1 .= 'Р’ рюкзак'; + //Общага (отображение предметов в общаге) + $is1 .= 'В рюкзак'; } elseif ($type == 6) { - //Цветочный магазин - $is1 .= 'Добавить'; + //Цветочный магазин + $is1 .= 'Добавить'; } elseif ($type == 5) { - //передача - $is1 .= 'подарить
передать
(налог: 1 РєСЂ.)'; + //передача + $is1 .= 'подарить
передать
(налог: 1 кр.)'; } elseif ($type == 12) { - //передача почта + //передача почта $skcd = round($col * ($pl['price1'] * 0.06 - 0.01 * $this->stats['os1']), 2); if ($skcd < 0.06) { $skcd = 0.06; } - $is1 .= 'передать Р·Р° ' . (1 + $skcd) . ' РєСЂ.'; + $is1 .= 'передать за ' . (1 + $skcd) . ' кр.'; } elseif ($type == 13) { - //Забираем шмот + //Забираем шмот if ($pl['1price'] > 0) { - $mess = "Отказаться РѕС‚ предмета? Предмет будет уничтожен!"; - $pl['name'] = 'Деньги ' . $pl['1price'] . ' РєСЂ.'; + $mess = "Отказаться от предмета? Предмет будет уничтожен!"; + $pl['name'] = 'Деньги ' . $pl['1price'] . ' кр.'; } else { - $mess = "Отказаться РѕС‚ предмета? Предмет будет возвращен отправителю"; + $mess = "Отказаться от предмета? Предмет будет возвращен отправителю"; } $date1 = $pl['delete'] - time(); - $is1 .= '
Забрать -
Отказаться

(' . date("j РґРЅ. H С‡.", $date1) . ' )
'; + $is1 .= '
Забрать +
Отказаться

(' . date("j дн. H ч.", $date1) . ' )
'; } elseif ($type == 4) { - //ремонт + //ремонт $r1 = round($pl['price1'] * 0.1 / 100, 2); $r2 = round($pl['price1'] * 0.1 / 10, 2); $r3 = round($pl['price1'] * $pl['iznosNOW'] * 0.10 / 100, 2); @@ -6535,22 +6592,22 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($r3 < 0.01) { $r3 = 0.01; } - $is1 .= 'Ремонт 1 ед. Р·Р° ' . $r1 . ' РєСЂ.
'; + $is1 .= 'Ремонт 1 ед. за ' . $r1 . ' кр.
'; if ($pl['iznosNOW'] >= 10) { - $is1 .= 'Ремонт 10 ед. за ' . $r2 . ' кр.
'; + $is1 .= 'Ремонт 10 ед. за ' . $r2 . ' кр.
'; } - $is1 .= 'Полный ремонт за ' . $r3 . ' кр.
'; + $is1 .= 'Полный ремонт за ' . $r3 . ' кр.
'; if ($c['zuby'] == true) { if ($this->info['level'] < 8) { - $is1 .= '
Ремонт 1 ед. за ' . $this->zuby($r1) . '
'; + $is1 .= '
Ремонт 1 ед. за ' . $this->zuby($r1) . '
'; if ($pl['iznosNOW'] >= 10) { - $is1 .= 'Ремонт 10 ед. за ' . $this->zuby($r2) . '
'; + $is1 .= 'Ремонт 10 ед. за ' . $this->zuby($r2) . '
'; } - $is1 .= 'Полный ремонт за ' . $this->zuby($r3) . '
'; + $is1 .= 'Полный ремонт за ' . $this->zuby($r3) . '
'; } } } elseif ($type == 3) { - $is1 .= ''; + $is1 .= ''; } elseif ($type == 2) { global $shopProcent; $shpCena = $pl['1price']; @@ -6593,13 +6650,13 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } else { $d_s = true; } - if ($d_s == true) { // Продать Р·Р° РєСЂ тут - $is1 .= 'Продать Р·Р° ' . $shpCena . ' РєСЂ.'; + if ($d_s == true) { // Продать за кр тут + $is1 .= 'Продать за ' . $shpCena . ' кр.'; if ($pl['pricerep'] > 0) { - $is1 .= '
Обменять на ' . floor($pl['pricerep'] * $pl['kolvo'] / 2) . ' Воинc. '; + $is1 .= '
Обменять на ' . floor($pl['pricerep'] * $pl['kolvo'] / 2) . ' Воинc. '; } } else { - $is1 .= 'Это РЅРµ ваш предмет.'; + $is1 .= 'Это не ваш предмет.'; } } elseif ($type == 16) { $shpCena = $pl['price2']; @@ -6625,11 +6682,11 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` if ($pl['iznosMAX'] > 0 && $pl['iznosMAXi'] > 0 && $pl['iznosMAXi'] > $pl['iznosMAX']) { $shpCena = $shpCena / 100 * ($pl['iznosMAX'] / $pl['iznosMAXi'] * 100); } - //$shpCena = $this->round2($shpCena*0.5); // Цена предметов + //$shpCena = $this->round2($shpCena*0.5); // Цена предметов if (isset($po['art'])) { - $shpCena = $this->round2($shpCena * $this->berezCena()); // Цена арта + $shpCena = $this->round2($shpCena * $this->berezCena()); // Цена арта } else { - $shpCena = $this->round2($shpCena * $this->berezCena()); // Цена + $shpCena = $this->round2($shpCena * $this->berezCena()); // Цена } if ($shpCena < 0) { $shpCena = 0; @@ -6646,9 +6703,9 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $d_s = true; } if ($d_s == true) { - $is1 .= 'Продать Р·Р° ' . $shpCena . ' екр.'; + $is1 .= 'Продать за ' . $shpCena . ' екр.'; } else { - $is1 .= 'Это РЅРµ ваш предмет.'; + $is1 .= 'Это не ваш предмет.'; } } elseif ($type == 30) { if (isset($po['toclan'])) { @@ -6663,40 +6720,40 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $d_s = true; } if ($d_s == true) { - $is1 .= '
'; + $is1 .= '
'; } else { - $is1 .= 'Это РЅРµ ваш предмет.'; + $is1 .= 'Это не ваш предмет.'; } } elseif ($type == 31) { - $is1 .= '
'; + $is1 .= '
'; } else { - if ($d[2] == 1) { //можно использовать + if ($d[2] == 1) { //можно использовать $inv1 = ''; if (isset($_GET['inv'])) { $inv1 = 'inv=1&'; } if ($pl['item_id'] == 74) { - $is1 .= 'РёСЃРї-ть'; + $is1 .= 'исп-ть'; } else { $useUrl = ''; if ($pl['magic_inc'] == '') { $pl['magic_inc'] = $pl['magic_inci']; } if ($pl['magic_inc'] && $pl['type'] == 30) { - //используем эликсир - $pldate = '
' . $po['onitm_text'] . '
"' . $pl['name'] . '"
Рспользовать сейчас?
'; + //используем эликсир + $pldate = '
"' . $pl['name'] . '"
Использовать сейчас?
'; $useUrl = 'top.useiteminv(\'' . (0 + $pl['id']) . '\',\'' . $pl['img'] . '\',\'' . $pl['img'] . '\',1,\'' . $pldate . '\',\'' . (0 + $_GET['otdel']) . '\');'; - } elseif ($pl['magic_inc'] && $pl['type'] == 29) { //используем заклятие - if (isset($po['useOnLogin']) && !isset($po['zazuby'])) { //РЅР° персонажа + } elseif ($pl['magic_inc'] && $pl['type'] == 29) { //используем заклятие + if (isset($po['useOnLogin']) && !isset($po['zazuby'])) { //на персонажа $useUrl = 'top.useMagic(\'' . $pl['name'] . '\',' . (0 + $pl['id']) . ',\'' . $pl['img'] . '\',1,\'main.php?' . $inv1 . 'otdel=' . ((int)$_GET['otdel']) . '&use_pid=' . $pl['id'] . '&rnd=' . $code . '\');'; - } else { //просто использование (РЅР° себя, либо без указания предмета\логина) - $pldate = '
"' . $pl['name'] . '"
Рспользовать сейчас?
'; + } else { //просто использование (на себя, либо без указания предмета\логина) + $pldate = '
"' . $pl['name'] . '"
Использовать сейчас?
'; $useUrl = 'top.useiteminv(\'' . (0 + $pl['id']) . '\',\'' . $pl['img'] . '\',\'' . $pl['img'] . '\',1,\'' . $pldate . '\',\'' . (0 + $_GET['otdel']) . '\',' . (0 + $_GET['otdel']) . ');'; } - //РЅР° предмет + //на предмет } if ($useUrl != '') { - $is1 .= 'РёСЃРї-ть'; + $is1 .= 'исп-ть'; } else { $d[2] = 0; } @@ -6704,46 +6761,46 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } if ($pl['max_text'] > 0 && $pl['max_text'] - $pl['use_text'] > 0) { - $is1 .= 'Записать
'; + $is1 .= 'Записать
'; } if ($pl['type'] == 31 || $pl['type'] == 46 || $pl['type'] == 48 || $pl['type'] == 50 || $pl['type'] == 62 || $pl['type'] == 68 || $pl['type'] == 37 || $pl['type'] == 47) { if ($d[2] == 1) { $is1 .= '
'; } if (($pl['type'] != 37 || !isset($po['item_inbox']) || $po['item_inbox'] == 0) && $pl['item_id'] != 10038 && $pl['item_id'] != 10039 && $pl['item_id'] != 10040) { - $is1 .= 'РёСЃРї-ть'; + $is1 .= 'исп-ть'; } } - if ($d[0] == 1 && $pl['type'] != 30 && $pl['type'] != 31 && (($pl['type'] != 38 && $pl['type'] != 39 && $pl['type'] != 37) || $pl['gift'] != '')) {//можно одеть + if ($d[0] == 1 && $pl['type'] != 30 && $pl['type'] != 31 && (($pl['type'] != 38 && $pl['type'] != 39 && $pl['type'] != 37) || $pl['gift'] != '')) {//можно одеть if (!isset($po['noodet']) && $pl['inslot'] > 0) { if ($d[2] == 1) { $is1 .= '
'; } - $is1 .= 'надеть'; + $is1 .= 'надеть'; } } if (isset($po['open']) && $d[0] == 1) { if ($d[2] == 1) { $is1 .= '
'; } - $is1 .= 'Открыть'; + $is1 .= 'Открыть'; } if (isset($po['close'])) { if ($d[2] == 1) { $is1 .= '
'; } - $is1 .= 'Предмет закрыт'; + $is1 .= 'Предмет закрыт'; } if ($pl['group'] > 0) { $is1 .= '
'; if ($this->itemsX($pl['id']) < $pl['group_max']) { - $is1 .= ''; + $is1 .= ''; } if ($this->itemsX($pl['id']) > 1) { $is1 .= ' ' . $script; + onClick="top.unstack(' . $pl['id'] . ',\'' . $pl['img'] . '\',\'' . $pl['name'] . '\',1,\'
Разделить предмет ' . $pl['name'] . '?
\',\'' . intval($_GET['otdel']) . '\'); return false;" + href="main.php?inv=1&otdel=' . ((int)$_GET['otdel']) . '&unstack=' . $pl['id'] . '&rnd=' . $code . '" title="Разделить">' . $script; } } if (isset($po['toclan'])) { @@ -6754,17 +6811,17 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } } - $is1 .= ' '; + $is1 .= ' '; - if ($d[1] == 1) { //можно выкинуть + if ($d[1] == 1) { //можно выкинуть if (!isset($po['nodelete'])) { - $is1 .= ' '; + $is1 .= ' '; } - //$is1 .= ' '; + //$is1 .= ' '; } } - //собираем РІСЃРµ РІ РѕРґРЅРѕ (: + //собираем все в одно (: $rt[2] .= '
' . $is1 . '
' . $is2 . '
'; $rt[1] += $pl['massa']; $i++; @@ -6791,7 +6848,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` } private function stackGroupCheck($uid, $group, $item) - { // Находит неиспользованный ID РіСЂСѓРїРїС‹ предметов. + { // Находит неиспользованный ID группы предметов. $g = 0; $i = 0; do { @@ -6817,15 +6874,15 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` LEFT JOIN `items_users` as `iuu` ON (`iuu`.inGroup = `iu`.inGroup AND `iuu`.item_id = `im`.id AND `iuu`.inShop = 0) WHERE `iu`.`id` = "' . mysql_real_escape_string((int)$id) . '" AND `iu`.`uid` = "' . $this->info['id'] . '" AND `iuu`.`uid` = "' . $this->info['id'] . '" AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" AND `iu`.`inShop` = "0" AND `im`.`group` = "1" LIMIT 1')); - if (isset($itm['id']) && $itm['iznosNOW'] == 0) { //группируем похожие свободные предметы СЃ этим - // создаем РіСЂСѓРїРїСѓ - if ($itm['inGroup'] == 0) { // Если предмет РЅРµ РІ РіСЂСѓРїРїРµ, собираем РІСЃРµ похожие предметы РїРѕ группам. + if (isset($itm['id']) && $itm['iznosNOW'] == 0) { //группируем похожие свободные предметы с этим + // создаем группу + if ($itm['inGroup'] == 0) { // Если предмет не в группе, собираем все похожие предметы по группам. $items = mysql_num_rows(mysql_query('SELECT `iu`.id, `iu`.inGroup, `iu`.`item_id` FROM `items_users` AS `iu` WHERE `iu`.`uid`="' . $this->info['id'] . '" AND `iu`.`delete`="0"AND `iu`.`inGroup`="0" AND `iu`.item_id="' . $itm['item_id'] . '"')); $items = ceil($items / $itm['group_max']); - } else { // Добираем предметы РІ РіСЂСѓРїРїСѓ РґРѕ полного количества, РёР· предметов СЃ inGroup == 0 - $curG = mysql_num_rows(mysql_query('SELECT `iu`.id, `iu`.inGroup, `iu`.`item_id` FROM `items_users` AS `iu` WHERE `iu`.`uid`="' . $this->info['id'] . '" AND `iu`.`delete`="0"AND `iu`.`inGroup`="' . $itm['inGroup'] . '" AND `iu`.item_id="' . $itm['item_id'] . '"')); // Текущее количество предметов РІ выбранной РіСЂСѓРїРїРµ - $curNG = mysql_num_rows(mysql_query('SELECT `iu`.id, `iu`.inGroup, `iu`.`item_id` FROM `items_users` AS `iu` WHERE `iu`.`uid`="' . $this->info['id'] . '" AND `iu`.`delete`="0"AND `iu`.`inGroup`="0" AND `iu`.item_id="' . $itm['item_id'] . '"')); // Текущее количество предметов которые без РіСЂСѓРїРїС‹ - $needG = $itm['group_max'] - $curG; // Задаем требуемое количество для РґРѕР±РѕСЂР°, если нужно больше 0 Рё требуемое количество меньше + } else { // Добираем предметы в группу до полного количества, из предметов с inGroup == 0 + $curG = mysql_num_rows(mysql_query('SELECT `iu`.id, `iu`.inGroup, `iu`.`item_id` FROM `items_users` AS `iu` WHERE `iu`.`uid`="' . $this->info['id'] . '" AND `iu`.`delete`="0"AND `iu`.`inGroup`="' . $itm['inGroup'] . '" AND `iu`.item_id="' . $itm['item_id'] . '"')); // Текущее количество предметов в выбранной группе + $curNG = mysql_num_rows(mysql_query('SELECT `iu`.id, `iu`.inGroup, `iu`.`item_id` FROM `items_users` AS `iu` WHERE `iu`.`uid`="' . $this->info['id'] . '" AND `iu`.`delete`="0"AND `iu`.`inGroup`="0" AND `iu`.item_id="' . $itm['item_id'] . '"')); // Текущее количество предметов которые без группы + $needG = $itm['group_max'] - $curG; // Задаем требуемое количество для добора, если нужно больше 0 и требуемое количество меньше if ($needG > 0 and $curNG == 0) { $curItem = mysql_fetch_array(mysql_query('SELECT `iu`.id, `iu`.inGroup, count(`iu`.inGroup) as itemsInGroup, `iu`.`item_id` FROM `items_users` AS `iu` WHERE `iu`.`inGroup`!="' . $itm['inGroup'] . '" AND `iu`.`uid`="' . $this->info['id'] . '" AND `iu`.`delete`="0" AND `iu`.item_id="' . $itm['item_id'] . '" GROUP BY `iu`.inGroup HAVING itemsInGroup <= "' . $needG . '" ORDER BY itemsInGroup DESC LIMIT 1')); @@ -6875,7 +6932,7 @@ ORDER BY `iu`.lastUPD DESC LIMIT 1')); if (isset($itm['id']) && $itm['inGroup'] > 0 && $itm['inGroupCount'] > 0) { if ($x == 0 or $x == null) { - $x = $this->itemsX($itm['id']); //РєРѕР»-РІРѕ распада + $x = $this->itemsX($itm['id']); //кол-во распада $inGroup = 0; } elseif ($x != 0) { $inGroup = $this->stackGroupCheck($this->info['id'], $itm['inGroup'], $itm['item_id']); @@ -6904,21 +6961,8 @@ LIMIT 1')); public function lookStats($m) { - $ist = []; - $di = explode('|', $m); - $i = 0; - $de = false; - while ($i < count($di)) { - $de = explode('=', $di[$i]); - if (isset($de[0], $de[1])) { - if (!isset($ist[$de[0]])) { - $ist[$de[0]] = 0; - } - $ist[$de[0]] = $de[1]; - } - $i++; - } - return $ist; + $arr = json_decode(str_replace(['=', '|'], ['":', ',"'], '{"' . $m . '}'), true); + return $arr ?: []; } public function testItems($uid, $sn, $dt) @@ -6945,7 +6989,7 @@ LIMIT 1')); } if (isset($u['id'])) { $snIt = 0; - //Проверяем одетые вещи Рё вещи СЃ СЃСЂРѕРєРѕРј годности + //Проверяем одетые вещи и вещи с сроком годности $cl = mysql_query('SELECT `iu`.`id` AS `iduid`, `iu`.`time_sleep`,`im`.`id`,`im`.`name`,`im`.`img`,`im`.`type`,`im`.`inslot`,`im`.`2h`,`im`.`2too`,`im`.`iznosMAXi`,`im`.`inRazdel`,`im`.`price1`,`im`.`price2`,`im`.`pricerep`,`im`.`magic_chance`,`im`.`info`,`im`.`massa`,`im`.`level`,`im`.`magic_inci`,`im`.`overTypei`,`im`.`group`,`im`.`group_max`,`im`.`geni`,`im`.`ts`,`im`.`srok`,`im`.`class`,`im`.`class_point`,`im`.`anti_class`,`im`.`anti_class_point`,`im`.`max_text`,`im`.`useInBattle`,`im`.`lbtl`,`im`.`lvl_itm`,`im`.`lvl_exp`,`im`.`lvl_aexp`, @@ -6955,7 +6999,7 @@ LIMIT 1')); $po = []; $po = $this->lookStats($itm['data']); $po['lvl'] = $u['level']; - //проверяем требования + //проверяем требования $t = $this->items['tr']; $x = 0; $notr = 0; @@ -6980,11 +7024,11 @@ LIMIT 1')); $x++; } if ($this->info['twink'] > 0) { - //РќРµ дороже 100 екр. + //Не дороже 100 екр. if ($itm['price2'] > 1 || $itm['2price'] > 1) { $notr++; } - //Нельзя СЂСѓРЅС‹ + чарки + //Нельзя руны + чарки if (isset($po['rune']) && $po['rune'] > 0) { $notr++; } @@ -6998,7 +7042,7 @@ LIMIT 1')); mysql_query('UPDATE `items_users` SET `data` = "' . $itm['data'] . '" WHERE `id` = "' . $itm['iduid'] . '" AND `uid` = "' . $u['id'] . '" LIMIT 1'); } if (isset($po['zazuby']) && !isset($po['srok']) && ($itm['type'] == 29 || $itm['type'] == 30 || $itm['type'] == 36 || $itm['type'] == 49 || $itm['type'] == 46 || $itm['type'] == 34)) { - //Предметы Р·Р° Р·СѓР±С‹ СЃРѕ СЃСЂРѕРєРѕРј годности + //Предметы за зубы со сроком годности $po['srok'] = 86400 * 7; $itm['data'] = $this->impStats($po); mysql_query('UPDATE `items_users` SET `data` = "' . $itm['data'] . '" WHERE `id` = "' . $itm['iduid'] . '" AND `uid` = "' . $u['id'] . '" LIMIT 1'); @@ -7019,13 +7063,13 @@ LIMIT 1')); $notr++; } if ($notr > 0 && $itm['inOdet'] != 0) { - //снимаем предмет + //снимаем предмет $this->snatItem($itm['id'], $u['id']); $snIt++; } - //проверяем СЃСЂРѕРє годности + //проверяем срок годности if ($itm['iznosNOW'] >= ceil($itm['iznosMAX']) && $itm['iznosMAXi'] != 999999999) { - //предмет сломался + //предмет сломался if (isset($po['musor'])) { if ($po['musor'] > 0) { $this->recr($itm['id'], $itm['type'], $u['id'], (int)$po['musor']); @@ -7037,7 +7081,7 @@ LIMIT 1')); $this->snatItem($itm['id'], $u['id']); $snIt++; } - //удаляем предмет + //удаляем предмет if ($itm['item_id'] == 4704) { $po['musor2'] = 4708; } @@ -7067,9 +7111,9 @@ LIMIT 1')); } $upd = mysql_query('UPDATE `items_users` SET `delete`="' . time() . '" WHERE `id` = "' . $id . '" ' . $uid2 . ' LIMIT 1'); if ($upd) { - $this->addDelo(2, $uid, '"System.inventory": Предмет [itm:' . $it . '] был сломан.', time(), $this->info['city'], 'System.inventory', 0, 0); + $this->addDelo(2, $uid, '"System.inventory": Предмет [itm:' . $it . '] был сломан.', time(), $this->info['city'], 'System.inventory', 0, 0); if ($id2 > 1) { - //Добавляем пустую бутылку + //Добавляем пустую бутылку $this->addItem($id2, $uid, 'noodet=1|noremont=1'); } } @@ -7090,9 +7134,9 @@ LIMIT 1')); $upd = mysql_query('UPDATE `items_users` SET `delete`="' . time() . '",`timeOver`="1" WHERE `id` = "' . $it . '" ' . $uid2 . ' LIMIT 1'); if ($upd) { $upd = mysql_query('UPDATE `items_users` SET `inGroup`="0",`timeOver`="' . time() . '" WHERE `inGroup` = "' . $it . '" ' . $uid2 . ''); - $this->addDelo(2, $uid, '"System.inventory": Предмет ' . $name . ' [itm:' . $it . '] был испорчен.', time(), $this->info['city'], 'System.inventory', 0, 0); + $this->addDelo(2, $uid, '"System.inventory": Предмет ' . $name . ' [itm:' . $it . '] был испорчен.', time(), $this->info['city'], 'System.inventory', 0, 0); if ($tp != 0) { - //Добавляем испорченый предмет РІ инвентарь, РІ зависимости РѕС‚ типа + //Добавляем испорченый предмет в инвентарь, в зависимости от типа $zzba = ''; if ($zub > 0) { $zzba = '|zazuby=1'; @@ -7106,7 +7150,7 @@ LIMIT 1')); } } else { if ($type == 30) { - //испорченный эликсир + //испорченный эликсир $this->addItem(4036, $uid, '|renameadd=' . $name . '|noodet=1' . $zzba); } } @@ -7121,7 +7165,7 @@ LIMIT 1')); $i = 1; $sv = []; while ($i <= 10) { - $sv[$i] = ''; + $sv[$i] = ''; $i++; } $i = 0; @@ -7138,7 +7182,7 @@ LIMIT 1')); } $vl = 'style="cursor:pointer" onclick="' . $useUrl . '"'; } - $sv[$this->stats['items'][$i]['inOdet'] - 39] = ''; + $sv[$this->stats['items'][$i]['inOdet'] - 39] = ''; } $i++; } @@ -7170,18 +7214,18 @@ LIMIT 1')); //if( $this->info['admin'] > 0 ) { if (isset($po['rune']) && $po['rune'] > 0) { $rnc = explode(' ', $po['rune_name']); - if ($rnc[0] == 'РРіРЅРёСЃ') { + if ($rnc[0] == 'Игнис') { $rnc = '#9b5d40'; - } elseif ($rnc[0] == 'РђРєРІР°') { + } elseif ($rnc[0] == 'Аква') { $rnc = '#3a2b64'; - } elseif ($rnc[0] == 'РђСѓСЂР°') { + } elseif ($rnc[0] == 'Аура') { $rnc = '#20a3b0'; - } elseif ($rnc[0] == 'Тера') { + } elseif ($rnc[0] == 'Тера') { $rnc = '#4c7718'; } else { $rnc = '#4c4c4c'; } - $r .= '
Р СѓРЅР°: ' . $po['rune_name'] . ''; + $r .= '
Руна: ' . $po['rune_name'] . ''; unset($rnc); } if (isset($po['spell'])) { @@ -7209,7 +7253,7 @@ LIMIT 1')); $td = $this->lookStats($pl['data']); if (isset($td['sv_yron_max']) && $td['sv_yron_max'] > 0) { - $lvar .= '
РЈСЂРѕРЅ: ' . $td['sv_yron_min'] . '-' . $td['sv_yron_max'] . ''; + $lvar .= '
Урон: ' . $td['sv_yron_min'] . '-' . $td['sv_yron_max'] . ''; } if (isset($td['add_mab1']) && $td['add_mab1'] > 0) { if ($td['add_mib1'] == $td['add_mab1'] && $pl['geniration'] == 1) { @@ -7217,9 +7261,9 @@ LIMIT 1')); if ($td['add_mab1'] < 0) { $m1l = ''; } - $lvar .= '
Броня головы: ' . $m1l . '' . (0 + $td['add_mab1']) . ''; + $lvar .= '
Броня головы: ' . $m1l . '' . (0 + $td['add_mab1']) . ''; } else { - $lvar .= '
Броня головы: ' . (0 + $td['add_mib1']) . '-' . (0 + $td['add_mab1']) . ''; + $lvar .= '
Броня головы: ' . (0 + $td['add_mib1']) . '-' . (0 + $td['add_mab1']) . ''; } } // @@ -7252,10 +7296,10 @@ LIMIT 1')); $x++; } if ($pl['2h'] == 1) { - $lvar .= '
• Двуручное оружие'; + $lvar .= '
• Двуручное оружие'; } if (isset($po['zonb'])) { - $lvar .= '
Зоны блокирования: '; + $lvar .= '
Зоны блокирования: '; if ($lvar['zonb'] > 0) { $x = 1; while ($x <= $td['zonb']) { @@ -7263,7 +7307,7 @@ LIMIT 1')); $x++; } } else { - $lvar .= '—'; + $lvar .= '—'; } } @@ -7274,9 +7318,9 @@ LIMIT 1')); if ($td['add_mab2'] < 0) { $m1l = ''; } - $lvar .= '
Броня корпуса: ' . $m1l . '' . (0 + $td['add_mab2']) . ''; + $lvar .= '
Броня корпуса: ' . $m1l . '' . (0 + $td['add_mab2']) . ''; } else { - $lvar .= '
Броня корпуса: ' . (0 + $td['add_mib2']) . '-' . (0 + $td['add_mab2']) . ''; + $lvar .= '
Броня корпуса: ' . (0 + $td['add_mib2']) . '-' . (0 + $td['add_mab2']) . ''; } } if (isset($td['add_mab3']) && $td['add_mab3'] > 0) { @@ -7285,9 +7329,9 @@ LIMIT 1')); if ($td['add_mab3'] < 0) { $m1l = ''; } - $lvar .= '
Броня пояса: ' . $m1l . '' . (0 + $td['add_mab3']) . ''; + $lvar .= '
Броня пояса: ' . $m1l . '' . (0 + $td['add_mab3']) . ''; } else { - $lvar .= '
Броня пояса: ' . (0 + $td['add_mib3']) . '-' . (0 + $td['add_mab3']) . ''; + $lvar .= '
Броня пояса: ' . (0 + $td['add_mib3']) . '-' . (0 + $td['add_mab3']) . ''; } } if (isset($td['add_mab4']) && $td['add_mab4'] > 0) { @@ -7296,17 +7340,17 @@ LIMIT 1')); if ($td['add_mab4'] < 0) { $m1l = ''; } - $lvar .= '
Броня ног: ' . $m1l . '' . (0 + $td['add_mab4']) . ''; + $lvar .= '
Броня ног: ' . $m1l . '' . (0 + $td['add_mab4']) . ''; } else { - $lvar .= '
Броня ног: ' . (0 + $td['add_mib4']) . '-' . (0 + $td['add_mab4']) . ''; + $lvar .= '
Броня ног: ' . (0 + $td['add_mib4']) . '-' . (0 + $td['add_mab4']) . ''; } } if ($pl['iznosMAX'] > 0) { - $lvar .= '
Долговечность: ' . floor($pl['iznosNOW']) . '/' . ceil($pl['iznosMAX']); + $lvar .= '
Долговечность: ' . floor($pl['iznosNOW']) . '/' . ceil($pl['iznosMAX']); } if ($po['battleUseZd'] > 0) { - $lvar .= '
Задержка использования: ' . $this->timeOut($po['battleUseZd']) . ''; + $lvar .= '
Задержка использования: ' . $this->timeOut($po['battleUseZd']) . ''; } if (isset($td['gravi'])) { @@ -7354,8 +7398,8 @@ LIMIT 1')); 10 => 13, 9 => 14, 8 => 15, - 11 => 17, //кольцо 2 - 12 => 18 //кольцо 3 + 11 => 17, //кольцо 2 + 12 => 18 //кольцо 3 ]; if (isset($u['id'], $u['stats'])) { @@ -7368,29 +7412,29 @@ LIMIT 1')); $st['login'] = $u['login']; $st['lvl'] = $u['level']; - //Характеристики РѕС‚ предметов Рё РёС… изображение + //Характеристики от предметов и их изображение $witm = []; - $witm[1] = ''; - $witm[2] = ''; - $witm[3] = ''; - $witm[4] = ''; - $witm[7] = ''; - $witm[8] = ''; - $witm[9] = ''; - $witm[10] = ''; - $witm[11] = ''; - $witm[12] = ''; - $witm[13] = ''; - $witm[14] = ''; - $witm[16] = ''; - $witm[17] = ''; - //40-52 слот РїРѕРґ магию - $witm[53] = ''; - $witm[54] = ''; - $witm[55] = ''; - $witm[56] = ''; - $witm[57] = ''; - $witm[58] = ''; + $witm[1] = ''; + $witm[2] = ''; + $witm[3] = ''; + $witm[4] = ''; + $witm[7] = ''; + $witm[8] = ''; + $witm[9] = ''; + $witm[10] = ''; + $witm[11] = ''; + $witm[12] = ''; + $witm[13] = ''; + $witm[14] = ''; + $witm[16] = ''; + $witm[17] = ''; + //40-52 слот под магию + $witm[53] = ''; + $witm[54] = ''; + $witm[55] = ''; + $witm[56] = ''; + $witm[57] = ''; + $witm[58] = ''; $cl = mysql_query('SELECT `im`.`id`,`im`.`name`,`im`.`img`,`im`.`type`,`im`.`inslot`,`im`.`2h`,`im`.`2too`,`im`.`iznosMAXi`,`im`.`inRazdel`,`im`.`price1`,`im`.`price2`,`im`.`pricerep`,`im`.`magic_chance`,`im`.`info`,`im`.`massa`,`im`.`level`,`im`.`magic_inci`,`im`.`overTypei`,`im`.`group`,`im`.`group_max`,`im`.`geni`,`im`.`ts`,`im`.`srok`,`im`.`class`,`im`.`class_point`,`im`.`anti_class`,`im`.`anti_class_point`,`im`.`max_text`,`im`.`useInBattle`,`im`.`lbtl`,`im`.`lvl_itm`,`im`.`lvl_exp`,`im`.`lvl_aexp`, `iu`.`id`,`iu`.`item_id`,`iu`.`1price`,`iu`.`2price`,`iu`.`uid`,`iu`.`use_text`,`iu`.`data`,`iu`.`inOdet`,`iu`.`inShop`,`iu`.`delete`,`iu`.`iznosNOW`,`iu`.`iznosMAX`,`iu`.`gift`,`iu`.`gtxt1`,`iu`.`gtxt2`,`iu`.`kolvo`,`iu`.`geniration`,`iu`.`magic_inc`,`iu`.`maidin`,`iu`.`lastUPD`,`iu`.`timeOver`,`iu`.`overType`,`iu`.`secret_id`,`iu`.`time_create`,`iu`.`time_sleep`,`iu`.`inGroup`,`iu`.`dn_delete`,`iu`.`inTransfer`,`iu`.`post_delivery`,`iu`.`lbtl_`,`iu`.`bexp`,`iu`.`so`,`iu`.`blvl` @@ -7402,7 +7446,7 @@ LIMIT 1')); $td = $this->lookStats($pl['data']); if (isset($td['modif'])) { - $pl['name'] = $pl['name'] . ' (РјС„)'; + $pl['name'] = $pl['name'] . ' (мф)'; } if (isset($td['upatack_lvl'])) { @@ -7438,12 +7482,12 @@ LIMIT 1')); $pl['magic_inc'] = $pl['magic_inci']; } if ($pl['magic_inc'] && $pl['type'] == 30) { - //используем эликсир - $pldate = '
"' . $pl['name'] . '"
Рспользовать сейчас?
'; + //используем эликсир + $pldate = '
"' . $pl['name'] . '"
Использовать сейчас?
'; $useUrl = 'top.useiteminv(\'' . (0 + $pl['id']) . '\',\'' . $pl['img'] . '\',\'' . $pl['img'] . '\',1,\'' . $pldate . '\',\'' . (0 + $_GET['otdel']) . '\');'; } elseif ($pl['magic_inc'] && $pl['type'] == 29) { - //используем заклятие - //РЅР° персонажа + //используем заклятие + //на персонажа if (isset($td['useOnLogin'])) { $inv1 = ''; if (isset($_GET['inv'])) { @@ -7451,21 +7495,21 @@ LIMIT 1')); } $useUrl = 'top.useMagic(\'' . $pl['name'] . '\',' . (0 + $pl['id']) . ',\'' . $pl['img'] . '\',1,\'main.php?' . $inv1 . 'use_pid=' . $pl['id'] . '&rnd=' . $code . '\');'; } else { - //просто использование (РЅР° селя, либо без указания предмета\логина) - $pldate = '
"' . $pl['name'] . '"
Рспользовать сейчас?
'; + //просто использование (на селя, либо без указания предмета\логина) + $pldate = '
"' . $pl['name'] . '"
Использовать сейчас?
'; $useUrl = 'top.useiteminv(\'' . (0 + $pl['id']) . '\',\'' . $pl['img'] . '\',\'' . $pl['img'] . '\',1,\'' . $pldate . '\',\'' . (0 + $_GET['otdel']) . '\');'; } } $witm[$pl['inOdet']] = '' . $witm[$pl['inOdet']] . ''; } elseif ($pl['item_id'] == 998 && !isset($_GET['inv'])) { - //варежки + //варежки $witm[$pl['inOdet']] = '' . $witm[$pl['inOdet']] . ''; } else { $witm[$pl['inOdet']] = '' . $witm[$pl['inOdet']] . ''; } } } - //Шлем,Венок + //Шлем,Венок $wj1i = ''; $br = '
'; if ($wj[1] != false) { @@ -7490,7 +7534,7 @@ LIMIT 1')); $wj[1]['id'] = $wj[52]['id']; $wj[1]['inRazdel'] = $wj[52]['inRazdel']; } - //Рубаха,Броня,Плащ + //Рубаха,Броня,Плащ $wj4idd = $wj[5]['item_id']; $wj4i = ''; if ($wj[6] != false) { @@ -7570,7 +7614,7 @@ LIMIT 1')); $witm[4] = '' . $witm[4] . ''; } } - /*------------ ГЕНЕРРРУЕМ РРќР¤. Рћ ПЕРСОНАЖЕ ---------------*/ + /*------------ ГЕНЕРИРУЕМ ИНФ. О ПЕРСОНАЖЕ ---------------*/ $nmmsgl1 = 0; if ($u['align'] >= 1 && $u['align'] < 2) { $nmmsgl1 = 1; @@ -7594,13 +7638,13 @@ LIMIT 1')); 7 => 'dragon' ]; $anan2 = [ - 1 => 'РљРѕС‚', - 2 => 'РЎРѕРІР°', - 3 => 'Светляк', - 4 => 'Чертяка', - 5 => 'Пёс', - 6 => 'РЎРІРёРЅ', - 7 => 'Дракон' + 1 => 'Кот', + 2 => 'Сова', + 3 => 'Светляк', + 4 => 'Чертяка', + 5 => 'Пёс', + 6 => 'Свин', + 7 => 'Дракон' ]; $anml = ''; if ($u['animal'] > 0) { @@ -7608,9 +7652,9 @@ LIMIT 1')); if (isset($an['id'])) { $petimg = mysql_fetch_array(mysql_query('SELECT `id`,`img` FROM `obraz_pet` WHERE `uid` = "' . $u['id'] . '" AND `use` = 1 LIMIT 1')); if (isset($petimg['id'])) { - $anml = ''; + $anml = ''; } else { - $anml = ''; + $anml = ''; } } } @@ -7630,7 +7674,7 @@ LIMIT 1')); $oi = ''; if ($i1 != 1) { $jf = 'main'; - $oi = 'onMouseOver="top.hi(this,\'' . $u['login'] . ' (Перейти РІ "Рнвентарь")\',event,3,1,1,1,\'\');" onMouseOut="top.hic();" onMouseDown="top.hic();"'; + $oi = 'onMouseOver="top.hi(this,\'' . $u['login'] . ' (Перейти в "Инвентарь")\',event,3,1,1,1,\'\');" onMouseOut="top.hic();" onMouseDown="top.hic();"'; $msl = ' @@ -7646,7 +7690,7 @@ LIMIT 1')); } $hpmp = ''; $eff = ''; - //-------- генерируем эффекты + //-------- генерируем эффекты $efs = mysql_query('SELECT `eu`.`id`,`eu`.`id_eff`,`eu`.`uid`,`eu`.`tr_life_user`,`eu`.`name`,`eu`.`data`,`eu`.`overType`,`eu`.`timeUse`,`eu`.`timeAce`,`eu`.`user_use`,`eu`.`delete`,`eu`.`v1`,`eu`.`v2`,`eu`.`img2`,`eu`.`x`,`eu`.`hod`,`eu`.`bj`,`eu`.`sleeptime`,`eu`.`no_Ace`, `em`.`id2`,`em`.`mname`,`em`.`type1`,`em`.`img`,`em`.`mdata`,`em`.`actionTime`,`em`.`type2`,`em`.`type3`,`em`.`onlyOne`,`em`.`oneType`,`em`.`noAce`,`em`.`see`,`em`.`info`,`em`.`overch`,`em`.`bp`,`em`.`noch` @@ -7669,23 +7713,23 @@ LIMIT 1')); if (($e['timeUse'] + $e['timeAce'] + $e['actionTime'] >= time() || $e['timeUse'] == 77) && $esee == 1) { $ei = '' . $e['name'] . ''; if ($e['type1'] > 0 && $e['type1'] < 7) { - $ei .= ' (Эликсир)'; + $ei .= ' (Эликсир)'; } elseif (($e['type1'] > 6 && $e['type1'] < 11) || $e['type1'] == 16) { - $ei .= ' (Заклятие)'; + $ei .= ' (Заклятие)'; } elseif ($e['type1'] == 14) { - $ei .= ' (Прием)'; + $ei .= ' (Прием)'; } elseif ($e['type1'] == 15) { - $ei .= ' (Рзучение)'; + $ei .= ' (Изучение)'; } elseif ($e['type1'] == 17) { - $ei .= ' (Проклятие)'; + $ei .= ' (Проклятие)'; } elseif ($e['type1'] == 18 || $e['type1'] == 19) { - $ei .= ' (Травма)'; + $ei .= ' (Травма)'; } elseif ($e['type1'] == 20) { - $ei .= ' (Пристрастие)'; + $ei .= ' (Пристрастие)'; } elseif ($e['type1'] == 22) { - $ei .= ' (Ожидание)'; + $ei .= ' (Ожидание)'; } else { - $ei .= ' (Эффект)'; + $ei .= ' (Эффект)'; } $ei .= '
'; @@ -7697,7 +7741,7 @@ LIMIT 1')); if ($tmp > 0) { $id++; if ($id < 3) { - $out .= $tmp . " мес. "; + $out .= $tmp . " мес. "; } $time_still = $time_still - $tmp * 2592000; } @@ -7705,7 +7749,7 @@ LIMIT 1')); if ($tmp > 0) { $id++; if ($id < 3) { - $out .= $tmp . " нед. "; + $out .= $tmp . " нед. "; } $time_still = $time_still - $tmp * 604800; } @@ -7713,7 +7757,7 @@ LIMIT 1')); if ($tmp > 0) { $id++; if ($id < 3) { - $out .= $tmp . " РґРЅ. "; + $out .= $tmp . " дн. "; } $time_still = $time_still - $tmp * 86400; } @@ -7721,7 +7765,7 @@ LIMIT 1')); if ($tmp > 0) { $id++; if ($id < 3) { - $out .= $tmp . " С‡. "; + $out .= $tmp . " ч. "; } $time_still = $time_still - $tmp * 3600; } @@ -7729,16 +7773,16 @@ LIMIT 1')); if ($tmp > 0) { $id++; if ($id < 3) { - $out .= $tmp . " РјРёРЅ. "; + $out .= $tmp . " мин. "; } } if ($out == '') { - $out = $time_still . ' сек.'; + $out = $time_still . ' сек.'; } - $ei .= 'Осталось: ' . $out . ''; + $ei .= 'Осталось: ' . $out . ''; } - //Действие эффекта + //Действие эффекта $tr = ''; $t = $this->items['add']; $x = 0; @@ -7758,7 +7802,7 @@ LIMIT 1')); $ei .= $tr; } if ($e['info'] != '') { - $ei .= '
Рнформация:
' . $e['info']; + $ei .= '
Информация:
' . $e['info']; } if ($e['img2'] != '' && $e['img'] == 'icon_none.gif') { $e['img'] = $e['img2']; @@ -7768,7 +7812,7 @@ LIMIT 1')); } $eff .= ''; } elseif ($e['timeUse'] + $e['timeAce'] + $e['actionTime'] < time() && $e['timeUse'] != 77) { - //удаляем эффект + //удаляем эффект $ed = $this->lookStats($e['data']); if (!isset($ed['finish_file']) || $this->info['id'] == $e['uid']) { $this->endEffect($e['id'], $u); @@ -7776,7 +7820,7 @@ LIMIT 1')); } } - //Р·РґРѕСЂРѕРІСЊРµ + //здоровье if ($type_info == 1) { $hptop = 0; $lh = [0 => 'hp_none', 1 => 1]; @@ -7791,24 +7835,24 @@ LIMIT 1')); $lh[0] = 'hp_3'; } if ($sn['mpAll'] > 0) { - //мана + //мана $lm = [0 => 'hp_none', 1 => 1]; $lm[1] = floor($sn['mpNow'] / $sn['mpAll'] * 120); if ($lm[1] > 0) { $lm[0] = 'hp_mp'; } - $hpmp .= '
' . floor($sn['mpNow']) . '/' . (0 + $sn['mpAll']) . '
-
+ $hpmp .= '
' . floor($sn['mpNow']) . '/' . (0 + $sn['mpAll']) . '
+
-
'; +
'; } else { $hptop = 5; } - $hpmp = '
' . floor($sn['hpNow']) . '/' . (0 + $sn['hpAll']) . '
-
+ $hpmp = '
' . floor($sn['hpNow']) . '/' . (0 + $sn['hpAll']) . '
+
-
' . $hpmp; - //Собираем НР и МР +
' . $hpmp; + //Собираем НР и МР $hpmp = '
' . $hpmp . '
'; } elseif ($type_info == 2) { $hptop = 0; @@ -7825,24 +7869,24 @@ LIMIT 1')); } if ($sn['mpAll'] > 0) { - //мана + //мана $lm = [0 => 'hp_none', 1 => 1]; $lm[1] = floor($sn['mpNow'] / $sn['mpAll'] * 200); if ($lm[1] > 0) { $lm[0] = 'hp_mp'; } - $hpmp .= '
' . floor($sn['mpNow']) . '/' . (0 + $sn['mpAll']) . '
-
+ $hpmp .= '
' . floor($sn['mpNow']) . '/' . (0 + $sn['mpAll']) . '
+
-
'; +
'; } else { $hptop = 5; } - $hpmp = '
' . floor($sn['hpNow']) . '/' . (0 + $sn['hpAll']) . '
-
+ $hpmp = '
' . floor($sn['hpNow']) . '/' . (0 + $sn['hpAll']) . '
+
-
' . $hpmp; - //Собираем НР и МР +
' . $hpmp; + //Собираем НР и МР $hpmp = '
' . $hpmp . '
'; } @@ -7860,30 +7904,30 @@ LIMIT 1')); } $pb = ''; if ($u['banned'] > 0) { - $pb .= '
Персонаж заблокирован
'; + $pb .= '
Персонаж заблокирован
'; } if ($u['allLock'] > time()) { - $pb .= '
Временный запрет передач!
'; + $pb .= '
Временный запрет передач!
'; } - $swm = 0; //свитки магии + $swm = 0; //свитки магии $l = 40; while ($l <= 52) { if (isset($witm[$l])) { $swm++; } else { - $witm[$l] = ''; + $witm[$l] = ''; } $l++; } - $ssm = 0; //слоты СЃСѓРјРєРё + $ssm = 0; //слоты сумки $l = 59; while ($l <= 62) { if (isset($witm[$l])) { $ssm++; } else { - $witm[$l] = ''; + $witm[$l] = ''; } $l++; } @@ -7977,36 +8021,36 @@ LIMIT 1')); if ($zag == '') { if ($i1 == 0) { if (!isset($_GET['inv'])) { - $invg = [0 => 'main.php?inv=1', 1 => 'Рюкзак']; + $invg = [0 => 'main.php?inv=1', 1 => 'Рюкзак']; } else { - $invg = [0 => 'main.php?skills=1', 1 => 'Умения']; + $invg = [0 => 'main.php?skills=1', 1 => 'Умения']; } } else { $o = mysql_fetch_array(mysql_query('SELECT `id` FROM `obraz` WHERE `img` = "' . mysql_real_escape_string($this->info['obraz']) . '" AND `sex` = "' . $this->info['sex'] . '" LIMIT 1')); - $invg = [0 => 'https://new-combats.com/shadow/' . $o['id'] . '" target="_blank', 1 => 'Галерея образов']; + $invg = [0 => 'https://new-combats.com/shadow/' . $o['id'] . '" target="_blank', 1 => 'Галерея образов']; } $uobr = 'i/obraz/' . $u['sex'] . '/' . $u['obraz'] . ''; if (isset($sn['items_img'][1])) { $uobr = 'rimg/r' . $sn['items_img'][1]; } $rt[0] .= '
- -
+ +
' . $eff . '
' . $anml . '
'; } else { if ($i1 == 0) { if (!isset($_GET['inv'])) { - $invg = [0 => 'main.php?inv=1', 1 => 'Рюкзак']; + $invg = [0 => 'main.php?inv=1', 1 => 'Рюкзак']; } else { - $invg = [0 => 'main.php?skills=1', 1 => 'Умения']; + $invg = [0 => 'main.php?skills=1', 1 => 'Умения']; } } else { - $invg = [0 => 'https://lib.new-combats.com/obraz.php?namez=' . $u['zag'] . '" target="_blank', 1 => 'Галерея образов']; + $invg = [0 => 'https://lib.new-combats.com/obraz.php?namez=' . $u['zag'] . '" target="_blank', 1 => 'Галерея образов']; } $rt[0] .= '
- -
+ +
' . $eff . '
' . $anml . '
'; } @@ -8096,12 +8140,12 @@ LIMIT 1')); if ($zag == '') { if ($i1 == 0) { if (!isset($_GET['inv'])) { - $invg = [0 => 'main.php?inv=1', 1 => 'Рюкзак']; + $invg = [0 => 'main.php?inv=1', 1 => 'Рюкзак']; } else { - $invg = [0 => 'main.php?skills=1', 1 => 'Умения']; + $invg = [0 => 'main.php?skills=1', 1 => 'Умения']; } } else { - $invg = [0 => 'https://lib.new-combats.com/obraz.php?name=' . $u['obraz'] . '" target="_blank', 1 => 'Галерея образов']; + $invg = [0 => 'https://lib.new-combats.com/obraz.php?name=' . $u['obraz'] . '" target="_blank', 1 => 'Галерея образов']; } $u['obraz'] = '0.gif'; $uobr = 'i/obraz/' . $u['sex'] . '/old/' . $u['obraz'] . ''; @@ -8109,8 +8153,8 @@ LIMIT 1')); $uobr = 'rimg/r' . $sn['items_img'][1]; } $rt[0] .= '
- -
+ +
' . $eff . '
' . $anml . '
'; } @@ -8165,8 +8209,8 @@ LIMIT 1')); if (isset($e['id'])) { $sleep = $this->testAction('`vars` = "sleep" AND `uid` = "' . $e['uid'] . '" LIMIT 1', 1); if ($e['id_eff'] == 2) { - //Проверка - $ev = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_main` WHERE `name` = "' . mysql_real_escape_string(str_replace('Рзучение: ', '', $e['name'])) . '" LIMIT 1')); + //Проверка + $ev = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_main` WHERE `name` = "' . mysql_real_escape_string(str_replace('Изучение: ', '', $e['name'])) . '" LIMIT 1')); $et = mysql_fetch_array(mysql_query('SELECT `id` FROM `actions` WHERE `uid` = "' . $e['uid'] . '" AND `vars` LIKE "%read%" AND `vals` = "' . $ev['id'] . '" LIMIT 1')); if (isset($et['id'])) { if ($et['time'] < time()) { @@ -8193,7 +8237,7 @@ LIMIT 1')); } } if (isset($u['id']) && ($e['type1'] < 11 || ($e['type1'] > 16 && $e['type1'] < 23)) && $e['noch'] == 0) { - $text = 'Закончилось действие эффекта "' . $e['name'] . '"'; + $text = 'Закончилось действие эффекта "' . $e['name'] . '"'; mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`new`) VALUES ('" . $u['city'] . "','" . $u['room'] . "','','" . $u['login'] . "','" . $text . "','-1','6','0',1)"); if ($u['battle'] > 0) { $lastHOD = mysql_fetch_array(mysql_query('SELECT `id`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type` FROM `battle_logs` WHERE `battle` = "' . $u['battle'] . '" ORDER BY `id_hod` DESC LIMIT 1')); @@ -8202,7 +8246,7 @@ LIMIT 1')); if ($lastHOD['type'] != 6) { $id_hod++; } - mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . time() . '","' . $u['battle'] . '","' . ($id_hod) . '","{tm1} ' . $text . ' Сѓ персонажа {u1}.","login1=' . $u['login'] . '||t1=' . $u['team'] . '||time1=' . time() . '","","","","","6")'); + mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . time() . '","' . $u['battle'] . '","' . ($id_hod) . '","{tm1} ' . $text . ' у персонажа {u1}.","login1=' . $u['login'] . '||t1=' . $u['team'] . '||time1=' . time() . '","","","","","6")'); } } } @@ -8301,16 +8345,16 @@ LIMIT 1')); if (isset($tr['maks_itm_one']) && $tr['maks_itm_one'] > 0) { $test = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $this->info['id'] . '" AND `inOdet` > 0 AND `delete` = 0 AND `data` LIKE "%maks_itm_one=' . $tr['maks_itm_one'] . '%" LIMIT 1')); if (isset($test['id'])) { - $this->error = 'Возможное использование максимум РѕРґРЅРѕРіРѕ предмета!'; + $this->error = 'Возможное использование максимум одного предмета!'; $notr++; } } if ($this->info['twink'] > 0) { - //РќРµ дороже 100 екр. + //Не дороже 100 екр. if ($itm['price2'] > 100 || $itm['2price'] > 100) { $notr++; } - //Нельзя СЂСѓРЅС‹ + чарки + //Нельзя руны + чарки if (isset($tr['rune']) && $tr['rune'] > 0) { $notr++; } @@ -8348,11 +8392,11 @@ LIMIT 1')); } } if ($notr > 0) { - //РќРµ хватает характеристик или РЅРµ совпадают условия + //Не хватает характеристик или не совпадают условия if (isset($tr['open']) && isset($_GET['open'])) { - $this->error = 'Р’С‹ РЅРµ можете открыть данный предмет'; + $this->error = 'Вы не можете открыть данный предмет'; } else { - $this->error = 'Нельзя одеть больше РѕРґРЅРѕРіРѕ предмета данного типа'; + $this->error = 'Нельзя одеть больше одного предмета данного типа'; } return 0; } elseif (isset($tr['open']) && isset($_GET['open']) && isset($tr['items_in_file'])) { @@ -8364,45 +8408,45 @@ LIMIT 1')); require('_incl_data/class/magic/' . $tr['items_in_file'] . '.php'); if (!isset($no_open_itm)) { $this->deleteItem($itm['id'], $this->info['id']); - $this->error = 'Р’С‹ успешно открыли "' . $itm['name'] . '":
' . $io . '...'; + $this->error = 'Вы успешно открыли "' . $itm['name'] . '":
' . $io . '...'; } else { unset($no_open_itm); } } else { - $this->error = 'Предмет "' . $itm['name'] . '" невозможно открыть...'; + $this->error = 'Предмет "' . $itm['name'] . '" невозможно открыть...'; } } elseif (isset($tr['open']) && isset($_GET['open'])) { - //открываем предмет + //открываем предмет $io = ''; $i = 0; $itms = explode(',', $tr['items_in']); if ($itm['type'] == 37) { - //Распаковываем упаковку + //Распаковываем упаковку $io = ''; $itmin = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `id` = "' . $tr['item_inbox'] . '" LIMIT 1')); $itmmn = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $itmin['item_id'] . '" LIMIT 1')); // if ($itm['gift'] == '' || $itm['gift'] == '0') { - $this->error = 'Предмет должен быть подарен, прежде чем его открывать!'; + $this->error = 'Предмет должен быть подарен, прежде чем его открывать!'; } elseif (!isset($itmin['id'])) { - $this->error = 'Р’ упаковке ничего нет, скорее всего предмет кто-то вытащил РѕС‚ туда...'; + $this->error = 'В упаковке ничего нет, скорее всего предмет кто-то вытащил от туда...'; } else { $io .= $itmmn['name']; if ($itmin['item_id'] == 4867) { - //РќРµ откроешь + //Не откроешь $this->deleteItem($itm['id'], $this->info['id']); $this->deleteItem($itmin['id'], $this->info['id']); - $this->error = 'РќРµ удалось открыть подарок. Содержимое испорчено.'; + $this->error = 'Не удалось открыть подарок. Содержимое испорчено.'; } elseif ($itmin['item_id'] == 4868) { - //Летучая мышь + //Летучая мышь mysql_query('UPDATE `stats` SET `hpNow` = 1,`mpNow` = 1 WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); $this->deleteItem($itm['id'], $this->info['id']); $this->deleteItem($itmin['id'], $this->info['id']); - $this->error = 'Р’С‹ потеряли РІСЃРµ HP...'; + $this->error = 'Вы потеряли все HP...'; } elseif ($itmin['item_id'] == 4870) { - //Минута молчания + //Минута молчания if ($this->info['molch1'] > time()) { $this->info['molch1'] += 3600; } else { @@ -8411,90 +8455,90 @@ LIMIT 1')); mysql_query('UPDATE `users` SET `molch1` = "' . $this->info['molch1'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); $this->deleteItem($itm['id'], $this->info['id']); $this->deleteItem($itmin['id'], $this->info['id']); - $this->error = 'Р’С‹ оказались РїРѕРґ действие заклятия молчания...'; + $this->error = 'Вы оказались под действие заклятия молчания...'; } elseif ($itmin['item_id'] == 4873) { - //Крысиный СЏРґ + //Крысиный яд $a = mysql_fetch_array(mysql_query('SELECT `id`,`type`,`name`,`uid`,`delete`,`inBattle`,`eda`,`exp`,`obraz`,`stats`,`level`,`sex`,`levelUp`,`pet_in_cage`,`max_exp`,`priems`,`bonus` FROM `users_animal` WHERE `uid` = "' . $this->info['id'] . '" AND `id` = "' . $this->info['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); $this->deleteItem($itm['id'], $this->info['id']); $this->deleteItem($itmin['id'], $this->info['id']); if (isset($a['id'])) { - $this->error = 'Ваш зверь "' . $a['name'] . '" странно позеленел...'; + $this->error = 'Ваш зверь "' . $a['name'] . '" странно позеленел...'; mysql_query('UPDATE `users_animal` SET `eda` = 0, `yad` = "' . (time() + 86400 * 7) . '" WHERE `id` = "' . $a['id'] . '" LIMIT 1'); } else { - $this->error = 'Кто-то пытался отравить вашего зверя, которого Сѓ вас нет :)'; + $this->error = 'Кто-то пытался отравить вашего зверя, которого у вас нет :)'; } } elseif ($itmin['item_id'] == 4869) { - //Неасчастный случай (легкая травма РЅР° 1 час) + //Неасчастный случай (легкая травма на 1 час) $this->deleteItem($itm['id'], $this->info['id']); $this->deleteItem($itmin['id'], $this->info['id']); mysql_query('INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES ( "0","' . (time() + 3600) . '","-1", - "Неверие РІ человечество","add_s' . rand(1, 3) . '=-' . rand(5, 15) . '","' . $this->info['id'] . '", + "Неверие в человечество","add_s' . rand(1, 3) . '=-' . rand(5, 15) . '","' . $this->info['id'] . '", "4", "bad_present_travma1.gif","0", "1" )'); - $this->error = 'Р’С‹ травмированы. Р’ том числе Рё физически...'; + $this->error = 'Вы травмированы. В том числе и физически...'; } elseif ($itmin['item_id'] == 4872) { - //Трагедия (средняя травма РЅР° 1 час) + //Трагедия (средняя травма на 1 час) $this->deleteItem($itm['id'], $this->info['id']); $this->deleteItem($itmin['id'], $this->info['id']); mysql_query('INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES ( "0","' . (time() + 3600) . '","-1", - "Неверие РІ человечество","add_s' . rand(1, 3) . '=-' . rand(16, 25) . '","' . $this->info['id'] . '", + "Неверие в человечество","add_s' . rand(1, 3) . '=-' . rand(16, 25) . '","' . $this->info['id'] . '", "4", "bad_present_travma2.gif","0", "2" )'); - $this->error = 'Р’С‹ травмированы. Р’ том числе Рё физически...'; + $this->error = 'Вы травмированы. В том числе и физически...'; } elseif ($itmin['item_id'] == 4876) { - //Катастрофа (тяжелая травма РЅР° 1 час) + //Катастрофа (тяжелая травма на 1 час) $this->deleteItem($itm['id'], $this->info['id']); $this->deleteItem($itmin['id'], $this->info['id']); mysql_query('INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES ( "0","' . (time() + 3600) . '","-1", - "Неверие РІ человечество","add_s' . rand(1, 3) . '=-' . rand(26, 35) . '","' . $this->info['id'] . '", + "Неверие в человечество","add_s' . rand(1, 3) . '=-' . rand(26, 35) . '","' . $this->info['id'] . '", "4", "bad_present_travma3.gif","0", "3" )'); - $this->error = 'Р’С‹ травмированы. Р’ том числе Рё физически...'; + $this->error = 'Вы травмированы. В том числе и физически...'; } elseif ($itmin['item_id'] == 4878) { - //Недвижимость (add_puti=7200) + //Недвижимость (add_puti=7200) $this->deleteItem($itm['id'], $this->info['id']); $this->deleteItem($itmin['id'], $this->info['id']); mysql_query('INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES ( "0","' . (time() + 7200) . '","-1", - "Недвижимость","add_puti=1","' . $this->info['id'] . '", + "Недвижимость","add_puti=1","' . $this->info['id'] . '", "4", "bad_present_chains.gif","0", "3" )'); - $this->error = 'Р’С‹ РЅРµ можете передвигаться...'; + $this->error = 'Вы не можете передвигаться...'; } elseif ($itmin['item_id'] == 4874) { - //РЎСЋСЂРїСЂРёР· для мага РЅР° час + //Сюрприз для мага на час $this->deleteItem($itm['id'], $this->info['id']); $this->deleteItem($itmin['id'], $this->info['id']); mysql_query('INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES ( "0","' . (time() + 3600) . '","-1", - "РЎСЋСЂРїСЂРёР· для Мага","add_s5=-50","' . $this->info['id'] . '", + "Сюрприз для Мага","add_s5=-50","' . $this->info['id'] . '", "4", "bad_present_dmage.gif","0", "3" )'); - $this->error = 'Вам нехорошо...'; + $this->error = 'Вам нехорошо...'; } elseif ($itmin['item_id'] == 4871) { - //РЎСЋСЂРїСЂРёР· для РІРѕРёРЅР° РЅР° час + //Сюрприз для воина на час $this->deleteItem($itm['id'], $this->info['id']); $this->deleteItem($itmin['id'], $this->info['id']); mysql_query('INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES ( "0","' . (time() + 3600) . '","-1", - "РЎСЋСЂРїСЂРёР· для Р’РѕРёРЅР°","add_s1=-50","' . $this->info['id'] . '", + "Сюрприз для Воина","add_s1=-50","' . $this->info['id'] . '", "4", "bad_present_dfighter.gif","0", "3" )'); - $this->error = 'Вам нехорошо...'; - } elseif (mysql_query('UPDATE `items_users` SET `uid` = "' . $this->info['id'] . '",`lastUPD` = "' . time() . '",`gift` = "' . $itm['gift'] . '",`gtxt1` = "' . $itm['gtxt1'] . '",`gtxt2` = "Предмет РёР· упаковки. Дата запаковки: ' . date('d.m.Y H:i:s', $itmin['time_create']) . '" WHERE `id` = "' . $itmin['id'] . '" LIMIT 1')) { - //Удаляем упаковку + $this->error = 'Вам нехорошо...'; + } elseif (mysql_query('UPDATE `items_users` SET `uid` = "' . $this->info['id'] . '",`lastUPD` = "' . time() . '",`gift` = "' . $itm['gift'] . '",`gtxt1` = "' . $itm['gtxt1'] . '",`gtxt2` = "Предмет из упаковки. Дата запаковки: ' . date('d.m.Y H:i:s', $itmin['time_create']) . '" WHERE `id` = "' . $itmin['id'] . '" LIMIT 1')) { + //Удаляем упаковку $this->deleteItem($itm['id'], $this->info['id']); - $this->error = 'Р’С‹ успешно открыли "' . $itm['name'] . '", внутри было найдено:
' . $io . '...'; + $this->error = 'Вы успешно открыли "' . $itm['name'] . '", внутри было найдено:
' . $io . '...'; } else { - $this->error = 'Неудалось открыть подарок, что же там?'; + $this->error = 'Неудалось открыть подарок, что же там?'; } // } @@ -8526,7 +8570,7 @@ LIMIT 1')); mysql_query('UPDATE `items_users` SET `lastUPD` = "' . time() . '",`inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } $this->deleteItem($itm['id'], $this->info['id']); - $this->error = 'Р’С‹ успешно открыли "' . $itm['name'] . '", внутри было найдено:
' . $io . '...'; + $this->error = 'Вы успешно открыли "' . $itm['name'] . '", внутри было найдено:
' . $io . '...'; } } else { $inSlot = $itm['inslot']; @@ -8536,13 +8580,13 @@ LIMIT 1')); $d[$p['inOdet']] = $p['id']; } - //Если РІ слот оружия Рё можно одеть РІ левую СЂСѓРєСѓ + //Если в слот оружия и можно одеть в левую руку if ($itm['2too'] == 1 && $inSlot == 3 && isset($d[3])) { $inSlot = 14; } if ($inSlot == 3 || $inSlot == 14) { - //Проверяем есть-ли двуручное оружие + //Проверяем есть-ли двуручное оружие if ($this->stats['items'][$this->stats['wp3id']]['2h'] == 1 || $this->stats['items'][$this->stats['wp14id']]['2h'] == 1 || $itm['2h'] == 1) { $this->snatItem($this->stats['items'][$this->stats['wp3id']]['id'], $uid); $this->snatItem($this->stats['items'][$this->stats['wp14id']]['id'], $uid); @@ -8605,7 +8649,7 @@ LIMIT 1')); mysql_query('UPDATE `items_users` SET `lastUPD` = "' . time() . '", `inGroup` = 0, `delete` = 0 WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } if ($upd) { - //Если предмет привязывается после одевания + //Если предмет привязывается после одевания //if($itm['']) //{ // @@ -8614,12 +8658,12 @@ LIMIT 1')); mysql_query('UPDATE `users` SET `autospell` = "1" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); return 1; } else { - $this->error = '(!) Ошибка обновления данных'; + $this->error = '(!) Ошибка обновления данных'; return 0; } } } else { - $this->error = 'Предмет РЅРµ найден РІ вашем рюкзаке'; + $this->error = 'Предмет не найден в вашем рюкзаке'; return 0; } } @@ -8636,14 +8680,14 @@ LIMIT 1')); if (isset($itm['id'])) { if ($coldel == 0) { - //Удаляем целиком + //Удаляем целиком $upd = mysql_query('UPDATE `items_users` SET `lastUPD`="' . time() . '",`delete`="' . time() . '" WHERE `id`="' . $itm['id'] . '" LIMIT 1'); $col = $this->itemsX($itm['id']); if ($col > 0) { mysql_query('UPDATE `items_users` SET `lastUPD`="' . time() . '",`delete`="' . time() . '",`inGroup` = "0" WHERE `inGroup`="' . $itm['id'] . '" LIMIT ' . $col); } } else { - //Удаляем конкретное РєРѕР»-РІРѕ + //Удаляем конкретное кол-во $col = $this->itemsX($itm['id']); if ($col > 1) { if ($col <= $coldel) { @@ -8651,7 +8695,7 @@ LIMIT 1')); } $upd = mysql_query('UPDATE `items_users` SET `lastUPD`="' . time() . '",`delete`="' . time() . '",`inGroup` = "0" WHERE `inGroup`="' . $itm['id'] . '" AND `delete` = "1000" LIMIT ' . $coldel); } else { - //Удаляем целиком + //Удаляем целиком $upd = mysql_query('UPDATE `items_users` SET `lastUPD`="' . time() . '",`delete`="' . time() . '" WHERE `id`="' . $itm['id'] . '" LIMIT 1'); $upd = mysql_query('UPDATE `items_users` SET `lastUPD`="' . time() . '",`delete`="' . time() . '",`inGroup` = "0" WHERE `inGroup`="' . $itm['id'] . '" AND `delete` = "1000" LIMIT ' . $col); } @@ -8666,18 +8710,18 @@ LIMIT 1')); $col = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `items_users` WHERE `item_id`="' . $itm['item_id'] . '" AND `inOdet` = 0 AND `delete` < 100000 AND `uid` = "' . $itm['uid'] . '" AND `data` NOT LIKE "%nodelete%"' . $whr)); $col = $col[0]; mysql_query('UPDATE `items_users` SET `lastUPD`="' . time() . '",`delete`="' . time() . '" WHERE `item_id`="' . $itm['item_id'] . '" AND `inOdet` = 0 AND `delete` < 100000 AND `uid` = "' . $itm['uid'] . '" AND `data` NOT LIKE "%nodelete%"' . $whr); - $this->error = 'Предметы "' . $itm['name'] . ' (x' . ($col + 1) . ')" выброшены'; - $this->addDelo(1, $uid, '"System.inventory": Предметы "' . $itm['name'] . ' (x' . $col . ')" [itm:' . $itm['id'] . '=' . time() . '] были выброшены.', time(), $this->info['city'], 'System.inventory', 0, 0); + $this->error = 'Предметы "' . $itm['name'] . ' (x' . ($col + 1) . ')" выброшены'; + $this->addDelo(1, $uid, '"System.inventory": Предметы "' . $itm['name'] . ' (x' . $col . ')" [itm:' . $itm['id'] . '=' . time() . '] были выброшены.', time(), $this->info['city'], 'System.inventory', 0, 0); } else { - $this->error = 'Предмет "' . $itm['name'] . '" выброшен'; - $this->addDelo(1, $uid, '"System.inventory": Предмет "' . $itm['name'] . '" [itm:' . $itm['id'] . '] был выброшен.', time(), $this->info['city'], 'System.inventory', 0, 0); + $this->error = 'Предмет "' . $itm['name'] . '" выброшен'; + $this->addDelo(1, $uid, '"System.inventory": Предмет "' . $itm['name'] . '" [itm:' . $itm['id'] . '] был выброшен.', time(), $this->info['city'], 'System.inventory', 0, 0); } return 1; } else { return 0; } } else { - $this->error = 'Предмет РЅРµ найден РІ вашем рюкзаке'; + $this->error = 'Предмет не найден в вашем рюкзаке'; } } @@ -8763,7 +8807,7 @@ LIMIT 1')); $sts = explode('|', $u['stats']); $i = 0; $ste = ''; - //Родные характеристики + //Родные характеристики while ($i < count($sts)) { $ste = explode('=', $sts[$i]); if (isset($ste[1])) { @@ -8794,7 +8838,7 @@ LIMIT 1')); '); } - //Шаблонные картинки + //Шаблонные картинки if ($this->info['id'] == $u['id'] || $reimg != false) { $sp_img = mysql_query('SELECT * FROM `items_img` WHERE `uid` = "' . $u['id'] . '" AND `img_id` != "0" LIMIT 16'); while ($pl_img = mysql_fetch_array($sp_img)) { @@ -8807,7 +8851,7 @@ LIMIT 1')); } } - //Характеристики РѕС‚ предметов //РўРЈРў tr_lvl + //Характеристики от предметов //ТУТ tr_lvl $cl = mysql_query('SELECT `im`.`id`,`im`.`name`,`im`.`img`,`im`.`type`,`im`.`inslot`,`im`.`2h`,`im`.`2too`,`im`.`iznosMAXi`,`im`.`inRazdel`,`im`.`price1`,`im`.`price2`,`im`.`pricerep`,`im`.`magic_chance`,`im`.`info`,`im`.`massa`,`im`.`level`,`im`.`magic_inci`,`im`.`overTypei`,`im`.`group`,`im`.`group_max`,`im`.`geni`,`im`.`ts`,`im`.`srok`,`im`.`class`,`im`.`class_point`,`im`.`anti_class`,`im`.`anti_class_point`,`im`.`max_text`,`im`.`useInBattle`,`im`.`lbtl`,`im`.`lvl_itm`,`im`.`lvl_exp`,`im`.`lvl_aexp`, `iu`.`id`,`iu`.`item_id`,`iu`.`1price`,`iu`.`2price`,`iu`.`uid`,`iu`.`use_text`,`iu`.`data`,`iu`.`inOdet`,`iu`.`inShop`,`iu`.`delete`,`iu`.`iznosNOW`,`iu`.`iznosMAX`,`iu`.`gift`,`iu`.`gtxt1`,`iu`.`gtxt2`,`iu`.`kolvo`,`iu`.`geniration`,`iu`.`magic_inc`,`iu`.`maidin`,`iu`.`lastUPD`,`iu`.`timeOver`,`iu`.`overType`,`iu`.`secret_id`,`iu`.`time_create`,`iu`.`time_sleep`,`iu`.`inGroup`,`iu`.`dn_delete`,`iu`.`inTransfer`,`iu`.`post_delivery`,`iu`.`lbtl_`,`iu`.`bexp`,`iu`.`so`,`iu`.`blvl` @@ -8818,7 +8862,7 @@ LIMIT 1')); $hnd2 = 0; $sht1 = 0; $reitm = []; - $coms = []; // комплекты + $coms = []; // комплекты $dom = []; $btl_cof = 0; $oza = [ @@ -8826,13 +8870,13 @@ LIMIT 1')); 2 => [0, 0], 3 => [0, 0], 4 => [0, 0] - ]; //особенности защиты + ]; //особенности защиты $ozm = [ 1 => [0, 0], 2 => [0, 0], 3 => [0, 0], 4 => [0, 0] - ]; //особенности магии + ]; //особенности магии $itmslvl = 0; $itmsCfc = 0; @@ -8905,46 +8949,46 @@ LIMIT 1')); if (isset($sti['add_oza' . $ko])) { if (isset($sti['add_oza'])) { if ($sti['add_oza'] == 1) { - //Слабая + //Слабая $oza[$ko][0] += 1; $oza[$ko][1] += 9; } elseif ($sti['add_oza'] == 2) { - //Нормальная + //Нормальная $oza[$ko][0] += 20; $oza[$ko][1] += 39; } elseif ($sti['add_oza'] == 3) { - //Хорошая + //Хорошая $oza[$ko][0] += 40; $oza[$ko][1] += 69; } elseif ($sti['add_oza'] == 4) { - //Посредственная + //Посредственная $oza[$ko][0] += 10; $oza[$ko][1] += 19; } elseif ($sti['add_oza'] == 5) { - //Великолепная + //Великолепная $oza[$ko][0] += 70; $oza[$ko][1] += 89; } } if (isset($sti['add_ozm'])) { if ($sti['add_ozm'] == 1) { - //Слабая + //Слабая $ozm[$ko][0] += 1; $ozm[$ko][1] += 9; } elseif ($sti['add_ozm'] == 2) { - //Нормальная + //Нормальная $ozm[$ko][0] += 20; $ozm[$ko][1] += 39; } elseif ($sti['add_ozm'] == 3) { - //Хорошая + //Хорошая $ozm[$ko][0] += 40; $ozm[$ko][1] += 69; } elseif ($sti['add_ozm'] == 4) { - //Посредственная + //Посредственная $ozm[$ko][0] += 10; $ozm[$ko][1] += 19; } elseif ($sti['add_ozm'] == 5) { - //Великолепная + //Великолепная $ozm[$ko][0] += 70; $ozm[$ko][1] += 89; } @@ -8953,45 +8997,45 @@ LIMIT 1')); $ozm[$ko][1] += 9; } if ($sti['add_oza' . $ko] == 1) { - //Слабая + //Слабая $oza[$ko][0] += 1; $oza[$ko][1] += 9; } elseif ($sti['add_oza' . $ko] == 2) { - //Нормальная + //Нормальная $oza[$ko][0] += 20; $oza[$ko][1] += 39; } elseif ($sti['add_oza' . $ko] == 3) { - //Хорошая + //Хорошая $oza[$ko][0] += 40; $oza[$ko][1] += 69; } elseif ($sti['add_oza' . $ko] == 4) { - //Посредственная + //Посредственная $oza[$ko][0] += 10; $oza[$ko][1] += 19; } elseif ($sti['add_oza' . $ko] == 5) { - //Великолепная + //Великолепная $oza[$ko][0] += 70; $oza[$ko][1] += 89; } if (isset($sti['add_ozm' . $ko])) { if ($sti['add_ozm' . $ko] == 1) { - //Слабая + //Слабая $ozm[$ko][0] += 1; $ozm[$ko][1] += 9; } elseif ($sti['add_ozm' . $ko] == 2) { - //Нормальная + //Нормальная $ozm[$ko][0] += 20; $ozm[$ko][1] += 39; } elseif ($sti['add_ozm' . $ko] == 3) { - //Хорошая + //Хорошая $ozm[$ko][0] += 40; $ozm[$ko][1] += 69; } elseif ($sti['add_ozm' . $ko] == 4) { - //Посредственная + //Посредственная $ozm[$ko][0] += 10; $ozm[$ko][1] += 19; } elseif ($sti['add_ozm' . $ko] == 5) { - //Великолепная + //Великолепная $ozm[$ko][0] += 70; $ozm[$ko][1] += 89; } @@ -9072,13 +9116,13 @@ LIMIT 1')); $st['zona'] += $sti['zona']; } - //Добавляем статы РѕС‚ данного предмета + //Добавляем статы от данного предмета if (!isset($sti['restart_stats'])) { $i = 0; while ($i < count($ia)) { if (isset($ia[$i])) { - //Действует РЅР° (Действует РЅР°) + //Действует на (Действует на) if (isset($sti['add_' . $ia[$i]])) { if ($ia[$i] != 'zmproc' && $ia[$i] != 'zaproc') { @@ -9118,13 +9162,13 @@ LIMIT 1')); } } - //Сохраненные хар-РєРё Рё умения + //Сохраненные хар-ки и умения if (count($reitm) > 0) { $i39 = [0 => 0, 1 => 0, 2 => 0]; $i = 0; while ($i < count($reitm)) { if (isset($reitm[$i]['sm_skill']) && $i39[0] == 0) { - //умения + //умения $i9 = 1; $i39[0] = 1; while ($i9 <= 7) { @@ -9133,7 +9177,7 @@ LIMIT 1')); $i9++; } } elseif (isset($reitm[$i]['sm_abil']) && $i39[1] == 0) { - //статы + //статы $i9 = 1; $i39[1] = 1; while ($i9 <= 12) { @@ -9141,7 +9185,7 @@ LIMIT 1')); $i9++; } } elseif (isset($reitm[$i]['sm_skill2']) && $i39[2] == 0) { - //навыки + //навыки $i39[2] = 1; } @@ -9149,7 +9193,7 @@ LIMIT 1')); } } - //Харки РѕС‚ РёРєРѕРЅРѕРє + //Харки от иконок $efs = mysql_query('SELECT * FROM `users_ico` WHERE `uid`="' . mysql_real_escape_string($u['id']) . '" AND (`endTime` > "' . time() . '" OR `endTime` = 0)'); while ($e = mysql_fetch_array($efs)) { $sts = $this->lookStats($e['bonus']); @@ -9183,7 +9227,7 @@ LIMIT 1')); $test_noef = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_actions` WHERE `uid` = "' . $u['id'] . '" AND `vars` = "noeffectbattle1" AND `btl` = "' . $u['battle'] . '" LIMIT 1')); } //} - //Характеристики РѕС‚ эффектов + //Характеристики от эффектов $h = 0; $nbs = []; $prsu = []; @@ -9195,7 +9239,7 @@ LIMIT 1')); if ($u['dnow'] == 0) { if ($u['battle'] == 0) { mysql_query('DELETE FROM `eff_users` WHERE `id_eff` = "' . $e['id_eff'] . '" AND `uid` = "' . $u['id'] . '" AND `id` != "' . $e['id'] . '" ORDER BY `id` ASC'); - //Переводим РІ заряды + //Переводим в заряды if ($e['v1'] != 'priem') { if ($e['hod'] != -1) { mysql_query('UPDATE `eff_users` SET `hod` = "-1",`timeUse` = "' . (time() + ($e['hod'] * $c['effz']) - $e['actionTime']) . '" WHERE `id` = "' . $e['id'] . '" LIMIT 1'); @@ -9274,7 +9318,7 @@ LIMIT 1')); $i++; } } elseif ($e['timeUse'] != 77) { - //удаляем эффект + //удаляем эффект if ($e['img2'] != 'tz.gif' || $u['id'] == $this->info['id']) { if ($e['sleeptime'] == 0) { $this->endEffect($e['id'], $u); @@ -9287,38 +9331,38 @@ LIMIT 1')); $st['noeffectbattle1'] = 1; } - //Заглушки РѕС‚ эффектов + //Заглушки от эффектов //$st['items_img'][$pl_img['type']] = $pl_img_r['id'].'.'.$pl_img_r['format']; if ($nbs[4899] > 0) { - //Зеленый комплект + //Зеленый комплект $st['items_img'][8] = 'robe_illusion4.gif'; $st['items_img'][11] = 'leg_illusion4.gif'; } elseif ($nbs[4900] > 0) { - //Золото комплект + //Золото комплект $st['items_img'][8] = 'robe_illusion5.gif'; $st['items_img'][11] = 'leg_illusion5.gif'; } elseif ($nbs[4901] > 0) { - //Голубой комплект + //Голубой комплект $st['items_img'][8] = 'robe_illusion3.gif'; $st['items_img'][11] = 'leg_illusion3.gif'; } elseif ($nbs[4902] > 0) { - //РЎРёРЅРёР№ комплект + //Синий комплект $st['items_img'][8] = 'robe_illusion6.gif'; $st['items_img'][11] = 'leg_illusion6.gif'; } elseif ($nbs[4903] > 0) { - //Желтый комплект + //Желтый комплект $st['items_img'][8] = 'robe_illusion8.gif'; $st['items_img'][11] = 'leg_illusion8.gif'; } elseif ($nbs[4904] > 0) { - //Сиреневое платье + //Сиреневое платье $st['items_img'][8] = 'robe_illusion7.gif'; $st['items_img'][11] = 'leg_illusion7.gif'; } elseif ($nbs[4905] > 0) { - //Оранжевое платье + //Оранжевое платье $st['items_img'][8] = 'robe_illusion9.gif'; $st['items_img'][11] = 'leg_illusion9.gif'; } elseif ($nbs[4908] > 0) { - //Набор Темной Одежды + //Набор Темной Одежды $st['items_img'][8] = 'robe_illusion2.gif'; $st['items_img'][11] = 'leg_illusion2.gif'; $st['items_img'][10] = 'boots_illusion2.gif'; @@ -9327,7 +9371,7 @@ LIMIT 1')); $st['items_img'][4] = 'helmet_illusion2.gif'; $st['items_img'][12] = 'perchi_illusion2.gif'; } elseif ($nbs[4906] > 0) { - //Набор Бриллиантовой Одежды + //Набор Бриллиантовой Одежды $st['items_img'][8] = 'robe_illusion1.gif'; $st['items_img'][11] = 'leg_illusion1.gif'; $st['items_img'][10] = 'boots_illusion1.gif'; @@ -9337,14 +9381,14 @@ LIMIT 1')); $st['items_img'][12] = 'perchi_illusion1.gif'; } if ($nbs[4909] > 0) { - //Набор Золотых украшений + //Набор Золотых украшений $st['items_img'][13] = 'ring_illusion2.gif'; $st['items_img'][17] = 'ring_illusion2.gif'; $st['items_img'][18] = 'ring_illusion2.gif'; $st['items_img'][14] = 'amulet_illusion2.gif'; $st['items_img'][15] = 'earrings_illusion2.gif'; } elseif ($nbs[4907] > 0) { - //Набор Золотых украшений + //Набор Золотых украшений $st['items_img'][13] = 'ring_illusion1.gif'; $st['items_img'][17] = 'ring_illusion1.gif'; $st['items_img'][18] = 'ring_illusion1.gif'; @@ -9353,7 +9397,7 @@ LIMIT 1')); } if ($itmslvl < 5) { - //Эффект ослабления + //Эффект ослабления $st['itmslvl'] = 0; } else { $st['itmslvl'] = 1; @@ -9364,7 +9408,7 @@ LIMIT 1')); unset($test_btl_info); if ($u['battle'] > 0) { - //Характеристики РѕС‚ приемов + //Характеристики от приемов $efs = mysql_query('SELECT `eu`.`id`,`eu`.`id_eff`,`eu`.`uid`,`eu`.`name`,`eu`.`data`,`eu`.`overType`,`eu`.`timeUse`,`eu`.`timeAce`,`eu`.`user_use`,`eu`.`tr_life_user`,`eu`.`delete`,`eu`.`v1`,`eu`.`v2`,`eu`.`img2`,`eu`.`x`,`eu`.`hod`,`eu`.`bj`,`eu`.`sleeptime`,`eu`.`no_Ace` FROM `eff_users` AS `eu` WHERE `eu`.`uid`="' . mysql_real_escape_string($u['id']) . '" AND `eu`.`delete`="0" AND `eu`.`deactiveTime` < "' . time() . '" AND `eu`.`v1` = "priem" ORDER BY `eu`.`id` ASC'); $st['set_pog'] = []; $st['set_pog2'] = []; @@ -9453,14 +9497,14 @@ LIMIT 1')); $i++; } } elseif ($e['timeUse'] != 77) { - //удаляем эффект + //удаляем эффект $this->endEffect($e['id'], $u); $st['act'] = 1; } } } - //Характеристики РѕС‚ статов + //Характеристики от статов if (!isset($st['hpAll'])) { $st['hpAll'] = 0; @@ -9472,26 +9516,26 @@ LIMIT 1')); } @$st['mpAll'] += @$st['s6'] * 10; - //РўСѓСЂРЅРёСЂ + //Турнир if (!isset($st['m1'])) { $st['m1'] = 0; } $st['m1'] += $st['s3'] * 5; - // РјС„.анти-РєСЂРёС‚ = 2.5 + // мф.анти-крит = 2.5 if (!isset($st['m2'])) { $st['m2'] = 0; } $st['m2'] += $st['s3'] * 5; - // РјС„.СѓРІРѕСЂРѕС‚ = 2.5 + // мф.уворот = 2.5 if (!isset($st['m4'])) { $st['m4'] = 0; } $st['m4'] += $st['s2'] * 5; - // РјС„.анти-СѓРІРѕСЂРѕС‚ = 2.5 + // мф.анти-уворот = 2.5 if (!isset($st['m5'])) { $st['m5'] = 0; } @@ -9507,7 +9551,7 @@ LIMIT 1')); } $st['zm'] += $st['s4'] * 1.0; - if (!isset($st['zaproc'])) { //РўСѓС‚ Р·Рј 'zaproc'=>'Защита РѕС‚ СѓСЂРѕРЅР° (%)','zmproc'=>'Защита РѕС‚ магии стихий (%) + if (!isset($st['zaproc'])) { //Тут зм 'zaproc'=>'Защита от урона (%)','zmproc'=>'Защита от магии стихий (%) $st['zaproc'] = 0; } $st['zaproc'] += round($st['s5'] * 0); @@ -9517,8 +9561,8 @@ LIMIT 1')); } $st['m19'] += round($st['s3'] * 0.03); - //Мощности - //Мощность против "Мощность РєСЂРёС‚. СѓСЂРѕРЅР°". Гамс + //Мощности + //Мощность против "Мощность крит. урона". Гамс if (!isset($st['antm3'])) { $st['antm3'] = 0; } @@ -9546,15 +9590,15 @@ LIMIT 1')); } $st['m8'] += 0; - //Бонусы комплектов + //Бонусы комплектов $i = 0; while ($i <= count(@$coms['new'])) { if (@isset($coms['new'][$i])) { - //$coms[$i]['id'] - id комплекта, $j - РєРѕР»-РІРѕ предметов данного комплекта + //$coms[$i]['id'] - id комплекта, $j - кол-во предметов данного комплекта $j = @$coms['com'][$coms['new'][$i]]; $com = mysql_fetch_array(mysql_query('SELECT `id`,`com`,`name`,`x`,`data` FROM `complects` WHERE `com` = "' . ((int)$coms['new'][$i]) . '" AND `x` <= ' . ((int)$j) . ' ORDER BY `x` DESC LIMIT 1')); if (isset($com['id'])) { - //добавляем действия комплекта + //добавляем действия комплекта $ij = 0; $sti = $this->lookStats($com['data']); while ($ij < count($ia)) { @@ -9568,10 +9612,10 @@ LIMIT 1')); $i++; } - //Бонусы статов - //Замена свитков + //Бонусы статов + //Замена свитков if ($u['autospell'] != '' && $u['autospell'] != 0 && $u['battle'] == 0) { - //проверяем свитки + //проверяем свитки $splink = ''; $spi = mysql_query('SELECT `id`,`item_id`,`inOdet` FROM `items_users` WHERE `inOdet` >= 40 AND `inOdet` <= 50 AND `uid` = "' . $u['id'] . '" AND `delete` = 0 ORDER BY `item_id` DESC LIMIT 20'); while ($pli = mysql_fetch_array($spi)) { @@ -9579,13 +9623,13 @@ LIMIT 1')); } $splink = rtrim($splink, ','); - //Запоминаем новый комплект свитков + //Запоминаем новый комплект свитков if ($u['autospell'] == 1) { $u['autospell'] = $splink; mysql_query('UPDATE `users` SET `autospell` = "' . $splink . '" WHERE `id` = "' . $u['id'] . '" LIMIT 1'); } - //Выдаем нужный свиток, если РѕРЅ есть РІ инвентаре + //Выдаем нужный свиток, если он есть в инвентаре if ($u['autospell'] != $splink) { $spe1 = explode(',', $splink); $spe2 = explode(',', $u['autospell']); @@ -9619,9 +9663,9 @@ LIMIT 1')); } - //Бонусы статов - //РўРЈРў - //сила + //Бонусы статов + //ТУТ + //сила if ($st['s1'] > 24 && $st['s1'] < 50) { $st['m2'] += 15; @@ -9655,7 +9699,7 @@ LIMIT 1')); $st['m7'] += 7; } - //ловкость $st[1]['pa1'] += 2; $st['m7'] += 35; + //ловкость $st[1]['pa1'] += 2; $st['m7'] += 35; if ($st['s2'] > 24 && $st['s2'] < 50) { $st['pa1'] += 2; @@ -9701,7 +9745,7 @@ LIMIT 1')); $st['m15'] += 5; } - //интуиция + //интуиция if ($st['s3'] > 24 && $st['s3'] < 50) { $st['pa4'] += 2; @@ -9754,7 +9798,7 @@ LIMIT 1')); $st['m14'] += 5; } - //выносливость + //выносливость if ($st['s4'] > 0) { $st['hpAll'] += 30; @@ -9793,7 +9837,7 @@ LIMIT 1')); $st['za'] += 125; $st['zm'] += 125; } - //интелект + //интелект if ($st['s5'] > 24 && $st['s5'] < 50) { $st['m11'] += 10; @@ -9820,7 +9864,7 @@ LIMIT 1')); if ($st['s5'] > 199) { $st['pzm'] += 5; } - //мудрость + //мудрость if ($st['s6'] > 24 && $st['s6'] < 50) { $st['mpAll'] += 150; @@ -9859,7 +9903,7 @@ LIMIT 1')); $st['pzm'] += 7; } - //если второе оружие одето + //если второе оружие одето if ($hnd2 == 1 && $hnd1 == 1) { $st['zona']++; } @@ -9868,7 +9912,7 @@ LIMIT 1')); $st['zonb']++; } - /* Владения */ + /* Владения */ $i = 1; while ($i <= 7) { if (!isset($st['pm' . $i])) { @@ -9938,23 +9982,23 @@ LIMIT 1')); $i++; } - //Уязвимость оружие Рё магиям + //Уязвимость оружие и магиям $i = 1; while ($i <= 7) { @$st['yzm' . $i] += @$st['yzma']; if ($i <= 4) { - @$st['yzm' . $i] += @$st['yzm'];//стихийный СѓСЂРѕРЅ только - @$st['yza' . $i] += @$st['yza']; //СѓСЂРѕРЅ оружия + @$st['yzm' . $i] += @$st['yzm'];//стихийный урон только + @$st['yza' . $i] += @$st['yza']; //урон оружия } - //Отнимает РѕС‚ защиты РѕС‚ СѓСЂРѕРЅР° + //Отнимает от защиты от урона if (isset($st['yza' . $i]) && $i <= 4) { $st['za' . $i] = ($st['za' . $i] / 100 * (100 + ($st['yza' . $i]))); if ($st['za' . $i] < 0) { $st['za' . $i] = 0; } } - //Отнимает РѕС‚ защиты РѕС‚ магии + //Отнимает от защиты от магии if (isset($st['yzm' . $i])) { $st['zm' . $i] = ($st['zm' . $i] / 100 * (100 + ($st['yzm' . $i]))); if ($st['zm' . $i] < 0) { @@ -9981,10 +10025,10 @@ LIMIT 1')); $st['mpAll'] += round($st['mpAll'] / 100 * $st['mpProc']); } - //Реген. - 250 ед. + //Реген. - 250 ед. - //конец Р±РѕРЅСѓСЃРѕРІ + //конец бонусов if ($st['hpNow'] < 0) { $st['hpNow'] = 0; } elseif ($st['hpNow'] > $st['hpAll']) { @@ -9996,7 +10040,7 @@ LIMIT 1')); $st['mpNow'] = $st['mpAll']; } - //Р·РѕРЅС‹ блока Рё удара + //зоны блока и удара if ($st['zona'] < 1) { $st['zona'] = 1; } @@ -10035,7 +10079,7 @@ LIMIT 1')); $st['pzm'] += 5; } - //Бонус РѕС‚ медалей + //Бонус от медалей $rep1 = mysql_fetch_array(mysql_query('SELECT `add_slot`,`nu_sandcity`,`n_sandcity`, `dl1`,`id`,`rep1`,`rep2`,`repcapitalcity`,`repdemonscity`,`repangelscity`,`repabandonedplain`, @@ -10056,49 +10100,49 @@ LIMIT 1')); $st['hpAll'] += 250; } - //Водосток + //Водосток if ($rep1['repdreamscity'] >= 24999) { $st['m10'] += 10; $st['pzm'] += 1; } - //излом + //излом if ($rep1['repizlom'] == 9999) { $st['m10'] += 10; $st['pzm'] += 1; } - //Бездна + //Бездна if ($rep1['repangelscity'] == 25000) { $st['m10'] += 10; $st['pzm'] += 1; } - //Катакомбы + //Катакомбы if ($rep1['repdemonscity'] == 25000) { $st['m10'] += 10; $st['pzm'] += 1; } - //Грибница + //Грибница if ($rep1['repdemonscity'] == 25000) { $st['m10'] += 10; $st['pzm'] += 1; } - //Пещера тысячи проклятий + //Пещера тысячи проклятий if ($rep1['repcapitalcity'] == 25000) { $st['m10'] += 10; $st['pzm'] += 1; } - //Санд + //Санд if ($rep1['repsandcity'] == 25000) { $st['m10'] += 10; $st['pzm'] += 1; } - //Гора легиона + //Гора легиона if ($rep1['repabandonedplain'] == 24999) { $st['m10'] += 10; $st['pzm'] += 1; } - //Добавочный подьем для РёРіСЂРѕРєРѕРІ + //Добавочный подьем для игроков $st['maxves'] += 500; if ($st['silver'] >= 5) { @@ -10114,7 +10158,7 @@ LIMIT 1')); $st['exp'] += 25; } - //Сохраняем рейтинг РёРіСЂРѕРєР° + //Сохраняем рейтинг игрока $st['reting'] = floor($st['reting']); if (@$st['btl_cof'] != @$st['prckr']) { @@ -10131,14 +10175,14 @@ LIMIT 1')); } if ($u['room'] == 411) { - //Хоккей, эффект РѕС‚ шайбы -25% РќР  + //Хоккей, эффект от шайбы -25% НР $shb = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $u['id'] . '" AND `item_id` = 4910 AND `delete` = 0 LIMIT 1')); if (isset($shb['id'])) { $st['hpAll'] = round($st['hpAll'] / 100 * 75); } } - if (stristr($u['login'], '(зверь ') == true || (stristr($u['login'], 'Каменный страж') && $u['ip'] == '0')) { + if (stristr($u['login'], '(зверь ') == true || (stristr($u['login'], 'Каменный страж') && $u['ip'] == '0')) { $st['this_animal'] = 1; } else { $st['this_animal'] = 0; @@ -10147,7 +10191,7 @@ LIMIT 1')); $rt = []; if ($i1 == 1) { $rt[0] = $st; - $rt[1] = $st2; //родные статы + $rt[1] = $st2; //родные статы } else { $rt = $st; } @@ -10185,7 +10229,7 @@ LIMIT 1')); return $msg_id; } - //получаем уровень + //получаем уровень public function testLevel() { global $c; @@ -10218,17 +10262,17 @@ LIMIT 1')); if ($this->info['exp'] >= $telvl[$this->info['upLevel']]) { $lvl = mysql_fetch_array(mysql_query('SELECT `duh`,`vinos`,`bprice`,`upLevel`,`nextLevel`,`exp`,`money`,`money_bonus1`,`money_bonus2`,`ability`,`skills`,`nskills`,`sskills`,`expBtlMax`,`hpRegen`,`mpRegen`,`money2` FROM `levels` WHERE `upLevel`="' . $this->info['upLevel'] . '" LIMIT 1')); $lvln = mysql_fetch_array(mysql_query('SELECT `duh`,`vinos`,`bprice`,`upLevel`,`nextLevel`,`exp`,`money`,`money_bonus1`,`money_bonus2`,`ability`,`skills`,`nskills`,`sskills`,`expBtlMax`,`hpRegen`,`mpRegen`,`money2` FROM `levels` WHERE `upLevel`="' . ($lvl['upLevel'] + 1) . '" LIMIT 1')); - //Кристал вечности + //Кристал вечности if ($this->info['exp'] > 12499 && $this->info['level'] <= 5 && $c['infinity5level'] == true) { $itm = mysql_fetch_array(mysql_query('SELECT `id`,`item_id`,`1price`,`2price`,`3price`,`uid`,`use_text`,`data`,`inOdet`,`inShop`,`delete`,`iznosNOW`,`iznosMAX`,`gift`,`gtxt1`,`gtxt2`,`kolvo`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`timeOver`,`overType`,`secret_id`,`time_create`,`inGroup`,`dn_delete`,`inTransfer`,`post_delivery`,`lbtl_`,`bexp`,`so`,`blvl` FROM `items_users` WHERE `item_id` = "1204" AND `delete` = "0" AND `uid` = "' . $this->info['id'] . '" AND `inShop` = "0" AND `inTransfer` = "0" LIMIT 1')); if (!isset($itm['id']) && $this->info['host_reg'] != 'noinfinity5' && $this->info['twink'] == 0) { $this->info['exp'] = 12499; mysql_query('UPDATE `stats` SET `exp` = "12499" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); - echo ''; + echo ''; } else { mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); - $text = 'Предмет "Кристалл Вечности [6]" был успешно использован.'; + $text = 'Предмет "Кристалл Вечности [6]" был успешно использован.'; echo ''; //mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1',".$this->info['city']."','".$this->info['room']."','','".$this->info['login']."','".$text."','".time()."','6','0')"); } @@ -10241,9 +10285,9 @@ LIMIT 1')); while ($i != 1) { if ($c['nolevel'] == true && $this->info['exp'] >= $lvl['exp'] && isset($lvln['upLevel'])) { $tlus = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `real` = 1 AND `level` = "' . $this->info['level'] . '" LIMIT 1')); - //берем апп или уровень, $lvln + //берем апп или уровень, $lvln if ($tlus[0] < $this->info['level'] * 5) { - //Нельзя получать лвл/аппы РїРѕРєР° РЅРµ будет 100 персонажей текущего СѓСЂРѕРІРЅСЏ + //Нельзя получать лвл/аппы пока не будет 100 персонажей текущего уровня $this->info['exp'] = $lvl['exp'] - 1; mysql_query('UPDATE `stats` SET `exp` = "' . $this->info['exp'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); } @@ -10251,7 +10295,7 @@ LIMIT 1')); if ($this->info['exp'] >= $lvl['exp'] && isset($lvln['upLevel'])) { if ($lvl['nextLevel'] > $this->info['level']) { - //повышаем выносливость + //повышаем выносливость $a4 = 1; if ($lvl['nextLevel'] == 9) { $a4 = 2; @@ -10266,12 +10310,12 @@ LIMIT 1')); $this->stats['s4'] += $a4; $sex1 = ''; if ($this->info['sex'] == 1) { - $sex1 = 'ла'; + $sex1 = 'ла'; } $ult = 1; - //Рефералы + //Рефералы if ($this->info['twink'] == 0 && (round($this->info['host_reg']) > 0 && ($this->info['dieline'] == 0 || $this->info['dieline'] < $lvl['exp']))) { $mtest = mysql_fetch_array(mysql_query('SELECT `id`,`uid`,`uid2`,`ip` FROM `mults` WHERE (`uid` = "' . $this->info['id'] . '" AND `uid2` = "' . ((int)$this->info['host_reg']) . '") OR (`uid2` = "' . $this->info['id'] . '" AND `uid` = "' . ((int)$this->info['host_reg']) . '") LIMIT 1')); $rlog = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`catch`,`host_reg` FROM `users` WHERE `id` = "' . ((int)$this->info['host_reg']) . '" LIMIT 1')); @@ -10305,23 +10349,23 @@ LIMIT 1')); $up = mysql_query('UPDATE `users` SET `money` = `money` + ' . $kr . ',`money2` = `money2` + ' . $ekr . ' WHERE `id` = "' . mysql_real_escape_string($rlog['id']) . '" LIMIT 1'); if ($up) { - //Реферал 1-РіРѕ СѓСЂРѕРІРЅСЏ + //Реферал 1-го уровня $krtxt = ''; if ($kr > 0) { - $krtxt .= '' . $kr . ' РљР '; + $krtxt .= '' . $kr . ' КР'; if ($ekr > 0) { $krtxt .= ', '; } } if ($ekr > 0) { - $krtxt .= '' . $ekr . ' ЕКР'; + $krtxt .= '' . $ekr . ' ЕКР'; } - $this->send('', $this->info['room'], $this->info['city'], '', $rlog['login'], 'Ваш реферал ' . $this->info['login'] . ' достиг' . $sex1 . ' СѓСЂРѕРІРЅСЏ ' . $lvl['nextLevel'] . '! Вам зачисленно ' . $krtxt, -1, 6, 0, 0, 0, 1); + $this->send('', $this->info['room'], $this->info['city'], '', $rlog['login'], 'Ваш реферал ' . $this->info['login'] . ' достиг' . $sex1 . ' уровня ' . $lvl['nextLevel'] . '! Вам зачисленно ' . $krtxt, -1, 6, 0, 0, 0, 1); $rlog['catch'] += $bn['add_bank']; mysql_query('UPDATE `users` SET `catch` = "' . $rlog['catch'] . '" WHERE `id` = "' . $rlog['id'] . '" LIMIT 1'); // if ((int)$rlog['host_reg'] > 0) { - //Реферал 2-РіРѕ СѓСЂРѕРІРЅСЏ + //Реферал 2-го уровня $llogin = $rlog['login']; $ekr = round($bn['add_bank'] * 0.4, 2); $kr = round($bn['add_money'] * 0.4, 2); @@ -10329,20 +10373,20 @@ LIMIT 1')); if (isset($rlog['id'])) { $krtxt = ''; if ($kr > 0) { - $krtxt .= '' . $kr . ' РљР '; + $krtxt .= '' . $kr . ' КР'; if ($ekr > 0) { $krtxt .= ', '; } } if ($ekr > 0) { - $krtxt .= '' . $ekr . ' ЕКР'; + $krtxt .= '' . $ekr . ' ЕКР'; } - $this->send('', $this->info['room'], $this->info['city'], '', $rlog['login'], 'Ваш реферал ' . $this->info['login'] . ' (2-РіРѕ СѓСЂРѕРІРЅСЏ РѕС‚ "' . $llogin . '" ) достиг' . $sex1 . ' СѓСЂРѕРІРЅСЏ ' . $lvl['nextLevel'] . '! Вам зачисленно ' . $krtxt, -1, 6, 0, 0, 0, 1); + $this->send('', $this->info['room'], $this->info['city'], '', $rlog['login'], 'Ваш реферал ' . $this->info['login'] . ' (2-го уровня от "' . $llogin . '" ) достиг' . $sex1 . ' уровня ' . $lvl['nextLevel'] . '! Вам зачисленно ' . $krtxt, -1, 6, 0, 0, 0, 1); $rlog['catch'] += $bn['add_bank']; mysql_query('UPDATE `users` SET `money` = `money` + ' . $kr . ',`money2` = `money2` + ' . $ekr . ' WHERE `id` = "' . $rlog['id'] . '" LIMIT 1'); // if ((int)$rlog['host_reg'] > 0) { - //Реферал 3-РіРѕ СѓСЂРѕРІРЅСЏ + //Реферал 3-го уровня $llogin2 = $rlog['login']; $ekr = round($bn['add_bank'] * 0.2, 2); $kr = round($bn['add_money'] * 0.2, 2); @@ -10350,15 +10394,15 @@ LIMIT 1')); if (isset($rlog['id'])) { $krtxt = ''; if ($kr > 0) { - $krtxt .= '' . $kr . ' РљР '; + $krtxt .= '' . $kr . ' КР'; if ($ekr > 0) { $krtxt .= ', '; } } if ($ekr > 0) { - $krtxt .= '' . $ekr . ' ЕКР'; + $krtxt .= '' . $ekr . ' ЕКР'; } - $this->send('', $this->info['room'], $this->info['city'], '', $rlog['login'], 'Ваш реферал ' . $this->info['login'] . ' (3-РіРѕ СѓСЂРѕРІРЅСЏ РѕС‚ "' . $llogin2 . '" (Реферал ' . $llogin . ') ) достиг' . $sex1 . ' СѓСЂРѕРІРЅСЏ ' . $lvl['nextLevel'] . '! Вам зачисленно ' . $krtxt, -1, 6, 0, 0, 0, 1); + $this->send('', $this->info['room'], $this->info['city'], '', $rlog['login'], 'Ваш реферал ' . $this->info['login'] . ' (3-го уровня от "' . $llogin2 . '" (Реферал ' . $llogin . ') ) достиг' . $sex1 . ' уровня ' . $lvl['nextLevel'] . '! Вам зачисленно ' . $krtxt, -1, 6, 0, 0, 0, 1); $rlog['catch'] += $bn['add_bank']; mysql_query('UPDATE `users` SET `money` = `money` + ' . $kr . ',`money2` = `money2` + ' . $ekr . ' WHERE `id` = "' . $rlog['id'] . '" LIMIT 1'); // @@ -10369,14 +10413,14 @@ LIMIT 1')); } } else { - $this->send('', $this->info['room'], $this->info['city'], '', $rlog['login'], 'Ваш реферал ' . $this->info['login'] . ' достиг' . $sex1 . ' СѓСЂРѕРІРЅСЏ ' . $lvl['nextLevel'] . '! (Ошибка зачисления, обратитесь СЃ Администрации проекта) РќР° Ваш банковский счет в„–' . $bnk . ' зачисленно ' . $ekr . ' РєСЂ.', -1, 6, 0, 0, 0, 1); + $this->send('', $this->info['room'], $this->info['city'], '', $rlog['login'], 'Ваш реферал ' . $this->info['login'] . ' достиг' . $sex1 . ' уровня ' . $lvl['nextLevel'] . '! (Ошибка зачисления, обратитесь с Администрации проекта) На Ваш банковский счет №' . $bnk . ' зачисленно ' . $ekr . ' кр.', -1, 6, 0, 0, 0, 1); } } // mysql_query("UPDATE `users` SET `referals` = `referals` + 5 WHERE `id` = '" . mysql_real_escape_string($rlog['id']) . "' LIMIT 1"); // } elseif (isset($rlog['id'])) { - $this->send('', $this->info['room'], $this->info['city'], '', $rlog['login'], 'Ваш реферал ' . $this->info['login'] . ' достиг' . $sex1 . ' СѓСЂРѕРІРЅСЏ ' . $lvl['nextLevel'] . '! (Персонаж РЅРµ активирован, либо Сѓ вас совпадают IP! Разрешено РЅРµ более 1 такого реферала!)', -1, 6, 0, 0, 0, 1); + $this->send('', $this->info['room'], $this->info['city'], '', $rlog['login'], 'Ваш реферал ' . $this->info['login'] . ' достиг' . $sex1 . ' уровня ' . $lvl['nextLevel'] . '! (Персонаж не активирован, либо у вас совпадают IP! Разрешено не более 1 такого реферала!)', -1, 6, 0, 0, 0, 1); } } } @@ -10407,19 +10451,19 @@ LIMIT 1')); } if ($ult == 1) { if ($this->info['level'] == 4 || $this->info['level'] == 8) { - //Убрать задержки РЅР° пещеры + //Убрать задержки на пещеры mysql_query('DELETE FROM `actions` WHERE `uid` = "' . $this->info['id'] . '" AND `vars` LIKE "psh%"'); - $this->send('', $this->info['room'], $this->info['city'], '', $this->info['login'], 'Обязательно используйте свитки Рё эликсиры РІ своем инвентаре!!!!!!!!!!!!!!!.', -1, 6, 0, 0, 0, 1); + $this->send('', $this->info['room'], $this->info['city'], '', $this->info['login'], 'Обязательно используйте свитки и эликсиры в своем инвентаре!!!!!!!!!!!!!!!.', -1, 6, 0, 0, 0, 1); } // - $this->send('', $this->info['room'], $this->info['city'], '', '', '' . $this->info['login'] . ' достиг' . $sex1 . ' СѓСЂРѕРІРЅСЏ ' . $this->info['level'] . '!', time(), 6, 0, 0, 0, 1, 2); // Наверно тут + $this->send('', $this->info['room'], $this->info['city'], '', '', '' . $this->info['login'] . ' достиг' . $sex1 . ' уровня ' . $this->info['level'] . '!', time(), 6, 0, 0, 0, 1, 2); // Наверно тут //} } //mysql_query('UNLOCK TABLES'); if ($rt > 0) { if ($this->info['level'] >= 11) { - //$this->info['stopexp'] = 1; //Блокировка опыта + //$this->info['stopexp'] = 1; //Блокировка опыта $this->info['stopexp'] = 0; } else { $this->info['stopexp'] = 0; @@ -10436,7 +10480,7 @@ LIMIT 1')); } /*------------*/ if ($this->info['animal'] > 0) { - //уровень зверя + //уровень зверя $a = mysql_fetch_array(mysql_query('SELECT `id`,`type`,`name`,`uid`,`delete`,`inBattle`,`eda`,`exp`,`obraz`,`stats`,`level`,`sex`,`levelUp`,`pet_in_cage`,`max_exp`,`priems`,`bonus` FROM `users_animal` WHERE `uid` = "' . $this->info['id'] . '" AND `id` = "' . $this->info['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); if (isset($a['id']) && $a['level'] < 12) { $ea = [ @@ -10472,14 +10516,14 @@ LIMIT 1')); $iz = 0; while ($iz != -1) { if ($ea[$a['level'] + 1] <= $a['exp']) { - //поднимаем уровень + //поднимаем уровень $a['level']++; $a['max_exp'] = $mx[$a['level']]; } else { if ($iz > 0) { $a['stats'] = mysql_fetch_array(mysql_query('SELECT `id`,`type`,`exp`,`level`,`stats`,`bonus` FROM `levels_animal` WHERE `type` = "' . $a['type'] . '" AND `level` = "' . $a['level'] . '" LIMIT 1')); $a['stats'] = $a['stats']['stats']; - $this->send('', $this->info['room'], $this->info['city'], '', $this->info['login'], '' . $a['name'] . ' достиг ' . $a['level'] . ' СѓСЂРѕРІРЅСЏ!', time(), 6, 0, 0, 0, 1); + $this->send('', $this->info['room'], $this->info['city'], '', $this->info['login'], '' . $a['name'] . ' достиг ' . $a['level'] . ' уровня!', time(), 6, 0, 0, 0, 1); mysql_query('UPDATE `users_animal` SET `stats` = "' . $a['stats'] . '",`level`="' . $a['level'] . '",`max_exp`="' . $a['max_exp'] . '" WHERE `id` = "' . $a['id'] . '" LIMIT 1'); } $iz = -2; @@ -10500,92 +10544,78 @@ LIMIT 1')); return $v; } + /** + * Эта функция сломана! Формулы hp и mp в любых условиях выдают числа около 1000 за раз, в результате + * любое восстановление - практически моментальное. 12.07.2022 Инс. + * @param $uid + * @param $st + * @param $i1 + * @return array|int[] + */ public function regen($uid, $st, $i1) { if ($uid != $this->info['id']) { - $u = mysql_fetch_array(mysql_query('SELECT `u`.`align`,`u`.`align2`,`u`.`clan`,`u`.`battle`,`u`.`animal`,`u`.`id`,`u`.`level`,`u`.`login`,`u`.`sex`,`u`.`design`,`u`.`autospell`,`u`.`noplaw`,`u`.`obraz`,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id`="' . mysql_real_escape_string($uid) . '" OR `u`.`login`="' . mysql_real_escape_string($uid) . '" LIMIT 1')); + $where = is_numeric($uid)? "`u`.`id` = $uid" : "`u`.`login` = $uid"; + $u = mysql_fetch_array(mysql_query('SELECT `u`.`battle`, `st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE ' . $where)); if (!isset($st['hpAll'])) { $st = $this->getStats($uid, $i1); } } else { $u = $this->info; - if (isset($this->stats['hpAll'])) { - $st = $this->stats; - } else { - $st = $this->getStats($uid, $i1); - } + $st = isset($this->stats['hpAll']) ? $this->stats : $this->getStats($uid, $i1); } - $btl = 0; - if ($u['battle'] == 0 || (isset($btl['id']) && $btl['time_start'] > $this->info['timereg'])) { - $sth = $u['minHP']; //Стандартное время восстановления РІ минутах HP - $stm = $u['minMP']; //Стандартное время восстановления РІ минутах MP - $sh = 0; //Скорость регенерации РќР  РІ 1 сек. - $sm = 0; //Скорость регенерации MР  РІ 1 сек. - /*---Двужильный(Особенность)---*/ - if (@$st['os9'] > 0) { - if (@$st['os9'] == 5) { - @$st['os9'] = 6; - } - $sth = floor($u['minHP'] - ($u['minHP'] / 100) * ($st['os9'] * 5)); - } - /*---Двужильный(Особенность)---*/ - /*---Здравомыслящий(Особенность)---*/ - if (@$st['os10'] > 0) { - $stm = floor($u['minMP'] - ($u['minMP'] / 100) * ($st['os10'] * 5)); - } - /*---Здравомыслящий(Особенность)---*/ - if ($u['battle'] > 0) { - $this->info['timereg'] = $btl['time_start']; - } - - //Тестеры первой волны - //тесты боев - $st['speedhp'] += 150; - $st['speedmp'] += 150; - - //hp - $sh = ($st['hpAll'] / (60 * $sth)); - if (!isset($st['speedhp'])) { - $st['speedhp'] = 0; - } - if ((0.0001 + $st['speedhp'] + $st['levels']['hpRegen']) < 0.00001) { - $sh += ($sh / 100) * 0.00001; - } else { - $sh += ($sh / 100) * (0.0001 + $st['speedhp'] + $st['levels']['hpRegen']); - } - $st['hpNow'] += $sh * (time() - $u['regHP']); - if ($st['hpNow'] < 0) { - $st['hpNow'] = 0; - } elseif ($st['hpNow'] > $st['hpAll']) { - $st['hpNow'] = $st['hpAll']; - } - //mp - $sm = ($st['mpAll'] / (60 * $stm)); - if (!isset($st['speedmp'])) { - $st['speedmp'] = 0; - } - $sm += ($sm / 100) * (1 + $st['speedmp'] + $st['levels']['mpRegen']); - $st['mpNow'] += $sm * (time() - $u['regMP']); - if ($st['mpNow'] < 0) { - $st['mpNow'] = 0; - } elseif ($st['mpNow'] > $st['mpAll']) { - $st['mpNow'] = $st['mpAll']; - } - //Заносим новые данные РІ базу - $upd = mysql_query('UPDATE `stats` SET `regHP`="' . time() . '",`regMP`="' . time() . '",`hpNow`="' . $st['hpNow'] . '",`mpNow`="' . $st['mpNow'] . '" WHERE `id` = "' . $u['id'] . '" LIMIT 1'); - if (!$upd) { - return [0 => 0, 1 => 0]; - } else { - if ($this->info['id'] == $u['id']) { - $this->stats['regHP'] = time(); - $this->stats['regMP'] = time(); - $this->stats['hpNow'] = $st['hpNow']; - $this->stats['mpNow'] = $st['mpNow']; - } - return [0 => $sh, 1 => $sm, 'hpNow' => $st['hpNow'], 'mpNow' => $st['mpNow']]; - } + if (!empty($u['battle'])) { + return [0, 0]; } + + $sth = $u['minHP']; //Стандартное время восстановления в минутах HP + $stm = $u['minMP']; //Стандартное время восстановления в минутах MP + $st['speedhp'] = $st['speedhp'] ?: 0; + $st['speedmp'] = $st['speedmp'] ?: 0; + #$sh = 0; //Скорость регенерации НР в 1 сек. + #$sm = 0; //Скорость регенерации MР в 1 сек. + + //Тестеры первой волны + //тесты боев + # А не эта ли херня делала очень быструю регенерацию, которую считают нормой? + $st['speedhp'] += 150; + $st['speedmp'] += 150; + + //hp + $sh = ($st['hpAll'] / (60 * $sth)); + $sh += ($sh / 100) * (1 + $st['speedhp'] + $st['levels']['hpRegen']); + $st['hpNow'] += $sh * (time() - $u['regHP']); + $st['hpNow'] = $st['hpNow'] > 0 ? min($st['hpNow'], $st['hpAll']) : 0; + + // После сведение получилось такое. Что ты такое? + //$sh = $st['hpAll'] * (101 + $st['speedhp'] + $st['levels']['hpRegen']) / (6000 * $u['minHP']) + + //mp + $sm = ($st['mpAll'] / (60 * $stm)); + $sm += ($sm / 100) * (1 + $st['speedmp'] + $st['levels']['mpRegen']); + $st['mpNow'] += $sm * (time() - $u['regMP']); + $st['mpNow'] = $st['mpNow'] > 0 ? min($st['mpNow'], $st['mpAll']) : 0; + + + //Заносим новые данные в базу + + if ($u['hpNow'] < $st['hpAll'] || $u['mpNow'] < $st['mpAll']) { + Db::sql('update stats set + regHP = unix_timestamp(), + regMP = unix_timestamp(), + hpNow = ?, + mpNow = ? + where id = ?', [$st['hpNow'], $st['mpNow'], $u['id']]); + } + + if ($this->info['id'] == $u['id']) { + $this->stats['regHP'] = time(); + $this->stats['regMP'] = time(); + $this->stats['hpNow'] = $st['hpNow']; + $this->stats['mpNow'] = $st['mpNow']; + } + return [$sh, $sm, 'hpNow' => $st['hpNow'], 'mpNow' => $st['mpNow']]; } public function set_cl_item($id, $user, $cl) @@ -10599,37 +10629,37 @@ LIMIT 1')); $po['toclan1'] = $po['toclan1'][0]; } if (isset($po['sudba']) && $po['sudba'] != '0') { - $r = 'Предмет связан СЃ вами СЃСѓРґСЊР±РѕР№
'; + $r = 'Предмет связан с вами судьбой
'; } elseif (isset($po['toclan']) && $po['toclan1'] != $user['clan']) { - $r = 'Предмет и так пренадлежит клану...
'; + $r = 'Предмет и так пренадлежит клану...
'; } elseif ($user['inTurnir'] > 0 || $user['inTurnirnew'] > 0) { - $r = 'Во время участия в турнире запрещено использовать клановое хранилище.
'; + $r = 'Во время участия в турнире запрещено использовать клановое хранилище.
'; } else { if ((isset($po['sudba']) && $po['sudba'] != '0') || isset($po['icos']) || isset($po['frompisher']) || isset($po['fromlaba']) || ($item_['gift'] != '' && $item_['gift'] != 0)) { - $r = 'РќРµ удалось'; + $r = 'Не удалось'; } elseif (!isset($po['toclan'])) { $po['toclan'] = $user['clan'] . '#' . $user['id']; $item_['data'] = $this->impStats($po); if (mysql_query('UPDATE `items_users` SET `lastUPD` = "' . time() . '", `uid` = "-21' . $user['clan'] . '", `data` = "' . $item_['data'] . '" WHERE `id` = "' . $id . '" LIMIT 1')) { - $r = 'Р’С‹ успешно пожертвовали предмет "' . $item_['name'] . '" клану
'; + $r = 'Вы успешно пожертвовали предмет "' . $item_['name'] . '" клану
'; $col = $this->itemsX(((int)$id)); - $this->addDelo(2, $user['id'], '"System.transfer.MONEY": Предмет "' . $item_['name'] . '" (#id : "' . $id . '") (x' . $col . ') был пожертвован клану "' . $res['name'] . '" (' . $res['id'] . ').', time(), $user['city'], 'System.transfer.clan', 0, 0); - mysql_query('INSERT INTO `clan_operations` (`clan`, `time`, `type`, `text`, `val`, `uid`) VALUES ("' . $res['id'] . '", "' . time() . '", "4", "' . $user['login'] . '", "' . $item_['name'] . ' (x' . $col . ') РРґ : [' . $id . ']", "' . $user['id'] . '")'); + $this->addDelo(2, $user['id'], '"System.transfer.MONEY": Предмет "' . $item_['name'] . '" (#id : "' . $id . '") (x' . $col . ') был пожертвован клану "' . $res['name'] . '" (' . $res['id'] . ').', time(), $user['city'], 'System.transfer.clan', 0, 0); + mysql_query('INSERT INTO `clan_operations` (`clan`, `time`, `type`, `text`, `val`, `uid`) VALUES ("' . $res['id'] . '", "' . time() . '", "4", "' . $user['login'] . '", "' . $item_['name'] . ' (x' . $col . ') Ид : [' . $id . ']", "' . $user['id'] . '")'); } else { - $r = 'РќРµ удалось...
'; + $r = 'Не удалось...
'; } } else { if (mysql_query('UPDATE `items_users` SET `lastUPD` = "' . time() . '", `uid` = "-21' . $user['clan'] . '" WHERE `id` = "' . $id . '" LIMIT 1')) { $col = $this->itemsX(((int)$id)); - mysql_query('INSERT INTO `clan_operations` (`clan`, `time`, `type`, `text`, `val`, `uid`) VALUES ("' . $res['id'] . '", "' . time() . '", "3", "' . $user['login'] . '", "' . $item_['name'] . '" (x' . $col . ') РРґ : [' . $id . '], "' . $user['id'] . '")'); - $r = 'Р’С‹ успешно вернули предмет "' . $item_['name'] . '" РІ хранилище клана
'; + mysql_query('INSERT INTO `clan_operations` (`clan`, `time`, `type`, `text`, `val`, `uid`) VALUES ("' . $res['id'] . '", "' . time() . '", "3", "' . $user['login'] . '", "' . $item_['name'] . '" (x' . $col . ') Ид : [' . $id . '], "' . $user['id'] . '")'); + $r = 'Вы успешно вернули предмет "' . $item_['name'] . '" в хранилище клана
'; } else { - $r = 'Не удалось...
'; + $r = 'Не удалось...
'; } } } } else { - $r = 'Предмет не найден.
'; + $r = 'Предмет не найден.
'; } return $r; } @@ -10641,7 +10671,7 @@ LIMIT 1')); $res = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $cl . '" LIMIT 1')); $user_itm = mysql_fetch_array(mysql_query('SELECT `id`,`bot`,`clone` FROM `stats` WHERE `id` = "' . $itm_['uid'] . '" LIMIT 1')); if ($user_itm['bot'] > 0 || $user_itm['clone'] > 0 || !isset($user_itm['id'])) { - $r = 'Вы не можете изьять данный предмет, он не принадлежит клану
'; + $r = 'Вы не можете изьять данный предмет, он не принадлежит клану
'; } elseif (isset($itm_['id'])) { if ($user['inTurnir'] == 0 && $user['inTurnirnew'] == 0) { if ($itm_['inOdet'] != 0) { @@ -10649,15 +10679,15 @@ LIMIT 1')); } else { $o = ''; } - $r = 'Вы успешно изъяли предмет "' . $itm_['name'] . '"
'; + $r = 'Вы успешно изъяли предмет "' . $itm_['name'] . '"
'; $col = $this->itemsX(((int)$id)); - mysql_query('INSERT INTO `clan_operations` (`clan`, `time`, `type`, `text`, `val`, `uid`) VALUES ("' . $res['id'] . '", "' . time() . '", "6", "' . $user['login'] . '", "' . $itm_['name'] . ' (x' . $col . ') РРґ : [' . $id . '] | РЈ персонажа : [' . $itm_['uid'] . ']", "' . $user['id'] . '")'); + mysql_query('INSERT INTO `clan_operations` (`clan`, `time`, `type`, `text`, `val`, `uid`) VALUES ("' . $res['id'] . '", "' . time() . '", "6", "' . $user['login'] . '", "' . $itm_['name'] . ' (x' . $col . ') Ид : [' . $id . '] | У персонажа : [' . $itm_['uid'] . ']", "' . $user['id'] . '")'); mysql_query('UPDATE `items_users` SET `lastUPD` = "' . time() . '", `uid` = "-21' . $res['id'] . '" ' . $o . ' WHERE `id` = "' . $id . '" LIMIT 1'); } else { - $r = 'Р’Рѕ время участия РІ турнире запрещено использовать клановое хранилище.
'; + $r = 'Во время участия в турнире запрещено использовать клановое хранилище.
'; } } else { - $r = 'Предмет не найден.
'; + $r = 'Предмет не найден.
'; } return $r; } @@ -10674,14 +10704,14 @@ LIMIT 1')); } if ($user['inTurnir'] == 0 && $user['inTurnirnew'] == 0) { $col = $this->itemsX(((int)$id)); - mysql_query('INSERT INTO `clan_operations` (`clan`, `time`, `type`, `text`, `val`, `uid`) VALUES ("' . $res['id'] . '", "' . time() . '", "5", "' . $user['login'] . '", "' . $itm_['name'] . ' (x' . $col . ') РРґ : [' . $id . '] РҐРѕР·СЏРёРЅ : [' . $cls . ']", "' . $user['id'] . '")'); + mysql_query('INSERT INTO `clan_operations` (`clan`, `time`, `type`, `text`, `val`, `uid`) VALUES ("' . $res['id'] . '", "' . time() . '", "5", "' . $user['login'] . '", "' . $itm_['name'] . ' (x' . $col . ') Ид : [' . $id . '] Хозяин : [' . $cls . ']", "' . $user['id'] . '")'); mysql_query('UPDATE `items_users` SET `lastUPD` = "' . time() . '", `uid` = "' . $user['id'] . '" WHERE `id` = "' . $id . '" LIMIT 1'); - $r = 'Р’С‹ успешно взяли предмет "' . $itm_['name'] . '" РёР· хранилища
'; + $r = 'Вы успешно взяли предмет "' . $itm_['name'] . '" из хранилища
'; } else { - $r = 'Во время участия в турнире запрещено использовать клановое хранилище.
'; + $r = 'Во время участия в турнире запрещено использовать клановое хранилище.
'; } } else { - $r = 'Предмет не найден.
' . $id; + $r = 'Предмет не найден.
' . $id; } return $r; } @@ -10706,12 +10736,12 @@ LIMIT 1')); $col = $this->itemsX(((int)$pl['id'])); $it_n = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $pl['item_id'] . '"')); mysql_query('UPDATE `items_users` SET `lastUPD` = "' . time() . '", `uid` = "' . $user['id'] . '", `data` = "' . $pl['data'] . '" WHERE `id` = "' . $pl['id'] . '"'); - mysql_query('INSERT INTO `clan_operations` (`clan`, `time`, `type`, `text`, `val`, `uid`) VALUES ("' . $res['id'] . '", "' . time() . '", "' . $type . '", "' . $user['login'] . '", "' . $it_n['name'] . ' (x' . $col . ') РРґ : [' . $pl['id'] . ']", "' . $user['id'] . '")'); + mysql_query('INSERT INTO `clan_operations` (`clan`, `time`, `type`, `text`, `val`, `uid`) VALUES ("' . $res['id'] . '", "' . time() . '", "' . $type . '", "' . $user['login'] . '", "' . $it_n['name'] . ' (x' . $col . ') Ид : [' . $pl['id'] . ']", "' . $user['id'] . '")'); } elseif ($cls != $user['id'] && $pl['uid'] == $user['id']) { $col = $this->itemsX(((int)$pl['id'])); $it_n = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $pl['item_id'] . '"')); mysql_query('UPDATE `items_users` SET `lastUPD` = "' . time() . '", `uid` = "-21' . $user['clan'] . '" WHERE `id` = "' . $pl['id'] . '"'); - mysql_query('INSERT INTO `clan_operations` (`clan`, `time`, `type`, `text`, `val`, `uid`) VALUES ("' . $res['id'] . '", "' . time() . '", "9", "' . $user['login'] . '", "' . $it_n['name'] . ' (x' . $col . ') РРґ : [' . $pl['id'] . ']", "' . $user['id'] . '")'); + mysql_query('INSERT INTO `clan_operations` (`clan`, `time`, `type`, `text`, `val`, `uid`) VALUES ("' . $res['id'] . '", "' . time() . '", "9", "' . $user['login'] . '", "' . $it_n['name'] . ' (x' . $col . ') Ид : [' . $pl['id'] . ']", "' . $user['id'] . '")'); } } } diff --git a/_incl_data/class/_cron_.php b/_incl_data/class/_cron_.php index cea8de55..f8915537 100644 --- a/_incl_data/class/_cron_.php +++ b/_incl_data/class/_cron_.php @@ -1,123 +1,198 @@ -users[]['eff'] после использования, в противном случаи некотрые приемы используются через 1 ход */ class priems -{ +{ + private $btl; + private $u; + const FIRE = 'fire'; + const WATER = 'water'; + const AIR = 'air'; + const EARTH = 'earth'; + private $mname = [ + 'огонь' => 1, + 'воздух' => 2, + 'вода' => 3, + 'земля' => 4, + 'свет' => 5, + 'тьма' => 6, + 'серая' => 7 + ]; + public $ue = []; + private $logColor = [ + 'crit' => '#f00', + 'miss' => '#888', + self::FIRE => '#a00', + self::WATER => '#00a', + self::EARTH => '#0a0', + self::AIR => '#0af', + ]; - public function mg2static_points($uid,$st) { - global $u; - if(isset($st['mg2static_points'])) { - $mg = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$uid.'" AND `data` LIKE "%add_mg2static_points%" AND `delete` = "0" ORDER BY `id` DESC LIMIT 1')); - if(isset($mg['id'])) { - $mg['data'] = $u->lookStats($mg['data']); - $mg['data']['add_mg2static_points']++; - $mg['data']['add_zm2proc']--; - $mg['x'] = $mg['data']['add_mg2static_points']; - $mg['data'] = $u->impStats($mg['data']); - mysql_query('UPDATE `eff_users` SET `data` = "'.$mg['data'].'",`x` = "'.$mg['x'].'" WHERE `id` = "'.$mg['id'].'" LIMIT 1'); - } - } - } + public function __construct() + { + global $btl; + $this->btl = $btl; + $this->u = user::start(); + } - //отнимаем ману - public function minMana($uid,$mp,$tp=NULL) - { - global $u,$btl; - $r = true; - /* уменьшаем расход маны, если $mp > 0 */ - //с вычетом уменьшения разсхода маныss - $mp -= round($mp/100*$btl->stats[$btl->uids[$uid]]['min_use_mp']); - $btl->stats[$btl->uids[$uid]]['mpNow'] -= $mp; - if($btl->stats[$btl->uids[$uid]]['mpNow']<0) - { - $btl->stats[$btl->uids[$uid]]['mpNow'] = 0; - $r = false; - }elseif($btl->stats[$btl->uids[$uid]]['mpNow']>$btl->stats[$btl->uids[$uid]]['mpAll']) - { - $btl->stats[$btl->uids[$uid]]['mpNow'] = $btl->stats[$btl->uids[$uid]]['mpAll']; - } - - mysql_query('UPDATE `stats` SET `mpNow` = "'.($btl->stats[$btl->uids[$uid]]['mpNow']).'" WHERE `id` = "'.((int)$uid).'" LIMIT 1'); - return $r; - } - - //используем прием каждый ход - public function hodUsePriem($eff,$pr) - { - global $u,$btl,$c,$code; - $return_main = true; - $ue = mysql_fetch_assoc(mysql_query('SELECT - - `u`.`id`,`u`.`login`,`u`.`login2`,`u`.`online`,`u`.`admin`,`u`.`city`,`u`.`cityreg`,`u`.`align`,`u`.`clan`, - `u`.`level`,`u`.`money`,`u`.`money3`,`u`.`money4`,`u`.`battle`,`u`.`sex`,`u`.`obraz`,`u`.`win`,`u`.`win_t`, - `u`.`lose`,`u`.`lose_t`,`u`.`nich`,`u`.`timeMain`,`u`.`invis`,`u`.`bot_id`,`u`.`animal`,`u`.`type_pers`, - `u`.`notrhod`,`u`.`bot_room`,`u`.`inUser`,`u`.`inTurnir`,`u`.`inTurnirnew`,`u`.`activ`,`u`.`stopexp`,`u`.`real`, - - `st`.* - - FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id`=`st`.`id`) WHERE `u`.`id`="'.$eff['uid'].'" AND `u`.`battle`="'.$btl->info['id'].'" AND `st`.`hpNow` > 0 LIMIT 1')); - if($pr['file']!='0') - { - if(file_exists('../../_incl_data/class/priems/'.$pr['file'].'.php')) - { - $hod = $eff['hod']; - require('priems/'.$pr['file'].'.php'); - } - if(!isset($cup)) - { - //отнимаем тактики от приема - //$this->mintr($pl); - } - }elseif($pr['file3']!='0') - { - if(file_exists('../../_incl_data/class/priems/'.$pr['file3'].'.php')) - { - $hod = $eff['hod']; - require('priems/'.$pr['file3'].'.php'); - } - if(!isset($cup)) - { - //отнимаем тактики от приема - //$this->mintr($pl); - } - }else{ - //какие-то другие эффекты - - } - return $return_main; - } - - public function redate($pl,$uid) - { - global $u,$btl; - $i = 0; - if($pl!='') - { - $e = explode('|',$pl); - while($i'lvl1',1=>'ts5',2=>'mpAll'),array(0=>$btl->users[$btl->uids[$uid]]['level'],1=>$btl->stats[$btl->uids[$uid]]['s5'],2=>$btl->stats[$btl->uids[$uid]]['mpAll'])); - if($f[0]!='' && $f[1]!='') - { - $e[$i] = implode('=',$f); - } - $i++; - } - $pl = implode('|',$e); - } - return $pl; - } - - /* uid - на кого кастуем + /** Набив Статики + * @param int $uid если 0, будет использоваться id противника напротив. + * @return void + */ + public function addAirStaticPoints($uid = 0) + { + if ($uid == 0) { + $uid = $this->ue['id']; + } + $x = Db::getValue('select x from eff_users where uid = ? and `delete` = 0 and v2 = 260 and user_use = ? order by id desc limit 1', + [$uid, $this->u->info['id']]); + if (empty($x) || $x >= 5) { + return; + } + $x++; + $data['add_mg2static_points'] = $x; + $data = $this->impStats($data); + Db::sql('update eff_users set x = ?, data = ? where uid = ? and `delete` = 0 and v2 = 260 and user_use = ?', + [$x, $data, $uid, $this->u->info['id']]); + } + + /** отнимаем ману + * @param $uid + * @param $mp + * @param $tp [not used] + * @return bool + */ + public function minMana($uid, $mp, $tp = null) + { + global $btl; + /* уменьшаем расход маны, если $mp > 0 */ + //с вычетом уменьшения разсхода маныss + $mp -= round($mp / 100 * $btl->stats[$btl->uids[$uid]]['min_use_mp']); + $btl->stats[$btl->uids[$uid]]['mpNow'] -= $mp; + $mpNow = $this->zeromax($btl->stats[$btl->uids[$uid]]['mpNow'], $btl->stats[$btl->uids[$uid]]['mpAll']); + if ($mpNow > 0) { + Db::sql('update stats set mpNow = ? where id = ?', + [$btl->stats[$btl->uids[$uid]]['mpNow'], $uid]); + } + return $mpNow > 0; + } + + /** Какой-то нестандартный частный расчет маг.крита + * @param $l2 + * @param $t + * @return int + */ + public function magKrit($l2, $t) + { + $r = $l2 * 2 - 7; + if ($r > $t) { + //магический промах (серый удар, в 2 раза меньше) 6% + //250 ед. защиты от магии дает 1% шанса увернуться от магии + //$r = -1; , промах -- + $r = 0; + } else { + //каждая владелка дает 3% шанс крита + $r = ceil($t * 0.75); + if ($r > 30) { + $r = 30; + } + if (rand(0, 10000) < $r * 100) { + //крит удар + $r = 1; + } else { + $r = 0; + } + } + return $r; + } + + /** используем прием каждый ход + * @param $eff + * @param $pr + * @return bool + */ + public function hodUsePriem($eff, $pr) + { + global $btl; + $return_main = true; + $ue = Db::getRow('select * from users left join stats on (users.id = stats.id) where users.id = ? and battle = ? and hpNow > 0', + [$eff['uid'], $btl->info['id']]); + + if (!empty($pr['file'])) { + if (file_exists('../../_incl_data/class/priems/' . $pr['file'] . '.php')) { + $hod = $eff['hod']; + require_once 'priems/' . $pr['file'] . '.php'; + } + } elseif (!empty($pr['file3'])) { + if (file_exists('../../_incl_data/class/priems/' . $pr['file3'] . '.php')) { + $hod = $eff['hod']; + require_once 'priems/' . $pr['file3'] . '.php'; + } + } + return $return_main; + } + + /** Получает строку data c шаблонной записью типа add_m11=2*{lvl1} и конвертирует в реальную строку. + *
Шаблон:
lvl1 = $uid[level]
ts5 = $uid[s5]
mpAll = $uid[mpAll] + * @param string $pl строка в формате data + * @param int $uid пользователь, параметры которого используются для подставки в шаблон. + * @return string строка в формате data с развёрнутыми шаблонами. + */ + public function redate($pl, $uid) + { + global $btl; + $i = 0; + if ($pl != '') { + $e = explode('|', $pl); + while ($i < count($e)) { + $f = explode('=', $e[$i]); + $f[1] = getdr($f[1], [0 => 'lvl1', 1 => 'ts5', 2 => 'mpAll'], [ + 0 => $btl->users[$btl->uids[$uid]]['level'], + 1 => $btl->stats[$btl->uids[$uid]]['s5'], + 2 => $btl->stats[$btl->uids[$uid]]['mpAll'], + ]); + if ($f[0] != '' && $f[1] != '') { + $e[$i] = implode('=', $f); + } + $i++; + } + $pl = implode('|', $e); + } + return $pl; + } + + private function cancelEffects($effects_ids, $uid, battleClass $btl) + { + $arr = explode(',', $effects_ids); + if (!is_array($arr) || empty($arr)) { + return; + } + foreach ($arr as $eid) { + if ($eid <= 0) { + continue; + } + $p = Db::getRow('select * from eff_users where uid = ? and v1 = ? and v2 = ? and `delete` = 0', [$uid, 'priem', $eid]); + if (!$p['id']) { + continue; + } + $p['priem'] = Db::getRow('select * from priems where id = ?', [$eid]); + $btl->delPriem($p, $btl->users[$btl->uids[$uid]], 2); + } + } + + /* uid - на кого кастуем pr - id приема data - дата, если -1, то добавляем дату3 d2 - добавляем дату3 @@ -126,1146 +201,1081 @@ class priems uu - id юзера который использовал tp - тип приема */ - public function addPriem($uid,$pr,$data,$d2,$tm,$h,$uu,$max,$bj,$tp = 0,$ch = 0,$rdt = 0,$tr_life_user = 0,$noupdatebtl = 0,$noplus = 0,$pname = NULL) - { - global $u,$btl; - $pl = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "'.((int)$pr).'" LIMIT 1')); - if($uid=='3'){ - //print_r($pl); - } - $r = false; - if(isset($pl['id'])) - { - if($data==-1) - { - $data = $this->redate($pl['date3'],$u->info['id']); - }elseif($d2==1) - { - $data .= '|'.$this->redate($pl['date3'],$u->info['id']); - } + /** + * @param int $uid на кого кастуем + * @param int $pr id приема + * @param int|string $data дата, если -1, то добавляем дату3 + * @param int $d2 + * @param $tm + * @param int $h ход + * @param int $uu id юзера который использовал + * @param $max + * @param $bj + * @param $tp + * @param $ch + * @param $rdt + * @param $tr_life_user + * @param $noupdatebtl + * @param $noplus + * @param $pname + * @return bool + */ + public function addPriem( + $uid, + $pr, + $data, + $d2, + $tm, + $h, + $uu, + $max, + $bj, + $tp = 0, + $ch = 0, + $rdt = 0, + $tr_life_user = 0, + $noupdatebtl = 0, + $noplus = 0, + $pname = null + ) { + global $btl; + //$pl = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = ' . (int)$pr)); + $pl = Db::getRow('select * from priems where id = ?', [$pr]); - if($pl['cancel_eff2']!='') - { - $i = 0; - $e = explode(',',$pl['cancel_eff2']); - while($i0) - { - $nem = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$uid.'" AND `v1` = "priem" AND `v2` = "'.$e[$i].'" AND `delete` = "0" LIMIT 1')); - if(isset($nem['id'])) - { - $nem['priem'] = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "'.$e[$i].'" LIMIT 1')); - if(isset($nem['id'])) - { - $btl->delPriem($nem,$btl->users[$btl->uids[$uid]],2); - } - } - } - $i++; - } - } - if($max>0) - { - if( $noplus == 0 ) { - if($pl['zmu'] == 1) { - $num = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `bj` = "'.$bj.'" AND `user_use` = "'.$u->info['id'].'" AND `uid` = "'.$uid.'" AND `delete` = "0" LIMIT 1')); - }else{ - $num = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `bj` = "'.$bj.'" AND `uid` = "'.$uid.'" AND `delete` = "0" LIMIT 1')); - } - } - - if(isset($num['id']) && ($num['user_use']!=$u->info['id'] && $pl['zmu'] != 2)) - { - // удаляем эффект - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$num['id'].'" LIMIT 1'); - if(isset($num['id'])) - { - $i = 0; - while($istats[$btl->uids[$uid]]['effects'])) - { - if($btl->stats[$btl->uids[$uid]]['effects'][$i]['id']==$num['id']) - { - //обновляем - $btl->stats[$btl->uids[$uid]]['effects'][$i]['delete'] = time(); - } - $i++; - } - } - unset($num); - } - - if(!isset($num['id'])) - { - if (isset($pname)) - { - $ins = mysql_query('INSERT INTO `eff_users` (`tr_life_user`,`bj`,`user_use`,`hod`,`v2`,`img2`,`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`v1`) VALUES ("'.floor($tr_life_user).'","'.$bj.'","'.$uu.'","'.$h.'",'.$pl['id'].',"'.$pl['img'].'.gif",22,"'.$uid.'","'.$pname.'","'.$data.'","0","'.$tm.'","priem")'); - } - else - { - $ins = mysql_query('INSERT INTO `eff_users` (`tr_life_user`,`bj`,`user_use`,`hod`,`v2`,`img2`,`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`v1`) VALUES ("'.floor($tr_life_user).'","'.$bj.'","'.$uu.'","'.$h.'",'.$pl['id'].',"'.$pl['img'].'.gif",22,"'.$uid.'","'.$pl['name'].'","'.$data.'","0","'.$tm.'","priem")'); - } - - if($ins) - { - $r = true; - $lid = mysql_insert_id(); - } - /* добавляем данные к $btl->eff */ - if( $noupdatebtl == 0 ) { - $btl->stats[$btl->uids[$uid]] = $u->getStats($uid,0); - } - - }elseif($num['x']<$max) - { - //Добавляем еще и обновляем заряды - $num['x']++; $num['hod'] = $h; - if( $data != -1 && $data != '' && $d2 == 2 ) { - $num['data'] .= '|'.$data.''; - $upd = mysql_query('UPDATE `eff_users` SET `x` = `x` + 1,`hod` = "'.$h.'",`data` = "'.$num['data'].'" WHERE `id` = "'.$num['id'].'" LIMIT 1'); - }else{ - $upd = mysql_query('UPDATE `eff_users` SET `x` = `x` + 1,`hod` = "'.$h.'" WHERE `id` = "'.$num['id'].'" LIMIT 1'); - } - if($upd) - { - $r = true; - } - }else{ - //обновляем заряды - $num['hod'] = $h; - if( $data != -1 && $data != '' && $d2 == 2 ) { - $num['data'] .= '|'.$data.''; - $upd = mysql_query('UPDATE `eff_users` SET `hod` = "'.$h.'",`data` = "'.$num['data'].'" WHERE `id` = "'.$num['id'].'" LIMIT 1'); - }else{ - $upd = mysql_query('UPDATE `eff_users` SET `hod` = "'.$h.'" WHERE `id` = "'.$num['id'].'" LIMIT 1'); - } if($upd) - { - $r = true; - } - } - - if($r==true) - { - //cancel_eff был здесь - if($pl['cancel_eff']!='') - { - $i = 0; - $e = explode(',',$pl['cancel_eff']); - while($i0) - { - $nem = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$uid.'" AND `v1` = "priem" AND `v2` = "'.$e[$i].'" AND `delete` = "0" LIMIT 1')); - if(isset($nem['id'])) - { - $nem['priem'] = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "'.$e[$i].'" LIMIT 1')); - if(isset($nem['id'])) - { - $btl->delPriem($nem,$btl->users[$btl->uids[$uid]],2); - } - } - } - $i++; - } - } - } - - /*if($ch==1) - { - $vLog = 'time1='.time().'||s1='.$u->info['sex'].'||t1='.$u->info['team'].'||login1='.$u->info['login'].'||s2='.$btl->users[$btl->uids[$uid]]['sex'].'||t2='.$btl->users[$btl->uids[$uid]]['team'].'||login2='.$btl->users[$btl->uids[$uid]]['login'].''; - $mas1 = array('time'=>time(),'battle'=>$btl->info['id'],'id_hod'=>($btl->hodID+1),'text'=>'','vars'=>$vLog,'zona1'=>'','zonb1'=>'','zona2'=>'','zonb2'=>'','type'=>'1'); - if($tp > 0) { - $tco = array(1=>'006699',2=>'006699',3=>'006699',4=>'006699'); //не крит - $tcl = array(1=>'A00000',2=>'008080',3=>'0000FF',4=>'A52A2A'); //не крит - $tco = $tco[$tp]; - $tcl = $tcl[$tp]; - $nmz = array( - 0=>array(0=>'хаоса',1=>'хаос'), - 1=>array(0=>'огня',1=>'огненный'), - 2=>array(0=>'воздуха',1=>'электрический'), - 3=>array(0=>'воды',1=>'холод'), - 4=>array(0=>'земли',1=>'земляной'), - 5=>array(0=>'Света',1=>'свет'), - 6=>array(0=>'Тьмы',1=>'тьма'), - 7=>array(0=>'нейтралитета',1=>'серая магия') - ); - $nmz = $nmz[$tp]; - $mas1['text'] = '{tm1} {u1} {1x16x0} заклинание магии '.$nmz[0].' "'.$pl['name'].'"'; - }else{ - //$mas1['text'] = '{tm1} {u1} {1x16x0} прием "'.$pl['name'].'"'; - //$btl->priemAddLogFast($u->info['id'],0,$pl['name'],'{tm1} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL).'',0,time()); - } - if($u->info['id']!=$uid) - { - $mas1['text'] .= ' на персонажа {u2}.'; - }else{ - $mas1['text'] .= '.'; - } - $btl->add_log($mas1); - }*/ - - if(isset($num['id'])) - { - $i = 0; - while($istats[$btl->uids[$uid]]['effects'])) - { - if($btl->stats[$btl->uids[$uid]]['effects'][$i]['id']==$num['id']) - { - //обновляемss - $btl->stats[$btl->uids[$uid]]['effects'][$i]['data'] = $num['data']; - $btl->stats[$btl->uids[$uid]]['effects'][$i]['hod'] = $num['hod']; - $btl->stats[$btl->uids[$uid]]['effects'][$i]['x'] = $num['x']; - } - $i++; - } - } - } - } - return $r; - } - - public function lookStatsArray($m) - { - $ist = array(); - $di = explode('|',$m); - $i = 0; $de = false; - while($iinfo['id']; - } - $k = $btl->magKrit($ue['level'],$btl->stats[$btl->uids[$usu]]['mg'.$tmp]); - - if($krituet==false){$k=0;} - - $hpmin = $this->testPower($btl->stats[$btl->uids[$usu]],$btl->stats[$btl->uids[$uen]],$hpmin,$tmp,2); - $hpmin = round($hpmin); - - $dopyrn = $this->testPower($btl->stats[$btl->uids[$usu]],$btl->stats[$btl->uids[$uen]],$dopyrn,$tmp,2); - $dopyrn = round($dopyrn); - - if($btl->users[$btl->uids[$uen]]['tactic7']<=0 && $dp==0) - { - $hpmin = 0; $k = -1; - $dopyrn = 0; - } - if($k==1 && $hpmin!=0 && $krituet==true) - { - //крит - $hpmin = $hpmin*2; - }elseif($k==-1 && $hpmin!=0) - { - //промах - $hpmin = $hpmin/2; - $dopyrn = $dopyrn/2; - } - if($hpmin<1){ $hpmin = 0; }else{ - $hpmin = rand(($hpmin*0.97),$hpmin); - } - - $hpmin += floor($dopyrn); - - if(isset($btl->stats[$btl->uids[$uen]]['min_heal_proc'])) { - if($btl->stats[$btl->uids[$uen]]['min_heal_proc'] > 100) { - $btl->stats[$btl->uids[$uen]]['min_heal_proc'] = 100; - } - $hpmin = round($hpmin/100*(100+$btl->stats[$btl->uids[$uen]]['min_heal_proc'])); - } - - if($btl->users[$btl->uids[$uen]]['tactic7']>0 && $dp==0) - { - //Отнимаем тактики, если это возможно - $btl->users[$btl->uids[$uen]]['tactic7'] -= $hpmin/$btl->stats[$btl->uids[$uen]]['hpAll']; - $btl->users[$btl->uids[$uen]]['tactic7'] = round($btl->users[$btl->uids[$uen]]['tactic7'],2); - $btl->stats[$btl->uids[$uen]]['tactic7'] = $btl->users[$btl->uids[$uen]]['tactic7']; - if($uen==$u->info['id']) - { - $u->info['tactic7'] = $btl->users[$btl->uids[$uen]]['tactic7']; - $u->stats['tactic7'] = $btl->users[$btl->uids[$uen]]['tactic7']; - } - if($btl->users[$btl->uids[$uen]]['tactic7']<0) - { - $btl->users[$btl->uids[$uen]]['tactic7'] = 0; - } - } - $hp2 = floor($btl->stats[$btl->uids[$uen]]['hpNow'] + $hpmin); - - if($hp2 > $btl->stats[$btl->uids[$uen]]['hpAll']) - { - $hpmin = floor($hp2-$btl->stats[$btl->uids[$uen]]['hpAll']); - $hp2 = $btl->stats[$btl->uids[$uen]]['hpAll']; - }elseif($hp2<0) - { - $hp2 = 0; - } - $rr[0] = $hpmin; //урон - $rr[1] = $k; //тип - /* проверяем приемы защиты */ - //получаем массив с приемами противника - $miny = 0; //на сколько едениц урон буде меньше (защита приема) - $minu = 0; - $sp1 = mysql_query('SELECT `e`.* FROM `eff_users` AS `e` WHERE `e`.`uid` = "'.$uen.'" AND `e`.`id_eff` = "22" AND `e`.`delete` = "0" AND `e`.`v1` = "priem" LIMIT 25'); - while($pl2 = mysql_fetch_assoc($sp1)) - { - $pl2['priem'] = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "'.$pl2['v2'].'" LIMIT 1')); - if(isset($pl2['priem']['id'])) - { - $dt1 = $u->lookStats($pl2['priem']['date2']); - if(isset($dt1['yron_u2'])) - { - $minu = getdr($dt1['yron_u2'],array(0=>'lvl1',1=>'yr1',2=>'ts5',3=>'ts6'),array(0=>$btl->users[$btl->uids[$level]],1=>$hpmin,2=>0,3=>0)); - $miny -= $minu; - $hpmin += $minu; - $btl->delPriem($pl2,$btl->users[$btl->uids[$uen]]); - } - } - - } - - /* проверяем приемы ослабления */ - - //отнимаем НР - $btl->users[$btl->uids[$uen]]['hpNow'] = $hp2; - $btl->stats[$btl->uids[$uen]]['hpNow'] = $hp2; - $upd = mysql_query('UPDATE `stats` SET `hpNow` = '.$hp2.',`tactic7` = '.$btl->users[$btl->uids[$uen]]['tactic7'].' WHERE `id` = "'.$uen.'" LIMIT 1'); - - //заносим в лог боя - $vLog = 'time1='.time().'||s1='.$u->info['sex'].'||t1='.$u->info['team'].'||login1='.$u->info['login'].'||s2='.$btl->users[$btl->uids[$uen]]['sex'].'||t2='.$btl->users[$btl->uids[$uen]]['team'].'||login2='.$btl->users[$btl->uids[$uen]]['login'].''; - $mas1 = array('time'=>time(),'battle'=>$btl->info['id'],'id_hod'=>($btl->hodID+1),'text'=>'','vars'=>$vLog,'zona1'=>'','zonb1'=>'','zona2'=>'','zonb2'=>'','type'=>'1'); - if($rp==1) - { - $mas1['id_hod']--; - } - //$btl->takeExp($u->info['id'],$hpmin,$u->info['id'],$uen); - - $btl->takeExp($u->info['id'],($hpmin*0.33),$u->info['id'],$uen,true); - - if($hpmin>0) - { - $hpmin = '+'.ceil($hpmin); - }else{ - $hpmin = '--'; - } - $tco = array(1=>'006699',2=>'006699',3=>'006699',4=>'006699'); //не крит - $tcl = array(1=>'A00000',2=>'008080',3=>'0000FF',4=>'A52A2A'); //не крит - $tco = $tco[$tmp]; - $tcl = $tcl[$tmp]; - if($k==1) - { - //крит - $tco = 'FF0000'; - $tcl = 'FF0000'; - }elseif($k==-1) - { - //промах - $tco = '979797'; - $tcl = '979797'; - } - $nmz = array( - 1=>array(0=>'огня',1=>'огненная'), - 2=>array(0=>'воздуха',1=>'электрическая'), - 3=>array(0=>'воды',1=>'водная'), - 4=>array(0=>'земли',1=>'земляная') - ); - $nmz = $nmz[$tmp]; - - if($rp==1) - { - if($k==0) - { - //$tcl = '000000'; - //$tco = '008000'; - } - $sx = array(0=>'',1=>'а'); - $mas1['text'] = '{tm1} Заклинание "'.$pl['name'].'" восстановило здоровье персонажа {u2}. '.$hpmin.' ['.ceil($hp2).'/'.$btl->stats[$btl->uids[$uen]]['hpAll'].']'; - }else{ - $mas1['text'] = '{tm1} {u1} {1x16x0} заклинание "'.$pl['name'].'" и восстановил здоровье персонажа {u2} магией '.$nmz[0].'. '.$hpmin.' ['.ceil($hp2).'/'.$btl->stats[$btl->uids[$uen]]['hpAll'].']'; - } - $btl->add_log($mas1); - $pz[(int)$id] = 1; - return $rr; - } + if (!$pl['id']) { + return false; + } - public $cof_mag = array( - 0 => 250, - 1 => 250, - 2 => 250, - 3 => 250, - 4 => 250, - 5 => 250, - 6 => 250, - 7 => 250, - 8 => 250, - 9 => 300, - 10 => 360, - 11 => 475, - 12 => 520, - 13 => 625, - 14 => 750, - 15 => 895, - 16 => 1075, - 17 => 1290, - 18 => 1550, - 19 => 1860, - 20 => 2230, - 21 => 2675 - ); - public function magatack( $u1, $u2, $yron, $type, $krit ) { - global $btl; - $r = $yron; - // - $prm = array( - 'y' => $btl->stats[$btl->uids[$u1]]['mg'.$btl->mname[$type]], //умелки - 'yv' => 0, //умения, значение коф. - 'max_krit' => 0 //вероятность крита - ); - // - // (уровень цени)*2 - 7 - минимальное умелок, чтобы не было промахов - /* - Для магии Света/Тьмы по формуле: Уровень Цели * 2 – 9 + if ($data == -1) { + $data = $this->redate($pl['date3'], $this->u->info['id']); + } elseif ($d2 == 1) { + $data .= '|' . $this->redate($pl['date3'], $this->u->info['id']); + } + + $this->cancelEffects($pl['cancel_eff2'], $uid, $btl); + + if ($max <= 0) { + return false; + } + + if ($noplus == 0) { + if ($pl['zmu'] == 1) { + $num = Db::getRow('select * from eff_users where bj = ? and user_use = ? and uid = ? and `delete` = 0', + [$bj, $this->u->info['id'], $uid]); + } else { + $num = Db::getRow('select * from eff_users where bj = ? and uid = ? and `delete` = 0', + [$bj, $uid]); + } + } + + if (isset($num['id']) && ($num['user_use'] != $this->u->info['id'] && $pl['zmu'] != 2)) { + // удаляем эффект + Db::sql('update eff_users set `delete` = unix_timestamp() where id = ?', + [$num['id']]); + $i = 0; + while ($i < count($btl->stats[$btl->uids[$uid]]['effects'])) { + if ($btl->stats[$btl->uids[$uid]]['effects'][$i]['id'] == $num['id']) { + //обновляем + $btl->stats[$btl->uids[$uid]]['effects'][$i]['delete'] = time(); + } + $i++; + } + unset($num); + } + if (!isset($num['id'])) { + $q = 'insert into eff_users (tr_life_user, bj, user_use, hod, v2, img2, id_eff, uid, name, data, overType, timeUse, v1) values (?,?,?,?,?,?,?,?,?,?,?,?,?)'; + $image = !empty($pl['img']) ? $pl['img'] : $pl['id']; + $name = !empty($pname) ? $pname : $pl['name']; + $image .= '.gif'; + Db::sql($q, [floor($tr_life_user), $bj, $uu, $h, $pl['id'], $image, 22, $uid, $name, $data, 0, $tm, 'priem']); + $lid = Db::lastInsertId(); + if ($lid) { + $r = true; + } + + /* добавляем данные к $btl->eff */ + if ($noupdatebtl == 0) { + $btl->stats[$btl->uids[$uid]] = $this->u->getStats($uid, 0); + } + } elseif ($num['x'] < $max) { + //Добавляем еще и обновляем заряды + $num['x']++; + $num['hod'] = $h; + if ($data != -1 && $data != '' && $d2 == 2) { + $num['data'] .= '|' . $data; + Db::sql('update eff_users set x = x + 1, hod = ?, data = ? where id = ?', + [$h, $num['data'], $num['id']]); + } else { + Db::sql('update eff_users set x = x + 1, hod = ? where id = ?', + [$h, $num['id']]); + } + $r = true; + } else { + //обновляем заряды + $num['hod'] = $h; + if ($data != -1 && $data != '' && $d2 == 2) { + $num['data'] .= '|' . $data; + Db::sql("update eff_users set hod = ?, data = ? where id = ?", [$h, $num['data'], $num['id']]); + } else { + Db::sql('update eff_users set hod = ? where id = ?', + [$h, $num['id']]); + } + $r = true; + } + + if (isset($num['id'])) { + foreach ($btl->stats[$btl->uids[$uid]]['effects'] as $effect) { + if ($effect['id'] != $num['id']) { + continue; + } + $effect['data'] = $num['data']; + $effect['hod'] = $num['hod']; + $effect['x'] = $num['x']; + } + } + + return $r; + } + + /** Превращает строку data ('|a=1|b=2|c=3') из БД в массив [a=>1, b=>2, c=>3]. + * @param $m + * @return array + */ + public function lookStatsArray($m) + { + $arr = json_decode(str_replace(['=', '|'], ['":', ',"'], '{"' . $m . '}'), true); + return $arr ?: []; + } + + /** Превращает массив [a=>1, b=>2, c=>3] в строку data ('|a=1|b=2|c=3') для БД. + * @param array $m + * @return string + */ + private function impStats(array $m) + { + $str = json_encode($m); + return $str ? str_replace(['":', ',"', '{"', '}'], ['=', '|'], $str) : ''; + } + + /** + * @param $data + * @param array $values + * @return string + */ + private function changeStatsData($data, array $values) + { + $arr = $this->lookStatsArray($data); + foreach ($values as $key => $value) { + $arr[$key] = $value; + } + return $this->impStats($arr); + } + + public function magicRegen($ue, $hpmin, $tmp, $pl, $eff, $rp = 0, $dp = 0, $krituet = true, $dopyrn = 0) + { + global $btl; + $rr = []; + $uen = $ue['id']; + $usu = $eff['user_use']; + if ($eff['user_use'] < 1) { + $usu = $this->u->info['id']; + } + $k = $this->magKrit($ue['level'], $btl->stats[$btl->uids[$usu]]['mg' . $tmp]); + + if (!$krituet) { + $k = 0; + } + + $hpmin = $this->testPower($btl->stats[$btl->uids[$usu]], $btl->stats[$btl->uids[$uen]], $hpmin, $tmp, 2); + $hpmin = round($hpmin); + + $dopyrn = $this->testPower($btl->stats[$btl->uids[$usu]], $btl->stats[$btl->uids[$uen]], $dopyrn, $tmp, 2); + $dopyrn = round($dopyrn); + + if ($btl->users[$btl->uids[$uen]]['tactic7'] <= 0 && $dp == 0) { + $hpmin = 0; + $k = -1; + $dopyrn = 0; + } + if ($k == 1 && $hpmin != 0 && $krituet) { + //крит + $hpmin = $hpmin * 2; + } elseif ($k == -1 && $hpmin != 0) { + //промах + $hpmin = $hpmin / 2; + $dopyrn = $dopyrn / 2; + } + if ($hpmin < 1) { + $hpmin = 0; + } else { + $hpmin = rand(($hpmin * 0.97), $hpmin); + } + + $hpmin += floor($dopyrn); + + if (isset($btl->stats[$btl->uids[$uen]]['min_heal_proc'])) { + if ($btl->stats[$btl->uids[$uen]]['min_heal_proc'] > 100) { + $btl->stats[$btl->uids[$uen]]['min_heal_proc'] = 100; + } + $hpmin = round($hpmin / 100 * (100 + $btl->stats[$btl->uids[$uen]]['min_heal_proc'])); + } + + if ($btl->users[$btl->uids[$uen]]['tactic7'] > 0 && $dp == 0) { + //Отнимаем тактики, если это возможно + $btl->users[$btl->uids[$uen]]['tactic7'] -= $hpmin / $btl->stats[$btl->uids[$uen]]['hpAll']; + $btl->users[$btl->uids[$uen]]['tactic7'] = round($btl->users[$btl->uids[$uen]]['tactic7'], 2); + $btl->stats[$btl->uids[$uen]]['tactic7'] = $btl->users[$btl->uids[$uen]]['tactic7']; + if ($uen == $this->u->info['id']) { + $this->u->info['tactic7'] = $btl->users[$btl->uids[$uen]]['tactic7']; + $this->u->stats['tactic7'] = $btl->users[$btl->uids[$uen]]['tactic7']; + } + if ($btl->users[$btl->uids[$uen]]['tactic7'] < 0) { + $btl->users[$btl->uids[$uen]]['tactic7'] = 0; + } + } + $hp2 = floor($btl->stats[$btl->uids[$uen]]['hpNow'] + $hpmin); + + if ($hp2 > $btl->stats[$btl->uids[$uen]]['hpAll']) { + $hpmin = floor($hp2 - $btl->stats[$btl->uids[$uen]]['hpAll']); + $hp2 = $btl->stats[$btl->uids[$uen]]['hpAll']; + } elseif ($hp2 < 0) { + $hp2 = 0; + } + $rr[0] = $hpmin; //урон + $rr[1] = $k; //тип + /* проверяем приемы защиты */ + //получаем массив с приемами противника + $miny = 0; //на сколько едениц урон буде меньше (защита приема) + $minu = 0; + $sp1 = mysql_query('SELECT `e`.* FROM `eff_users` AS `e` WHERE `e`.`uid` = "' . $uen . '" AND `e`.`id_eff` = "22" AND `e`.`delete` = "0" AND `e`.`v1` = "priem" LIMIT 25'); + while ($pl2 = mysql_fetch_assoc($sp1)) { + $pl2['priem'] = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $pl2['v2'] . '" LIMIT 1')); + if (isset($pl2['priem']['id'])) { + $dt1 = $this->lookStatsArray($pl2['priem']['date2']); + if (isset($dt1['yron_u2'])) { + $minu = getdr($dt1['yron_u2'], [0 => 'lvl1', 1 => 'yr1', 2 => 'ts5', 3 => 'ts6'], + [0 => $btl->users[$btl->uids[$level]], 1 => $hpmin, 2 => 0, 3 => 0]); + $miny -= $minu; + $hpmin += $minu; + $btl->delPriem($pl2, $btl->users[$btl->uids[$uen]]); + } + } + } + + /* проверяем приемы ослабления */ + + //отнимаем НР + $btl->users[$btl->uids[$uen]]['hpNow'] = $hp2; + $btl->stats[$btl->uids[$uen]]['hpNow'] = $hp2; + mysql_query('UPDATE `stats` SET `hpNow` = ' . $hp2 . ',`tactic7` = ' . $btl->users[$btl->uids[$uen]]['tactic7'] . ' WHERE `id` = "' . $uen . '" LIMIT 1'); + + //заносим в лог боя + $vLog = + 'time1=' . time() . + '||s1=' . $this->u->info['sex'] . + '||t1=' . $this->u->info['team'] . + '||login1=' . $this->u->info['login'] . + '||s2=' . $btl->users[$btl->uids[$uen]]['sex'] . + '||t2=' . $btl->users[$btl->uids[$uen]]['team'] . + '||login2=' . $btl->users[$btl->uids[$uen]]['login']; + $mas1 = [ + 'time' => time(), + 'battle' => $btl->info['id'], + 'id_hod' => ($btl->hodID + 1), + 'text' => '', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + if ($rp == 1) { + $mas1['id_hod']--; + } + + $btl->takeExp($this->u->info['id'], ($hpmin * 0.33), $this->u->info['id'], $uen, true); + + if ($hpmin > 0) { + $hpmin = '+' . ceil($hpmin); + } else { + $hpmin = '--'; + } + $tco = [1 => '006699', 2 => '006699', 3 => '006699', 4 => '006699']; //не крит + $tcl = [1 => 'A00000', 2 => '008080', 3 => '0000FF', 4 => 'A52A2A']; //не крит + $tco = $tco[$tmp]; + $tcl = $tcl[$tmp]; + if ($k == 1) { + //крит + $tco = 'FF0000'; + $tcl = 'FF0000'; + } elseif ($k == -1) { + //промах + $tco = '979797'; + $tcl = '979797'; + } + $nmz = [ + 1 => [0 => 'огня', 1 => 'огненная'], + 2 => [0 => 'воздуха', 1 => 'электрическая'], + 3 => [0 => 'воды', 1 => 'водная'], + 4 => [0 => 'земли', 1 => 'земляная'], + ]; + $nmz = $nmz[$tmp]; + + if ($rp == 1) { + $sx = [0 => '', 1 => 'а']; + $mas1['text'] = '{tm1} Заклинание "' . $pl['name'] . '" восстановило здоровье персонажа {u2}. ' . $hpmin . ' [' . ceil($hp2) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; + } else { + $mas1['text'] = '{tm1} {u1} {1x16x0} заклинание "' . $pl['name'] . '" и восстановил здоровье персонажа {u2} магией ' . $nmz[0] . '. ' . $hpmin . ' [' . ceil($hp2) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; + } + $btl->add_log($mas1); + $pz[(int)$id] = 1; + return $rr; + } + + /** Проверка есть ли на персонаже призрачные защиты для рассчёта урона через magicAttack + * @return array + */ + private function hasGhostDefence($uid) + { + $def = [ + 'all' => false, + self::FIRE => false, + self::AIR => false, + self::EARTH => false, + self::WATER => false, + ]; + $priems = Db::getRows('select v2 from eff_users where uid = ? and v2 in (141, 142, 144, 145, 146)', [$uid]); + foreach ($priems as $priem) { + if ($priem['v2'] == 141) { + $def['all'] = true; + } + if ($priem['v2'] == 142) { + $def[self::FIRE] = true; + } + if ($priem['v2'] == 144) { + $def[self::AIR] = true; + } + if ($priem['v2'] == 145) { + $def[self::WATER] = true; + } + if ($priem['v2'] == 146) { + $def[self::EARTH] = true; + } + } + return $def; + } + + /** + * Новая функция магического заклинания с приёма. + * Работает с числовыми приёмами в папке [priem]. + * @param int $attackerId кто использует приём + * @param int $defenderId на кого использует приём + * @param float $damage базовый урон приёма + * @param string $damageType тип урона (стихия?) приходит строкой, и конвертируется функцией. + * @param bool $hasCritical флаг, что приём МОЖЕТ критовать + * @return array [0|damage] int урон, [1|crit] bool был ли крит, [2|miss] bool был ли промах, [3|miss_type] int тип промаха (всегда = 2). + * @author Insallah + */ + public function magicAttack(battleClass $btl, $attackerId, $defenderId, $damage, $damageType, $hasCritical = false) + { + // Не так паршиво как прошлая, но всё ещё паршиво. Теперь хоть что-то понять можно. + $dmgRuNames = [ + self::FIRE => 'огонь', + self::WATER => 'вода', + self::AIR => 'воздух', + self::EARTH => 'земля', + ]; + if (in_array($damageType, array_keys($dmgRuNames))) { + $damageType = $dmgRuNames[$damageType]; + } + + // Мощь. + // pm# = Мф. мощности магии определенного типа + // m11 = Мф. мощности магии стихий + // m11a = Мф. мощности магии + // ОКАЗЫВАЕТСЯ [pm# = m11 + m11a] где-то выше по коду! + $power = $btl->stats[$btl->uids[$attackerId]]['pm' . $this->mname[$damageType]]; + + // Подавление в процентах. + $suppression = 0; + $suppression += $btl->stats[$btl->uids[$attackerId]]['pzm']; + // Уязвимость магии стихий, из приёма 250. + $suppression += $btl->stats[$btl->uids[$attackerId]]['yzm']; + + // Сколько у использующего умений числом. + $skills = $btl->stats[$btl->uids[$attackerId]]['mg' . $this->mname[$damageType]]; + + // Защита цели числом + // zm# = Защита от магии определенного типа + // zm = Защита от магии стихий + // zma = Защита от магии + // ОКАЗЫВАЕТСЯ [zm# = zm + zma] где-то выше по коду! + $defence = $btl->stats[$btl->uids[$defenderId]]['zm' . $this->mname[$damageType]]; + + // Минимум умений для 100% успеха приёма. + // У 8 екро-мага со старта 20, это очень много: 8 бьёт 10 без промаха. + $requiredSkills = $btl->users[$btl->uids[$defenderId]]['level'] * 2; + + // Чёртово "Следующий каст будет критическим". + $isGarantCrit = $btl->stats[$btl->uids[$attackerId]]['acestar'] > 0; + + // Подавляем защиту, понижая число на процент подавления. + $supressedDefence = Math::addPercent($defence, -min($suppression, 100)); + + // Урон зависит от умений и уровня противника. + $damage *= $skills - $requiredSkills; + + // Увеличиваем урон, повышая число на мощь если урон > 0. + $poweredDamage = $damage > 0 ? $damage + $power : 0; + + // Шанс крита равен уровню магического навыка + $isCritical = $hasCritical && $skills >= mt_rand(0, 100); + + if ($isGarantCrit) { + $isCritical = true; + Db::sql('delete from eff_users where uid = ? and `delete` = 0 and data like ?', + [$attackerId, '%add_acestar%']); + unset($q); + } + + if ($skills >= $requiredSkills || $isCritical) { + $isHit = true; + } else { + $isCritical = false; + $missChance = 3 * ($requiredSkills - $skills); + $isHit = mt_rand(0, 100) > $missChance; + } + + // Для совместимости. Старая функция возвращает это значение, вдруг оно где-то используется. + $pType = 0; + if ($isHit) { + // Урон = Повреждения - Защита, но не меньше 0. Округлено до целых. + //$finalDamage = max(round(Math::addPercent($poweredDamage, -$supressedDefence)), 0); + $finalDamage = $poweredDamage - $supressedDefence; + if ($isCritical) { + $finalDamage *= 2; + } + } else { + $finalDamage = 0; + // Для совместимости. Старая функция возвращает это значение, вдруг оно где-то используется. + $pType = 2; + } + + // Призрачки, режут конечный урон после вычета защиты. + $ghostDefences = $this->hasGhostDefence($defenderId); + if ($ghostDefences['all']) { + $finalDamage /= 4; + } + + // Костыль для призрачек. Когда вызовы русских стихий уберутся, будет не нужен. + if (in_array($damageType, $dmgRuNames)) { + $damageType = array_search($damageType, $dmgRuNames); + } + + if ($ghostDefences[$damageType]) { + $finalDamage /= 2; + } + + $finalDamage = max(round($finalDamage), 0); + + // Для отладки. + if ($btl->users[$btl->uids[$attackerId]]['admin'] > 0) { + $s = "Подавление защиты: $suppression%, Бонус урона: $power, Навыки: $skills, +
Усиление урона от уровня и скилла: damage x ($skills - $requiredSkills)
$damageType + Его Защита: ($defence -$suppression%) = $supressedDefence | + Мой Урон: ($damage +$power) = $poweredDamage
+ Мой Удар: ($poweredDamage -$supressedDefence) = $finalDamage"; + $s .= $isCritical ? ' (крит *2)' : ''; + echo "
$s
"; + } + + + // !isHit потому что прошлая функуция возвращала Промах. + // pType ни на что не влияет, = 0 и просто становится = 2 при промахе. Зачем - загадка. + // -damage потому что где-то дальше код разворачивает результат меняя ему знак. + return [ + (int)$finalDamage, + $isCritical, + !$isHit, + $pType, // для совместимости + 'damage' => (int)$finalDamage, + 'crit' => $isCritical, + 'miss' => !$isHit, + 'miss_type' => $pType, + ]; + } + + /** Оставлена для совместимости. На неё ссылается куча всего. */ + public function magatack($u1, $u2, $yron, $type, $krit) + { + global $btl; + return $this->magicAttack($btl, $u1, $u2, $yron, $type, $krit); + } + + public function magatackfiz($u1, $u2, $yron, $type, $krit, $ymelki) + { + global $btl; + $cof_mag = [ + 0 => 250, + 1 => 250, + 2 => 250, + 3 => 250, + 4 => 250, + 5 => 250, + 6 => 250, + 7 => 250, + 8 => 250, + 9 => 300, + 10 => 360, + 11 => 475, + 12 => 520, + 13 => 625, + 14 => 750, + 15 => 895, + 16 => 1075, + 17 => 1290, + 18 => 1550, + 19 => 1860, + 20 => 2230, + 21 => 2675, + ]; + + $r = $yron; + // + if (!isset($ymelki) || $ymelki == '0') { + $ymelki = $type; + } + // + $prm = [ + 'ym' => $btl->stats[$btl->uids[$u1]]['mg' . $this->mname[$ymelki]], //умелки (магические умелки) + 'y' => $btl->stats[$btl->uids[$u1]]['a' . $this->mname[$ymelki]], //умелки + 'yv' => 0, //умения, значение коф. + 'max_krit' => 0 //вероятность крита + ]; + // + // (уровень цени)*2 - 7 - минимальное умелок, чтобы не было промахов + /* + Для магии Света/Тьмы по формуле: Уровень Цели * 2 – 9 каждая умелка выше этой нормы увеличивает маг крит на 3%. но не больше 30% */ - //Рассчет урона от приема - /* + //Рассчет урона от приема + /* b - базовый урон m - мощь z - защита цели [ед.] p - подавление [ед.] k - коэффициент ; k=250 для 8ки, k=300 для 9ки и т.д. +20% на уровень */ - $prm['b'] = round($r,2); //базовый урон - $prm['m'] = $btl->stats[$btl->uids[$u1]]['pm'.$btl->mname[$type]]; //мощь - $prm['z'] = $btl->stats[$btl->uids[$u2]]['zm'.$btl->mname[$type]]; //защита цели (ед.) - - if( $prm['z'] < 0 ) { - $prm['z'] = 0; - } - // $prm['p'] = round(($btl->stats[$btl->uids[$u1]]['pzm'.$btl->mname[$type]]+$btl->stats[$btl->uids[$u1]]['pzm'])*0.8); //подавление (ед.) - //New подава - if (isset($btl->stats[$btl->uids[$u1]]['pzm'])) - { - //$ri=round(sqrt(2*$i*28)); - $prm['p'] = round($btl->stats[$btl->uids[$u1]]['pzm'.$btl->mname[$type]]+round(sqrt(2*$btl->stats[$btl->uids[$u1]]['pzm']*24))); - // $prm['p'] = round(($btl->stats[$btl->uids[$u1]]['pzm'.$btl->mname[$type]]+$btl->stats[$btl->uids[$u1]]['pzm'])*2); - - } - - - - - //$prm['k'] = $this->cof_mag[$btl->users[$btl->uids[$u2]]['level']]; //коэффицент - $prm['k']=1; - if( $prm['k'] == 0 ) { - $prm['k'] = 1; - } - - // - /*if( $prm['p']*10 > $prm['k'] ) { - $prm['p'] = round($prm['k']/10); - }*/ - if( $prm['p']*10 > $prm['z']+$prm['k'] ) { - $prm['p'] = round(($prm['z']+$prm['k'])/10); - } - - //echo '[Мощность '.$prm['m'].'%, Подавление '.$prm['p'].' ед., Защита цели '.$prm['z'].' ед., Коэффицент '.$prm['k'].']'; - - //$prm['p'] = round($prm['p']*2); - - //$r = $prm['b']*(1+$prm['m']/100)*pow(2,(($prm['p']*10-$prm['z'])/$prm['k'])); (верная старая) - //$r = $prm['b']*(1+$prm['m']/100)*pow(2,((0-($prm['z']-$prm['p']*10))/$prm['k'])); (хз какая, старая) - // - $prm['znew'] = ( ( $prm['z'] / 100) * ( 100 - $prm['p'] ) ) - 5 * $prm['p']; - // - //Занижаем мощность на 10% - убрал временно занижение. - $r = $prm['b']*((1+$prm['m']/100)); - //echo '['.$prm['b'].'*(1+'.$prm['m'].'/100)*pow(2,(('.$prm['p'].'*10-'.$prm['z'].')/'.$prm['k'].'));]'; - - //$r += floor($btl->stats[$btl->uids[$u1]]['s5']*0.25); - //ТУТ $btl->stats[$btl->uids[$u2]]['zmproc'] + $prm['b'] = $r; //базовый урон + $prm['m'] = $btl->stats[$btl->uids[$u1]]['pa' . $this->mname[$type]]; //мощь + $prm['z'] = $btl->stats[$btl->uids[$u2]]['za' . $this->mname[$type]]; //защита цели (ед.) + $prm['p'] = $btl->stats[$btl->uids[$u1]]['pza' . $this->mname[$type]]; //подавление (ед.) + $prm['k'] = $cof_mag[$btl->users[$btl->uids[$u1]]['level']]; //коэффицент + // + if ($prm['p'] * 10 > $prm['k']) { + $prm['p'] = floor($prm['k'] / 10); + } + // + $r = $prm['b'] * (1 + $prm['m'] / 100) * pow(2, (($prm['p'] * 10 - $prm['z']) / $prm['k'])); + if ($r < floor($prm['b'] * 0.2)) { + $r = floor($prm['b'] * 0.2); + } elseif ($r > floor($prm['b'] * 10)) { + $r = floor($prm['b'] * 10); + } + // + //$prm['y'] -= 5; + if ($type < $this->mname[$type]) { + $prm['yv'] = ($btl->users[$btl->uids[$u2]]['level'] * 2 - 7); + } else { + $prm['yv'] = ($btl->users[$btl->uids[$u2]]['level'] * 2 - 9); + } + // + if ($prm['y'] >= $prm['yv'] || (isset($this->mname[$ymelki]) && $prm['ym'] >= $prm['yv'])) { + if ($krit == 1) { + if (isset($this->mname[$ymelki])) { + $prm['max_krit'] = 3 * ($prm['ym'] - $prm['yv']); + } else { + $prm['max_krit'] = 3 * ($prm['y'] - $prm['yv']); + } + //echo '[Magical crit: '.$prm['max_krit'].'%]'; + if ($prm['max_krit'] < 0) { + $prm['max_krit'] = 0; + } elseif ($prm['max_krit'] > 30) { + $prm['max_krit'] = 30; + } + //$prm['max_krit'] = round($prm['max_krit']/2); + //Крит возможен + if (rand(0, 100) <= $prm['max_krit']) { + $krit = true; + } else { + $krit = false; + } + } else { + $krit = false; + } + $promah = false; + } else { + $krit = false; + //Вероятность промоха + $prm['promah'] = 3 * ($prm['yv'] - $prm['ym']); + if ($prm['promah'] < 0) { + $prm['promah'] = 0; + } elseif ($prm['promah'] > 30) { + $prm['promah'] = 30; + } + if (rand(0, 100) <= $prm['promah']) { + $promah = true; + } else { + $promah = false; + } + } + // + if ($krit) { + $r = $r * 2; + $promah_type = 0; + } elseif ($promah) { + $r = rand(1, floor($r / 4)); + $promah_type = 1; + if (rand(0, 100) < 50) { + $r = 0; + $promah_type = 2; + } + } + // + unset($prm); + // + return [floor($r), $krit, $promah, $promah_type]; + } - if( $r < floor($prm['b']*0.2) ) { - $r = floor($prm['b']*0.2); - } - // - //$prm['y'] -= 5; - if( $type < $btl->mname[$type] ) { - $prm['yv'] = ($btl->users[$btl->uids[$u2]]['level'] * 2 - 7); - }else{ - $prm['yv'] = ($btl->users[$btl->uids[$u2]]['level'] * 2 - 9); - } - // - if( $prm['y'] >= $prm['yv'] || $btl->stats[$btl->uids[$u1]]['acestar'] > 0 ) { - if( $krit == 1 ) { - $prm['max_krit'] = 3 * ( $prm['y'] - $prm['yv'] ); - if( $prm['max_krit'] < 0 ) { - $prm['max_krit'] = 0; - //Утсноавил макс крит 25 процентов - }elseif( $prm['max_krit'] > 25 ) { - $prm['max_krit'] = 25; - } - //$prm['max_krit'] = round($prm['max_krit']/2); - //Крит возможен - - if( $btl->stats[$btl->uids[$u1]]['acestar'] ) { - //Крит 100% - $prm['max_krit'] = 100; - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.$u1.'" AND `data` LIKE "%add_acestar=%" AND `delete` = 0 LIMIT 1'); - } - - if( $btl->get_chanse($prm['max_krit']) == true ) { - $krit = true; - }else{ - $krit = false; - } - }else{ - $krit = false; - } - $promah = false; - }else{ - $krit = false; - //Вероятность промоха - $prm['promah'] = 3 * ( $prm['yv'] - $prm['y'] ); - if( $prm['promah'] < 0 ) { - $prm['promah'] = 0; - }elseif( $prm['promah'] > 30 ) { - $prm['promah'] = 30; - } - if( $btl->get_chanse($prm['promah']) == true ) { - $promah = true; - }else{ - $promah = false; - } - } + //для папки priems + public function magicAtack( + $ue, + $hpmin, + $tmp, + $pl, + $eff, + $rp = 0, + $mxx = 0, + $fiz = 0, + $nomf = 0, + $krituet = true, + $heal = 0, + $namenew = null + ) { + $trawm_off = false; + global $btl; + if ($namenew != null) { + $pl['name'] = $namenew; + } + $rr = []; + $nhpmin = $hpmin; + $uen = $ue['id']; + $usu = $eff['user_use']; + if ($eff['user_use'] < 1) { + $usu = $this->u->info['id']; + } + if ($nomf == 0) { + $k = $this->magKrit($ue['level'], $btl->stats[$btl->uids[$usu]]['mg' . $tmp]); + if (!$krituet) { + $k = 0; + } + if ($fiz == 0) { + //магический урон + $hpmin = $this->testPower($btl->stats[$btl->uids[$usu]], $btl->stats[$btl->uids[$uen]], $hpmin, $tmp, + 2); + } else { + //физический урон + $wAp = $btl->stats[$btl->uids[$usu]]['pa' . $tmp . '']; + $wAp += $btl->stats[$btl->uids[$usu]]['m10']; + $wAp -= $btl->stats[$btl->uids[$uen]]['antpa' . $tmp . ''] * 1.75; + $wAp -= $btl->stats[$btl->uids[$uen]]['antm10'] * 1.75; + $hpmin += ceil((0.01 + $hpmin / 100) * (0.01 + 0.98 * $wAp)) - 1; - if( $krit == true ) { - $r = $r*2; - $promah_type = 0; - $r = floor($r/100*(100-$btl->zmgo($prm['znew']))); - }elseif( $promah == true ) { - $r = 0; - $promah_type = 2; - }else - {$r = floor($r/100*(100-$btl->zmgo($prm['znew'])));} - - - if ($promah == false) // Промах новый - { - $prm['promah']=$btl->stats[$btl->uids[$u2]]['m19']; - if( $btl->get_chanse($prm['promah']) == true) { - $promah = true; - $r = 0; - $promah_type = 2; - } - } - - - - /*if (isset($btl->stats[$btl->uids[$u2]]['zmproc'])) - { - if ($btl->stats[$btl->uids[$u2]]['zmproc']>=75) - { - $r-=$r*75/100; - } - else - { - $r-=$r*$btl->stats[$btl->uids[$u2]]['zmproc']/100; - } - if ($r<=0){$r=1;} - }*/ - - if( $type == 'земля' ) { - $r = floor($r * 1.00); - } - if( $type == 'воздух' ) { - $r = floor($r * 1.00); - } - if( $type == 'вода' ) { - $r = floor($r * 1.00); - } - if( $type == 'огонь' ) { - $r = floor($r * 0.75); - } - - if( $krit == true && $r > floor($prm['b']*20) ) { - $r = floor($prm['b']*20); - }elseif($krit == false && $r > floor($prm['b']*10)) { - $r = floor($prm['b']*10); - } - - if($r < 1 ) { - $r = 0; - } - // - unset($prm); - // - return array( floor($r) , $krit , $promah , $promah_type ); - } - - public function magatackfiz( $u1, $u2, $yron, $type, $krit , $ymelki ) { - global $btl; - $r = $yron; - // - if( !isset($ymelki) || $ymelki == '0' ) { - $ymelki = $type; - } - // - $prm = array( - 'ym' => $btl->stats[$btl->uids[$u1]]['mg'.$btl->mname[$ymelki]], //умелки (магические умелки) - 'y' => $btl->stats[$btl->uids[$u1]]['a'.$btl->mname[$ymelki]], //умелки - 'yv' => 0, //умения, значение коф. - 'max_krit' => 0 //вероятность крита - ); - // - // (уровень цени)*2 - 7 - минимальное умелок, чтобы не было промахов - /* - Для магии Света/Тьмы по формуле: Уровень Цели * 2 – 9 - каждая умелка выше этой нормы увеличивает маг крит на 3%. но не больше 30% - */ - //Рассчет урона от приема - /* - b - базовый урон - m - мощь - z - защита цели [ед.] - p - подавление [ед.] - k - коэффициент ; k=250 для 8ки, k=300 для 9ки и т.д. +20% на уровень - */ - $prm['b'] = $r; //базовый урон - $prm['m'] = $btl->stats[$btl->uids[$u1]]['pa'.$btl->mname[$type]]; //мощь - $prm['z'] = $btl->stats[$btl->uids[$u2]]['za'.$btl->mname[$type]]; //защита цели (ед.) - $prm['p'] = $btl->stats[$btl->uids[$u1]]['pza'.$btl->mname[$type]]; //подавление (ед.) - $prm['k'] = $this->cof_mag[$btl->users[$btl->uids[$u1]]['level']]; //коэффицент - // - if( $prm['p']*10 > $prm['k'] ) { - $prm['p'] = floor($prm['k']/10); - } - // - $r = $prm['b']*(1+$prm['m']/100)*pow(2,(($prm['p']*10-$prm['z'])/$prm['k'])); - if( $r < floor($prm['b']*0.2) ) { - $r = floor($prm['b']*0.2); - }elseif( $r > floor($prm['b']*10) ) { - $r = floor($prm['b']*10); - } - // - //$prm['y'] -= 5; - if( $type < $btl->mname[$type] ) { - $prm['yv'] = ($btl->users[$btl->uids[$u2]]['level'] * 2 - 7); - }else{ - $prm['yv'] = ($btl->users[$btl->uids[$u2]]['level'] * 2 - 9); - } - // - if( $prm['y'] >= $prm['yv'] || (isset($btl->mname[$ymelki]) && $prm['ym'] >= $prm['yv']) ) { - if( $krit == 1 ) { - if( isset($btl->mname[$ymelki]) ) { - $prm['max_krit'] = 3 * ( $prm['ym'] - $prm['yv'] ); - }else{ - $prm['max_krit'] = 3 * ( $prm['y'] - $prm['yv'] ); - } - //echo '[Magical crit: '.$prm['max_krit'].'%]'; - if( $prm['max_krit'] < 0 ) { - $prm['max_krit'] = 0; - }elseif( $prm['max_krit'] > 30 ) { - $prm['max_krit'] = 30; - } - //$prm['max_krit'] = round($prm['max_krit']/2); - //Крит возможен - if( rand( 0 , 100 ) <= $prm['max_krit'] ) { - $krit = true; - }else{ - $krit = false; - } - }else{ - $krit = false; - } - $promah = false; - }else{ - $krit = false; - //Вероятность промоха - $prm['promah'] = 3 * ( $prm['yv'] - $prm['ym'] ); - if( $prm['promah'] < 0 ) { - $prm['promah'] = 0; - }elseif( $prm['promah'] > 30 ) { - $prm['promah'] = 30; - } - if( rand( 0 , 100 ) <= $prm['promah'] ) { - $promah = true; - }else{ - $promah = false; - } - } - // - if( $krit == true ) { - $r = $r*2; - $promah_type = 0; - }elseif( $promah == true ) { - $r = rand(1,floor($r/4)); - $promah_type = 1; - if( rand(0,100) < 50 ) { - $r = 0; - $promah_type = 2; - } - } - // - unset($prm); - // - return array( floor($r) , $krit , $promah , $promah_type ); - } + $hpmin -= round($hpmin / 100 * (35 * ($btl->stats[$btl->uids[$uen]]['za'] + $btl->stats[$btl->uids[$uen]]['za' . $tmp]) / 1200)); + $hpmin = round($hpmin); - public function magicAtack($ue,$hpmin,$tmp,$pl,$eff,$rp = 0,$mxx = 0,$fiz = 0,$nomf = 0,$krituet=true,$heal =0,$namenew=NULL) - { - $trawm_off=false; - global $u,$c,$code,$btl; - if( $namenew != NULL ) { - $pl['name'] = $namenew; - } - $rr = array(); - $nhpmin = $hpmin; - $uen = $ue['id']; - $usu = $eff['user_use']; - if($eff['user_use']<1) - { - $usu = $u->info['id']; - } - if($nomf==0) - { - $k = $btl->magKrit($ue['level'],$btl->stats[$btl->uids[$usu]]['mg'.$tmp]); - if($krituet==false){$k=0;} - if($fiz==0) - { - - //магический урон - if($nomf == 0) { - $hpmin = $this->testPower($btl->stats[$btl->uids[$usu]],$btl->stats[$btl->uids[$uen]],$hpmin,$tmp,2); - } - }else{ - //физический урон - $wAp += $btl->stats[$btl->uids[$usu]]['pa'.$tmp.'']; - $wAp += $btl->stats[$btl->uids[$usu]]['m10']; - $wAp -= $btl->stats[$btl->uids[$uen]]['antpa'.$tmp.'']*1.75; - $wAp -= $btl->stats[$btl->uids[$uen]]['antm10']*1.75; - $hpmin += ceil((0.01+$hpmin/100)*(0.01+0.98*$wAp))-1; - - $hpmin -= round( $hpmin/100*(35*($btl->stats[$btl->uids[$uen]]['za']+$btl->stats[$btl->uids[$uen]]['za'.$tmp])/1200) ); - $hpmin = round($hpmin); - - if(isset($btl->stats[$btl->uids[$uen]]['zaproc']) || isset($btl->stats[$btl->uids[$uen]]['za'.$fiz.'proc'])) //защита от урона (призрачки) - { - $hpmin = floor($hpmin/100*(100-$btl->stats[$btl->uids[$uen]]['zaproc']-$btl->stats[$btl->uids[$uen]]['za'.$fiz.'proc'])); - if($hpmin<0) - { - $hpmin = 0; - } - } - } - } - $hpmin = round($hpmin); - if($k==1 and $krituet==true) - { - //крит - $hpmin = $hpmin*2; - }elseif($k==-1) - { - //промах - $hpmin = $hpmin/2; - } - if($hpmin<$nhpmin*0.2) { - $hpmin = $nhpmin*0.2; - } - if($hpmin<1){ $hpmin = 0; }else{ - if($nomf == 0) { - $hpmin = rand(($hpmin*0.97),$hpmin); - } - } - if($mxx>0 && $hpmin > $mxx) - { - if($k==0) - { - $hpmin = $mxx; - }elseif($k==1 && $hpmin/2 > $mxx) - { - $hpmin = $mxx*2; - } - } - $rr[0] = $hpmin; //урон - $rr[1] = $k; //тип - /* проверяем приемы защиты */ - //получаем массив с приемами противника - $miny = 0; //на сколько едениц урон буде меньше (защита приема) - $minu = 0; - $sp1 = mysql_query('SELECT `e`.* FROM `eff_users` AS `e` WHERE `e`.`uid` = "'.$uen.'" AND `e`.`id_eff` = "22" AND `e`.`delete` = "0" AND `e`.`v1` = "priem" LIMIT 25'); - while($pl2 = mysql_fetch_assoc($sp1)) - { - $pl2['priem'] = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "'.$pl2['v2'].'" LIMIT 1')); - if(isset($pl2['priem']['id'])) - { - $dt1 = $u->lookStats($pl2['priem']['date2']); - if(isset($dt1['yron_u2'])) - { - $minu = getdr($dt1['yron_u2'],array(0=>'lvl1',1=>'yr1',2=>'ts5',3=>'ts6'),array(0=>$btl->users[$btl->uids[$level]],1=>$hpmin,2=>1,3=>0)); - $miny -= $minu; - $hpmin += $minu; - if(isset($dt1['rzEndMg']) && $dt1['rzEndMg']==1) - { - $btl->delPriem($pl2,$btl->users[$btl->uids[$uen]]); - } - }elseif(isset($dt1['rzEndMg']) && $dt1['rzEndMg']==1) { - $btl->delPriem($pl2,$btl->users[$btl->uids[$uen]]); - } - } - - } - - $hpmin = $btl->testPogB($uen,$hpmin); - - $hp2 = floor($btl->stats[$btl->uids[$uen]]['hpNow'] - $hpmin); - - if($btl->stats[$btl->uids[$usu]]['yrnhealmpprocmg'.$tmp] > 0 && $fiz == 0) { - //Часть урона восставнавливает ману - $btl->stats[$btl->uids[$usu]]['mpNow'] += round($hpmin/100*$btl->stats[$btl->uids[$usu]]['yrnhealmpprocmg'.$tmp]); - //if($btl->stats[$btl->uids[$usu]]['mpNow'] > $btl->stats[$btl->uids[$usu]]['mpAll']) { - //$btl->stats[$btl->uids[$usu]]['mpNow'] = $btl->stats[$btl->uids[$usu]]['mpAll']; - //} - $btl->users[$btl->uids[$usu]]['mpNow'] = $btl->stats[$btl->uids[$usu]]['mpNow']; - if($usu == $u->info['id']) { - $u->info['mpNow'] = $btl->stats[$btl->uids[$usu]]['mpNow']; - $u->stats['mpNow'] = $btl->stats[$btl->uids[$usu]]['mpNow']; - } - } - - if($hp2<0) - { - $hp2 = 0; - }elseif($hp2>$btl->stats[$btl->uids[$uen]]['hpAll']) - { - $hp2 = $btl->stats[$btl->uids[$uen]]['hpAll']; - } - - $btl->stats[$btl->uids[$uen]]['last_hp'] = -floor($hpmin); - - if($heal != 0) { - if($heal == -1) { - //хил на текущий урон с учетом мф - $btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] += $hpmin; - if($btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] < 0) { - $btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] = 0; - }elseif($btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] > $btl->stats[$btl->uids[$eff['user_use']]]['hpAll']) { - $btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] = $btl->stats[$btl->uids[$eff['user_use']]]['hpAll']; - } - - if($eff['user_use'] == $u->info['id']) { - $u->stats['hpNow'] = $btl->stats[$btl->uids[$eff['user_use']]]['hpNow']; - } - - $btl->users[$btl->uids[$eff['user_use']]]['hpNow'] = $btl->stats[$btl->uids[$eff['user_use']]]['hpNow']; - - $upd = mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$eff['user_use']]]['hpNow'].'" WHERE `id` = "'.$eff['user_use'].'" LIMIT 1'); - }else{ - //хил на конкретное число - - } - } - - /* проверяем приемы ослабления */ + if (isset($btl->stats[$btl->uids[$uen]]['zaproc']) || isset($btl->stats[$btl->uids[$uen]]['za' . $fiz . 'proc'])) //защита от урона (призрачки) + { + $hpmin = floor($hpmin / 100 * (100 - $btl->stats[$btl->uids[$uen]]['zaproc'] - $btl->stats[$btl->uids[$uen]]['za' . $fiz . 'proc'])); + if ($hpmin < 0) { + $hpmin = 0; + } + } + } + } + $hpmin = round($hpmin); + if ($k == 1 and $krituet) { + //крит + $hpmin = $hpmin * 2; + } elseif ($k == -1) { + //промах + $hpmin = $hpmin / 2; + } + if ($hpmin < $nhpmin * 0.2) { + $hpmin = $nhpmin * 0.2; + } + if ($hpmin < 1) { + $hpmin = 0; + } else { + if ($nomf == 0) { + $hpmin = rand(($hpmin * 0.97), $hpmin); + } + } + if ($mxx > 0 && $hpmin > $mxx) { + if ($k == 0) { + $hpmin = $mxx; + } elseif ($k == 1 && $hpmin / 2 > $mxx) { + $hpmin = $mxx * 2; + } + } + $rr[0] = $hpmin; //урон + $rr[1] = $k; //тип + /* проверяем приемы защиты */ + //получаем массив с приемами противника + $miny = 0; //на сколько едениц урон буде меньше (защита приема) + $sp1 = mysql_query('SELECT `e`.* FROM `eff_users` AS `e` WHERE `e`.`uid` = "' . $uen . '" AND `e`.`id_eff` = "22" AND `e`.`delete` = "0" AND `e`.`v1` = "priem" LIMIT 25'); + while ($pl2 = mysql_fetch_assoc($sp1)) { + $pl2['priem'] = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $pl2['v2'] . '" LIMIT 1')); + if (isset($pl2['priem']['id'])) { + $dt1 = $this->lookStatsArray($pl2['priem']['date2']); + if (isset($dt1['yron_u2'])) { + $minu = getdr($dt1['yron_u2'], [0 => 'lvl1', 1 => 'yr1', 2 => 'ts5', 3 => 'ts6'], + [0 => $btl->users[$btl->uids[$level]], 1 => $hpmin, 2 => 1, 3 => 0]); + $miny -= $minu; + $hpmin += $minu; + if (isset($dt1['rzEndMg']) && $dt1['rzEndMg'] == 1) { + $btl->delPriem($pl2, $btl->users[$btl->uids[$uen]]); + } + } elseif (isset($dt1['rzEndMg']) && $dt1['rzEndMg'] == 1) { + $btl->delPriem($pl2, $btl->users[$btl->uids[$uen]]); + } + } + } - //отнимаем НР - $btl->users[$btl->uids[$uen]]['hpNow'] = $hp2; - $btl->stats[$btl->uids[$uen]]['hpNow'] = $hp2; - - if($uen == $u->info['id']) { - $u->stats['hpNow'] = $hp2; - } - - // тяж травма для кровавых - if($btl->info['type']==99 and $hp2==0 and $trawm_off==false){ - //$eff['user_use'] - //$sp1 = mysql_query('SELECT `e`.* FROM `eff_users` AS `e` WHERE `e`.`uid` = "'.$uen.'" AND `e`.`id_eff` = "22" AND `e`.`delete` = "0" AND `e`.`v1` = "priem" LIMIT 25'); + $hpmin = $btl->testPogB($uen, $hpmin); - $trawm_off=true; - //$at[2][$i]['ttravm']='получил Тяжелую травму.'; - $btl->addTravm($btl->users[$btl->uids[$uen]]['id'],3,$btl->users[$btl->uids[$eff['user_use']]]['level']); - } - $upd = mysql_query('UPDATE `stats` SET `hpNow` = '.$hp2.',`last_hp` = "'.$btl->stats[$btl->uids[$uen]]['last_hp'].'" WHERE `id` = "'.$uen.'" LIMIT 1'); - - //заносим в лог боя - $vLog = 'time1='.time().'||s1='.$btl->users[$btl->uids[$usu]]['sex'].'||t1='.$btl->users[$btl->uids[$usu]]['team'].'||login1='.$btl->users[$btl->uids[$usu]]['login'].'||s2='.$btl->users[$btl->uids[$uen]]['sex'].'||t2='.$btl->users[$btl->uids[$uen]]['team'].'||login2='.$btl->users[$btl->uids[$uen]]['login'].''; - $mas1 = array('time'=>time(),'battle'=>$btl->info['id'],'id_hod'=>($btl->hodID+1),'text'=>'','vars'=>$vLog,'zona1'=>'','zonb1'=>'','zona2'=>'','zonb2'=>'','type'=>'1'); - if($rp>0) - { - $mas1['id_hod']--; - } - $hpminkrit = 0; - if( $k == 1 ) { - $hpminkrit = $hpmin; - } - $btl->addNewStat( array( - 'battle' => $u->info['battle'], - 'uid1' => $u->info['id'], - 'uid2' => $uen, - 'time' => time(), - 'type' => 0, - 'a' => '10000', - 'b' => 0, - 'type_a' => 1, - 'type_b' => 0, - 'ma' => 1, - 'mb' => 1, - 'yrn' => $hpmin, - 'yrn_krit' => $hpminkrit, - 'tm1' => $u->info['team'], - 'tm2' => $btl->users[$btl->uid[$uen]]['team'] - ) ); - - $btl->takeExp($u->info['id'],$hpmin,$usu,$uen); - - if($hpmin>0) - { - $hpmin = '-'.ceil($hpmin); - }else{ - $hpmin = '--'; - } - $tco = array(1=>'006699',2=>'006699',3=>'006699',4=>'006699',5=>'006699',6=>'006699',7=>'006699'); //не крит - $tcl = array(1=>'A00000',2=>'008080',3=>'0000FF',4=>'A52A2A',5=>'006699',6=>'006699',7=>'006699'); //не крит - $tco = $tco[$tmp]; - $tcl = $tcl[$tmp]; - if($k==1) - { - //крит - $tco = 'FF0000'; - $tcl = 'FF0000'; - }elseif($k==-1) - { - //промах - $tco = 'CCCCCC'; - $tcl = 'CCCCCC'; - } - $nmz = array( - 1=>array(0=>'огня',1=>'огненный'), - 2=>array(0=>'воздуха',1=>'электрический'), - 3=>array(0=>'воды',1=>'холод'), - 4=>array(0=>'земли',1=>'земляной'), - 5=>array(0=>'Свет',1=>'Свет'), - 6=>array(0=>'Тьма',1=>'Тьма'), - 7=>array(0=>'Серая магия',1=>'Серая магия') - ); - $nmz = $nmz[$tmp]; - if($fiz>0) - { - $nmz = array( - 1=>array(0=>', колющая атака , ',1=>'колющий'), - 2=>array(0=>', рубящая атака , ',1=>'рубящий'), - 3=>array(0=>', дробящая атака , ',1=>'дробящий'), - 4=>array(0=>', режущая атака , ',1=>'режущий') - ); - $nmz = $nmz[$fiz]; - } - - if($rp==1) - { - if($k==0) - { - $tcl = '000000'; - $tco = '008000'; - } - $sx = array(0=>'',1=>'а'); - $mas1['text'] = '{tm1} {u2} утратил'.$sx[$btl->users[$btl->uids[$uen]]['sex']].' здоровье от "'.$pl['name'].'". '.$hpmin.' ['.ceil($hp2).'/'.$btl->stats[$btl->uids[$uen]]['hpAll'].']'; - }else{ - if( $fiz == 1 ) { - $mas1['text'] = '{tm1} {u1} {1x16x0} прием "'.$pl['name'].'" и поразил {u2}. '.$hpmin.' ['.ceil($hp2).'/'.$btl->stats[$btl->uids[$uen]]['hpAll'].']'; - }else{ - $mas1['text'] = '{tm1} {u1} {1x16x0} заклинание "'.$pl['name'].'" и поразил магией '.$nmz[0].' {u2}. '.$hpmin.' ['.ceil($hp2).'/'.$btl->stats[$btl->uids[$uen]]['hpAll'].']'; - } - } - $btl->add_log($mas1); - $pz[(int)$id] = 1; - return $rr; - } - - public function testActiv($id) - { - global $u; - $r = 0; - if($u->info['admin'] > 0 || $u->info['nadmin'] > 0 || $u->info['id'] > 0) { - $r = 1; - }else{ - $tst = $u->testAction('`uid` = "'.$u->info['id'].'" AND `time` < '.time().' AND `vars` = "read" AND `vals` = "'.$id.'" LIMIT 1',1); - if(isset($tst['id'])) - { - $r = 1; - } - unset($tst); - } - return $r; - } - - public function testRazmenOldUser( $u2 , $u1 , $plid ) { - global $btl,$u; - $r = 0; - //Уровень -противника- ниже уровня -цели- - if( $btl->users[$btl->uids[$u2]]['id'] != $u->info['id'] ) { - if( $btl->users[$btl->uids[$u1]]['level'] < $btl->users[$btl->uids[$u2]]['level'] ) { - $r = 1; - echo '
Нельзя кастовать через слабого противника в сильного
'; - }elseif( $btl->users[$btl->uids[$u1]]['bot'] > 0 && $btl->users[$btl->uids[$u2]]['bot'] == 0 ) { - echo '
Нельзя кастовать через монстров или зверя
'; - $r = 1; - }elseif($btl->users[$btl->uids[$u1]]['id'] != $btl->users[$btl->uids[$u2]]['id'] - && $plid!=35 - && $plid!=63 - && $plid!=64 - && $plid!=65 - && $plid!=66 - && $plid!=85 - && $plid!=86 - && $plid!=87 - && $plid!=88 - && $plid!=89 - && $plid!=90 - && $plid!=104 - && $plid!=105 - && $plid!=106 - && $plid!=107 - && $plid!=134 - && $plid!=135 - && $plid!=136 - && $plid!=137) //Атака в темную 90,89,88,87,86,85,35 - { - $this->addPriem($u->info['id'],'344','add_m11=-'.round($u->stats['m11']*75/100).'',1,77,1,$u->stats['id'],3,'тьма',0,0,1); //ТУТ понижение урона при уроне через персонажа - } - } - return $r; - } - - public function testDie($u1) { - global $btl; - //Персонаж 1 погиб от рук персонаж 2 - $btl->spaCheck($btl->stats[$btl->uids[$u1]]['id']); - } - - public function pruse($id) - { - global $u,$c,$code,$btl,$ue; - if($id==100500 && $u->info['animal']>0) - { - $use_lst = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "animal_use'.$btl->info['id'].'" LIMIT 1',1); - if(!isset($use_lst['id'])) - { - $a = mysql_fetch_assoc(mysql_query('SELECT * FROM `users_animal` WHERE `uid` = "'.$u->info['id'].'" AND `id` = "'.$u->info['animal'].'" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); - if($u->stats['hpNow'] < 1) { - echo 'Вы не можете выпустить зверя, вы потеряли все НР'; - }elseif(isset($a['id']) && $a['eda']<1) { - echo 'Вы не накормили зверя...'; - }elseif(isset($a['id'])) - { - //Добавляем зверя в бой - $tp = array(1=>'Кот',2=>'Сова',3=>'Светляк',4=>'Чертяка',5=>'Пес',6=>'Свин',7=>'Дракон'); - $id = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `test_bot` WHERE `login` = "'.$tp[$a['type']].' ['.$a['level'].']" LIMIT 1')); - if(isset($id['id']) && $btl->info['type']!=500) - { - $b = $u->addNewbot($id['id'],NULL,NULL); - if($b>0 && $b!=false) - { - $a['eda'] -= 4; - if($a['eda'] < 0) { - $a['eda'] = 0; - } - - //Добавляем эффект - //$anl = mysql_fetch_assoc(mysql_query('SELECT `bonus` FROM `levels_animal` WHERE `type` = "'.$a['type'].'" AND `level` = "'.$a['level'].'" LIMIT 1')); - //$anl = $anl['bonus']; - //mysql_query('INSERT INTO `eff_users` (`hod`,`v2`,`img2`,`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`v1`,`user_use`) VALUES ("-1","201","pet_unleash.gif",22,"'.$u->info['id'].'","Эффект от зверя","'.$anl.'","0","77","priem","'.$u->info['id'].'")'); - - //$anl = $u->lookStats($anl); - $vLog = 'time1='.time().'||s1='.$u->info['sex'].'||t1='.$u->info['team'].'||login1='.$u->info['login'].''; - $mas1 = array('time'=>time(),'battle'=>$btl->info['id'],'id_hod'=>$btl->hodID,'text'=>'','vars'=>$vLog,'zona1'=>'','zonb1'=>'','zona2'=>'','zonb2'=>'','type'=>'1'); - /*$ba = ''; - $i = 0; - while($iitems['add'])) { - if(isset($anl['add_'.$u->items['add'][$i]])) { - if($anl['add_'.$u->items['add'][$i]] > 0) { - $ba .= $u->is[$u->items['add'][$i]].': +'.$anl['add_'.$u->items['add'][$i]].', '; - } - } - $i++; - } - $ba = trim($ba,', '); - if($ba == '') { - $ba = 'Отсутсвует'; - }*/ - - if($u->info['sex'] == 1) { - $mas1['text'] = '{tm1} {u1} выпустила зверя "'.$a['name'].'"'; - }else{ - $mas1['text'] = '{tm1} {u1} выпустил зверя "'.$a['name'].'"'; - } - $btl->add_log($mas1); - - mysql_query('UPDATE `users` SET `login` = "'.$a['name'].' (зверь '.$u->info['login'].')",`obraz` = "'.$a['obraz'].'.gif",`battle` = "'.$btl->info['id'].'" WHERE `id` = "'.$b['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team` = "'.$u->info['team'].'" WHERE `id` = "'.$b['id'].'" LIMIT 1'); - mysql_query('UPDATE `users_animal` SET `eda` = "'.$a['eda'].'" WHERE `id` = "'.$a['id'].'" LIMIT 1'); - $u->addAction(time(),'animal_use'.$btl->info['id'],$a['level']); - }else{ - echo 'Не удалось выпустить зверя...'; - } - }else{ - //Бот не найден - echo '
Не удалось выпустить зверя - он боится...'; - } - }else{ - //зверь не найден - echo 'У Вас нет зверя ...'; - } - }else{ - //зверь уже выпущен - echo 'Вы уже выпускали зверя в этом бою ...'; - } - }else{ - - $p = explode('|',$u->info['priems']); - $pz = explode('|',$u->info['priems_z']); - if($p[(int)$id]>0 && $pz[(int)$id]<=0 && $u->info['hpNow']>=1) - { - $pl = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `level`<="'.$u->info['level'].'" AND `id` = "'.mysql_real_escape_string($p[(int)$id]).'" LIMIT 1')); - if(isset($pl['id']) && $pl['activ']!=1) - { - if($pl['activ']==0) - { - unset($pl); - }elseif($pl['activ']>1) - { - //Книжный прием - if($this->testActiv($pl['activ'])==0) - { - unset($pl); - } - } - } - if(isset($pl['id'])) - { - $notr = 0; - $pl['useon_user'] = $u->info['enemy']; - if(isset($_POST['useon']) && $_POST['useon']!='' && $_POST['useon']!='none') - { - $_POST['useon'] = iconv('UTF-8', 'windows-1251', $_POST['useon']); - $this->ue = mysql_fetch_assoc(mysql_query('SELECT + $hp2 = floor($btl->stats[$btl->uids[$uen]]['hpNow'] - $hpmin); + + if ($btl->stats[$btl->uids[$usu]]['yrnhealmpprocmg' . $tmp] > 0 && $fiz == 0) { + //Часть урона восставнавливает ману + $btl->stats[$btl->uids[$usu]]['mpNow'] += round($hpmin / 100 * $btl->stats[$btl->uids[$usu]]['yrnhealmpprocmg' . $tmp]); + //if($btl->stats[$btl->uids[$usu]]['mpNow'] > $btl->stats[$btl->uids[$usu]]['mpAll']) { + //$btl->stats[$btl->uids[$usu]]['mpNow'] = $btl->stats[$btl->uids[$usu]]['mpAll']; + //} + $btl->users[$btl->uids[$usu]]['mpNow'] = $btl->stats[$btl->uids[$usu]]['mpNow']; + if ($usu == $this->u->info['id']) { + $this->u->info['mpNow'] = $btl->stats[$btl->uids[$usu]]['mpNow']; + $this->u->stats['mpNow'] = $btl->stats[$btl->uids[$usu]]['mpNow']; + } + } + + if ($hp2 < 0) { + $hp2 = 0; + } elseif ($hp2 > $btl->stats[$btl->uids[$uen]]['hpAll']) { + $hp2 = $btl->stats[$btl->uids[$uen]]['hpAll']; + } + + $btl->stats[$btl->uids[$uen]]['last_hp'] = -floor($hpmin); + + if ($heal != 0) { + if ($heal == -1) { + //хил на текущий урон с учетом мф + $btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] += $hpmin; + if ($btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] < 0) { + $btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] = 0; + } elseif ($btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] > $btl->stats[$btl->uids[$eff['user_use']]]['hpAll']) { + $btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] = $btl->stats[$btl->uids[$eff['user_use']]]['hpAll']; + } + + if ($eff['user_use'] == $this->u->info['id']) { + $this->u->stats['hpNow'] = $btl->stats[$btl->uids[$eff['user_use']]]['hpNow']; + } + + $btl->users[$btl->uids[$eff['user_use']]]['hpNow'] = $btl->stats[$btl->uids[$eff['user_use']]]['hpNow']; + + mysql_query('UPDATE `stats` SET `hpNow` = "' . $btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] . '" WHERE `id` = "' . $eff['user_use'] . '" LIMIT 1'); + } else { + //хил на конкретное число + + } + } + + /* проверяем приемы ослабления */ + + //отнимаем НР + $btl->users[$btl->uids[$uen]]['hpNow'] = $hp2; + $btl->stats[$btl->uids[$uen]]['hpNow'] = $hp2; + + if ($uen == $this->u->info['id']) { + $this->u->stats['hpNow'] = $hp2; + } + + // тяж травма для кровавых + if ($btl->info['type'] == 99 and $hp2 == 0 and !$trawm_off) { + //$eff['user_use'] + //$sp1 = mysql_query('SELECT `e`.* FROM `eff_users` AS `e` WHERE `e`.`uid` = "'.$uen.'" AND `e`.`id_eff` = "22" AND `e`.`delete` = "0" AND `e`.`v1` = "priem" LIMIT 25'); + + $trawm_off = true; + //$at[2][$i]['ttravm']='получил Тяжелую травму.'; + $btl->addTravm($btl->users[$btl->uids[$uen]]['id'], 3, $btl->users[$btl->uids[$eff['user_use']]]['level']); + } + $upd = mysql_query('UPDATE `stats` SET `hpNow` = ' . $hp2 . ',`last_hp` = "' . $btl->stats[$btl->uids[$uen]]['last_hp'] . '" WHERE `id` = "' . $uen . '" LIMIT 1'); + + //заносим в лог боя + $vLog = 'time1=' . time() . '||s1=' . $btl->users[$btl->uids[$usu]]['sex'] . '||t1=' . $btl->users[$btl->uids[$usu]]['team'] . '||login1=' . $btl->users[$btl->uids[$usu]]['login'] . '||s2=' . $btl->users[$btl->uids[$uen]]['sex'] . '||t2=' . $btl->users[$btl->uids[$uen]]['team'] . '||login2=' . $btl->users[$btl->uids[$uen]]['login'] . ''; + $mas1 = [ + 'time' => time(), + 'battle' => $btl->info['id'], + 'id_hod' => ($btl->hodID + 1), + 'text' => '', + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + if ($rp > 0) { + $mas1['id_hod']--; + } + $hpminkrit = 0; + if ($k == 1) { + $hpminkrit = $hpmin; + } + $btl->addNewStat([ + 'battle' => $this->u->info['battle'], + 'uid1' => $this->u->info['id'], + 'uid2' => $uen, + 'time' => time(), + 'type' => 0, + 'a' => '10000', + 'b' => 0, + 'type_a' => 1, + 'type_b' => 0, + 'ma' => 1, + 'mb' => 1, + 'yrn' => $hpmin, + 'yrn_krit' => $hpminkrit, + 'tm1' => $this->u->info['team'], + 'tm2' => $btl->users[$btl->uid[$uen]]['team'], + ]); + + $btl->takeExp($this->u->info['id'], $hpmin, $usu, $uen); + + if ($hpmin > 0) { + $hpmin = '-' . ceil($hpmin); + } else { + $hpmin = '--'; + } + $tco = [ + 1 => '006699', + 2 => '006699', + 3 => '006699', + 4 => '006699', + 5 => '006699', + 6 => '006699', + 7 => '006699', + ]; //не крит + $tcl = [ + 1 => 'A00000', + 2 => '008080', + 3 => '0000FF', + 4 => 'A52A2A', + 5 => '006699', + 6 => '006699', + 7 => '006699', + ]; //не крит + $tco = $tco[$tmp]; + $tcl = $tcl[$tmp]; + if ($k == 1) { + //крит + $tco = 'FF0000'; + $tcl = 'FF0000'; + } elseif ($k == -1) { + //промах + $tco = 'CCCCCC'; + $tcl = 'CCCCCC'; + } + $nmz = [ + 1 => [0 => 'огня', 1 => 'огненный'], + 2 => [0 => 'воздуха', 1 => 'электрический'], + 3 => [0 => 'воды', 1 => 'холод'], + 4 => [0 => 'земли', 1 => 'земляной'], + 5 => [0 => 'Свет', 1 => 'Свет'], + 6 => [0 => 'Тьма', 1 => 'Тьма'], + 7 => [0 => 'Серая магия', 1 => 'Серая магия'], + ]; + $nmz = $nmz[$tmp]; + if ($fiz > 0) { + $nmz = [ + 1 => [0 => ', колющая атака , ', 1 => 'колющий'], + 2 => [0 => ', рубящая атака , ', 1 => 'рубящий'], + 3 => [0 => ', дробящая атака , ', 1 => 'дробящий'], + 4 => [0 => ', режущая атака , ', 1 => 'режущий'], + ]; + $nmz = $nmz[$fiz]; + } + + if ($rp == 1) { + if ($k == 0) { + $tcl = '000000'; + $tco = '008000'; + } + $sx = [0 => '', 1 => 'а']; + $mas1['text'] = '{tm1} {u2} утратил' . $sx[$btl->users[$btl->uids[$uen]]['sex']] . ' здоровье от "' . $pl['name'] . '". ' . $hpmin . ' [' . ceil($hp2) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; + } else { + if ($fiz == 1) { + $mas1['text'] = '{tm1} {u1} {1x16x0} прием "' . $pl['name'] . '" и поразил {u2}. ' . $hpmin . ' [' . ceil($hp2) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; + } else { + $mas1['text'] = '{tm1} {u1} {1x16x0} заклинание "' . $pl['name'] . '" и поразил магией ' . $nmz[0] . ' {u2}. ' . $hpmin . ' [' . ceil($hp2) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; + } + } + $btl->add_log($mas1); + $pz[(int)$id] = 1; + return $rr; + } + + private function testActiv($id) + { + $r = 0; + if ( + $this->u->info['admin'] > 0 || + $this->u->info['nadmin'] > 0 || + $this->u->info['id'] > 0) + { + $r = 1; + } else { + $tst = $this->u->testAction('`uid` = "' . $this->u->info['id'] . '" AND `time` < ' . time() . ' AND `vars` = "read" AND `vals` = "' . $id . '" LIMIT 1', 1); + if (isset($tst['id'])) { + $r = 1; + } + } + return $r; + } + + private function testRazmenOldUser($u2, $u1, $plid) + { + global $btl, $u; + $r = 0; + //Уровень -противника- ниже уровня -цели- + if ($btl->users[$btl->uids[$u2]]['id'] != $this->u->info['id']) { + if ($btl->users[$btl->uids[$u1]]['level'] < $btl->users[$btl->uids[$u2]]['level']) { + $r = 1; + echo '
Нельзя кастовать через слабого противника в сильного
'; + } elseif ($btl->users[$btl->uids[$u1]]['bot'] > 0 && $btl->users[$btl->uids[$u2]]['bot'] == 0) { + echo '
Нельзя кастовать через монстров или зверя
'; + $r = 1; + } elseif ( + $btl->users[$btl->uids[$u1]]['id'] != $btl->users[$btl->uids[$u2]]['id'] && + !in_array($plid, [35, 63, 64, 65, 66, 85, 86, 87, 88, 89, 90, 104, 105, 106, 107, 134, 135, 136, 137]) + ) //Атака в темную 90,89,88,87,86,85,35 + { + $this->addPriem($this->u->info['id'], '344', 'add_m11=-' . round($this->u->stats['m11'] * 75 / 100), 1, 77, 1, + $this->u->stats['id'], 3, 'тьма', 0, 0, 1); //ТУТ понижение урона при уроне через персонажа + } + } + return $r; + } + + public function testDie($u1) + { + global $btl; + //Персонаж 1 погиб от рук персонаж 2 + $btl->spaCheck($btl->stats[$btl->uids[$u1]]['id']); + } + + public function pruse($id) + { + global $u, $c, $code, $btl, $ue; + if ($id == 100500 && $this->u->info['animal'] > 0) { + $use_lst = $this->u->testAction('`uid` = "' . $this->u->info['id'] . '" AND `vars` = "animal_use' . $btl->info['id'] . '" LIMIT 1', + 1); + if (!isset($use_lst['id'])) { + $a = mysql_fetch_assoc(mysql_query('SELECT * FROM `users_animal` WHERE `uid` = "' . $this->u->info['id'] . '" AND `id` = "' . $this->u->info['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); + if ($this->u->stats['hpNow'] < 1) { + echo 'Вы не можете выпустить зверя, вы потеряли все НР'; + } elseif (isset($a['id']) && $a['eda'] < 1) { + echo 'Вы не накормили зверя...'; + } elseif (isset($a['id'])) { + //Добавляем зверя в бой + $tp = [ + 1 => 'Кот', + 2 => 'Сова', + 3 => 'Светляк', + 4 => 'Чертяка', + 5 => 'Пес', + 6 => 'Свин', + 7 => 'Дракон', + ]; + $id = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `test_bot` WHERE `login` = "' . $tp[$a['type']] . ' [' . $a['level'] . ']" LIMIT 1')); + if (isset($id['id']) && $btl->info['type'] != 500) { + $b = $this->u->addNewbot($id['id'], null, null); + if ($b > 0 && $b != false) { + $a['eda'] -= 4; + if ($a['eda'] < 0) { + $a['eda'] = 0; + } + + $vLog = 'time1=' . time() . '||s1=' . $this->u->info['sex'] . '||t1=' . $this->u->info['team'] . '||login1=' . $this->u->info['login'] . ''; + $mas1 = [ + 'time' => time(), + 'battle' => $btl->info['id'], + 'id_hod' => $btl->hodID, + 'vars' => $vLog, + 'zona1' => '', + 'zonb1' => '', + 'zona2' => '', + 'zonb2' => '', + 'type' => '1', + ]; + + $sex = $this->u->info['sex'] === 1 ? 'a' : ''; + $mas1['text'] = "{tm1} {u1} выпустил$sex зверя "" . $a['name'] . '"'; + $btl->add_log($mas1); + + mysql_query('UPDATE `users` SET `login` = "' . $a['name'] . ' (зверь ' . $this->u->info['login'] . ')",`obraz` = "' . $a['obraz'] . '.gif",`battle` = "' . $btl->info['id'] . '" WHERE `id` = "' . $b['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team` = "' . $this->u->info['team'] . '" WHERE `id` = "' . $b['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users_animal` SET `eda` = "' . $a['eda'] . '" WHERE `id` = "' . $a['id'] . '" LIMIT 1'); + $this->u->addAction(time(), 'animal_use' . $btl->info['id'], $a['level']); + } else { + echo 'Не удалось выпустить зверя...'; + } + } else { + //Бот не найден + echo '
Не удалось выпустить зверя - он боится...'; + } + } else { + //зверь не найден + echo 'У Вас нет зверя ...'; + } + } else { + //зверь уже выпущен + echo 'Вы уже выпускали зверя в этом бою ...'; + } + } else { + $p = explode('|', $this->u->info['priems']); + $pz = explode('|', $this->u->info['priems_z']); + if ($p[(int)$id] > 0 && $pz[(int)$id] <= 0 && $this->u->info['hpNow'] >= 1) { + $pl = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `level`<=' . $this->u->info['level'] . ' AND `id` = ' . $p[(int)$id])); + if (isset($pl['id']) && $pl['activ'] != 1) { + if ($pl['activ'] == 0) { + unset($pl); + } elseif ($pl['activ'] > 1) { + //Книжный прием + if ($this->testActiv($pl['activ']) == 0) { + unset($pl); + } + } + } + if (isset($pl['id'])) { + $notr = 0; + $pl['useon_user'] = $this->u->info['enemy']; + if (isset($_POST['useon']) && $_POST['useon'] != '' && $_POST['useon'] != 'none') { + $_POST['useon'] = iconv('UTF-8', 'windows-1251', $_POST['useon']); + $this->ue = mysql_fetch_assoc(mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`login2`,`u`.`online`,`u`.`admin`,`u`.`city`,`u`.`cityreg`,`u`.`align`,`u`.`clan`, `u`.`level`,`u`.`money`,`u`.`money3`,`u`.`money4`,`u`.`battle`,`u`.`sex`,`u`.`obraz`,`u`.`win`,`u`.`win_t`, @@ -1274,10 +1284,23 @@ class priems `st`.* - FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id`=`st`.`id`) WHERE (`u`.`login`="'.mysql_real_escape_string($_POST['useon']).'" OR (`u`.`login2` = "'.mysql_real_escape_string($_POST['useon']).'" AND `u`.`login2` != "")) AND (`u`.`inUser` > 0 OR (`u`.`battle`="'.$btl->info['id'].'" AND `st`.`hpNow` > 0)) ORDER BY `u`.`id` DESC LIMIT 1')); - if(isset($this->ue['id']) && $this->ue['inUser']>0) - { - $this->ue = mysql_fetch_assoc(mysql_query('SELECT + FROM `users` AS `u` + LEFT JOIN `stats` AS `st` ON (`u`.`id`=`st`.`id`) + WHERE ( + `u`.`login`="' . mysql_real_escape_string($_POST['useon']) . '" OR + ( + `u`.`login2` = "' . mysql_real_escape_string($_POST['useon']) . '" AND + `u`.`login2` != "") + ) AND + ( + `u`.`inUser` > 0 OR + ( + `u`.`battle`="' . $btl->info['id'] . '" AND + `st`.`hpNow` > 0 + ) + ) ORDER BY `u`.`id` DESC LIMIT 1')); + if (isset($this->ue['id']) && $this->ue['inUser'] > 0) { + $this->ue = mysql_fetch_assoc(mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`login2`,`u`.`online`,`u`.`admin`,`u`.`city`,`u`.`cityreg`,`u`.`align`,`u`.`clan`, `u`.`level`,`u`.`money`,`u`.`money3`,`u`.`money4`,`u`.`battle`,`u`.`sex`,`u`.`obraz`,`u`.`win`,`u`.`win_t`, @@ -1286,1262 +1309,1228 @@ class priems `st`.* - FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id`=`st`.`id`) WHERE `u`.`battle`="'.$btl->info['id'].'" AND `st`.`hpNow` > 0) AND `u`.`id` = "'.$this->ue['inUser'].'" ORDER BY `u`.`id` ASC LIMIT 1')); - } - if(!isset($this->ue['id']) && $pl['trUser']>0) - { - $notr++; - } - if($pl['team'] == 1) { - //свои - if($u->info['team'] != $this->ue['team']) { - $notr++; - } - }elseif($pl['team'] == 2) { - //противники - if($u->info['team'] == $this->ue['team']) { - $notr++; - } - }elseif($pl['team'] == 0) { - //любая команда - - } - }else{ - //$this->ue = $btl->users[$btl->uids[$u->info['enemy']]]; - $ga = mysql_fetch_assoc(mysql_query('SELECT * FROM `battle_act` WHERE `battle` = "'.$btl->info['id'].'" AND `uid1` = "'.$u->info['id'].'" AND `uid2` = "'.$u->info['enemy'].'" LIMIT 1')); - if(($u->info['enemy']==0 || isset($ga['id'])) && ($pl['tr_hod']>0 || $pl['trUser']>0)) - { - $notr++; - } - } + FROM `users` AS `u` + LEFT JOIN `stats` AS `st` ON (`u`.`id`=`st`.`id`) + WHERE + `u`.`battle`="' . $btl->info['id'] . '" AND + `st`.`hpNow` > 0) AND + `u`.`id` = "' . $this->ue['inUser'] . '" ORDER BY `u`.`id` ASC LIMIT 1')); + } + if (!isset($this->ue['id']) && $pl['trUser'] > 0) { + $notr++; + } + if ($pl['team'] == 1) { + //свои + if ($this->u->info['team'] != $this->ue['team']) { + $notr++; + } + } elseif ($pl['team'] == 2) { + //противники + if ($this->u->info['team'] == $this->ue['team']) { + $notr++; + } + } elseif ($pl['team'] == 0) { + //любая команда - $notr += $this->testpriem($pl,1,$this->ue['id']); - - /*if( $u->info['admin'] == 0 ) { - $notr++; - }*/ - - if( $this->ue['id'] > 0 ) { - $notr += $this->testRazmenOldUser($this->ue['id'],$u->info['enemy'], $pl['id']); - } - - if($notr==0) - { - mysql_query('UPDATE `stats` SET `last_pr` = "'.$pl['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - - //Приемы на персонажах - if( $this->ue['id'] > 0 ) { - $btl->priemsRazmen(array($u->info['id'],$this->ue['id']),'fast'); - mysql_query('UPDATE `eff_users` SET `mark` = 1 WHERE `uid` = "'.$this->ue['id'].'" AND `delete` = 0'); - }else{ - $btl->priemsRazmen(array($u->info['id'],$u->info['enemy']),'fast'); - mysql_query('UPDATE `eff_users` SET `mark` = 1 WHERE `uid` = "'.$u->info['enemy'].'" AND `delete` = 0'); - } - mysql_query('UPDATE `eff_users` SET `mark` = 1 WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0'); - - if(file_exists('../../_incl_data/class/priem/'.$pl['id'].'.php')) { - require('../../_incl_data/class/priem/'.$pl['id'].'.php'); - $this->testDie($this->ue['id']); - }else{ - echo 'useSkill'.$pl['id'].''; - } - - /*echo 'combo::'.$pl['type'].'->'; - if($pl['type']==1) - {*/ - //используется моментально - /*$pz[(int)$id] = 0; - if($pl['file']!='0') - { - if(file_exists('../../_incl_data/class/priems/'.$pl['file'].'.php')) - { - echo 'test1'; - } - }else{*/ - //всякие цели и т.д. - /*echo 'test2'; - } - if(!isset($cup)) - { - $this->uppz($pl,$id); - if($pl['tr_hod']>0) - { - $this->trhod($pl); - } - } - }elseif($pl['type']==2) - {*/ - //Используется на себя (не моментально) - //$this->addEffPr($pl,$id); - /*echo 'test3->'; - if(file_exists('../../_incl_data/class/priem/'.$pl['id'].'.php')) { - require('../../_incl_data/class/priem/'.$pl['id'].'.php'); - }else{ - echo 'useSkill'.$pl['id'].''; - }*/ - /*echo 'test3'; - if($pl['file2']!='0') - { - $fast_use_priem = 1; - if(file_exists('../../_incl_data/class/priems/'.$pl['file2'].'.php')) - { - echo '->file'; - } - }*/ - /*}elseif($pl['type']==3) - { - echo 'Использовать приемы данного типа временно запрещено'; - } - */ - - if(!isset($cup)) { - $this->uppz($pl,$id); - //Отнимаем тактики - //$this->mintr($pl); - if($pl['tr_hod']>0) { - $this->trhod($pl); - } - if( $pl['id'] != 258 ) { - if( $pl['cancel_eff'] == '' ) { - $pl['cancel_eff'] = '258'; - }else{ - $pl['cancel_eff'] .= ',258'; - } - } - if($pl['cancel_eff']!='') - { - $i = 0; - $e = explode(',',$pl['cancel_eff']); - while($i0) - { - if( $e[$i] == 258 ) { - $nem = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `v1` = "priem" AND `v2` = "'.$e[$i].'" AND `delete` = "0" AND `mark` = 1 LIMIT 1')); - }else{ - $nem = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$this->ue['id'].'" AND `v1` = "priem" AND `v2` = "'.$e[$i].'" AND `delete` = "0" AND `mark` = 1 LIMIT 1')); - } - if(isset($nem['id'])) - { - $nem['priem'] = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "'.$e[$i].'" LIMIT 1')); - if(isset($nem['id'])) - { - $btl->delPriem($nem,$btl->users[$btl->uids[$this->ue['id']]],500); - } - } - } - $i++; - } - } - } - - } - } - } - } - } - - private function rezadEff($uid,$mg) - { - global $u,$btl,$c,$code; - //$this->rezadEff($u->info['id'],'wis_fire_'); - $md = ''; $md2 = ''; - $ex = explode('|',$btl->users[$btl->uids[$uid]]['priems']); - $ex2 = explode('|',$btl->users[$btl->uids[$uid]]['priems_z']); - $i = 0; $ty = array(); - while($i0) - { - $md .= '`id` = "'.((int)$ex[$i]).'" OR '; - $ty[$ex[$i]] = $i; - } - $i++; - } - $md = rtrim($md,' OR '); - if( $md != '' ) { - $md = '( '.$md.' ) AND '; - } - $sp = mysql_query('SELECT * FROM `priems` WHERE '.$md.' `img` LIKE "%'.$mg.'%"'); - while($pl = mysql_fetch_assoc($sp)) { - $ex2[$ty[$pl['id']]] = 0; - } - $md2 = implode('|',$ex2); - $btl->users[$btl->uids[$uid]]['priems_z'] = $md2; - $u->info['priems_z'] = $md2; - $upd = mysql_query('UPDATE `stats` SET `priems_z` = "'.$md2.'" WHERE `id` = "'.((int)$uid).'" LIMIT 1'); - unset($md,$md2,$ty); - if($upd) - { - $upd = true; - }else{ - $upd = false; - } - return $upd; - } - - private function trhod($pl) - { - global $u,$btl; - if($u->info['notrhod'] == -1) { - $u->info['notrhod'] = 0; - if($u->stats['magic_cast'] > 0) { - $u->info['notrhod'] = $u->stats['magic_cast']; - } - mysql_query('UPDATE `users` SET `notrhod` = "'.$u->info['notrhod'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - if($u->info['notrhod'] > 0) { - if( $pl['tr_hod'] > 0 ) { - $u->info['notrhod']--; - mysql_query('UPDATE `users` SET `notrhod` = "'.$u->info['notrhod'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - }else{ - $a1 = mysql_fetch_assoc(mysql_query('SELECT * FROM `battle_act` WHERE `battle` = "'.$btl->info['id'].'" AND `uid2` = "'.$u->info['id'].'" AND `uid1` = "'.$u->info['enemy'].'" LIMIT 1')); - if(isset($a1['id'])) - { - //противник ударил, пишем что игрок 2 пропустил ход - mysql_query('UPDATE `battle_act` SET `out2` = "1",`tpo2` = "2" WHERE `id` = "'.$a1['id'].'" LIMIT 1'); - $a1['out2'] = 1; - $a1['tpo2'] = 2; - $btl->atacks[$a1['id']] = $a1; - $btl->users[$u->info['id']]['priems_z'] = $u->info['priems_z']; - $btl->startAtack($a1['id']); - }else{ - //бьем противника с пропуском хода - mysql_query('INSERT INTO `battle_act` (`battle`,`uid1`,`uid2`,`time`,`out1`,`type`,`tpo1`) VALUES ("'.$btl->info['id'].'","'.$u->info['id'].'","'.$u->info['enemy'].'","'.time().'","1","1","2")'); - } - } - } - - public function plusData( $d1, $d2 ) { - global $u; - $j1 = $u->lookStats($d1); - $j2 = $u->lookStats($this->redate($d2,$u->info['id'])); - $v = $u->lookKeys($this->redate($d2,$u->info['id']),0); // ключи 2 - //добавляем данные друг к другу - $i = 0; $inf = ''; - while($iis[$vi]!='') - { - if($j2[$v[$i]]>0) - { - $inf .= $u->is[$vi].': +'.($j2[$v[$i]]*(1+$mpr['x'])).', '; - }elseif($j2[$v[$i]]<0){ - $inf .= $u->is[$vi].': '.($j2[$v[$i]]*(1+$mpr['x'])).', '; - } - } - $i++; - } - $inf = rtrim($inf,', '); - $j1 = $u->impStats($j1); - return $j1; - } - - private function addEffPr($pl,$id,$redus = NULL) - { - global $u,$btl; - $rcu = false; - $j = $u->lookStats($pl['date2']); - $mpr = false; $addch = 0; - $uid = $u->info['id']; - if(isset($this->ue['id'])) - { - $uid = $this->ue['id']; - } - if(isset($j['onlyOne'])) - { - $mpr = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `v2` = "'.$pl['id'].'" AND `uid` = "'.$uid.'" AND `delete` = "0" AND `mark` = 1 LIMIT 1')); - } - - if($pl['cancel_eff2']!='') - { - $i = 0; - $e = explode(',',$pl['cancel_eff2']); - while($i0) - { - $nem = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$uid.'" AND `v1` = "priem" AND `v2` = "'.$e[$i].'" AND `delete` = "0" AND `mark` = 1 LIMIT 1')); - if(isset($nem['id'])) - { - $nem['priem'] = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "'.$e[$i].'" LIMIT 1')); - if(isset($nem['id'])) - { - $btl->delPriem($nem,$btl->users[$btl->uids[$uid]],2); - if( $nem['id'] == $mpr['id'] ) { - unset($mpr); - } - } - } - } - $i++; - } - } - - $pld = array(0=>''); $nc = 0; - if(isset($mpr['id']) && $j['onlyOne']==1) - { - //отнимаем тактики - $addch = 1; - $this->mintr($pl); - $this->uppz($pl,$id); - //добавляем прием в эффекты - if(isset($this->ue['id'])) - { - $btl->stats[$btl->uids[$uid]] = $u->getStats($this->ue,0); - }else{ - $btl->stats[$btl->uids[$uid]] = $u->getStats($u->info,0); - } - $nc = 1; - }elseif(!isset($mpr['id'])) - { - $data = ''; - if(isset($j['date3Plus'])) - { - $data = $this->redate($pl['date3'],$u->info['id']); - } - if( isset($redus) ) { - $data .= '|'.$redus; - } - $hd1 = -1; - if($pl['limit']>0) - { - $tm = 77; - $hd1 = $pl['limit']; - }else{ - $tm = 77; - } - if($pl['limit'] == -2) { - $hd1 = $pl['limit']; - } - if ($pl['id']==239) //Вывод приемов которые не моментальные как бы - { - $btl->priemAddLogFast( $uid, 0, $pl['name'], - '{tm'.$u->info['team'].'} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$uid]]['sex'] , NULL).'', - 1, time() ); - } - - mysql_query('INSERT INTO `eff_users` (`hod`,`v2`,`img2`,`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`v1`,`user_use`) VALUES ("'.$hd1.'","'.$pl['id'].'","'.$pl['img'].'.gif",22,"'.$uid.'","'.$pl['name'].'","'.$data.'","0","'.$tm.'","priem","'.$u->info['id'].'")'); - unset($hd1); - //отнимаем тактики - $addch = 1; - $rcu = true; - $nc = 1; - $this->mintr($pl); - //$this->uppz($pl,$id); - //добавляем прием в эффекты - if(isset($this->ue['id'])) - { - $btl->stats[$btl->uids[$uid]] = $u->getStats($this->ue,0); - }else{ - $btl->stats[$btl->uids[$uid]] = $u->getStats($u->info,0); - } - }elseif($j['onlyOne']>1) - { - if($mpr['x']<$j['onlyOne']) - { - if(isset($j['date3Plus'])) - { - $j1 = $u->lookStats($mpr['data']); - $j2 = $u->lookStats($this->redate($pl['date3'],$u->info['id'])); - $v = $u->lookKeys($this->redate($pl['date3'],$u->info['id']),0); // ключи 2 - //добавляем данные друг к другу - $i = 0; $inf = ''; - while($iis[$vi]!='') - { - if($j2[$v[$i]]>0) - { - $inf .= $u->is[$vi].': +'.($j2[$v[$i]]*(1+$mpr['x'])).', '; - }elseif($j2[$v[$i]]<0){ - $inf .= $u->is[$vi].': '.($j2[$v[$i]]*(1+$mpr['x'])).', '; - } - } - $i++; - } - $inf = rtrim($inf,', '); - $j1 = $u->impStats($j1); - $pld[0] = ' x'.($mpr['x']+1); - if($j['refHod']==1) { - $mpr['hod'] = $pl['limit']; - } - $upd = mysql_query('UPDATE `eff_users` SET `hod` = "'.$mpr['hod'].'",`data` = "'.$j1.'",`x` = `x`+1 WHERE `id` = "'.$mpr['id'].'" LIMIT 1'); - if($upd) - { - //отнимаем тактики - $this->mintr($pl); - $this->uppz($pl,$id); - //добавляем прием в эффекты - if(isset($this->ue['id'])) - { - $btl->stats[$btl->uids[$uid]] = $u->getStats($this->ue,0); - }else{ - $btl->stats[$btl->uids[$uid]] = $u->getStats($u->info,0); - } - $addch = 1; - $rcu = true; - $nc = 1; - } - } - } - } - /* тратим свой ход */ - if($nc==1 && $pl['tr_hod']>0) - { - $this->trhod($pl); - } - return $rcu; - } - - public function mintr($pl) - { - global $u,$btl; - $x = 1; $rt = ''; - while($x<=7) - { - if( $pl['ndt'.$x] == 0 ) { - $u->info['tactic'.$x] -= $pl['tt'.$x]; - $btl->users[$btl->uids[$u->info['id']]]['tactic'.$x] -= $pl['tt'.$x]; - } - if($u->info['tactic'.$x]<0) - { - $u->info['tactic'.$x] = 0; - } - if($btl->users[$btl->uids[$u->info['id']]]['tactic'.$x]<0) - { - $btl->users[$btl->uids[$u->info['id']]]['tactic'.$x] = 0; - } - //$rt .= ',`tactic'.$x.'`="'.$u->info['tactic'.$x].'"'; - $rt .= ',`tactic'.$x.'`="'.$btl->users[$btl->uids[$u->info['id']]]['tactic'.$x].'"'; - $x++; - } - if($pl['xuse']>0) - { - $u->addAction(time(),'use_priem_'.$btl->info['id'].'_'.$u->info['id'],$pl['id']); - } - $rt = ltrim($rt,','); - mysql_query('UPDATE `stats` SET '.$rt.' WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - - public function maxtr($x,$val) - { - global $u,$btl; - $u->info['tactic'.$x] += $val; - $btl->users[$btl->uids[$u->info['id']]]['tactic'.$x] += $val; - if($u->info['tactic'.$x]<0) { - $u->info['tactic'.$x] = 0; - } - if($btl->users[$btl->uids[$u->info['id']]]['tactic'.$x] < 0) { - $btl->users[$btl->uids[$u->info['id']]]['tactic'.$x] = 0; - } - $rt .= '`tactic'.$x.'`="'.$u->info['tactic'.$x].'"'; - mysql_query('UPDATE `stats` SET '.$rt.' WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - - public function actpridMax($pl) - { - global $u,$btl; - if($pl['actprid2']>0 || $pl['actprid3']>0) - { - $i = 0; - $pe = explode('|',$u->info['priems']); - $piz = array(); - while($i0) - { - $piz[$pe[$i]] = (int)$pl['actprid2']; - }elseif($pl['actprid3']>0) - { - $piz[$pe[$i]] = $psp['zad']; - } - } - } - $i++; - } - $pz = explode('|',$u->info['priems_z']); - $p = explode('|',$u->info['priems']); - $i = 0; - while($i0 && isset($piz[$p[$i]])) - { - if($pz[$i]==0) - { - $pz[$i] = $piz[$p[$i]]; - } - } - $i++; - } - $pz = implode('|',$pz); - $u->info['priems_z'] = $pz; - $btl->users[$btl->uids[$u->info['id']]]['priems_z'] = $pz; - $btl->stats[$btl->uids[$u->info['id']]]['priems_z'] = $pz; - } - } - - public function uppz($pl,$id) - { - global $u,$btl; - $this->actpridMax($pl); - $p = explode('|',$u->info['priems']); - $pz = explode('|',$u->info['priems_z']); - $pz[(int)$id] = $pl['zad']; - $i = 0; $pe = explode(',',$pl['actprid']); - $piz = array(); - while($i0) - { - if(isset($piz[$p[$i]])) - { - if( $pl['id'] == 281 ) { - //Жертва воде + воздуху дает 5 ед. задержки на землю и огонь - if($p[(int)$i] == 246 || $p[(int)$i] == 186) { - $pz[(int)$i] = 5; - }else{ - $pz[(int)$i] = $pl['zad']; - } - }else{ - $pz[(int)$i] = $pl['zad']; - } - } - if(isset($piz2[$p[$i]])) - { - if( $pz[(int)$i] == 0 ) { - $pz[(int)$i] = 1; - } - } - } - $i++; - } - $pz = implode('|',$pz); - $u->info['priems_z'] = $pz; - $btl->users[$btl->uids[$u->info['id']]]['priems_z'] = $pz; - $btl->stats[$btl->uids[$u->info['id']]]['priems_z'] = $pz; - $tr = $u->lookStats($pl['tr']); - if(isset($tr['tr_mpNow'])) - { - $tr['tr_mpNow'] = round($tr['tr_mpNow']/100*(100-$u->stats['min_use_mp'])); - $btl->users[$btl->uids[$u->info['id']]]['mpNow'] -= $tr['tr_mpNow']; - $btl->stats[$btl->uids[$u->info['id']]]['mpNow'] -= $tr['tr_mpNow']; - if($btl->stats[$btl->uids[$u->info['id']]]['mpNow']<$btl->users[$btl->uids[$u->info['id']]]['mpNow']) - { - $btl->users[$btl->uids[$u->info['id']]]['mpNow'] = $btl->stats[$btl->uids[$u->info['id']]]['mpNow']; - } - } - $u->info['mpNow'] = $btl->users[$btl->uids[$u->info['id']]]['mpNow']; - mysql_query('UPDATE `stats` SET `mpNow` = "'.$u->info['mpNow'].'",`priems_z` = "'.$pz.'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - - public function reuns($id) - { - global $u,$c,$code; - $p = explode('|',$u->info['priems']); - if($p[(int)$id]>0) - { - //снимаем прием - $p[(int)$id] = 0; - $p = implode('|',$p); - $upd = mysql_query('UPDATE `stats` SET `priems` = "'.mysql_real_escape_string($p).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->info['priems'] = $p; - } - } - - public function uns($id) - { - global $u,$c,$code; - $pl = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `level`<="'.$u->info['level'].'" AND `activ` > "0" AND `id` = "'.mysql_real_escape_string($id).'" LIMIT 1')); - if(isset($pl['id'])) - { - $notr = $this->testpriem($pl,1); - if($notr==0) - { - $yes = -1; $non = -1; - $i = 0; $p = explode('|',$u->info['priems']); - while($i < $u->info['priemslot']) - { - if($non==-1 && $p[$i]==0) - { - $non = $i; - } - if($p[$i]==$pl['id']) - { - $yes = $i; - } - $i++; - } - - if($yes==-1) - { - if($non!=-1) - { - //одеваем прием - $p[$non] = $pl['id']; - $p = implode('|',$p); - $upd = mysql_query('UPDATE `stats` SET `priems` = "'.$p.'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if($upd) - { - $u->info['priems'] = $p; - } - }else{ - //снимаем последний прием - echo 'Снимаем последний прием...'; - } - }else{ - //такой прием уже стоит, ничего не делаем - } - - } - } - } - - //выводим приемы $id - 1 (вне боя), 2 - в бою - public function seeMy($t) - { - global $u,$c,$code,$btl; - if( $u->info['inTurnir'] == 0 || true == true ) { - $i = 0; $p = explode('|',$u->info['priems']); $lvar = ''; $pr = ''; - while($i<$u->info['priemslot']) - { - if($p[$i]>0) - { - $pl = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `level`<="'.$u->info['level'].'" AND `activ` > "0" AND `id` = "'.mysql_real_escape_string($p[$i]).'" LIMIT 1')); - $lvar = $this->priemInfo($pl,$t,$i); - $pz = $lvar[1]; - $lvar = $lvar[0]; - if($t==1) - { - if(isset($_GET['inv'])) { - //$cl = 'href="main.php?skills=1&rz=4"'; - $cl = 'href="javascript:void(0)" onclick="location.href=\'main.php?all='.((int)$_GET['all']).'&skills=1&rz=4&p_raz=all\'"'; - }else{ - //$cl = 'href="main.php?skills=1&rz=4&unuse_priem='.$i.'&rnd='.$code.'"'; - $cl = 'href="javascript:void(0)" onclick="location.href=\'main.php?all='.((int)$_GET['all']).'&skills=1&unuse_priem='.$i.'&rz=4&p_raz=\' + p_raz"'; - } - }else{ - if($pl['type']==1) - { - //моментально - if($pl['onUser']==1) - { - $oninuser = ''; - if( $pl['team'] == 1 ) { - if( $u->info['login2'] != '' ) { - $oninuser = $u->info['login2']; - }else{ - $oninuser = $u->info['login']; - } - }else{ - if( $btl->users[$btl->uids[$u->info['enemy']]]['login2'] != '' ) { - $oninuser = $btl->users[$btl->uids[$u->info['enemy']]]['login2']; - }else{ - $oninuser = $btl->users[$btl->uids[$u->info['enemy']]]['login']; - } - } - $cl = 'href="javascript:void(0);" onClick="top.priemOnUser('.$i.',1,\''.$pl['name'].'\',\''.$oninuser.'\',\''.$pl['img'].'\');"'; - unset($oninuser); - }else{ - $cl = 'href="javascript:void(0);" onClick="usepriem('.$i.',1,\''.$pl['img'].'\');"'; - } - }elseif($pl['type']==2) - { - //длительное - $cl = 'href="javascript:void(0);" onClick="usepriem('.$i.',1,\''.$pl['img'].'\');"'; - }elseif($pl['type']==3) - { - $cl = 'href="javascript:void(0);" onClick="alert(\'Возможно используем?\');"'; - } - } - - - $notr = $this->testpriem($pl,$t); - - - $cl2 = ''; - $cli2 = ''; - if( ( ($pz[$i]>0 || $notr>0) && $t==2 ) || (isset($u->stats['nopriems']) && $pl['nosh'] == 0) || $u->stats['notuse_last_pr'] == $pl['id']) - { - //$cl2 = 'filter: alpha(opacity=15); -moz-opacity: 0.15; -khtml-opacity: 0.15; opacity: 0.15;'; - $cli2 = ' class="nopriemuse" '; - } - - $pr .= ''; - }else{ - //if($t==1) - //{ - if(isset($_GET['inv'])) { - $pr .= ''; - }else{ - $pr .= ''; - } - //} - } - $i++; - } - if($u->info['animal']>0 && $t==2) - { - $use_lst = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "animal_use'.$btl->info['id'].'" LIMIT 1',1); - if(!isset($use_lst['id'])) - { - $cl2 = ''; - $pr .= ''; - }else{ - $cl2 = '" class="nopriemuse'; - $pr .= ''; - - } - } - if($t==1) - { - echo '
'.$pr.'
'; - }elseif($t==2) - { - $pr = str_replace('"','\\"',$pr); - return $pr; - } - } - } - - public function testpriem($pl,$t = 1,$o = 0) - { - global $c,$u,$code,$btl; - $tr = $u->lookStats($pl['tr']); - $d2 = $u->lookStats($pl['date2']); - $x = 1; - $notr = 0; - - if($t==2 && $pl['id']==181){ - $imun = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u->info['enemy'].'" and `v2`="191" and `delete`="0" LIMIT 1')); - if($imun){ - $notr++; - } - } - - if(isset($btl->stats[$btl->uids[$u->info['id']]]['nousepriem']) && $btl->stats[$btl->uids[$u->info['id']]]['nousepriem'] > 0 && $pl['nosh'] == 0) { - if( $btl->stats[$btl->uids[$u->info['id']]]['noshock_voda'] > 0 && substr($pl['img'],0,10) == 'wis_water_' ) { - //вода - }else{ - $notr++; - } - } - - if( $pl['id'] == $btl->stats[$btl->uids[$u->info['id']]]['notuse_last_pr'] ) { - $notr++; - } - - while($x<=7) - { - if(isset($btl->uids[$u->info['id']],$btl->users[$btl->uids[$u->info['id']]])) - { - if($btl->users[$btl->uids[$u->info['id']]]['tactic'.$x] < $pl['tt'.$x] && $x!=7 && $pl['tt'.$x] > 0) - { - $notr++; - }elseif($x==7) - { - if($pl['tt'.$x]>0 && $btl->users[$btl->uids[$u->info['id']]]['tactic'.$x]<=0) - { - $notr++; - } - } - } - $x++; - } + } + } else { + $ga = mysql_fetch_assoc(mysql_query('SELECT * FROM `battle_act` WHERE `battle` = "' . $btl->info['id'] . '" AND `uid1` = "' . $this->u->info['id'] . '" AND `uid2` = "' . $this->u->info['enemy'] . '" LIMIT 1')); + if (($this->u->info['enemy'] == 0 || isset($ga['id'])) && ($pl['tr_hod'] > 0 || $pl['trUser'] > 0)) { + $notr++; + } + } + + $notr += $this->testpriem($pl, 1, $this->ue['id']); + + if ($this->ue['id'] > 0) { + $notr += $this->testRazmenOldUser($this->ue['id'], $this->u->info['enemy'], $pl['id']); + } + + if ($notr == 0) { + mysql_query('UPDATE `stats` SET `last_pr` = "' . $pl['id'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + + //Приемы на персонажах + if ($this->ue['id'] > 0) { + $btl->priemsRazmen([$this->u->info['id'], $this->ue['id']], 'fast'); + mysql_query('UPDATE `eff_users` SET `mark` = 1 WHERE `uid` = "' . $this->ue['id'] . '" AND `delete` = 0'); + } else { + $btl->priemsRazmen([$this->u->info['id'], $this->u->info['enemy']], 'fast'); + mysql_query('UPDATE `eff_users` SET `mark` = 1 WHERE `uid` = "' . $this->u->info['enemy'] . '" AND `delete` = 0'); + } + mysql_query('UPDATE `eff_users` SET `mark` = 1 WHERE `uid` = "' . $this->u->info['id'] . '" AND `delete` = 0'); + + if (file_exists('../../_incl_data/class/priem/' . $pl['id'] . '.php')) { + require('../../_incl_data/class/priem/' . $pl['id'] . '.php'); + $this->testDie($this->ue['id']); + } else { + echo 'useSkill' . $pl['id']; + } + + if (!isset($cup)) { + $this->uppz($pl, $id); + //Отнимаем тактики + //$this->mintr($pl); + if ($pl['tr_hod'] > 0) { + $this->trhod($pl); + } + if ($pl['id'] != 258) { + if ($pl['cancel_eff'] == '') { + $pl['cancel_eff'] = '258'; + } else { + $pl['cancel_eff'] .= ',258'; + } + } + if ($pl['cancel_eff'] != '') { + $i = 0; + $e = explode(',', $pl['cancel_eff']); + while ($i < count($e)) { + if ($e[$i] > 0) { + if ($e[$i] == 258) { + $nem = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $this->u->info['id'] . '" AND `v1` = "priem" AND `v2` = "' . $e[$i] . '" AND `delete` = "0" AND `mark` = 1 LIMIT 1')); + } else { + $nem = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $this->ue['id'] . '" AND `v1` = "priem" AND `v2` = "' . $e[$i] . '" AND `delete` = "0" AND `mark` = 1 LIMIT 1')); + } + if (isset($nem['id'])) { + $nem['priem'] = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $e[$i] . '" LIMIT 1')); + if (isset($nem['id'])) { + $btl->delPriem($nem, $btl->users[$btl->uids[$this->ue['id']]], 500); + } + } + } + $i++; + } + } + } + } + } + } + } + } + + private function rezadEff($uid, $mg) + { + global $u, $btl, $c, $code; + //$this->rezadEff($this->u->info['id'],'wis_fire_'); + $md = ''; + $md2 = ''; + $ex = explode('|', $btl->users[$btl->uids[$uid]]['priems']); + $ex2 = explode('|', $btl->users[$btl->uids[$uid]]['priems_z']); + $i = 0; + $ty = []; + while ($i < count($ex)) { + if ($ex[$i] > 0) { + $md .= '`id` = "' . ((int)$ex[$i]) . '" OR '; + $ty[$ex[$i]] = $i; + } + $i++; + } + $md = rtrim($md, ' OR '); + if ($md != '') { + $md = '( ' . $md . ' ) AND '; + } + $sp = mysql_query('SELECT * FROM `priems` WHERE ' . $md . ' `img` LIKE "%' . $mg . '%"'); + while ($pl = mysql_fetch_assoc($sp)) { + $ex2[$ty[$pl['id']]] = 0; + } + $md2 = implode('|', $ex2); + $btl->users[$btl->uids[$uid]]['priems_z'] = $md2; + $this->u->info['priems_z'] = $md2; + $upd = mysql_query('UPDATE `stats` SET `priems_z` = "' . $md2 . '" WHERE `id` = "' . ((int)$uid) . '" LIMIT 1'); + unset($md, $md2, $ty); + return $upd; + } + + private function trhod($pl) + { + global $u, $btl; + if ($this->u->info['notrhod'] == -1) { + $this->u->info['notrhod'] = 0; + if ($this->u->stats['magic_cast'] > 0) { + $this->u->info['notrhod'] = $this->u->stats['magic_cast']; + } + mysql_query('UPDATE `users` SET `notrhod` = "' . $this->u->info['notrhod'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + } + if ($this->u->info['notrhod'] > 0) { + if ($pl['tr_hod'] > 0) { + $this->u->info['notrhod']--; + mysql_query('UPDATE `users` SET `notrhod` = "' . $this->u->info['notrhod'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + } + } else { + $a1 = mysql_fetch_assoc(mysql_query('SELECT * FROM `battle_act` WHERE `battle` = "' . $btl->info['id'] . '" AND `uid2` = "' . $this->u->info['id'] . '" AND `uid1` = "' . $this->u->info['enemy'] . '" LIMIT 1')); + if (isset($a1['id'])) { + //противник ударил, пишем что игрок 2 пропустил ход + mysql_query('UPDATE `battle_act` SET `out2` = "1",`tpo2` = "2" WHERE `id` = "' . $a1['id'] . '" LIMIT 1'); + $a1['out2'] = 1; + $a1['tpo2'] = 2; + $btl->atacks[$a1['id']] = $a1; + $btl->users[$this->u->info['id']]['priems_z'] = $this->u->info['priems_z']; + $btl->startAtack($a1['id']); + } else { + //бьем противника с пропуском хода + mysql_query('INSERT INTO `battle_act` (`battle`,`uid1`,`uid2`,`time`,`out1`,`type`,`tpo1`) VALUES ("' . $btl->info['id'] . '","' . $this->u->info['id'] . '","' . $this->u->info['enemy'] . '","' . time() . '","1","1","2")'); + } + } + } + + public function plusData($d1, $d2) + { + global $u; + $j1 = $this->lookStatsArray($d1); + $j2 = $this->lookStatsArray($this->redate($d2, $this->u->info['id'])); + $v = $this->u->lookKeys($this->redate($d2, $this->u->info['id']), 0); // ключи 2 + //добавляем данные друг к другу + $i = 0; + $inf = ''; + while ($i < count($v)) { + $j1[$v[$i]] += $j2[$v[$i]]; + $vi = str_replace('add_', '', $v[$i]); + if ($this->u->is[$vi] != '') { + if ($j2[$v[$i]] > 0) { + $inf .= $this->u->is[$vi] . ': +' . ($j2[$v[$i]] * (1 + $mpr['x'])) . ', '; + } elseif ($j2[$v[$i]] < 0) { + $inf .= $this->u->is[$vi] . ': ' . ($j2[$v[$i]] * (1 + $mpr['x'])) . ', '; + } + } + $i++; + } + $inf = rtrim($inf, ', '); + $j1 = $this->u->impStats($j1); + return $j1; + } + + private function addEffPr($pl, $id) + { + global $u, $btl; + $rcu = false; + $j = $this->lookStatsArray($pl['date2']); + $mpr = false; + $addch = 0; + $uid = $this->u->info['id']; + if (isset($this->ue['id'])) { + $uid = $this->ue['id']; + } + if (isset($j['onlyOne'])) { + $mpr = Db::getRow('select * from eff_users where v2 = ? and uid = ? and `delete` = 0 and mark = 1', + [$pl['id'], $uid]); + //$mpr = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `v2` = "' . $pl['id'] . '" AND `uid` = "' . $uid . '" AND `delete` = "0" AND `mark` = 1 LIMIT 1')); + } + +// if ($pl['cancel_eff2'] != '') { +// $i = 0; +// $e = explode(',', $pl['cancel_eff2']); +// while ($i < count($e)) { +// if ($e[$i] > 0) { +// $nem = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $uid . '" AND `v1` = "priem" AND `v2` = "' . $e[$i] . '" AND `delete` = "0" AND `mark` = 1 LIMIT 1')); +// if (isset($nem['id'])) { +// $nem['priem'] = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $e[$i] . '" LIMIT 1')); +// if (isset($nem['id'])) { +// $btl->delPriem($nem, $btl->users[$btl->uids[$uid]], 2); +// if ($nem['id'] == $mpr['id']) { +// unset($mpr); +// } +// } +// } +// } +// $i++; +// } +// } + + if (!empty($pl['cancel_eff2'])) { + $this->cancelEffects($pl['cancel_eff2'], $uid, $btl); + } + + $pld = [0 => '']; + $nc = 0; + if (isset($mpr['id']) && $j['onlyOne'] == 1) { + //отнимаем тактики + $addch = 1; + $this->mintr($pl); + $this->uppz($pl, $id); + //добавляем прием в эффекты + if (isset($this->ue['id'])) { + $btl->stats[$btl->uids[$uid]] = $this->u->getStats($this->ue, 0); + } else { + $btl->stats[$btl->uids[$uid]] = $this->u->getStats($this->u->info, 0); + } + $nc = 1; + } elseif (!isset($mpr['id'])) { + $data = ''; + if (isset($j['date3Plus'])) { + $data = $this->redate($pl['date3'], $this->u->info['id']); + } + + $hd1 = -1; + if ($pl['limit'] > 0) { + $tm = 77; + $hd1 = $pl['limit']; + } else { + $tm = 77; + } + if ($pl['limit'] == -2) { + $hd1 = $pl['limit']; + } + if ($pl['id'] == 239) //Вывод приемов которые не моментальные как бы + { + $btl->priemAddLogFast($uid, 0, $pl['name'], + '{tm' . $this->u->info['team'] . '} ' . $btl->addlt(1, 17, $btl->users[$btl->uids[$uid]]['sex'], + null) . '', + 1, time()); + } + + $uu = $pl['id'] === 260 ? '' : $this->u->info['id']; + Db::sql('insert into eff_users (hod, v1, v2, img2, id_eff, uid, name, data, overType, timeUse, user_use) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', + [$hd1, 'priem', $pl['id'], $pl['img'] . '.gif', 22, $uid, $pl['name'], $data, 0, $tm, $uu]); + + unset($hd1, $uu); + //отнимаем тактики + $addch = 1; + $rcu = true; + $nc = 1; + $this->mintr($pl); + //$this->uppz($pl,$id); + //добавляем прием в эффекты + if (isset($this->ue['id'])) { + $btl->stats[$btl->uids[$uid]] = $this->u->getStats($this->ue, 0); + } else { + $btl->stats[$btl->uids[$uid]] = $this->u->getStats($this->u->info, 0); + } + } elseif ($j['onlyOne'] > 1) { + if ($mpr['x'] < $j['onlyOne'] && isset($j['date3Plus'])) { + $j1 = $this->lookStatsArray($mpr['data']); + $j2 = $this->lookStatsArray($this->redate($pl['date3'], $this->u->info['id'])); + $v = $this->u->lookKeys($this->redate($pl['date3'], $this->u->info['id']), 0); // ключи 2 + //добавляем данные друг к другу + $i = 0; + $inf = ''; + while ($i < count($v)) { + $j1[$v[$i]] += $j2[$v[$i]]; + $vi = str_replace('add_', '', $v[$i]); + if ($this->u->is[$vi] != '') { + if ($j2[$v[$i]] > 0) { + $inf .= $this->u->is[$vi] . ': +' . ($j2[$v[$i]] * (1 + $mpr['x'])) . ', '; + } elseif ($j2[$v[$i]] < 0) { + $inf .= $this->u->is[$vi] . ': ' . ($j2[$v[$i]] * (1 + $mpr['x'])) . ', '; + } + } + $i++; + } + $inf = rtrim($inf, ', '); + $j1 = $this->u->impStats($j1); + $pld[0] = ' x' . ($mpr['x'] + 1); + if ($j['refHod'] == 1) { + $mpr['hod'] = $pl['limit']; + } + $upd = mysql_query('UPDATE `eff_users` SET `hod` = "' . $mpr['hod'] . '",`data` = "' . $j1 . '",`x` = `x`+1 WHERE `id` = "' . $mpr['id'] . '" LIMIT 1'); + if ($upd) { + //отнимаем тактики + $this->mintr($pl); + $this->uppz($pl, $id); + //добавляем прием в эффекты + if (isset($this->ue['id'])) { + $btl->stats[$btl->uids[$uid]] = $this->u->getStats($this->ue, 0); + } else { + $btl->stats[$btl->uids[$uid]] = $this->u->getStats($this->u->info, 0); + } + $addch = 1; + $rcu = true; + $nc = 1; + } + } + } + /* тратим свой ход */ + if ($nc == 1 && $pl['tr_hod'] > 0) { + $this->trhod($pl); + } + //return $rcu; + } + + public function mintr($pl) + { + global $u, $btl; + $x = 1; + $rt = ''; + while ($x <= 7) { + if ($pl['ndt' . $x] == 0) { + $this->u->info['tactic' . $x] -= $pl['tt' . $x]; + $btl->users[$btl->uids[$this->u->info['id']]]['tactic' . $x] -= $pl['tt' . $x]; + } + if ($this->u->info['tactic' . $x] < 0) { + $this->u->info['tactic' . $x] = 0; + } + if ($btl->users[$btl->uids[$this->u->info['id']]]['tactic' . $x] < 0) { + $btl->users[$btl->uids[$this->u->info['id']]]['tactic' . $x] = 0; + } + //$rt .= ',`tactic'.$x.'`="'.$this->u->info['tactic'.$x].'"'; + $rt .= ',`tactic' . $x . '`="' . $btl->users[$btl->uids[$this->u->info['id']]]['tactic' . $x] . '"'; + $x++; + } + if ($pl['xuse'] > 0) { + $this->u->addAction(time(), 'use_priem_' . $btl->info['id'] . '_' . $this->u->info['id'], $pl['id']); + } + $rt = ltrim($rt, ','); + mysql_query('UPDATE `stats` SET ' . $rt . ' WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + } + + public function maxtr($x, $val) + { + global $u, $btl; + $this->u->info['tactic' . $x] += $val; + $btl->users[$btl->uids[$this->u->info['id']]]['tactic' . $x] += $val; + if ($this->u->info['tactic' . $x] < 0) { + $this->u->info['tactic' . $x] = 0; + } + if ($btl->users[$btl->uids[$this->u->info['id']]]['tactic' . $x] < 0) { + $btl->users[$btl->uids[$this->u->info['id']]]['tactic' . $x] = 0; + } + $rt = '`tactic' . $x . '`="' . $this->u->info['tactic' . $x] . '"'; + mysql_query('UPDATE `stats` SET ' . $rt . ' WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + } + + private function actpridMax($pl) + { + global $u, $btl; + if ($pl['actprid2'] > 0 || $pl['actprid3'] > 0) { + $i = 0; + $pe = explode('|', $this->u->info['priems']); + $piz = []; + while ($i < count($pe)) { + if ($pl['sbr'] == 0) { + //все блокируем + $psp = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . ((int)$pe[$i]) . '" LIMIT 1')); + } else { + //Только текущую школу магии + $imgnm = ''; + $nm = explode('_', $pl['img']); + if ($nm[0] == 'wis') { //магия + $imgnm = $nm[0] . '_' . $nm[1] . '%'; + } else { + $imgnm = $nm[0] . '%'; + } + //только данной школы + $psp = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . ((int)$pe[$i]) . '" AND `img` LIKE "' . $imgnm . '" LIMIT 1')); + } + if ($pl['noprid'] == 0 && isset($psp['id']) && $psp['tr_hod'] == 0 && $psp['type_pr'] == 1 && $psp['noprid'] == 0) { + if ($pl['actprid2'] > 0) { + $piz[$pe[$i]] = (int)$pl['actprid2']; + } elseif ($pl['actprid3'] > 0) { + $piz[$pe[$i]] = $psp['zad']; + } + } + $i++; + } + $pz = explode('|', $this->u->info['priems_z']); + $p = explode('|', $this->u->info['priems']); + $i = 0; + while ($i < count($p)) { + if ($p[$i] > 0 && isset($piz[$p[$i]]) && $pz[$i] == 0) { + $pz[$i] = $piz[$p[$i]]; + } + $i++; + } + $pz = implode('|', $pz); + $this->u->info['priems_z'] = $pz; + $btl->users[$btl->uids[$this->u->info['id']]]['priems_z'] = $pz; + $btl->stats[$btl->uids[$this->u->info['id']]]['priems_z'] = $pz; + } + } + + public function uppz($pl, $id) + { + global $u, $btl; + $this->actpridMax($pl); + $p = explode('|', $this->u->info['priems']); + $pz = explode('|', $this->u->info['priems_z']); + $pz[(int)$id] = $pl['zad']; + $i = 0; + $pe = explode(',', $pl['actprid']); + $piz = []; + while ($i < count($pe)) { + $piz[$pe[$i]] = 1; + $i++; + } + $i = 0; + $pe = explode(',', $pl['actprid_one']); + $piz2 = []; + while ($i < count($pe)) { + $piz2[$pe[$i]] = 1; + $i++; + } + $i = 0; + while ($i < count($p)) { + if ($p[$i] > 0) { + if (isset($piz[$p[$i]])) { + if ($pl['id'] == 281) { + //Жертва воде + воздуху дает 5 ед. задержки на землю и огонь + if ($p[$i] == 246 || $p[$i] == 186) { + $pz[$i] = 5; + } else { + $pz[$i] = $pl['zad']; + } + } else { + $pz[$i] = $pl['zad']; + } + } + if (isset($piz2[$p[$i]]) && $pz[$i] == 0) { + $pz[$i] = 1; + } + } + $i++; + } + $pz = implode('|', $pz); + $this->u->info['priems_z'] = $pz; + $btl->users[$btl->uids[$this->u->info['id']]]['priems_z'] = $pz; + $btl->stats[$btl->uids[$this->u->info['id']]]['priems_z'] = $pz; + $tr = $this->lookStatsArray($pl['tr']); + if (isset($tr['tr_mpNow'])) { + $tr['tr_mpNow'] = round($tr['tr_mpNow'] / 100 * (100 - $this->u->stats['min_use_mp'])); + $btl->users[$btl->uids[$this->u->info['id']]]['mpNow'] -= $tr['tr_mpNow']; + $btl->stats[$btl->uids[$this->u->info['id']]]['mpNow'] -= $tr['tr_mpNow']; + if ($btl->stats[$btl->uids[$this->u->info['id']]]['mpNow'] < $btl->users[$btl->uids[$this->u->info['id']]]['mpNow']) { + $btl->users[$btl->uids[$this->u->info['id']]]['mpNow'] = $btl->stats[$btl->uids[$this->u->info['id']]]['mpNow']; + } + } + $this->u->info['mpNow'] = $btl->users[$btl->uids[$this->u->info['id']]]['mpNow']; + mysql_query('UPDATE `stats` SET `mpNow` = "' . $this->u->info['mpNow'] . '",`priems_z` = "' . $pz . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + } + + public function reuns($id) + { + global $u, $c, $code; + $p = explode('|', $this->u->info['priems']); + if ($p[(int)$id] > 0) { + //снимаем прием + $p[(int)$id] = 0; + $p = implode('|', $p); + mysql_query('UPDATE `stats` SET `priems` = "' . mysql_real_escape_string($p) . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + $this->u->info['priems'] = $p; + } + } + + /** Одеть приём в слот? + * @param $id + * @return void + */ + public function uns($id) + { + global $u, $c, $code; + $pl = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `level`<="' . $this->u->info['level'] . '" AND `activ` > "0" AND `id` = "' . $id . '" LIMIT 1')); + if (!isset($pl['id']) || $this->testpriem($pl, 1) != 0) { + return; + } + $yes = -1; + $non = -1; + $i = 0; + $p = explode('|', $this->u->info['priems']); + while ($i < $this->u->info['priemslot']) { + if ($non == -1 && $p[$i] == 0) { + $non = $i; + } + if ($p[$i] == $pl['id']) { + $yes = $i; + } + $i++; + } + + if ($yes != -1) { + //такой прием уже стоит, ничего не делаем + return; + } + if ($non != -1) { + //одеваем прием + $p[$non] = $pl['id']; + $p = implode('|', $p); + $upd = mysql_query('UPDATE `stats` SET `priems` = "' . $p . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + if ($upd) { + $this->u->info['priems'] = $p; + } + } else { + //снимаем последний прием + echo 'Снимаем последний прием...'; + } + } + + //выводим приемы $id - 1 (вне боя), 2 - в бою + public function seeMy($t) + { + global $u, $c, $code, $btl; + $i = 0; + $p = explode('|', $this->u->info['priems']); + $lvar = ''; + $pr = ''; + while ($i < $this->u->info['priemslot']) { + if ($p[$i] > 0) { + $pl = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `level`<="' . $this->u->info['level'] . '" AND `activ` > "0" AND `id` = "' . mysql_real_escape_string($p[$i]) . '" LIMIT 1')); + $lvar = $this->priemInfo($pl, $t, $i); + $pz = $lvar[1]; + $lvar = $lvar[0]; + if ($t == 1) { + if (isset($_GET['inv'])) { + //$cl = 'href="main.php?skills=1&rz=4"'; + $cl = 'href="javascript:void(0)" onclick="location.href=\'main.php?all=' . ((int)$_GET['all']) . '&skills=1&rz=4&p_raz=all\'"'; + } else { + //$cl = 'href="main.php?skills=1&rz=4&unuse_priem='.$i.'&rnd='.$code.'"'; + $cl = 'href="javascript:void(0)" onclick="location.href=\'main.php?all=' . ((int)$_GET['all']) . '&skills=1&unuse_priem=' . $i . '&rz=4&p_raz=\' + p_raz"'; + } + } else { + if ($pl['type'] == 1) { + //моментально + if ($pl['onUser'] == 1) { + $oninuser = ''; + if ($pl['team'] == 1) { + if ($this->u->info['login2'] != '') { + $oninuser = $this->u->info['login2']; + } else { + $oninuser = $this->u->info['login']; + } + } else { + if ($btl->users[$btl->uids[$this->u->info['enemy']]]['login2'] != '') { + $oninuser = $btl->users[$btl->uids[$this->u->info['enemy']]]['login2']; + } else { + $oninuser = $btl->users[$btl->uids[$this->u->info['enemy']]]['login']; + } + } + $cl = 'href="javascript:void(0);" onClick="top.priemOnUser(' . $i . ',1,\'' . $pl['name'] . '\',\'' . $oninuser . '\',\'' . $pl['img'] . '\');"'; + unset($oninuser); + } else { + $cl = 'href="javascript:void(0);" onClick="usepriem(' . $i . ',1,\'' . $pl['img'] . '\');"'; + } + } elseif ($pl['type'] == 2) { + //длительное + $cl = 'href="javascript:void(0);" onClick="usepriem(' . $i . ',1,\'' . $pl['img'] . '\');"'; + } elseif ($pl['type'] == 3) { + $cl = 'href="javascript:void(0);" onClick="alert(\'Возможно используем?\');"'; + } + } - if($pl['xuse']>0) - { - $xu = $u->testAction('`vars` = "use_priem_'.$btl->info['id'].'_'.$u->info['id'].'" AND `vals` = "'.$pl['id'].'" LIMIT '.$pl['xuse'].'',2); - if($xu[0]>=$pl['xuse']) - { - $notr++; - } - } + $notr = $this->testpriem($pl, $t); - $x = 0; - $t = $u->items['tr']; - while($x < count($t)) - { - $n = $t[$x]; - if(isset($tr['tr_'.$n])) - { - if($n=='lvl') - { - if($tr['tr_'.$n] > $u->info['level']) - { - $notr++; - } - }elseif($tr['tr_'.$n] > $u->stats[$n]) - { - $notr++; - } - } - $x++; - } - - - - if($pl['activ']==0 || ($this->testActiv($pl['activ'])==0 && $pl['activ']>1)) - { - $notr++; - } - - - //if($t==2) - //{ - if(isset($d2['onlyOne']) || isset($d2['onlyOneX1'])) - { - if(isset($d2['onlyOneX1'])) - { - if($d2['onlyOneX1'] == 1) - { - $pru = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `v2` = "'.$pl['id'].'" AND `delete` = "0" AND `x` >= 1 LIMIT 1')); - if(isset($pru['id']) && $pru['x']>=$d2['onlyOne']) - { - $notr++; - } - } - } - elseif(isset($d2['onlyOne'])) - { - if($d2['onlyOne']>1) - { - $pru = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `v2` = "'.$pl['id'].'" AND `delete` = "0" AND `x` > 1 LIMIT 1')); - if(isset($pru['id']) && $pru['x']>=$d2['onlyOne']) - { - $notr++; - } - } - } - } - - /* - if($d2['onlyOne']>1 || $d2['onlyOneX1'] == 1) - { - if( $d2['onlyOneX1'] == 1 ) { - $pru = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `v2` = "'.$pl['id'].'" AND `delete` = "0" AND `x` >= 1 LIMIT 1')); - }else{ - $pru = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `v2` = "'.$pl['id'].'" AND `delete` = "0" AND `x` > 1 LIMIT 1')); - } - if(isset($pru['id']) && $pru['x']>=$d2['onlyOne']) { - $notr++; - } - }*/ - - - - - - //} - - //Требует чтобы не было - if(isset($tr['tr_nousepriem'])) { - $x = 0; - $nouse = explode(',',$tr['tr_nousepriem']); - while($x < count($nouse)) { - $nousev = explode('.',$nouse[$x]); - if(isset($btl->stats[$btl->uids[$u->info['id']]]['prsu'][$nousev[0]]) && $btl->stats[$btl->uids[$u->info['id']]]['prsu'][$nousev[0]] >= 0) { - if($nousev[2] > 1) { - if($nousev[2] <= $btl->stats[$btl->uids[$u->info['id']]]['prsu'][$nousev[0]]) { - $notr++; - } - }else{ - $notr++; - } - } - $x++; - } - unset($nouse,$nousev); - } - - if(isset($tr['tr_type_itm1'])) { - //требует наличие предмета определенного типа - $itmt = mysql_fetch_assoc(mysql_query('SELECT `u`.`id` FROM `items_users` AS `u` LEFT JOIN `items_main` AS `m` ON `m`.`id` = `u`.`item_id` WHERE `m`.`type` = "'.$tr['tr_type_itm1'].'" AND `u`.`inOdet` > 0 AND `u`.`uid` = "'.$u->info['id'].'" AND `u`.`delete` = "0" LIMIT 1')); - if(!isset($itmt['id'])) { - $notr++; - } - } - - if(isset($tr['tr_mpNow'])) - { - if(isset($btl->stats[$btl->uids[$u->info['id']]])) - { - if($btl->stats[$btl->uids[$u->info['id']]]['mpNow'] < round($tr['tr_mpNow']/100*(100-$btl->stats[$btl->uids[$u->info['id']]]['min_use_mp']))) - { - $notr++; - } - }else{ - if($u->info['mpNow'] < $tr['tr_mpNow']) - { - $notr++; - } - } - } - - if(isset($btl->uids[$u->info['id']],$btl->stats[$btl->uids[$u->info['id']]])) - { - if($pl['trUser']==1) - { - //требует чтобы пользователь с кем-то разменивался (при ожидании прием гаснит) - if(isset($btl->ga[$u->info['id']][$u->info['enemy']])) - { - $notr++; - } - }elseif($pl['trUser']==2 && $o > 0) - { - //требует чтобы пользователь с кем-то разменивался (при ожидании не пропадает, но не используется) - $ga = mysql_fetch_assoc(mysql_query('SELECT * FROM `battle_act` WHERE `battle` = "'.$btl->info['id'].'" AND `uid1` = "'.$u->info['id'].'" AND `uid2` = "'.$btl->users[$btl->uids[$u->info['id']]]['enemy'].'" LIMIT 1')); - if(isset($ga['id'])) - { - $notr++; - } - } - } - - - return $notr; - } - - public function priemInfo($pl,$t,$id = false) - { - global $u,$c,$code,$btl; - $pz = explode('|',$u->info['priems_z']); - $tr = $u->lookStats($pl['tr']); - $trs = ''; - $x = 0; - $notr = 0; - $t = $u->items['tr']; - while($x $u->stats[$n]) - { - $trs .= ''; $notr++; - } - $trs .= '
• '; - $trs .= $u->is[$n].': '.$tr['tr_'.$n]; - if($tr['tr_'.$n] > $u->stats[$n]) - { - $trs .= '
'; - } - } - $x++; - } - - $lvar = ''; - $j = 1; - $nm = array(1=>'hit',2=>'krit',3=>'counter',4=>'block',5=>'parry',6=>'hp',7=>'spirit'); - while($j<=6) - { - if($pl['tt'.$j]>0) - { - $lvar .= ' '.round($pl['tt'.$j],2).'   '; - } - $j++; - } - if($pl['tt7']>0) - { - if($lvar!='') - { - $lvar .= '
'; - } - $lvar .= 'Сила духа: '.round($pl['tt'.$j],2).'
'; - } - $lvar .= '
'; - if($pl['zad']>0) - { - $lvar .= 'Задержка: '.$pl['zad']; - if($pz[$id]>0) - { - $lvar .= ' (еще '.$pz[$id].')'; - } - $lvar .= '
'; - } - if(isset($tr['tr_mpNow']) && $tr['tr_mpNow']>0) - { - $tr['tr_mpNow'] -= round($tr['tr_mpNow']/100*$u->stats['min_use_mp']); - if($u->info['mpNow']<$tr['tr_mpNow'] || (isset($btl->stats[$btl->uids[$u->info['id']]]) && $btl->stats[$btl->uids[$u->info['id']]]['mpNow']<$tr['tr_mpNow'])) - { - $lvar .= '• Расход маны: '.$tr['tr_mpNow'].'
'; - }else{ - $lvar .= '• Расход маны: '.$tr['tr_mpNow'].'
'; - } - } - if($pl['tr_hod']>0) - { - $lvar .= '• Прием тратит ход
'; - } - if($trs!='') - { - $lvar .= 'Требования:'.$trs.'

'; - }else{ - $lvar .= '
'; - } - $pl['info'] = preg_replace("!(\#)(.*?)(\#)!ise","getdr('\\2',array(0=>'lvl1',1=>'ts5',2=>'mpAll'),array(0=>'".$u->info['level']."',1=>'".$u->stats['s5']."',2=>'".$u->stats['mpAll']."'))",$pl['info']); - $lvar .= $pl['info']; - $lvar = array(0=>$lvar,1=>$pz); - return $lvar; - } - - //Мощность / подавление / сопротивление и т.д. - public function testPower($s1,$s2,$y,$t,$t2) - { - global $u,$btl; - - $r = 0; - if($t2==2) - { - //урон магией - $pm = array(0=>0,1=>0,2=>0,3=>0); - if($t<5) - { - $pm[0] = $s1['m11']; - $pm[1] = $s2['zm']; - $pm[2] = $s2['antm11']; - } - - if(isset($btl->info['id'])) - { - $pm[3] = $btl->zmgo( $s2['zm'.$t] ); - $pm[3] = round($pm[3]); - } + $cl2 = ''; + $cli2 = ''; + if ((($pz[$i] > 0 || $notr > 0) && $t == 2) || (isset($this->u->stats['nopriems']) && $pl['nosh'] == 0) || $this->u->stats['notuse_last_pr'] == $pl['id']) { + //$cl2 = 'filter: alpha(opacity=15); -moz-opacity: 0.15; -khtml-opacity: 0.15; opacity: 0.15;'; + $cli2 = ' class="nopriemuse" '; + } - //$p += $p/100*($s1['pm'.$t]*0.75+$pm[0]*1.01+$s1['m11a']*0.75-($s2['antpm'.$t]+$s2['antm11a']+$pm[2])) - $p/75*$pm[3]; //от мощностей и защита противника - - //$kfl = 250; - - //$p = $y*(1+ ( $s1['pm'.$t]-$s2['antpm'.$t]-$s2['antm11a']-$pm[2] ) /100)*pow(2,(( ( $s2['pzm'.$t] ) * 10-(($s2['zma']+$pm[1]) + $s2['zm'.$t]) )/$kfl)); - - //урон = b*(1+m/100)*2^((p*10-z)/k) - $fx_vl = array( - 250,250,250,250,250,250,250,250,250,350,400,450,500,550,600,650,700,750,800,850,900,950 - ); - - $fx = array( - 'b' => $y, //базовый урон - 'm' => round( $s1['pm'.$t] * 1 - $s2['antpm'.$t] ), //мощь - 'z' => round( $s2['zm'.$t] ), //защита цели ед. - 'p' => round( ($s1['pzm'] + $s1['pzm'.$t])), //подавление - 'k' => $fx_vl[(0+$s1['lvl'])] //коэффициент ; k=250 для 8ки, k=300 для 9ки и т.д. +20% на уровень - ); - if( ($fx['z']+250) - $fx['p']*10 < 0 ) { //защита не может уйти больше, чем в 250 ед. - $fx['p'] = ($fx['z']+250)/10; - } - $fx['p'] = 0; - // - $p = $fx['b'] * ( 1 + $fx['m'] / 100 ) * pow( 2, ( ( $fx['z'] - $fx['p'] * 10 ) / $fx['k'] ) ); - //$p += $p/100*10; - $p -= $p/100*$pm[3]; - //$p += floor($s1['s5']*0.25); - - if($p < round($y*0.1)) { - $p = round($y*0.1); - }elseif($p > round($y*10)) { - $p = $y*10; - } - - //$p += $p/100*($s1['pzm']+$s1['pzm'.$t]); //от подавления маг.защиты - if( isset($s2['zm'.$t.'proc'])) //защита от магии стихий (призрачки) - { - - $p = floor($p/100*(100-$s2['zm'.$t.'proc'])); - if($p<0) - { - $p = 0; - } - - } - if(isset($s2['zmproc']) ) //защита от магии стихий (призрачки) - { - - if ($s2['zmproc']>=75) - { - $p = floor($p/100*(100-75)); - } - else - { - $p = floor($p/100*(100-$s2['zmproc'])); - if($p<0) - { - $p = 0; - } - } - - } - - //$p = round($p/100*rand(97,100)); - $r = $p; + $pr .= ''; + } else { + //if($t==1) + //{ + if (isset($_GET['inv'])) { + $pr .= ''; + } else { + $pr .= ''; + } + //} + } + $i++; + } + if ($this->u->info['animal'] > 0 && $t == 2) { + $use_lst = $this->u->testAction('`uid` = "' . $this->u->info['id'] . '" AND `vars` = "animal_use' . $btl->info['id'] . '" LIMIT 1', + 1); + if (!isset($use_lst['id'])) { + $cl2 = ''; + $pr .= ''; + } else { + $cl2 = '" class="nopriemuse'; + $pr .= ''; + } + } + if ($t == 1) { + echo '
' . $pr . '
'; + } elseif ($t == 2) { + return str_replace('"', '\\"', $pr); + } + } - }else{ - //урон оружием - - } - - $r = round($r/100*70); + public function testpriem($pl, $t = 1, $o = 0) + { + global $c, $u, $code, $btl; + $tr = $this->lookStatsArray($pl['tr']); + $d2 = $this->lookStatsArray($pl['date2']); + $x = 1; + $notr = 0; - return $r; - - - /* //if($u->info['id']==340379 or $u->info['id']==399105){ - // echo '$y '.$y.'
'; - //} - $r = 0; - if($t2==2) - { - //урон магией - $pm = array(0=>0,1=>0,2=>0,3=>0); - if($t<5) - { - $pm[0] = $s1['m11']; - $pm[1] = $s2['zm']; - $pm[2] = $s2['antm11']; - } - $p = $y; - - //$p += ($s1['s5']*($p/100*0.52)); //от интелекта - $p += 0; //от умений - - if(isset($btl->info['id'])) - { - //$pm[3] = ($p/100*((($s2['zma']+$pm[1])+$s2['zm'.$t])*1.25))*0.20; - $pm[3] = $btl->zmgo( ($s2['zma']+$pm[1]) + $s2['zm'.$t] ); - $pm[3] = round($pm[3]); - } + if ($t == 2 && $pl['id'] == 181) { + $imun = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $this->u->info['enemy'] . '" and `v2`="191" and `delete`="0" LIMIT 1')); + if ($imun) { + $notr++; + } + } - $p += $p/100*($s1['pm'.$t]*0.75+$pm[0]*1.01+$s1['m11a']*0.75-($s2['antpm'.$t]+$s2['antm11a']+$pm[2])) - $p/75*$pm[3]; //от мощностей и защита противника - - - $p += $p/100*($s1['pzm']+$s1['pzm'.$t]); //от подавления маг.защиты - if(isset($s2['zmproc']) || isset($s2['zm'.$t.'proc'])) //защита от магии стихий (призрачки) - { - - $p = floor($p/100*(100-$s2['zmproc']-$s2['zm'.$t.'proc'])); - if($p<0) - { - $p = 0; - } - - } - $p = round($p/100*rand(90,100)); - $r = $p; + if (isset($btl->stats[$btl->uids[$this->u->info['id']]]['nousepriem']) && $btl->stats[$btl->uids[$this->u->info['id']]]['nousepriem'] > 0 && $pl['nosh'] == 0) { + if ($btl->stats[$btl->uids[$this->u->info['id']]]['noshock_voda'] > 0 && substr($pl['img'], 0, + 10) == 'wis_water_') { + //вода + } else { + $notr++; + } + } - }else{ - //урон оружием - - } - //if($u->info['id']==340379 or $u->info['id']==399105){ - // echo '$r '.$r.'
'; - // } - return $r;*/ - } - - private function pyes($id) - { - global $u; - $p = explode('|',$u->info['priems']); - $r = false; - $i = 0; - while($iinfo['inTurnir'] == 0 || true == true ) { - $t = $u->items['tr']; - $nm = array(1=>'hit',2=>'krit',3=>'counter',4=>'block',5=>'parry',6=>'hp',7=>'spirit'); - $lvlfe = $u->info['level']; - if(isset($_GET['all'])) { - $lvlfe = 21; - } - $sp = mysql_query('SELECT * FROM `priems` WHERE `level`<="'.$lvlfe.'" AND `activ` > "0" ORDER BY `img`,`level` ASC'); - $u->info['lvl'] = $u->info['level']; $lvar = ''; - while($pl = mysql_fetch_assoc($sp)) - { - $noaki = 0; - if($pl['activ']==1 || $this->testActiv($pl['activ'])==1) - { - $lvar = $this->priemInfo($pl,1); - $lvar = $lvar[0]; - $cl = ''; $a1 = ''; $a2 = ''; - - //$cl = 'href="javascript:void(0)" onclick="location.href=\'main.php?skills=1&unuse_priem='.$i.'&rz=4&p_raz=\' + p_raz"'; - $a1 = ''; $a2 = ''; - - if($this->pyes($pl['id'])==true || $this->testpriem($pl,1)>0) - { - if((isset($_GET['all']) && $_GET['all'] == 1) || $this->pyes($pl['id'])==true) { - $cl = 'filter: alpha(opacity=35); -moz-opacity: 0.35; -khtml-opacity: 0.35; opacity: 0.35;'; - $a1 = ''; - $a2 = ''; - }else{ - $noaki = 1; - } - } - if($noaki == 0) { - $mtnu = explode('_',$pl['img']); - if($mtnu[0] != 'wis') { - $mtnu = $mtnu[0]; - }else{ - $mtnu = 'wis_'.$mtnu[1]; - } - echo $a1.''.$a2; - } - } - } - } - } + if ($pl['id'] == $btl->stats[$btl->uids[$this->u->info['id']]]['notuse_last_pr']) { + $notr++; + } + + while ($x <= 7) { + if (isset($btl->uids[$this->u->info['id']], $btl->users[$btl->uids[$this->u->info['id']]])) { + if ($btl->users[$btl->uids[$this->u->info['id']]]['tactic' . $x] < $pl['tt' . $x] && $x != 7 && $pl['tt' . $x] > 0) { + $notr++; + } elseif ($x == 7) { + if ($pl['tt' . $x] > 0 && $btl->users[$btl->uids[$this->u->info['id']]]['tactic' . $x] <= 0) { + $notr++; + } + } + } + $x++; + } + + + if ($pl['xuse'] > 0) { + $xu = $this->u->testAction('`vars` = "use_priem_' . $btl->info['id'] . '_' . $this->u->info['id'] . '" AND `vals` = "' . $pl['id'] . '" LIMIT ' . $pl['xuse'] . '', + 2); + if ($xu[0] >= $pl['xuse']) { + $notr++; + } + } + + $x = 0; + $t = $this->u->items['tr']; + while ($x < count($t)) { + $n = $t[$x]; + if (isset($tr['tr_' . $n])) { + if ($n == 'lvl') { + if ($tr['tr_' . $n] > $this->u->info['level']) { + $notr++; + } + } elseif ($tr['tr_' . $n] > $this->u->stats[$n]) { + $notr++; + } + } + $x++; + } + + + if ($pl['activ'] == 0 || ($this->testActiv($pl['activ']) == 0 && $pl['activ'] > 1)) { + $notr++; + } + + + //if($t==2) + //{ + if (isset($d2['onlyOne']) || isset($d2['onlyOneX1'])) { + if (isset($d2['onlyOneX1'])) { + if ($d2['onlyOneX1'] == 1) { + $pru = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $this->u->info['id'] . '" AND `v2` = "' . $pl['id'] . '" AND `delete` = "0" AND `x` >= 1 LIMIT 1')); + if (isset($pru['id']) && $pru['x'] >= $d2['onlyOne']) { + $notr++; + } + } + } elseif (isset($d2['onlyOne'])) { + if ($d2['onlyOne'] > 1) { + $pru = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $this->u->info['id'] . '" AND `v2` = "' . $pl['id'] . '" AND `delete` = "0" AND `x` > 1 LIMIT 1')); + if (isset($pru['id']) && $pru['x'] >= $d2['onlyOne']) { + $notr++; + } + } + } + } + + //Требует чтобы не было + if (isset($tr['tr_nousepriem'])) { + $x = 0; + $nouse = explode(',', $tr['tr_nousepriem']); + while ($x < count($nouse)) { + $nousev = explode('.', $nouse[$x]); + if (isset($btl->stats[$btl->uids[$this->u->info['id']]]['prsu'][$nousev[0]]) && $btl->stats[$btl->uids[$this->u->info['id']]]['prsu'][$nousev[0]] >= 0) { + if ($nousev[2] > 1) { + if ($nousev[2] <= $btl->stats[$btl->uids[$this->u->info['id']]]['prsu'][$nousev[0]]) { + $notr++; + } + } else { + $notr++; + } + } + $x++; + } + unset($nouse, $nousev); + } + + if (isset($tr['tr_type_itm1'])) { + //требует наличие предмета определенного типа + $itmt = mysql_fetch_assoc(mysql_query('SELECT `u`.`id` FROM `items_users` AS `u` LEFT JOIN `items_main` AS `m` ON `m`.`id` = `u`.`item_id` WHERE `m`.`type` = "' . $tr['tr_type_itm1'] . '" AND `u`.`inOdet` > 0 AND `u`.`uid` = "' . $this->u->info['id'] . '" AND `u`.`delete` = "0" LIMIT 1')); + if (!isset($itmt['id'])) { + $notr++; + } + } + + if (isset($tr['tr_mpNow'])) { + if (isset($btl->stats[$btl->uids[$this->u->info['id']]])) { + if ($btl->stats[$btl->uids[$this->u->info['id']]]['mpNow'] < round($tr['tr_mpNow'] / 100 * (100 - $btl->stats[$btl->uids[$this->u->info['id']]]['min_use_mp']))) { + $notr++; + } + } elseif ($this->u->info['mpNow'] < $tr['tr_mpNow']) { + $notr++; + } + } + + if (isset($btl->uids[$this->u->info['id']], $btl->stats[$btl->uids[$this->u->info['id']]])) { + if ($pl['trUser'] == 1) { + //требует чтобы пользователь с кем-то разменивался (при ожидании прием гаснит) + if (isset($btl->ga[$this->u->info['id']][$this->u->info['enemy']])) { + $notr++; + } + } elseif ($pl['trUser'] == 2 && $o > 0) { + //требует чтобы пользователь с кем-то разменивался (при ожидании не пропадает, но не используется) + $ga = mysql_fetch_assoc(mysql_query('SELECT * FROM `battle_act` WHERE `battle` = "' . $btl->info['id'] . '" AND `uid1` = "' . $this->u->info['id'] . '" AND `uid2` = "' . $btl->users[$btl->uids[$this->u->info['id']]]['enemy'] . '" LIMIT 1')); + if (isset($ga['id'])) { + $notr++; + } + } + } + + return $notr; + } + + public function priemInfo($pl, $t, $id = false) + { + global $u, $c, $code, $btl; + $pz = explode('|', $this->u->info['priems_z']); + $tr = $this->lookStatsArray($pl['tr']); + $trs = ''; + $x = 0; + $notr = 0; + $t = $this->u->items['tr']; + while ($x < count($t)) { + $n = $t[$x]; + if (isset($tr['tr_' . $n])) { + if ($tr['tr_' . $n] > $this->u->stats[$n]) { + $trs .= ''; + $notr++; + } + $trs .= '
• '; + $trs .= $this->u->is[$n] . ': ' . $tr['tr_' . $n]; + if ($tr['tr_' . $n] > $this->u->stats[$n]) { + $trs .= '
'; + } + } + $x++; + } + + $lvar = ''; + $j = 1; + $nm = [1 => 'hit', 2 => 'krit', 3 => 'counter', 4 => 'block', 5 => 'parry', 6 => 'hp', 7 => 'spirit']; + while ($j <= 6) { + if ($pl['tt' . $j] > 0) { + $lvar .= ' ' . round($pl['tt' . $j], + 2) . '   '; + } + $j++; + } + if ($pl['tt7'] > 0) { + if ($lvar != '') { + $lvar .= '
'; + } + $lvar .= 'Сила духа: ' . round($pl['tt' . $j], 2) . '
'; + } + $lvar .= '
'; + if ($pl['zad'] > 0) { + $lvar .= 'Задержка: ' . $pl['zad']; + if ($pz[$id] > 0) { + $lvar .= ' (еще ' . $pz[$id] . ')'; + } + $lvar .= '
'; + } + if (isset($tr['tr_mpNow']) && $tr['tr_mpNow'] > 0) { + $tr['tr_mpNow'] -= round($tr['tr_mpNow'] / 100 * $this->u->stats['min_use_mp']); + if ($this->u->info['mpNow'] < $tr['tr_mpNow'] || (isset($btl->stats[$btl->uids[$this->u->info['id']]]) && $btl->stats[$btl->uids[$this->u->info['id']]]['mpNow'] < $tr['tr_mpNow'])) { + $lvar .= '• Расход маны: ' . $tr['tr_mpNow'] . '
'; + } else { + $lvar .= '• Расход маны: ' . $tr['tr_mpNow'] . '
'; + } + } + if ($pl['tr_hod'] > 0) { + $lvar .= '• Прием тратит ход
'; + } + if ($trs != '') { + $lvar .= 'Требования:' . $trs . '

'; + } else { + $lvar .= '
'; + } + $pl['info'] = preg_replace("!(\#)(.*?)(\#)!ise", + "getdr('\\2',array(0=>'lvl1',1=>'ts5',2=>'mpAll'),array(0=>'" . $this->u->info['level'] . "',1=>'" . $this->u->stats['s5'] . "',2=>'" . $this->u->stats['mpAll'] . "'))", + $pl['info']); + $lvar .= $pl['info']; + $lvar = [0 => $lvar, 1 => $pz]; + return $lvar; + } + + //Мощность / подавление / сопротивление и т.д. + public function testPower($s1, $s2, $y, $t, $t2) + { + global $u, $btl; + + $r = 0; + if ($t2 == 2) { + //урон магией + $pm = [0 => 0, 1 => 0, 2 => 0, 3 => 0]; + if ($t < 5) { + $pm[0] = $s1['m11']; + $pm[1] = $s2['zm']; + $pm[2] = $s2['antm11']; + } + + if (isset($btl->info['id'])) { + $pm[3] = $btl->zmgo($s2['zm' . $t]); + $pm[3] = round($pm[3]); + } + + //урон = b*(1+m/100)*2^((p*10-z)/k) + $fx_vl = [ + 250, + 250, + 250, + 250, + 250, + 250, + 250, + 250, + 250, + 350, + 400, + 450, + 500, + 550, + 600, + 650, + 700, + 750, + 800, + 850, + 900, + 950, + ]; + + $fx = [ + 'b' => $y, //базовый урон + 'm' => round($s1['pm' . $t] * 1 - $s2['antpm' . $t]), //мощь + 'z' => round($s2['zm' . $t]), //защита цели ед. + 'p' => round(($s1['pzm'] + $s1['pzm' . $t])), //подавление + 'k' => $fx_vl[(0 + $s1['lvl'])] //коэффициент ; k=250 для 8ки, k=300 для 9ки и т.д. +20% на уровень + ]; + if (($fx['z'] + 250) - $fx['p'] * 10 < 0) { //защита не может уйти больше, чем в 250 ед. + $fx['p'] = ($fx['z'] + 250) / 10; + } + $fx['p'] = 0; + // + $p = $fx['b'] * (1 + $fx['m'] / 100) * pow(2, (($fx['z'] - $fx['p'] * 10) / $fx['k'])); + //$p += $p/100*10; + $p -= $p / 100 * $pm[3]; + //$p += floor($s1['s5']*0.25); + + if ($p < round($y * 0.1)) { + $p = round($y * 0.1); + } elseif ($p > round($y * 10)) { + $p = $y * 10; + } + + if (isset($s2['zm' . $t . 'proc'])) //защита от магии стихий (призрачки) + { + $p = floor($p / 100 * (100 - $s2['zm' . $t . 'proc'])); + if ($p < 0) { + $p = 0; + } + } + if (isset($s2['zmproc'])) //защита от магии стихий (призрачки) + { + if ($s2['zmproc'] >= 75) { + $p = floor($p / 100 * (100 - 75)); + } else { + $p = floor($p / 100 * (100 - $s2['zmproc'])); + if ($p < 0) { + $p = 0; + } + } + } + $r = $p; + } + + return round($r / 100 * 70); + } + + private function pyes($id) + { + global $u; + $p = explode('|', $this->u->info['priems']); + $r = false; + $i = 0; + while ($i < count($p)) { + if ($p[$i] == $id) { + $r = true; + } + $i++; + } + return $r; + } + + //выводим все доступные приемы игроку на его уровне - 1, выводим все доступные приемы только игроку - 2 + public function seePriems($mt) + { + global $u, $c, $code; + $t = $this->u->items['tr']; + $nm = [1 => 'hit', 2 => 'krit', 3 => 'counter', 4 => 'block', 5 => 'parry', 6 => 'hp', 7 => 'spirit']; + $lvlfe = $this->u->info['level']; + if (isset($_GET['all'])) { + $lvlfe = 21; + } + $sp = mysql_query('SELECT * FROM `priems` WHERE `level`<="' . $lvlfe . '" AND `activ` > "0" ORDER BY `img`,`level` ASC'); + $this->u->info['lvl'] = $this->u->info['level']; + $lvar = ''; + while ($pl = mysql_fetch_assoc($sp)) { + $noaki = 0; + if ($pl['activ'] == 1 || $this->testActiv($pl['activ']) == 1) { + $lvar = $this->priemInfo($pl, 1); + $lvar = $lvar[0]; + $cl = ''; + $a1 = ''; + $a2 = ''; + + //$cl = 'href="javascript:void(0)" onclick="location.href=\'main.php?skills=1&unuse_priem='.$i.'&rz=4&p_raz=\' + p_raz"'; + $a1 = ''; + $a2 = ''; + + if ($this->pyes($pl['id']) || $this->testpriem($pl, 1) > 0) { + if ((isset($_GET['all']) && $_GET['all'] == 1) || $this->pyes($pl['id'])) { + $cl = 'filter: alpha(opacity=35); -moz-opacity: 0.35; -khtml-opacity: 0.35; opacity: 0.35;'; + $a1 = ''; + $a2 = ''; + } else { + $noaki = 1; + } + } + if ($noaki == 0) { + $mtnu = explode('_', $pl['img']); + if ($mtnu[0] != 'wis') { + $mtnu = $mtnu[0]; + } else { + $mtnu = 'wis_' . $mtnu[1]; + } + echo $a1 . '' . $a2; + } + } + } + } + + private function zeromax($num, $max) + { + if ($num <= 0) { + return 0; + } + if ($num > $max) { + $num = $max; + } + return $num; + } + + /** Приём: Вспышка. + * Файлы: 34, 67, 68, 69. + * @param $level + * @param battleClass $btl + * @param $id + * передаётся через pruse() в номерной файл и вызывается оттуда. + * @return void + */ + private function fireFlash($level, battleClass $btl, $id) + { + if (empty($this->ue) || $this->ue['hpNow'] <= 0 || $btl->users[$this->ue['id']]['team'] == $this->u->info['team']) { + return; + } + + $baseDamage = [8 => 40, 9 => 45, 10 => 50, 11 => 60]; + $pvr = []; + $magicTargetTier = Db::getValue('select x from eff_users where uid = ? and v2 = 26 and `delete` = 0', + [$this->ue['id']]); + $leveledDamage = $baseDamage[$level] + 40 / 100 * (5 * $magicTargetTier); + + list($damage, $isCrit, $isMiss) = $this->magicAttack($btl, $this->u->info['id'], $this->ue['id'], $leveledDamage, self::FIRE, 1); + //Используем проверку на урон приемов + $damage = $btl->testYronPriem($this->u->info['id'], $this->ue['id'], 21, $damage, 5, + true); + $btl->priemYronSave($this->u->info['id'], $this->ue['id'], $damage, 0); + + $this->ue['hpNow'] -= $damage; + $this->ue['hpNow'] = $this->zeromax($this->ue['hpNow'], $this->ue['hpAll']); + + $btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] = $this->ue['hpNow']; + + Db::sql('update stats set hpNow = ? where id = ?', [$this->ue['hpNow'], $this->ue['id']]); + + if ($isMiss) { + $color = $this->logColor['miss']; + } elseif ($isCrit) { + $color = $this->logColor['crit']; + } else { + $color = $this->logColor[self::FIRE]; + } + $btl->priemAddLog( + $id, + 1, + 2, + $this->u->info['id'], + $this->ue['id'], + "Вспышка [$level]", + '{tm1}' . sprintf(" %s %s [%d/%d]", + $btl->addlt(1, 19, $this->u->info['sex'], null), + $pvr['color'], + $isMiss ? '--' : -$damage, + (int)$this->ue['hpNow'], + (int)$this->ue['hpAll'] + ), + $btl->hodID + 1); + } + + /** Приём: Цель {стихия} + * Файлы: 25, 26, 27, 28. + * @param $element + * @param $pl + * @param $id + * @param battleClass $btl + * @return bool (bool) достигнут ли лимит по стаку заклинаний. + */ + private function magicTarget($element, $pl, $id, battleClass $btl) + { + $data = [ + self::WATER => [25, 'воды'], + self::FIRE => [26, 'огня'], + self::AIR => [27, 'воздуха'], + self::EARTH => [28, 'земли'], + ]; + if (!in_array($element, array_keys($data)) || empty($this->ue)) { + return false; + } + + $stacked = Db::getRow('select id, x from eff_users where uid = ? and v2 = ? and `delete` = 0', + [$this->ue['id'], $data[$element][0]]); + $stackNumStr = $stacked['x'] > 0 ? $stacked['x'] + 1 : ''; + if ($stacked['x'] >= 5) { + echo "На пероснаже достигнуто максиальное количество целей"; + return true; + } + + // Наброс эффекта от приёма. + $this->addEffPr($pl, $id); + + $dataStr = $stacked['x'] > 0 ? Db::getValue('select data from eff_users where id = ?', + [$stacked['id']]) : $pl['date3']; + + // Костыль. Будет работать, пока приём изменяет ОДИН параметр. + $effect = "Защита от магии {$data[$element][1]}: " . current($this->lookStatsArray($dataStr)); + $color = $this->logColor[$element]; + + $name = "Цель {$data[$element][1]}"; + if ($stacked['x'] > 0) { + $name .= " x($stackNumStr)"; + } + + $btl->priemAddLog( + $id, + 1, + 2, + $this->u->info['id'], + $this->ue['id'], + "$name", + '{tm1}' . sprintf(" %s. (%s)", + $btl->addlt(1, 19, $this->u->info['sex'], null), $effect), + $btl->hodID); + + return false; + } + + public function devouringFlame($id, $uid, $j_id, battleClass $btl) + { + $a = 0; + $u1 = 0; + $u2 = 0; + // + $uid1 = $btl->atacks[$id]['uid1']; + $uid2 = $btl->atacks[$id]['uid2']; + if ($uid == $uid1) { + $a = 1; + $u1 = $uid1; + $u2 = $uid2; + } elseif ($uid == $uid2) { + $a = 2; + $u1 = $uid2; + $u2 = $uid1; + } + if ($a <= 0) { + return; + }//Проверяем эффект + $prv['j_priem'] = $btl->stats[$btl->uids[$u1]]['u_priem'][$j_id][0]; + + $pvr['data'] = $this->lookStatsArray($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data']); + $pName = $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['name']; + + $pvr['hp'] = $pvr['data']['atgm']; + + $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); + $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; + + //Используем проверку на урон приемов + $pvr['hp'] = $btl->testYronPriem($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'], $u1, 12, $pvr['hp'], 7, true, false, 1); + + $pvr['hpNow'] -= $pvr['hp']; + $btl->priemYronSave($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'], $u1, $pvr['hp'], 0); + + if ($pvr['hpNow'] > $pvr['hpAll']) { + $pvr['hpNow'] = $pvr['hpAll']; + } elseif ($pvr['hpNow'] < 0) { + $pvr['hpNow'] = 0; + } + + $btl->stats[$btl->uids[$u1]]['hpNow'] = $pvr['hpNow']; + + //mysql_query('UPDATE `stats` SET `hpNow` = ' . $btl->stats[$btl->uids[$u1]]['hpNow'] . ' WHERE `id` = ' . $u1); + Db::sql('update stats set hpNow = ? where id = ?', [$btl->stats[$btl->uids[$u1]]['hpNow'], $this->ue['id']]); + + $color = $this->logColor[self::FIRE]; + $prv['text'] = '{u2} утратил здоровье от "{pr}" '; + if ($pvr['promah_type'] == 2) { + $pvr['hp'] = '-'; + } + $prv['text'] .= sprintf("%s [%d/%d]", $color, -$pvr['hp'], $pvr['hpNow'], $pvr['hpAll']); + + $btl->priemAddLog($id, 1, 2, $u2, $u1, "$pName", $prv['text'], ($btl->hodID)); + } + + /** Пожирающее пламя. Первичный каст на противника, на котором нет эффекта. + * Кастуется на 5 ходов. Считает сколько урона будет наноситься следующие 5 ходов. + * Конечный damage после множителей делится на 5 и пишется в БД (atgm=). + * Файлы: 33, 56, 57, 58, 59, 60. + * @param $id + * @param array $pl массив значений из БД priems. + + * @param battleClass $btl + * @return void + */ + private function devouringFlameInit($id, array $pl, battleClass $btl) + { + echo $pl['level']; + $baseDamage = [6 => 53, 7 => 63, 8 => 77, 9 => 91, 10 => 110, 11 => 133, ]; + list($damage, , $isMiss) = $this->magicAttack($btl, $this->u->info['id'], $this->ue['id'], $baseDamage[$pl['level']], self::FIRE); + if ($isMiss || $damage <= 0) { + return; + } + + $color = $this->logColor[self::FIRE]; + $logText = '{tm1}' . $btl->addlt(1, 19, $btl->users[$btl->uids[$this->u->info['id']]]['sex'], null) . '.'; + $btl->priemAddLog($id, 1, 2, $this->u->info['id'], $this->ue['id'], "{$pl['name']}", $logText, $btl->hodID + 1); + + $data = $this->impStats(['atgm' => max(floor($damage / 5), 1)]); + + $this->addPriem($this->ue['id'], $pl['id'], $data, 0, 77, 5, $this->u->info['id'], 1, 'пожирающеепламя', 0, 0, 1); + } } -$priem = new priems; +$priem = new priems(); -?> diff --git a/_incl_data/class/ai.login.php b/_incl_data/class/ai.login.php deleted file mode 100644 index c78da449..00000000 --- a/_incl_data/class/ai.login.php +++ /dev/null @@ -1,21 +0,0 @@ - \ No newline at end of file diff --git a/_incl_data/class/dealer.php b/_incl_data/class/dealer.php deleted file mode 100644 index 1dbd7fb1..00000000 --- a/_incl_data/class/dealer.php +++ /dev/null @@ -1,294 +0,0 @@ -п»їinit(); - die((($result))); - */ - - -class Model_PartnerProjects_GamedealerReq{ - private $allowIp = array( - '127.0.0.1' - ); - private $gamedealerkey = '12345677'; - var $projectid = 1; - - - - - function init(){ - - $ip = $_SERVER['REMOTE_ADDR']; - if(!in_array($ip,$this->allowIp))return $this->xml(array('status'=>-10,'desc'=>'ErrIP')); - - //рабочий режим - //$xml = file_get_contents('php://input'); - - //тестовый режим. Параметры: check_balance / pay / getpacages / check_login - $xml = $this->testxml('check_balance'); - - $result = $this->parse($xml); - - if(!is_object($result))return $this->xml(array('status'=>-50,'desc'=>'ErrorInitParse')); - - if(isset($result->method)){ - $methodname = 'gamedealer_'.(string)$result->method; - if(!method_exists($this, $methodname))return $this->xml(array('status'=>-20,'desc'=>'ErrMethod')); - try{ - - $resulttry = $this->$methodname($result); - return $this->xml($resulttry); - }catch(Exception $e){} - } - return $this->xml(array('status'=>-10,'desc'=>'MethodError '.$methodname.isset($e)?$e->getMessage():false)); - } - - - - private function _sign($method,$params=array()){ - - return md5(implode($params).$method.md5($this->gamedealerkey)); - } - - - - /*Генератор XML-ответа*/ - function xml($arr=false){ - header("Content-type: text/xml; charset=utf-8"); - - if(!$arr)$arr = array('status'=>-1,'desc'=>"ErrorXML"); - $xml = ''."\n"; - foreach($arr as $k => $v){ - $xml .= '<'.$k.'>'.""; - if(is_array($v)){ - - - foreach($v as $itemkey => $itemvalue){ - if(is_array($itemvalue)){ - $xml .= ' $itemvalue_v)$xml .= ' '.$itemvalue_k.'="'.$itemvalue_v.'" '; - $xml .= '>'."\n"; - }else{ - $xml .= '<'.$itemkey.'>'.$itemvalue.''."\n"; - } - } - }else { - $xml .= $v; - } - $xml .= ''."\n"; - - } - $xml .= ''; - return $xml; - } - - //проверка счета-акканта - function gamedealer_check_login($params){ - - - $bank = isset($params->nick)?(int)$params->nick:false; - $projectid = isset($params->projectid)?(int)$params->projectid:false; - $sign = isset($params->sign)?(string)$params->sign:false; - - $hash = $this->_sign('check_login',array($bank)); - if($sign!=$hash)return array('status'=>-10,'desc'=>'SignError'); - - $check = $this->checkLoginByBank($bank); - if(isset($check['login'])){ - return array('status'=>1,'desc'=>'Счет указан верно','addinfo'=>$check['login']); - } - - - return array('status'=>-100,'desc'=>'Ошибка проверки счета'); - } - - - //запрос РЅР° оплату - function gamedealer_pay($params){ - - - - - $bank = isset($params->nick)?(int)$params->nick:false; - - $projectid = isset($params->projectid)?(int)$params->projectid:false; - $sign = isset($params->sign)?(string)$params->sign:false; - $paymentid = isset($params->payid)?(int)$params->payid:false; // уникальный номер платежа - $amount = isset($params->amount)?number_format((float)$params->amount,'2','.',''):false; //СЃСѓРјРјР° РІ РёРіСЂРѕРІРѕР№ валюте - $pacageid = isset($params->pacageid)?(int)$params->pacageid:''; //идентификатор РїРѕРєСѓРїРєРё опции РІ ГД. если нету - платеж РЅР° счет юзера - $partneritemid = isset($params->partneritemid)?(int)$params->partneritemid:''; //идентификатор продукта РІ вашей системе - $additemid = isset($params->additemid)?(int)$params->additemid:''; //дополнительный идентификатор пакета - $paymethodid = isset($params->paymethodid)?(string)$params->paymethodid:false; //метод оплаты РїРѕ системе геймдилер // может быть пустым) - - - - $hash = $this->_sign('pay',array($bank,$projectid.$pacageid.$amount,$paymentid)); - if($sign!=$hash)return array('status'=>-10,'desc'=>'SignError'); - - if($amount<0.01)return array('status'=>-20,'desc'=>'СЃСѓРјРјР° слишком маленькая'); - - $check = $this->checkLoginByBank($bank); - if(!isset($check['login']))return array('status'=>-10,'desc'=>'Ошибка логина. счет неверный'); //логин перса добываем - - return $this->oldbk_dopayment($paymentid,$bank,$projectid,$pacageid,$partneritemid,$amount,$check['login'],$additemid); - - } - - function gamedealer_check_balance($params){ - $projectid = isset($params->projectid)?(int)$params->projectid:false; - $sign = isset($params->sign)?(string)$params->sign:false; - $method = 'check_balance'; - - if($sign != $this->_sign($method,array('projectid'=>$projectid)))return array('status'=>-10,'desc'=>"errSign"); - $balance = 500; - return array('status'=>1,'desc'=>"Balance: ".$balance,'balance'=>$balance); //баланс РІ РёРіСЂРµ - } - - function gamedealer_getpacages($params){ - $sign = isset($params->sign)?(string)$params->sign:false; - $projectid = isset($params->projectid)?(int)$params->projectid:false; - $method = 'getpacages'; - - - if($sign != $this->_sign($method,array('projectid'=>$projectid)))return array('status'=>-10,'desc'=>"errSign"); - - return array( - 'status'=>1, - 'desc'=>'РЎРїРёСЃРѕРє СЃРЅРёР·Сѓ :)', - 'pacages'=>array( - array( - 'title'=>'Название сильвера', - 'price'=>20, - 'partneritemid'=>1 //РёРґ РІ системе РёРіСЂС‹ - ), - - array( - 'title'=>'Название сильвера 2', - 'price'=>20, - 'partneritemid'=>1 //РёРґ РІ системе РёРіСЂС‹ - ), - ) - ); - } - - - - function parse($xml){ - try{ - return simplexml_load_string($xml); - }catch(Exception $e){ - return false; - } - } - - - - - - - - - //тестовый интерфейс - function testxml($method='check_login'){ - switch($method){ - case 'check_login': - $nick = 243; - - - return ' - - check_login - '.$nick.' - 1 - '.md5($nick.$method.md5($this->gamedealerkey)).' - '; - break; - - - case 'pay': - $amount= 0.01; - $nick = 243; - $projectid = 1; - $payid = 112222; - - //$bank,$projectid.$pacageid.$amount,$paymentid - #echo "$nick.$projectid.$amount.$payid.$method"; - $sign = md5($nick.$projectid.$amount.$payid.$method.md5($this->gamedealerkey)); - - return ' - - pay - '.$nick.' - '.$projectid.' - '.$amount.' - '.$payid.' - '.$sign.' - '; - - break; - - case 'getpacages': - //СЃРїРёСЃРѕРє пакетов - - return ' - - 1 - '.$method.' - '.md5('1'.$method.md5($this->gamedealerkey)).' - '; - break; - - case 'check_balance': - //баланс - - return ' - - 1 - '.$method.' - '.md5('1'.$method.md5($this->gamedealerkey)).' - '; - break; - } - } - - - - - //прием оплаты - private function oldbk_dopayment($paymentid,$bank,$projectid,$pacageid,$partneritemid,$amount,$login,$additemid){ - //$additemid - дополнительный дентификатор пакета. например - ID клана - //если оплата РЅР° клан - projectid = 20099 // pacageid = 25 //partneritemid = 1 (РІ вашей системе)// additemid = 5 //идентификатор клана - //если пакеты - if($pacageid){ - //если РїРѕРєСѓРїРєР° билетов - то количество = amount/price РЅСѓ Рё там округлять, остаток РЅР° счет. - return array('status'=>1,'desc'=>'Сильвер аккаунт успешно оплачен','paymentid'=>1); //уникальный номер платежа РІ системе проекта. - - }else{ - //просто оплата РЅР° баланс РїРѕ счету - return array('status'=>1,'desc'=>'Счет попонен','paymentid'=>1); //уникальный номер платежа РІ системе проекта. - //или - return array('status'=>3,'desc'=>'Аккаунт уже оплачен СЃ таким payid','paymentid'=>1);//уникальный номер платежа РІ системе проекта. - } - - return array('status'=>-10,'desc'=>'Ошибка РїРѕРёСЃРєР° карты/сильвера Рё С‚.Рї. или СЃСѓРјРјР° РЅРµ та'); - - - } - - - //проверка счета - function checkLoginByBank($bank){ - return array('status'=>1,'desc'=>'Bank exissts','login'=>'Администратор'); - } - - - -} -?> \ No newline at end of file diff --git a/_incl_data/class/dn_editor.php b/_incl_data/class/dn_editor.php deleted file mode 100644 index d5152a6c..00000000 --- a/_incl_data/class/dn_editor.php +++ /dev/null @@ -1,63 +0,0 @@ -Произошла ошибка

Произошла ошибка:

'.$e.'

Назад


(c) '.$c[1].'

'); -} - -function GetRealIp() -{ - if(!empty($_SERVER['HTTP_CLIENT_IP'])) { - $ip=$_SERVER['HTTP_CLIENT_IP']; - }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { - $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; - }else{ - $ip=$_SERVER['REMOTE_ADDR']; - } - return $ip; -} - -define('IP',GetRealIp()); -define('GAME',true); - -include_once('_incl_data/__config.php'); -include_once('_incl_data/class/__db_connect.php'); -include_once('_incl_data/class/__user.php'); - -if(!isset($u->info['id']) || $u->info['ip'] != IP || $u->info['admin'] == 1) { - die(''); -} - - -?> - - - - -Визуальный редактор Лабиринтов © new-combats.com - - - - - - - - - - - - - -
- # 1 - -
- - diff --git a/_incl_data/class/index.php b/_incl_data/class/index.php deleted file mode 100644 index e69de29b..00000000 diff --git a/_incl_data/class/inf.php b/_incl_data/class/inf.php deleted file mode 100644 index 2c0b61e8..00000000 --- a/_incl_data/class/inf.php +++ /dev/null @@ -1,1122 +0,0 @@ -1) - { - //снимаем хаос - if($inf['haos']info['admin']>0) - { - if(isset($_GET['wipe']) && $u->newAct($_GET['sd4'])==true) - { - $upd = mysql_query('UPDATE `stats` SET `wipe` = "1" WHERE `id` = "'.$inf['id'].'" LIMIT 1'); - if($upd) - { - $uer = 'Сброс характеристик прошел успешно
'; - }else{ - $uer = 'Ошибка сброса...
'; - } - } - } - if(($u->info['align']>1 && $u->info['align']<2) || ($u->info['align']>3 && $u->info['align']<4) || $u->info['admin']>0) - { - if(isset($_GET['molchMax']) && $u->newAct($_GET['sd4'])==true) - { - $upd = mysql_query('UPDATE `users` SET `molch3` = "'.$inf['molch1'].'" WHERE `id` = "'.$inf['id'].'" LIMIT 1'); - if($upd) - { - $uer = 'Все прошло успешно...
'; - }else{ - $uer = 'Ошибка...
'; - } - } - } -} - -if(!isset($inf['id'])) -{ - die(' - - - - Произошла ошибка

- Произошла ошибка:

Указанный персонаж не найден...
-

Назад -


-

(c) '.$c['title'].'

- '.$c['counters'].' - '); -} - -if($u->info['align'] > 1 && $u->info['align'] < 2) { - -}elseif($u->info['align'] > 3 && $u->info['align'] < 4) { - -}elseif($inf['redirect'] != '0' && $u->info['admin'] == 0 && $u->info['id'] != $inf['id']) { - header('location: '.$inf['redirect']); - die(); -} - - -function zodiak($d,$m,$y) -{ -$dr = $d; -switch($m) -{ - case '03': - $zodiac_id = 12; - if($dr > 20) $zodiac_id = 1; - break; - case '04': - $zodiac_id = 1; - if($dr > 19) $zodiac_id = 2; - break; - case '05': - $zodiac_id = 2; - if($dr > 20) $zodiac_id = 3; - break; - case '06': - $zodiac_id = 3; - if($dr > 21) $zodiac_id = 4; - break; - case '07': - $zodiac_id = 4; - if($dr > 22) $zodiac_id = 5; - break; - case '08': - $zodiac_id = 5; - if($dr > 22) $zodiac_id = 6; - break; - case '09': - $zodiac_id = 6; - if($dr > 22) $zodiac_id = 7; - break; - case '10': - $zodiac_id = 7; - if($dr > 22) $zodiac_id = 8; - break; - case '11': - $zodiac_id = 8; - if($dr > 21) $zodiac_id = 9; - break; - case '12': - $zodiac_id = 9; - if($dr > 21) $zodiac_id = 10; - break; - case '01': - $zodiac_id = 10; - if($dr > 19) $zodiac_id = 11; - break; - case '02': - $zodiac_id = 11; - if($dr > 18) $zodiac_id = 12; - break; - } - return $zodiac_id; -} -$id_zodiak = null; -$bday = explode('.',$inf['bithday']); -if(isset($bday[0],$bday[1],$bday[2])) -{ -$id_zodiak = zodiak($bday[0],$bday[1],$bday[2]); -} - -if($id_zodiak==null) -{ - $id_zodiak = 1; -} - -$name_zodiak = array(1=>'Овен',2=>'Телец',3=>'Близнецы',4=>'Рак',5=>'Лев',6=>'Дева',7=>'Весы',8=>'Скорпион',9=>'Стрелец',10=>'Козерог',11=>'Водолей',12=>'Рыбы'); -$name_zodiak = $name_zodiak[$id_zodiak]; - -function statInfo($s) -{ - global $st,$st2; - $st[$s] = 0+$st[$s]; - $st2[$s] = 0+$st2[$s]; - if($st[$s]!=$st2[$s]) - { - $s1 = '+'; - if($st2[$s]>$st[$s]) - { - $s1 = '-'; - } - -$cl = array( -0=>"#000000", -33=>"#004000", -34=>"#006000", -35=>"#006100", -36=>"#006200", -37=>"#006300", -38=>"#006400", -39=>"#006500", -40=>"#006600", -41=>"#006700", -42=>"#006800", -43=>"#006900", -44=>"#006A00", -45=>"#006B00", -46=>"#006C00", -47=>"#006D00", -48=>"#006E00", -49=>"#006F00", -50=>"#007000", -51=>"#007100", -52=>"#007100", -53=>"#007200", -54=>"#007300", -55=>"#007400", -56=>"#007500", -57=>"#007600", -58=>"#007700", -59=>"#007800", -60=>"#007900", -61=>"#007A00", -62=>"#007B00", -63=>"#007C00", -64=>"#007D00", -65=>"#007E00", -66=>"#007F00", -67=>"#008000", -68=>"#008100", -69=>"#008200", -70=>"#008300", -71=>"#008400", -72=>"#008500", -73=>"#008600", -74=>"#008700", -75=>"#008700", -76=>"#008800", -77=>"#008900", -78=>"#008A00", -79=>"#008B00", -80=>"#008C00", -81=>"#008D00", -82=>"#008E00", -83=>"#008F00", -84=>"#009000", -85=>"#009100", -86=>"#009200", -87=>"#009300", -88=>"#009400", -89=>"#009500", -90=>"#009600", -91=>"#009700", -92=>"#009800", -93=>"#009900", -94=>"#009A00", -95=>"#009B00", -96=>"#009C00", -97=>"#009D00", -98=>"#009E00", -99=>"#009F00", -100=>"#00A000" -); - - - //$cl = array(0=>'#003C00',1=>'green',2=>'#0DAC0D',3=>'#752415',4=>''); - $si = 4; - if($s1=='-') - { - $si = 0; - } - $t = $st[$s]; - $j = $st[$s]-$st2[$s]; - $t = $t-$j; - if($j>0) - { - if($t==0) - { - $t = 1; - } - if($t==0) - { - $t = 1; - } - $d = $j*100/$t; - if($d<0 && $t+$j>=0) - { - $d = 100; - } - if($d < 33) - { - $si = 0; - }elseif($d > 100) - { - $si = 100; - } - }elseif($j<0) - { - $si = 3; - } - echo ''.$st[$s].' ('.$st2[$s].' '.$s1.' '.abs($st[$s]-$st2[$s]).')'; - }else{ - echo ''.$st[$s].''; - } -} - -$room = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `id`="'.$inf['room'].'" LIMIT 1')); - -if($inf['clan']>0) -{ - $pc = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id`="'.$inf['clan'].'" LIMIT 1')); -} - -if(isset($_GET['short'])) -{ - $n = ' -'; - $o = 0; - if($inf['online']>time()-520) - { - $o = 1; - } - $sh = ''; - $sh .= 'id='.$inf['id'].$n; - $sh .= 'login='.$inf['login'].$n; - $sh .= 'level='.$inf['level'].$n; - $sh .= 'align='.$inf['align'].$n; - $sh .= 'clan='.$pc['name_mini'].$n; - $sh .= 'city='.$inf['city'].$n; - $sh .= 'city_reg='.$inf['cityreg'].$n; - $sh .= 'room_name='.$room['name'].$n; - $sh .= 'online='.$o.$n; - die($sh); -} -?> - - - - - -Информация о <? echo $inf['login']; ?> - - - - - - - - - - - - -'.$uer.'
'; } ?> -
' . $witm[53] . '
- - -
- - - - '; - } - echo '

getStats($inf['id'],1); $st2 = $st[1]; $st = $st[0]; $rgd = $u->regen($inf['id'],$st,1); $us = $u->getInfoPers($inf['id'],1,$st); if($us!=false){ echo $us[0]; }else{ echo 'information is lost.'; } ?>
-
- '.$u->city_name[$inf['city']].'
'; - if($inf['online']>time()-520 && $inf['banned']==0) - { - echo 'Персонаж сейчас находится в клубе.
"'.$room['name'].'"'; - }else{ - if($inf['admin']==0 || $inf['admin']==2) - { - if($inf['online']==0) - { - $inf['online'] = $inf['timeREG']; - } - echo 'Персонаж не в клубе, но был тут:
'.date('d.m.Y H:i',$inf['online']).''; - $out = ''; - $time_still = time()-$inf['online']; - $tmp = floor($time_still/2592000); - $id=0; - if ($tmp > 0) { - $id++; - if ($id<3) {$out .= $tmp." мес. ";} - $time_still = $time_still-$tmp*2592000; - } - $tmp = floor($time_still/604800); - if ($tmp > 0) { - $id++; - if ($id<3) {$out .= $tmp." нед. ";} - $time_still = $time_still-$tmp*604800; - } - $tmp = floor($time_still/86400); - if ($tmp > 0) { - $id++; - if ($id<3) {$out .= $tmp." дн. ";} - $time_still = $time_still-$tmp*86400; - } - $tmp = floor($time_still/3600); - if ($tmp > 0) { - $id++; - if ($id<3) {$out .= $tmp." ч. ";} - $time_still = $time_still-$tmp*3600; - } - $tmp = floor($time_still/60); - if ($tmp > 0) { - $id++; - if ($id<3) {$out .= $tmp." мин. ";} - } - if($out=='') - { - $out = $time_still.' сек.'; - } - echo '
('.$out.' назад)'; - }elseif($inf['admin']>0) - { - echo 'Персонаж не в клубе.'; - } - } - if($inf['inUser']>0) - { - echo '
Персонаж вселился в бота'; - } - if($inf['battle']>0) - { - $btl3 = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = '.$inf['battle'].'')); - if(isset($btl3['id']) && $btl3['time_over']==0) - { - echo '
Персонаж сейчас в поединке'; - } - } - echo '
'; - ?> -
- - -
Сила:
- Ловкость:
- Интуиция:
- Выносливость:
- 3 || $st['s5']!=0){ ?>Интеллект:
- 6 || $st['s6']!=0){ ?>Мудрость:
- 9 || $st['s7']!=0){ ?>Духовность:
- 11 || $st['s8']!=0){ ?>Воля:
- 14 || $st['s9']!=0){ ?>Свобода духа:
- 19 || $st['s10']!=0){ ?>Божественность:
-
- Уровень:
- Побед: '.number_format($inf['win'], 0, ",", " ").''; } ?>
- Поражений:
- Ничьих:
- Орден Алхимиков'; if($inf['mod_zvanie']!=''){ echo ' - '.$inf['mod_zvanie']; } echo '
'; } ?> - 1 && $inf['align']<2){ echo 'Орден Паладинов - '.$u->mod_nm[1][$inf['align']]; if($inf['align']!='1.99' && $inf['mod_zvanie']!=''){ echo ' - '.$inf['mod_zvanie']; } echo '
'; } ?> - 3 && $inf['align']<4){ echo 'Армада - '.$u->mod_nm[3][$inf['align']]; if($inf['align']!='3.99' && $inf['mod_zvanie']!=''){ echo ' - '.$inf['mod_zvanie']; } echo '
'; } ?> - 0) - { - $pc = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id`="'.$inf['clan'].'" LIMIT 1')); - if(isset($pc['id'])) - { - $pc['img'] = $pc['name_mini'].'.gif'; - if($inf['clan_prava']=='glava') - { - $inf['mod_zvanie'] = '- глава клана'; - }elseif($inf['mod_zvanie']!='') - { - $inf['mod_zvanie'] = '- '.htmlspecialchars($inf['mod_zvanie'],NULL,'cp1251'); - } - echo 'Клан: '.$pc['name'].' '.$inf['mod_zvanie'].'
'; - } - } ?> - Место рождения: city_name[$inf['cityreg']]; }else{ echo $inf['cityreg2']; } ?>
- '.$u->city_name[$inf['city2']].'
'; } ?> - День рождения персонажа:
- 0) - { - $names .= '                      '; - } - $names .= '\''.$pl['login'].'\' до '.date('d.m.Y H:i',$pl['time']).'
'; - $i++; - } - if($names!='') - { - echo 'История имен: '.$names.''; - } - ?> -
-
- - - '; - } - } - - - //значок регистратора - /*$uref = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `users` WHERE `host_reg` = "'.$inf['id'].'" AND `level` > 0 LIMIT 1000')); - $uref = $uref[0]; - if($uref>9) - { - $rico = 0; - if($uref>=30){ $rico = 19; - }elseif($uref>=20){ $rico = 20; - }elseif($uref>=10){ $rico = 21; } - - if($rico>0) - { - $stp = array(21=>'XXI степень
новичок', - 20=>'XX степень
новичок', - 19=>'IXX степень
новичок'); - echo ''; - } - } - */ - - $sp = mysql_query('SELECT * FROM `users_ico` WHERE `uid` = "'.$inf['id'].'" AND (`endTime` = 0 OR `endTime` > '.time().') LIMIT 50'); - $ico = ''; - //сильвер - if($st['silver']>0) { - echo ' '; - } - - //«» - while($pl = mysql_fetch_array($sp)) - { - $ico .= ''; - } - echo $ico; - unset($ico); - - $irep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "'.$inf['id'].'" LIMIT 1')); - if(isset($irep['id'])) - { - //capitalcity - if($irep['repcapitalcity']>24999) - { - echo ''; - }elseif($irep['repcapitalcity']>9999) - { - echo ''; - } - - //angelscity - if($irep['repangelscity']>24999) - { - echo ''; - }elseif($irep['repangelscity']>9999) - { - echo ''; - } - - //demonscity - if($irep['repdemonscity']>24999) - { - echo ''; - }elseif($irep['repdemonscity']>9999) - { - echo ''; - } - - //devilscity - if($irep['repdevilscity']>24999) - { - echo ''; - }elseif($irep['repdevilscity']>9999) - { - echo ''; - } - - //suncity - if($irep['repsuncity']>24999) - { - echo ''; - }elseif($irep['repsuncity']>9999) - { - echo ''; - } - - //emeraldscity - if($irep['repemeraldscity']>24999) - { - echo ''; - }elseif($irep['repemeraldscity']>9999) - { - echo ''; - } - - //sandcity - if($irep['repsandcity']>24999) - { - echo ''; - }elseif($irep['repsandcity']>9999) - { - echo ''; - } - - //mooncity - if($irep['repmooncity']>24999) - { - echo ''; - }elseif($irep['repmooncity']>9999) - { - echo ''; - } - - //Алтарь крови - if($irep['rep2']>99) - { - echo ''; - } - - //Храм знаний - if($irep['rep1']>9999) - { - echo ''; - }elseif($irep['rep1']>999) - { - echo ''; - }elseif($irep['rep1']>99) - { - echo ''; - } - } - - function timeOut($ttm,$travm=false) - { - if($travm==false){ - $out = ''; - $time_still = $ttm; - $tmp = floor($time_still/2592000); - $id=0; - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." мес. ";} - $time_still = $time_still-$tmp*2592000; - } - $tmp = floor($time_still/604800); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." нед. ";} - $time_still = $time_still-$tmp*604800; - } - $tmp = floor($time_still/86400); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." дн. ";} - $time_still = $time_still-$tmp*86400; - } - $tmp = floor($time_still/3600); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." ч. ";} - $time_still = $time_still-$tmp*3600; - } - $tmp = floor($time_still/60); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." мин. ";} - } - if($out=='') - { - if($time_still<0) - { - $time_still = 0; - } - $out = $time_still.' сек.'; - } - }else{ - } - return $out; - } - - echo ''; - if($inf['jail']>time()) - { - echo '
Персонаж находится в заточении еще '.timeOut($inf['jail']-time()).' '; - } - if($inf['molch1']>time()) - { - echo '
На персонажа наложено заклятие молчания. Будет молчать еще '.timeOut($inf['molch1']-time()).' '; - } - if($inf['molch2']>time()) - { - echo '
На персонажа наложено заклятие молчания на форуме. Будет молчать еще '.timeOut($inf['molch2']-time()).' '; - } - //Если у персонажа есть травмы, физ. и маг. травмы - $sp = mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$inf['id'].'" AND (`id_eff` = "4" OR `id_eff` = "6") AND `delete` = "0" ORDER BY `id_eff` ASC LIMIT 6'); - while($pl = mysql_fetch_array($sp)) - { - //$pln = array(); - //$pln = array(0=>$pln[0],1=>$pln[1]); - echo '
У персонажа - "'.$pl['name'].'" еще '.$u->timeOut($pl['timeUse']-time()+$pl['timeAce']); - } - - //Персонаж ослаблен из-за смерти в бою, еще 4 мин. 24 сек. - if($inf['level']>=4) - { - $nn = 0; - while($nn Персонаж ослаблен из-за смерти в бою, еще '.timeOut($st['effects'][$nn]['timeUse']+$st['effects'][$nn]['timeAce']+$osl['actionTime']-time()).' '; - $nn = count($st['effects'])+1; - } - $nn++; - } - } - - echo '
'; - - if(($inf['align']>=2 && $inf['align'] < 3 && ($inf['haos']>time() || $inf['haos']==1)) || $inf['banned']>0) - { - $to = ''; - if($inf['align']>=2 && $inf['align'] < 3 && ($inf['haos']>time() || $inf['haos']==1)) - { - $to = 'хаос'; - } - if($inf['banned']>0) - { - if($to='') - { - $to = 'блок'; - }else{ - $to = $to.'/блок'; - } - } - $fm = mysql_fetch_array(mysql_query('SELECT * FROM `users_delo` WHERE `uid` = "'.$inf['id'].'" AND `hb`!=0 ORDER BY `id` DESC LIMIT 1')); - echo '

'; - if(isset($fm['id'])) - { - $from = 'паладинов'; - if($fm['hd']==2) - { - $from = 'Ангелов'; - }elseif($fm['hd']==3) - { - $from = 'тарманов'; - } - echo 'Сообщение от '.$from.' о причине отправки в '.$to.':
'; - //$fm['text'] = ltrim($fm['text'],"Ангел \"\;".$fm['login']."\"\; \сообщает\<\/b\>\:"); - echo ''.$fm['text'].'
'; - } - if($inf['align']>=2 && $inf['align'] < 3 && ($inf['haos']>time() || $inf['haos']==1)) - { - if($inf['haos']==1) - { - echo 'Хаос бессрочно.'; - }else{ - echo 'Хаос еще '.timeOut($inf['haos']-time()).''; - } - } - } - - //подарки - if(($inf['info_delete']info['align']>1 && $u->info['align']<2 || $u->info['align']>3 && $u->info['align']<4 || $u->info['admin']>0)){ - $gs = array('','',''); $glim = 10; $i = 0; - $_GET['maxgift']=1; - if(isset($_GET['maxgift'])) - { - $glim = 1000; - } - $sp = mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE (`im`.`type` = "28" OR `im`.`type` = "38" OR `im`.`type` = "63" OR `im`.`type` = "64") AND `iu`.`uid` = "'.$inf['id'].'" AND `iu`.`gift` != "" AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" ORDER BY `iu`.`id` DESC LIMIT '.$glim); - while($pl = mysql_fetch_array($sp)) - { - if($pl['type'] == 28) { - //Букеты - $gs[2] .= ''; - }elseif($pl['type'] == 63) { - //открытки - $gs[1] .= ''; - }else{ - //подарки - $gs[0] .= ''; - } - } - - if($gs[0]!='' || $gs[1]!='' || $gs[2]!=''){ - if($gs[2] != '') { - $gs[2] = '
Букеты:
'.$gs[2].'
'.$gs[2].'
Подарки:
'.$gs[0].'
'.$gs[1].'
'; - if(!isset($_GET['maxgift'])){ - //echo 'Нажмите сюда, чтобы увидеть все подарки...'; - }else{ - //echo 'Нажмите сюда, чтобы скрыть подарки'; - } - } - - } - //темные делишки :D - if(($u->info['align']>=1.1 && $u->info['align']<=1.99 && $inf['admin']<1) || ($u->info['align']>=3.05 && $u->info['align']<=3.99 && $inf['admin']<1) || $u->info['admin']>0) - { - $mults = ''; - $bIP = array(); - if($inf['id']!=42526 && $inf['id']!=1254){ - $spl = mysql_query('SELECT * FROM `mults` WHERE (`uid` = "'.$inf['id'].'" OR `uid2` = "'.$inf['id'].'") AND `uid`!="0" AND `uid2`!="0"'); - } - while($pls = mysql_fetch_array($spl)) - { - $usr = $pls['uid']; - if($usr==$inf['id']) - { - $usr = $pls['uid2']; - } - if(!isset($bIP[$usr]) && $usr!=$inf['id']) - { - $si = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `id` = "'.mysql_real_escape_string($usr).'" LIMIT 1')); - if(isset($si['id'])) - { - if($si['admin']==0 || $u->info['admin']>0) - { - $mults .= $u->microLogin($si['id'],1).', '; - } - } - } - } - - if($inf['city']!=$u->info['city'] && $u->info['align']>=1.1 && $u->info['align']<1.9) - { - echo '

Персонаж в другом городе...

'; - } elseif ($inf['city']!=$u->info['city'] && $u->info['align']>=3.01 && $u->info['align']<3.09) - { - echo '

Персонаж в другом городе...

'; - } elseif ($u->info['admin']==0 && (($u->info['admin']==0 && (floor($u->info['align'])==1 && $inf['align']>=3.01 && $inf['align']<=3.99) || (floor($u->info['align'])==3 && $inf['align']>=1.1 && $inf['align']<=1.99)) || ($u->info['admin']==0 && $inf['admin']>0))) - { - echo '

Персонаж носит вражескую склонность...

'; - }else{ - echo '

За игроком замечены следующие темные делишки:
'; - if(!isset($_GET['mod_inf'])) { - echo 'Показать личноое дело'; - }else{ - //Личное дело персонажа - $log = mysql_query('SELECT * FROM `users_delo` WHERE `uid`="'.$inf['id'].'" AND `type`="0" ORDER by `id` DESC LIMIT 21'); - $i = 0; - while ($log_w = mysql_fetch_array($log)) - { - echo ''.date("d.m.Y H:i:s",$log_w['time']).' '.$log_w['text'].'
'; - $i++; - } - echo 'Скрыть личноое дело'; - } - echo '

'; - //Информация для паладинов\тарманов\ангелов - if(($u->info['align']>=1.4 && $u->info['align']<=1.99 && $u->info['align']!=1.6 && $u->info['align']!=1.75 && $inf['admin']<1) || ($u->info['align']>=3.05 && $u->info['align']<=3.99 && $u->info['align']!=3.06 && $inf['admin']<1) || $u->info['admin']>0) - { - if ((int)$u->info['align']==1) - { - $rang = 'Паладинов'; - } elseif ((int)$u->info['align']==3) - { - $rang = 'Тарманов'; - } else - { - $rang = 'Ангелов'; - } - - /* - $pr1 = mysql_fetch_array(mysql_query('SELECT * FROM `register_code` WHERE `reg_id` = "'.$inf['id'].'" LIMIT 1')); - $pr = array('login'=>''); - if(isset($pr1['id'])) - { - $pr = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`level` FROM `users` WHERE `id` = "'.$pr1['uid'].'" LIMIT 1')); - if(isset($pr['id'])) - { - $pr['login'] = 'Персонажа пригласили: '.$pr['login'].' ['.$pr['level'].']
'; - }else{ - $pr['login'] = 'Персонажа пригласили: #'.$pr1['uid'].'
'; - } - } - */ - - if((int)$inf['host_reg'] >= 1){ - $inf['ref'] = $u->microLogin((int)$inf['host_reg'],1); - }else{ - $inf['ref'] = '--'; - } - if(!isset($inf['ipReg'])){ $inf['ipReg'] = '--'; } - echo ' -
- Только для '.$rang.'
- День рождения: '.$inf['bithday'].'
- E-mail: '.$inf['mail'].'
- Персонажа пригласили: '.$inf['ref'].'
- Последний раз заходил в клуб: '.date('d.m.Y H:i',$inf['online']).'
- '.$pr['login'].'IP при регистрации: '.$inf['ipReg'].'
'; - if($inf['no_ip'] == '' || $u->info['admin']>0) { - echo 'IP последние: '.$inf['ip'].''; - $auth = mysql_query('SELECT * FROM `logs_auth` WHERE `uid`="'.$inf['id'].'" AND `type`="1" ORDER by `id` DESC LIMIT 10'); - $country = ''; - while ($auth_w = mysql_fetch_array($auth)) { - echo '
'.$auth_w['ip'].' ('.date('d.m.Y H:i',$auth_w['time']).')'; - } - }else{ - echo 'IP последние: '.$inf['no_ip'].''; - } - echo' -
- Браузер: '.$inf['dateEnter'].'
- '; - - if($inf['no_ip'] == '' || $u->info['admin']>0) { - if($mults!='') - { - $mults = trim($mults,', '); - echo 'Другие ники этого бойца: '.$mults.'
'; - } - } - - if($u->info['admin']>0) - { - echo 'Доп. возможности: сбросить характеристики
'; - $on1 = mysql_fetch_array(mysql_query('SELECT `time_all`,`time_today` FROM `online` WHERE `uid` = "'.$inf['id'].'" LIMIT 1')); - echo 'Время в онлайне (всего): '.timeOut($on1['time_all']).'
Время в онлайне (сегодня): '.timeOut($on1['time_today']).'
'; - } - if($inf['molch3']Запретить персонажу отправлять сообщения с молчанкой
'; - } - echo' - Опыт: '.$inf['exp'].'
- Число неиспользованных UP-ов: '.$inf['ability'].'
- Кредитов: '.$inf['money'].''; - if($u->info['admin']>0 && $inf['admin']>0) - { - echo '
admin: '.$inf['admin'].''; - } - if($inf['active']!=''){ - echo '
Внимание!Если персонаж не получает письма с активацией отправте ему письмо вручную.'; - echo '
'; - echo "

"; - } - echo '
'; - } - } - } - ?> -
- -
-
- - - - - - - - - -
 Поиск по нику: 
-
-
- */ ?> - - - - -
- /i/zodiac/.gif' border=0>
- 1 && $inf['align']<2) { ?> - /' target='_blank'>/i/flag_light.gif' border=0>
- /' target='_blank'>paladins. - =3.01 && $inf['align']<=3.99) { ?> - /'>/i/flag_dark.gif' border=0>
- /' target='_blank'>tarmans. - =2 && $inf['align']<3) { ?> - /'>/i/flag_haos.gif' border=0>
- .com/' target='_blank'> - - /'> /i/flag_gray.gif'>
- /' target='_blank'>events.
- -
- - - -
- -

Персонаж обезличен 1){ echo 'до '.date('d.m.Y H:i',$inf['info_delete']).'.'; }else{ echo '.'; } ?>

-info['align']>1 && $u->info['align']<2 || $u->info['align']>3 && $u->info['align']<4 || $u->info['admin']>0) - { - echo '
'; - } -} -if($inf['info_delete']==0 || (($u->info['align']>1 && $u->info['align']<2) || ($u->info['align']>3 && $u->info['align']<4) || $u->info['admin']>0)) -{ -?> -
-

Анкетные данные

-Имя:
-Пол:
-Город:
-0 && $inf['icq_hide']==0){ echo 'ICQ: '.$inf['icq'].'
'; } ?> -4) { -$url = ((substr($inf['homepage'],0,4)=='https'?"":"https://").$inf['homepage']); -?> - Домашняя страница:
-Девиз:
- -Увлечения / хобби:
-',$inf['hobby']); - } - if($inf['info_delete']!=0) - { - echo '
'; - } -} -echo '

'.$c['counters_noFrm'].'
'; -?> -
-

- - diff --git a/_incl_data/class/items_info.php b/_incl_data/class/items_info.php deleted file mode 100644 index c87e636e..00000000 --- a/_incl_data/class/items_info.php +++ /dev/null @@ -1,1295 +0,0 @@ - 0, - 26 => 1, - 30 => 2, - 29 => 3, - 5 => 4, - 6 => 4, - 2 => 5, - 3 => 6, - 15 => 7, - 12 => 8, - 7 => 9, - 14 => 10, - 8 => 11, - 4 => 12, - 1 => 13, - //28 => 14, - 20 => 15, - 18 => 16, - 21 => 17, - 22 => 18, - 19 => 19, - 28 => 20, - //00 => 21, - //00 => 22, - 38 => 23, - 39 => 23, - 37 => 23, - 13 => 24, - 11 => 25, - 10 => 26, - 9 => 27, - 62 => 22, - 67 => 28, // 67 разное - 32 => 22, // 32 ингридиенты, маг.предметы - 34 => 28 // 34 ключи, разное -); - -/* Пользователь */ -if (isset($_COOKIE['login'])) -{ -$u = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`banned` FROM `users` WHERE `login` = "'.mysql_real_escape_string($_COOKIE['login']).'" AND `pass` = "'.mysql_real_escape_string($_COOKIE['pass']).'" LIMIT 1')); -} -/* Предмет */ -$itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.mysql_real_escape_string($_GET['id']).'" LIMIT 1')); - - - function timeOut($ttm) { - $out = ''; - $time_still = $ttm; - $tmp = floor($time_still/2592000); - $id=0; - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." мес. ";} - $time_still = $time_still-$tmp*2592000; - } - /* - $tmp = floor($time_still/604800); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." нед. ";} - $time_still = $time_still-$tmp*604800; - } - */ - $tmp = floor($time_still/86400); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." дн. ";} - $time_still = $time_still-$tmp*86400; - } - $tmp = floor($time_still/3600); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." ч. ";} - $time_still = $time_still-$tmp*3600; - } - $tmp = floor($time_still/60); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." мин. ";} - } - if($out=='') - { - if($time_still<0) - { - $time_still = 0; - } - $out = $time_still.' сек.'; - } - return $out; - } - - function lookStats($m) - { - $ist = array(); - $di = explode('|',$m); - $i = 0; $de = false; - while($i array('lvl','s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','a1','a2','a3','a4','a5','a6','a7','mg1','mg2','mg3','mg4','mg5','mg6','mg7','mall','m2all','aall'), - 'add' => array('min_heal_proc','no_yv1','no_bl1','no_pr1','no_yv2','no_bl2','no_pr2','silver','pza','pza1','pza2','pza3','pza4','pzm','pzm1','pzm2','pzm3','pzm4','pzm5','pzm6','pzm7','yron_min','yron_max','notravma','min_zonb','min_zona','nokrit','pog','min_use_mp','za1proc','za2proc','za3proc','za4proc','zaproc','zmproc','zm1proc','zm2proc','zm3proc','zm4proc','shopSale','s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','aall','a1','a2','a3','a4','a5','a6','a7','m2all','mall','mg1','mg2','mg3','mg4','mg5','mg6','mg7','hpAll','mpAll','m1','m2','m3','m4','m5','m6','m7','m8','m9','m14','m15','m16','m17','m18','m19','m20','m21','pa1','pa2','pa3','pa4','pm1','pm2','pm3','pm4','pm5','pm6','pm7','za','za1','za2','za3','za4','zma','zm','zm1','zm2','zm3','zm4','zm5','zm6','zm7','mib1','mab1','mib2','mab2','mib3','mab3','mib4','mab4','speedhp','speedmp','m10','m11','zona','zonb','maxves','minAtack','maxAtack','speed_dungeon','antm3'), - 'sv' => array('pza','pza1','pza2','pza3','pza4','notravma','min_zonb','min_zona','nokrit','pog','min_use_mp','za1proc','za2proc','za3proc','za4proc','zaproc','zmproc','zm1proc','zm2proc','zm3proc','zm4proc','shopSale','s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','aall','a1','a2','a3','a4','a5','a6','a7','m2all','mall','mg1','mg2','mg3','mg4','mg5','mg6','mg7','hpAll','mpAll','m1','m2','m3','m4','m5','m6','m7','m8','m9','m14','m15','m16','m17','m18','m19','m20','m21','pa1','pa2','pa3','pa4','pm1','pm2','pm3','pm4','pm5','pm6','pm7','min_use_mp','za','za1','za2','za3','za4','zma','zm','zm1','zm2','zm3','zm4','zm5','zm6','zm7','mib1','mab1','mib2','mab2','mib3','mab3','mib4','mab4','speedhp','speedmp','m10','m11','zona','zonb','maxves','minAtack','maxAtack','free_stats','tya1','tya2','tya3','tya4','tym1','tym2','tym3','tym4','tym5','tym6','tym7') - ); - -$is = array('oza'=>'Защита от урона','oza1'=>'Защита от колющего урона','oza2'=>'Защита от рубящего урона','oza3'=>'Защита от дробящего урона','oza4'=>'Защита от режущего урона','hpAll'=>'Уровень жизни (HP)','mpAll'=>'Уровень маны','sex'=>'Пол','lvl'=>'Уровень','s1'=>'Сила','s2'=>'Ловкость','s3'=>'Интуиция','s4'=>'Выносливость','s5'=>'Интелект','s6'=>'Мудрость','s7'=>'Духовность','s8'=>'Воля','s9'=>'Свобода духа','s10'=>'Божественность','m1'=>'Мф. критического удара (%)','m2'=>'Мф. против критического удара (%)','m3'=>'Мф. мощности критического удара (%)','m4'=>'Мф. увертывания (%)','m5'=>'Мф. против увертывания (%)','m6'=>'Мф. контрудара (%)','m7'=>'Мф. парирования (%)','m8'=>'Мф. блока щитом (%)','m9'=>'Мф. пробоя брони (%)','m14'=>'Мф. абс. критического удара (%)','m15'=>'Мф. абс. увертывания (%)','m16'=>'Мф. абс. парирования (%)','m17'=>'Мф. абс. контрудара (%)','m18'=>'Мф. абс. блока щитом (%)','m19'=>'Мф. абс. магический промах (%)','m20'=>'Мф. удача (%)','m21'=>'Мф. абс. попадания (%)','a1'=>'Мастерство владения ножами, кинжалами','a2'=>'Мастерство владения топорами, секирами','a3'=>'Мастерство владения дубинами, молотами','a4'=>'Мастерство владения мечами','a5'=>'Мастерство владения магическими посохами','a6'=>'Мастерство владения луками','a7'=>'Мастерство владения арбалетами','aall'=>'Мастерство владения оружием','mall'=>'Мастерство владения магией стихий','m2all'=>'Мастерство владения магией','mg1'=>'Мастерство владения магией огня','mg2'=>'Мастерство владения магией воздуха','mg3'=>'Мастерство владения магией воды','mg4'=>'Мастерство владения магией земли','mg5'=>'Мастерство владения магией Света','mg6'=>'Мастерство владения магией Тьмы','mg7'=>'Мастерство владения серой магией','tj'=>'Тяжелая броня','lh'=>'Легкая броня','minAtack'=>'Минимальный урон','maxAtack'=>'Максимальный урон','m10'=>'Мф. мощности урона','m11'=>'Мф. мощности магии стихий','m11a'=>'Мф. мощности магии','pa1'=>'Мф. мощности колющего урона','pa2'=>'Мф. мощности рубящего урона','pa3'=>'Мф. мощности дробящий урона','pa4'=>'Мф. мощности режущий урона','pm1'=>'Мф. мощности магии огня','pm2'=>'Мф. мощности магии воздуха','pm3'=>'Мф. мощности магии воды','pm4'=>'Мф. мощности магии земли','pm5'=>'Мф. мощности магии Света','pm6'=>'Мф. мощности магии Тьмы','pm7'=>'Мф. мощности серой магии','za'=>'Защита от урона','zm'=>'Защита от магии стихий','zma'=>'Защита от магии','za1'=>'Защита от колющего урона','za2'=>'Защита от рубящего урона','za3'=>'Защита от дробящий урона','za4'=>'Защита от режущий урона','zm1'=>'Защита от магии огня','zm2'=>'Защита от магии воздуха','zm3'=>'Защита от магии воды','zm4'=>'Защита от магии земли','zm5'=>'Защита от магии Света','zm6'=>'Защита от магии Тьмы','zm7'=>'Защита от серой магии','pza'=>'Понижение защиты от урона','pzm'=>'Понижение защиты от магии','pza1'=>'Понижение защиты от колющего урона','min_heal_proc'=>'Эффект лечения (%)','silver'=>'Премиум','notravma'=>'Защита от травм','yron_min'=>'Минимальный урон','yron_max'=>'Максимальный урон','pza2'=>'Понижение защиты от рубящего урона','pza3'=>'Понижение защиты от дробящего урона','pza4'=>'Понижение защиты от режущего урона','pzm1'=>'Понижение защиты от магии огня','pzm2'=>'Понижение защиты от магии воздуха','pzm3'=>'Понижение защиты от магии воды','pzm4'=>'Понижение защиты от магии земли','pzm5'=>'Понижение защиты от магии Света','pzm6'=>'Понижение защиты от магии Тьмы','pzm7'=>'Понижение защиты от серой магии','speedhp'=>'Регенерация здоровья (НР)','speedmp'=>'Регенерация маны (МР)','tya1'=>'Колющие атаки','tya2'=>'Рубящие атаки','tya3'=>'Дробящие атаки','tya4'=>'Режущие атаки','tym1'=>'Огненные атаки','tym2'=>'Электрические атаки','tym3'=>'Ледяные атаки','tym4'=>'Земляные атаки','tym5'=>'Атаки Света','tym6'=>'Атаки Тьмы','tym7'=>'Серые атаки','min_use_mp'=>'Уменьшает расход маны','pog'=>'Поглощение урона','maxves'=>'Увеличивает рюкзак','zona'=>'Дополнительная зона атаки','zaproc'=>'Блокировка физического Урона(%)','zmproc'=>'Блокировка магического Урона (%)','speed_dungeon'=>'Скорость перемещения по пещерам','free_stats'=>'Свободных распределений','antm3'=>'Мф. против пощности крит. удара'); - -if( !file_exists('/home/newcom1/public_html/img.new-combats.com/i/encicl/pict_'.$rz[$rt[$itm['type']]][0].'.jpg') == true ) { - //subject - $rz[$rt[$itm['type']]][0] = 'subject'; -} - -if( !isset($rz[$rt[$itm['type']]][1])) { - $rz[$rt[$itm['type']]][1] = 'Прочие предметы'; -} - -?> - - - - -Бойцовский клуб | Библиотека <? if(isset($itm['id'])) { ?> | <?=$rz[$rt[$itm['type']]][1]?> | <?=$itm['name']?><? } ?> - - - - - - - - -
- - - -
- - - - - - - - - - - - - - - -
-

-
-

» Предметы / / -

- -

- -
- - - - - - - - - - - - - - - - -
  
-
- -

 

-
- - - -
- - - - - - -
- - -Редактировать предмет    '; - echo $crd; - } - - if($itm['massa']>0) - { - echo '(Масса: '.$itm['massa'].') '; - } - if(isset($itd['art']) && $itd['art'] > 0) - { - echo 'Артефактная вещь '; - } - - if(isset($po['sudba']) && $po['sudba'] > 0) - { - echo ' '; - } - - if($itm['price1'] > 0) { - echo '
Цена: '.$itm['price1'].' кр.'; - } - - if($itm['price2'] > 0) { - echo '
Цена: '.$itm['price2'].' екр.'; - } - - if($itm['iznosMAXi'] >= 999999999) { - echo '
Долговечность: неразрушимо'; - }elseif($itm['iznosMAXi'] > 0) { - echo '
Долговечность: 0/'.$itm['iznosMAXi'].''; - } - - - //Срок годности предмета - if(isset($itd['srok']) && $itd['srok'] > 0) - { - $itm['srok'] = $itd['srok']; - } - if($itm['srok'] > 0) - { - echo '
Срок годности: '.timeOut($itm['srok']); - } - - //Продолжительность действия магии: - if((int)$itm['magic_inci'] > 0) - { - $efi = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "'.((int)$itm['magic_inci']).'" LIMIT 1')); - if(isset($efi['id2']) && $efi['actionTime']>0) - { - echo '
Продолжительность действия: '.timeOut($efi['actionTime']); - } - } - - -/* требования */ -$tr = ''; - -$t = $items['tr']; -$x = 0; -while($xТребуется минимальное:'.$tr; -} - -/* действует на */ -$tr = ''; - -$t = $items['add']; -$x = 0; -while($x'головы',2=>'корпуса',3=>'пояса',4=>'ног'); - while($i<=4) - { - if(isset($itd['add_mab'.$i]) && $itd['add_mab'.$i]>0) - { - if($itd['add_mab'.$i]==$itd['add_mib'.$i]) - { - $z = '+'; - if($itd['add_mab'.$i]<0) - { - $z = ''; - } - $tr .= '
• Броня '.$bn[$i].': '.$z.''.$itd['add_mab'.$i]; - }else{ - $tr .= '
• Броня '.$bn[$i].': '.$itd['add_mib'.$i].'-'.$itd['add_mab'.$i]; - } - } - $i++; - } -if($tr != '') { - echo '
Действует на:'.$tr; -} -/* свойства предмета */ -$tr = ''; - - if(isset($itd['sv_yron_min'],$itd['sv_yron_max'])) - { - $tr .= '
• Урон: '.$itd['sv_yron_min'].' - '.$itd['sv_yron_max']; - } - $x = 0; - while($x0) - { - $x = 1; - while($x<=$itd['zonb']) - { - $tr .= '+'; - $x++; - } - }else{ - $tr .= '—'; - } - } - -if($tr != '') { - echo '
Свойства предмета:'.$tr; -} - -/* особенности */ -$tr = ''; - - $x = 1; - while($x<=4) - { - if(isset($itd['tya'.$x]) && $itd['tya'.$x]>0) - { - $tyc = 'Ничтожно редки'; - if($itd['tya'.$x]>9) - { - $tyc = 'Редки'; - } - if($itd['tya'.$x]>24) - { - $tyc = 'Малы'; - } - if($itd['tya'.$x]>49) - { - $tyc = 'Временами'; - } - if($itd['tya'.$x]>74) - { - $tyc = 'Регулярны'; - } - if($itd['tya'.$x]>89) - { - $tyc = 'Часты'; - } - if($itd['tya'.$x]>=100) - { - $tyc = 'Всегда'; - } - $tr .= '
• '.$is['tya'.$x].': '.$tyc; - } - $x++; - } - $x = 1; - while($x<=7) - { - if(isset($itd['tym'.$x]) && $itd['tym'.$x]>0) - { - $tyc = 'Ничтожно редки'; - if($itd['tym'.$x]>9) - { - $tyc = 'Редки'; - } - if($itd['tym'.$x]>24) - { - $tyc = 'Малы'; - } - if($itd['tym'.$x]>49) - { - $tyc = 'Временами'; - } - if($itd['tym'.$x]>74) - { - $tyc = 'Регулярны'; - } - if($itd['tym'.$x]>89) - { - $tyc = 'Часты'; - } - if($itd['tym'.$x]>=100) - { - $tyc = 'Всегда'; - } - $tr .= '
• '.$is['tym'.$x].': '.$tyc; - } - $x++; - } - $x = 1; - while($x <= 4) - { - if(isset($itd['add_oza'.$x]) && $itd['add_oza'.$x]>0) - { - $tyc = 'Слабая'; - if($itd['add_oza'.$x] == 4) - { - $tyc = 'Посредственная'; - } - if($itd['add_oza'.$x] == 2) - { - $tyc = 'Нормальная'; - } - if($itd['add_oza'.$x] == 3) - { - $tyc = 'Хорошая'; - } - if($itd['add_oza'.$x] == 5) - { - $tyc = 'Великолепная'; - } - if($tyc != '') { - $tr .= '
• '.$is['oza'.$x].': '.$tyc; - } - } - $x++; - } - if(isset($itd['free_stats']) && $itd['free_stats']>0){ - echo '
Свободные распределения:
• Возможных распределений: '.$itd['free_stats']; - } -if($tr != '') { - echo '
Особенности:'.$tr; -} - $is2 = ''; - - if(isset($itd['complect'])) - { - $is2 .= '
Дополнительная информация:'; - } - if(isset($itd['complect'])) - { - //не отображается - $com1 = array('name'=>'Неизвестный Комплект','x'=>0,'text'=>''); - $spc = mysql_query('SELECT * FROM `complects` WHERE `com` = "'.$itd['complect'].'" ORDER BY `x` ASC LIMIT 20'); - while($itmc = mysql_fetch_array($spc)) - { - $com1['name'] = $itmc['name']; - $com1['text'] .= '    • '.$itmc['x'].': '; - //действие комплекта - $i1c = 0; $i2c = 0; - $i1e = lookStats($itmc['data']); - while($i1c0) - { - $i3c = '+'.$i3c; - } - if($i2c>0) - { - $com1['text'] .= '    '.$is[$items['add'][$i1c]].': '.$i3c; - }else{ - $com1['text'] .= $is[$items['add'][$i1c]].': '.$i3c; - } - $com1['text'] .= '
'; - $i2c++; - } - $i1c++; - } - unset($i1c,$i2c,$i3c); - $com1['x']++; - } - $is2 .= '
• Часть комплекта: '.$com1['name'].'
'; - $is2 .= $com1['text']; - $is2 .= ''; - } - - $is2 .= ''; - - if($itm['info']!='') - { - $is2 .= '
Описание:
'.$itm['info'].'
'; - } - - if(isset($itd['info']) && $itd['info']!='') - { - $is2 .= '
'.$itd['info'].'
'; - } - - if(isset($itm['use_text']) && $itm['max_text']-$itm['use_text'] > 0) { - $is2 .= '
Количество символов: '.($itm['max_text']-$itm['use_text']).'
'; - } - - if(isset($itd['noremont']) && $itd['noremont']>0) - { - $is2 .= '
Предмет не подлежит ремонту
'; - } - - if(isset($itd['frompisher']) && $itd['frompisher']>0) - { - $is2 .= '
Предмет из подземелья
'; - } - - if(isset($itm['dn_delete']) && $itm['dn_delete']>0) - { - $is2 .= '
Предмет будет удален при выходе из подземелья
'; - } - - $is2 .= '
'; - -echo $is2; - -?> -
- - - -Требуется минимальное:
• Уровень: 4
• Выносливость: 16
• Сила: 16
-Действует на:
• Мф. увертывания (%): +30
• Интуиция: +3
• Сила: +5
-Свойства предмета:
• Урон: 8 - 18
• Мф. против увертывания (%): 30
• Мф. критического удара (%): 50
• Мастерство владения мечами: 2
• Зоны блокирования: +
- -Особенности:
• Колющие атаки: Малы
• Рубящие атаки: Временами
• Дробящие атаки: Редки
• Режущие атаки: Малы
- - - -Возможно усиление до 10го уровня
- -*/ -?> - -
-<?=$itm['name']?>
- -
-

- -

    
 
-= 0 ) { - - if($rv == 1) { - //Костыли - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 26'); - }elseif($rv == 3) { - //Свитки - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 29 AND `name` NOT LIKE "%Кристаллизатор%"'); - }elseif($rv == 2) { - //Эликсиры - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 30'); - }elseif($rv == 6) { - //Броня тяжелая - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 6'); - }elseif($rv == 32) { - //Броня легкая - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 5'); - }elseif($rv == 7) { - //Венки на голову - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 2'); - }elseif($rv == 8) { - //Наручи - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 3'); - }elseif($rv == 9) { - //Ботинки - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 15'); - }elseif($rv == 10) { - //Перчатки - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 12'); - }elseif($rv == 11) { - //Плащи - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 7'); - }elseif($rv == 12) { - //Поножи - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 14'); - }elseif($rv == 13) { - //Пояса - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 8'); - }elseif($rv == 14) { - //Рубахи - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 4'); - }elseif($rv == 15) { - //Шлема - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 1'); - }elseif($rv == 16) { - //Елки - $sp = mysql_query('SELECT * FROM `items_main` WHERE `name` LIKE "%Елка%"'); - }elseif($rv == 17) { - //Дубины - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 20'); - }elseif($rv == 18) { - //Кинжалы - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 18'); - }elseif($rv == 19) { - //Мечи - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 21'); - }elseif($rv == 20) { - //Топоры - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 19'); - }elseif($rv == 21) { - //Посохи - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 22'); - }elseif($rv == 22) { - //Цветы - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 32 AND `img` LIKE "f_%"'); - }elseif($rv == 23) { - //Компоненты - //$sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 2'); - }elseif($rv == 24) { - //Маг.предметы - //$sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 2'); - }elseif($rv == 25) { - //Подарки - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 38 OR `type` = 63'); - }elseif($rv == 26) { - //Руны - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 31'); - }elseif($rv == 27) { - //Прочие - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 32'); - }elseif($rv == 28) { - //Щиты - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 13'); - }elseif($rv == 29) { - //Кольца - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 11'); - }elseif($rv == 30) { - //Ожерелья - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 10'); - }elseif($rv == 31) { - //Серьги - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 9'); - } - - } - - - -?> - - - - - - - - - - - - - - -
-

» Предметы / -

- -

- '; - }else{ - - - while( $itm = mysql_fetch_array($sp) ) { - - //if(!isset($itm['id'])) { - $itd = mysql_fetch_array(mysql_query('SELECT * FROM `items_main_data` WHERE `items_id` = "'.mysql_real_escape_string($itm['id']).'" LIMIT 1')); - $itd = lookStats($itd['data']); - - ?>
- - - -
- - - - -
- - - Редактировать предмет    '; - echo $crd; - } - if($itm['massa']>0) { - echo '(Масса: '.$itm['massa'].') '; - } - if(isset($itd['art']) && $itd['art'] > 0) - { - echo 'Артефактная вещь '; - } - - if(isset($po['sudba'])) - { - echo ' '; - } - - if($itm['price1'] > 0) { - echo '
Цена: '.$itm['price1'].' кр.'; - } - - if($itm['price2'] > 0) { - echo '
Цена: '.$itm['price2'].' екр.'; - } - - if($itm['iznosMAXi'] >= 999999999) { - echo '
Долговечность: неразрушимо'; - }elseif($itm['iznosMAXi'] > 0) { - echo '
Долговечность: 0/'.$itm['iznosMAXi'].''; - } - - - //Срок годности предмета - if(isset($itd['srok']) && $itd['srok'] > 0) - { - $itm['srok'] = $itd['srok']; - } - if($itm['srok'] > 0) - { - echo '
Срок годности: '.timeOut($itm['srok']); - } - - //Продолжительность действия магии: - if((int)$itm['magic_inci'] > 0) - { - $efi = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "'.((int)$itm['magic_inci']).'" LIMIT 1')); - if(isset($efi['id2']) && $efi['actionTime']>0) - { - echo '
Продолжительность действия: '.timeOut($efi['actionTime']); - } - } - - -/* требования */ -$tr = ''; - -$t = $items['tr']; -$x = 0; -while($xТребуется минимальное:'.$tr; -} - -/* действует на */ -$tr = ''; - -$t = $items['add']; -$x = 0; -while($x'головы',2=>'корпуса',3=>'пояса',4=>'ног'); - while($i<=4) - { - if(isset($itd['add_mab'.$i]) && $itd['add_mab'.$i]>0) - { - if($itd['add_mab'.$i]==$itd['add_mib'.$i]) - { - $z = '+'; - if($itd['add_mab'.$i]<0) - { - $z = ''; - } - $tr .= '
• Броня '.$bn[$i].': '.$z.''.$itd['add_mab'.$i]; - }else{ - $tr .= '
• Броня '.$bn[$i].': '.$itd['add_mib'.$i].'-'.$itd['add_mab'.$i]; - } - } - $i++; - } -if($tr != '') { - echo '
Действует на:'.$tr; -} -/* свойства предмета */ -$tr = ''; - - if(isset($itd['sv_yron_min'],$itd['sv_yron_max'])) - { - $tr .= '
• Урон: '.$itd['sv_yron_min'].' - '.$itd['sv_yron_max']; - } - $x = 0; - while($x0) - { - $x = 1; - while($x<=$itd['zonb']) - { - $tr .= '+'; - $x++; - } - }else{ - $tr .= '—'; - } - } - -if($tr != '') { - echo '
Свойства предмета:'.$tr; -} - -/* особенности */ -$tr = ''; - - $x = 1; - while($x<=4) - { - if(isset($itd['tya'.$x]) && $itd['tya'.$x]>0) - { - $tyc = 'Ничтожно редки'; - if($itd['tya'.$x]>6) - { - $tyc = 'Редки'; - } - if($itd['tya'.$x]>14) - { - $tyc = 'Малы'; - } - if($itd['tya'.$x]>34) - { - $tyc = 'Временами'; - } - if($itd['tya'.$x]>79) - { - $tyc = 'Регулярны'; - } - if($itd['tya'.$x]>89) - { - $tyc = 'Часты'; - } - if($itd['tya'.$x]>=100) - { - $tyc = 'Всегда'; - } - $tr .= '
• '.$is['tya'.$x].': '.$tyc; - } - $x++; - } - $x = 1; - while($x<=7) - { - if(isset($itd['tym'.$x]) && $itd['tym'.$x]>0) - { - $tyc = 'Ничтожно редки'; - if($itd['tym'.$x]>6) - { - $tyc = 'Редки'; - } - if($itd['tym'.$x]>14) - { - $tyc = 'Малы'; - } - if($itd['tym'.$x]>34) - { - $tyc = 'Временами'; - } - if($itd['tym'.$x]>79) - { - $tyc = 'Регулярны'; - } - if($itd['tym'.$x]>89) - { - $tyc = 'Часты'; - } - if($itd['tym'.$x]>=100) - { - $tyc = 'Всегда'; - } - $tr .= '
• '.$is['tym'.$x].': '.$tyc; - } - $x++; - } - $x = 1; - while($x <= 4) - { - if(isset($itd['add_oza'.$x]) && $itd['add_oza'.$x]>0) - { - $tyc = 'Слабая'; - if($itd['add_oza'.$x] == 4) - { - $tyc = 'Посредственная'; - } - if($itd['add_oza'.$x] == 2) - { - $tyc = 'Нормальная'; - } - if($itd['add_oza'.$x] == 3) - { - $tyc = 'Хорошая'; - } - if($itd['add_oza'.$x] == 5) - { - $tyc = 'Великолепная'; - } - if($tyc != '') { - $tr .= '
• '.$is['oza'.$x].': '.$tyc; - } - } - $x++; - } - if(isset($itd['free_stats']) && $itd['free_stats']>0){ - echo '
Свободные распределения:
• Возможных распределений: '.$itd['free_stats']; - } -if($tr != '') { - echo '
Особенности:'.$tr; -} - $is2 = ''; - - if(isset($itd['complect'])) - { - $is2 .= '
Дополнительная информация:'; - } - if(isset($itd['complect'])) - { - //не отображается - $com1 = array('name'=>'Неизвестный Комплект','x'=>0,'text'=>''); - $spc = mysql_query('SELECT * FROM `complects` WHERE `com` = "'.$itd['complect'].'" ORDER BY `x` ASC LIMIT 20'); - while($itmc = mysql_fetch_array($spc)) - { - $com1['name'] = $itmc['name']; - $com1['text'] .= '    • '.$itmc['x'].': '; - //действие комплекта - $i1c = 0; $i2c = 0; - $i1e = lookStats($itmc['data']); - while($i1c0) - { - $i3c = '+'.$i3c; - } - if($i2c>0) - { - $com1['text'] .= '    '.$is[$items['add'][$i1c]].': '.$i3c; - }else{ - $com1['text'] .= $is[$items['add'][$i1c]].': '.$i3c; - } - $com1['text'] .= '
'; - $i2c++; - } - $i1c++; - } - unset($i1c,$i2c,$i3c); - $com1['x']++; - } - $is2 .= '
• Часть комплекта: '.$com1['name'].'
'; - $is2 .= $com1['text']; - $is2 .= ''; - } - - $is2 .= ''; - - if($itm['info']!='') - { - $is2 .= '
Описание:
'.$itm['info'].'
'; - } - - if(isset($itd['info']) && $itd['info']!='') - { - $is2 .= '
'.$itd['info'].'
'; - } - - if(isset($itm['use_text']) && $itm['max_text']-$itm['use_text'] > 0) { - $is2 .= '
Количество символов: '.($itm['max_text']-$itm['use_text']).'
'; - } - - if(isset($itd['noremont']) && $itd['noremont']>0) - { - $is2 .= '
Предмет не подлежит ремонту
'; - } - - if(isset($itd['frompisher']) && $itd['frompisher']>0) - { - $is2 .= '
Предмет из подземелья
'; - } - - if(isset($itm['dn_delete']) && $itm['dn_delete']>0) - { - $is2 .= '
Предмет будет удален при выходе из подземелья
'; - } - - $is2 .= '
'; - -echo $is2; - -?> -
- Требуется минимальное:
• Уровень: 4
• Выносливость: 16
• Сила: 16
-Действует на:
• Мф. увертывания (%): +30
• Интуиция: +3
• Сила: +5
-Свойства предмета:
• Урон: 8 - 18
• Мф. против увертывания (%): 30
• Мф. критического удара (%): 50
• Мастерство владения мечами: 2
• Зоны блокирования: +
- -Особенности:
• Колющие атаки: Малы
• Рубящие атаки: Временами
• Дробящие атаки: Редки
• Режущие атаки: Малы
- - - -Возможно усиление до 10го уровня
- -*/ -?>
<?=$itm['name']?>
-
- -

 

-
-

- -

    
- - - - Предметы
- - - - - - -

- Амуниция
-    · Костыли 
-    · Эликсиры и еда 
- Заклинания
-    · Заклинания 
- Одежда
-    · Тяжелая броня 
-    · Легкая броня 
-    · Венки 
-    · Наручи 
-    · Обувь 
-    · Перчатки 
-    · Плащи 
-    · Поножи 
-    · Пояса 
-    · Рубахи 
-    · Шлемы 
- Оружие
-    · Ёлки 
-    · Дубины 
-    · Кинжалы 
-    · Мечи 
-    · Топоры 
-    · Посохи 
-    · Цветы и Букеты 
- Разное
-    · Компоненты 
-    · Магические предметы 
-    · Подарки 
-    · Руны 
-    · Прочие предметы 
- Щиты
-    · Щиты 
- Ювелирные товары
-    · Кольца 
-    · Ожерелья 
-    · Серьги 
-


- - -
 
- - - - - - - - - - - - - - -
-  -
Copyright © «www.new-combats.com»

- - diff --git a/_incl_data/class/magic/Elemental/Fire.php b/_incl_data/class/magic/Elemental/Fire.php new file mode 100644 index 00000000..8483dd29 --- /dev/null +++ b/_incl_data/class/magic/Elemental/Fire.php @@ -0,0 +1,45 @@ +btl = $btl; + } + + /** Вспышка. Приёмы: 34(8), 67(9), 68 (10), 69(11) + * @param $level + * @param $fireTargetMultiplier + * @return array + */ + public function Flash($level, $fireTargetMultiplier = 0) + { + $baseDamage = [ + 8 => [40, 40], + 9 => [45, 45], + 10 => [50, 50], + 11 => [60, 60], + ]; + if (!is_numeric($fireTargetMultiplier)) { + $fireTargetMultiplier = 0; + } + $rawDamage = mt_rand($baseDamage[$level][0], $baseDamage[$level][1]); + $rawDamage = Math::addPercent($rawDamage, $fireTargetMultiplier); + return [ + 'name' => "Вспышка [$level]", + 'damage' => $rawDamage, + 'color' => $this->color, + 'colorCrit' => $this->colorCrit, + 'colorMiss' => $this->colorMiss, + ]; + } +} \ No newline at end of file diff --git a/_incl_data/class/magic/yarostzvezd.php b/_incl_data/class/magic/yarostzvezd.php index 6f5b7226..aabe48b3 100644 --- a/_incl_data/class/magic/yarostzvezd.php +++ b/_incl_data/class/magic/yarostzvezd.php @@ -1,50 +1,69 @@ stats['hpNow'] < 1 ) { - $u->error = 'Вы поглибли и не можете воспользоваться свитком...'; - }elseif( $u->info['tactic7'] < $pvr['trs7'] ) { - $u->error = 'Недостаточно духа, необходимо '.$pvr['trs7'].'...'; - }elseif( isset($btl->info['id']) ) { - /* - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $u->info['enemy'], - '', - '{tm1} {u1} использовал заклятие "'.$itm['name'].'".', - ($btl->hodID) - ); - */ - - mysql_query('UPDATE `stats` SET `tactic7` = `tactic7` - "'.$pvr['trs7'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->info['tactic7'] = $u->info['tactic7']-$pvr['trs7']; - $u->stats['tactic7'] = $u->stats['tactic7']-$pvr['trs7']; - - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `id_eff` = 22 AND `v1` = "priem" AND `v2` = 325'); - mysql_query(" - INSERT INTO `eff_users` ( `id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES - ( 22, '".$u->info['id']."', 'Ярость Холодных Звезд', 'add_acestar=1', 0, 77, 0, '".$u->info['id']."', 0, 'priem', 325, 'elementalcrit.gif', 1, -1, 'яростьхолодныхзвезд', 0, 0, '', 0, 0, 0, 1, 0); +if ($itm['magic_inci'] == 'yarostzvezd') { + $pvr = []; + + //Действие при клике + $pvr['trs7'] = 5; + if ($u->stats['hpNow'] < 1) { + $u->error = 'Вы поглибли и не можете воспользоваться свитком...'; + } elseif ($u->info['tactic7'] < $pvr['trs7']) { + $u->error = 'Недостаточно духа, необходимо ' . $pvr['trs7'] . '...'; + } elseif (isset($btl->info['id'])) { + /* + $btl->priemAddLog( $id, 1, 2, $u->info['id'], $u->info['enemy'], + '', + '{tm1} {u1} использовал заклятие "'.$itm['name'].'".', + ($btl->hodID) + ); + */ + + mysql_query('UPDATE `stats` SET `tactic7` = `tactic7` - "' . $pvr['trs7'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + $u->info['tactic7'] = $u->info['tactic7'] - $pvr['trs7']; + $u->stats['tactic7'] = $u->stats['tactic7'] - $pvr['trs7']; + + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $u->info['id'] . '" AND `id_eff` = 22 AND `v1` = "priem" AND `v2` = 325'); + mysql_query(" + INSERT INTO `eff_users` ( + `id_eff`, + `uid`, + `name`, + `data`, + `overType`, + `timeUse`, + `timeAce`, + `user_use`, + `delete`, + `v1`, + `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES + ( + 22, + '" . $u->info['id'] . "', + 'Ярость Холодных Звезд', + 'add_acestar=1', + 0, + 77, + 0, + '" . $u->info['id'] . "', + 0, + 'priem', + 325, + 'elementalcrit.gif', 1, -1, 'яростьхолодныхзвезд', 0, 0, '', 0, 0, 0, 1, 0); "); - - $u->error = 'Вы почувствовали силу... '; - mysql_query('UPDATE `items_users` SET `iznosNOW` = `iznosNOW` + 1 WHERE `id` = '.$itm['id'].' LIMIT 1'); - - }else{ - $u->error = 'Свиток возможно использовать только в бою'; - } - - //Отнимаем тактики - //$this->mintr($pl); - - unset($pvr); + + $u->error = 'Вы почувствовали силу... '; + mysql_query('UPDATE `items_users` SET `iznosNOW` = `iznosNOW` + 1 WHERE `id` = ' . $itm['id'] . ' LIMIT 1'); + } else { + $u->error = 'Свиток возможно использовать только в бою'; + } + + //Отнимаем тактики + //$this->mintr($pl); + + unset($pvr); } ?> \ No newline at end of file diff --git a/_incl_data/class/noob.quests.php b/_incl_data/class/noob.quests.php deleted file mode 100644 index 965fc6c1..00000000 --- a/_incl_data/class/noob.quests.php +++ /dev/null @@ -1,196 +0,0 @@ -info['id'].'" AND `inOdet` = "'.mysql_real_escape_string($var[1]).'" AND `delete` = 0 LIMIT 1')); - if(isset($test['id'])) { - if($var[2] == 0 || $var[2] == $test['item_id'] ) { - $r = true; - } - } - } - return $r; - } - - /* - Проверки квеста - */ - public static function testAll() { - global $u; - //Доп проверки - $go = 1; - //Опыт - $ex = explode('>',self::$info['module']); - if( $ex[0] == 'exp' ) { - if( $ex[1] < $u->info['exp'] ) { - self::$info['module'] = ''; - } - } - $ex = explode('<',self::$info['module']); - if( $ex[0] == 'exp' ) { - if( $ex[1] < $u->info['exp'] ) { - mysql_query('UPDATE `users` SET `fnq` = "'.self::$info['next'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - self::$info['module'] = ''; - } - } - //Остальное - $ex = explode('=',self::$info['module']); - if( $ex[0] == 'slots' ) { - //Надетые предметы в слоты - $ex2 = explode(',',$ex[1]); - $i = 0; $gd = 1; - while( $i < count($ex2) ) { - if( !isset($u->stats['wp' . $ex2[$i] . 'id']) ) { - $gd = 0; - } - $i++; - } - if( $gd == 1 ) { - self::$info['module'] = ''; - } - } - // - $go = 1; - //Требования - $e1 = explode('|',self::$info['tr']); - $i = 0; - while( $i < count($e1) ) { - $ex = explode('=',$e1[$i]); - // - if( $ex[0] == 'exp' ) { - if( $ex[1] == '>' ) { - if( $ex[2] > $u->info['exp'] ) { - $go = 0; - } - }elseif( $ex[1] == '<' ) { - if( $ex[2] < $u->info['exp'] ) { - $go = 0; - } - } - } - // - $i++; - } - // - // - return $go; - } - - - /* - Начало проверки обучения - */ - public static function start() { - global $u; - if( $u->info['fnq'] == 0 ) { - $u->info['fnq'] = 1; - mysql_query('UPDATE `users` SET `fnq` = "'.$u->info['fnq'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - }else{ - if( $u->info['level'] > 2 ) { - mysql_query('UPDATE `users` SET `fnq` = "-1" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - } - if( $u->info['fnq'] == 0 ) { - //Начало обучения - /*$humor = array( - 0 => array( - ':maniac: Сильно не бейте ;)',':beggar: Будет попрошайничать - бейте!',':pal: Возможно светлый!', - ':vamp: Возможно темный!',':susel: Судя по здоровенному б - ':friday: Не долго думав он начал искать собутыльника!',':doc: Лекарь: Новичок! Да, да! Ты! Если тебя сломают - у знахаря тебя соберут обратно!' - ), - 1 => array( - ':maniac: Помните! Девочек не бьем ;)',':nail: Она красит ногти, не отвлекайте все сразу ;)',':pal: Возможно светлая!', - ':vamp: Возможно темная!',':rev: Судя по красивой одежде - это женщина!',':hug: И сразу же кинулась всех целовать!', - ':angel2: Ангел сошел с небес...' - ) - ); - $humor = $humor[$u->info['sex']]; - */ - $u->info['fnq'] = 1; - mysql_query('UPDATE `users` SET `fnq` = "'.$u->info['fnq'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - //Отправляем сообщение в чат о новичке - //$u->send('','','','','','В нашем мире появился новый игрок "' . $u->info['login'] . '"! '.$humor[rand(0,count($humor)-1)].'',time(),6,0,0,0,1,0); - }else{ - self::$info = mysql_fetch_array(mysql_query('SELECT * FROM `an_quest` WHERE `id` = "'.$u->info['fnq'].'" LIMIT 1')); - if(isset(self::$info['id'])) { - //Тестируем квест - $go = self::testAll(); - if( $go == 0 ) { - //Требования не подходят - self::$info = array(); - }elseif( $u->info['marker'] == self::$info['module'] || self::$info['module'] == '' || (self::$info['module'] == 'next' && isset($_GET['nextfnq'])) || self::test1(self::$info['module']) == true ) { - //Квест выполнен, действие сделано! - if( self::$info['room'] == '' || self::$info['room'] == $u->room['name'] ) { - //Выдаем награду - $nag = explode('|',self::$info['win']); - if( $nag[3] != '0' ) { - //Выдаем предмет - $ng = explode(',',$nag[3]); - $i = 0; - while( $i < count($ng) ) { - $ngi = explode(',',$ng[$i]); - $j = 0; - while( $j < count($ngi) ) { - $ngj = explode('=',$ngi[$j]); - // id = srok = data - $ngjs = ''; - if( $ngj[1] > 0 ) { - $ngjs .= '|srok='.$ngj[1].''; - } - $u->addItem($ngj[0], $u->info['id'], $ngjs); - $j++; - } - $i++; - } - } - if( $nag[4] != '0' ) { - //Выдаем зубы - $u->info['money4'] += $nag[4]; - mysql_query('UPDATE `users` SET `money4` = "'.$u->info['money4'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - - $u->info['fnq'] = self::$info['next']; - mysql_query('UPDATE `users` SET `fnq` = "'.$u->info['fnq'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - self::$info = mysql_fetch_array(mysql_query('SELECT * FROM `an_quest` WHERE `id` = "'.$u->info['fnq'].'" LIMIT 1')); - $go = self::testAll(); - if( $go == 0 || self::$info['act'] == 'deadline' ) { - //Требования не подходят - self::$info = array(); - } - } - }else{ - //Текущий квест - } - - if(isset(self::$info['id'])) { - self::$info['info'] = str_replace('{login}',$u->info['login'],self::$info['info']); - self::$info['info'] = str_replace('{level}',$u->info['level'],self::$info['info']); - self::$info['info'] = str_replace("\r\n",'
',self::$info['info']); - echo ''; - }else{ - echo ''; - } - }else{ - //Квест не найден - echo ''; - } - // - } - } - -} - -?> \ No newline at end of file diff --git a/_incl_data/class/priem/100.php b/_incl_data/class/priem/100.php index 5451f4ec..96afd57d 100644 --- a/_incl_data/class/priem/100.php +++ b/_incl_data/class/priem/100.php @@ -27,8 +27,8 @@ $pvr = array(); $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$this->ue['id'],$pvr['hp'],0); - - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$this->ue['id']]] ); + +$this->addAirStaticPoints(); /* Удар в Статику*/ if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; @@ -102,8 +102,8 @@ $pvr = array(); $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); + + $this->addAirStaticPoints($pvr['uid']); /* Удар в Статику*/ if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; diff --git a/_incl_data/class/priem/101.php b/_incl_data/class/priem/101.php index ca48a966..7b9fb481 100644 --- a/_incl_data/class/priem/101.php +++ b/_incl_data/class/priem/101.php @@ -27,8 +27,8 @@ $pvr = array(); $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$this->ue['id'],$pvr['hp'],0); - - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$this->ue['id']]] ); + +$this->addAirStaticPoints(); /* Удар в Статику*/ if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; @@ -102,8 +102,8 @@ $pvr = array(); $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); + + $this->addAirStaticPoints($pvr['uid']); /* Удар в Статику*/ if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; diff --git a/_incl_data/class/priem/108.php b/_incl_data/class/priem/108.php index 68286610..4402c613 100644 --- a/_incl_data/class/priem/108.php +++ b/_incl_data/class/priem/108.php @@ -38,8 +38,8 @@ while( $pvr['ix'] < count($btl->users) ) { $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); + + $this->addAirStaticPoints($pvr['uid']); /* Удар в Статику*/ if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; diff --git a/_incl_data/class/priem/109.php b/_incl_data/class/priem/109.php index 051e67ce..b6952036 100644 --- a/_incl_data/class/priem/109.php +++ b/_incl_data/class/priem/109.php @@ -38,8 +38,8 @@ $pvr = array(); $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); + + $this->addAirStaticPoints($pvr['uid']); /* Удар в Статику*/ if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; diff --git a/_incl_data/class/priem/110.php b/_incl_data/class/priem/110.php index 9ecff908..8e5b1754 100644 --- a/_incl_data/class/priem/110.php +++ b/_incl_data/class/priem/110.php @@ -38,8 +38,8 @@ while( $pvr['ix'] < count($btl->users) ) { $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); + + $this->addAirStaticPoints($pvr['uid']); /* Удар в Статику*/ if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; diff --git a/_incl_data/class/priem/141.php b/_incl_data/class/priem/141.php index 2f2383e5..bd87861d 100644 --- a/_incl_data/class/priem/141.php +++ b/_incl_data/class/priem/141.php @@ -1,130 +1,90 @@ -stats[$btl->uids[$uid]]['um_priem'][$j_id])) { - global $u, $btl; - $yron = $yron/4; - $btl->priemAddLogFast( $uid, 0, "Призрачная защита", - '{tm1} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$uid]]['sex'] , NULL).'', - 0, time() ); - if( $yron < 0 ) { - $yron = 1; - } - $btl->stats[$btl->uids[$uid]]['um_priem'][$j_id] = true; - } - return round($yron); - }; -}elseif( isset($pr_tested_this) ) { - $fx_priem = function( $id , $at , $uid, $j_id ) { - // -- начало приема - global $u, $btl; - // - //Параметры приема - $pvr['used'] = 0; - // - $uid1 = $btl->atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid2 ) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - }elseif( $uid == $uid1 ) { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - /* - if((!isset($btl->atacks[$id]['newsf5']) || $btl->atacks[$id]['newsf5'] == false) && (!isset($btl->atacks[$id]['stopfx']) || $btl->atacks[$id]['stopfx'] == false)) { - if( isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3].'" AND `uid` = "'.$uid.'" LIMIT 1'); - unset($btl->stats[$btl->uids[$uid]]['u_priem'][$j_id]); - $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id] = false; - } - } - */ - // - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}elseif( isset($pr_used_this) ) { - $fx_priem = function( $id , $at , $uid, $j_id ) { - // -- начало приема - global $u, $btl; - // - //Параметры приема - $pvr['used'] = 0; - // - $uid1 = $btl->atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid2 ) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - }elseif( $uid == $uid1 ) { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if( $a > 0 ) { - $j = 0; $k = 0; $wp = 3; - while($j < count($at['p'][$a]['atack'])) { - if( isset($at['p'][$a]['atack'][$j]['yron']) && ( - $at['p'][$a]['atack'][$j][1] == 1 || - $at['p'][$a]['atack'][$j][1] == 4 || - $at['p'][$a]['atack'][$j][1] == 5 )) { - //if( !isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { - // - $at['p'][$a]['atack'][$j]['yron']['y'] = round($at['p'][$a]['atack'][$j]['yron']['y']/4); - $at['p'][$a]['atack'][$j]['yron']['r'] = round($at['p'][$a]['atack'][$j]['yron']['r']/4); - $at['p'][$a]['atack'][$j]['yron']['k'] = round($at['p'][$a]['atack'][$j]['yron']['k']/4); - $at['p'][$a]['atack'][$j]['yron']['m_k'] = round($at['p'][$a]['atack'][$j]['yron']['m_k']/4); - $at['p'][$a]['atack'][$j]['yron']['m_y'] = round($at['p'][$a]['atack'][$j]['yron']['m_y']/4); - // - if( $at['p'][$a]['atack'][$j]['yron']['y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['y'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['r'] >= 0 ) { $at['p'][$a]['atack'][$j]['yron']['r'] = -1; } - if( $at['p'][$a]['atack'][$j]['yron']['k'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['k'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['m_k'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['m_k'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['m_y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['m_y'] = 1; } - // - /*if( $pvr['used'] == 0 ) { - $at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->priemAddLog( '.$id.', '.$b.', '.$a.', '.$u2.', '.$u1.', - "Призрачная защита", - "{tm1} '.$btl->addlt($b , 17 , $btl->users[$btl->uids[$u2]]['sex'] , NULL).'", - '.($btl->hodID + 1).' );'; - }*/ - // спасение - $btl->spaCheck($u1); - // спасение - // - $at['p'][$a]['atack'][$j]['yron']['used'][] = array($j_id,$uid,$pvr['used']); - $at['p'][$a]['atack'][$j]['yron']['kill'][] = array($j_id,$uid,$pvr['kill']); - // - $at['p'][$a]['priems']['kill'][$uid][$j_id] = true; - //} - } - $j++; - } - } - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}else{ - //Действие при клике - $this->addEffPr($pl,$id); +$pvr = []; +if (isset($pr_momental_this)) { + $fx_moment = function ($uid, $enemy, $j_id, $yron, $profil) { + if (!isset($btl->stats[$btl->uids[$uid]]['um_priem'][$j_id])) { + global $btl; + $btl->priemAddLogFast($uid, 0, "Призрачная защита", + '{tm1} ' . $btl->addlt(1, 17, $btl->users[$btl->uids[$uid]]['sex'], null), + 0, time()); + + //$yron = max($yron / 4, 1); + $btl->stats[$btl->uids[$uid]]['um_priem'][$j_id] = true; + } + return round($yron); + }; +} elseif (isset($pr_tested_this)) { + $fx_priem = function ($id, $at, $uid, $j_id) { + return $at; + }; + unset($pr_used_this); +} elseif (isset($pr_used_this)) { + $fx_priem = function ($id, $at, $uid, $j_id) { + // -- начало приема + global $u, $btl; + // + //Параметры приема + $pvr['used'] = 0; + // +// $uid1 = $btl->atacks[$id]['uid1']; +// $uid2 = $btl->atacks[$id]['uid2']; +// if ($uid == $uid2) { +// $a = 1; +// $b = 2; +// $u1 = $uid1; +// $u2 = $uid2; +// } elseif ($uid == $uid1) { +// $a = 2; +// $b = 1; +// $u1 = $uid2; +// $u2 = $uid1; +// } +// if ($a > 0) { +// $j = 0; +// $k = 0; +// $wp = 3; +// while ($j < count($at['p'][$a]['atack'])) { +// if ( +// isset($at['p'][$a]['atack'][$j]['yron']) && +// ( +// $at['p'][$a]['atack'][$j][1] == 1 || +// $at['p'][$a]['atack'][$j][1] == 4 || +// $at['p'][$a]['atack'][$j][1] == 5 +// ) +// ) { +// $at['p'][$a]['atack'][$j]['yron']['y'] = max(round($at['p'][$a]['atack'][$j]['yron']['y'] / 4), 1); +// $at['p'][$a]['atack'][$j]['yron']['r'] = min(round($at['p'][$a]['atack'][$j]['yron']['r'] / 4), -1); +// $at['p'][$a]['atack'][$j]['yron']['k'] = max(round($at['p'][$a]['atack'][$j]['yron']['k'] / 4), 1); +// $at['p'][$a]['atack'][$j]['yron']['m_k'] = max(round($at['p'][$a]['atack'][$j]['yron']['m_k'] / 4), 1); +// $at['p'][$a]['atack'][$j]['yron']['m_y'] = max(round($at['p'][$a]['atack'][$j]['yron']['m_y'] / 4), 1); +// +// // спасение +// $btl->spaCheck($u1); +// // спасение +// // +// $at['p'][$a]['atack'][$j]['yron']['used'][] = [$j_id, $uid, $pvr['used']]; +// $at['p'][$a]['atack'][$j]['yron']['kill'][] = [$j_id, $uid, $pvr['kill']]; +// // +// $at['p'][$a]['priems']['kill'][$uid][$j_id] = true; +// //} +// } +// $j++; +// } +// } +// // -- конец приема + return $at; + }; + unset($pr_used_this); +} else { + //Действие при клике + $this->addEffPr($pl, $id); } unset($pvr); -?> \ No newline at end of file diff --git a/_incl_data/class/priem/142.php b/_incl_data/class/priem/142.php index ff01a68f..40c7874f 100644 --- a/_incl_data/class/priem/142.php +++ b/_incl_data/class/priem/142.php @@ -1,127 +1,140 @@ stats[$btl->uids[$uid]]['um_priem'][$j_id])) { - global $u, $btl; - if( $profil == 5 ) { - $yron = $yron/2; - /*$btl->priemAddLogFast( $uid, 0, "Призрачный огонь", - '{tm1} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$uid]]['sex'] , NULL).'', - 0, time() );*/ - if( $yron < 0 ) { - $yron = 1; - } - $btl->stats[$btl->uids[$uid]]['um_priem'][$j_id] = true; - } - } - return round($yron); - }; -}elseif( isset($pr_tested_this) ) { - $fx_priem = function( $id , $at , $uid, $j_id ) { - // -- начало приема - global $u, $btl; - // - //Параметры приема - $pvr['used'] = 0; - // - $uid1 = $btl->atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid2 ) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - }elseif( $uid == $uid1 ) { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if( isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3].'" AND `uid` = "'.$uid.'" LIMIT 1'); - unset($btl->stats[$btl->uids[$uid]]['u_priem'][$j_id]); - } - // - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}elseif( isset($pr_used_this) ) { - $fx_priem = function( $id , $at , $uid, $j_id ) { - // -- начало приема - global $u, $btl; - // - //Параметры приема - $pvr['used'] = 0; - // - $uid1 = $btl->atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid2 ) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - }elseif( $uid == $uid1 ) { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if( $a > 0 ) { - $j = 0; $k = 0; $wp = 3; - while($j < count($at['p'][$a]['atack'])) { - if( isset($at['p'][$a]['atack'][$j]['yron']) && ( - $at['p'][$a]['atack'][$j][1] == 1 || - $at['p'][$a]['atack'][$j][1] == 4 || - $at['p'][$a]['atack'][$j][1] == 5 )) { - if( !isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { - // - if( $at['p'][$a]['atack'][$j]['yron']['w_type'] == 5 ) { - $at['p'][$a]['atack'][$j]['yron']['y'] = round($at['p'][$a]['atack'][$j]['yron']['y']/2); - $at['p'][$a]['atack'][$j]['yron']['r'] = round($at['p'][$a]['atack'][$j]['yron']['r']/2); - $at['p'][$a]['atack'][$j]['yron']['k'] = round($at['p'][$a]['atack'][$j]['yron']['k']/2); - $at['p'][$a]['atack'][$j]['yron']['m_k'] = round($at['p'][$a]['atack'][$j]['yron']['m_k']/2); - $at['p'][$a]['atack'][$j]['yron']['m_y'] = round($at['p'][$a]['atack'][$j]['yron']['m_y']/2); - // - if( $at['p'][$a]['atack'][$j]['yron']['y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['y'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['r'] >= 0 ) { $at['p'][$a]['atack'][$j]['yron']['r'] = -1; } - if( $at['p'][$a]['atack'][$j]['yron']['k'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['k'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['m_k'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['m_k'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['m_y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['m_y'] = 1; } - // - if( $pvr['used'] == 0 ) { - /*$at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->priemAddLog( '.$id.', '.$b.', '.$a.', '.$u2.', '.$u1.', - "Призрачный огонь", - "{tm1} '.$btl->addlt($b , 17 , $btl->users[$btl->uids[$u2]]['sex'] , NULL).'", - '.($btl->hodID + 1).' );';*/ - } - // - $at['p'][$a]['atack'][$j]['yron']['used'][] = array($j_id,$uid,$pvr['used']); - $at['p'][$a]['atack'][$j]['yron']['kill'][] = array($j_id,$uid,$pvr['kill']); - // - //$at['p'][$a]['priems']['kill'][$uid][$j_id] = true; - } - // - } - } - $j++; - } - } - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}else{ - //Действие при клике - $this->addEffPr($pl,$id); +$pvr = []; +if (isset($pr_momental_this)) { + $fx_moment = function ($uid, $enemy, $j_id, $yron, $profil) { + if (!isset($btl->stats[$btl->uids[$uid]]['um_priem'][$j_id])) { + global $u, $btl; + if ($profil == 5) { + //$yron = $yron / 2; + /*$btl->priemAddLogFast( $uid, 0, "Призрачный огонь", + '{tm1} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$uid]]['sex'] , NULL).'', + 0, time() );*/ +// if ($yron < 0) { +// $yron = 1; +// } + $btl->stats[$btl->uids[$uid]]['um_priem'][$j_id] = true; + } + } + return round($yron); + }; +} elseif (isset($pr_tested_this)) { + $fx_priem = function ($id, $at, $uid, $j_id) { + // -- начало приема + global $u, $btl; + // + //Параметры приема + $pvr['used'] = 0; + // + $uid1 = $btl->atacks[$id]['uid1']; + $uid2 = $btl->atacks[$id]['uid2']; + if ($uid == $uid2) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } elseif ($uid == $uid1) { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } + if (isset($at['p'][$a]['priems']['kill'][$uid][$j_id])) { + mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3] . '" AND `uid` = "' . $uid . '" LIMIT 1'); + unset($btl->stats[$btl->uids[$uid]]['u_priem'][$j_id]); + } + // + // -- конец приема + return $at; + }; + unset($pr_used_this); +} elseif (isset($pr_used_this)) { + $fx_priem = function ($id, $at, $uid, $j_id) { + // -- начало приема +// global $u, $btl; +// // +// //Параметры приема +// $pvr['used'] = 0; +// // +// $uid1 = $btl->atacks[$id]['uid1']; +// $uid2 = $btl->atacks[$id]['uid2']; +// if ($uid == $uid2) { +// $a = 1; +// $b = 2; +// $u1 = ${'uid1'}; +// $u2 = ${'uid2'}; +// } elseif ($uid == $uid1) { +// $a = 2; +// $b = 1; +// $u1 = ${'uid2'}; +// $u2 = ${'uid1'}; +// } +// if ($a > 0) { +// $j = 0; +// $k = 0; +// $wp = 3; +// while ($j < count($at['p'][$a]['atack'])) { +// if (isset($at['p'][$a]['atack'][$j]['yron']) && ( +// $at['p'][$a]['atack'][$j][1] == 1 || +// $at['p'][$a]['atack'][$j][1] == 4 || +// $at['p'][$a]['atack'][$j][1] == 5)) { +// if (!isset($at['p'][$a]['priems']['kill'][$uid][$j_id])) { +// // +// if ($at['p'][$a]['atack'][$j]['yron']['w_type'] == 5) { +// $at['p'][$a]['atack'][$j]['yron']['y'] = round($at['p'][$a]['atack'][$j]['yron']['y'] / 2); +// $at['p'][$a]['atack'][$j]['yron']['r'] = round($at['p'][$a]['atack'][$j]['yron']['r'] / 2); +// $at['p'][$a]['atack'][$j]['yron']['k'] = round($at['p'][$a]['atack'][$j]['yron']['k'] / 2); +// $at['p'][$a]['atack'][$j]['yron']['m_k'] = round($at['p'][$a]['atack'][$j]['yron']['m_k'] / 2); +// $at['p'][$a]['atack'][$j]['yron']['m_y'] = round($at['p'][$a]['atack'][$j]['yron']['m_y'] / 2); +// // +// if ($at['p'][$a]['atack'][$j]['yron']['y'] < 1) { +// $at['p'][$a]['atack'][$j]['yron']['y'] = 1; +// } +// if ($at['p'][$a]['atack'][$j]['yron']['r'] >= 0) { +// $at['p'][$a]['atack'][$j]['yron']['r'] = -1; +// } +// if ($at['p'][$a]['atack'][$j]['yron']['k'] < 1) { +// $at['p'][$a]['atack'][$j]['yron']['k'] = 1; +// } +// if ($at['p'][$a]['atack'][$j]['yron']['m_k'] < 1) { +// $at['p'][$a]['atack'][$j]['yron']['m_k'] = 1; +// } +// if ($at['p'][$a]['atack'][$j]['yron']['m_y'] < 1) { +// $at['p'][$a]['atack'][$j]['yron']['m_y'] = 1; +// } +// // +// if ($pvr['used'] == 0) { +// /*$at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->priemAddLog( '.$id.', '.$b.', '.$a.', '.$u2.', '.$u1.', +// "Призрачный огонь", +// "{tm1} '.$btl->addlt($b , 17 , $btl->users[$btl->uids[$u2]]['sex'] , NULL).'", +// '.($btl->hodID + 1).' );';*/ +// } +// // +// $at['p'][$a]['atack'][$j]['yron']['used'][] = [$j_id, $uid, $pvr['used']]; +// $at['p'][$a]['atack'][$j]['yron']['kill'][] = [$j_id, $uid, $pvr['kill']]; +// // +// //$at['p'][$a]['priems']['kill'][$uid][$j_id] = true; +// } +// // +// } +// } +// $j++; +// } +// } +// // -- конец приема + return $at; + }; + unset($pr_used_this); +} else { + //Действие при клике + $this->addEffPr($pl, $id); } unset($pvr); ?> \ No newline at end of file diff --git a/_incl_data/class/priem/144.php b/_incl_data/class/priem/144.php index 522cdd4b..838de628 100644 --- a/_incl_data/class/priem/144.php +++ b/_incl_data/class/priem/144.php @@ -1,127 +1,140 @@ stats[$btl->uids[$uid]]['um_priem'][$j_id])) { - global $u, $btl; - if( $profil == 6 ) { - $yron = $yron/2; - /*$btl->priemAddLogFast( $uid, 0, "Призрачный воздух", - '{tm1} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$uid]]['sex'] , NULL).'', - 0, time() );*/ - if( $yron < 0 ) { - $yron = 1; - } - $btl->stats[$btl->uids[$uid]]['um_priem'][$j_id] = true; - } - } - return round($yron); - }; -}elseif( isset($pr_tested_this) ) { - $fx_priem = function( $id , $at , $uid, $j_id ) { - // -- начало приема - global $u, $btl; - // - //Параметры приема - $pvr['used'] = 0; - // - $uid1 = $btl->atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid2 ) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - }elseif( $uid == $uid1 ) { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if( isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3].'" AND `uid` = "'.$uid.'" LIMIT 1'); - unset($btl->stats[$btl->uids[$uid]]['u_priem'][$j_id]); - } - // - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}elseif( isset($pr_used_this) ) { - $fx_priem = function( $id , $at , $uid, $j_id ) { - // -- начало приема - global $u, $btl; - // - //Параметры приема - $pvr['used'] = 0; - // - $uid1 = $btl->atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid2 ) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - }elseif( $uid == $uid1 ) { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if( $a > 0 ) { - $j = 0; $k = 0; $wp = 3; - while($j < count($at['p'][$a]['atack'])) { - if( isset($at['p'][$a]['atack'][$j]['yron']) && ( - $at['p'][$a]['atack'][$j][1] == 1 || - $at['p'][$a]['atack'][$j][1] == 4 || - $at['p'][$a]['atack'][$j][1] == 5 )) { - if( !isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { - // - if( $at['p'][$a]['atack'][$j]['yron']['w_type'] == 6 ) { - $at['p'][$a]['atack'][$j]['yron']['y'] = round($at['p'][$a]['atack'][$j]['yron']['y']/2); - $at['p'][$a]['atack'][$j]['yron']['r'] = round($at['p'][$a]['atack'][$j]['yron']['r']/2); - $at['p'][$a]['atack'][$j]['yron']['k'] = round($at['p'][$a]['atack'][$j]['yron']['k']/2); - $at['p'][$a]['atack'][$j]['yron']['m_k'] = round($at['p'][$a]['atack'][$j]['yron']['m_k']/2); - $at['p'][$a]['atack'][$j]['yron']['m_y'] = round($at['p'][$a]['atack'][$j]['yron']['m_y']/2); - // - if( $at['p'][$a]['atack'][$j]['yron']['y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['y'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['r'] >= 0 ) { $at['p'][$a]['atack'][$j]['yron']['r'] = -1; } - if( $at['p'][$a]['atack'][$j]['yron']['k'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['k'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['m_k'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['m_k'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['m_y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['m_y'] = 1; } - // - if( $pvr['used'] == 0 ) { - /*$at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->priemAddLog( '.$id.', '.$b.', '.$a.', '.$u2.', '.$u1.', - "Призрачный воздух", - "{tm1} '.$btl->addlt($b , 17 , $btl->users[$btl->uids[$u2]]['sex'] , NULL).'", - '.($btl->hodID + 1).' );';*/ - } - // - $at['p'][$a]['atack'][$j]['yron']['used'][] = array($j_id,$uid,$pvr['used']); - $at['p'][$a]['atack'][$j]['yron']['kill'][] = array($j_id,$uid,$pvr['kill']); - // - //$at['p'][$a]['priems']['kill'][$uid][$j_id] = true; - } - // - } - } - $j++; - } - } - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}else{ - //Действие при клике - $this->addEffPr($pl,$id); +$pvr = []; +if (isset($pr_momental_this)) { + $fx_moment = function ($uid, $enemy, $j_id, $yron, $profil) { + if (!isset($btl->stats[$btl->uids[$uid]]['um_priem'][$j_id])) { + global $u, $btl; + if ($profil == 6) { + //$yron = $yron / 2; + /*$btl->priemAddLogFast( $uid, 0, "Призрачный воздух", + '{tm1} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$uid]]['sex'] , NULL).'', + 0, time() );*/ +// if ($yron < 0) { +// $yron = 1; +// } + $btl->stats[$btl->uids[$uid]]['um_priem'][$j_id] = true; + } + } + return round($yron); + }; +} elseif (isset($pr_tested_this)) { + $fx_priem = function ($id, $at, $uid, $j_id) { + // -- начало приема + global $u, $btl; + // + //Параметры приема + $pvr['used'] = 0; + // + $uid1 = $btl->atacks[$id]['uid1']; + $uid2 = $btl->atacks[$id]['uid2']; + if ($uid == $uid2) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } elseif ($uid == $uid1) { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } + if (isset($at['p'][$a]['priems']['kill'][$uid][$j_id])) { + mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3] . '" AND `uid` = "' . $uid . '" LIMIT 1'); + unset($btl->stats[$btl->uids[$uid]]['u_priem'][$j_id]); + } + // + // -- конец приема + return $at; + }; + unset($pr_used_this); +} elseif (isset($pr_used_this)) { + $fx_priem = function ($id, $at, $uid, $j_id) { +// // -- начало приема +// global $u, $btl; +// // +// //Параметры приема +// $pvr['used'] = 0; +// // +// $uid1 = $btl->atacks[$id]['uid1']; +// $uid2 = $btl->atacks[$id]['uid2']; +// if ($uid == $uid2) { +// $a = 1; +// $b = 2; +// $u1 = ${'uid1'}; +// $u2 = ${'uid2'}; +// } elseif ($uid == $uid1) { +// $a = 2; +// $b = 1; +// $u1 = ${'uid2'}; +// $u2 = ${'uid1'}; +// } +// if ($a > 0) { +// $j = 0; +// $k = 0; +// $wp = 3; +// while ($j < count($at['p'][$a]['atack'])) { +// if (isset($at['p'][$a]['atack'][$j]['yron']) && ( +// $at['p'][$a]['atack'][$j][1] == 1 || +// $at['p'][$a]['atack'][$j][1] == 4 || +// $at['p'][$a]['atack'][$j][1] == 5)) { +// if (!isset($at['p'][$a]['priems']['kill'][$uid][$j_id])) { +// // +// if ($at['p'][$a]['atack'][$j]['yron']['w_type'] == 6) { +// $at['p'][$a]['atack'][$j]['yron']['y'] = round($at['p'][$a]['atack'][$j]['yron']['y'] / 2); +// $at['p'][$a]['atack'][$j]['yron']['r'] = round($at['p'][$a]['atack'][$j]['yron']['r'] / 2); +// $at['p'][$a]['atack'][$j]['yron']['k'] = round($at['p'][$a]['atack'][$j]['yron']['k'] / 2); +// $at['p'][$a]['atack'][$j]['yron']['m_k'] = round($at['p'][$a]['atack'][$j]['yron']['m_k'] / 2); +// $at['p'][$a]['atack'][$j]['yron']['m_y'] = round($at['p'][$a]['atack'][$j]['yron']['m_y'] / 2); +// // +// if ($at['p'][$a]['atack'][$j]['yron']['y'] < 1) { +// $at['p'][$a]['atack'][$j]['yron']['y'] = 1; +// } +// if ($at['p'][$a]['atack'][$j]['yron']['r'] >= 0) { +// $at['p'][$a]['atack'][$j]['yron']['r'] = -1; +// } +// if ($at['p'][$a]['atack'][$j]['yron']['k'] < 1) { +// $at['p'][$a]['atack'][$j]['yron']['k'] = 1; +// } +// if ($at['p'][$a]['atack'][$j]['yron']['m_k'] < 1) { +// $at['p'][$a]['atack'][$j]['yron']['m_k'] = 1; +// } +// if ($at['p'][$a]['atack'][$j]['yron']['m_y'] < 1) { +// $at['p'][$a]['atack'][$j]['yron']['m_y'] = 1; +// } +// // +// if ($pvr['used'] == 0) { +// /*$at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->priemAddLog( '.$id.', '.$b.', '.$a.', '.$u2.', '.$u1.', +// "Призрачный воздух", +// "{tm1} '.$btl->addlt($b , 17 , $btl->users[$btl->uids[$u2]]['sex'] , NULL).'", +// '.($btl->hodID + 1).' );';*/ +// } +// // +// $at['p'][$a]['atack'][$j]['yron']['used'][] = [$j_id, $uid, $pvr['used']]; +// $at['p'][$a]['atack'][$j]['yron']['kill'][] = [$j_id, $uid, $pvr['kill']]; +// // +// //$at['p'][$a]['priems']['kill'][$uid][$j_id] = true; +// } +// // +// } +// } +// $j++; +// } +// } +// // -- конец приема + return $at; + }; + unset($pr_used_this); +} else { + //Действие при клике + $this->addEffPr($pl, $id); } unset($pvr); ?> \ No newline at end of file diff --git a/_incl_data/class/priem/145.php b/_incl_data/class/priem/145.php index 149805ae..1be22be9 100644 --- a/_incl_data/class/priem/145.php +++ b/_incl_data/class/priem/145.php @@ -1,127 +1,140 @@ stats[$btl->uids[$uid]]['um_priem'][$j_id])) { - global $u, $btl; - if( $profil == 7 ) { - $yron = $yron/2; - /*$btl->priemAddLogFast( $uid, 0, "Призрачная вода", - '{tm1} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$uid]]['sex'] , NULL).'', - 0, time() );*/ - if( $yron < 0 ) { - $yron = 1; - } - $btl->stats[$btl->uids[$uid]]['um_priem'][$j_id] = true; - } - } - return round($yron); - }; -}elseif( isset($pr_tested_this) ) { - $fx_priem = function( $id , $at , $uid, $j_id ) { - // -- начало приема - global $u, $btl; - // - //Параметры приема - $pvr['used'] = 0; - // - $uid1 = $btl->atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid2 ) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - }elseif( $uid == $uid1 ) { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if( isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3].'" AND `uid` = "'.$uid.'" LIMIT 1'); - unset($btl->stats[$btl->uids[$uid]]['u_priem'][$j_id]); - } - // - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}elseif( isset($pr_used_this) ) { - $fx_priem = function( $id , $at , $uid, $j_id ) { - // -- начало приема - global $u, $btl; - // - //Параметры приема - $pvr['used'] = 0; - // - $uid1 = $btl->atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid2 ) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - }elseif( $uid == $uid1 ) { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if( $a > 0 ) { - $j = 0; $k = 0; $wp = 3; - while($j < count($at['p'][$a]['atack'])) { - if( isset($at['p'][$a]['atack'][$j]['yron']) && ( - $at['p'][$a]['atack'][$j][1] == 1 || - $at['p'][$a]['atack'][$j][1] == 4 || - $at['p'][$a]['atack'][$j][1] == 5 )) { - if( !isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { - // - if( $at['p'][$a]['atack'][$j]['yron']['w_type'] == 7 ) { - $at['p'][$a]['atack'][$j]['yron']['y'] = round($at['p'][$a]['atack'][$j]['yron']['y']/2); - $at['p'][$a]['atack'][$j]['yron']['r'] = round($at['p'][$a]['atack'][$j]['yron']['r']/2); - $at['p'][$a]['atack'][$j]['yron']['k'] = round($at['p'][$a]['atack'][$j]['yron']['k']/2); - $at['p'][$a]['atack'][$j]['yron']['m_k'] = round($at['p'][$a]['atack'][$j]['yron']['m_k']/2); - $at['p'][$a]['atack'][$j]['yron']['m_y'] = round($at['p'][$a]['atack'][$j]['yron']['m_y']/2); - // - if( $at['p'][$a]['atack'][$j]['yron']['y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['y'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['r'] >= 0 ) { $at['p'][$a]['atack'][$j]['yron']['r'] = -1; } - if( $at['p'][$a]['atack'][$j]['yron']['k'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['k'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['m_k'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['m_k'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['m_y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['m_y'] = 1; } - // - if( $pvr['used'] == 0 ) { - /*$at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->priemAddLog( '.$id.', '.$b.', '.$a.', '.$u2.', '.$u1.', - "Призрачная вода", - "{tm1} '.$btl->addlt($b , 17 , $btl->users[$btl->uids[$u2]]['sex'] , NULL).'", - '.($btl->hodID + 1).' );';*/ - } - // - $at['p'][$a]['atack'][$j]['yron']['used'][] = array($j_id,$uid,$pvr['used']); - $at['p'][$a]['atack'][$j]['yron']['kill'][] = array($j_id,$uid,$pvr['kill']); - // - //$at['p'][$a]['priems']['kill'][$uid][$j_id] = true; - } - // - } - } - $j++; - } - } - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}else{ - //Действие при клике - $this->addEffPr($pl,$id); +$pvr = []; +if (isset($pr_momental_this)) { + $fx_moment = function ($uid, $enemy, $j_id, $yron, $profil) { + if (!isset($btl->stats[$btl->uids[$uid]]['um_priem'][$j_id])) { + global $u, $btl; + if ($profil == 7) { + //$yron = $yron / 2; + /*$btl->priemAddLogFast( $uid, 0, "Призрачная вода", + '{tm1} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$uid]]['sex'] , NULL).'', + 0, time() );*/ +// if ($yron < 0) { +// $yron = 1; +// } + $btl->stats[$btl->uids[$uid]]['um_priem'][$j_id] = true; + } + } + return round($yron); + }; +} elseif (isset($pr_tested_this)) { + $fx_priem = function ($id, $at, $uid, $j_id) { + // -- начало приема + global $u, $btl; + // + //Параметры приема + $pvr['used'] = 0; + // + $uid1 = $btl->atacks[$id]['uid1']; + $uid2 = $btl->atacks[$id]['uid2']; + if ($uid == $uid2) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } elseif ($uid == $uid1) { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } + if (isset($at['p'][$a]['priems']['kill'][$uid][$j_id])) { + mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3] . '" AND `uid` = "' . $uid . '" LIMIT 1'); + unset($btl->stats[$btl->uids[$uid]]['u_priem'][$j_id]); + } + // + // -- конец приема + return $at; + }; + unset($pr_used_this); +} elseif (isset($pr_used_this)) { + $fx_priem = function ($id, $at, $uid, $j_id) { + // -- начало приема +// global $u, $btl; +// // +// //Параметры приема +// $pvr['used'] = 0; +// // +// $uid1 = $btl->atacks[$id]['uid1']; +// $uid2 = $btl->atacks[$id]['uid2']; +// if ($uid == $uid2) { +// $a = 1; +// $b = 2; +// $u1 = ${'uid1'}; +// $u2 = ${'uid2'}; +// } elseif ($uid == $uid1) { +// $a = 2; +// $b = 1; +// $u1 = ${'uid2'}; +// $u2 = ${'uid1'}; +// } +// if ($a > 0) { +// $j = 0; +// $k = 0; +// $wp = 3; +// while ($j < count($at['p'][$a]['atack'])) { +// if (isset($at['p'][$a]['atack'][$j]['yron']) && ( +// $at['p'][$a]['atack'][$j][1] == 1 || +// $at['p'][$a]['atack'][$j][1] == 4 || +// $at['p'][$a]['atack'][$j][1] == 5)) { +// if (!isset($at['p'][$a]['priems']['kill'][$uid][$j_id])) { +// // +// if ($at['p'][$a]['atack'][$j]['yron']['w_type'] == 7) { +// $at['p'][$a]['atack'][$j]['yron']['y'] = round($at['p'][$a]['atack'][$j]['yron']['y'] / 2); +// $at['p'][$a]['atack'][$j]['yron']['r'] = round($at['p'][$a]['atack'][$j]['yron']['r'] / 2); +// $at['p'][$a]['atack'][$j]['yron']['k'] = round($at['p'][$a]['atack'][$j]['yron']['k'] / 2); +// $at['p'][$a]['atack'][$j]['yron']['m_k'] = round($at['p'][$a]['atack'][$j]['yron']['m_k'] / 2); +// $at['p'][$a]['atack'][$j]['yron']['m_y'] = round($at['p'][$a]['atack'][$j]['yron']['m_y'] / 2); +// // +// if ($at['p'][$a]['atack'][$j]['yron']['y'] < 1) { +// $at['p'][$a]['atack'][$j]['yron']['y'] = 1; +// } +// if ($at['p'][$a]['atack'][$j]['yron']['r'] >= 0) { +// $at['p'][$a]['atack'][$j]['yron']['r'] = -1; +// } +// if ($at['p'][$a]['atack'][$j]['yron']['k'] < 1) { +// $at['p'][$a]['atack'][$j]['yron']['k'] = 1; +// } +// if ($at['p'][$a]['atack'][$j]['yron']['m_k'] < 1) { +// $at['p'][$a]['atack'][$j]['yron']['m_k'] = 1; +// } +// if ($at['p'][$a]['atack'][$j]['yron']['m_y'] < 1) { +// $at['p'][$a]['atack'][$j]['yron']['m_y'] = 1; +// } +// // +// if ($pvr['used'] == 0) { +// /*$at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->priemAddLog( '.$id.', '.$b.', '.$a.', '.$u2.', '.$u1.', +// "Призрачная вода", +// "{tm1} '.$btl->addlt($b , 17 , $btl->users[$btl->uids[$u2]]['sex'] , NULL).'", +// '.($btl->hodID + 1).' );';*/ +// } +// // +// $at['p'][$a]['atack'][$j]['yron']['used'][] = [$j_id, $uid, $pvr['used']]; +// $at['p'][$a]['atack'][$j]['yron']['kill'][] = [$j_id, $uid, $pvr['kill']]; +// // +// //$at['p'][$a]['priems']['kill'][$uid][$j_id] = true; +// } +// // +// } +// } +// $j++; +// } +// } +// // -- конец приема + return $at; + }; + unset($pr_used_this); +} else { + //Действие при клике + $this->addEffPr($pl, $id); } unset($pvr); ?> \ No newline at end of file diff --git a/_incl_data/class/priem/146.php b/_incl_data/class/priem/146.php index 63f76a90..d1b22a29 100644 --- a/_incl_data/class/priem/146.php +++ b/_incl_data/class/priem/146.php @@ -1,127 +1,140 @@ stats[$btl->uids[$uid]]['um_priem'][$j_id])) { - global $u, $btl; - if( $profil == 8 ) { - $yron = $yron/2; - /*$btl->priemAddLogFast( $uid, 0, "Призрачная земля", - '{tm1} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$uid]]['sex'] , NULL).'', - 0, time() );*/ - if( $yron < 0 ) { - $yron = 1; - } - $btl->stats[$btl->uids[$uid]]['um_priem'][$j_id] = true; - } - } - return round($yron); - }; -}elseif( isset($pr_tested_this) ) { - $fx_priem = function( $id , $at , $uid, $j_id ) { - // -- начало приема - global $u, $btl; - // - //Параметры приема - $pvr['used'] = 0; - // - $uid1 = $btl->atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid2 ) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - }elseif( $uid == $uid1 ) { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if( isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3].'" AND `uid` = "'.$uid.'" LIMIT 1'); - unset($btl->stats[$btl->uids[$uid]]['u_priem'][$j_id]); - } - // - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}elseif( isset($pr_used_this) ) { - $fx_priem = function( $id , $at , $uid, $j_id ) { - // -- начало приема - global $u, $btl; - // - //Параметры приема - $pvr['used'] = 0; - // - $uid1 = $btl->atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid2 ) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - }elseif( $uid == $uid1 ) { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if( $a > 0 ) { - $j = 0; $k = 0; $wp = 3; - while($j < count($at['p'][$a]['atack'])) { - if( isset($at['p'][$a]['atack'][$j]['yron']) && ( - $at['p'][$a]['atack'][$j][1] == 1 || - $at['p'][$a]['atack'][$j][1] == 4 || - $at['p'][$a]['atack'][$j][1] == 5 )) { - if( !isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { - // - if( $at['p'][$a]['atack'][$j]['yron']['w_type'] == 8 ) { - $at['p'][$a]['atack'][$j]['yron']['y'] = round($at['p'][$a]['atack'][$j]['yron']['y']/2); - $at['p'][$a]['atack'][$j]['yron']['r'] = round($at['p'][$a]['atack'][$j]['yron']['r']/2); - $at['p'][$a]['atack'][$j]['yron']['k'] = round($at['p'][$a]['atack'][$j]['yron']['k']/2); - $at['p'][$a]['atack'][$j]['yron']['m_k'] = round($at['p'][$a]['atack'][$j]['yron']['m_k']/2); - $at['p'][$a]['atack'][$j]['yron']['m_y'] = round($at['p'][$a]['atack'][$j]['yron']['m_y']/2); - // - if( $at['p'][$a]['atack'][$j]['yron']['y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['y'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['r'] >= 0 ) { $at['p'][$a]['atack'][$j]['yron']['r'] = -1; } - if( $at['p'][$a]['atack'][$j]['yron']['k'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['k'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['m_k'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['m_k'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['m_y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['m_y'] = 1; } - // - if( $pvr['used'] == 0 ) { - /*$at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->priemAddLog( '.$id.', '.$b.', '.$a.', '.$u2.', '.$u1.', - "Призрачная земля", - "{tm1} '.$btl->addlt($b , 17 , $btl->users[$btl->uids[$u2]]['sex'] , NULL).'", - '.($btl->hodID + 1).' );';*/ - } - // - $at['p'][$a]['atack'][$j]['yron']['used'][] = array($j_id,$uid,$pvr['used']); - $at['p'][$a]['atack'][$j]['yron']['kill'][] = array($j_id,$uid,$pvr['kill']); - // - //$at['p'][$a]['priems']['kill'][$uid][$j_id] = true; - } - // - } - } - $j++; - } - } - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}else{ - //Действие при клике - $this->addEffPr($pl,$id); +$pvr = []; +if (isset($pr_momental_this)) { + $fx_moment = function ($uid, $enemy, $j_id, $yron, $profil) { + if (!isset($btl->stats[$btl->uids[$uid]]['um_priem'][$j_id])) { + global $u, $btl; + if ($profil == 8) { + //$yron = $yron / 2; + /*$btl->priemAddLogFast( $uid, 0, "Призрачная земля", + '{tm1} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$uid]]['sex'] , NULL).'', + 0, time() );*/ +// if ($yron < 0) { +// $yron = 1; +// } + $btl->stats[$btl->uids[$uid]]['um_priem'][$j_id] = true; + } + } + return round($yron); + }; +} elseif (isset($pr_tested_this)) { + $fx_priem = function ($id, $at, $uid, $j_id) { + // -- начало приема + global $u, $btl; + // + //Параметры приема + $pvr['used'] = 0; + // + $uid1 = $btl->atacks[$id]['uid1']; + $uid2 = $btl->atacks[$id]['uid2']; + if ($uid == $uid2) { + $a = 1; + $b = 2; + $u1 = ${'uid1'}; + $u2 = ${'uid2'}; + } elseif ($uid == $uid1) { + $a = 2; + $b = 1; + $u1 = ${'uid2'}; + $u2 = ${'uid1'}; + } + if (isset($at['p'][$a]['priems']['kill'][$uid][$j_id])) { + mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3] . '" AND `uid` = "' . $uid . '" LIMIT 1'); + unset($btl->stats[$btl->uids[$uid]]['u_priem'][$j_id]); + } + // + // -- конец приема + return $at; + }; + unset($pr_used_this); +} elseif (isset($pr_used_this)) { + $fx_priem = function ($id, $at, $uid, $j_id) { + // -- начало приема +// global $u, $btl; +// // +// //Параметры приема +// $pvr['used'] = 0; +// // +// $uid1 = $btl->atacks[$id]['uid1']; +// $uid2 = $btl->atacks[$id]['uid2']; +// if ($uid == $uid2) { +// $a = 1; +// $b = 2; +// $u1 = ${'uid1'}; +// $u2 = ${'uid2'}; +// } elseif ($uid == $uid1) { +// $a = 2; +// $b = 1; +// $u1 = ${'uid2'}; +// $u2 = ${'uid1'}; +// } +// if ($a > 0) { +// $j = 0; +// $k = 0; +// $wp = 3; +// while ($j < count($at['p'][$a]['atack'])) { +// if (isset($at['p'][$a]['atack'][$j]['yron']) && ( +// $at['p'][$a]['atack'][$j][1] == 1 || +// $at['p'][$a]['atack'][$j][1] == 4 || +// $at['p'][$a]['atack'][$j][1] == 5)) { +// if (!isset($at['p'][$a]['priems']['kill'][$uid][$j_id])) { +// // +// if ($at['p'][$a]['atack'][$j]['yron']['w_type'] == 8) { +// $at['p'][$a]['atack'][$j]['yron']['y'] = round($at['p'][$a]['atack'][$j]['yron']['y'] / 2); +// $at['p'][$a]['atack'][$j]['yron']['r'] = round($at['p'][$a]['atack'][$j]['yron']['r'] / 2); +// $at['p'][$a]['atack'][$j]['yron']['k'] = round($at['p'][$a]['atack'][$j]['yron']['k'] / 2); +// $at['p'][$a]['atack'][$j]['yron']['m_k'] = round($at['p'][$a]['atack'][$j]['yron']['m_k'] / 2); +// $at['p'][$a]['atack'][$j]['yron']['m_y'] = round($at['p'][$a]['atack'][$j]['yron']['m_y'] / 2); +// // +// if ($at['p'][$a]['atack'][$j]['yron']['y'] < 1) { +// $at['p'][$a]['atack'][$j]['yron']['y'] = 1; +// } +// if ($at['p'][$a]['atack'][$j]['yron']['r'] >= 0) { +// $at['p'][$a]['atack'][$j]['yron']['r'] = -1; +// } +// if ($at['p'][$a]['atack'][$j]['yron']['k'] < 1) { +// $at['p'][$a]['atack'][$j]['yron']['k'] = 1; +// } +// if ($at['p'][$a]['atack'][$j]['yron']['m_k'] < 1) { +// $at['p'][$a]['atack'][$j]['yron']['m_k'] = 1; +// } +// if ($at['p'][$a]['atack'][$j]['yron']['m_y'] < 1) { +// $at['p'][$a]['atack'][$j]['yron']['m_y'] = 1; +// } +// // +// if ($pvr['used'] == 0) { +// /*$at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->priemAddLog( '.$id.', '.$b.', '.$a.', '.$u2.', '.$u1.', +// "Призрачная земля", +// "{tm1} '.$btl->addlt($b , 17 , $btl->users[$btl->uids[$u2]]['sex'] , NULL).'", +// '.($btl->hodID + 1).' );';*/ +// } +// // +// $at['p'][$a]['atack'][$j]['yron']['used'][] = [$j_id, $uid, $pvr['used']]; +// $at['p'][$a]['atack'][$j]['yron']['kill'][] = [$j_id, $uid, $pvr['kill']]; +// // +// //$at['p'][$a]['priems']['kill'][$uid][$j_id] = true; +// } +// // +// } +// } +// $j++; +// } +// } +// // -- конец приема + return $at; + }; + unset($pr_used_this); +} else { + //Действие при клике + $this->addEffPr($pl, $id); } unset($pvr); ?> \ No newline at end of file diff --git a/_incl_data/class/priem/15.php b/_incl_data/class/priem/15.php index 69b18853..dbe7806d 100644 --- a/_incl_data/class/priem/15.php +++ b/_incl_data/class/priem/15.php @@ -56,8 +56,6 @@ $pvr = array(); $prv['color'] = '909090'; } - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$u->info['id']]] ); - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; if( $pvr['promah_type'] == 2 ) { $prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); diff --git a/_incl_data/class/priem/16.php b/_incl_data/class/priem/16.php index 21505d3a..08517832 100644 --- a/_incl_data/class/priem/16.php +++ b/_incl_data/class/priem/16.php @@ -55,8 +55,7 @@ $pvr = array(); $prv['color2'] = '909090'; $prv['color'] = '909090'; } - - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$u->info['id']]] ); + $prv['text2'] = '{tm1} '.$prv['text'].'. '.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; if( $pvr['promah_type'] == 2 ) { diff --git a/_incl_data/class/priem/161.php b/_incl_data/class/priem/161.php index 4f3691d8..b3e2c835 100644 --- a/_incl_data/class/priem/161.php +++ b/_incl_data/class/priem/161.php @@ -36,7 +36,7 @@ $pvr = array(); //Используем проверку на урон приемов $pvr['hp'] = $btl->testYronPriem( $u->info['id'], $pvr['uid'], 21, $pvr['hp'], 5, true ); - if( $pvr['krit'] == false ) { + if(!$pvr['krit']) { if( $pvr['hp'] > $pvr['lim'] ) { $pvr['hp'] = $pvr['lim']; } @@ -48,8 +48,7 @@ $pvr = array(); $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); + if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; @@ -62,8 +61,8 @@ $pvr = array(); mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$pvr['uid']]]['hpNow'].'" WHERE `id` = "'.$pvr['uid'].'" LIMIT 1'); // - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { + if(!$pvr['promah']) { + if(!$pvr['krit']) { $prv['color2'] = '006699'; if(isset($btl->mcolor[$btl->mname['огонь']])) { $prv['color2'] = $btl->mcolor[$btl->mname['огонь']]; @@ -96,12 +95,7 @@ $pvr = array(); ($btl->hodID + 1) ); - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($pvr['uid'],$pl['id'],'atgm='.floor($pvr['hp']/5).'',0,77,5,$u->info['id'],1,'ядовитоеоблако',0,0,1); - - //Отнимаем тактики - //$this->mintr($pl); + // $pvr['xx']++; } @@ -110,12 +104,6 @@ $pvr = array(); $btl->delPriem($pvr['x5'],$btl->users[$btl->uids[$this->ue['id']]],2); // - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($this->ue['id'],$pl['id'],'atgm='.($pvr['hp']/16).'',2,77,4,$u->info['id'],3,'оледенение',0,0,1); - - //Отнимаем тактики - //$this->mintr($pl); unset($pvr); ?> \ No newline at end of file diff --git a/_incl_data/class/priem/162.php b/_incl_data/class/priem/162.php index 6318513f..d9ad76d3 100644 --- a/_incl_data/class/priem/162.php +++ b/_incl_data/class/priem/162.php @@ -49,7 +49,7 @@ $pvr = array(); $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); + if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; diff --git a/_incl_data/class/priem/163.php b/_incl_data/class/priem/163.php index e1342d1f..d21f4145 100644 --- a/_incl_data/class/priem/163.php +++ b/_incl_data/class/priem/163.php @@ -49,7 +49,7 @@ $pvr = array(); $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); + if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; diff --git a/_incl_data/class/priem/17.php b/_incl_data/class/priem/17.php index 76a05220..69edf156 100644 --- a/_incl_data/class/priem/17.php +++ b/_incl_data/class/priem/17.php @@ -55,8 +55,8 @@ $pvr = array(); $prv['color2'] = '909090'; $prv['color'] = '909090'; } - - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$u->info['id']]] ); + +$this->addAirStaticPoints(); /* Удар в Статику*/ $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],2).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; if( $pvr['promah_type'] == 2 ) { @@ -76,5 +76,6 @@ $pvr = array(); //Отнимаем тактики //$this->mintr($pl); + unset($pvr); ?> \ No newline at end of file diff --git a/_incl_data/class/priem/18.php b/_incl_data/class/priem/18.php index 5a98d893..cc93f4ab 100644 --- a/_incl_data/class/priem/18.php +++ b/_incl_data/class/priem/18.php @@ -55,8 +55,8 @@ $pvr = array(); $prv['color2'] = '909090'; $prv['color'] = '909090'; } - - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$u->info['id']]] ); + +$this->addAirStaticPoints(); /* Удар в Статику*/ $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],2).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; if( $pvr['promah_type'] == 2 ) { diff --git a/_incl_data/class/priem/180.php b/_incl_data/class/priem/180.php index 5853af34..163e5c97 100644 --- a/_incl_data/class/priem/180.php +++ b/_incl_data/class/priem/180.php @@ -11,7 +11,7 @@ $pvr['x5'] = mysql_fetch_array(mysql_query('SELECT `id`,`x` FROM `eff_users` WHE if( $pvr['x5']['x'] < 5 ) { $prv['x'] = ''; if( $pvr['x5']['x'] > 0 ) { - $prv['x'] = ' x'.($pvr['x5']['x']+1).''; + $prv['x'] = ' x'.($pvr['x5']['x']+1); } // $this->addEffPr($pl,$id); diff --git a/_incl_data/class/priem/243.php b/_incl_data/class/priem/243.php index 021ff33b..a66d12c2 100644 --- a/_incl_data/class/priem/243.php +++ b/_incl_data/class/priem/243.php @@ -1,214 +1,6 @@ -users[$btl->uids[$this->ue['id']]]['id'].'" AND `bj` = "пожирающеепламя" AND `user_use` = "'.$u->info['id'].'" ORDER BY `id` DESC LIMIT 1')); -if( isset($pvr['mg']['id']) ) { - //Действие при клике - $pvr['hp'] = 0; - $pvr['data'] = $this->lookStatsArray($pvr['mg']['data']); - $pvr['di'] = 0; - $pvr['dc'] = count($pvr['data']['atgm']); - $pvr['rd'] = 0; - $pvr['redata'] = ''; - while( $pvr['di'] < 4 ) { - if( isset($pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]) ) { - if( $pvr['rd'] < 3 ) { - $pvr['hp'] += $pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]; - $pvr['redata'] = 'atgm='.$pvr['data']['atgm'][($pvr['dc']-$pvr['di'])].'|'.$pvr['redata']; - $pvr['rd']++; - } - } - $pvr['di']++; - } - - $pvr['hp23'] = $pvr['hp']; - - $pvr['hp'] = round($pvr['hp']*5); - $pvr['hp'] = round($pvr['hp']/100*33); - - $pvr['hp24'] = $pvr['hp']; - - //$pvr['hp'] = floor($pvr['hp']/20*$u->stats['mg3']);//умелки - //$pvr['hp'] = floor($pvr['hp']/200*$u->stats['s5']);//Интелект - /*if( $btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] < floor($btl->stats[$btl->uids[$this->ue['id']]]['hpAll']/100*33) ) { - $pvr['hp'] = floor( $pvr['hp'] + ($pvr['hp']/100*(33*$pvr['mg']['x'])) ); - }*/ - - /* - $pvr['hp_test'] = $this->magatack( $u->info['id'], $this->ue['id'], $pvr['hp'], 'огонь', 1 ); - $pvr['promah_type'] = $pvr['hp_test'][3]; - $pvr['promah'] = $pvr['hp_test'][2]; - $pvr['krit'] = $pvr['hp_test'][1]; - */ - //$pvr['hp'] = $pvr['hp_test'][0]; - - - $pvr['hpSee'] = '--'; - $pvr['hpNow'] = floor($btl->stats[$btl->uids[$this->ue['id']]]['hpNow']); - $pvr['hpAll'] = $btl->stats[$btl->uids[$this->ue['id']]]['hpAll']; - - //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $u->info['id'], $this->ue['id'], 21, $pvr['hp'], 7, true ); - - $pvr['hp25'] = $pvr['hp']; - - $pvr['hpSee'] = '-'.$pvr['hp']; - $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($u->info['id'],$this->ue['id'],$pvr['hp'],0); - - $pvr['hp26'] = $pvr['hp']; - - if( $pvr['hpNow'] > $pvr['hpAll'] ) { - $pvr['hpNow'] = $pvr['hpAll']; - }elseif( $pvr['hpNow'] < 0 ) { - $pvr['hpNow'] = 0; - } - - $btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] = $pvr['hpNow']; - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$this->ue['id']]]['hpNow'].'" WHERE `id` = "'.$this->ue['id'].'" LIMIT 1'); - - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - - //Цвет приема - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '006699'; - if(isset($btl->mcolor[$btl->mname['огонь']])) { - $prv['color2'] = $btl->mcolor[$btl->mname['огонь']]; - } - $prv['color'] = '000000'; - if(isset($btl->mncolor[$btl->mname['огонь']])) { - $prv['color'] = $btl->mncolor[$btl->mname['огонь']]; - } - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].'] (Базовый урон: '.$pvr['hp23'].'/'.$pvr['hp24'].'/'.$pvr['hp25'].'/'.$pvr['hp26'].' ед.)'; - if( $pvr['promah_type'] == 2 ) { - $prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],1).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - } - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], - 'Пылающий Взрыв', - $prv['text2'], - ($btl->hodID + 1) - ); - - // - //Действие при клике - //$pvr['rx'] = rand(80,80); - //$pvr['rx'] = floor($pvr['rx']/10); - $pvr['uen'] = $this->ue['id']; - $pvr['rx'] = 4; - $pvr['xx'] = 0; - $pvr['ix'] = 0; - while( $pvr['ix'] < count($btl->users) ) { - if( $btl->stats[$pvr['ix']]['hpNow'] > 0 && $btl->users[$pvr['ix']]['team'] != $u->info['team'] && $pvr['xx'] < $pvr['rx'] && $pvr['uen'] != $btl->users[$pvr['ix']]['id'] ) { - // - $pvr['uid'] = $btl->users[$pvr['ix']]['id']; - $pvr['hp'] = floor($pvr['hp']); - /* - $pvr['hp'] = $this->magatack( $u->info['id'], $pvr['uid'], $pvr['hp'], 'огонь', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0]; - */ - $pvr['hpSee'] = '--'; - $pvr['hpNow'] = floor($btl->stats[$btl->uids[$pvr['uid']]]['hpNow']); - $pvr['hpAll'] = $btl->stats[$btl->uids[$pvr['uid']]]['hpAll']; - - //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $u->info['id'], $pvr['uid'], 21, $pvr['hp'], 6, true ); - - $pvr['hpSee'] = '-'.$pvr['hp']; - $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); - - if( $pvr['hpNow'] > $pvr['hpAll'] ) { - $pvr['hpNow'] = $pvr['hpAll']; - }elseif( $pvr['hpNow'] < 0 ) { - $pvr['hpNow'] = 0; - } - - $btl->stats[$btl->uids[$pvr['uid']]]['hpNow'] = $pvr['hpNow']; - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$pvr['uid']]]['hpNow'].'" WHERE `id` = "'.$pvr['uid'].'" LIMIT 1'); - - // - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '006699'; - if(isset($btl->mcolor[$btl->mname['огонь']])) { - $prv['color2'] = $btl->mcolor[$btl->mname['огонь']]; - } - $prv['color'] = '000000'; - if(isset($btl->mncolor[$btl->mname['огонь']])) { - $prv['color'] = $btl->mncolor[$btl->mname['огонь']]; - } - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - // - - // - //$prv['color2'] = $btl->mcolor[$btl->mname['земля']]; - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - if( $pvr['promah_type'] == 2 ) { - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$pvr['uid'],1).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - }else{ - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$pvr['uid'],1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - } - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $pvr['uid'], - 'Пылающий Взрыв', - $prv['text2'], - ($btl->hodID + 1) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($pvr['uid'],$pl['id'],'atgm='.floor($pvr['hp']/5).'',0,77,5,$u->info['id'],1,'ядовитоеоблако',0,0,1); - - //Отнимаем тактики - //$this->mintr($pl); - // - $pvr['xx']++; - } - $pvr['ix']++; - } - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($this->ue['id'],242,'add_notactic=1|add_nousepriem=1',2,77,2,$u->info['id'],3,'пылающийужас',0,0,1); - - //Удаляем оледенение - $pvr['mg']['priem']['id'] = $pvr['mg']['id']; - $btl->delPriem($pvr['mg'],$btl->users[$btl->uids[$this->ue['id']]],2); - - //Отнимаем тактики - $this->mintr($pl); -}else{ - echo 'На персонаже нет пожирающего пламени (Вашего заклятия)'; - $cup = true; -} -unset($pvr); -?> \ No newline at end of file +$this->addPriem($this->u->info['id'],243,'add_acestar=1',2,77,1,$this->u->info['id'],1,'',0,0,1); diff --git a/_incl_data/class/priem/244.php b/_incl_data/class/priem/244.php index 769f75dc..30adf7f4 100644 --- a/_incl_data/class/priem/244.php +++ b/_incl_data/class/priem/244.php @@ -1,125 +1,85 @@ -users[$btl->uids[$this->ue['id']]]['id'].'" AND `bj` = "пожирающеепламя" AND `user_use` = "'.$u->info['id'].'" ORDER BY `id` DESC LIMIT 1')); -if( $btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] > round($btl->stats[$btl->uids[$this->ue['id']]]['hpAll']/100*33) ) { - echo 'Уровень здоровья цели должен быть ниже 33%'; - $cup = true; -}elseif( isset($pvr['mg']['id']) ) { - //Действие при клике - $pvr['hp'] = 0; - $pvr['data'] = $this->lookStatsArray($pvr['mg']['data']); - $pvr['di'] = 0; - $pvr['dc'] = count($pvr['data']['atgm']); - $pvr['rd'] = 0; - $pvr['redata'] = ''; - while( $pvr['di'] < 4 ) { - if( isset($pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]) ) { - if( $pvr['rd'] < 3 ) { - $pvr['hp'] += $pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]; - $pvr['redata'] = 'atgm='.$pvr['data']['atgm'][($pvr['dc']-$pvr['di'])].'|'.$pvr['redata']; - $pvr['rd']++; - } - } - $pvr['di']++; - } - - $pvr['hp23'] = $pvr['hp']; - - //$pvr['hp'] = round(((5*$pvr['hp'])/100)*150); - $pvr['hp'] = 450; - - $pvr['hp24'] = $pvr['hp']; - - //$pvr['hp'] = floor($pvr['hp']/20*$u->stats['mg3']);//умелки - //$pvr['hp'] = floor($pvr['hp']/200*$u->stats['s5']);//Интелект - //if( $btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] < floor($btl->stats[$btl->uids[$this->ue['id']]]['hpAll']/100*30) ) { - //$pvr['hp'] = floor( $pvr['hp'] + ($pvr['hp']/100*(50*$pvr['mg']['x'])) ); - //} - - $pvr['hp_test'] = $this->magatack( $u->info['id'], $this->ue['id'], $pvr['hp'], 'огонь', 1 ); - $pvr['promah_type'] = 0; - $pvr['promah'] = false; - $pvr['krit'] = $pvr['hp_test'][1]; - if( $pvr['krit'] == true ) { - $pvr['hp'] = round($pvr['hp']*2); - } - $pvr['hpSee'] = '--'; - $pvr['hpNow'] = floor($btl->stats[$btl->uids[$this->ue['id']]]['hpNow']); - $pvr['hpAll'] = $btl->stats[$btl->uids[$this->ue['id']]]['hpAll']; - - $pvr['hp25'] = $pvr['hp']; - - //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $u->info['id'], $this->ue['id'], 21, $pvr['hp'], 7, true ); - - $pvr['hp26'] = $pvr['hp']; - - $pvr['hpSee'] = '-'.$pvr['hp']; - $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($u->info['id'],$this->ue['id'],$pvr['hp'],0); - - if( $pvr['hpNow'] > $pvr['hpAll'] ) { - $pvr['hpNow'] = $pvr['hpAll']; - }elseif( $pvr['hpNow'] < 0 ) { - $pvr['hpNow'] = 0; - } - - $btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] = $pvr['hpNow']; - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$this->ue['id']]]['hpNow'].'" WHERE `id` = "'.$this->ue['id'].'" LIMIT 1'); - - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - - //Цвет приема - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '006699'; - if(isset($btl->mcolor[$btl->mname['огонь']])) { - $prv['color2'] = $btl->mcolor[$btl->mname['огонь']]; - } - $prv['color'] = '000000'; - if(isset($btl->mncolor[$btl->mname['огонь']])) { - $prv['color'] = $btl->mncolor[$btl->mname['огонь']]; - } - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - - $prv['text2'] = '{tm1} '.$prv['text'].'. '.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - if( $pvr['promah_type'] == 2 ) { - $prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],1).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - } - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], - 'Пылающая Смерть', - $prv['text2'], - ($btl->hodID + 1) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($this->ue['id'],242,'add_notactic=1|add_nousepriem=1',2,77,2,$u->info['id'],3,'пылающийужас',0,0,1); - - //Удаляем оледенение - $pvr['mg']['priem']['id'] = $pvr['mg']['id']; - $btl->delPriem($pvr['mg'],$btl->users[$btl->uids[$this->ue['id']]],2); - - //Отнимаем тактики - $this->mintr($pl); -}else{ - echo 'На персонаже нет пожирающего пламени (Вашего заклятия)'; - $cup = true; +$pvr = []; +$pvr['mg'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = ' . $btl->users[$btl->uids[$this->ue['id']]]['id'] . ' AND `bj` = "пожирающеепламя" AND `user_use` = ' . $u->info['id'] . ' ORDER BY `id` DESC LIMIT 1')); +if ( + $btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] > round($btl->stats[$btl->uids[$this->ue['id']]]['hpAll'] / 100 * 33) +) { + echo 'Уровень здоровья цели должен быть ниже 33%'; + $cup = true; +} elseif (!isset($pvr['mg']['id'])) { + echo 'На персонаже нет пожирающего пламени (Вашего заклятия)'; + $cup = true; +} else { + //Действие при клике + $pvr['data'] = $this->lookStatsArray($pvr['mg']['data']); + $pvr['name'] = $pvr['mg']['name']; + + // Урон = 150% оставшегося урона (урон за ход * количество ходов * 150/100). + $pvr['hp'] = floor($pvr['data']['atgm'] * $pvr['mg']['hod'] * 1.5); + + // Мы должны смочь критовать, но мы не должны ещё раз модифицировать урон! + $pvr['hp_test'] = $this->magatack($u->info['id'], $this->ue['id'], $pvr['hp'], 'огонь', 1); + + + $pvr['krit'] = $pvr['hp_test'][1]; + if ($pvr['krit']) { + $pvr['hp'] = round($pvr['hp'] * 2); + } + $pvr['hpSee'] = '--'; + $pvr['hpNow'] = floor($btl->stats[$btl->uids[$this->ue['id']]]['hpNow']); + $pvr['hpAll'] = $btl->stats[$btl->uids[$this->ue['id']]]['hpAll']; + + $pvr['hp25'] = $pvr['hp']; + + //Используем проверку на урон приемов + $pvr['hp'] = $btl->testYronPriem($u->info['id'], $this->ue['id'], 21, $pvr['hp'], 7, true); + + $pvr['hp26'] = $pvr['hp']; + + $pvr['hpSee'] = '-' . $pvr['hp']; + $pvr['hpNow'] -= $pvr['hp']; + $btl->priemYronSave($u->info['id'], $this->ue['id'], $pvr['hp'], 0); + + if ($pvr['hpNow'] > $pvr['hpAll']) { + $pvr['hpNow'] = $pvr['hpAll']; + } elseif ($pvr['hpNow'] < 0) { + $pvr['hpNow'] = 0; + } + $btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] = $pvr['hpNow']; + + mysql_query('UPDATE `stats` SET `hpNow` = ' . $btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] . ' WHERE `id` = ' . $this->ue['id']); + + $prv['text'] = $btl->addlt(1, 19, $btl->users[$btl->uids[$u->info['id']]]['sex'], null); + + + $prv['color'] = $pvr['krit'] ? "f00" : "a00"; + + $prv['text2'] = '{tm1} ' . $prv['text'] . '. ' . $pvr['hpSee'] . ' [' . $pvr['hpNow'] . '/' . $pvr['hpAll'] . ']'; + + $btl->priemAddLog($id, 1, 2, $u->info['id'], $this->ue['id'], + 'Пылающая Смерть', + $prv['text2'], + ($btl->hodID + 1) + ); + + //Удаляем оледенение + $pvr['mg']['priem']['id'] = $pvr['mg']['id']; + $btl->delPriem($pvr['mg'], $btl->users[$btl->uids[$this->ue['id']]], 2); + + //Отнимаем тактики + $this->mintr($pl); } unset($pvr); -?> \ No newline at end of file diff --git a/_incl_data/class/priem/25.php b/_incl_data/class/priem/25.php index 55910488..fe1cdfa4 100644 --- a/_incl_data/class/priem/25.php +++ b/_incl_data/class/priem/25.php @@ -1,76 +1,14 @@ -ue['id'].'" AND `v2` = 25 AND `delete` = 0 LIMIT 1')); -if( $pvr['x5']['x'] < 5 ) { - $prv['x'] = ''; - if( $pvr['x5']['x'] > 0 ) { - $prv['x'] = ' x'.($pvr['x5']['x']+1).''; - } - // - $this->addEffPr($pl,$id); - // - $prv['effx'] = ''; - if( $pvr['x5']['x'] > 0 ) { - $prv['eff'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `id` = "'.$pvr['x5']['id'].'" LIMIT 1')); - if( isset($prv['eff']['id']) ) { - //Разбираем дату $prv['eff']['data'] - $prv['eda'] = $prv['eff']['data']; - } - }else{ - //Разбираем дату $pl['date3'] - $prv['eda'] = $pl['date3']; - } - // - if( isset($prv['eda']) ) { - $prv['d'] = $u->lookStats($prv['eda']); - $prv['j'] = $u->lookStats($this->redate($prv['eda'],$u->info['id'])); - $prv['v'] = $u->lookKeys($this->redate($prv['eda'],$u->info['id']),0); // ключи 2 - $prv['i'] = 0; $prv['inf'] = ''; - while($prv['i']is[$prv['vi']]!='') { - if($prv['j'][$prv['v'][$prv['i']]]>0) { - $prv['inf'] .= $u->is[$prv['vi']].': +'.($prv['j'][$prv['v'][$prv['i']]]*(1+$pvr['x5']['x'])).', '; - }elseif($prv['j'][$prv['v'][$prv['i']]]<0){ - $prv['inf'] .= $u->is[$prv['vi']].': '.($prv['j'][$prv['v'][$prv['i']]]*(1+$prv['x5']['x'])).', '; - } - } - $prv['i']++; - } - $prv['effx'] = rtrim($prv['inf'],', '); - } - // - if( $prv['effx'] != '' ) { - $prv['effx'] = ' ('.$prv['effx'].')'; - } - // - $prv['color2'] = '000000'; - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'.'.$prv['effx']; - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], - 'Цель воды'.$prv['x'].'', - $prv['text2'], - ($btl->hodID + 0) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($this->ue['id'],$pl['id'],'atgm='.floor($pvr['hp']/10).'',0,77,-1,$u->info['id'],5,'цельводы',0,0,1); - - //Отнимаем тактики - //$this->mintr($pl); -}else{ - $cup = true; - echo 'На пероснаже достигнуто максиальное колличество целей'; -} +/** + * Прием: Цель {стихия} + * @var $this priems + * @var $btl battleClass + * @var $id + * @var $pl + */ -unset($pvr); -?> \ No newline at end of file +if (!$id) { + exit(); +} +$cup = $this->magicTarget('water', $pl, $id, $btl); diff --git a/_incl_data/class/priem/250.php b/_incl_data/class/priem/250.php index 1bfd9060..2f05b58f 100644 --- a/_incl_data/class/priem/250.php +++ b/_incl_data/class/priem/250.php @@ -11,14 +11,14 @@ $pvr['x5'] = mysql_fetch_array(mysql_query('SELECT `id`,`x` FROM `eff_users` WHE if( $pvr['x5']['x'] < 5 ) { $prv['x'] = ''; if( $pvr['x5']['x'] > 0 ) { - $prv['x'] = ' x'.($pvr['x5']['x']+1).''; + $prv['x'] = ' x'.($pvr['x5']['x']+1); } // $this->addEffPr($pl,$id); // $prv['effx'] = ''; if( $pvr['x5']['x'] > 0 ) { - $prv['eff'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `id` = "'.$pvr['x5']['id'].'" LIMIT 1')); + $prv['eff'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `id` = '.$pvr['x5']['id'])); if( isset($prv['eff']['id']) ) { //Разбираем дату $prv['eff']['data'] $prv['eda'] = $prv['eff']['data']; @@ -34,7 +34,7 @@ if( $pvr['x5']['x'] < 5 ) { $prv['v'] = $u->lookKeys($this->redate($prv['eda'],$u->info['id']),0); // ключи 2 $prv['i'] = 0; $prv['inf'] = ''; while($prv['i']is[$prv['vi']]!='') { if($prv['j'][$prv['v'][$prv['i']]]>0) { diff --git a/_incl_data/class/priem/255.php b/_incl_data/class/priem/255.php index 5c811279..563d5683 100644 --- a/_incl_data/class/priem/255.php +++ b/_incl_data/class/priem/255.php @@ -99,7 +99,8 @@ if( isset($pr_momental_this)) { // //if( $at['p'][$a]['atack'][$j]['yron']['y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['y'] = 0; } if( $at['p'][$a]['atack'][$j]['yron']['r'] >= 0 ) { $at['p'][$a]['atack'][$j]['yron']['r'] = -1; } - $priem->mg2static_points( $u1 , $btl->stats[$btl->uids[$u1]] ); + $priem->addAirStaticPoints($u1); + /* if( $at['p'][$a]['atack'][$j]['yron']['k'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['k'] = 1; } if( $at['p'][$a]['atack'][$j]['yron']['m_k'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['m_k'] = 1; } diff --git a/_incl_data/class/priem/256.php b/_incl_data/class/priem/256.php index de87b389..bbc3cbe2 100644 --- a/_incl_data/class/priem/256.php +++ b/_incl_data/class/priem/256.php @@ -1,14 +1,4 @@ -addEffPr($pl,$id); - -unset($pvr); -?> \ No newline at end of file diff --git a/_incl_data/class/priem/259.php b/_incl_data/class/priem/259.php index ce28a39f..06903431 100644 --- a/_incl_data/class/priem/259.php +++ b/_incl_data/class/priem/259.php @@ -115,8 +115,8 @@ $pvr = array(); $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); + + $this->addAirStaticPoints(); /* Удар в Статику*/ if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; diff --git a/_incl_data/class/priem/26.php b/_incl_data/class/priem/26.php index 691719ce..b4286d59 100644 --- a/_incl_data/class/priem/26.php +++ b/_incl_data/class/priem/26.php @@ -1,76 +1,14 @@ -ue['id'].'" AND `v2` = 26 AND `delete` = 0 LIMIT 1')); -if( $pvr['x5']['x'] < 5 ) { - $prv['x'] = ''; - if( $pvr['x5']['x'] > 0 ) { - $prv['x'] = ' x'.($pvr['x5']['x']+1).''; - } - // - $this->addEffPr($pl,$id); - // - $prv['effx'] = ''; - if( $pvr['x5']['x'] > 0 ) { - $prv['eff'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `id` = "'.$pvr['x5']['id'].'" LIMIT 1')); - if( isset($prv['eff']['id']) ) { - //Разбираем дату $prv['eff']['data'] - $prv['eda'] = $prv['eff']['data']; - } - }else{ - //Разбираем дату $pl['date3'] - $prv['eda'] = $pl['date3']; - } - // - if( isset($prv['eda']) ) { - $prv['d'] = $u->lookStats($prv['eda']); - $prv['j'] = $u->lookStats($this->redate($prv['eda'],$u->info['id'])); - $prv['v'] = $u->lookKeys($this->redate($prv['eda'],$u->info['id']),0); // ключи 2 - $prv['i'] = 0; $prv['inf'] = ''; - while($prv['i']is[$prv['vi']]!='') { - if($prv['j'][$prv['v'][$prv['i']]]>0) { - $prv['inf'] .= $u->is[$prv['vi']].': +'.($prv['j'][$prv['v'][$prv['i']]]*(1+$pvr['x5']['x'])).', '; - }elseif($prv['j'][$prv['v'][$prv['i']]]<0){ - $prv['inf'] .= $u->is[$prv['vi']].': '.($prv['j'][$prv['v'][$prv['i']]]*(1+$prv['x5']['x'])).', '; - } - } - $prv['i']++; - } - $prv['effx'] = rtrim($prv['inf'],', '); - } - // - if( $prv['effx'] != '' ) { - $prv['effx'] = ' ('.$prv['effx'].')'; - } - // - $prv['color2'] = '000000'; - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'.'.$prv['effx']; - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], - 'Цель огня'.$prv['x'].'', - $prv['text2'], - ($btl->hodID + 0) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($this->ue['id'],$pl['id'],'atgm='.floor($pvr['hp']/10).'',0,77,-1,$u->info['id'],5,'цельводы',0,0,1); - - //Отнимаем тактики - //$this->mintr($pl); -}else{ - $cup = true; - echo 'На пероснаже достигнуто максиальное колличество целей'; -} +/** + * Прием: Цель {стихия} + * @var $this priems + * @var $btl battleClass + * @var $id + * @var $pl + */ -unset($pvr); -?> \ No newline at end of file +if (!$id) { + exit(); +} +$cup = $this->magicTarget('fire', $pl, $id, $btl); diff --git a/_incl_data/class/priem/260.php b/_incl_data/class/priem/260.php index 775c788d..99292215 100644 --- a/_incl_data/class/priem/260.php +++ b/_incl_data/class/priem/260.php @@ -1,65 +1,27 @@ ue['id'].'" AND `v2` = 260 AND `delete` = 0 LIMIT 1')); -if( $pvr['x5']['x'] < 5 ) { - $prv['x'] = ''; - if( $pvr['x5']['x'] > 0 ) { - $prv['x'] = ' x'.($pvr['x5']['x']+1).''; - } - // - $this->addEffPr($pl,$id); - // - $prv['effx'] = ''; - if( $pvr['x5']['x'] > 0 ) { - $prv['eff'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `id` = "'.$pvr['x5']['id'].'" LIMIT 1')); - if( isset($prv['eff']['id']) ) { - $prv['eda'] = $prv['eff']['data']; - } - }else{ - $prv['eda'] = $pl['date3']; - } - // - if( isset($prv['eda']) ) { - $prv['d'] = $u->lookStats($prv['eda']); - $prv['j'] = $u->lookStats($this->redate($prv['eda'],$u->info['id'])); - $prv['v'] = $u->lookKeys($this->redate($prv['eda'],$u->info['id']),0); // ключи 2 - $prv['i'] = 0; $prv['inf'] = ''; - while($prv['i']is[$prv['vi']]!='') { - if($prv['j'][$prv['v'][$prv['i']]]>0) { - $prv['inf'] .= $u->is[$prv['vi']].': +'.($prv['j'][$prv['v'][$prv['i']]]).', '; - }elseif($prv['j'][$prv['v'][$prv['i']]]<0){ - $prv['inf'] .= $u->is[$prv['vi']].': '.($prv['j'][$prv['v'][$prv['i']]]).', '; - } - } - $prv['i']++; - } - $prv['effx'] = rtrim($prv['inf'],', '); - } - // - if( $prv['effx'] != '' ) { - $prv['effx'] = ' ('.$prv['effx'].')'; - } - // - $prv['color2'] = '000000'; - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'.'.$prv['effx']; - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], - 'Статика'.$prv['x'].'', - $prv['text2'], - ($btl->hodID + 0) - ); -}else{ - $cup = true; - echo 'На пероснаже достигнуто максиальное колличество статик'; +$pvr['x5'] = mysql_fetch_array(mysql_query('SELECT `id`,`x` FROM `eff_users` WHERE `uid` = ' . $this->ue['id'] . ' AND `v2` = 260 AND `delete` = 0 LIMIT 1')); +if ($pvr['x5']['x'] > 0) { + $cup = true; + echo 'На пероснаже уже есть статика.'; +} else { + $this->addEffPr($pl, $id); + + $prv['color2'] = '0af'; + $prv['text'] = $btl->addlt(1, 19, $btl->users[$btl->uids[$u->info['id']]]['sex'], null); + $prv['text2'] = '{tm1} ' . $prv['text']; + $btl->priemAddLog($id, 1, 2, $u->info['id'], $this->ue['id'], + 'Статика', + $prv['text2'], + ($btl->hodID) + ); } unset($pvr); -?> \ No newline at end of file diff --git a/_incl_data/class/priem/261.php b/_incl_data/class/priem/261.php index 29ad3eaa..e53d0793 100644 --- a/_incl_data/class/priem/261.php +++ b/_incl_data/class/priem/261.php @@ -1,152 +1,49 @@ -users[$btl->uids[$this->ue['id']]]['id'].'" AND `v2` = "260" AND `user_use` = "'.$u->info['id'].'" ORDER BY `id` DESC LIMIT 1')); -$pvr['mg'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$btl->users[$btl->uids[$this->ue['id']]]['id'].'" AND `v2` = "260" ORDER BY `id` DESC LIMIT 1')); -if( isset($pvr['mg']['id']) ) { - //Действие при клике - //$pvr['hp'] = floor(144/3*$pvr['mg']['x']); - /*$pvr['hp'] = 1;*/ - // - $pvr['data'] = $this->lookStatsArray($pvr['mg']['data']); - // - /**/ - if( $pvr['data']['add_mg2static_points'][0] < 1 ) { - echo 'Статика не собрала достаточного количества зарядов'; - $cup = true; - }else{ - $pvr['hp'] = floor($btl->stats[$btl->uids[$this->ue['id']]]['hpAll']-floor($btl->stats[$btl->uids[$this->ue['id']]]['hpNow'])); - // - $pvr['hp'] = floor( ( $pvr['hp'] / 100 * rand( 1 , 3 ) ) * $pvr['data']['add_mg2static_points'][0] ); - - $pvr['mx'] = array( - 0 => 170, - 1 => 170, - 2 => 170, - 3 => 170, - 4 => 170, - 5 => 170, - 6 => 170, - 7 => 170, - 8 => 204, - 9 => 244, - 10 => 292, - 11 => 352, - 12 => 454, - 13 => 570, - 14 => 604, - 15 => 744, - 16 => 892, - 17 => 952, - 18 => 1054, - 19 => 1170, - 20 => 1292, - 21 => 1487 - ); - - $pvr['mx'] = $pvr['mx'][$u->info['level']]; - - // - //$pvr['hp'] = floor($pvr['hp']/20*$u->stats['mg3']);//умелки - //$pvr['hp'] = floor($pvr['hp']/200*$u->stats['s5']);//Интелект - /*if( $btl->stats[$btl->uids[$u->info['enemy']]]['hpNow'] < floor($btl->stats[$btl->uids[$u->info['enemy']]]['hpAll']/100*30) ) { - $pvr['hp'] = floor( $pvr['hp'] + ($pvr['hp']/100*(50*$pvr['mg']['x'])) ); - }*/ +$params = [ + 'maxLimitbyStatic' => [1 => 90, 2 => 140, 3 => 175, 4 => 200, 5 => 244], + 'query' => 'select x from eff_users where v2 = 260 and user_use = %s and uid = %s', + 'query_remove_static' => 'delete from eff_users where v2 = 260 and user_use = %s and uid = %s', + 'hpNow' => $btl->stats[$btl->uids[$this->ue['id']]]['hpNow'], + 'hpAll' => $btl->stats[$btl->uids[$this->ue['id']]]['hpAll'], + 'color' => '#0af', + 'logtext' => '{tm1} ' . $btl->addlt(1, 19, $btl->users[$btl->uids[$this->u->info['id']]]['sex'], null), +]; +$params = array_merge($params, [ + 'x' => mysql_fetch_array(mysql_query(sprintf($params['query'], $this->u->info['id'], $this->ue['id']))), + 'damage' => '', +]); +$params['damage'] = mt_rand(1, $params['maxLimitbyStatic'][$params['x'][0]]); +if (empty($params['x'])) { + echo 'На персонаже нет вашего заклятия Статики'; + $cup = true; +} else { + $params['damage'] = $btl->testYronPriem($this->u->info['id'], $this->ue['id'], 21, $params['damage'], 6, true); + $btl->priemYronSave($this->u->info['id'], $this->ue['id'], $params['damage'], 0); + $params['hpNow'] -= $params['damage']; + if ($params['hpNow'] > $params['hpAll']) { + $params['hpNow'] = $params['hpAll']; + } elseif ($params['hpNow'] < 0) { + $params['hpNow'] = 0; + } + $params['logtext'] .= sprintf("-%s [%s/%s]", $params['color'], $params['damage'], $params['hpNow'], $params['hpAll']); + + $btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] = $params['hpNow']; + mysql_query('UPDATE `stats` SET `hpNow` = ' . $params['hpNow'] . ' WHERE `id` = ' . $this->ue['id']); + $btl->priemAddLog($id, 1, 2, $this->u->info['id'], $this->ue['id'], "Заряд: Поражение", + $params['logtext'], ($btl->hodID + 1)); + + mysql_query(sprintf($params['query_remove_static'], $this->u->info['id'], $this->ue['id'])); + //Отнимаем тактики + $this->mintr($pl); - $pvr['hp'] = $this->magatack( $u->info['id'], $this->ue['id'], $pvr['hp'], 'воздух', 1 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0]; - $pvr['hpSee'] = '--'; - $pvr['hpNow'] = floor($btl->stats[$btl->uids[$this->ue['id']]]['hpNow']); - $pvr['hpAll'] = $btl->stats[$btl->uids[$this->ue['id']]]['hpAll']; - - if( $pvr['krit'] == true ) { - if( $pvr['hp'] > $pvr['mx']*2 ) { - $pvr['hp'] = $pvr['mx']*2; - } - }else{ - if( $pvr['hp'] > $pvr['mx'] ) { - $pvr['hp'] = $pvr['mx']; - } - } - - //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $u->info['id'], $this->ue['id'], 21, $pvr['hp'], 6, true ); - - $pvr['hpSee'] = '-'.$pvr['hp']; - $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($u->info['id'],$this->ue['id'],$pvr['hp'],0); - - if( $pvr['hpNow'] > $pvr['hpAll'] ) { - $pvr['hpNow'] = $pvr['hpAll']; - }elseif( $pvr['hpNow'] < 0 ) { - $pvr['hpNow'] = 0; - } - - $btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] = $pvr['hpNow']; - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$this->ue['id']]]['hpNow'].'" WHERE `id` = "'.$this->ue['id'].'" LIMIT 1'); - - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - - //Цвет приема - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '006699'; - if(isset($btl->mcolor[$btl->mname['воздух']])) { - $prv['color2'] = $btl->mcolor[$btl->mname['воздух']]; - } - $prv['color'] = '000000'; - if(isset($btl->mncolor[$btl->mname['воздух']])) { - $prv['color'] = $btl->mncolor[$btl->mname['воздух']]; - } - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],3).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - if( $pvr['promah_type'] == 2 ) { - $prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],3).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - } - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], - 'Заряд: Поражение', - $prv['text2'], - ($btl->hodID + 1) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($u->info['enemy'],$pl['id'],'atgm='.($pvr['hp']/16).'',2,77,4,$u->info['id'],3,'оледенение',0,0,1); - - //Удаляем оледенение - $pvr['mg']['priem']['id'] = $pvr['mg']['id']; - //$btl->delPriem($pvr['mg'],$btl->users[$btl->uids[$this->ue['id']]],2); - - $pvr['edt'] = $u->lookStats($pvr['mg']['data']); - $pvr['edt']['add_zm2proc'] = 0; - $pvr['edt']['add_mg2static_points'] = 0; - $pvr['edt'] = $u->impStats($pvr['edt']); - mysql_query('UPDATE `eff_users` SET `x` = 1, `data` = "'.$pvr['edt'].'" WHERE `id` = "'.$pvr['mg']['id'].'" LIMIT 1'); - - //Отнимаем тактики - $this->mintr($pl); - } -}else{ - echo 'На персонаже нет Статики (Вашего заклятия)'; - $cup = true; } -unset($pvr); -?> \ No newline at end of file +unset($params); diff --git a/_incl_data/class/priem/267.php b/_incl_data/class/priem/267.php index 561e679d..1455446c 100644 --- a/_incl_data/class/priem/267.php +++ b/_incl_data/class/priem/267.php @@ -9,16 +9,12 @@ $pvr = array(); if( isset($pr_used_this) && isset($pr_moment) ) { //Каждый ход $fx_priem = function( $id , $at , $uid, $j_id ) { - // -- начало приема - global $u, $btl, $priem; - - // -- конец приема return $at; }; unset( $pr_used_this ); }else{ //Действие при клике - //$pvr['hp'] = $this->magatack( $u->info['id'], $this->ue['id'], $pvr['hp'], 'вода', 1 ); + $pvr['promah_type'] = 0; $pvr['promah'] = false; $pvr['krit'] = false; @@ -82,7 +78,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { //Добавляем прием //$this->addEffPr($pl,$id); - $this->addPriem($this->ue['id'],268,'|add_s1=-'.$btl->stats[$btl->uids[$u->info['id']]]['mg3'].'|add_s2=-'.$btl->stats[$btl->uids[$u->info['id']]]['mg3'].'',2,77,3,$u->info['id'],3,'кристаллизация',0,0,1); + $this->addPriem($this->ue['id'],268,'|add_s1=-'.$btl->stats[$btl->uids[$u->info['id']]]['mg3'].'|add_s2=-'.$btl->stats[$btl->uids[$u->info['id']]]['mg3'],2,77,3,$u->info['id'],3,'кристаллизация',0,0,1); //Отнимаем тактики //$this->mintr($pl); diff --git a/_incl_data/class/priem/27.php b/_incl_data/class/priem/27.php index 834c6d2d..d96278c4 100644 --- a/_incl_data/class/priem/27.php +++ b/_incl_data/class/priem/27.php @@ -1,76 +1,14 @@ -ue['id'].'" AND `v2` = 27 AND `delete` = 0 LIMIT 1')); -if( $pvr['x5']['x'] < 5 ) { - $prv['x'] = ''; - if( $pvr['x5']['x'] > 0 ) { - $prv['x'] = ' x'.($pvr['x5']['x']+1).''; - } - // - $this->addEffPr($pl,$id); - // - $prv['effx'] = ''; - if( $pvr['x5']['x'] > 0 ) { - $prv['eff'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `id` = "'.$pvr['x5']['id'].'" LIMIT 1')); - if( isset($prv['eff']['id']) ) { - //Разбираем дату $prv['eff']['data'] - $prv['eda'] = $prv['eff']['data']; - } - }else{ - //Разбираем дату $pl['date3'] - $prv['eda'] = $pl['date3']; - } - // - if( isset($prv['eda']) ) { - $prv['d'] = $u->lookStats($prv['eda']); - $prv['j'] = $u->lookStats($this->redate($prv['eda'],$u->info['id'])); - $prv['v'] = $u->lookKeys($this->redate($prv['eda'],$u->info['id']),0); // ключи 2 - $prv['i'] = 0; $prv['inf'] = ''; - while($prv['i']is[$prv['vi']]!='') { - if($prv['j'][$prv['v'][$prv['i']]]>0) { - $prv['inf'] .= $u->is[$prv['vi']].': +'.($prv['j'][$prv['v'][$prv['i']]]*(1+$pvr['x5']['x'])).', '; - }elseif($prv['j'][$prv['v'][$prv['i']]]<0){ - $prv['inf'] .= $u->is[$prv['vi']].': '.($prv['j'][$prv['v'][$prv['i']]]*(1+$prv['x5']['x'])).', '; - } - } - $prv['i']++; - } - $prv['effx'] = rtrim($prv['inf'],', '); - } - // - if( $prv['effx'] != '' ) { - $prv['effx'] = ' ('.$prv['effx'].')'; - } - // - $prv['color2'] = '000000'; - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'.'.$prv['effx']; - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], - 'Цель воздуха'.$prv['x'].'', - $prv['text2'], - ($btl->hodID + 0) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($this->ue['id'],$pl['id'],'atgm='.floor($pvr['hp']/10).'',0,77,-1,$u->info['id'],5,'цельводы',0,0,1); - - //Отнимаем тактики - //$this->mintr($pl); -}else{ - $cup = true; - echo 'На пероснаже достигнуто максиальное колличество целей'; -} +/** + * Прием: Цель {стихия} + * @var $this priems + * @var $btl battleClass + * @var $id + * @var $pl + */ -unset($pvr); -?> \ No newline at end of file +if (!$id) { + exit(); +} +$cup = $this->magicTarget('air', $pl, $id, $btl); diff --git a/_incl_data/class/priem/28.php b/_incl_data/class/priem/28.php index 61ff58d2..05502181 100644 --- a/_incl_data/class/priem/28.php +++ b/_incl_data/class/priem/28.php @@ -1,76 +1,14 @@ -ue['id'].'" AND `v2` = 28 AND `delete` = 0 LIMIT 1')); -if( $pvr['x5']['x'] < 5 ) { - $prv['x'] = ''; - if( $pvr['x5']['x'] > 0 ) { - $prv['x'] = ' x'.($pvr['x5']['x']+1).''; - } - // - $this->addEffPr($pl,$id); - // - $prv['effx'] = ''; - if( $pvr['x5']['x'] > 0 ) { - $prv['eff'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `id` = "'.$pvr['x5']['id'].'" LIMIT 1')); - if( isset($prv['eff']['id']) ) { - //Разбираем дату $prv['eff']['data'] - $prv['eda'] = $prv['eff']['data']; - } - }else{ - //Разбираем дату $pl['date3'] - $prv['eda'] = $pl['date3']; - } - // - if( isset($prv['eda']) ) { - $prv['d'] = $u->lookStats($prv['eda']); - $prv['j'] = $u->lookStats($this->redate($prv['eda'],$u->info['id'])); - $prv['v'] = $u->lookKeys($this->redate($prv['eda'],$u->info['id']),0); // ключи 2 - $prv['i'] = 0; $prv['inf'] = ''; - while($prv['i']is[$prv['vi']]!='') { - if($prv['j'][$prv['v'][$prv['i']]]>0) { - $prv['inf'] .= $u->is[$prv['vi']].': +'.($prv['j'][$prv['v'][$prv['i']]]*(1+$pvr['x5']['x'])).', '; - }elseif($prv['j'][$prv['v'][$prv['i']]]<0){ - $prv['inf'] .= $u->is[$prv['vi']].': '.($prv['j'][$prv['v'][$prv['i']]]*(1+$prv['x5']['x'])).', '; - } - } - $prv['i']++; - } - $prv['effx'] = rtrim($prv['inf'],', '); - } - // - if( $prv['effx'] != '' ) { - $prv['effx'] = ' ('.$prv['effx'].')'; - } - // - $prv['color2'] = '000000'; - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'.'.$prv['effx']; - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], - 'Цель земли'.$prv['x'].'', - $prv['text2'], - ($btl->hodID + 0) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($this->ue['id'],$pl['id'],'atgm='.floor($pvr['hp']/10).'',0,77,-1,$u->info['id'],5,'цельводы',0,0,1); - - //Отнимаем тактики - //$this->mintr($pl); -}else{ - $cup = true; - echo 'На пероснаже достигнуто максиальное колличество целей'; -} +/** + * Прием: Цель {стихия} + * @var $this priems + * @var $btl battleClass + * @var $id + * @var $pl + */ -unset($pvr); -?> \ No newline at end of file +if (!$id) { + exit(); +} +$cup = $this->magicTarget('earth', $pl, $id, $btl); diff --git a/_incl_data/class/priem/290.php b/_incl_data/class/priem/290.php index 30b668f0..982ca9c0 100644 --- a/_incl_data/class/priem/290.php +++ b/_incl_data/class/priem/290.php @@ -30,7 +30,7 @@ if($btl->stats[$pvr['ix']]['hpNow'] > 0 && $btl->users[$pvr['ix']]['team'] != $u $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); + if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; }elseif( $pvr['hpNow'] < 0 ) { diff --git a/_incl_data/class/priem/33.php b/_incl_data/class/priem/33.php index 9a41e6a2..e38ab9d8 100644 --- a/_incl_data/class/priem/33.php +++ b/_incl_data/class/priem/33.php @@ -1,163 +1,26 @@ -atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid1 ) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - }elseif( $uid == $uid2 ) { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if( $a > 0 ) { - - //Проверяем эффект - $prv['j_priem'] = $btl->stats[$btl->uids[$u1]]['u_priem'][$j_id][0]; - $prv['priem_th'] = $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id']; - - //действия - $pvr['hp'] = 1; - // - $pvr['data'] = $priem->lookStatsArray($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data']); - $pvr['di'] = 0; - $pvr['dc'] = count($pvr['data']['atgm']); - $pvr['rd'] = 0; - $pvr['redata'] = ''; - while( $pvr['di'] < 4 ) { - if( isset($pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]) ) { - if( $pvr['rd'] < 3 ) { - $pvr['hp'] += $pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]; - $pvr['redata'] = 'atgm='.$pvr['data']['atgm'][($pvr['dc']-$pvr['di'])].'|'.$pvr['redata']; - $pvr['rd']++; - } - } - $pvr['di']++; - } - // - $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data'] = $pvr['redata']; - mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); - // - $pvr['hp'] = floor($pvr['hp']*5); - $pvr['proc-hp'] = array( 5 , 10 , 15 , 20 , 50 ); - $pvr['proc-hp'] = $pvr['proc-hp'][5-$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['hod']]; - $pvr['hp'] = round($pvr['hp']/100*$pvr['proc-hp']); - // - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'огонь', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ - // - $pvr['hpSee'] = '--'; - $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); - $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; - - //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'], $u1, 12, $pvr['hp'], 7, true, false, 1 ); - - $pvr['hpSee'] = '-'.$pvr['hp']; - $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'],$u1,$pvr['hp'],0); - - if( $pvr['hpNow'] > $pvr['hpAll'] ) { - $pvr['hpNow'] = $pvr['hpAll']; - }elseif( $pvr['hpNow'] < 0 ) { - $pvr['hpNow'] = 0; - } - - $btl->stats[$btl->uids[$u1]]['hpNow'] = $pvr['hpNow']; - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$u1]]['hpNow'].'" WHERE `id` = "'.$u1.'" LIMIT 1'); - //$prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u2]]['sex'] , NULL); - $prv['text'] = '{u2} утратил здоровье от "{pr}"'; - - //Цвет приема - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '000000'; - $prv['color'] = '008000'; - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u2,$u1,1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - if( $pvr['promah_type'] == 2 ) { - //$prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u2]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u2,$u1,1).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - } - $prv['xx'] = ''; - if( $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['x'] > 1 ) { - //$prv['xx'] = ' x'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['x'].''; - } - $btl->priemAddLog( $id, 1, 2, $u2, $u1, - 'Пожирающее Пламя [6]'.$prv['xx'].'', - $prv['text2'], - ($btl->hodID) - ); - } - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}else{ - $pvr['hp'] = floor(53); - $pvr['hp'] = $this->magatack( $u->info['id'], $this->ue['id'], $pvr['hp'], 'огонь', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0]; - // - $prv['color2'] = '000000'; - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '000000'; - }else{ - $prv['color2'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - } - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'.'; - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], - 'Пожирающее Пламя [6]', - $prv['text2'], - ($btl->hodID + 1) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - if ($pvr['hp']>0) - { - $this->addPriem($this->ue['id'],$pl['id'],'atgm='.floor($pvr['hp']/5).'',0,77,5,$u->info['id'],1,'пожирающеепламя',0,0,1); - } - //Отнимаем тактики - //$this->mintr($pl); -} -unset($pvr); -?> \ No newline at end of file +if (isset($pr_used_this) && isset($pr_moment)) { + //Каждый ход + $fx_priem = function ($id, $at, $uid, $j_id) { + global $btl, $priem; + $priem->devouringFlame($id, $uid, $j_id, $btl); + return $at; + }; + unset($pr_used_this); +} else { + $this->devouringFlameInit($id, $pl, $btl); +} diff --git a/_incl_data/class/priem/34.php b/_incl_data/class/priem/34.php index abdbd1ad..9e1e5db6 100644 --- a/_incl_data/class/priem/34.php +++ b/_incl_data/class/priem/34.php @@ -1,108 +1,14 @@ -ue['id'].'" AND `v2` = 26 AND `delete` = 0 LIMIT 1')); - // - $pvr['hp11'] = 40+round(40/100*(5*$pvr['x5']['x'])); - $pvr['hp22'] = $pvr['hp11']; - // - // - $pvr['hp_0'] = rand($pvr['hp11'],$pvr['hp22']); - //Действие при клике - //$pvr['rx'] = rand(80,80); - //$pvr['rx'] = floor($pvr['rx']/10); - $pvr['rx'] = 1; - $pvr['xx'] = 0; - $pvr['ix'] = $btl->uids[$this->ue['id']]; - - if( $btl->stats[$pvr['ix']]['hpNow'] > 0 && $btl->users[$pvr['ix']]['team'] != $u->info['team'] && $pvr['xx'] < $pvr['rx'] && $pvr['uen'] != $btl->users[$pvr['ix']]['id'] ) { - // - $pvr['uid'] = $btl->users[$pvr['ix']]['id']; - $pvr['hp'] = floor(rand($pvr['hp11'],$pvr['hp22'])); - $pvr['hp'] = $this->magatack( $u->info['id'], $pvr['uid'], $pvr['hp'], 'огонь', 1 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0]; - $pvr['hpSee'] = '--'; - $pvr['hpNow'] = floor($btl->stats[$btl->uids[$pvr['uid']]]['hpNow']); - $pvr['hpAll'] = $btl->stats[$btl->uids[$pvr['uid']]]['hpAll']; - - //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $u->info['id'], $pvr['uid'], 21, $pvr['hp'], 5, true ); - - $pvr['hpSee'] = '-'.$pvr['hp']; - $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); - - if( $pvr['hpNow'] > $pvr['hpAll'] ) { - $pvr['hpNow'] = $pvr['hpAll']; - }elseif( $pvr['hpNow'] < 0 ) { - $pvr['hpNow'] = 0; - } - - $btl->stats[$btl->uids[$pvr['uid']]]['hpNow'] = $pvr['hpNow']; - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$pvr['uid']]]['hpNow'].'" WHERE `id` = "'.$pvr['uid'].'" LIMIT 1'); - - // - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '006699'; - if(isset($btl->mcolor[$btl->mname['огонь']])) { - $prv['color2'] = $btl->mcolor[$btl->mname['огонь']]; - } - $prv['color'] = '000000'; - if(isset($btl->mncolor[$btl->mname['огонь']])) { - $prv['color'] = $btl->mncolor[$btl->mname['огонь']]; - } - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - // - - // - //$prv['color2'] = $btl->mcolor[$btl->mname['земля']]; - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - if( $pvr['promah_type'] == 2 ) { - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$pvr['uid'],1).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - }else{ - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$pvr['uid'],1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - } - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $pvr['uid'], - 'Вспышка [8]', - $prv['text2'], - ($btl->hodID + 1) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($pvr['uid'],$pl['id'],'atgm='.floor($pvr['hp']/5).'',0,77,5,$u->info['id'],1,'ядовитоеоблако',0,0,1); - - //Отнимаем тактики - //$this->mintr($pl); - // - $pvr['xx']++; - } - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($this->ue['id'],$pl['id'],'atgm='.($pvr['hp']/16).'',2,77,4,$u->info['id'],3,'оледенение',0,0,1); - - //Отнимаем тактики - //$this->mintr($pl); + \ No newline at end of file +/** + * Прием: Вспышка [8] + * @var $this priems + * @var $btl battleClass + * @var $id + */ + +if (!$id) { + exit(); +} + +$this->fireFlash(8, $btl, $id); diff --git a/_incl_data/class/priem/38.php b/_incl_data/class/priem/38.php index 06b2aab2..453f1c81 100644 --- a/_incl_data/class/priem/38.php +++ b/_incl_data/class/priem/38.php @@ -27,8 +27,8 @@ $pvr = array(); $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$this->ue['id'],$pvr['hp'],0); - - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$this->ue['id']]] ); + +$this->addAirStaticPoints(); /* Удар в Статику*/ if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; @@ -104,7 +104,7 @@ $pvr = array(); $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); + $this->addAirStaticPoints($pvr['uid']); /* Удар в Статику*/ if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; diff --git a/_incl_data/class/priem/39.php b/_incl_data/class/priem/39.php index c0a718ff..0973e2d2 100644 --- a/_incl_data/class/priem/39.php +++ b/_incl_data/class/priem/39.php @@ -17,7 +17,8 @@ $pvr = array(); $pvr['ix'] = 0; // -$pkrit=0; +$pkrit=0; + while( $pvr['ix'] < count($btl->users) ) { if( $btl->stats[$pvr['ix']]['hpNow'] > 0 && $btl->users[$pvr['ix']]['team'] != $u->info['team'] && $pvr['xx'] < $pvr['rx'] && $pvr['uen'] != $btl->users[$pvr['ix']]['id'] ) { // @@ -39,8 +40,8 @@ while( $pvr['ix'] < count($btl->users) ) { $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); + + $this->addAirStaticPoints($pvr['uid']); /* Удар в Статику*/ if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; diff --git a/_incl_data/class/priem/50.php b/_incl_data/class/priem/50.php index 0a57b224..7d713d52 100644 --- a/_incl_data/class/priem/50.php +++ b/_incl_data/class/priem/50.php @@ -55,8 +55,7 @@ $pvr = array(); $prv['color2'] = '909090'; $prv['color'] = '909090'; } - - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$u->info['id']]] ); + $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; if( $pvr['promah_type'] == 2 ) { diff --git a/_incl_data/class/priem/51.php b/_incl_data/class/priem/51.php index 06f83698..2fabcf8e 100644 --- a/_incl_data/class/priem/51.php +++ b/_incl_data/class/priem/51.php @@ -56,8 +56,7 @@ $pvr = array(); $prv['color'] = '909090'; } - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$u->info['id']]] ); - + $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; if( $pvr['promah_type'] == 2 ) { $prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); diff --git a/_incl_data/class/priem/52.php b/_incl_data/class/priem/52.php index 33f9d2bd..f316767c 100644 --- a/_incl_data/class/priem/52.php +++ b/_incl_data/class/priem/52.php @@ -8,7 +8,9 @@ if(!defined('GAME')) { $pvr = array(); //Действие при клике $pvr['hp'] = 58; - $pvr['hp'] = $this->magatack( $u->info['id'], $this->ue['id'], $pvr['hp'], 'огонь', 1 ); + + $pvr['hp'] = $this->magatack($this->u->info['id'], $this->ue['id'], $pvr['hp'], 'огонь', 1 ); + $pvr['promah_type'] = $pvr['hp'][3]; $pvr['promah'] = $pvr['hp'][2]; $pvr['krit'] = $pvr['hp'][1]; @@ -18,11 +20,11 @@ $pvr = array(); $pvr['hpAll'] = $btl->stats[$btl->uids[$this->ue['id']]]['hpAll']; //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $u->info['id'], $this->ue['id'], 21, $pvr['hp'], 5, true ); + $pvr['hp'] = $btl->testYronPriem( $this->u->info['id'], $this->ue['id'], 21, $pvr['hp'], 5, true ); $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($u->info['id'],$this->ue['id'],$pvr['hp'],0); + $btl->priemYronSave($this->u->info['id'],$this->ue['id'],$pvr['hp'],0); if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; @@ -34,7 +36,7 @@ $pvr = array(); mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$this->ue['id']]]['hpNow'].'" WHERE `id` = "'.$this->ue['id'].'" LIMIT 1'); - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); + $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$this->u->info['id']]]['sex'] , NULL); //Цвет приема if( $pvr['promah'] == false ) { @@ -56,14 +58,14 @@ $pvr = array(); $prv['color'] = '909090'; } - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$u->info['id']]] ); + - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; + $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($this->u->info['id'],$this->ue['id'],1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; if( $pvr['promah_type'] == 2 ) { - $prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],1).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; + $prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$this->u->info['id']]]['sex'] , NULL); + $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($this->u->info['id'],$this->ue['id'],1).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; } - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], + $btl->priemAddLog( $id, 1, 2, $this->u->info['id'], $this->ue['id'], 'Испепеление [8]', $prv['text2'], ($btl->hodID + 1) diff --git a/_incl_data/class/priem/53.php b/_incl_data/class/priem/53.php index 0c7de42b..5769a5b3 100644 --- a/_incl_data/class/priem/53.php +++ b/_incl_data/class/priem/53.php @@ -56,8 +56,7 @@ $pvr = array(); $prv['color'] = '909090'; } - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$u->info['id']]] ); - + $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; if( $pvr['promah_type'] == 2 ) { $prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); diff --git a/_incl_data/class/priem/54.php b/_incl_data/class/priem/54.php index dd41319e..5ddcb5cf 100644 --- a/_incl_data/class/priem/54.php +++ b/_incl_data/class/priem/54.php @@ -56,8 +56,7 @@ $pvr = array(); $prv['color'] = '909090'; } - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$u->info['id']]] ); - + $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; if( $pvr['promah_type'] == 2 ) { $prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); diff --git a/_incl_data/class/priem/55.php b/_incl_data/class/priem/55.php index f78e011b..795b13bb 100644 --- a/_incl_data/class/priem/55.php +++ b/_incl_data/class/priem/55.php @@ -56,8 +56,7 @@ $pvr = array(); $prv['color'] = '909090'; } - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$u->info['id']]] ); - + $prv['text2'] = '{tm1} '.$prv['text'].'. '.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; if( $pvr['promah_type'] == 2 ) { $prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); diff --git a/_incl_data/class/priem/56.php b/_incl_data/class/priem/56.php index 3642c051..3c7a4312 100644 --- a/_incl_data/class/priem/56.php +++ b/_incl_data/class/priem/56.php @@ -1,163 +1,26 @@ -atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid1 ) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - }elseif( $uid == $uid2 ) { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if( $a > 0 ) { - - //Проверяем эффект - $prv['j_priem'] = $btl->stats[$btl->uids[$u1]]['u_priem'][$j_id][0]; - $prv['priem_th'] = $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id']; - - //действия - $pvr['hp'] = 1; - // - $pvr['data'] = $priem->lookStatsArray($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data']); - $pvr['di'] = 0; - $pvr['dc'] = count($pvr['data']['atgm']); - $pvr['rd'] = 0; - $pvr['redata'] = ''; - while( $pvr['di'] < 4 ) { - if( isset($pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]) ) { - if( $pvr['rd'] < 3 ) { - $pvr['hp'] += $pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]; - $pvr['redata'] = 'atgm='.$pvr['data']['atgm'][($pvr['dc']-$pvr['di'])].'|'.$pvr['redata']; - $pvr['rd']++; - } - } - $pvr['di']++; - } - // - $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data'] = $pvr['redata']; - mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); - // - $pvr['hp'] = floor($pvr['hp']*5); - $pvr['proc-hp'] = array( 5 , 10 , 15 , 20 , 50 ); - $pvr['proc-hp'] = $pvr['proc-hp'][5-$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['hod']]; - $pvr['hp'] = round($pvr['hp']/100*$pvr['proc-hp']); - // - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'огонь', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ - // - $pvr['hpSee'] = '--'; - $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); - $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; - - //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'], $u1, 12, $pvr['hp'], 7, true, false, 1 ); - - $pvr['hpSee'] = '-'.$pvr['hp']; - $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'],$u1,$pvr['hp'],0); - - if( $pvr['hpNow'] > $pvr['hpAll'] ) { - $pvr['hpNow'] = $pvr['hpAll']; - }elseif( $pvr['hpNow'] < 0 ) { - $pvr['hpNow'] = 0; - } - - $btl->stats[$btl->uids[$u1]]['hpNow'] = $pvr['hpNow']; - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$u1]]['hpNow'].'" WHERE `id` = "'.$u1.'" LIMIT 1'); - //$prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u2]]['sex'] , NULL); - $prv['text'] = '{u2} утратил здоровье от "{pr}"'; - - //Цвет приема - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '000000'; - $prv['color'] = '008000'; - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u2,$u1,1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - if( $pvr['promah_type'] == 2 ) { - //$prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u2]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u2,$u1,1).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - } - $prv['xx'] = ''; - if( $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['x'] > 1 ) { - //$prv['xx'] = ' x'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['x'].''; - } - $btl->priemAddLog( $id, 1, 2, $u2, $u1, - 'Пожирающее Пламя [7]'.$prv['xx'].'', - $prv['text2'], - ($btl->hodID) - ); - } - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}else{ - $pvr['hp'] = floor(63); - $pvr['hp'] = $this->magatack( $u->info['id'], $this->ue['id'], $pvr['hp'], 'огонь', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0]; - // - $prv['color2'] = '000000'; - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '000000'; - }else{ - $prv['color2'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - } - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'.'; - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], - 'Пожирающее Пламя [7]', - $prv['text2'], - ($btl->hodID + 1) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - if ($pvr['hp']>0) - { - $this->addPriem($this->ue['id'],$pl['id'],'atgm='.floor($pvr['hp']/5).'',0,77,5,$u->info['id'],1,'пожирающеепламя',0,0,1); - } - //Отнимаем тактики - //$this->mintr($pl); -} -unset($pvr); -?> \ No newline at end of file +if (isset($pr_used_this) && isset($pr_moment)) { + //Каждый ход + $fx_priem = function ($id, $at, $uid, $j_id) { + global $btl, $priem; + $priem->devouringFlame($id, $uid, $j_id, $btl); + return $at; + }; + unset($pr_used_this); +} else { + $this->devouringFlameInit($id, $pl, $btl); +} diff --git a/_incl_data/class/priem/57.php b/_incl_data/class/priem/57.php index a1c5aeaa..1cf60113 100644 --- a/_incl_data/class/priem/57.php +++ b/_incl_data/class/priem/57.php @@ -1,163 +1,26 @@ -atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid1 ) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - }elseif( $uid == $uid2 ) { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if( $a > 0 ) { - - //Проверяем эффект - $prv['j_priem'] = $btl->stats[$btl->uids[$u1]]['u_priem'][$j_id][0]; - $prv['priem_th'] = $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id']; - - //действия - $pvr['hp'] = 1; - // - $pvr['data'] = $priem->lookStatsArray($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data']); - $pvr['di'] = 0; - $pvr['dc'] = count($pvr['data']['atgm']); - $pvr['rd'] = 0; - $pvr['redata'] = ''; - while( $pvr['di'] < 4 ) { - if( isset($pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]) ) { - if( $pvr['rd'] < 3 ) { - $pvr['hp'] += $pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]; - $pvr['redata'] = 'atgm='.$pvr['data']['atgm'][($pvr['dc']-$pvr['di'])].'|'.$pvr['redata']; - $pvr['rd']++; - } - } - $pvr['di']++; - } - // - $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data'] = $pvr['redata']; - mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); - // - $pvr['hp'] = floor($pvr['hp']*5); - $pvr['proc-hp'] = array( 5 , 10 , 15 , 20 , 50 ); - $pvr['proc-hp'] = $pvr['proc-hp'][5-$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['hod']]; - $pvr['hp'] = round($pvr['hp']/100*$pvr['proc-hp']); - // - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'огонь', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ - // - $pvr['hpSee'] = '--'; - $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); - $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; - - //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'], $u1, 12, $pvr['hp'], 7, true, false, 1 ); - - $pvr['hpSee'] = '-'.$pvr['hp']; - $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'],$u1,$pvr['hp'],0); - - if( $pvr['hpNow'] > $pvr['hpAll'] ) { - $pvr['hpNow'] = $pvr['hpAll']; - }elseif( $pvr['hpNow'] < 0 ) { - $pvr['hpNow'] = 0; - } - - $btl->stats[$btl->uids[$u1]]['hpNow'] = $pvr['hpNow']; - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$u1]]['hpNow'].'" WHERE `id` = "'.$u1.'" LIMIT 1'); - //$prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u2]]['sex'] , NULL); - $prv['text'] = '{u2} утратил здоровье от "{pr}"'; - - //Цвет приема - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '000000'; - $prv['color'] = '008000'; - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u2,$u1,1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - if( $pvr['promah_type'] == 2 ) { - //$prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u2]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u2,$u1,1).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - } - $prv['xx'] = ''; - if( $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['x'] > 1 ) { - //$prv['xx'] = ' x'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['x'].''; - } - $btl->priemAddLog( $id, 1, 2, $u2, $u1, - 'Пожирающее Пламя [8]'.$prv['xx'].'', - $prv['text2'], - ($btl->hodID) - ); - } - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}else{ - $pvr['hp'] = floor(77); - $pvr['hp'] = $this->magatack( $u->info['id'], $this->ue['id'], $pvr['hp'], 'огонь', 0); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0]; - // - $prv['color2'] = '000000'; - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '000000'; - }else{ - $prv['color2'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - } - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'.'; - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], - 'Пожирающее Пламя [8]', - $prv['text2'], - ($btl->hodID + 1) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - if ($pvr['hp']>0) - { - $this->addPriem($this->ue['id'],$pl['id'],'atgm='.floor($pvr['hp']/5).'',0,77,5,$u->info['id'],1,'пожирающеепламя',0,0,1); - } - //Отнимаем тактики - //$this->mintr($pl); -} -unset($pvr); -?> \ No newline at end of file +if (isset($pr_used_this) && isset($pr_moment)) { + //Каждый ход + $fx_priem = function ($id, $at, $uid, $j_id) { + global $btl, $priem; + $priem->devouringFlame($id, $uid, $j_id, $btl); + return $at; + }; + unset($pr_used_this); +} else { + $this->devouringFlameInit($id, $pl, $btl); +} diff --git a/_incl_data/class/priem/58.php b/_incl_data/class/priem/58.php index 0249d975..5fde3d79 100644 --- a/_incl_data/class/priem/58.php +++ b/_incl_data/class/priem/58.php @@ -1,168 +1,26 @@ -atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid1 ) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - }elseif( $uid == $uid2 ) { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if( $a > 0 ) { - - //Проверяем эффект - $prv['j_priem'] = $btl->stats[$btl->uids[$u1]]['u_priem'][$j_id][0]; - $prv['priem_th'] = $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id']; - - //действия - $pvr['hp'] = 1; - // - $pvr['data'] = $priem->lookStatsArray($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data']); - $pvr['di'] = 0; - $pvr['dc'] = count($pvr['data']['atgm']); - $pvr['rd'] = 0; - $pvr['redata'] = ''; - while( $pvr['di'] < 4 ) { - if( isset($pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]) ) { - if( $pvr['rd'] < 3 ) { - $pvr['hp'] += $pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]; - $pvr['redata'] = 'atgm='.$pvr['data']['atgm'][($pvr['dc']-$pvr['di'])].'|'.$pvr['redata']; - $pvr['rd']++; - } - } - $pvr['di']++; - } - // - $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data'] = $pvr['redata']; - mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); - // - $pvr['hp'] = floor($pvr['hp']*5); - $pvr['proc-hp'] = array( 5 , 10 , 15 , 20 , 50 ); - $pvr['proc-hp'] = $pvr['proc-hp'][5-$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['hod']]; - $pvr['hp'] = round($pvr['hp']/100*$pvr['proc-hp']); - // - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'огонь', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ - // - $pvr['hpSee'] = '--'; - $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); - $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; - - //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'], $u1, 12, $pvr['hp'], 7, true, false, 1 ); - - $pvr['hpSee'] = '-'.$pvr['hp']; - $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'],$u1,$pvr['hp'],0); - - if( $pvr['hpNow'] > $pvr['hpAll'] ) { - $pvr['hpNow'] = $pvr['hpAll']; - }elseif( $pvr['hpNow'] < 0 ) { - $pvr['hpNow'] = 0; - } - - $btl->stats[$btl->uids[$u1]]['hpNow'] = $pvr['hpNow']; - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$u1]]['hpNow'].'" WHERE `id` = "'.$u1.'" LIMIT 1'); - //$prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u2]]['sex'] , NULL); - $prv['text'] = '{u2} утратил здоровье от "{pr}"'; - - //Цвет приема - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '000000'; - $prv['color'] = '008000'; - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u2,$u1,1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - if( $pvr['promah_type'] == 2 ) { - //$prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u2]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u2,$u1,1).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - } - $prv['xx'] = ''; - if( $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['x'] > 1 ) { - //$prv['xx'] = ' x'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['x'].''; - } - $btl->priemAddLog( $id, 1, 2, $u2, $u1, - 'Пожирающее Пламя [9]'.$prv['xx'].'', - $prv['text2'], - ($btl->hodID) - ); - // спасение - $btl->spaCheck($u1); - // спасение - - } - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}else{ - $pvr['hp'] = floor(91); - $pvr['hp'] = $this->magatack( $u->info['id'], $this->ue['id'], $pvr['hp'], 'огонь', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0]; - // - $prv['color2'] = '000000'; - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '000000'; - }else{ - $prv['color2'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - } - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'.'; - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], - 'Пожирающее Пламя [9]', - $prv['text2'], - ($btl->hodID + 1) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - if ($pvr['hp']>0) - { - $this->addPriem($this->ue['id'],$pl['id'],'atgm='.floor($pvr['hp']/5).'',0,77,5,$u->info['id'],1,'пожирающеепламя',0,0,1); - } - //Отнимаем тактики - //$this->mintr($pl); +if (isset($pr_used_this) && isset($pr_moment)) { + //Каждый ход + $fx_priem = function ($id, $at, $uid, $j_id) { + global $btl, $priem; + $priem->devouringFlame($id, $uid, $j_id, $btl); + return $at; + }; + unset($pr_used_this); +} else { + $this->devouringFlameInit($id, $pl, $btl); } - -unset($pvr); -?> \ No newline at end of file diff --git a/_incl_data/class/priem/59.php b/_incl_data/class/priem/59.php index 91db6b36..2d70aebf 100644 --- a/_incl_data/class/priem/59.php +++ b/_incl_data/class/priem/59.php @@ -1,169 +1,26 @@ -atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid1 ) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - }elseif( $uid == $uid2 ) { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if( $a > 0 ) { - - //Проверяем эффект - $prv['j_priem'] = $btl->stats[$btl->uids[$u1]]['u_priem'][$j_id][0]; - $prv['priem_th'] = $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id']; - - //действия - $pvr['hp'] = 1; - // - $pvr['data'] = $priem->lookStatsArray($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data']); - $pvr['di'] = 0; - $pvr['dc'] = count($pvr['data']['atgm']); - $pvr['rd'] = 0; - $pvr['redata'] = ''; - while( $pvr['di'] < 4 ) { - if( isset($pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]) ) { - if( $pvr['rd'] < 3 ) { - $pvr['hp'] += $pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]; - $pvr['redata'] = 'atgm='.$pvr['data']['atgm'][($pvr['dc']-$pvr['di'])].'|'.$pvr['redata']; - $pvr['rd']++; - } - } - $pvr['di']++; - } - // - $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data'] = $pvr['redata']; - mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); - // - $pvr['hp'] = floor($pvr['hp']*5); - $pvr['proc-hp'] = array( 5 , 10 , 15 , 20 , 50 ); - $pvr['proc-hp'] = $pvr['proc-hp'][5-$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['hod']]; - $pvr['hp'] = round($pvr['hp']/100*$pvr['proc-hp']); - // - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'огонь', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ - // - $pvr['hpSee'] = '--'; - $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); - $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; - - //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'], $u1, 12, $pvr['hp'], 7, true, false, 1 ); - - $pvr['hpSee'] = '-'.$pvr['hp']; - $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'],$u1,$pvr['hp'],0); - - if( $pvr['hpNow'] > $pvr['hpAll'] ) { - $pvr['hpNow'] = $pvr['hpAll']; - }elseif( $pvr['hpNow'] < 0 ) { - $pvr['hpNow'] = 0; - } - - $btl->stats[$btl->uids[$u1]]['hpNow'] = $pvr['hpNow']; - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$u1]]['hpNow'].'" WHERE `id` = "'.$u1.'" LIMIT 1'); - //$prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u2]]['sex'] , NULL); - $prv['text'] = '{u2} утратил здоровье от "{pr}"'; - - //Цвет приема - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '000000'; - $prv['color'] = '008000'; - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u2,$u1,1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - if( $pvr['promah_type'] == 2 ) { - //$prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u2]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u2,$u1,1).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - } - $prv['xx'] = ''; - if( $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['x'] > 1 ) { - //$prv['xx'] = ' x'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['x'].''; - } - $btl->priemAddLog( $id, 1, 2, $u2, $u1, - 'Пожирающее Пламя [10]'.$prv['xx'].'', //Тут урон от пожиралки - $prv['text2'], - ($btl->hodID) - ); - - // спасение - $btl->spaCheck($u1); - // спасение - - } - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}elseif( isset($pr_used_this) && isset($pr_moment) && !isset($btl->info['id']) ) { - -}else{ - $pvr['hp'] = floor(110); - $pvr['hp'] = $this->magatack( $u->info['id'], $this->ue['id'], $pvr['hp'], 'огонь', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0]; - // - $prv['color2'] = '000000'; - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '000000'; - }else{ - $prv['color2'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - } - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'.'; - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], - 'Пожирающее Пламя [10]', - $prv['text2'], - ($btl->hodID + 1) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - if ($pvr['hp']>0) - { - $this->addPriem($this->ue['id'],$pl['id'],'atgm='.floor($pvr['hp']/5).'',0,77,5,$u->info['id'],1,'пожирающеепламя',0,0,1); - } - //Отнимаем тактики - //$this->mintr($pl); -} -unset($pvr); -?> \ No newline at end of file +if (isset($pr_used_this) && isset($pr_moment)) { + //Каждый ход + $fx_priem = function ($id, $at, $uid, $j_id) { + global $btl, $priem; + $priem->devouringFlame($id, $uid, $j_id, $btl); + return $at; + }; + unset($pr_used_this); +} else { + $this->devouringFlameInit($id, $pl, $btl); +} diff --git a/_incl_data/class/priem/60.php b/_incl_data/class/priem/60.php index 20d59a6b..bd13d408 100644 --- a/_incl_data/class/priem/60.php +++ b/_incl_data/class/priem/60.php @@ -1,166 +1,26 @@ -atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid1 ) { - $a = 1; - $b = 2; - $u1 = ${'uid1'}; - $u2 = ${'uid2'}; - }elseif( $uid == $uid2 ) { - $a = 2; - $b = 1; - $u1 = ${'uid2'}; - $u2 = ${'uid1'}; - } - if( $a > 0 ) { - - //Проверяем эффект - $prv['j_priem'] = $btl->stats[$btl->uids[$u1]]['u_priem'][$j_id][0]; - $prv['priem_th'] = $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id']; - - //действия - $pvr['hp'] = 1; - // - $pvr['data'] = $priem->lookStatsArray($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data']); - $pvr['di'] = 0; - $pvr['dc'] = count($pvr['data']['atgm']); - $pvr['rd'] = 0; - $pvr['redata'] = ''; - while( $pvr['di'] < 4 ) { - if( isset($pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]) ) { - if( $pvr['rd'] < 3 ) { - $pvr['hp'] += $pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]; - $pvr['redata'] = 'atgm='.$pvr['data']['atgm'][($pvr['dc']-$pvr['di'])].'|'.$pvr['redata']; - $pvr['rd']++; - } - } - $pvr['di']++; - } - // - $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data'] = $pvr['redata']; - mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); - // - $pvr['hp'] = floor($pvr['hp']*5); - $pvr['proc-hp'] = array( 5 , 10 , 15 , 20 , 50 ); - $pvr['proc-hp'] = $pvr['proc-hp'][5-$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['hod']]; - $pvr['hp'] = round($pvr['hp']/100*$pvr['proc-hp']); - // - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'огонь', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ - // - $pvr['hpSee'] = '--'; - $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); - $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; - - //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'], $u1, 12, $pvr['hp'], 7, true, false, 1 ); - - $pvr['hpSee'] = '-'.$pvr['hp']; - $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'],$u1,$pvr['hp'],0); - - if( $pvr['hpNow'] > $pvr['hpAll'] ) { - $pvr['hpNow'] = $pvr['hpAll']; - }elseif( $pvr['hpNow'] < 0 ) { - $pvr['hpNow'] = 0; - } - - $btl->stats[$btl->uids[$u1]]['hpNow'] = $pvr['hpNow']; - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$u1]]['hpNow'].'" WHERE `id` = "'.$u1.'" LIMIT 1'); - //$prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u2]]['sex'] , NULL); - $prv['text'] = '{u2} утратил здоровье от "{pr}"'; - - //Цвет приема - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '000000'; - $prv['color'] = '008000'; - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u2,$u1,1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - if( $pvr['promah_type'] == 2 ) { - //$prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u2]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u2,$u1,1).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - } - $prv['xx'] = ''; - if( $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['x'] > 1 ) { - //$prv['xx'] = ' x'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['x'].''; - } - $btl->priemAddLog( $id, 1, 2, $u2, $u1, - 'Пожирающее Пламя [11]'.$prv['xx'].'', - $prv['text2'], - ($btl->hodID) - ); - // спасение - $btl->spaCheck($u1); - // спасение - } - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}else{ - $pvr['hp'] = floor(135); - $pvr['hp'] = $this->magatack( $u->info['id'], $this->ue['id'], $pvr['hp'], 'огонь', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0]; - // - $prv['color2'] = '000000'; - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '000000'; - }else{ - $prv['color2'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - } - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'.'; - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], - 'Пожирающее Пламя [11]', - $prv['text2'], - ($btl->hodID + 1) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - if ($pvr['hp']>0) - { - $this->addPriem($this->ue['id'],$pl['id'],'atgm='.floor($pvr['hp']/5).'',0,77,5,$u->info['id'],1,'пожирающеепламя',0,0,1); - } - //Отнимаем тактики - //$this->mintr($pl); -} -unset($pvr); -?> \ No newline at end of file +if (isset($pr_used_this) && isset($pr_moment)) { + //Каждый ход + $fx_priem = function ($id, $at, $uid, $j_id) { + global $btl, $priem; + $priem->devouringFlame($id, $uid, $j_id, $btl); + return $at; + }; + unset($pr_used_this); +} else { + $this->devouringFlameInit($id, $pl, $btl); +} diff --git a/_incl_data/class/priem/67.php b/_incl_data/class/priem/67.php index 55e7b41f..b7ccea9b 100644 --- a/_incl_data/class/priem/67.php +++ b/_incl_data/class/priem/67.php @@ -1,108 +1,13 @@ -ue['id'].'" AND `v2` = 26 AND `delete` = 0 LIMIT 1')); - // - $pvr['hp11'] = 45+round(45/100*(5*$pvr['x5']['x'])); - $pvr['hp22'] = $pvr['hp11']; - // - // - $pvr['hp_0'] = rand($pvr['hp11'],$pvr['hp22']); - //Действие при клике - //$pvr['rx'] = rand(80,80); - //$pvr['rx'] = floor($pvr['rx']/10); - $pvr['rx'] = 1; - $pvr['xx'] = 0; - $pvr['ix'] = $btl->uids[$this->ue['id']]; - - if( $btl->stats[$pvr['ix']]['hpNow'] > 0 && $btl->users[$pvr['ix']]['team'] != $u->info['team'] && $pvr['xx'] < $pvr['rx'] && $pvr['uen'] != $btl->users[$pvr['ix']]['id'] ) { - // - $pvr['uid'] = $btl->users[$pvr['ix']]['id']; - $pvr['hp'] = floor(rand($pvr['hp11'],$pvr['hp22'])); - $pvr['hp'] = $this->magatack( $u->info['id'], $pvr['uid'], $pvr['hp'], 'огонь', 1 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0]; - $pvr['hpSee'] = '--'; - $pvr['hpNow'] = floor($btl->stats[$btl->uids[$pvr['uid']]]['hpNow']); - $pvr['hpAll'] = $btl->stats[$btl->uids[$pvr['uid']]]['hpAll']; - - //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $u->info['id'], $pvr['uid'], 21, $pvr['hp'], 5, true ); - - $pvr['hpSee'] = '-'.$pvr['hp']; - $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); - - if( $pvr['hpNow'] > $pvr['hpAll'] ) { - $pvr['hpNow'] = $pvr['hpAll']; - }elseif( $pvr['hpNow'] < 0 ) { - $pvr['hpNow'] = 0; - } - - $btl->stats[$btl->uids[$pvr['uid']]]['hpNow'] = $pvr['hpNow']; - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$pvr['uid']]]['hpNow'].'" WHERE `id` = "'.$pvr['uid'].'" LIMIT 1'); - - // - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '006699'; - if(isset($btl->mcolor[$btl->mname['огонь']])) { - $prv['color2'] = $btl->mcolor[$btl->mname['огонь']]; - } - $prv['color'] = '000000'; - if(isset($btl->mncolor[$btl->mname['огонь']])) { - $prv['color'] = $btl->mncolor[$btl->mname['огонь']]; - } - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - // - - // - //$prv['color2'] = $btl->mcolor[$btl->mname['земля']]; - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - if( $pvr['promah_type'] == 2 ) { - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$pvr['uid'],1).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - }else{ - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$pvr['uid'],1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - } - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $pvr['uid'], - 'Вспышка [9]', - $prv['text2'], - ($btl->hodID + 1) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($pvr['uid'],$pl['id'],'atgm='.floor($pvr['hp']/5).'',0,77,5,$u->info['id'],1,'ядовитоеоблако',0,0,1); - - //Отнимаем тактики - //$this->mintr($pl); - // - $pvr['xx']++; - } - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($this->ue['id'],$pl['id'],'atgm='.($pvr['hp']/16).'',2,77,4,$u->info['id'],3,'оледенение',0,0,1); - - //Отнимаем тактики - //$this->mintr($pl); + \ No newline at end of file +/** + * Прием: Вспышка [9] + * @var $this priems + * @var $btl battleClass + * @var $id + */ + +if (!$id) { + exit(); +} +$this->fireFlash(9, $btl, $id); diff --git a/_incl_data/class/priem/68.php b/_incl_data/class/priem/68.php index 4b59ffdd..8fccb687 100644 --- a/_incl_data/class/priem/68.php +++ b/_incl_data/class/priem/68.php @@ -1,108 +1,13 @@ -ue['id'].'" AND `v2` = 26 AND `delete` = 0 LIMIT 1')); - // - $pvr['hp11'] = 50+round(50/100*(5*$pvr['x5']['x'])); - $pvr['hp22'] = $pvr['hp11']; - // - // - $pvr['hp_0'] = rand($pvr['hp11'],$pvr['hp22']); - //Действие при клике - //$pvr['rx'] = rand(80,80); - //$pvr['rx'] = floor($pvr['rx']/10); - $pvr['rx'] = 1; - $pvr['xx'] = 0; - $pvr['ix'] = $btl->uids[$this->ue['id']]; - - if( $btl->stats[$pvr['ix']]['hpNow'] > 0 && $btl->users[$pvr['ix']]['team'] != $u->info['team'] && $pvr['xx'] < $pvr['rx'] && $pvr['uen'] != $btl->users[$pvr['ix']]['id'] ) { - // - $pvr['uid'] = $btl->users[$pvr['ix']]['id']; - $pvr['hp'] = floor(rand($pvr['hp11'],$pvr['hp22'])); - $pvr['hp'] = $this->magatack( $u->info['id'], $pvr['uid'], $pvr['hp'], 'огонь', 1 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0]; - $pvr['hpSee'] = '--'; - $pvr['hpNow'] = floor($btl->stats[$btl->uids[$pvr['uid']]]['hpNow']); - $pvr['hpAll'] = $btl->stats[$btl->uids[$pvr['uid']]]['hpAll']; - - //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $u->info['id'], $pvr['uid'], 21, $pvr['hp'], 5, true ); - - $pvr['hpSee'] = '-'.$pvr['hp']; - $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); - - if( $pvr['hpNow'] > $pvr['hpAll'] ) { - $pvr['hpNow'] = $pvr['hpAll']; - }elseif( $pvr['hpNow'] < 0 ) { - $pvr['hpNow'] = 0; - } - - $btl->stats[$btl->uids[$pvr['uid']]]['hpNow'] = $pvr['hpNow']; - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$pvr['uid']]]['hpNow'].'" WHERE `id` = "'.$pvr['uid'].'" LIMIT 1'); - - // - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '006699'; - if(isset($btl->mcolor[$btl->mname['огонь']])) { - $prv['color2'] = $btl->mcolor[$btl->mname['огонь']]; - } - $prv['color'] = '000000'; - if(isset($btl->mncolor[$btl->mname['огонь']])) { - $prv['color'] = $btl->mncolor[$btl->mname['огонь']]; - } - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - // - - // - //$prv['color2'] = $btl->mcolor[$btl->mname['земля']]; - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - if( $pvr['promah_type'] == 2 ) { - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$pvr['uid'],1).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - }else{ - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$pvr['uid'],1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - } - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $pvr['uid'], - 'Вспышка [10]', - $prv['text2'], - ($btl->hodID + 1) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($pvr['uid'],$pl['id'],'atgm='.floor($pvr['hp']/5).'',0,77,5,$u->info['id'],1,'ядовитоеоблако',0,0,1); - - //Отнимаем тактики - //$this->mintr($pl); - // - $pvr['xx']++; - } - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($this->ue['id'],$pl['id'],'atgm='.($pvr['hp']/16).'',2,77,4,$u->info['id'],3,'оледенение',0,0,1); - - //Отнимаем тактики - //$this->mintr($pl); + \ No newline at end of file +/** + * Прием: Вспышка [10] + * @var $this priems + * @var $btl battleClass + * @var $id + */ + +if (!$id) { + exit(); +} +$this->fireFlash(10, $btl, $id); diff --git a/_incl_data/class/priem/69.php b/_incl_data/class/priem/69.php index cb3a5a50..89671bed 100644 --- a/_incl_data/class/priem/69.php +++ b/_incl_data/class/priem/69.php @@ -1,108 +1,13 @@ -ue['id'].'" AND `v2` = 26 AND `delete` = 0 LIMIT 1')); - // - $pvr['hp11'] = 60+round(60/100*(5*$pvr['x5']['x'])); - $pvr['hp22'] = $pvr['hp11']; - // - // - $pvr['hp_0'] = rand($pvr['hp11'],$pvr['hp22']); - //Действие при клике - //$pvr['rx'] = rand(80,80); - //$pvr['rx'] = floor($pvr['rx']/10); - $pvr['rx'] = 1; - $pvr['xx'] = 0; - $pvr['ix'] = $btl->uids[$this->ue['id']]; - - if( $btl->stats[$pvr['ix']]['hpNow'] > 0 && $btl->users[$pvr['ix']]['team'] != $u->info['team'] && $pvr['xx'] < $pvr['rx'] && $pvr['uen'] != $btl->users[$pvr['ix']]['id'] ) { - // - $pvr['uid'] = $btl->users[$pvr['ix']]['id']; - $pvr['hp'] = floor(rand($pvr['hp11'],$pvr['hp22'])); - $pvr['hp'] = $this->magatack( $u->info['id'], $pvr['uid'], $pvr['hp'], 'огонь', 1 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0]; - $pvr['hpSee'] = '--'; - $pvr['hpNow'] = floor($btl->stats[$btl->uids[$pvr['uid']]]['hpNow']); - $pvr['hpAll'] = $btl->stats[$btl->uids[$pvr['uid']]]['hpAll']; - - //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $u->info['id'], $pvr['uid'], 21, $pvr['hp'], 5, true ); - - $pvr['hpSee'] = '-'.$pvr['hp']; - $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); - - if( $pvr['hpNow'] > $pvr['hpAll'] ) { - $pvr['hpNow'] = $pvr['hpAll']; - }elseif( $pvr['hpNow'] < 0 ) { - $pvr['hpNow'] = 0; - } - - $btl->stats[$btl->uids[$pvr['uid']]]['hpNow'] = $pvr['hpNow']; - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$pvr['uid']]]['hpNow'].'" WHERE `id` = "'.$pvr['uid'].'" LIMIT 1'); - - // - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '006699'; - if(isset($btl->mcolor[$btl->mname['огонь']])) { - $prv['color2'] = $btl->mcolor[$btl->mname['огонь']]; - } - $prv['color'] = '000000'; - if(isset($btl->mncolor[$btl->mname['огонь']])) { - $prv['color'] = $btl->mncolor[$btl->mname['огонь']]; - } - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - // - - // - //$prv['color2'] = $btl->mcolor[$btl->mname['земля']]; - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - if( $pvr['promah_type'] == 2 ) { - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$pvr['uid'],1).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - }else{ - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$pvr['uid'],1).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - } - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $pvr['uid'], - 'Вспышка [11]', - $prv['text2'], - ($btl->hodID + 1) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($pvr['uid'],$pl['id'],'atgm='.floor($pvr['hp']/5).'',0,77,5,$u->info['id'],1,'ядовитоеоблако',0,0,1); - - //Отнимаем тактики - //$this->mintr($pl); - // - $pvr['xx']++; - } - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($this->ue['id'],$pl['id'],'atgm='.($pvr['hp']/16).'',2,77,4,$u->info['id'],3,'оледенение',0,0,1); - - //Отнимаем тактики - //$this->mintr($pl); + \ No newline at end of file +/** + * Прием: Вспышка [11] + * @var $this priems + * @var $btl battleClass + * @var $id + */ + +if (!$id) { + exit(); +} +$this->fireFlash(11, $btl, $id); diff --git a/_incl_data/class/priem/7.php b/_incl_data/class/priem/7.php index 0ab2a6bd..f558d869 100644 --- a/_incl_data/class/priem/7.php +++ b/_incl_data/class/priem/7.php @@ -12,17 +12,13 @@ if( isset($pr_momental_this)) { if(!isset($btl->stats[$btl->uids[$uid]]['um_priem'][$j_id])) { global $u, $btl, $inlog; $yron = $yron/2; - /* - $btl->priemAddLogFast( $uid, 0, "".$btl->stats[$btl->uids[$u2]]['effects'][$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][0]]['name']."", - '{tm1} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$uid]]['sex'] , NULL).'', - 0, time() );*/ - if( !isset($btl->prlog[$uid][$j_id]) ) { - $btl->prlog[$uid][$j_id] = true; + + // $btl->priemAddLogFast( $uid, 0, "Активная защита", '{tm1} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$uid]]['sex'] , NULL).'', 1, time() ); - } + if( $yron < 0 ) { $yron = 1; } @@ -108,15 +104,14 @@ if( isset($pr_momental_this)) { */ //Новый - if( !isset($btl->prlog[$uid][$j_id]) ) { - $btl->prlog[$uid][$j_id] = true; + // $at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->deleffm(7,'.(0+$uid).','.$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3].'); $this->priemAddLog( '.$id.', '.$b.', '.$a.', '.$u2.', '.$u1.', "Активная защита", "{tm1} '.$btl->addlt($b , 17 , $btl->users[$btl->uids[$u2]]['sex'] , NULL).'", '.($btl->hodID + 1).' );'; - } + // $at['p'][$a]['atack'][$j]['yron']['used'][] = array($j_id,$uid,$pvr['used']); $at['p'][$a]['atack'][$j]['yron']['kill'][] = array($j_id,$uid,$pvr['kill']); diff --git a/_incl_data/class/priem/91.php b/_incl_data/class/priem/91.php index f96bfe8d..3c7df523 100644 --- a/_incl_data/class/priem/91.php +++ b/_incl_data/class/priem/91.php @@ -55,8 +55,8 @@ $pvr = array(); $prv['color2'] = '909090'; $prv['color'] = '909090'; } - - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$u->info['id']]] ); + +$this->addAirStaticPoints(); /* Удар в Статику*/ $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],2).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; if( $pvr['promah_type'] == 2 ) { diff --git a/_incl_data/class/priem/92.php b/_incl_data/class/priem/92.php index 25307839..17a462cc 100644 --- a/_incl_data/class/priem/92.php +++ b/_incl_data/class/priem/92.php @@ -55,8 +55,8 @@ $pvr = array(); $prv['color2'] = '909090'; $prv['color'] = '909090'; } - - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$u->info['id']]] ); + +$this->addAirStaticPoints(); /* Удар в Статику*/ $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],2).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; if( $pvr['promah_type'] == 2 ) { diff --git a/_incl_data/class/priem/93.php b/_incl_data/class/priem/93.php index 41a72392..b92bc8d3 100644 --- a/_incl_data/class/priem/93.php +++ b/_incl_data/class/priem/93.php @@ -56,8 +56,8 @@ $pvr = array(); $prv['color2'] = '909090'; $prv['color'] = '909090'; } - - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$u->info['id']]] ); + +$this->addAirStaticPoints(); /* Удар в Статику*/ $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],2).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; if( $pvr['promah_type'] == 2 ) { diff --git a/_incl_data/class/priem/94.php b/_incl_data/class/priem/94.php index 5c4c45b5..d9732af4 100644 --- a/_incl_data/class/priem/94.php +++ b/_incl_data/class/priem/94.php @@ -56,9 +56,8 @@ $pvr = array(); $prv['color2'] = '909090'; $prv['color'] = '909090'; } - - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$u->info['id']]] ); - + +$this->addAirStaticPoints(); /* Удар в Статику*/ $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],2).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; if( $pvr['promah_type'] == 2 ) { $prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); diff --git a/_incl_data/class/priem/95.php b/_incl_data/class/priem/95.php index f7673cb1..7d312b87 100644 --- a/_incl_data/class/priem/95.php +++ b/_incl_data/class/priem/95.php @@ -59,7 +59,8 @@ $pvr = array(); $prv['color'] = '909090'; } - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$u->info['id']]] ); + + $this->addAirStaticPoints(); /* Удар в Статику*/ $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],2).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; if( $pvr['promah_type'] == 2 ) { diff --git a/_incl_data/class/priem/96.php b/_incl_data/class/priem/96.php index 2aca8e5c..dd319f8b 100644 --- a/_incl_data/class/priem/96.php +++ b/_incl_data/class/priem/96.php @@ -57,8 +57,8 @@ $pvr = array(); $prv['color2'] = '909090'; $prv['color'] = '909090'; } - - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$u->info['id']]] ); + +$this->addAirStaticPoints(); /* Удар в Статику*/ $prv['text2'] = '{tm1} '.$prv['text'].'. '.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; if( $pvr['promah_type'] == 2 ) { diff --git a/_incl_data/class/priem/97.php b/_incl_data/class/priem/97.php index 007b4178..2e409e66 100644 --- a/_incl_data/class/priem/97.php +++ b/_incl_data/class/priem/97.php @@ -23,8 +23,8 @@ $pvr = array(); //Используем проверку на урон приемов $pvr['hp'] = $btl->testYronPriem( $u->info['id'], $this->ue['id'], 21, $pvr['hp'], 6, true ); - - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$this->ue['id']]] ); + +$this->addAirStaticPoints(); /* Удар в Статику*/ $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; @@ -102,8 +102,8 @@ $pvr = array(); $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); + + $this->addAirStaticPoints($pvr['uid']); /* Удар в Статику*/ if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; diff --git a/_incl_data/class/priem/98.php b/_incl_data/class/priem/98.php index e1041e0e..068b7cc9 100644 --- a/_incl_data/class/priem/98.php +++ b/_incl_data/class/priem/98.php @@ -23,8 +23,8 @@ $pvr = array(); //Используем проверку на урон приемов $pvr['hp'] = $btl->testYronPriem( $u->info['id'], $this->ue['id'], 21, $pvr['hp'], 6, true ); - - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$this->ue['id']]] ); + +$this->addAirStaticPoints(); /* Удар в Статику*/ $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; @@ -102,8 +102,8 @@ $pvr = array(); $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); + + $this->addAirStaticPoints($pvr['uid']); /* Удар в Статику*/ if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; diff --git a/_incl_data/class/priem/99.php b/_incl_data/class/priem/99.php index eada55d0..cce8bb0a 100644 --- a/_incl_data/class/priem/99.php +++ b/_incl_data/class/priem/99.php @@ -23,8 +23,8 @@ $pvr = array(); //Используем проверку на урон приемов $pvr['hp'] = $btl->testYronPriem( $u->info['id'], $this->ue['id'], 21, $pvr['hp'], 6, true ); - - $this->mg2static_points( $this->ue['id'] , $btl->stats[$btl->uids[$this->ue['id']]] ); + +$this->addAirStaticPoints(); /* Удар в Статику*/ $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; @@ -102,8 +102,8 @@ $pvr = array(); $pvr['hpSee'] = '-'.$pvr['hp']; $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($u->info['id'],$pvr['uid'],$pvr['hp'],0); - - $this->mg2static_points( $pvr['uid'] , $btl->stats[$btl->uids[$pvr['uid']]] ); + + $this->addAirStaticPoints($pvr['uid']); /* Удар в Статику*/ if( $pvr['hpNow'] > $pvr['hpAll'] ) { $pvr['hpNow'] = $pvr['hpAll']; diff --git a/_incl_data/class/priem/_notes/readme.md b/_incl_data/class/priem/_notes/readme.md new file mode 100644 index 00000000..f26b4e25 --- /dev/null +++ b/_incl_data/class/priem/_notes/readme.md @@ -0,0 +1,3 @@ +Файлы управляющие приёмами в поеинках. +Все файлы являются частями класса `Priems`, что вызывает +массу проблем при необходимости присоединять ещё файлы. \ No newline at end of file diff --git a/_incl_data/class/priems/_notes/readme.md b/_incl_data/class/priems/_notes/readme.md new file mode 100644 index 00000000..a9ad638c --- /dev/null +++ b/_incl_data/class/priems/_notes/readme.md @@ -0,0 +1 @@ +Тут лежат файлы для использования во встроенной в предметы магии. \ No newline at end of file diff --git a/_incl_data/class/priems/fire.php b/_incl_data/class/priems/fire.php index 30ffc652..0777dca8 100644 --- a/_incl_data/class/priems/fire.php +++ b/_incl_data/class/priems/fire.php @@ -373,7 +373,7 @@ if(isset($hod)) }elseif($pl['id']==57) { //Пожирающее пламя [8] - $re = $this->addPriem($uen,$pl['id'],'',0,77,5,$u->info['id'],1,'пожирающеепламя',1,1); + $re = $this->addPriem($uen,$pl['id'],'',0,77,5,$u->info['id'],1,'пожирающеепламя2',1,1); if($re==false) { echo '[Er::Пожирающее Пламя[xX]]'; diff --git a/core1/.htaccess b/core1/.htaccess deleted file mode 100644 index 858354ca..00000000 --- a/core1/.htaccess +++ /dev/null @@ -1,9 +0,0 @@ -Options -Indexes - -AddDefaultCharset Windows-1251 - -RewriteEngine On -RewriteBase / -RewriteCond %{REQUEST_FILENAME} !-f -RewriteCond %{REQUEST_FILENAME} !-d -RewriteRule . /core/index.php [L] \ No newline at end of file diff --git a/core1/app/.htaccess b/core1/app/.htaccess deleted file mode 100644 index 3418e55a..00000000 --- a/core1/app/.htaccess +++ /dev/null @@ -1 +0,0 @@ -deny from all \ No newline at end of file diff --git a/core1/app/core/.htaccess b/core1/app/core/.htaccess deleted file mode 100644 index 3418e55a..00000000 --- a/core1/app/core/.htaccess +++ /dev/null @@ -1 +0,0 @@ -deny from all \ No newline at end of file diff --git a/core1/app/core/chat.php b/core1/app/core/chat.php deleted file mode 100644 index e7b7ebf6..00000000 --- a/core1/app/core/chat.php +++ /dev/null @@ -1,30 +0,0 @@ - $uid - )); - $uid = $uid['login']; - } - \Core\Database::query( 'INSERT INTO `chat` (`to`,`time`,`type`,`text`,`color`,`typeTime`,`new`) VALUES ( - :to , :time , :type , :text , :color , :typeTime , :new - )', array( - 'to' => $uid, - 'time' => OK, - 'type' => 6, - 'text' => $text, - 'color' => 'Black', - 'typeTime' => 0, - 'new' => 1 - ) ); - } - -} - -?> \ No newline at end of file diff --git a/core1/app/core/database.php b/core1/app/core/database.php deleted file mode 100644 index 953eeb10..00000000 --- a/core1/app/core/database.php +++ /dev/null @@ -1,45 +0,0 @@ -exec('SET NAMES CP1251;'); - $connection->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); - self::$connection = $connection; - } catch ( \PDOException $e ) { - new GeneralException($e->getMessage(), 10001); - } - } - } - - public static function query($q, $p = array(), $fetch_object = false, $fetch_all = false, $count = false) { - try { - if ( self::$connection == NULL ) { - throw new \PDOException('[Internal Error] Could not establish DB connection'); - } - $stmt = self::$connection->prepare($q); - if ( $count !== false ) { - $stmt->execute($p); - return $stmt->fetchColumn(); - } elseif ( $fetch_object !== false ) { - $stmt->execute($p); - return ($fetch_all !== false ? $stmt->fetchAll(\PDO::FETCH_ASSOC) : $stmt->fetch(\PDO::FETCH_ASSOC)); - } else { - return $stmt->execute($p); - } - } catch ( \PDOException $e ) { - new GeneralException($e->getMessage(), 10002); - } - } - - public static function lastID () { - return self::$connection->lastInsertId(); - } -} -?> \ No newline at end of file diff --git a/core1/app/core/generalexception.php b/core1/app/core/generalexception.php deleted file mode 100644 index bc3865e4..00000000 --- a/core1/app/core/generalexception.php +++ /dev/null @@ -1,24 +0,0 @@ -getFile() . "\n"; - $s .= 'In line: ' . $this->getLine() . "\n"; - $s .= 'Client IP: ' . $_SERVER['REMOTE_ADDR'] . "\n"; - $s .= 'GET Data: ' . serialize($_GET) . "\n"; - $s .= 'POST Data: ' . serialize($_POST) . "\n"; - $s .= 'Call Stack Trace: ' . "\n"; - foreach ( debug_backtrace() as $stack ) { - $s .= "\tFILE: '" . $stack['file'] . "', LINE: '" . $stack['line'] . "';\n"; - } - file_put_contents(PROJECT_PATH . DS . 'log/error.log', $s . "\n", FILE_APPEND); - } -} - -?> \ No newline at end of file diff --git a/core1/app/core/item.php b/core1/app/core/item.php deleted file mode 100644 index 9f5d263d..00000000 --- a/core1/app/core/item.php +++ /dev/null @@ -1,79 +0,0 @@ - $id - ) , true ); - return $itm; - } - - public static function getItemUser( $id ) { - //uiid - id предмета в items_users - $itm = \Core\Database::query( 'SELECT `a`.*,`b`.*,`a`.`id` AS `uiid` FROM `items_users` AS `a` LEFT JOIN `items_main` AS `b` ON `b`.`id` = `a`.`item_id` WHERE `a`.`id` = :item_id LIMIT 1' , array( - 'item_id' => $id - ) , true ); - return $itm; - } - - public static function infoItem( $itm ) { - //$po = self::lookStats( $itm['data'] ); - // - $r = array( - //items_main - $itm['id'], - $itm['name'], - $itm['img'], - $itm['2h'], - $itm['2too'], - $itm['iznosMAXi'], - $itm['price1'], //6 - $itm['price2'], - $itm['magic_chance'], - $itm['info'], - $itm['massa'], - $itm['geni'], - //items_users 12 - $itm['1price'], //12 - $itm['2price'], - $itm['use_text'], - $itm['iznosNOW'], - $itm['iznosMAX'], - $itm['gift'], - $itm['magic_inc'], - $itm['maidin'], - //data 20 - $itm['data'], - //group items_user - $itm['inGroup'], //21 - $itm['uiid'], - // - OK - - ); - return $r; - } - -} - -?> \ No newline at end of file diff --git a/core1/app/core/route.php b/core1/app/core/route.php deleted file mode 100644 index db21c474..00000000 --- a/core1/app/core/route.php +++ /dev/null @@ -1,62 +0,0 @@ - 'comission', - DP . '/auction' => 'auction', - DP . '/debuger' => 'debuger', - DP . '/admin' => 'admin' - ); - - $found_module = false; - - foreach ( $urls as $url => $handler ) { - if ( preg_match("#^" . $url . "/*$#", $uri) ) { - $class_name = "Logic\\$handler"; - if(class_exists($class_name)) { - $controller = new $class_name; - $controller->defaultAction(); - $found_module = true; - }else{ - self::ErrorClass404($class_name); - } - break; - } else { - continue; - } - } - - if ( !$found_module ) { - self::ErrorPage404(); - } - } - - public static function redirect($url) { - header('Location: ' . $url); - } - - public static function ErrorPage404() { - die('Страница не найдена'); - } - - public static function ErrorClass404($name) { - die('Расширение '. $name .' не найдено'); - } -} - -?> \ No newline at end of file diff --git a/core1/app/core/user.php b/core1/app/core/user.php deleted file mode 100644 index 9d1ccf3f..00000000 --- a/core1/app/core/user.php +++ /dev/null @@ -1,160 +0,0 @@ - 'Получаемый опыт (%)', 'align_bs' => 'Служитель закона', - 'nopryh' => 'Прямое поподание', 'puti'=>'Запрет перемещения','align'=>'Склонность','hpAll'=>'Уровень жизни (HP)','mpAll'=>'Уровень маны','enAll'=>'Уровень энергии','sex'=>'Пол','lvl'=>'Уровень','s1'=>'Сила','s2'=>'Ловкость','s3'=>'Интуиция','s4'=>'Выносливость','s5'=>'Интеллект','s6'=>'Мудрость','s7'=>'Духовность','s8'=>'Воля','s9'=>'Свобода духа','s10'=>'Божественность','s11'=>'Энергия','m1'=>'Мф. критического удара (%)','m2'=>'Мф. против критического удара (%)','m3'=>'Мф. мощности крит. удара (%)','m4'=>'Мф. увертывания (%)','m5'=>'Мф. против увертывания (%)','m6'=>'Мф. контрудара (%)','m7'=>'Мф. парирования (%)','m8'=>'Мф. блока щитом (%)','m9'=>'Мф. удара сквозь броню (%)','m14'=>'Мф. абс. критического удара (%)','m15'=>'Мф. абс. увертывания (%)','m16'=>'Мф. абс. парирования (%)','m17'=>'Мф. абс. контрудара (%)','m18'=>'Мф. абс. блока щитом (%)','m19'=>'Мф. абс. магический промах (%)','m20'=>'Мф. удача (%)','a1'=>'Мастерство владения ножами, кинжалами','a2'=>'Мастерство владения топорами, секирами','a3'=>'Мастерство владения дубинами, молотами','a4'=>'Мастерство владения мечами','a5'=>'Мастерство владения магическими посохами','a6'=>'Мастерство владения луками','a7'=>'Мастерство владения арбалетами','aall'=>'Мастерство владения оружием','mall'=>'Мастерство владения магией стихий','m2all'=>'Мастерство владения магией','mg1'=>'Мастерство владения магией огня','mg2'=>'Мастерство владения магией воздуха','mg3'=>'Мастерство владения магией воды','mg4'=>'Мастерство владения магией земли','mg5'=>'Мастерство владения магией Света','mg6'=>'Мастерство владения магией Тьмы','mg7'=>'Мастерство владения серой магией','tj'=>'Тяжелая броня','lh'=>'Легкая броня','minAtack'=>'Минимальный урон','maxAtack'=>'Максимальный урон','m10'=>'Мф. мощности урона','m11'=>'Мф. мощности магии стихий','m11a'=>'Мф. мощности магии','pa1'=>'Мф. мощности колющего урона','pa2'=>'Мф. мощности рубящего урона','pa3'=>'Мф. мощности дробящий урона','pa4'=>'Мф. мощности режущий урона','pm1'=>'Мф. мощности магии огня','pm2'=>'Мф. мощности магии воздуха','pm3'=>'Мф. мощности магии воды','pm4'=>'Мф. мощности магии земли','pm5'=>'Мф. мощности магии Света','pm6'=>'Мф. мощности магии Тьмы','pm7'=>'Мф. мощности серой магии','za'=>'Защита от урона','zm'=>'Защита от магии стихий','zma'=>'Защита от магии','za1'=>'Защита от колющего урона','za2'=>'Защита от рубящего урона','za3'=>'Защита от дробящего урона','za4'=>'Защита от режущего урона','zm1'=>'Защита от магии огня','zm2'=>'Защита от магии воздуха','zm3'=>'Защита от магии воды','zm4'=>'Защита от магии земли','zm5'=>'Защита от магии Света','zm6'=>'Защита от магии Тьмы','zm7'=>'Защита от серой магии','magic_cast'=>'Дополнительный каст за ход','pza'=>'Понижение защиты от урона','pzm'=>'Понижение защиты от магии','pza1'=>'Понижение защиты от колющего урона','min_heal_proc'=>'Эффект лечения (%)','notravma'=>'Защита от травм','yron_min'=>'Минимальный урон','yron_max'=>'Максимальный урон','zaproc'=>'Защита от урона (%)','zmproc'=>'Защита от магии стихий (%)','zm2proc'=>'Защита от магии Воздуха (%)','pza2'=>'Понижение защиты от рубящего урона','pza3'=>'Понижение защиты от дробящего урона','pza4'=>'Понижение защиты от режущего урона','pzm1'=>'Понижение защиты от магии огня','pzm2'=>'Понижение защиты от магии воздуха','pzm3'=>'Понижение защиты от магии воды','pzm4'=>'Понижение защиты от магии земли','pzm5'=>'Понижение защиты от магии Света','pzm6'=>'Понижение защиты от магии Тьмы','pzm7'=>'Понижение защиты от серой магии','speedhp'=>'Регенерация здоровья (%)','speedmp'=>'Регенерация маны (%)','tya1'=>'Колющие атаки','tya2'=>'Рубящие атаки','tya3'=>'Дробящие атаки','tya4'=>'Режущие атаки','tym1'=>'Огненные атаки','mg2static_points'=>'Уровень заряда (Воздух)','tym2'=>'Электрические атаки','tym3'=>'Ледяные атаки','tym4'=>'Земляные атаки','hpProc'=>'Уровень жизни (%)','mpProc'=>'Уровень маны (%)','tym5'=>'Атаки Света','tym6'=>'Атаки Тьмы','tym7'=>'Серые атаки','min_use_mp'=>'Уменьшает расход маны','pog'=>'Поглощение урона','pog2'=>'Поглощение урона','pog2p'=>'Процент поглощение урона','pog2mp'=>'Цена поглощение урона','maxves'=>'Увеличивает рюкзак','bonusexp'=>'Увеличивает получаемый опыт','speeden'=>'Регенерация энергии (%)', - 'yza' => 'Уязвимость физическому урона (%)','yzm' => 'Уязвимость магии стихий (%)','yzma' => 'Уязвимость магии (%)' - ,'yza1' => 'Уязвимость колющему урона (%)','yza2' => 'Уязвимость рубящему урона (%)','yza3' => 'Уязвимость дробящему урона (%)','yza4' => 'Уязвимость режущему урона (%)' - ,'yzm1' => 'Уязвимость магии огня (%)','yzm2' => 'Уязвимость магии воздуха (%)','yzm3' => 'Уязвимость магии воды (%)','yzm4' => 'Уязвимость магии земли (%)','yzm5' => 'Уязвимость магии (%)','yzm6' => 'Уязвимость магии (%)','yzm7' => 'Уязвимость магии (%)','rep'=> 'Репутация Рыцаря' - ); - public static $items = array( - 'tr' => array('sex','align','lvl','s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','s11','a1','a2','a3','a4','a5','a6','a7','mg1','mg2','mg3','mg4','mg5','mg6','mg7','mall','m2all','aall','rep', 'align_bs'), - 'add' => array( - 'exp','enemy_am1','hod_minmana','yhod','noshock_voda', - 'yza','yzm','yzma','yza1','yza2','yza3','yza4','yzm1','yzm2','yzm3','yzm4','yzm5','yzm6','yzm7', - 'notuse_last_pr','yrn_mg_first','antishock','nopryh','speed_dungeon','naemnik','mg2static_points','yrnhealmpprocmg3','nousepriem','notactic','seeAllEff','100proboi1','pog2','pog2p','magic_cast','min_heal_proc','no_yv1','no_krit1','no_krit2','no_contr1','no_contr2','no_bl1','no_pr1','no_yv2','no_bl2','no_pr2','silver','pza','pza1','pza2','pza3','pza4','pzm','pzm1','pzm2','pzm3','pzm4','pzm5','pzm6','pzm7','yron_min','yron_max','notravma','min_zonb','min_zona','nokrit','pog','min_use_mp','za1proc','za2proc','za3proc','za4proc','zaproc','zmproc','zm1proc','zm2proc','zm3proc','zm4proc','shopSale','s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','s11','aall','a1','a2','a3','a4','a5','a6','a7','m2all','mall','mg1','mg2','mg3','mg4','mg5','mg6','mg7','hpAll','hpVinos','mpVinos','mpAll','enAll','hpProc','mpProc','m1','m2','m3','m4','m5','m6','m7','m8','m9','m14','m15','m16','m17','m18','m19','m20','pa1','pa2','pa3','pa4','pm1','pm2','pm3','pm4','pm5','pm6','pm7','za','za1','za2','za3','za4','zma','zm','zm1','zm2','zm3','zm4','zm5','zm6','zm7','mib1','mab1','mib2','mab2','mib3','mab3','mib4','mab4','speedhp','speedmp','m10','m11','m11a','zona','zonb','maxves','minAtack','maxAtack','bonusexp','speeden'), - 'sv' => array('pza','pza1','pza2','pza3','pza4','pzm','pzm1','pzm2','pzm3','pzm4','pzm5','pzm6','pzm7','notravma','min_zonb','min_zona','nokrit','pog','min_use_mp','za1proc','za2proc','za3proc','za4proc','zaproc','zmproc','zm1proc','zm2proc','zm3proc','zm4proc','shopSale','s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','s11','aall','a1','a2','a3','a4','a5','a6','a7','m2all','mall','mg1','mg2','mg3','mg4','mg5','mg6','mg7','hpAll','mpAll','enAll','m1','m2','m3','m4','m5','m6','m7','m8','m9','m14','m15','m16','m17','m18','m19','m20','pa1','pa2','pa3','pa4','pm1','pm2','pm3','pm4','pm5','pm6','pm7','min_use_mp','za','za1','za2','za3','za4','zma','zm','zm1','zm2','zm3','zm4','zm5','zm6','zm7','mib1','mab1','mib2','mab2','mib3','mab3','mib4','mab4','speedhp','speedmp','m10','m11','zona','zonb','maxves','minAtack','maxAtack','speeden') - ); - - //Подключаем пользователя - public static function connect() { - // - self::$data = \Core\Database::query( 'SELECT * FROM `users` WHERE `login` = :login ORDER BY `id` ASC LIMIT 1' , array( - 'login' => \Core\Utils::cookie('login') - ) , true ); - //Неверный пароль - if( self::$data['pass'] != \Core\Utils::cookie('pass') ) { - self::$data = false; - } - //Персонаж заблокирован - if( self::$data['banned'] > 0 ) { - self::$data = false; - } - //Подключаем статы - if( isset( self::$data['id'] ) ) { - self::$stats = \Core\Database::query( 'SELECT * FROM `stats` WHERE `id` = :uid LIMIT 1' , array( - 'uid' => self::$data['id'] - ) , true ); - } - } - - //Считаем вес персонажа - public static function ves( $uid ) { - $r = array('now' => 0,'max' => 0); - //Масса рюкзака - $r['now'] = \Core\Database::query( 'SELECT SUM(`b`.`massa`) AS `m` FROM `items_users` AS `a` LEFT JOIN `items_main`AS `b` ON `b`.`id` = `a`.`item_id` WHERE `a`.`uid` = :uid AND `a`.`delete` = 0 AND `a`.`inShop` = 0 AND `inOdet` = 0' , array( - 'uid' => $uid - ) , true ); - $r['now'] = 0 + $r['now']['m']; - // - $r['max'] = 0; - // - return $r; - } - - //Смотрим характеристики - public static function getStats( $uid ) { - $r = array( - 'st' => array( ), //Характеристики - 'sl' => array( ), //Заполненные слоты ( 0 id предмета , 1 тип предмета ) - 'ms' => array( 'now' => 0 , 'max ' => 0 , 'itm' => 0 ) //Масса - ); - // - $user = \Core\Database::query( 'SELECT * FROM `users` WHERE `id` = :uid LIMIT 1' , array( - 'uid' => $uid - ), true ); - // - if( isset($user['id']) ) { - // - $stats = \Core\Database::query( 'SELECT * FROM `stats` WHERE `id` = :uid LIMIT 1' , array( - 'uid' => $uid - ), true ); - // - //Базовые добавления - $r['st']['hpNow'] = $stats['hpNow']; - $r['st']['mpNow'] = $stats['mpNow']; - // - //Характеристики от предметов - $pl = \Core\Database::query( 'SELECT * FROM `items_users` WHERE `uid` = :uid AND `inOdet` > 0 AND `delete` = 0' , array( - 'uid' => $user['id'] - ), true, true); - $i = 0; - while( $i < count($pl) ) { - $r['st'] = self::plusStatsData( $r['st'] , $pl[$i]['data'] ); - $i++; - } - unset($pl,$i); - // - //Характеристики от эффектов - $pl = \Core\Database::query( 'SELECT * FROM `eff_users` WHERE `uid` = :uid AND `delete` = 0' , array( - 'uid' => $user['id'] - ), true, true); - $i = 0; - while( $i < count($pl) ) { - $r['st'] = self::plusStatsData( $r['st'] , $pl[$i]['data'] ); - $i++; - } - unset($pl,$i); - // - //Характеристики от статов - $r['st']['hpAll'] += $r['st']['s4'] * 6; //Здоровье от выносливости - $r['st']['mpAll'] += $r['st']['s6'] * 12; //Мана от мудрости - $r['st']['m1'] += $r['st']['s3'] * 5; //Интуиция дает мф. крита - $r['st']['m2'] += $r['st']['s3'] * 5; //Интуиция дает мф. против крита - $r['st']['m4'] += $r['st']['s2'] * 7; //Интуиция дает мф. уворота - $r['st']['m5'] += $r['st']['s2'] * 7; //Интуиция дает мф. против уворота - $r['st']['za'] += $r['st']['s4'] * 1.5; //Выносливость дает защиту от урона - $r['st']['zm'] += $r['st']['s4'] * 1.5; //Выносливость дает защиту от магии - // - //Бонусы комплектов - - // - //Бонусы статов - - // - } - return $r; - } - - //Добавление статов - public static function plusStatsData( $st , $data ) { - $data = \Core\Utils::lookStats( $data ); - $i = 0; - while( $i < count(self::$items['add']) ) { - if( $data['add_' . self::$items['add'][$i]] != 0 ) { - $st[self::$items['add'][$i]] += $data['add_' . self::$items['add'][$i]]; - } - $i++; - } - return $st; - } - - //Подключаем локацию в которой находится пользователь - public static function room() { - if( isset(self::$data['id']) ) { - self::$room = \Core\Database::query( 'SELECT * FROM `room` WHERE `id` = :id LIMIT 1' , array( - 'id' => self::$data['room'] - ) , true ); - } - } - - public static function redirect($url) { - header('Location: ' . $url); - } - - public static function ErrorPage404() { - die('Страница не найдена'); - } - - public static function ErrorClass404($name) { - die('Расширение '. $name .' не найдено'); - } -} - -?> \ No newline at end of file diff --git a/core1/app/core/utils.php b/core1/app/core/utils.php deleted file mode 100644 index 15982bcc..00000000 --- a/core1/app/core/utils.php +++ /dev/null @@ -1,376 +0,0 @@ - $max ) { - $r = false; - }else{ - //Допустимые символы - if( $sym != false ) { - $i = 0; - $new_val = mb_strtolower($val,'UTF-8'); - while( $i < mb_strlen($val,'UTF-8') ) { - $j = 0; - $k = 0; - $k2 = 0; - while( $j < mb_strlen($sym,'UTF-8') ) { - if( mb_strtolower($val[$i],'UTF-8') == mb_strtolower($sym[$j],'UTF-8') ) { - $k++; - }else{ - if( isset($data['noXsym']) ) { - //Нельзя использовать более X символов подряд - $l = 0; - $notxt = ''; - while( $l < $data['noXsym'] ) { - $notxt .= mb_strtolower($sym[$j],'UTF-8'); - $l++; - } - if( mb_strpos($new_val,$notxt,NULL,'UTF-8') !== false ) { - $k2++; - } - } - } - $j++; - } - if( $k == 0 || $k2 > 0 ) { - $i = mb_strlen($val,'UTF-8'); - $r = false; - } - $i++; - } - } - //Не допустимые символы - if( $nosym != false ) { - $i = 0; - $new_val = ''; - while( $i < count($nosym) ) { - if( mb_strpos(mb_strtolower($val,'UTF-8'),mb_strtolower($nosym[$i],'UTF-8'),NULL,'UTF-8') !== false ) { - $i = count($nosym); - $r = false; - } - $i++; - } - } - //не допустимое начало - if( $nostart != false ) { - $i = 0; - $new_val = ''; - while( $i < count($nostart) ) { - if( mb_substr( $val, 0, mb_strlen($nostart[$i],'UTF-8'),'UTF-8') == $nostart[$i] ) { - $i = count($nostart); - $r = false; - } - $i++; - } - } - //не допустимый конец - if( $noend != false ) { - $i = 0; - $new_val = ''; - while( $i < count($noend) ) { - if( mb_substr( $val, ( mb_strlen($val,'UTF-8') - mb_strlen($noend[$i],'UTF-8') ) , 0 , 'UTF-8') == $noend[$i] ) { - $i = count($noend); - $r = false; - } - $i++; - } - } - } - return $r; - } - - /* - @ Метод "завершения" сессии - */ - public function ses_end() { - if ( session_id() ) { - // Если есть активная сессия, удаляем куки сессии, - setcookie(session_name(), session_id(), time()-60*60*24); - // и уничтожаем сессию - session_unset(); - session_destroy(); - } - } - - /* - @ Метод определения типа строка, цифры, эл.почта - */ - public function takeType( $val ) { - - if( preg_match( "|^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $val ) ) { - //Эл.почта - return 2; - }else{ - preg_match_all( '([0-9])', $val, $matches ); - $res = implode( NULL, $matches[0] ); - if( mb_strlen( $val, 'UTF-8' ) > mb_strlen( $res, 'UTF-8' ) ) { - //Строка - return 1; - }else{ - //Число - return 3; - } - } - } - - /* - @ Метод проверки правильности паролей - */ - public function testPass( $psw1, $psw2 ) { - if( $psw1 == $psw2 ) { - return true; - }else{ - return false; - } - } - - /* - @ Метод генирации ключа авторизации - */ - public function createAuth( $par ) { - if( !isset( $par['rand'] ) ) { - $par['rand'] = rand(10000000,90000000); - } - $r = $par['rand'] . md5( $par['ip'] . '+' . $par['id'] . '+' . $par['pass'] . '+' . $par['rand'] ); - return $r; - } - - /* - @ Метод проверки ключа авторизации - */ - public function testAuth( $auth, $par ) { - $par['rand'] = substr( $auth, 0, 8 ); - if( $auth == self::createAuth( $par ) ) { - return true; - }else{ - return false; - } - } - - /* - @ Метод вывода JSON данных - */ - public function JSON_Headers() { - header('Expires: Mon, 26 Jul 1970 05:00:00 GMT'); - header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); - header('Cache-Control: no-store, no-cache, must-revalidate'); - header('Cache-Control: post-check=0, pre-check=0', false); - header('Pragma: no-cache'); - header('Content-Type: application/json; charset=utf-8'); - return true; - } - - /* - @ Метод приобразования обьекта в JSON - */ - public function jsonencode( $val ) { - array_walk_recursive( $val, function( &$value, $key ) { - $value = iconv( "CP1251", "UTF-8", $value ); - }); - return json_encode( $val ); - //return json_encode( $val ); - //return self::json_fix_cyr( json_encode( $val ) ); - } - - /* - @ Метод приобразования JSON в обьект - */ - public function jsondecode( $val ) { - return json_decode( $val ); - } - - /* - @ Метод фикса кириллических символов - */ - public function json_fix_cyr($json_str) { - $cyr_chars = array ( - '\u0430' => 'а', '\u0410' => 'А', - '\u0431' => 'б', '\u0411' => 'Б', - '\u0432' => 'в', '\u0412' => 'В', - '\u0433' => 'г', '\u0413' => 'Г', - '\u0434' => 'д', '\u0414' => 'Д', - '\u0435' => 'е', '\u0415' => 'Е', - '\u0451' => 'ё', '\u0401' => 'Ё', - '\u0436' => 'ж', '\u0416' => 'Ж', - '\u0437' => 'з', '\u0417' => 'З', - '\u0438' => 'и', '\u0418' => 'И', - '\u0439' => 'й', '\u0419' => 'Й', - '\u043a' => 'к', '\u041a' => 'К', - '\u043b' => 'л', '\u041b' => 'Л', - '\u043c' => 'м', '\u041c' => 'М', - '\u043d' => 'н', '\u041d' => 'Н', - '\u043e' => 'о', '\u041e' => 'О', - '\u043f' => 'п', '\u041f' => 'П', - '\u0440' => 'р', '\u0420' => 'Р', - '\u0441' => 'с', '\u0421' => 'С', - '\u0442' => 'т', '\u0422' => 'Т', - '\u0443' => 'у', '\u0423' => 'У', - '\u0444' => 'ф', '\u0424' => 'Ф', - '\u0445' => 'х', '\u0425' => 'Х', - '\u0446' => 'ц', '\u0426' => 'Ц', - '\u0447' => 'ч', '\u0427' => 'Ч', - '\u0448' => 'ш', '\u0428' => 'Ш', - '\u0449' => 'щ', '\u0429' => 'Щ', - '\u044a' => 'ъ', '\u042a' => 'Ъ', - '\u044b' => 'ы', '\u042b' => 'Ы', - '\u044c' => 'ь', '\u042c' => 'Ь', - '\u044d' => 'э', '\u042d' => 'Э', - '\u044e' => 'ю', '\u042e' => 'Ю', - '\u044f' => 'я', '\u042f' => 'Я', - - '\r' => '', - '\n' => '
', - '\t' => '' - ); - foreach ($cyr_chars as $cyr_char_key => $cyr_char) { - $json_str = str_replace($cyr_char_key, $cyr_char, $json_str); - } - return $json_str; - } - - public static function timeOut($ttm) - { - $out = ''; - $time_still = $ttm; - $tmp = floor($time_still/2592000); - $id=0; - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." мес. ";} - $time_still = $time_still-$tmp*2592000; - } - $tmp = floor($time_still/86400); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." дн. ";} - $time_still = $time_still-$tmp*86400; - } - $tmp = floor($time_still/3600); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." ч. ";} - $time_still = $time_still-$tmp*3600; - } - $tmp = floor($time_still/60); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." мин. ";} - } - if($out=='') - { - if($time_still<0) - { - $time_still = 0; - } - $out = $time_still.' сек.'; - } - return $out; - } - -} - -?> \ No newline at end of file diff --git a/core1/app/core/view.php b/core1/app/core/view.php deleted file mode 100644 index ee8df35c..00000000 --- a/core1/app/core/view.php +++ /dev/null @@ -1,16 +0,0 @@ - false)); - $template = $template . '.html'; - $template = $twig->loadTemplate($template); - return $template->render($data); - } - -} - -?> \ No newline at end of file diff --git a/core1/app/html/.htaccess b/core1/app/html/.htaccess deleted file mode 100644 index 3418e55a..00000000 --- a/core1/app/html/.htaccess +++ /dev/null @@ -1 +0,0 @@ -deny from all \ No newline at end of file diff --git a/core1/app/html/admin.html b/core1/app/html/admin.html deleted file mode 100644 index 6c22a7dc..00000000 --- a/core1/app/html/admin.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - -{{ title }} - - -{% if user.admin > 0 %} - -Персонаж: {{ user.login }} (Владелец ресурса)
-
- -
- -{% else %} -Доступ разрешен только владельцам ресурса. -{% endif %} - - \ No newline at end of file diff --git a/core1/app/html/auction.html b/core1/app/html/auction.html deleted file mode 100644 index d7112211..00000000 --- a/core1/app/html/auction.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - -{{ title }} - - - -
-
-
-
- -
-
-
-
-
- -
-
- -
- - - \ No newline at end of file diff --git a/core1/app/html/comission.html b/core1/app/html/comission.html deleted file mode 100644 index 21083fa9..00000000 --- a/core1/app/html/comission.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - -{{ title }} - - - -
-
-
- -
-
-
-
-
- -
-
- -
- - - \ No newline at end of file diff --git a/core1/app/html/debuger.html b/core1/app/html/debuger.html deleted file mode 100644 index f1995182..00000000 --- a/core1/app/html/debuger.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - -{{ title }} - - - -Персонаж: {{ user.login }}
-
- - - \ No newline at end of file diff --git a/core1/app/init.php b/core1/app/init.php deleted file mode 100644 index a4df06ce..00000000 --- a/core1/app/init.php +++ /dev/null @@ -1,13 +0,0 @@ - \ No newline at end of file diff --git a/core1/app/logic/.htaccess b/core1/app/logic/.htaccess deleted file mode 100644 index 3418e55a..00000000 --- a/core1/app/logic/.htaccess +++ /dev/null @@ -1 +0,0 @@ -deny from all \ No newline at end of file diff --git a/core1/app/logic/admin.php b/core1/app/logic/admin.php deleted file mode 100644 index f058e3b6..00000000 --- a/core1/app/logic/admin.php +++ /dev/null @@ -1,66 +0,0 @@ -главную страницу.'; - }elseif( stristr($_SERVER['HTTP_ACCEPT'],'application/json') == true ) { - echo self::getJSON(); - }else{ - echo self::getHTML(); - } - } - - /* - @ Метод выводящий HTML-контент на сторону пользователя - @ Через конкретный шаблонизатор - */ - public static function getHTML() { - //PC версия главной страницы - // - return view::generateTpl( 'admin', array( - 'title' => COPY . ' :: Панель админа', - - //Передаем данные пакетов - 'user' => \Core\User::$data, - 'stats' => \Core\User::$stats, - 'room' => \Core\User::$room, - - 'OK' => OK, - 'copy' => COPY, - 'rights' => RIGHTS, - - 'ver' => '0.0.1' - ) ); - } - - /* - @ Метод выводящий JSON-контент на сторону пользователя - @ Информация берется из переменной self::$JSON - */ - public static function getJSON() { - $r = array(); - - return \Core\Utils::jsonencode( $r ); - } - -} - -?> \ No newline at end of file diff --git a/core1/app/logic/auction.php b/core1/app/logic/auction.php deleted file mode 100644 index a87e7633..00000000 --- a/core1/app/logic/auction.php +++ /dev/null @@ -1,551 +0,0 @@ -главную страницу.'; - }elseif( \Core\User::$data['battle'] > 0 ) { - header('location:main.php?inv'); - }elseif( \Core\User::$room['name'] != 'Аукцион' ) { - echo 'Вы находитесь в другой локации.'; - }elseif( stristr($_SERVER['HTTP_ACCEPT'],'application/json') == true ) { - \Core\User::$stats = \Core\User::getStats( \Core\User::$data['id'] ); - echo self::getJSON(); - }else{ - \Core\User::$stats = \Core\User::getStats( \Core\User::$data['id'] ); - echo self::getHTML(); - } - } - - /* - @ Метод выводящий HTML-контент на сторону пользователя - @ Через конкретный шаблонизатор - */ - public static function getHTML() { - //PC версия главной страницы - return view::generateTpl( 'auction', array( - 'title' => COPY . ' :: Аукцион', - - //Передаем данные пакетов - 'user' => \Core\User::$data, - 'stats' => \Core\User::$stats, - 'room' => \Core\User::$room, - - 'OK' => OK, - 'copy' => COPY, - 'rights' => RIGHTS, - - 'ver' => '1.2.5' - ) ); - } - - /* - @ Метод выводящий JSON-контент на сторону пользователя - @ Информация берется из переменной self::$JSON - */ - public static function getJSON() { - $r = array( 'type' => $_GET['type'],'item_data' => array( 'i' => 0 , 'g' => array() ) ); - - //Информация - $r['money'] = 0+\Core\User::$data['money']; - $r['massaNow'] = 0+\Core\User::$data['massaNow']; - $r['massaMax'] = 0+\Core\User::$data['massaNow']; - $r['timeGo'] = 0+\Core\User::$stats['timeGo']; - $r['timeGoL'] = 0+\Core\User::$stats['timeGoL']; - $r['timeNow'] = OK; - // - - if(isset($_GET['buy_item']) && \Core\User::$data['invBlock'] < OK && \Core\User::$data['allLock'] < OK) { - //Меняем ставку - $itm_auc = \Core\Database::query( 'SELECT * FROM `items_auc` WHERE `id` = :item_id AND `time_end` = 0 AND `time` > :time LIMIT 1' , array( - 'item_id' => (int)$_GET['buy_item'], - 'time' => OK - 86400 - ) , true ); - if(isset($itm_auc['id'])) { - $price = round($_GET['kr'],2); - $price_min = round(($itm_auc['price'] + $itm_auc['price']*0.01),2); - $price_max = round(($itm_auc['price'] * 2),2); - if( $itm_auc['uid'] == \Core\User::$data['id'] ) { - $r['error'] = 6; - }elseif( $itm_auc['user_buy'] != \Core\User::$data['id'] ) { - if( $price > \Core\User::$data['money'] ) { - $r['error'] = 5; //У вас недостаточно денег - }elseif( $price - $price_min >= 0 ) { - if( $price - $price_max < 1 ) { - /* - Забираем кр. , если были ставки до этого возвращаем кр. на почту персонажу который делал ставку - */ - if( $itm_auc['user_buy'] > 0 ) { - //Выдаем кр. обратно прошлому игроку который сделал ставку - $user = \Core\Database::query( 'SELECT `id`,`login` FROM `users` WHERE `id` = :uid LIMIT 1' , array( - 'uid' => $itm_auc['user_buy'] - ) , true ); - if( isset($user['id']) ) { - \Core\Chat::send_system( $user['login'] , 'Персонаж ' . \Core\User::$data['login'] . ' перебил вашу ставку на Аукционе, предмет "'.$itm_auc['name'].'". Сумма вашей ставки отправлена к вам на почту.' ); - // - $tmgo = 0; - \Core\Database::query( 'INSERT INTO `items_users` (`item_id`,`1price`,`uid`,`delete`,`lastUPD`) VALUES ( - 1220 , :money , :uid , 0 , :time - )' , array( - 'uid' => '-51' . $user['id'], - 'money' => $itm_auc['price'], - 'time' => OK + $tmgo * 60 - )); - $txt = 'Деньги от '.$itm_auc['login'].': '.$itm_auc['price'].' кр. Прибытие: '.date('d.m.Y H:i',(OK + $tmgo*60)).''; - \Core\Database::query( 'INSERT INTO `post` (`uid`,`sender_id`,`time`,`money`,`text`) VALUES - ( :user_to , :user_from , :time , :money , :txt )' , array( - 'user_from' => $itm_auc['uid'], - 'user_to' => $user['id'], - 'time' => OK, - 'txt' => $txt, - 'money' => $itm_auc['price'] - )); - $txt = 'Деньги к '.$user['login'].': '.$itm_auc['price'].' кр. Прибытие: '.date('d.m.Y H:i',(OK + $tmgo*60)).''; - \Core\Database::query( 'INSERT INTO `post` (`uid`,`sender_id`,`time`,`money`,`text`) VALUES - ( :user_from , :user_to , :time , :money , :txt )' , array( - 'user_from' => $itm_auc['uid'], - 'user_to' => $user['id'], - 'time' => OK, - 'txt' => $txt, - 'money' => $tim_auc['price'] - )); - // - } - } - - //Забираем деньги у текущего игрока и записываем в тело аукциона - \Core\User::$data['money'] -= $price; - \Core\Database::query( 'UPDATE `users` SET `money` = :money WHERE `id` = :uid LIMIT 1', array( - 'uid' => \Core\User::$data['id'], - 'money' => \Core\User::$data['money'] - ) ); - // - $itm_auc['price'] = $price; - $itm_auc['login_buy'] = \Core\User::$data['login']; - $itm_auc['user_buy'] = \Core\User::$data['id']; - $itm_auc['time'] += 15*60; //+15 мин к аукциону - // - \Core\Database::query( 'UPDATE `items_auc` SET `price` = :price , `time` = :time , `login_buy` = :login_buy , `user_buy` = :user_buy WHERE `id` = :id LIMIT 1', array( - 'id' => $itm_auc['id'], - 'price' => $itm_auc['price'], - 'time' => $itm_auc['time'], - 'login_buy' => $itm_auc['login_buy'], - 'user_buy' => $itm_auc['user_buy'] - ) ); - // - // - $r['info'] = true; - // - }else{ - $r['error'] = 4; //Превышена максимальная ставка в 2 раза от текущей ставки - } - }else{ - $r['error'] = 3; //Минимальная ставка - 1% от текущей ставки - } - }else{ - $r['error'] = 2; - } - }else{ - $r['error'] = 1; - } - }elseif(isset($_GET['add_item']) && \Core\User::$data['invBlock'] < OK && \Core\User::$data['allLock'] < OK) { - //Добавляем предмет на аукцион (от игрока в аукцион) - $itm_user = \Core\Database::query( 'SELECT `a`.* , `b`.* , `a`.`id` AS `uiid` FROM `items_users` AS `a` LEFT JOIN `items_main` AS `b` ON `a`.`item_id` = `b`.`id` WHERE `a`.`inOdet` = 0 AND `a`.`uid` = :uid AND `a`.`id` = :item_id AND `a`.`delete` = 0 AND `a`.`gift` = "" AND `a`.`data` NOT LIKE "%sudba=%" AND `a`.`data` NOT LIKE "%zazuby=%" AND `a`.`data` NOT LIKE "%|notransfer=%" AND `a`.`inTransfer` = 0 AND `a`.`inShop` = 0 LIMIT 1' , array( - 'uid' => \Core\User::$data['id'], - 'item_id' => (int)$_GET['add_item'] - ) , true ); - if( isset($itm_user['id']) ) { - $price = round($_GET['price'],2); - // - if( \Core\User::$stats['st']['silver'] >= 4 ) { - $price_com = round(($price/100*2.5),2); - }else{ - $price_com = round(($price/100*10),2); - } - // - if( $price < 1 ) { - $r['error'] = 2; - }elseif( $price > 1000000 ) { - $r['error'] = 3; - }elseif( $price_com > \Core\User::$data['money'] ) { - $r['error'] = 4; - }elseif( \Core\User::$data['align'] == 2 ) { - $r['error'] = 5; - }else{ - // - $count = \Core\Database::query( 'SELECT COUNT(*) AS `i` FROM `items_users` WHERE `uid` = :uid AND `item_id` = :item_id AND ( ( `inGroup` > 0 AND `inGroup` = :group ) OR ( `inGroup` = 0 AND `id` = :id ) ) AND `delete` = 0 AND `inShop` = 0 AND `inTransfer` = 0 LIMIT 1', array( - 'uid' => \Core\User::$data['id'], - 'id' => $itm_user['uiid'], - 'item_id' => $itm_user['id'], - 'group' => $itm_user['inGroup'] - ) , true ); - $count = $count[0]; - // - $upd = \Core\Database::query( 'UPDATE `items_users` SET `uid` = 0, `inGroup` = :id WHERE `uid` = :uid AND `item_id` = :item_id AND ( ( `inGroup` > 0 AND `inGroup` = :group ) OR ( `inGroup` = 0 AND `id` = :id ) ) AND `delete` = 0 AND `inShop` = 0 AND `inTransfer` = 0' , - array( - 'uid' => \Core\User::$data['id'], - 'id' => $itm_user['uiid'], - 'item_id' => $itm_user['id'], - 'group' => $itm_user['inGroup'] - ) - ); - // - if($upd == true) { - $itm_user_data = \Core\Item::lookStats($itm_user['data']); - // - \Core\Database::query( 'INSERT INTO `items_auc` - ( - `login`,`uid`,`item_id`,`items_id`,`time`,`time_end`,`img`,`name`,`level`,`x`,`price_start`,`price`,`massa`,`iznosNOW`,`iznosMAX`,`user_buy`,`type`,`delete` - ) VALUES ( - :login , :uid , :item_id , :items_id , :time , 0 , :img , :name , :level , :x , :price , :price , :massa , :iznosNOW , :iznosMAX , 0 , :type , 0 - )', array( - 'login' => \Core\User::$data['login'], - 'uid' => \Core\User::$data['id'], - 'item_id' => $itm_user['uiid'], - 'items_id' => $itm_user['id'], - 'time' => OK, - 'time_end' => OK + 86400, - 'img' => $itm_user['img'], - 'name' => $itm_user['name'], - 'level' => $itm_user_data['tr_lvl'], - 'x' => (0+$count), - 'price' => $price, - 'massa' => $itm_user['massa'], - 'iznosNOW' => $itm_user['iznosNOW'], - 'iznosMAX' => $itm_user['iznosMAX'], - 'type' => $itm_user['type'] - )); - // - $r['info'] = array( - 'itm_name' => $itm_user['name'], - 'x' => $count, - 'price' => $price, - 'id' => $itm_user['uiid'] - ); - // - }else{ - $r['error'] = 6; - } - // - } - }else{ - $r['error'] = 1; - } - }elseif(isset($_GET['option_item']) && ($_GET['option_item'] == 1 || $_GET['option_item'] == 2 || $_GET['option_item'] == 3 || $_GET['option_item'] == 4 || $_GET['option_item'] == 5)) { - //Просматриваем предметы которые находятся в аукционе и в инвентаре игрока - $id = (int)$_GET['option_item']; - if( $id == 5 ) { - //Торги (уникальные вещи) - $r['item_data']['x'] = 0; - $pla = \Core\Database::query( 'SELECT * FROM `items_auc` WHERE `time_end` = 0 AND `uniq` = 1 ORDER BY `id` DESC' , array( - - ) , true , true ); - // - $pages_all = \Core\Database::query( 'SELECT COUNT(*) AS `i` FROM `items_auc` WHERE `time_end` = 0 AND `uniq` = 1 LIMIT 1', array( - - ) , true ); - // - $pages_all = $pages_all['i']; - $pages_all = ceil($pages_all/20); //20 страниц - // - $page_now = 0 + round((int)$_GET['page']); - if( $page_now < 1 ) { - $page_now = 1; - }elseif( $page_now > $pages_all ) { - $page_now = $pages_all; - } - // - $r['toppages'] = $pages_all; - $r['page'] = $page_now; - // - $i = 0; - $j = 0; - while( $i < count($pla) ) { - // - if( $i < ($page_now) * 20 && $i >= ($page_now-1) * 20 ) { - $pl = \Core\Database::query( 'SELECT `a`.* , `b`.* , `a`.`id` AS `uiid` FROM `items_users` AS `a` LEFT JOIN `items_main` AS `b` ON `a`.`item_id` = `b`.`id` WHERE `a`.`id` = :item_id LIMIT 1' , array( - 'item_id' => $pla[$i]['item_id'] - ) , true ); - // - $r['item_data'][$j] = \Core\Item::infoItem($pl); - $r['item_data'][$j]['iid'] = $pl['item_id']; - $r['item_data'][$j]['user_ow'] = $pla[$i]['login']; - $r['item_data'][$j]['item_id'] = $pla[$i]['items_id']; - $r['item_data'][$j]['name'] = $pl['name']; - $r['item_data'][$j]['prc'] = $pla[$i]['price']; - $r['item_data'][$j]['prc2'] = round(($pla[$i]['price']+$pla[$i]['price']*0.01),2); - $r['item_data'][$j]['cid'] = $pl['id']; - $r['item_data'][$j]['aid'] = $pla[$i]['id']; - // - $r['item_data'][$j]['buy'] = $pla[$i]['login_buy']; - //$r['item_data'][$j]['buy'] = $pl['login_buy']; - // - $r['item_data'][$j]['x'] = $count; - $r['item_data'][$j]['iznosNOW'] = $pl['iznosNOW']; - $r['item_data'][$j]['iznosMAX'] = $pl['iznosMAX']; - $r['item_data'][$j]['massa'] = $pl['massa']; - $r['item_data'][$j]['time'] = \Core\Utils::timeOut($pla[$i]['time']+86400-time()); - $j++; - // - $r['item_data']['x']++; - $r['item_data']['i']++; - } - $i++; - } - // - }elseif( $id == 1 ) { - //Торги - $r['item_data']['x'] = 0; - $pla = \Core\Database::query( 'SELECT * FROM `items_auc` WHERE `time_end` = 0 AND `uniq` = 0 ORDER BY `id` DESC' , array( - - ) , true , true ); - // - $pages_all = \Core\Database::query( 'SELECT COUNT(*) AS `i` FROM `items_auc` WHERE `time_end` = 0 AND `uniq` = 0 LIMIT 1', array( - - ) , true ); - // - $pages_all = $pages_all['i']; - $pages_all = ceil($pages_all/20); //20 страниц - // - $page_now = 0 + round((int)$_GET['page']); - if( $page_now < 1 ) { - $page_now = 1; - }elseif( $page_now > $pages_all ) { - $page_now = $pages_all; - } - // - $r['toppages'] = $pages_all; - $r['page'] = $page_now; - // - $i = 0; - $j = 0; - while( $i < count($pla) ) { - // - if( $i < ($page_now) * 20 && $i >= ($page_now-1) * 20 ) { - $pl = \Core\Database::query( 'SELECT `a`.* , `b`.* , `a`.`id` AS `uiid` FROM `items_users` AS `a` LEFT JOIN `items_main` AS `b` ON `a`.`item_id` = `b`.`id` WHERE `a`.`id` = :item_id LIMIT 1' , array( - 'item_id' => $pla[$i]['item_id'] - ) , true ); - // - $r['item_data'][$j] = \Core\Item::infoItem($pl); - $r['item_data'][$j]['iid'] = $pl['item_id']; - $r['item_data'][$j]['user_ow'] = $pla[$i]['login']; - $r['item_data'][$j]['item_id'] = $pla[$i]['items_id']; - $r['item_data'][$j]['name'] = $pl['name']; - $r['item_data'][$j]['prc'] = $pla[$i]['price']; - $r['item_data'][$j]['prc2'] = round(($pla[$i]['price']+$pla[$i]['price']*0.01),2); - $r['item_data'][$j]['cid'] = $pl['id']; - $r['item_data'][$j]['aid'] = $pla[$i]['id']; - // - $r['item_data'][$j]['buy'] = $pla[$i]['login_buy']; - //$r['item_data'][$j]['buy'] = $pl['login_buy']; - // - $r['item_data'][$j]['x'] = $count; - $r['item_data'][$j]['iznosNOW'] = $pl['iznosNOW']; - $r['item_data'][$j]['iznosMAX'] = $pl['iznosMAX']; - $r['item_data'][$j]['massa'] = $pl['massa']; - $r['item_data'][$j]['time'] = \Core\Utils::timeOut($pla[$i]['time']+86400-time()); - $j++; - // - $r['item_data']['x']++; - $r['item_data']['i']++; - } - $i++; - } - // - }elseif( $id == 2 ) { - //Ставки - $r['item_data']['x'] = 0; - $pla = \Core\Database::query( 'SELECT * FROM `items_auc` WHERE `time_end` = 0 AND `user_buy` = :uid ORDER BY `id` DESC' , array( - 'uid' => \Core\User::$data['id'] - ) , true , true ); - // - $pages_all = \Core\Database::query( 'SELECT COUNT(*) AS `i` FROM `items_auc` WHERE `time_end` = 0 AND `user_buy` = :uid LIMIT 1', array( - 'uid' => \Core\User::$data['id'] - ) , true ); - // - $pages_all = $pages_all['i']; - $pages_all = ceil($pages_all/20); //20 страниц - // - $page_now = 0 + round((int)$_GET['page']); - if( $page_now < 1 ) { - $page_now = 1; - }elseif( $page_now > $pages_all ) { - $page_now = $pages_all; - } - // - $r['toppages'] = $pages_all; - $r['page'] = $page_now; - // - $i = 0; - $j = 0; - while( $i < count($pla) ) { - // - if( $i < ($page_now) * 20 && $i >= ($page_now-1) * 20 ) { - $pl = \Core\Database::query( 'SELECT `a`.* , `b`.* , `a`.`id` AS `uiid` FROM `items_users` AS `a` LEFT JOIN `items_main` AS `b` ON `a`.`item_id` = `b`.`id` WHERE `a`.`id` = :item_id LIMIT 1' , array( - 'item_id' => $pla[$i]['item_id'] - ) , true ); - // - $r['item_data'][$j] = \Core\Item::infoItem($pl); - $r['item_data'][$j]['iid'] = $pl['item_id']; - $r['item_data'][$j]['user_ow'] = $pla[$i]['login']; - $r['item_data'][$j]['item_id'] = $pla[$i]['items_id']; - $r['item_data'][$j]['name'] = $pl['name']; - $r['item_data'][$j]['prc'] = $pla[$i]['price']; - $r['item_data'][$j]['prc2'] = round(($pla[$i]['price']+$pla[$i]['price']*0.01),2); - $r['item_data'][$j]['cid'] = $pl['id']; - $r['item_data'][$j]['aid'] = $pla[$i]['id']; - // - $r['item_data'][$j]['buy'] = $pla[$i]['login_buy']; - //$r['item_data'][$j]['buy'] = $pl['login_buy']; - // - $r['item_data'][$j]['x'] = $count; - $r['item_data'][$j]['iznosNOW'] = $pl['iznosNOW']; - $r['item_data'][$j]['iznosMAX'] = $pl['iznosMAX']; - $r['item_data'][$j]['massa'] = $pl['massa']; - $r['item_data'][$j]['time'] = \Core\Utils::timeOut($pla[$i]['time']+86400-time()); - $j++; - // - $r['item_data']['x']++; - $r['item_data']['i']++; - } - $i++; - } - // - }elseif( $id == 3 ) { - //Ваши предметы (уже на торгах) - $r['item_data']['x'] = 0; - $pla = \Core\Database::query( 'SELECT * FROM `items_auc` WHERE `uid` = :uid AND `time_end` = 0 ORDER BY `id` DESC' , array( - 'uid' => \Core\User::$data['id'] - ) , true , true ); - // - $pages_all = \Core\Database::query( 'SELECT COUNT(*) AS `i` FROM `items_auc` WHERE `uid` = :uid AND `time_end` = 0 LIMIT 1', array( - 'uid' => \Core\User::$data['id'] - ) , true ); - // - $pages_all = $pages_all['i']; - $pages_all = ceil($pages_all/20); //20 страниц - // - $page_now = 0 + round((int)$_GET['page']); - if( $page_now < 1 ) { - $page_now = 1; - }elseif( $page_now > $pages_all ) { - $page_now = $pages_all; - } - // - $r['toppages'] = $pages_all; - $r['page'] = $page_now; - // - $i = 0; - $j = 0; - while( $i < count($pla) ) { - // - if( $i < ($page_now) * 20 && $i >= ($page_now-1) * 20 ) { - $pl = \Core\Database::query( 'SELECT `a`.* , `b`.* , `a`.`id` AS `uiid` FROM `items_users` AS `a` LEFT JOIN `items_main` AS `b` ON `a`.`item_id` = `b`.`id` WHERE `a`.`id` = :item_id LIMIT 1' , array( - 'item_id' => $pla[$i]['item_id'] - ) , true ); - // - $r['item_data'][$j] = \Core\Item::infoItem($pl); - $r['item_data'][$j]['iid'] = $pl['item_id']; - $r['item_data'][$j]['item_id'] = $pla[$i]['items_id']; - $r['item_data'][$j]['name'] = $pl['name']; - $r['item_data'][$j]['prc'] = $pla[$i]['price']; - $r['item_data'][$j]['cid'] = $pl['id']; - // - $r['item_data'][$j]['buy'] = $pla[$i]['login_buy']; - //$r['item_data'][$j]['buy'] = $pl['login_buy']; - // - $r['item_data'][$j]['x'] = $count; - $r['item_data'][$j]['iznosNOW'] = $pl['iznosNOW']; - $r['item_data'][$j]['iznosMAX'] = $pl['iznosMAX']; - $r['item_data'][$j]['massa'] = $pl['massa']; - $r['item_data'][$j]['time'] = \Core\Utils::timeOut($pla[$i]['time']+86400-time()); - $j++; - // - $r['item_data']['x']++; - $r['item_data']['i']++; - } - $i++; - } - // - }elseif( $id == 4 ) { - //Выставить предметы на торги - $r['item_data']['x'] = 0; - $pl = \Core\Database::query( 'SELECT `a`.* , `b`.* , `a`.`id` AS `uiid` FROM `items_users` AS `a` LEFT JOIN `items_main` AS `b` ON `a`.`item_id` = `b`.`id` WHERE `a`.`inOdet` = 0 AND `a`.`uid` = :uid AND `a`.`delete` = 0 AND `a`.`gift` = "" AND `a`.`data` NOT LIKE "%sudba=%" AND `a`.`data` NOT LIKE "%zazuby=%" AND `a`.`data` NOT LIKE "%|notransfer=%" AND `a`.`inTransfer` = 0 AND `a`.`inShop` = 0 ORDER BY `a`.`lastUPD` DESC' , array( - 'uid' => \Core\User::$data['id'] - ) , true , true ); - // - $pages_all = \Core\Database::query( 'SELECT COUNT(*) AS `i` FROM `items_users` WHERE `inOdet` = 0 AND `uid` = :uid AND `delete` = 0 AND `inGroup` = 0 AND `inShop` = 0 AND `inTransfer` = 0 AND `gift` = "" AND `data` NOT LIKE "%|zazuby=%" AND `data` NOT LIKE "%|notransfer=%" AND `data` NOT LIKE "%|sudba=%" LIMIT 1', array( - 'uid' => \Core\User::$data['id'] - ) , true ); - $pages_group = \Core\Database::query( 'SELECT COUNT(*) AS `i` FROM `items_users` WHERE `inOdet` = 0 AND `uid` = :uid AND `delete` = 0 AND `inGroup` > 0 AND `inShop` = 0 AND `inTransfer` = 0 AND `gift` = "" AND `data` NOT LIKE "%|zazuby=%" AND `data` NOT LIKE "%|notransfer=%" AND `data` NOT LIKE "%|sudba=%" GROUP BY `inGroup` , `item_id` LIMIT 1', array( - 'uid' => \Core\User::$data['id'] - ) , true ); - // - $pages_all = $pages_all['i']; - $pages_group = $pages_group['i']; - // - $pages_all += $pages_group; - $pages_all = ceil($pages_all/20); //20 страниц - // - $page_now = 0 + round((int)$_GET['page']); - if( $page_now < 1 ) { - $page_now = 1; - }elseif( $page_now > $pages_all ) { - $page_now = $pages_all; - } - // - $r['toppages'] = $pages_all; - $r['page'] = $page_now; - // - $i = 0; - $j = 0; - while( $i < count($pl) ) { - // - //if( $j < ($page_now) * 20 && $j >= ($page_now-1) * 20 ) { - if( $pl[$i]['inGroup'] == 0 || !isset($r['item_data']['g'][$pl[$i]['item_id']][$pl[$i]['inGroup']]) ) { - $r['item_data'][$j] = \Core\Item::infoItem($pl[$i]); - $r['item_data'][$j]['iid'] = $pl[$i]['item_id']; - $r['item_data'][$j]['prc'] = $pl[$i]['1price']; - $r['item_data'][$j]['cid'] = $pl[$i]['id']; - $r['item_data'][$j]['x'] = $count; - $j++; - } - // - $r['item_data']['x']++; - $r['item_data']['i']++; - //} - if( $pl[$i]['inGroup'] > 0 ) { - $r['item_data']['g'][$pl[$i]['item_id']][$pl[$i]['inGroup']]++; - } - $i++; - } - $pages_all = 1; - $r['toppages'] = $pages_all; - $r['page'] = $page_now; - // - } - } - - return \Core\Utils::jsonencode( $r ); - } - -} - -?> \ No newline at end of file diff --git a/core1/app/logic/comission.php b/core1/app/logic/comission.php deleted file mode 100644 index 29cad0a2..00000000 --- a/core1/app/logic/comission.php +++ /dev/null @@ -1,569 +0,0 @@ -главную страницу.'; - }elseif( \Core\User::$data['battle'] > 0 ) { - header('location:main.php?inv'); - }elseif( \Core\User::$room['name'] != 'Комиссионный магазин' ) { - echo 'Вы находитесь в другой локации.'; - }elseif( stristr($_SERVER['HTTP_ACCEPT'],'application/json') == true ) { - echo self::getJSON(); - }else{ - echo self::getHTML(); - } - } - - /* - @ Метод выводящий HTML-контент на сторону пользователя - @ Через конкретный шаблонизатор - */ - public static function getHTML() { - //PC версия главной страницы - return view::generateTpl( 'comission', array( - 'title' => COPY . ' :: Комиссионный магазин', - - //Передаем данные пакетов - 'user' => \Core\User::$data, - 'stats' => \Core\User::$stats, - 'room' => \Core\User::$room, - - 'OK' => OK, - 'copy' => COPY, - 'rights' => RIGHTS, - - 'ver' => '1.1.3' - ) ); - } - - /* - @ Метод выводящий JSON-контент на сторону пользователя - @ Информация берется из переменной self::$JSON - */ - public static function getJSON() { - $r = array( 'type' => $_GET['type'],'it' => array( 'i' => 0 , 'g' => array() ) ); - - //Информация - $r['money'] = 0+\Core\User::$data['money']; - // - $ves = \Core\User::ves(\Core\User::$data['id']); - // - $r['massaNow'] = 0+$ves['now']; - $r['massaMax'] = 0+$ves['max']; - $r['timeGo'] = 0+\Core\User::$stats['timeGo']; - $r['timeGoL'] = 0+\Core\User::$stats['timeGoL']; - $r['timeNow'] = OK; - // - if( isset($_GET['newprice_item']) && \Core\User::$data['invBlock'] < OK && \Core\User::$data['allLock'] < OK ) { - //Обновляем стоимость предмета - $comiss = 0.10; //Комиссия - // - $itm_user = \Core\Database::query( 'SELECT * FROM `items_com` WHERE `item_id` = :id AND `uid` = :uid AND `city` =:city AND `delete` = "0" LIMIT 1' , array( - 'id' => $_GET['newprice_item'], - 'uid' => \Core\User::$data['id'], - 'city' => \Core\User::$data['city'] - ) , true ); - // - $itm_useri = \Core\Database::query( 'SELECT *, `id` AS `uiid` FROM `items_users` WHERE `id` = :id AND `uid` = :uid AND `gift` = "" AND `data` NOT LIKE "%sudba=%" AND `data` NOT LIKE "%zazuby=%" AND `data` NOT LIKE "%|notransfer=%" AND `inOdet` = 0 AND `delete` = 0 AND `inTransfer` = 0 AND `inShop` = 0 LIMIT 1' , array( - 'id' => $itm_user['item_id'], - 'uid' => 0 - ) , true ); - // - $itm_main = \Core\Database::query( 'SELECT * FROM `items_main` WHERE `id` = :id LIMIT 1' , array( - 'id' => $itm_user['items_id'] - ) , true ); - // - if( $itm_useri['1price'] == 0 ) { - $itm_useri['1price'] = $itm_main['price1']; - } - if( $itm_useri['1price'] == 0 ) { - $itm_useri['1price'] = 1; - } - // - $prc = round($_GET['newprice_price'],2); - // - if(!isset($itm_user['id']) || !isset($itm_useri['id']) || !isset($itm_main['id'])) { - $r['newprice_error'] = 1; - }elseif( $prc < 1 ) { - $r['newprice_error'] = 2; - }elseif( $prc > ( $itm_user['group'] * $itm_useri['1price'] ) * 10 ) { - $r['newprice_error'] = 3; - }elseif( $prc < round( (((( $itm_user['group'] * $itm_useri['1price'] ) / $itm_main['iznosMAXi'] ) * $itm_useri['iznosMAX']) / 2) , 2) ) { - $r['newprice_error'] = 4; - $r['newprice_error_min'] = round( (((( $itm_user['group'] * $itm_useri['1price'] ) / $itm_main['iznosMAXi'] ) * $itm_useri['iznosMAX']) / 2) , 2); - }else{ - $itm_user['price'] = $prc; - // - $r['newprice_price_comission'] = $comiss; - $r['newprice_item'] = $itm_user['id']; - $r['newprice_uiid'] = $itm_user['item_id']; - $r['newprice_name'] = $itm_user['name']; - $r['newprice_x'] = $itm_user['group']; - $r['newprice_price']= $itm_user['price']; - // - \Core\User::$data['money'] -= $comiss; //$comiss Комиссия - // - \Core\Database::query( 'UPDATE `users` SET `money` = :money WHERE `id` = :uid LIMIT 1' , - array( - 'uid' => \Core\User::$data['id'], - 'money' => \Core\User::$data['money'] - ) - ); - // - \Core\Database::query( 'UPDATE `items_com` SET `price` = :newprice WHERE `id` = :id LIMIT 1', array( - 'id' => $itm_user['id'], - 'newprice' => $itm_user['price'] - ) ); - } - // - }elseif( isset($_GET['pick_item']) && \Core\User::$data['invBlock'] < OK && \Core\User::$data['allLock'] < OK ) { - //Забираем предмет - $itm_user = \Core\Database::query( 'SELECT * FROM `items_com` WHERE `city` = :city AND `id` = :id AND `uid` = :uid AND `delete` = "0" LIMIT 1' , array( - 'id' => $_GET['pick_item'], - 'uid' => \Core\User::$data['id'], - 'city' => \Core\User::$data['city'] - ) , true ); - // - if(!isset($itm_user['id'])) { - $r['pick_error'] = 1; - }else{ - $r['pick_item'] = $itm_user['id']; - $r['pick_uiid'] = $itm_user['item_id']; - $r['pick_name'] = $itm_user['name']; - $r['pick_x'] = $itm_user['group']; - \Core\Database::query( 'UPDATE `items_com` SET `delete` = :time WHERE `id` = :id LIMIT 1', array( - 'id' => $itm_user['id'], - 'time' => OK - ) ); - \Core\Database::query( 'UPDATE `items_users` SET `inGroup` = 0 , `uid` = :uid , `lastUPD` = :time WHERE `id` = :id OR ( `inGroup` = :id AND `item_id` = :item_id AND `uid` = 0 )', array( - 'id' => $itm_user['item_id'], - 'item_id' => $itm_user['items_id'], - 'uid' => $itm_user['uid'], - 'time' => OK - ) ); - } - // - }elseif( isset($_GET['give_item']) && \Core\User::$data['invBlock'] < OK && \Core\User::$data['allLock'] < OK ) { - //Сдаем предмет - $itm_user = \Core\Database::query( 'SELECT *, `id` AS `uiid` FROM `items_users` WHERE `id` = :id AND `uid` = :uid AND `gift` = "" AND `data` NOT LIKE "%sudba=%" AND `data` NOT LIKE "%zazuby=%" AND `data` NOT LIKE "%|notransfer=%" AND `inOdet` = 0 AND `delete` = 0 AND `inTransfer` = 0 AND `inShop` = 0 LIMIT 1' , array( - 'id' => $_GET['give_item'], - 'uid' => \Core\User::$data['id'] - ) , true ); - // - $comiss = 1; //Комиссия в кр. - $prc = round($_GET['give_price'],2); //Какую сумму выставляем предмету - // - $itm_x = \Core\Database::query( 'SELECT COUNT(*) AS `i` FROM `items_users` WHERE `inGroup` = :group AND `inGroup` > 0 AND `item_id` = :item_id AND `uid` = :uid AND `delete` = 0 AND `inShop` = 0 AND `inTransfer` = 0 LIMIT 1' , array( - 'item_id' => $itm_user['item_id'], - 'group' => $itm_user['inGroup'], - 'uid' => \Core\User::$data['id'] - ) , true ); - if( $itm_x['i'] == 0 ) { - $itm_x['i'] = 1; - } - // - $itm_main = \Core\Database::query( 'SELECT * FROM `items_main` WHERE `id` = :id LIMIT 1' , array( - 'id' => $itm_user['item_id'] - ) , true ); - if( $itm_user['1price'] == 0 ) { - $itm_user['1price'] = $itm_main['price1']; - } - if( $itm_user['1price'] == 0 ) { - $itm_user['1price'] = 1; - } - // - if( !isset($itm_user['id']) ) { - $r['give_error'] = 1; - }elseif( $comiss > \Core\User::$data['money'] && true == false ) { - $r['give_error'] = 2; - }elseif( \Core\User::$data['align'] == 2 ) { - $r['give_error'] = 3; - }elseif( \Core\User::$data['level'] < 4 ) { - $r['give_error'] = 4; - }elseif( $prc > 100000 ) { - $r['give_error'] = 5; - }elseif( $prc < 1 ) { - $r['give_error'] = 6; - }elseif( $prc > ( $itm_x['i'] * $itm_user['1price'] ) * 10 && true == false ) { - $r['give_error'] = 7; - }elseif( $prc < round( (((( $itm_x['i'] * $itm_user['1price'] ) / $itm_main['iznosMAXi'] ) * $itm_user['iznosMAX']) / 2) , 2) ) { - $r['give_error'] = 8; - $r['give_error_min'] = round( (((( $itm_x['i'] * $itm_user['1price'] ) / $itm_main['iznosMAXi'] ) * $itm_user['iznosMAX']) / 2) , 2); - }else{ - //Все окей - $r['give_item'] = $itm_user['id']; - $r['give_name'] = $itm_main['name']; - $r['give_x'] = $itm_x['i']; - $r['give_price'] = $prc; - $r['give_price_comission'] = $comiss.'.00'; - // - $upd = \Core\Database::query( 'UPDATE `items_users` SET `uid` = 0, `inGroup` = :id WHERE `uid` = :uid AND `item_id` = :item_id AND ( ( `inGroup` > 0 AND `inGroup` = :group ) OR ( `inGroup` = 0 AND `id` = :id ) ) AND `delete` = 0 AND `inShop` = 0 AND `inTransfer` = 0' , - array( - 'uid' => \Core\User::$data['id'], - 'id' => $itm_user['uiid'], - 'item_id' => $itm_main['id'], - 'group' => $itm_user['inGroup'] - ) - ); - if( $upd == true ) { - // - \Core\User::$data['money'] -= $comiss; //$comiss Комиссия - // - \Core\Database::query( 'UPDATE `users` SET `money` = :money WHERE `id` = :uid LIMIT 1' , - array( - 'uid' => \Core\User::$data['id'], - 'money' => \Core\User::$data['money'] - ) - ); - // - /* - ========================================= - Типы предметов: ///////////////////////// - ========================================= - 31 - руна - 32 - ресурсы - 33 - мусор - 34 - прочее - 35 - сумка - 36 - усиление - 37 - упаковка - 38 - подарок - 39 - подарок (требует упаковку) - 40 - книжный прием - 41 - приглашение - 42 - билет - 43 - слот смены - 44 - пергамент (с текстом) - 45 - сумка - 46 - заточка - 47 - усиление 1 - 48 - усиление 2 (временное) - 49 - корм для животного - 60 - бумага - 61 - чек - 62 - чарка - 63 - открытка - 64 - какие-то подарки (пока не придумал) - */ - $point = 24; - $arr_point = array( - 1 => 10, - 2 => 24, // венки на голову - 3 => 11, - 4 => 7, - 5 => 8, - 6 => 9, - 7 => 24, // плащи - 8 => 12, - 9 => 15, - 10 => 16, - 11 => 17, - 12 => 6, - 13 => 14, - 14 => 13, - 15 => 5, - - 18 => 0, - 19 => 1, - 20 => 2, - 21 => 3, - 22 => 4, - - 29 => 18, - 30 => 19, - - 31 => 21, - 62 => 20, - - 32 => 22, - - 49 => 23 - ); - if( isset($arr_point[$itm_main['type']]) ) { - $point = $arr_point[$itm_main['type']]; - } - // - $itm_po = \Core\Item::lookStats( $itm_user['data'] ); - // - \Core\Database::query( 'INSERT INTO `items_com` ( - `uid`,`item_id`,`items_id`,`name`,`level`,`img`,`massa`,`point`,`price`,`time`,`city`,`buy`,`delete`,`iznosNow`,`iznosMax`,`tr_align`,`group` - ) VALUES ( - :uid , :item_id , :items_id , :name , :level , :img , :massa , :point , :price , :time , :city , 0 , 0 , :iznosNOW , :iznosMAX , :align , :group - )' , array( - 'uid' => \Core\User::$data['id'], - 'item_id' => $itm_user['uiid'], - 'items_id' => $itm_main['id'], - 'name' => $itm_main['name'], - 'level' => $itm_po['tr_lvl'], - 'img' => $itm_main['img'], - 'massa' => ($itm_x['i'] * $itm_main['massa']), - 'point' => $point, - 'price' => $r['give_price'], - 'time' => OK, - 'city' => \Core\User::$data['city'], - 'align' => $itm_po['tr_align'], - 'iznosNOW' => $itm_user['iznosNOW'], - 'iznosMAX' => $itm_user['iznosMAX'], - 'group' => $r['give_x'] - )); - }else{ - $r['give_error'] = 9; - } - } - - // - }elseif( isset($_GET['buy_item']) && \Core\User::$data['invBlock'] < OK && \Core\User::$data['allLock'] < OK ) { - //Продать предмет - $itm = \Core\Database::query( 'SELECT * FROM `items_com` WHERE `id` = :cid AND `city` = :city AND `items_id` = :items_id AND `delete` = 0 LIMIT 1' , array( - 'cid' => $_GET['buy_item'], - 'items_id' => $_GET['items_id'], - 'city' => \Core\User::$data['city'] - ) , true ); - $itm_user = \Core\Database::query( 'SELECT * FROM `items_users` WHERE `id` = :id AND `uid` = 0 LIMIT 1' , array( - 'id' => $itm['item_id'] - ) , true ); - $user = \Core\Database::query( 'SELECT * FROM `users` WHERE `id` = :id ORDER BY `id` ASC LIMIT 1' , array( - 'id' => $itm['uid'] - ) , true ); - if( !isset($itm['id']) || !isset($itm_user['id']) ) { - //Предмет не найден, возможно его кто-то уже купил - if( isset($itm['id']) ) { - \Core\Database::query( 'UPDATE `items_com` SET `buy` = :uid, `delete` = :delete WHERE `id` = :id LIMIT 1' , array( - 'id' => $itm['id'], - 'uid' => 111, - 'delete' => OK - )); - } - $r['buy_error'] = 1; - }elseif( \Core\User::$data['align'] == 2 ) { - //Хаосникам нельзя пользоваться комиссионным магазином - $r['buy_error'] = 3; - }elseif( \Core\User::$data['level'] < 1 ) { - //Персонажам ниже 1-го уровня запрещено пользоваться комиссионным магазином - $r['buy_error'] = 4; - }elseif( $itm['price'] > \Core\User::$data['money']) { - //У вас недостаточно денег - $r['buy_error'] = 2; - }else{ - //Без ошибок, купили предмет - \Core\Database::query( 'UPDATE `items_com` SET `buy` = :uid, `delete` = :delete WHERE `id` = :id LIMIT 1' , array( - 'id' => $itm['id'], - 'uid' => \Core\User::$data['id'], - 'delete' => OK - )); - // - \Core\Database::query( 'UPDATE `items_users` SET `uid` = :uid, `lastUPD` = :time, `inGroup` = 0 WHERE `id` = :id LIMIT 1' , array( - 'id' => $itm['item_id'], - 'uid' => \Core\User::$data['id'], - 'time' => OK - )); - // - \Core\Database::query( 'UPDATE `items_users` SET `uid` = :uid, `lastUPD` = :time, `inGroup` = 0 WHERE `inGroup` = :id AND `uid` = 0 LIMIT ' . $itm['group'] , array( - 'id' => $itm['item_id'], - 'uid' => \Core\User::$data['id'], - 'time' => OK - )); - \Core\User::$data['money'] -= $itm['price']; - \Core\Database::query( 'UPDATE `users` SET `money` = :money WHERE `id` = :id ORDER BY `id` ASC LIMIT 1' , array( - 'id' => \Core\User::$data['id'], - 'money' => \Core\User::$data['money'] - )); - // - $post_money = round($itm['price']*0.9,2); - if( $itm['group'] > 1 ) { - $itm['name'] .= ' (x'.$itm['group'].')'; - } - \Core\Chat::send_system( $user['login'] , 'Персонаж ' . \Core\User::$data['login'] . ' приобрел вашу вещь "'.$itm['name'].'" из комиссионного магазина за '.$post_money.' кр. (+1 кр. комиссионных). Деньги отправлены к вам на почту.' ); - $post_money += 1; //Комиссионные - // - $tmgo = 1; - \Core\Database::query( 'INSERT INTO `items_users` (`item_id`,`1price`,`uid`,`delete`,`lastUPD`) VALUES ( - 1220 , :money , :uid , 0 , :time - )' , array( - 'uid' => '-51' . $user['id'], - 'money' => $post_money, - 'time' => OK + $tmgo * 60 - )); - $txt = 'Деньги от '.\Core\User::$data['login'].': '.$post_money.' кр. Прибытие: '.date('d.m.Y H:i',(OK + $tmgo*60)).''; - \Core\Database::query( 'INSERT INTO `post` (`uid`,`sender_id`,`time`,`money`,`text`) VALUES - ( :user_to , :user_from , :time , :money , :txt )' , array( - 'user_from' => \Core\User::$data['id'], - 'user_to' => $user['id'], - 'time' => OK, - 'txt' => $txt, - 'money' => $post_money - )); - $txt = 'Деньги к '.$user['login'].': '.$post_money.' кр. Прибытие: '.date('d.m.Y H:i',(OK + $tmgo*60)).''; - \Core\Database::query( 'INSERT INTO `post` (`uid`,`sender_id`,`time`,`money`,`text`) VALUES - ( :user_from , :user_to , :time , :money , :txt )' , array( - 'user_from' => \Core\User::$data['id'], - 'user_to' => $user['id'], - 'time' => OK, - 'txt' => $txt, - 'money' => $post_money - )); - // - $r['buy_error'] = 0; - $r['buy_item'] = $itm['id']; - $r['buy_name'] = $itm['name']; - $r['buy_price'] = $itm['price']; - $r['buy_massa'] = $itm['massa']; - // - $itm_last = \Core\Database::query( 'SELECT COUNT(*) AS `i` FROM `items_com` WHERE `city` = :city AND `items_id` = :items_id AND `delete` = 0 LIMIT 1' , array( - 'items_id' => $_GET['items_id'], - 'city' => \Core\User::$data['city'] - ) , true ); - $r['buy_last'] = $itm_last['i']; - } - }elseif($_GET['point'] == 'give' && \Core\User::$data['invBlock'] < OK && \Core\User::$data['allLock'] < OK) { - //Положить предмет - $pl = \Core\Database::query( 'SELECT `id`,`inGroup`,`item_id` FROM `items_users` WHERE `uid` = :uid AND `gift` = "" AND `data` NOT LIKE "%sudba=%" AND `data` NOT LIKE "%zazuby=%" AND `data` NOT LIKE "%|notransfer=%" AND `data` NOT LIKE "%fromshop=2%" AND `inOdet` = 0 AND `delete` = 0 AND `inTransfer` = 0 AND `inShop` = 0 ORDER BY `lastUPD` DESC' , array( - 'uid' => \Core\User::$data['id'] - ) , true , true ); - // - $i = 0; $j = 0; - while( $i < count($pl) ) { - if( !isset($r['it']['g'][$pl[$i]['item_id']][$pl[$i]['inGroup']]) ) { - $itm = \Core\Item::getItemUser( $pl[$i]['id'] ); - $itm = \Core\Item::infoItem( $itm ); - $itm['iid'] = $pl[$i]['item_id']; - $r['it'][] = $itm; - $j++; - } - if( $pl[$i]['inGroup'] > 0 ) { - $r['it']['g'][$pl[$i]['item_id']][$pl[$i]['inGroup']]++; - } - $i++; - } - $r['it']['i'] = $j; - // - }elseif($_GET['point'] == 'pick' && \Core\User::$data['invBlock'] < OK && \Core\User::$data['allLock'] < OK) { - //Забрать предмет раздел - $pl = \Core\Database::query( 'SELECT * FROM `items_com` WHERE `uid` = :uid AND `city` = :city AND `delete` = 0 ORDER BY `time` DESC' , array( - 'uid' => \Core\User::$data['id'], - 'city' => \Core\User::$data['city'] - ) , true , true ); - // - $i = 0; - // - while( $i < count($pl) ) { - $itm = \Core\Item::getItemUser( $pl[$i]['item_id'] ); - if( !isset($r['it']['n']) ) { - $r['it']['n'] = $itm['name']; - } - $itm = \Core\Item::infoItem( $itm ); - $itm['iid'] = $pl[$i]['items_id']; - $itm['prc'] = $pl[$i]['price']; - $itm['cid'] = $pl[$i]['id']; - $itm['x'] = $pl[$i]['group']; - $itm['timeend'] = date('d.m.Y H:i',( $pl[$i]['time'] + 86400 * 14 )); - $r['it'][] = $itm; - $i++; - } - // - $r['it']['l'] = $_GET['lookIt']; - $r['it']['i'] = $i; - }elseif( $_GET['type'] == 1 ) { - //Просмотр предметов - $pl = \Core\Database::query( 'SELECT * FROM `items_com` WHERE `items_id` = :items_id AND `city` = :city AND `delete` = 0 ORDER BY `price` ASC' , array( - 'items_id' => $_GET['lookIt'], - 'city' => \Core\User::$data['city'] - ) , true , true ); - // - $i = 0; - // - while( $i < count($pl) ) { - $itm = \Core\Item::getItemUser( $pl[$i]['item_id'] ); - if( !isset($r['it']['n']) ) { - $r['it']['n'] = $itm['name']; - } - $itm = \Core\Item::infoItem( $itm ); - $itm['iid'] = $pl[$i]['items_id']; - $itm['prc'] = $pl[$i]['price']; - $itm['cid'] = $pl[$i]['id']; - $itm['x'] = $pl[$i]['group']; - $r['it'][] = $itm; - $i++; - } - // - $r['it']['l'] = $_GET['lookIt']; - $r['it']['i'] = $i; - }elseif( $_GET['type'] == 0 ) { - //Просмотр раздела - $pl = \Core\Database::query( 'SELECT * FROM `items_com` WHERE `point` = :point AND `city` = :city AND `delete` = 0 GROUP BY `items_id` ORDER BY `time` DESC' , array( - 'point' => $_GET['point'], - 'city' => \Core\User::$data['city'] - ) , true , true ); - // - $i = 0; - while( $i < count($pl) ) { - // - $col = \Core\Database::query( 'SELECT COUNT(`id`) AS `i` FROM `items_com` WHERE `items_id` = :iid AND `city` = :city AND `delete` = 0', array( - 'iid' => $pl[$i]['items_id'], - 'city' => \Core\User::$data['city'] - ),true); //количество предметов - $col = $col['i']; - // - $prs1 = \Core\Database::query( 'SELECT `price` AS `i` FROM `items_com` WHERE `items_id` = :iid AND `city` = :city AND `delete` = 0 ORDER BY `price` ASC', array( - 'iid' => $pl[$i]['items_id'], - 'city' => \Core\User::$data['city'] - ),true); //Минимальная цена предмета - $prs1 = $prs1['i']; - // - $prs2 = \Core\Database::query( 'SELECT `price` AS `i` FROM `items_com` WHERE `items_id` = :iid AND `city` = :city AND `delete` = 0 ORDER BY `price` DESC', array( - 'iid' => $pl[$i]['items_id'], - 'city' => \Core\User::$data['city'] - ),true); //Максимальная цена предмета - $prs2 = $prs2['i']; - // - $izns1 = \Core\Database::query( 'SELECT `iznosNow` AS `i`,`iznosMax` AS `j` FROM `items_com` WHERE `items_id` = :iid AND `city` = :city AND `delete` = 0 ORDER BY `iznosMax` ASC', array( - 'iid' => $pl[$i]['items_id'], - 'city' => \Core\User::$data['city'] - ),true); //Минимальная цена предмета - // - $izns2 = \Core\Database::query( 'SELECT `iznosNow` AS `i`,`iznosMax` AS `j` FROM `items_com` WHERE `items_id` = :iid AND `city` = :city AND `delete` = 0 ORDER BY `iznosMax` DESC', array( - 'iid' => $pl[$i]['items_id'], - 'city' => \Core\User::$data['city'] - ),true); //Максимальная цена предмета - // - $r['it'][] = array( - $pl[$i]['id'], - $pl[$i]['items_id'], - array($izns1['i'],$izns2['i']), - array($izns1['j'],$izns2['j']), - $pl[$i]['name'], - $pl[$i]['img'], - $pl[$i]['massa'], - array($prs1,$prs2), - $col, - $pl[$i]['level'] - ); - $i++; - } - $r['it']['i'] = $i; - } - - return \Core\Utils::jsonencode( $r ); - } - -} - -?> \ No newline at end of file diff --git a/core1/app/logic/debuger.php b/core1/app/logic/debuger.php deleted file mode 100644 index 1e6b1375..00000000 --- a/core1/app/logic/debuger.php +++ /dev/null @@ -1,83 +0,0 @@ -главную страницу.'; - }elseif( stristr($_SERVER['HTTP_ACCEPT'],'application/json') == true ) { - echo self::getJSON(); - }else{ - echo self::getHTML(); - } - } - - /* - @ Метод выводящий HTML-контент на сторону пользователя - @ Через конкретный шаблонизатор - */ - public static function getHTML() { - //PC версия главной страницы - // - $skills = array(); - $pl = \Core\Database::query( 'SELECT * FROM `priems` WHERE `activ` = 1 ORDER BY `img` ASC', array( - // - ), true , true ); - $i = 0; - while( $i != -1 ) { - if(!isset($pl[$i])) { - $i = -2; - }else{ - $skills .= ',[' . $pl[$i]['id'] . ',"' . $pl[$i]['img'] . '","' . $pl[$i]['name'] . '"]'; - } - $i++; - } - $skills = ltrim($skills,','); - // - return view::generateTpl( 'debuger', array( - 'title' => COPY . ' :: Вопросы по игре и сдача багов', - - //Передаем данные пакетов - 'user' => \Core\User::$data, - 'stats' => \Core\User::$stats, - 'room' => \Core\User::$room, - - 'OK' => OK, - 'copy' => COPY, - 'rights' => RIGHTS, - - 'skills' => $skills, - - 'ver' => '0.0.1' - ) ); - } - - /* - @ Метод выводящий JSON-контент на сторону пользователя - @ Информация берется из переменной self::$JSON - */ - public static function getJSON() { - $r = array(); - - return \Core\Utils::jsonencode( $r ); - } - -} - -?> \ No newline at end of file diff --git a/core1/index.php b/core1/index.php deleted file mode 100644 index 262340eb..00000000 --- a/core1/index.php +++ /dev/null @@ -1,31 +0,0 @@ - diff --git a/core1/lib/.htaccess b/core1/lib/.htaccess deleted file mode 100644 index 3418e55a..00000000 --- a/core1/lib/.htaccess +++ /dev/null @@ -1 +0,0 @@ -deny from all \ No newline at end of file diff --git a/core1/lib/Twig/.htaccess b/core1/lib/Twig/.htaccess deleted file mode 100644 index 3418e55a..00000000 --- a/core1/lib/Twig/.htaccess +++ /dev/null @@ -1 +0,0 @@ -deny from all \ No newline at end of file diff --git a/core1/lib/Twig/Autoloader.php b/core1/lib/Twig/Autoloader.php deleted file mode 100644 index d1e005b1..00000000 --- a/core1/lib/Twig/Autoloader.php +++ /dev/null @@ -1,43 +0,0 @@ - - */ -class Twig_Autoloader -{ - /** - * Registers Twig_Autoloader as an SPL autoloader. - */ - public static function register() - { - ini_set('unserialize_callback_func', 'spl_autoload_call'); - spl_autoload_register(array(new self, 'autoload')); - } - - /** - * Handles autoloading of classes. - * - * @param string $class A class name. - */ - public static function autoload($class) - { - if (0 !== strpos($class, 'Twig')) { - return; - } - - if (is_file($file = dirname(__FILE__).'/../'.str_replace(array('_', "\0"), array('/', ''), $class).'.php')) { - require $file; - } - } -} diff --git a/core1/lib/Twig/Compiler.php b/core1/lib/Twig/Compiler.php deleted file mode 100644 index 99aecbcc..00000000 --- a/core1/lib/Twig/Compiler.php +++ /dev/null @@ -1,267 +0,0 @@ - - */ -class Twig_Compiler implements Twig_CompilerInterface -{ - protected $lastLine; - protected $source; - protected $indentation; - protected $env; - protected $debugInfo; - protected $sourceOffset; - protected $sourceLine; - protected $filename; - - /** - * Constructor. - * - * @param Twig_Environment $env The twig environment instance - */ - public function __construct(Twig_Environment $env) - { - $this->env = $env; - $this->debugInfo = array(); - } - - public function getFilename() - { - return $this->filename; - } - - /** - * Returns the environment instance related to this compiler. - * - * @return Twig_Environment The environment instance - */ - public function getEnvironment() - { - return $this->env; - } - - /** - * Gets the current PHP code after compilation. - * - * @return string The PHP code - */ - public function getSource() - { - return $this->source; - } - - /** - * Compiles a node. - * - * @param Twig_NodeInterface $node The node to compile - * @param integer $indentation The current indentation - * - * @return Twig_Compiler The current compiler instance - */ - public function compile(Twig_NodeInterface $node, $indentation = 0) - { - $this->lastLine = null; - $this->source = ''; - $this->sourceOffset = 0; - // source code starts at 1 (as we then increment it when we encounter new lines) - $this->sourceLine = 1; - $this->indentation = $indentation; - - if ($node instanceof Twig_Node_Module) { - $this->filename = $node->getAttribute('filename'); - } - - $node->compile($this); - - return $this; - } - - public function subcompile(Twig_NodeInterface $node, $raw = true) - { - if (false === $raw) { - $this->addIndentation(); - } - - $node->compile($this); - - return $this; - } - - /** - * Adds a raw string to the compiled code. - * - * @param string $string The string - * - * @return Twig_Compiler The current compiler instance - */ - public function raw($string) - { - $this->source .= $string; - - return $this; - } - - /** - * Writes a string to the compiled code by adding indentation. - * - * @return Twig_Compiler The current compiler instance - */ - public function write() - { - $strings = func_get_args(); - foreach ($strings as $string) { - $this->addIndentation(); - $this->source .= $string; - } - - return $this; - } - - /** - * Appends an indentation to the current PHP code after compilation. - * - * @return Twig_Compiler The current compiler instance - */ - public function addIndentation() - { - $this->source .= str_repeat(' ', $this->indentation * 4); - - return $this; - } - - /** - * Adds a quoted string to the compiled code. - * - * @param string $value The string - * - * @return Twig_Compiler The current compiler instance - */ - public function string($value) - { - $this->source .= sprintf('"%s"', addcslashes($value, "\0\t\"\$\\")); - - return $this; - } - - /** - * Returns a PHP representation of a given value. - * - * @param mixed $value The value to convert - * - * @return Twig_Compiler The current compiler instance - */ - public function repr($value) - { - if (is_int($value) || is_float($value)) { - if (false !== $locale = setlocale(LC_NUMERIC, 0)) { - setlocale(LC_NUMERIC, 'C'); - } - - $this->raw($value); - - if (false !== $locale) { - setlocale(LC_NUMERIC, $locale); - } - } elseif (null === $value) { - $this->raw('null'); - } elseif (is_bool($value)) { - $this->raw($value ? 'true' : 'false'); - } elseif (is_array($value)) { - $this->raw('array('); - $i = 0; - foreach ($value as $key => $value) { - if ($i++) { - $this->raw(', '); - } - $this->repr($key); - $this->raw(' => '); - $this->repr($value); - } - $this->raw(')'); - } else { - $this->string($value); - } - - return $this; - } - - /** - * Adds debugging information. - * - * @param Twig_NodeInterface $node The related twig node - * - * @return Twig_Compiler The current compiler instance - */ - public function addDebugInfo(Twig_NodeInterface $node) - { - if ($node->getLine() != $this->lastLine) { - $this->write("// line {$node->getLine()}\n"); - - // when mbstring.func_overload is set to 2 - // mb_substr_count() replaces substr_count() - // but they have different signatures! - if (((int) ini_get('mbstring.func_overload')) & 2) { - // this is much slower than the "right" version - $this->sourceLine += mb_substr_count(mb_substr($this->source, $this->sourceOffset), "\n"); - } else { - $this->sourceLine += substr_count($this->source, "\n", $this->sourceOffset); - } - $this->sourceOffset = strlen($this->source); - $this->debugInfo[$this->sourceLine] = $node->getLine(); - - $this->lastLine = $node->getLine(); - } - - return $this; - } - - public function getDebugInfo() - { - return $this->debugInfo; - } - - /** - * Indents the generated code. - * - * @param integer $step The number of indentation to add - * - * @return Twig_Compiler The current compiler instance - */ - public function indent($step = 1) - { - $this->indentation += $step; - - return $this; - } - - /** - * Outdents the generated code. - * - * @param integer $step The number of indentation to remove - * - * @return Twig_Compiler The current compiler instance - */ - public function outdent($step = 1) - { - // can't outdent by more steps than the current indentation level - if ($this->indentation < $step) { - throw new LogicException('Unable to call outdent() as the indentation would become negative'); - } - - $this->indentation -= $step; - - return $this; - } -} diff --git a/core1/lib/Twig/CompilerInterface.php b/core1/lib/Twig/CompilerInterface.php deleted file mode 100644 index e293ec91..00000000 --- a/core1/lib/Twig/CompilerInterface.php +++ /dev/null @@ -1,35 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -interface Twig_CompilerInterface -{ - /** - * Compiles a node. - * - * @param Twig_NodeInterface $node The node to compile - * - * @return Twig_CompilerInterface The current compiler instance - */ - public function compile(Twig_NodeInterface $node); - - /** - * Gets the current PHP code after compilation. - * - * @return string The PHP code - */ - public function getSource(); -} diff --git a/core1/lib/Twig/Environment.php b/core1/lib/Twig/Environment.php deleted file mode 100644 index 04339e40..00000000 --- a/core1/lib/Twig/Environment.php +++ /dev/null @@ -1,1217 +0,0 @@ - - */ -class Twig_Environment -{ - const VERSION = '1.12.3-DEV'; - - protected $charset; - protected $loader; - protected $debug; - protected $autoReload; - protected $cache; - protected $lexer; - protected $parser; - protected $compiler; - protected $baseTemplateClass; - protected $extensions; - protected $parsers; - protected $visitors; - protected $filters; - protected $tests; - protected $functions; - protected $globals; - protected $runtimeInitialized; - protected $extensionInitialized; - protected $loadedTemplates; - protected $strictVariables; - protected $unaryOperators; - protected $binaryOperators; - protected $templateClassPrefix = '__TwigTemplate_'; - protected $functionCallbacks; - protected $filterCallbacks; - protected $staging; - - /** - * Constructor. - * - * Available options: - * - * * debug: When set to true, it automatically set "auto_reload" to true as - * well (default to false). - * - * * charset: The charset used by the templates (default to utf-8). - * - * * base_template_class: The base template class to use for generated - * templates (default to Twig_Template). - * - * * cache: An absolute path where to store the compiled templates, or - * false to disable compilation cache (default). - * - * * auto_reload: Whether to reload the template is the original source changed. - * If you don't provide the auto_reload option, it will be - * determined automatically base on the debug value. - * - * * strict_variables: Whether to ignore invalid variables in templates - * (default to false). - * - * * autoescape: Whether to enable auto-escaping (default to html): - * * false: disable auto-escaping - * * true: equivalent to html - * * html, js: set the autoescaping to one of the supported strategies - * * PHP callback: a PHP callback that returns an escaping strategy based on the template "filename" - * - * * optimizations: A flag that indicates which optimizations to apply - * (default to -1 which means that all optimizations are enabled; - * set it to 0 to disable). - * - * @param Twig_LoaderInterface $loader A Twig_LoaderInterface instance - * @param array $options An array of options - */ - public function __construct(Twig_LoaderInterface $loader = null, $options = array()) - { - if (null !== $loader) { - $this->setLoader($loader); - } - - $options = array_merge(array( - 'debug' => false, - 'charset' => 'UTF-8', - 'base_template_class' => 'Twig_Template', - 'strict_variables' => false, - 'autoescape' => 'html', - 'cache' => false, - 'auto_reload' => null, - 'optimizations' => -1, - ), $options); - - $this->debug = (bool) $options['debug']; - $this->charset = $options['charset']; - $this->baseTemplateClass = $options['base_template_class']; - $this->autoReload = null === $options['auto_reload'] ? $this->debug : (bool) $options['auto_reload']; - $this->strictVariables = (bool) $options['strict_variables']; - $this->runtimeInitialized = false; - $this->setCache($options['cache']); - $this->functionCallbacks = array(); - $this->filterCallbacks = array(); - - $this->addExtension(new Twig_Extension_Core()); - $this->addExtension(new Twig_Extension_Escaper($options['autoescape'])); - $this->addExtension(new Twig_Extension_Optimizer($options['optimizations'])); - $this->extensionInitialized = false; - $this->staging = new Twig_Extension_Staging(); - } - - /** - * Gets the base template class for compiled templates. - * - * @return string The base template class name - */ - public function getBaseTemplateClass() - { - return $this->baseTemplateClass; - } - - /** - * Sets the base template class for compiled templates. - * - * @param string $class The base template class name - */ - public function setBaseTemplateClass($class) - { - $this->baseTemplateClass = $class; - } - - /** - * Enables debugging mode. - */ - public function enableDebug() - { - $this->debug = true; - } - - /** - * Disables debugging mode. - */ - public function disableDebug() - { - $this->debug = false; - } - - /** - * Checks if debug mode is enabled. - * - * @return Boolean true if debug mode is enabled, false otherwise - */ - public function isDebug() - { - return $this->debug; - } - - /** - * Enables the auto_reload option. - */ - public function enableAutoReload() - { - $this->autoReload = true; - } - - /** - * Disables the auto_reload option. - */ - public function disableAutoReload() - { - $this->autoReload = false; - } - - /** - * Checks if the auto_reload option is enabled. - * - * @return Boolean true if auto_reload is enabled, false otherwise - */ - public function isAutoReload() - { - return $this->autoReload; - } - - /** - * Enables the strict_variables option. - */ - public function enableStrictVariables() - { - $this->strictVariables = true; - } - - /** - * Disables the strict_variables option. - */ - public function disableStrictVariables() - { - $this->strictVariables = false; - } - - /** - * Checks if the strict_variables option is enabled. - * - * @return Boolean true if strict_variables is enabled, false otherwise - */ - public function isStrictVariables() - { - return $this->strictVariables; - } - - /** - * Gets the cache directory or false if cache is disabled. - * - * @return string|false - */ - public function getCache() - { - return $this->cache; - } - - /** - * Sets the cache directory or false if cache is disabled. - * - * @param string|false $cache The absolute path to the compiled templates, - * or false to disable cache - */ - public function setCache($cache) - { - $this->cache = $cache ? $cache : false; - } - - /** - * Gets the cache filename for a given template. - * - * @param string $name The template name - * - * @return string The cache file name - */ - public function getCacheFilename($name) - { - if (false === $this->cache) { - return false; - } - - $class = substr($this->getTemplateClass($name), strlen($this->templateClassPrefix)); - - return $this->getCache().'/'.substr($class, 0, 2).'/'.substr($class, 2, 2).'/'.substr($class, 4).'.php'; - } - - /** - * Gets the template class associated with the given string. - * - * @param string $name The name for which to calculate the template class name - * @param integer $index The index if it is an embedded template - * - * @return string The template class name - */ - public function getTemplateClass($name, $index = null) - { - return $this->templateClassPrefix.md5($this->getLoader()->getCacheKey($name)).(null === $index ? '' : '_'.$index); - } - - /** - * Gets the template class prefix. - * - * @return string The template class prefix - */ - public function getTemplateClassPrefix() - { - return $this->templateClassPrefix; - } - - /** - * Renders a template. - * - * @param string $name The template name - * @param array $context An array of parameters to pass to the template - * - * @return string The rendered template - */ - public function render($name, array $context = array()) - { - return $this->loadTemplate($name)->render($context); - } - - /** - * Displays a template. - * - * @param string $name The template name - * @param array $context An array of parameters to pass to the template - */ - public function display($name, array $context = array()) - { - $this->loadTemplate($name)->display($context); - } - - /** - * Loads a template by name. - * - * @param string $name The template name - * @param integer $index The index if it is an embedded template - * - * @return Twig_TemplateInterface A template instance representing the given template name - */ - public function loadTemplate($name, $index = null) - { - $cls = $this->getTemplateClass($name, $index); - - if (isset($this->loadedTemplates[$cls])) { - return $this->loadedTemplates[$cls]; - } - - if (!class_exists($cls, false)) { - if (false === $cache = $this->getCacheFilename($name)) { - eval('?>'.$this->compileSource($this->getLoader()->getSource($name), $name)); - } else { - if (!is_file($cache) || ($this->isAutoReload() && !$this->isTemplateFresh($name, filemtime($cache)))) { - $this->writeCacheFile($cache, $this->compileSource($this->getLoader()->getSource($name), $name)); - } - - require_once $cache; - } - } - - if (!$this->runtimeInitialized) { - $this->initRuntime(); - } - - return $this->loadedTemplates[$cls] = new $cls($this); - } - - /** - * Returns true if the template is still fresh. - * - * Besides checking the loader for freshness information, - * this method also checks if the enabled extensions have - * not changed. - * - * @param string $name The template name - * @param timestamp $time The last modification time of the cached template - * - * @return Boolean true if the template is fresh, false otherwise - */ - public function isTemplateFresh($name, $time) - { - foreach ($this->extensions as $extension) { - $r = new ReflectionObject($extension); - if (filemtime($r->getFileName()) > $time) { - return false; - } - } - - return $this->getLoader()->isFresh($name, $time); - } - - public function resolveTemplate($names) - { - if (!is_array($names)) { - $names = array($names); - } - - foreach ($names as $name) { - if ($name instanceof Twig_Template) { - return $name; - } - - try { - return $this->loadTemplate($name); - } catch (Twig_Error_Loader $e) { - } - } - - if (1 === count($names)) { - throw $e; - } - - throw new Twig_Error_Loader(sprintf('Unable to find one of the following templates: "%s".', implode('", "', $names))); - } - - /** - * Clears the internal template cache. - */ - public function clearTemplateCache() - { - $this->loadedTemplates = array(); - } - - /** - * Clears the template cache files on the filesystem. - */ - public function clearCacheFiles() - { - if (false === $this->cache) { - return; - } - - foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->cache), RecursiveIteratorIterator::LEAVES_ONLY) as $file) { - if ($file->isFile()) { - @unlink($file->getPathname()); - } - } - } - - /** - * Gets the Lexer instance. - * - * @return Twig_LexerInterface A Twig_LexerInterface instance - */ - public function getLexer() - { - if (null === $this->lexer) { - $this->lexer = new Twig_Lexer($this); - } - - return $this->lexer; - } - - /** - * Sets the Lexer instance. - * - * @param Twig_LexerInterface A Twig_LexerInterface instance - */ - public function setLexer(Twig_LexerInterface $lexer) - { - $this->lexer = $lexer; - } - - /** - * Tokenizes a source code. - * - * @param string $source The template source code - * @param string $name The template name - * - * @return Twig_TokenStream A Twig_TokenStream instance - */ - public function tokenize($source, $name = null) - { - return $this->getLexer()->tokenize($source, $name); - } - - /** - * Gets the Parser instance. - * - * @return Twig_ParserInterface A Twig_ParserInterface instance - */ - public function getParser() - { - if (null === $this->parser) { - $this->parser = new Twig_Parser($this); - } - - return $this->parser; - } - - /** - * Sets the Parser instance. - * - * @param Twig_ParserInterface A Twig_ParserInterface instance - */ - public function setParser(Twig_ParserInterface $parser) - { - $this->parser = $parser; - } - - /** - * Parses a token stream. - * - * @param Twig_TokenStream $tokens A Twig_TokenStream instance - * - * @return Twig_Node_Module A Node tree - */ - public function parse(Twig_TokenStream $tokens) - { - return $this->getParser()->parse($tokens); - } - - /** - * Gets the Compiler instance. - * - * @return Twig_CompilerInterface A Twig_CompilerInterface instance - */ - public function getCompiler() - { - if (null === $this->compiler) { - $this->compiler = new Twig_Compiler($this); - } - - return $this->compiler; - } - - /** - * Sets the Compiler instance. - * - * @param Twig_CompilerInterface $compiler A Twig_CompilerInterface instance - */ - public function setCompiler(Twig_CompilerInterface $compiler) - { - $this->compiler = $compiler; - } - - /** - * Compiles a Node. - * - * @param Twig_NodeInterface $node A Twig_NodeInterface instance - * - * @return string The compiled PHP source code - */ - public function compile(Twig_NodeInterface $node) - { - return $this->getCompiler()->compile($node)->getSource(); - } - - /** - * Compiles a template source code. - * - * @param string $source The template source code - * @param string $name The template name - * - * @return string The compiled PHP source code - */ - public function compileSource($source, $name = null) - { - try { - return $this->compile($this->parse($this->tokenize($source, $name))); - } catch (Twig_Error $e) { - $e->setTemplateFile($name); - throw $e; - } catch (Exception $e) { - throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $name, $e); - } - } - - /** - * Sets the Loader instance. - * - * @param Twig_LoaderInterface $loader A Twig_LoaderInterface instance - */ - public function setLoader(Twig_LoaderInterface $loader) - { - $this->loader = $loader; - } - - /** - * Gets the Loader instance. - * - * @return Twig_LoaderInterface A Twig_LoaderInterface instance - */ - public function getLoader() - { - if (null === $this->loader) { - throw new LogicException('You must set a loader first.'); - } - - return $this->loader; - } - - /** - * Sets the default template charset. - * - * @param string $charset The default charset - */ - public function setCharset($charset) - { - $this->charset = $charset; - } - - /** - * Gets the default template charset. - * - * @return string The default charset - */ - public function getCharset() - { - return $this->charset; - } - - /** - * Initializes the runtime environment. - */ - public function initRuntime() - { - $this->runtimeInitialized = true; - - foreach ($this->getExtensions() as $extension) { - $extension->initRuntime($this); - } - } - - /** - * Returns true if the given extension is registered. - * - * @param string $name The extension name - * - * @return Boolean Whether the extension is registered or not - */ - public function hasExtension($name) - { - return isset($this->extensions[$name]); - } - - /** - * Gets an extension by name. - * - * @param string $name The extension name - * - * @return Twig_ExtensionInterface A Twig_ExtensionInterface instance - */ - public function getExtension($name) - { - if (!isset($this->extensions[$name])) { - throw new Twig_Error_Runtime(sprintf('The "%s" extension is not enabled.', $name)); - } - - return $this->extensions[$name]; - } - - /** - * Registers an extension. - * - * @param Twig_ExtensionInterface $extension A Twig_ExtensionInterface instance - */ - public function addExtension(Twig_ExtensionInterface $extension) - { - if ($this->extensionInitialized) { - throw new LogicException(sprintf('Unable to register extension "%s" as extensions have already been initialized.', $extension->getName())); - } - - $this->extensions[$extension->getName()] = $extension; - } - - /** - * Removes an extension by name. - * - * This method is deprecated and you should not use it. - * - * @param string $name The extension name - * - * @deprecated since 1.12 (to be removed in 2.0) - */ - public function removeExtension($name) - { - if ($this->extensionInitialized) { - throw new LogicException(sprintf('Unable to remove extension "%s" as extensions have already been initialized.', $name)); - } - - unset($this->extensions[$name]); - } - - /** - * Registers an array of extensions. - * - * @param array $extensions An array of extensions - */ - public function setExtensions(array $extensions) - { - foreach ($extensions as $extension) { - $this->addExtension($extension); - } - } - - /** - * Returns all registered extensions. - * - * @return array An array of extensions - */ - public function getExtensions() - { - return $this->extensions; - } - - /** - * Registers a Token Parser. - * - * @param Twig_TokenParserInterface $parser A Twig_TokenParserInterface instance - */ - public function addTokenParser(Twig_TokenParserInterface $parser) - { - if ($this->extensionInitialized) { - throw new LogicException('Unable to add a token parser as extensions have already been initialized.'); - } - - $this->staging->addTokenParser($parser); - } - - /** - * Gets the registered Token Parsers. - * - * @return Twig_TokenParserBrokerInterface A broker containing token parsers - */ - public function getTokenParsers() - { - if (!$this->extensionInitialized) { - $this->initExtensions(); - } - - return $this->parsers; - } - - /** - * Gets registered tags. - * - * Be warned that this method cannot return tags defined by Twig_TokenParserBrokerInterface classes. - * - * @return Twig_TokenParserInterface[] An array of Twig_TokenParserInterface instances - */ - public function getTags() - { - $tags = array(); - foreach ($this->getTokenParsers()->getParsers() as $parser) { - if ($parser instanceof Twig_TokenParserInterface) { - $tags[$parser->getTag()] = $parser; - } - } - - return $tags; - } - - /** - * Registers a Node Visitor. - * - * @param Twig_NodeVisitorInterface $visitor A Twig_NodeVisitorInterface instance - */ - public function addNodeVisitor(Twig_NodeVisitorInterface $visitor) - { - if ($this->extensionInitialized) { - throw new LogicException('Unable to add a node visitor as extensions have already been initialized.', $extension->getName()); - } - - $this->staging->addNodeVisitor($visitor); - } - - /** - * Gets the registered Node Visitors. - * - * @return Twig_NodeVisitorInterface[] An array of Twig_NodeVisitorInterface instances - */ - public function getNodeVisitors() - { - if (!$this->extensionInitialized) { - $this->initExtensions(); - } - - return $this->visitors; - } - - /** - * Registers a Filter. - * - * @param string|Twig_SimpleFilter $name The filter name or a Twig_SimpleFilter instance - * @param Twig_FilterInterface|Twig_SimpleFilter $filter A Twig_FilterInterface instance or a Twig_SimpleFilter instance - */ - public function addFilter($name, $filter = null) - { - if ($this->extensionInitialized) { - throw new LogicException(sprintf('Unable to add filter "%s" as extensions have already been initialized.', $name)); - } - - if (!$name instanceof Twig_SimpleFilter && !($filter instanceof Twig_SimpleFilter || $filter instanceof Twig_FilterInterface)) { - throw new LogicException('A filter must be an instance of Twig_FilterInterface or Twig_SimpleFilter'); - } - - if ($name instanceof Twig_SimpleFilter) { - $filter = $name; - $name = $filter->getName(); - } - - $this->staging->addFilter($name, $filter); - } - - /** - * Get a filter by name. - * - * Subclasses may override this method and load filters differently; - * so no list of filters is available. - * - * @param string $name The filter name - * - * @return Twig_Filter|false A Twig_Filter instance or false if the filter does not exist - */ - public function getFilter($name) - { - if (!$this->extensionInitialized) { - $this->initExtensions(); - } - - if (isset($this->filters[$name])) { - return $this->filters[$name]; - } - - foreach ($this->filters as $pattern => $filter) { - $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count); - - if ($count) { - if (preg_match('#^'.$pattern.'$#', $name, $matches)) { - array_shift($matches); - $filter->setArguments($matches); - - return $filter; - } - } - } - - foreach ($this->filterCallbacks as $callback) { - if (false !== $filter = call_user_func($callback, $name)) { - return $filter; - } - } - - return false; - } - - public function registerUndefinedFilterCallback($callable) - { - $this->filterCallbacks[] = $callable; - } - - /** - * Gets the registered Filters. - * - * Be warned that this method cannot return filters defined with registerUndefinedFunctionCallback. - * - * @return Twig_FilterInterface[] An array of Twig_FilterInterface instances - * - * @see registerUndefinedFilterCallback - */ - public function getFilters() - { - if (!$this->extensionInitialized) { - $this->initExtensions(); - } - - return $this->filters; - } - - /** - * Registers a Test. - * - * @param string|Twig_SimpleTest $name The test name or a Twig_SimpleTest instance - * @param Twig_TestInterface|Twig_SimpleTest $test A Twig_TestInterface instance or a Twig_SimpleTest instance - */ - public function addTest($name, $test = null) - { - if ($this->extensionInitialized) { - throw new LogicException(sprintf('Unable to add test "%s" as extensions have already been initialized.', $name)); - } - - if (!$name instanceof Twig_SimpleTest && !($test instanceof Twig_SimpleTest || $test instanceof Twig_TestInterface)) { - throw new LogicException('A test must be an instance of Twig_TestInterface or Twig_SimpleTest'); - } - - if ($name instanceof Twig_SimpleTest) { - $test = $name; - $name = $test->getName(); - } - - $this->staging->addTest($name, $test); - } - - /** - * Gets the registered Tests. - * - * @return Twig_TestInterface[] An array of Twig_TestInterface instances - */ - public function getTests() - { - if (!$this->extensionInitialized) { - $this->initExtensions(); - } - - return $this->tests; - } - - /** - * Gets a test by name. - * - * @param string $name The test name - * - * @return Twig_Test|false A Twig_Test instance or false if the test does not exist - */ - public function getTest($name) - { - if (!$this->extensionInitialized) { - $this->initExtensions(); - } - - if (isset($this->tests[$name])) { - return $this->tests[$name]; - } - - return false; - } - - /** - * Registers a Function. - * - * @param string|Twig_SimpleFunction $name The function name or a Twig_SimpleFunction instance - * @param Twig_FunctionInterface|Twig_SimpleFunction $function A Twig_FunctionInterface instance or a Twig_SimpleFunction instance - */ - public function addFunction($name, $function = null) - { - if ($this->extensionInitialized) { - throw new LogicException(sprintf('Unable to add function "%s" as extensions have already been initialized.', $name)); - } - - if (!$name instanceof Twig_SimpleFunction && !($function instanceof Twig_SimpleFunction || $function instanceof Twig_FunctionInterface)) { - throw new LogicException('A function must be an instance of Twig_FunctionInterface or Twig_SimpleFunction'); - } - - if ($name instanceof Twig_SimpleFunction) { - $function = $name; - $name = $function->getName(); - } - - $this->staging->addFunction($name, $function); - } - - /** - * Get a function by name. - * - * Subclasses may override this method and load functions differently; - * so no list of functions is available. - * - * @param string $name function name - * - * @return Twig_Function|false A Twig_Function instance or false if the function does not exist - */ - public function getFunction($name) - { - if (!$this->extensionInitialized) { - $this->initExtensions(); - } - - if (isset($this->functions[$name])) { - return $this->functions[$name]; - } - - foreach ($this->functions as $pattern => $function) { - $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count); - - if ($count) { - if (preg_match('#^'.$pattern.'$#', $name, $matches)) { - array_shift($matches); - $function->setArguments($matches); - - return $function; - } - } - } - - foreach ($this->functionCallbacks as $callback) { - if (false !== $function = call_user_func($callback, $name)) { - return $function; - } - } - - return false; - } - - public function registerUndefinedFunctionCallback($callable) - { - $this->functionCallbacks[] = $callable; - } - - /** - * Gets registered functions. - * - * Be warned that this method cannot return functions defined with registerUndefinedFunctionCallback. - * - * @return Twig_FunctionInterface[] An array of Twig_FunctionInterface instances - * - * @see registerUndefinedFunctionCallback - */ - public function getFunctions() - { - if (!$this->extensionInitialized) { - $this->initExtensions(); - } - - return $this->functions; - } - - /** - * Registers a Global. - * - * New globals can be added before compiling or rendering a template; - * but after, you can only update existing globals. - * - * @param string $name The global name - * @param mixed $value The global value - */ - public function addGlobal($name, $value) - { - if ($this->extensionInitialized || $this->runtimeInitialized) { - if (null === $this->globals) { - $this->globals = $this->initGlobals(); - } - - /* This condition must be uncommented in Twig 2.0 - if (!array_key_exists($name, $this->globals)) { - throw new LogicException(sprintf('Unable to add global "%s" as the runtime or the extensions have already been initialized.', $name)); - } - */ - } - - if ($this->extensionInitialized || $this->runtimeInitialized) { - // update the value - $this->globals[$name] = $value; - } else { - $this->staging->addGlobal($name, $value); - } - } - - /** - * Gets the registered Globals. - * - * @return array An array of globals - */ - public function getGlobals() - { - if (!$this->runtimeInitialized && !$this->extensionInitialized) { - return $this->initGlobals(); - } - - if (null === $this->globals) { - $this->globals = $this->initGlobals(); - } - - return $this->globals; - } - - /** - * Merges a context with the defined globals. - * - * @param array $context An array representing the context - * - * @return array The context merged with the globals - */ - public function mergeGlobals(array $context) - { - // we don't use array_merge as the context being generally - // bigger than globals, this code is faster. - foreach ($this->getGlobals() as $key => $value) { - if (!array_key_exists($key, $context)) { - $context[$key] = $value; - } - } - - return $context; - } - - /** - * Gets the registered unary Operators. - * - * @return array An array of unary operators - */ - public function getUnaryOperators() - { - if (!$this->extensionInitialized) { - $this->initExtensions(); - } - - return $this->unaryOperators; - } - - /** - * Gets the registered binary Operators. - * - * @return array An array of binary operators - */ - public function getBinaryOperators() - { - if (!$this->extensionInitialized) { - $this->initExtensions(); - } - - return $this->binaryOperators; - } - - public function computeAlternatives($name, $items) - { - $alternatives = array(); - foreach ($items as $item) { - $lev = levenshtein($name, $item); - if ($lev <= strlen($name) / 3 || false !== strpos($item, $name)) { - $alternatives[$item] = $lev; - } - } - asort($alternatives); - - return array_keys($alternatives); - } - - protected function initGlobals() - { - $globals = array(); - foreach ($this->extensions as $extension) { - $globals = array_merge($globals, $extension->getGlobals()); - } - - return array_merge($globals, $this->staging->getGlobals()); - } - - protected function initExtensions() - { - if ($this->extensionInitialized) { - return; - } - - $this->extensionInitialized = true; - $this->parsers = new Twig_TokenParserBroker(); - $this->filters = array(); - $this->functions = array(); - $this->tests = array(); - $this->visitors = array(); - $this->unaryOperators = array(); - $this->binaryOperators = array(); - - foreach ($this->extensions as $extension) { - $this->initExtension($extension); - } - $this->initExtension($this->staging); - } - - protected function initExtension(Twig_ExtensionInterface $extension) - { - // filters - foreach ($extension->getFilters() as $name => $filter) { - if ($name instanceof Twig_SimpleFilter) { - $filter = $name; - $name = $filter->getName(); - } elseif ($filter instanceof Twig_SimpleFilter) { - $name = $filter->getName(); - } - - $this->filters[$name] = $filter; - } - - // functions - foreach ($extension->getFunctions() as $name => $function) { - if ($name instanceof Twig_SimpleFunction) { - $function = $name; - $name = $function->getName(); - } elseif ($function instanceof Twig_SimpleFunction) { - $name = $function->getName(); - } - - $this->functions[$name] = $function; - } - - // tests - foreach ($extension->getTests() as $name => $test) { - if ($name instanceof Twig_SimpleTest) { - $test = $name; - $name = $test->getName(); - } elseif ($test instanceof Twig_SimpleTest) { - $name = $test->getName(); - } - - $this->tests[$name] = $test; - } - - // token parsers - foreach ($extension->getTokenParsers() as $parser) { - if ($parser instanceof Twig_TokenParserInterface) { - $this->parsers->addTokenParser($parser); - } elseif ($parser instanceof Twig_TokenParserBrokerInterface) { - $this->parsers->addTokenParserBroker($parser); - } else { - throw new LogicException('getTokenParsers() must return an array of Twig_TokenParserInterface or Twig_TokenParserBrokerInterface instances'); - } - } - - // node visitors - foreach ($extension->getNodeVisitors() as $visitor) { - $this->visitors[] = $visitor; - } - - // operators - if ($operators = $extension->getOperators()) { - if (2 !== count($operators)) { - throw new InvalidArgumentException(sprintf('"%s::getOperators()" does not return a valid operators array.', get_class($extension))); - } - - $this->unaryOperators = array_merge($this->unaryOperators, $operators[0]); - $this->binaryOperators = array_merge($this->binaryOperators, $operators[1]); - } - } - - protected function writeCacheFile($file, $content) - { - $dir = dirname($file); - if (!is_dir($dir)) { - if (false === @mkdir($dir, 0777, true) && !is_dir($dir)) { - throw new RuntimeException(sprintf("Unable to create the cache directory (%s).", $dir)); - } - } elseif (!is_writable($dir)) { - throw new RuntimeException(sprintf("Unable to write in the cache directory (%s).", $dir)); - } - - $tmpFile = tempnam(dirname($file), basename($file)); - if (false !== @file_put_contents($tmpFile, $content)) { - // rename does not work on Win32 before 5.2.6 - if (@rename($tmpFile, $file) || (@copy($tmpFile, $file) && unlink($tmpFile))) { - @chmod($file, 0666 & ~umask()); - - return; - } - } - - throw new RuntimeException(sprintf('Failed to write cache file "%s".', $file)); - } -} diff --git a/core1/lib/Twig/Error.php b/core1/lib/Twig/Error.php deleted file mode 100644 index e77ec98d..00000000 --- a/core1/lib/Twig/Error.php +++ /dev/null @@ -1,232 +0,0 @@ - - */ -class Twig_Error extends Exception -{ - protected $lineno; - protected $filename; - protected $rawMessage; - protected $previous; - - /** - * Constructor. - * - * Set both the line number and the filename to false to - * disable automatic guessing of the original template name - * and line number. - * - * Set the line number to -1 to enable its automatic guessing. - * Set the filename to null to enable its automatic guessing. - * - * By default, automatic guessing is enabled. - * - * @param string $message The error message - * @param integer $lineno The template line where the error occurred - * @param string $filename The template file name where the error occurred - * @param Exception $previous The previous exception - */ - public function __construct($message, $lineno = -1, $filename = null, Exception $previous = null) - { - if (version_compare(PHP_VERSION, '5.3.0', '<')) { - $this->previous = $previous; - parent::__construct(''); - } else { - parent::__construct('', 0, $previous); - } - - $this->lineno = $lineno; - $this->filename = $filename; - - if (-1 === $this->lineno || null === $this->filename) { - $this->guessTemplateInfo(); - } - - $this->rawMessage = $message; - - $this->updateRepr(); - } - - /** - * Gets the raw message. - * - * @return string The raw message - */ - public function getRawMessage() - { - return $this->rawMessage; - } - - /** - * Gets the filename where the error occurred. - * - * @return string The filename - */ - public function getTemplateFile() - { - return $this->filename; - } - - /** - * Sets the filename where the error occurred. - * - * @param string $filename The filename - */ - public function setTemplateFile($filename) - { - $this->filename = $filename; - - $this->updateRepr(); - } - - /** - * Gets the template line where the error occurred. - * - * @return integer The template line - */ - public function getTemplateLine() - { - return $this->lineno; - } - - /** - * Sets the template line where the error occurred. - * - * @param integer $lineno The template line - */ - public function setTemplateLine($lineno) - { - $this->lineno = $lineno; - - $this->updateRepr(); - } - - public function guess() - { - $this->guessTemplateInfo(); - $this->updateRepr(); - } - - /** - * For PHP < 5.3.0, provides access to the getPrevious() method. - * - * @param string $method The method name - * @param array $arguments The parameters to be passed to the method - * - * @return Exception The previous exception or null - * - * @throws BadMethodCallException - */ - public function __call($method, $arguments) - { - if ('getprevious' == strtolower($method)) { - return $this->previous; - } - - throw new BadMethodCallException(sprintf('Method "Twig_Error::%s()" does not exist.', $method)); - } - - protected function updateRepr() - { - $this->message = $this->rawMessage; - - $dot = false; - if ('.' === substr($this->message, -1)) { - $this->message = substr($this->message, 0, -1); - $dot = true; - } - - if ($this->filename) { - if (is_string($this->filename) || (is_object($this->filename) && method_exists($this->filename, '__toString'))) { - $filename = sprintf('"%s"', $this->filename); - } else { - $filename = json_encode($this->filename); - } - $this->message .= sprintf(' in %s', $filename); - } - - if ($this->lineno && $this->lineno >= 0) { - $this->message .= sprintf(' at line %d', $this->lineno); - } - - if ($dot) { - $this->message .= '.'; - } - } - - protected function guessTemplateInfo() - { - $template = null; - foreach (debug_backtrace() as $trace) { - if (isset($trace['object']) && $trace['object'] instanceof Twig_Template && 'Twig_Template' !== get_class($trace['object'])) { - if (null === $this->filename || $this->filename == $trace['object']->getTemplateName()) { - $template = $trace['object']; - } - } - } - - // update template filename - if (null !== $template && null === $this->filename) { - $this->filename = $template->getTemplateName(); - } - - if (null === $template || $this->lineno > -1) { - return; - } - - $r = new ReflectionObject($template); - $file = $r->getFileName(); - - $exceptions = array($e = $this); - while (($e instanceof self || method_exists($e, 'getPrevious')) && $e = $e->getPrevious()) { - $exceptions[] = $e; - } - - while ($e = array_pop($exceptions)) { - $traces = $e->getTrace(); - while ($trace = array_shift($traces)) { - if (!isset($trace['file']) || !isset($trace['line']) || $file != $trace['file']) { - continue; - } - - foreach ($template->getDebugInfo() as $codeLine => $templateLine) { - if ($codeLine <= $trace['line']) { - // update template line - $this->lineno = $templateLine; - - return; - } - } - } - } - } -} diff --git a/core1/lib/Twig/Error/Loader.php b/core1/lib/Twig/Error/Loader.php deleted file mode 100644 index 68efb574..00000000 --- a/core1/lib/Twig/Error/Loader.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class Twig_Error_Loader extends Twig_Error -{ - public function __construct($message, $lineno = -1, $filename = null, Exception $previous = null) - { - parent::__construct($message, false, false, $previous); - } -} diff --git a/core1/lib/Twig/Error/Runtime.php b/core1/lib/Twig/Error/Runtime.php deleted file mode 100644 index 8b6ceddb..00000000 --- a/core1/lib/Twig/Error/Runtime.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ -class Twig_Error_Runtime extends Twig_Error -{ -} diff --git a/core1/lib/Twig/Error/Syntax.php b/core1/lib/Twig/Error/Syntax.php deleted file mode 100644 index 0f5c5792..00000000 --- a/core1/lib/Twig/Error/Syntax.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ -class Twig_Error_Syntax extends Twig_Error -{ -} diff --git a/core1/lib/Twig/ExistsLoaderInterface.php b/core1/lib/Twig/ExistsLoaderInterface.php deleted file mode 100644 index ce434765..00000000 --- a/core1/lib/Twig/ExistsLoaderInterface.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -interface Twig_ExistsLoaderInterface -{ - /** - * Check if we have the source code of a template, given its name. - * - * @param string $name The name of the template to check if we can load - * - * @return boolean If the template source code is handled by this loader or not - */ - public function exists($name); -} diff --git a/core1/lib/Twig/ExpressionParser.php b/core1/lib/Twig/ExpressionParser.php deleted file mode 100644 index f4d16cc7..00000000 --- a/core1/lib/Twig/ExpressionParser.php +++ /dev/null @@ -1,600 +0,0 @@ - - */ -class Twig_ExpressionParser -{ - const OPERATOR_LEFT = 1; - const OPERATOR_RIGHT = 2; - - protected $parser; - protected $unaryOperators; - protected $binaryOperators; - - public function __construct(Twig_Parser $parser, array $unaryOperators, array $binaryOperators) - { - $this->parser = $parser; - $this->unaryOperators = $unaryOperators; - $this->binaryOperators = $binaryOperators; - } - - public function parseExpression($precedence = 0) - { - $expr = $this->getPrimary(); - $token = $this->parser->getCurrentToken(); - while ($this->isBinary($token) && $this->binaryOperators[$token->getValue()]['precedence'] >= $precedence) { - $op = $this->binaryOperators[$token->getValue()]; - $this->parser->getStream()->next(); - - if (isset($op['callable'])) { - $expr = call_user_func($op['callable'], $this->parser, $expr); - } else { - $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence']); - $class = $op['class']; - $expr = new $class($expr, $expr1, $token->getLine()); - } - - $token = $this->parser->getCurrentToken(); - } - - if (0 === $precedence) { - return $this->parseConditionalExpression($expr); - } - - return $expr; - } - - protected function getPrimary() - { - $token = $this->parser->getCurrentToken(); - - if ($this->isUnary($token)) { - $operator = $this->unaryOperators[$token->getValue()]; - $this->parser->getStream()->next(); - $expr = $this->parseExpression($operator['precedence']); - $class = $operator['class']; - - return $this->parsePostfixExpression(new $class($expr, $token->getLine())); - } elseif ($token->test(Twig_Token::PUNCTUATION_TYPE, '(')) { - $this->parser->getStream()->next(); - $expr = $this->parseExpression(); - $this->parser->getStream()->expect(Twig_Token::PUNCTUATION_TYPE, ')', 'An opened parenthesis is not properly closed'); - - return $this->parsePostfixExpression($expr); - } - - return $this->parsePrimaryExpression(); - } - - protected function parseConditionalExpression($expr) - { - while ($this->parser->getStream()->test(Twig_Token::PUNCTUATION_TYPE, '?')) { - $this->parser->getStream()->next(); - if (!$this->parser->getStream()->test(Twig_Token::PUNCTUATION_TYPE, ':')) { - $expr2 = $this->parseExpression(); - if ($this->parser->getStream()->test(Twig_Token::PUNCTUATION_TYPE, ':')) { - $this->parser->getStream()->next(); - $expr3 = $this->parseExpression(); - } else { - $expr3 = new Twig_Node_Expression_Constant('', $this->parser->getCurrentToken()->getLine()); - } - } else { - $this->parser->getStream()->next(); - $expr2 = $expr; - $expr3 = $this->parseExpression(); - } - - $expr = new Twig_Node_Expression_Conditional($expr, $expr2, $expr3, $this->parser->getCurrentToken()->getLine()); - } - - return $expr; - } - - protected function isUnary(Twig_Token $token) - { - return $token->test(Twig_Token::OPERATOR_TYPE) && isset($this->unaryOperators[$token->getValue()]); - } - - protected function isBinary(Twig_Token $token) - { - return $token->test(Twig_Token::OPERATOR_TYPE) && isset($this->binaryOperators[$token->getValue()]); - } - - public function parsePrimaryExpression() - { - $token = $this->parser->getCurrentToken(); - switch ($token->getType()) { - case Twig_Token::NAME_TYPE: - $this->parser->getStream()->next(); - switch ($token->getValue()) { - case 'true': - case 'TRUE': - $node = new Twig_Node_Expression_Constant(true, $token->getLine()); - break; - - case 'false': - case 'FALSE': - $node = new Twig_Node_Expression_Constant(false, $token->getLine()); - break; - - case 'none': - case 'NONE': - case 'null': - case 'NULL': - $node = new Twig_Node_Expression_Constant(null, $token->getLine()); - break; - - default: - if ('(' === $this->parser->getCurrentToken()->getValue()) { - $node = $this->getFunctionNode($token->getValue(), $token->getLine()); - } else { - $node = new Twig_Node_Expression_Name($token->getValue(), $token->getLine()); - } - } - break; - - case Twig_Token::NUMBER_TYPE: - $this->parser->getStream()->next(); - $node = new Twig_Node_Expression_Constant($token->getValue(), $token->getLine()); - break; - - case Twig_Token::STRING_TYPE: - case Twig_Token::INTERPOLATION_START_TYPE: - $node = $this->parseStringExpression(); - break; - - default: - if ($token->test(Twig_Token::PUNCTUATION_TYPE, '[')) { - $node = $this->parseArrayExpression(); - } elseif ($token->test(Twig_Token::PUNCTUATION_TYPE, '{')) { - $node = $this->parseHashExpression(); - } else { - throw new Twig_Error_Syntax(sprintf('Unexpected token "%s" of value "%s"', Twig_Token::typeToEnglish($token->getType(), $token->getLine()), $token->getValue()), $token->getLine(), $this->parser->getFilename()); - } - } - - return $this->parsePostfixExpression($node); - } - - public function parseStringExpression() - { - $stream = $this->parser->getStream(); - - $nodes = array(); - // a string cannot be followed by another string in a single expression - $nextCanBeString = true; - while (true) { - if ($stream->test(Twig_Token::STRING_TYPE) && $nextCanBeString) { - $token = $stream->next(); - $nodes[] = new Twig_Node_Expression_Constant($token->getValue(), $token->getLine()); - $nextCanBeString = false; - } elseif ($stream->test(Twig_Token::INTERPOLATION_START_TYPE)) { - $stream->next(); - $nodes[] = $this->parseExpression(); - $stream->expect(Twig_Token::INTERPOLATION_END_TYPE); - $nextCanBeString = true; - } else { - break; - } - } - - $expr = array_shift($nodes); - foreach ($nodes as $node) { - $expr = new Twig_Node_Expression_Binary_Concat($expr, $node, $node->getLine()); - } - - return $expr; - } - - public function parseArrayExpression() - { - $stream = $this->parser->getStream(); - $stream->expect(Twig_Token::PUNCTUATION_TYPE, '[', 'An array element was expected'); - - $node = new Twig_Node_Expression_Array(array(), $stream->getCurrent()->getLine()); - $first = true; - while (!$stream->test(Twig_Token::PUNCTUATION_TYPE, ']')) { - if (!$first) { - $stream->expect(Twig_Token::PUNCTUATION_TYPE, ',', 'An array element must be followed by a comma'); - - // trailing ,? - if ($stream->test(Twig_Token::PUNCTUATION_TYPE, ']')) { - break; - } - } - $first = false; - - $node->addElement($this->parseExpression()); - } - $stream->expect(Twig_Token::PUNCTUATION_TYPE, ']', 'An opened array is not properly closed'); - - return $node; - } - - public function parseHashExpression() - { - $stream = $this->parser->getStream(); - $stream->expect(Twig_Token::PUNCTUATION_TYPE, '{', 'A hash element was expected'); - - $node = new Twig_Node_Expression_Array(array(), $stream->getCurrent()->getLine()); - $first = true; - while (!$stream->test(Twig_Token::PUNCTUATION_TYPE, '}')) { - if (!$first) { - $stream->expect(Twig_Token::PUNCTUATION_TYPE, ',', 'A hash value must be followed by a comma'); - - // trailing ,? - if ($stream->test(Twig_Token::PUNCTUATION_TYPE, '}')) { - break; - } - } - $first = false; - - // a hash key can be: - // - // * a number -- 12 - // * a string -- 'a' - // * a name, which is equivalent to a string -- a - // * an expression, which must be enclosed in parentheses -- (1 + 2) - if ($stream->test(Twig_Token::STRING_TYPE) || $stream->test(Twig_Token::NAME_TYPE) || $stream->test(Twig_Token::NUMBER_TYPE)) { - $token = $stream->next(); - $key = new Twig_Node_Expression_Constant($token->getValue(), $token->getLine()); - } elseif ($stream->test(Twig_Token::PUNCTUATION_TYPE, '(')) { - $key = $this->parseExpression(); - } else { - $current = $stream->getCurrent(); - - throw new Twig_Error_Syntax(sprintf('A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "%s" of value "%s"', Twig_Token::typeToEnglish($current->getType(), $current->getLine()), $current->getValue()), $current->getLine(), $this->parser->getFilename()); - } - - $stream->expect(Twig_Token::PUNCTUATION_TYPE, ':', 'A hash key must be followed by a colon (:)'); - $value = $this->parseExpression(); - - $node->addElement($value, $key); - } - $stream->expect(Twig_Token::PUNCTUATION_TYPE, '}', 'An opened hash is not properly closed'); - - return $node; - } - - public function parsePostfixExpression($node) - { - while (true) { - $token = $this->parser->getCurrentToken(); - if ($token->getType() == Twig_Token::PUNCTUATION_TYPE) { - if ('.' == $token->getValue() || '[' == $token->getValue()) { - $node = $this->parseSubscriptExpression($node); - } elseif ('|' == $token->getValue()) { - $node = $this->parseFilterExpression($node); - } else { - break; - } - } else { - break; - } - } - - return $node; - } - - public function getFunctionNode($name, $line) - { - switch ($name) { - case 'parent': - $args = $this->parseArguments(); - if (!count($this->parser->getBlockStack())) { - throw new Twig_Error_Syntax('Calling "parent" outside a block is forbidden', $line, $this->parser->getFilename()); - } - - if (!$this->parser->getParent() && !$this->parser->hasTraits()) { - throw new Twig_Error_Syntax('Calling "parent" on a template that does not extend nor "use" another template is forbidden', $line, $this->parser->getFilename()); - } - - return new Twig_Node_Expression_Parent($this->parser->peekBlockStack(), $line); - case 'block': - return new Twig_Node_Expression_BlockReference($this->parseArguments()->getNode(0), false, $line); - case 'attribute': - $args = $this->parseArguments(); - if (count($args) < 2) { - throw new Twig_Error_Syntax('The "attribute" function takes at least two arguments (the variable and the attributes)', $line, $this->parser->getFilename()); - } - - return new Twig_Node_Expression_GetAttr($args->getNode(0), $args->getNode(1), count($args) > 2 ? $args->getNode(2) : new Twig_Node_Expression_Array(array(), $line), Twig_TemplateInterface::ANY_CALL, $line); - default: - if (null !== $alias = $this->parser->getImportedSymbol('function', $name)) { - $arguments = new Twig_Node_Expression_Array(array(), $line); - foreach ($this->parseArguments() as $n) { - $arguments->addElement($n); - } - - $node = new Twig_Node_Expression_MethodCall($alias['node'], $alias['name'], $arguments, $line); - $node->setAttribute('safe', true); - - return $node; - } - - $args = $this->parseArguments(true); - $class = $this->getFunctionNodeClass($name, $line); - - return new $class($name, $args, $line); - } - } - - public function parseSubscriptExpression($node) - { - $stream = $this->parser->getStream(); - $token = $stream->next(); - $lineno = $token->getLine(); - $arguments = new Twig_Node_Expression_Array(array(), $lineno); - $type = Twig_TemplateInterface::ANY_CALL; - if ($token->getValue() == '.') { - $token = $stream->next(); - if ( - $token->getType() == Twig_Token::NAME_TYPE - || - $token->getType() == Twig_Token::NUMBER_TYPE - || - ($token->getType() == Twig_Token::OPERATOR_TYPE && preg_match(Twig_Lexer::REGEX_NAME, $token->getValue())) - ) { - $arg = new Twig_Node_Expression_Constant($token->getValue(), $lineno); - - if ($stream->test(Twig_Token::PUNCTUATION_TYPE, '(')) { - $type = Twig_TemplateInterface::METHOD_CALL; - foreach ($this->parseArguments() as $n) { - $arguments->addElement($n); - } - } - } else { - throw new Twig_Error_Syntax('Expected name or number', $lineno, $this->parser->getFilename()); - } - - if ($node instanceof Twig_Node_Expression_Name && null !== $alias = $this->parser->getImportedSymbol('template', $node->getAttribute('name'))) { - if (!$arg instanceof Twig_Node_Expression_Constant) { - throw new Twig_Error_Syntax(sprintf('Dynamic macro names are not supported (called on "%s")', $node->getAttribute('name')), $token->getLine(), $this->parser->getFilename()); - } - - $node = new Twig_Node_Expression_MethodCall($node, 'get'.$arg->getAttribute('value'), $arguments, $lineno); - $node->setAttribute('safe', true); - - return $node; - } - } else { - $type = Twig_TemplateInterface::ARRAY_CALL; - - // slice? - $slice = false; - if ($stream->test(Twig_Token::PUNCTUATION_TYPE, ':')) { - $slice = true; - $arg = new Twig_Node_Expression_Constant(0, $token->getLine()); - } else { - $arg = $this->parseExpression(); - } - - if ($stream->test(Twig_Token::PUNCTUATION_TYPE, ':')) { - $slice = true; - $stream->next(); - } - - if ($slice) { - if ($stream->test(Twig_Token::PUNCTUATION_TYPE, ']')) { - $length = new Twig_Node_Expression_Constant(null, $token->getLine()); - } else { - $length = $this->parseExpression(); - } - - $class = $this->getFilterNodeClass('slice', $token->getLine()); - $arguments = new Twig_Node(array($arg, $length)); - $filter = new $class($node, new Twig_Node_Expression_Constant('slice', $token->getLine()), $arguments, $token->getLine()); - - $stream->expect(Twig_Token::PUNCTUATION_TYPE, ']'); - - return $filter; - } - - $stream->expect(Twig_Token::PUNCTUATION_TYPE, ']'); - } - - return new Twig_Node_Expression_GetAttr($node, $arg, $arguments, $type, $lineno); - } - - public function parseFilterExpression($node) - { - $this->parser->getStream()->next(); - - return $this->parseFilterExpressionRaw($node); - } - - public function parseFilterExpressionRaw($node, $tag = null) - { - while (true) { - $token = $this->parser->getStream()->expect(Twig_Token::NAME_TYPE); - - $name = new Twig_Node_Expression_Constant($token->getValue(), $token->getLine()); - if (!$this->parser->getStream()->test(Twig_Token::PUNCTUATION_TYPE, '(')) { - $arguments = new Twig_Node(); - } else { - $arguments = $this->parseArguments(true); - } - - $class = $this->getFilterNodeClass($name->getAttribute('value'), $token->getLine()); - - $node = new $class($node, $name, $arguments, $token->getLine(), $tag); - - if (!$this->parser->getStream()->test(Twig_Token::PUNCTUATION_TYPE, '|')) { - break; - } - - $this->parser->getStream()->next(); - } - - return $node; - } - - /** - * Parses arguments. - * - * @param Boolean $namedArguments Whether to allow named arguments or not - * @param Boolean $definition Whether we are parsing arguments for a function definition - */ - public function parseArguments($namedArguments = false, $definition = false) - { - $args = array(); - $stream = $this->parser->getStream(); - - $stream->expect(Twig_Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis'); - while (!$stream->test(Twig_Token::PUNCTUATION_TYPE, ')')) { - if (!empty($args)) { - $stream->expect(Twig_Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma'); - } - - if ($definition) { - $token = $stream->expect(Twig_Token::NAME_TYPE, null, 'An argument must be a name'); - $value = new Twig_Node_Expression_Name($token->getValue(), $this->parser->getCurrentToken()->getLine()); - } else { - $value = $this->parseExpression(); - } - - $name = null; - if ($namedArguments && $stream->test(Twig_Token::OPERATOR_TYPE, '=')) { - $token = $stream->next(); - if (!$value instanceof Twig_Node_Expression_Name) { - throw new Twig_Error_Syntax(sprintf('A parameter name must be a string, "%s" given', get_class($value)), $token->getLine(), $this->parser->getFilename()); - } - $name = $value->getAttribute('name'); - - if ($definition) { - $value = $this->parsePrimaryExpression(); - - if (!$this->checkConstantExpression($value)) { - throw new Twig_Error_Syntax(sprintf('A default value for an argument must be a constant (a boolean, a string, a number, or an array).'), $token->getLine(), $this->parser->getFilename()); - } - } else { - $value = $this->parseExpression(); - } - } - - if ($definition) { - if (null === $name) { - $name = $value->getAttribute('name'); - $value = new Twig_Node_Expression_Constant(null, $this->parser->getCurrentToken()->getLine()); - } - $args[$name] = $value; - } else { - if (null === $name) { - $args[] = $value; - } else { - $args[$name] = $value; - } - } - } - $stream->expect(Twig_Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis'); - - return new Twig_Node($args); - } - - public function parseAssignmentExpression() - { - $targets = array(); - while (true) { - $token = $this->parser->getStream()->expect(Twig_Token::NAME_TYPE, null, 'Only variables can be assigned to'); - if (in_array($token->getValue(), array('true', 'false', 'none'))) { - throw new Twig_Error_Syntax(sprintf('You cannot assign a value to "%s"', $token->getValue()), $token->getLine(), $this->parser->getFilename()); - } - $targets[] = new Twig_Node_Expression_AssignName($token->getValue(), $token->getLine()); - - if (!$this->parser->getStream()->test(Twig_Token::PUNCTUATION_TYPE, ',')) { - break; - } - $this->parser->getStream()->next(); - } - - return new Twig_Node($targets); - } - - public function parseMultitargetExpression() - { - $targets = array(); - while (true) { - $targets[] = $this->parseExpression(); - if (!$this->parser->getStream()->test(Twig_Token::PUNCTUATION_TYPE, ',')) { - break; - } - $this->parser->getStream()->next(); - } - - return new Twig_Node($targets); - } - - protected function getFunctionNodeClass($name, $line) - { - $env = $this->parser->getEnvironment(); - - if (false === $function = $env->getFunction($name)) { - $message = sprintf('The function "%s" does not exist', $name); - if ($alternatives = $env->computeAlternatives($name, array_keys($env->getFunctions()))) { - $message = sprintf('%s. Did you mean "%s"', $message, implode('", "', $alternatives)); - } - - throw new Twig_Error_Syntax($message, $line, $this->parser->getFilename()); - } - - if ($function instanceof Twig_SimpleFunction) { - return $function->getNodeClass(); - } - - return $function instanceof Twig_Function_Node ? $function->getClass() : 'Twig_Node_Expression_Function'; - } - - protected function getFilterNodeClass($name, $line) - { - $env = $this->parser->getEnvironment(); - - if (false === $filter = $env->getFilter($name)) { - $message = sprintf('The filter "%s" does not exist', $name); - if ($alternatives = $env->computeAlternatives($name, array_keys($env->getFilters()))) { - $message = sprintf('%s. Did you mean "%s"', $message, implode('", "', $alternatives)); - } - - throw new Twig_Error_Syntax($message, $line, $this->parser->getFilename()); - } - - if ($filter instanceof Twig_SimpleFilter) { - return $filter->getNodeClass(); - } - - return $filter instanceof Twig_Filter_Node ? $filter->getClass() : 'Twig_Node_Expression_Filter'; - } - - // checks that the node only contains "constant" elements - protected function checkConstantExpression(Twig_NodeInterface $node) - { - if (!($node instanceof Twig_Node_Expression_Constant || $node instanceof Twig_Node_Expression_Array)) { - return false; - } - - foreach ($node as $n) { - if (!$this->checkConstantExpression($n)) { - return false; - } - } - - return true; - } -} diff --git a/core1/lib/Twig/Extension.php b/core1/lib/Twig/Extension.php deleted file mode 100644 index 931fc033..00000000 --- a/core1/lib/Twig/Extension.php +++ /dev/null @@ -1,93 +0,0 @@ -dateFormats[0] = $format; - } - - if (null !== $dateIntervalFormat) { - $this->dateFormats[1] = $dateIntervalFormat; - } - } - - /** - * Gets the default format to be used by the date filter. - * - * @return array The default date format string and the default date interval format string - */ - public function getDateFormat() - { - return $this->dateFormats; - } - - /** - * Sets the default timezone to be used by the date filter. - * - * @param DateTimeZone|string $timezone The default timezone string or a DateTimeZone object - */ - public function setTimezone($timezone) - { - $this->timezone = $timezone instanceof DateTimeZone ? $timezone : new DateTimeZone($timezone); - } - - /** - * Gets the default timezone to be used by the date filter. - * - * @return DateTimeZone The default timezone currently in use - */ - public function getTimezone() - { - if (null === $this->timezone) { - $this->timezone = new DateTimeZone(date_default_timezone_get()); - } - - return $this->timezone; - } - - /** - * Sets the default format to be used by the number_format filter. - * - * @param integer $decimal The number of decimal places to use. - * @param string $decimalPoint The character(s) to use for the decimal point. - * @param string $thousandSep The character(s) to use for the thousands separator. - */ - public function setNumberFormat($decimal, $decimalPoint, $thousandSep) - { - $this->numberFormat = array($decimal, $decimalPoint, $thousandSep); - } - - /** - * Get the default format used by the number_format filter. - * - * @return array The arguments for number_format() - */ - public function getNumberFormat() - { - return $this->numberFormat; - } - - /** - * Returns the token parser instance to add to the existing list. - * - * @return array An array of Twig_TokenParser instances - */ - public function getTokenParsers() - { - return array( - new Twig_TokenParser_For(), - new Twig_TokenParser_If(), - new Twig_TokenParser_Extends(), - new Twig_TokenParser_Include(), - new Twig_TokenParser_Block(), - new Twig_TokenParser_Use(), - new Twig_TokenParser_Filter(), - new Twig_TokenParser_Macro(), - new Twig_TokenParser_Import(), - new Twig_TokenParser_From(), - new Twig_TokenParser_Set(), - new Twig_TokenParser_Spaceless(), - new Twig_TokenParser_Flush(), - new Twig_TokenParser_Do(), - new Twig_TokenParser_Embed(), - ); - } - - /** - * Returns a list of filters to add to the existing list. - * - * @return array An array of filters - */ - public function getFilters() - { - $filters = array( - // formatting filters - new Twig_SimpleFilter('date', 'twig_date_format_filter', array('needs_environment' => true)), - new Twig_SimpleFilter('date_modify', 'twig_date_modify_filter', array('needs_environment' => true)), - new Twig_SimpleFilter('format', 'sprintf'), - new Twig_SimpleFilter('replace', 'strtr'), - new Twig_SimpleFilter('number_format', 'twig_number_format_filter', array('needs_environment' => true)), - new Twig_SimpleFilter('abs', 'abs'), - - // encoding - new Twig_SimpleFilter('url_encode', 'twig_urlencode_filter'), - new Twig_SimpleFilter('json_encode', 'twig_jsonencode_filter'), - new Twig_SimpleFilter('convert_encoding', 'twig_convert_encoding'), - - // string filters - new Twig_SimpleFilter('title', 'twig_title_string_filter', array('needs_environment' => true)), - new Twig_SimpleFilter('capitalize', 'twig_capitalize_string_filter', array('needs_environment' => true)), - new Twig_SimpleFilter('upper', 'strtoupper'), - new Twig_SimpleFilter('lower', 'strtolower'), - new Twig_SimpleFilter('striptags', 'strip_tags'), - new Twig_SimpleFilter('trim', 'trim'), - new Twig_SimpleFilter('nl2br', 'nl2br', array('pre_escape' => 'html', 'is_safe' => array('html'))), - - // array helpers - new Twig_SimpleFilter('join', 'twig_join_filter'), - new Twig_SimpleFilter('split', 'twig_split_filter'), - new Twig_SimpleFilter('sort', 'twig_sort_filter'), - new Twig_SimpleFilter('merge', 'twig_array_merge'), - new Twig_SimpleFilter('batch', 'twig_array_batch'), - - // string/array filters - new Twig_SimpleFilter('reverse', 'twig_reverse_filter', array('needs_environment' => true)), - new Twig_SimpleFilter('length', 'twig_length_filter', array('needs_environment' => true)), - new Twig_SimpleFilter('slice', 'twig_slice', array('needs_environment' => true)), - new Twig_SimpleFilter('first', 'twig_first', array('needs_environment' => true)), - new Twig_SimpleFilter('last', 'twig_last', array('needs_environment' => true)), - - // iteration and runtime - new Twig_SimpleFilter('default', '_twig_default_filter', array('node_class' => 'Twig_Node_Expression_Filter_Default')), - new Twig_SimpleFilter('keys', 'twig_get_array_keys_filter'), - - // escaping - new Twig_SimpleFilter('escape', 'twig_escape_filter', array('needs_environment' => true, 'is_safe_callback' => 'twig_escape_filter_is_safe')), - new Twig_SimpleFilter('e', 'twig_escape_filter', array('needs_environment' => true, 'is_safe_callback' => 'twig_escape_filter_is_safe')), - ); - - if (function_exists('mb_get_info')) { - $filters[] = new Twig_SimpleFilter('upper', 'twig_upper_filter', array('needs_environment' => true)); - $filters[] = new Twig_SimpleFilter('lower', 'twig_lower_filter', array('needs_environment' => true)); - } - - return $filters; - } - - /** - * Returns a list of global functions to add to the existing list. - * - * @return array An array of global functions - */ - public function getFunctions() - { - return array( - new Twig_SimpleFunction('range', 'range'), - new Twig_SimpleFunction('constant', 'twig_constant'), - new Twig_SimpleFunction('cycle', 'twig_cycle'), - new Twig_SimpleFunction('random', 'twig_random', array('needs_environment' => true)), - new Twig_SimpleFunction('date', 'twig_date_converter', array('needs_environment' => true)), - new Twig_SimpleFunction('include', 'twig_include', array('needs_environment' => true, 'needs_context' => true)), - ); - } - - /** - * Returns a list of tests to add to the existing list. - * - * @return array An array of tests - */ - public function getTests() - { - return array( - new Twig_SimpleTest('even', null, array('node_class' => 'Twig_Node_Expression_Test_Even')), - new Twig_SimpleTest('odd', null, array('node_class' => 'Twig_Node_Expression_Test_Odd')), - new Twig_SimpleTest('defined', null, array('node_class' => 'Twig_Node_Expression_Test_Defined')), - new Twig_SimpleTest('sameas', null, array('node_class' => 'Twig_Node_Expression_Test_Sameas')), - new Twig_SimpleTest('none', null, array('node_class' => 'Twig_Node_Expression_Test_Null')), - new Twig_SimpleTest('null', null, array('node_class' => 'Twig_Node_Expression_Test_Null')), - new Twig_SimpleTest('divisibleby', null, array('node_class' => 'Twig_Node_Expression_Test_Divisibleby')), - new Twig_SimpleTest('constant', null, array('node_class' => 'Twig_Node_Expression_Test_Constant')), - new Twig_SimpleTest('empty', 'twig_test_empty'), - new Twig_SimpleTest('iterable', 'twig_test_iterable'), - ); - } - - /** - * Returns a list of operators to add to the existing list. - * - * @return array An array of operators - */ - public function getOperators() - { - return array( - array( - 'not' => array('precedence' => 50, 'class' => 'Twig_Node_Expression_Unary_Not'), - '-' => array('precedence' => 500, 'class' => 'Twig_Node_Expression_Unary_Neg'), - '+' => array('precedence' => 500, 'class' => 'Twig_Node_Expression_Unary_Pos'), - ), - array( - 'or' => array('precedence' => 10, 'class' => 'Twig_Node_Expression_Binary_Or', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - 'and' => array('precedence' => 15, 'class' => 'Twig_Node_Expression_Binary_And', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - 'b-or' => array('precedence' => 16, 'class' => 'Twig_Node_Expression_Binary_BitwiseOr', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - 'b-xor' => array('precedence' => 17, 'class' => 'Twig_Node_Expression_Binary_BitwiseXor', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - 'b-and' => array('precedence' => 18, 'class' => 'Twig_Node_Expression_Binary_BitwiseAnd', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - '==' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Equal', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - '!=' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_NotEqual', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - '<' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Less', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - '>' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Greater', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - '>=' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_GreaterEqual', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - '<=' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_LessEqual', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - 'not in' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_NotIn', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - 'in' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_In', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - '..' => array('precedence' => 25, 'class' => 'Twig_Node_Expression_Binary_Range', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - '+' => array('precedence' => 30, 'class' => 'Twig_Node_Expression_Binary_Add', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - '-' => array('precedence' => 30, 'class' => 'Twig_Node_Expression_Binary_Sub', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - '~' => array('precedence' => 40, 'class' => 'Twig_Node_Expression_Binary_Concat', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - '*' => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_Mul', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - '/' => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_Div', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - '//' => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_FloorDiv', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - '%' => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_Mod', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - 'is' => array('precedence' => 100, 'callable' => array($this, 'parseTestExpression'), 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - 'is not' => array('precedence' => 100, 'callable' => array($this, 'parseNotTestExpression'), 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), - '**' => array('precedence' => 200, 'class' => 'Twig_Node_Expression_Binary_Power', 'associativity' => Twig_ExpressionParser::OPERATOR_RIGHT), - ), - ); - } - - public function parseNotTestExpression(Twig_Parser $parser, $node) - { - return new Twig_Node_Expression_Unary_Not($this->parseTestExpression($parser, $node), $parser->getCurrentToken()->getLine()); - } - - public function parseTestExpression(Twig_Parser $parser, $node) - { - $stream = $parser->getStream(); - $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); - $arguments = null; - if ($stream->test(Twig_Token::PUNCTUATION_TYPE, '(')) { - $arguments = $parser->getExpressionParser()->parseArguments(true); - } - - $class = $this->getTestNodeClass($parser, $name, $node->getLine()); - - return new $class($node, $name, $arguments, $parser->getCurrentToken()->getLine()); - } - - protected function getTestNodeClass(Twig_Parser $parser, $name, $line) - { - $env = $parser->getEnvironment(); - $testMap = $env->getTests(); - if (!isset($testMap[$name])) { - $message = sprintf('The test "%s" does not exist', $name); - if ($alternatives = $env->computeAlternatives($name, array_keys($env->getTests()))) { - $message = sprintf('%s. Did you mean "%s"', $message, implode('", "', $alternatives)); - } - - throw new Twig_Error_Syntax($message, $line, $parser->getFilename()); - } - - if ($testMap[$name] instanceof Twig_SimpleTest) { - return $testMap[$name]->getNodeClass(); - } - - return $testMap[$name] instanceof Twig_Test_Node ? $testMap[$name]->getClass() : 'Twig_Node_Expression_Test'; - } - - /** - * Returns the name of the extension. - * - * @return string The extension name - */ - public function getName() - { - return 'core'; - } -} - -/** - * Cycles over a value. - * - * @param ArrayAccess|array $values An array or an ArrayAccess instance - * @param integer $position The cycle position - * - * @return string The next value in the cycle - */ -function twig_cycle($values, $position) -{ - if (!is_array($values) && !$values instanceof ArrayAccess) { - return $values; - } - - return $values[$position % count($values)]; -} - -/** - * Returns a random value depending on the supplied parameter type: - * - a random item from a Traversable or array - * - a random character from a string - * - a random integer between 0 and the integer parameter - * - * @param Twig_Environment $env A Twig_Environment instance - * @param Traversable|array|integer|string $values The values to pick a random item from - * - * @throws Twig_Error_Runtime When $values is an empty array (does not apply to an empty string which is returned as is). - * - * @return mixed A random value from the given sequence - */ -function twig_random(Twig_Environment $env, $values = null) -{ - if (null === $values) { - return mt_rand(); - } - - if (is_int($values) || is_float($values)) { - return $values < 0 ? mt_rand($values, 0) : mt_rand(0, $values); - } - - if ($values instanceof Traversable) { - $values = iterator_to_array($values); - } elseif (is_string($values)) { - if ('' === $values) { - return ''; - } - if (null !== $charset = $env->getCharset()) { - if ('UTF-8' != $charset) { - $values = twig_convert_encoding($values, 'UTF-8', $charset); - } - - // unicode version of str_split() - // split at all positions, but not after the start and not before the end - $values = preg_split('/(? $value) { - $values[$i] = twig_convert_encoding($value, $charset, 'UTF-8'); - } - } - } else { - return $values[mt_rand(0, strlen($values) - 1)]; - } - } - - if (!is_array($values)) { - return $values; - } - - if (0 === count($values)) { - throw new Twig_Error_Runtime('The random function cannot pick from an empty array.'); - } - - return $values[array_rand($values, 1)]; -} - -/** - * Converts a date to the given format. - * - *
- *   {{ post.published_at|date("m/d/Y") }}
- * 
- * - * @param Twig_Environment $env A Twig_Environment instance - * @param DateTime|DateInterval|string $date A date - * @param string $format A format - * @param DateTimeZone|string $timezone A timezone - * - * @return string The formatted date - */ -function twig_date_format_filter(Twig_Environment $env, $date, $format = null, $timezone = null) -{ - if (null === $format) { - $formats = $env->getExtension('core')->getDateFormat(); - $format = $date instanceof DateInterval ? $formats[1] : $formats[0]; - } - - if ($date instanceof DateInterval) { - return $date->format($format); - } - - return twig_date_converter($env, $date, $timezone)->format($format); -} - -/** - * Returns a new date object modified - * - *
- *   {{ post.published_at|date_modify("-1day")|date("m/d/Y") }}
- * 
- * - * @param Twig_Environment $env A Twig_Environment instance - * @param DateTime|string $date A date - * @param string $modifier A modifier string - * - * @return DateTime A new date object - */ -function twig_date_modify_filter(Twig_Environment $env, $date, $modifier) -{ - $date = twig_date_converter($env, $date, false); - $date->modify($modifier); - - return $date; -} - -/** - * Converts an input to a DateTime instance. - * - *
- *    {% if date(user.created_at) < date('+2days') %}
- *      {# do something #}
- *    {% endif %}
- * 
- * - * @param Twig_Environment $env A Twig_Environment instance - * @param DateTime|string $date A date - * @param DateTimeZone|string $timezone A timezone - * - * @return DateTime A DateTime instance - */ -function twig_date_converter(Twig_Environment $env, $date = null, $timezone = null) -{ - // determine the timezone - if (!$timezone) { - $defaultTimezone = $env->getExtension('core')->getTimezone(); - } elseif (!$timezone instanceof DateTimeZone) { - $defaultTimezone = new DateTimeZone($timezone); - } else { - $defaultTimezone = $timezone; - } - - if ($date instanceof DateTime) { - $date = clone $date; - if (false !== $timezone) { - $date->setTimezone($defaultTimezone); - } - - return $date; - } - - $asString = (string) $date; - if (ctype_digit($asString) || (!empty($asString) && '-' === $asString[0] && ctype_digit(substr($asString, 1)))) { - $date = '@'.$date; - } - - $date = new DateTime($date, $defaultTimezone); - if (false !== $timezone) { - $date->setTimezone($defaultTimezone); - } - - return $date; -} - -/** - * Number format filter. - * - * All of the formatting options can be left null, in that case the defaults will - * be used. Supplying any of the parameters will override the defaults set in the - * environment object. - * - * @param Twig_Environment $env A Twig_Environment instance - * @param mixed $number A float/int/string of the number to format - * @param integer $decimal The number of decimal points to display. - * @param string $decimalPoint The character(s) to use for the decimal point. - * @param string $thousandSep The character(s) to use for the thousands separator. - * - * @return string The formatted number - */ -function twig_number_format_filter(Twig_Environment $env, $number, $decimal = null, $decimalPoint = null, $thousandSep = null) -{ - $defaults = $env->getExtension('core')->getNumberFormat(); - if (null === $decimal) { - $decimal = $defaults[0]; - } - - if (null === $decimalPoint) { - $decimalPoint = $defaults[1]; - } - - if (null === $thousandSep) { - $thousandSep = $defaults[2]; - } - - return number_format((float) $number, $decimal, $decimalPoint, $thousandSep); -} - -/** - * URL encodes a string as a path segment or an array as a query string. - * - * @param string|array $url A URL or an array of query parameters - * @param bool $raw true to use rawurlencode() instead of urlencode - * - * @return string The URL encoded value - */ -function twig_urlencode_filter($url, $raw = false) -{ - if (is_array($url)) { - return https_build_query($url, '', '&'); - } - - if ($raw) { - return rawurlencode($url); - } - - return urlencode($url); -} - -if (version_compare(PHP_VERSION, '5.3.0', '<')) { - /** - * JSON encodes a variable. - * - * @param mixed $value The value to encode. - * @param integer $options Not used on PHP 5.2.x - * - * @return mixed The JSON encoded value - */ - function twig_jsonencode_filter($value, $options = 0) - { - if ($value instanceof Twig_Markup) { - $value = (string) $value; - } elseif (is_array($value)) { - array_walk_recursive($value, '_twig_markup2string'); - } - - return json_encode($value); - } -} else { - /** - * JSON encodes a variable. - * - * @param mixed $value The value to encode. - * @param integer $options Bitmask consisting of JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT - * - * @return mixed The JSON encoded value - */ - function twig_jsonencode_filter($value, $options = 0) - { - if ($value instanceof Twig_Markup) { - $value = (string) $value; - } elseif (is_array($value)) { - array_walk_recursive($value, '_twig_markup2string'); - } - - return json_encode($value, $options); - } -} - -function _twig_markup2string(&$value) -{ - if ($value instanceof Twig_Markup) { - $value = (string) $value; - } -} - -/** - * Merges an array with another one. - * - *
- *  {% set items = { 'apple': 'fruit', 'orange': 'fruit' } %}
- *
- *  {% set items = items|merge({ 'peugeot': 'car' }) %}
- *
- *  {# items now contains { 'apple': 'fruit', 'orange': 'fruit', 'peugeot': 'car' } #}
- * 
- * - * @param array $arr1 An array - * @param array $arr2 An array - * - * @return array The merged array - */ -function twig_array_merge($arr1, $arr2) -{ - if (!is_array($arr1) || !is_array($arr2)) { - throw new Twig_Error_Runtime('The merge filter only works with arrays or hashes.'); - } - - return array_merge($arr1, $arr2); -} - -/** - * Slices a variable. - * - * @param Twig_Environment $env A Twig_Environment instance - * @param mixed $item A variable - * @param integer $start Start of the slice - * @param integer $length Size of the slice - * @param Boolean $preserveKeys Whether to preserve key or not (when the input is an array) - * - * @return mixed The sliced variable - */ -function twig_slice(Twig_Environment $env, $item, $start, $length = null, $preserveKeys = false) -{ - if ($item instanceof Traversable) { - $item = iterator_to_array($item, false); - } - - if (is_array($item)) { - return array_slice($item, $start, $length, $preserveKeys); - } - - $item = (string) $item; - - if (function_exists('mb_get_info') && null !== $charset = $env->getCharset()) { - return mb_substr($item, $start, null === $length ? mb_strlen($item, $charset) - $start : $length, $charset); - } - - return null === $length ? substr($item, $start) : substr($item, $start, $length); -} - -/** - * Returns the first element of the item. - * - * @param Twig_Environment $env A Twig_Environment instance - * @param mixed $item A variable - * - * @return mixed The first element of the item - */ -function twig_first(Twig_Environment $env, $item) -{ - $elements = twig_slice($env, $item, 0, 1, false); - - return is_string($elements) ? $elements[0] : current($elements); -} - -/** - * Returns the last element of the item. - * - * @param Twig_Environment $env A Twig_Environment instance - * @param mixed $item A variable - * - * @return mixed The last element of the item - */ -function twig_last(Twig_Environment $env, $item) -{ - $elements = twig_slice($env, $item, -1, 1, false); - - return is_string($elements) ? $elements[0] : current($elements); -} - -/** - * Joins the values to a string. - * - * The separator between elements is an empty string per default, you can define it with the optional parameter. - * - *
- *  {{ [1, 2, 3]|join('|') }}
- *  {# returns 1|2|3 #}
- *
- *  {{ [1, 2, 3]|join }}
- *  {# returns 123 #}
- * 
- * - * @param array $value An array - * @param string $glue The separator - * - * @return string The concatenated string - */ -function twig_join_filter($value, $glue = '') -{ - if ($value instanceof Traversable) { - $value = iterator_to_array($value, false); - } - - return implode($glue, (array) $value); -} - -/** - * Splits the string into an array. - * - *
- *  {{ "one,two,three"|split(',') }}
- *  {# returns [one, two, three] #}
- *
- *  {{ "one,two,three,four,five"|split(',', 3) }}
- *  {# returns [one, two, "three,four,five"] #}
- *
- *  {{ "123"|split('') }}
- *  {# returns [1, 2, 3] #}
- *
- *  {{ "aabbcc"|split('', 2) }}
- *  {# returns [aa, bb, cc] #}
- * 
- * - * @param string $value A string - * @param string $delimiter The delimiter - * @param integer $limit The limit - * - * @return array The split string as an array - */ -function twig_split_filter($value, $delimiter, $limit = null) -{ - if (empty($delimiter)) { - return str_split($value, null === $limit ? 1 : $limit); - } - - return null === $limit ? explode($delimiter, $value) : explode($delimiter, $value, $limit); -} - -// The '_default' filter is used internally to avoid using the ternary operator -// which costs a lot for big contexts (before PHP 5.4). So, on average, -// a function call is cheaper. -function _twig_default_filter($value, $default = '') -{ - if (twig_test_empty($value)) { - return $default; - } - - return $value; -} - -/** - * Returns the keys for the given array. - * - * It is useful when you want to iterate over the keys of an array: - * - *
- *  {% for key in array|keys %}
- *      {# ... #}
- *  {% endfor %}
- * 
- * - * @param array $array An array - * - * @return array The keys - */ -function twig_get_array_keys_filter($array) -{ - if (is_object($array) && $array instanceof Traversable) { - return array_keys(iterator_to_array($array)); - } - - if (!is_array($array)) { - return array(); - } - - return array_keys($array); -} - -/** - * Reverses a variable. - * - * @param Twig_Environment $env A Twig_Environment instance - * @param array|Traversable|string $item An array, a Traversable instance, or a string - * @param Boolean $preserveKeys Whether to preserve key or not - * - * @return mixed The reversed input - */ -function twig_reverse_filter(Twig_Environment $env, $item, $preserveKeys = false) -{ - if (is_object($item) && $item instanceof Traversable) { - return array_reverse(iterator_to_array($item), $preserveKeys); - } - - if (is_array($item)) { - return array_reverse($item, $preserveKeys); - } - - if (null !== $charset = $env->getCharset()) { - $string = (string) $item; - - if ('UTF-8' != $charset) { - $item = twig_convert_encoding($string, 'UTF-8', $charset); - } - - preg_match_all('/./us', $item, $matches); - - $string = implode('', array_reverse($matches[0])); - - if ('UTF-8' != $charset) { - $string = twig_convert_encoding($string, $charset, 'UTF-8'); - } - - return $string; - } - - return strrev((string) $item); -} - -/** - * Sorts an array. - * - * @param array $array An array - */ -function twig_sort_filter($array) -{ - asort($array); - - return $array; -} - -/* used internally */ -function twig_in_filter($value, $compare) -{ - if (is_array($compare)) { - return in_array($value, $compare, is_object($value)); - } elseif (is_string($compare)) { - if (!strlen($value)) { - return empty($compare); - } - - return false !== strpos($compare, (string) $value); - } elseif ($compare instanceof Traversable) { - return in_array($value, iterator_to_array($compare, false), is_object($value)); - } - - return false; -} - -/** - * Escapes a string. - * - * @param Twig_Environment $env A Twig_Environment instance - * @param string $string The value to be escaped - * @param string $strategy The escaping strategy - * @param string $charset The charset - * @param Boolean $autoescape Whether the function is called by the auto-escaping feature (true) or by the developer (false) - */ -function twig_escape_filter(Twig_Environment $env, $string, $strategy = 'html', $charset = null, $autoescape = false) -{ - if ($autoescape && is_object($string) && $string instanceof Twig_Markup) { - return $string; - } - - if (!is_string($string) && !(is_object($string) && method_exists($string, '__toString'))) { - return $string; - } - - if (null === $charset) { - $charset = $env->getCharset(); - } - - $string = (string) $string; - - switch ($strategy) { - case 'js': - // escape all non-alphanumeric characters - // into their \xHH or \uHHHH representations - if ('UTF-8' != $charset) { - $string = twig_convert_encoding($string, 'UTF-8', $charset); - } - - if (0 == strlen($string) ? false : (1 == preg_match('/^./su', $string) ? false : true)) { - throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.'); - } - - $string = preg_replace_callback('#[^a-zA-Z0-9,\._]#Su', '_twig_escape_js_callback', $string); - - if ('UTF-8' != $charset) { - $string = twig_convert_encoding($string, $charset, 'UTF-8'); - } - - return $string; - - case 'css': - if ('UTF-8' != $charset) { - $string = twig_convert_encoding($string, 'UTF-8', $charset); - } - - if (0 == strlen($string) ? false : (1 == preg_match('/^./su', $string) ? false : true)) { - throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.'); - } - - $string = preg_replace_callback('#[^a-zA-Z0-9]#Su', '_twig_escape_css_callback', $string); - - if ('UTF-8' != $charset) { - $string = twig_convert_encoding($string, $charset, 'UTF-8'); - } - - return $string; - - case 'html_attr': - if ('UTF-8' != $charset) { - $string = twig_convert_encoding($string, 'UTF-8', $charset); - } - - if (0 == strlen($string) ? false : (1 == preg_match('/^./su', $string) ? false : true)) { - throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.'); - } - - $string = preg_replace_callback('#[^a-zA-Z0-9,\.\-_]#Su', '_twig_escape_html_attr_callback', $string); - - if ('UTF-8' != $charset) { - $string = twig_convert_encoding($string, $charset, 'UTF-8'); - } - - return $string; - - case 'html': - // see https://php.net/htmlspecialchars - - // Using a static variable to avoid initializing the array - // each time the function is called. Moving the declaration on the - // top of the function slow downs other escaping strategies. - static $htmlspecialcharsCharsets = array( - 'iso-8859-1' => true, 'iso8859-1' => true, - 'iso-8859-15' => true, 'iso8859-15' => true, - 'utf-8' => true, - 'cp866' => true, 'ibm866' => true, '866' => true, - 'cp1251' => true, 'windows-1251' => true, 'win-1251' => true, - '1251' => true, - 'cp1252' => true, 'windows-1252' => true, '1252' => true, - 'koi8-r' => true, 'koi8-ru' => true, 'koi8r' => true, - 'big5' => true, '950' => true, - 'gb2312' => true, '936' => true, - 'big5-hkscs' => true, - 'shift_jis' => true, 'sjis' => true, '932' => true, - 'euc-jp' => true, 'eucjp' => true, - 'iso8859-5' => true, 'iso-8859-5' => true, 'macroman' => true, - ); - - if (isset($htmlspecialcharsCharsets[strtolower($charset)])) { - return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset); - } - - $string = twig_convert_encoding($string, 'UTF-8', $charset); - $string = htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); - - return twig_convert_encoding($string, $charset, 'UTF-8'); - - case 'url': - if (version_compare(PHP_VERSION, '5.3.0', '<')) { - return str_replace('%7E', '~', rawurlencode($string)); - } - - return rawurlencode($string); - - default: - throw new Twig_Error_Runtime(sprintf('Invalid escaping strategy "%s" (valid ones: html, js, url, css, and html_attr).', $strategy)); - } -} - -/* used internally */ -function twig_escape_filter_is_safe(Twig_Node $filterArgs) -{ - foreach ($filterArgs as $arg) { - if ($arg instanceof Twig_Node_Expression_Constant) { - return array($arg->getAttribute('value')); - } - - return array(); - } - - return array('html'); -} - -if (function_exists('mb_convert_encoding')) { - function twig_convert_encoding($string, $to, $from) - { - return mb_convert_encoding($string, $to, $from); - } -} elseif (function_exists('iconv')) { - function twig_convert_encoding($string, $to, $from) - { - return iconv($from, $to, $string); - } -} else { - function twig_convert_encoding($string, $to, $from) - { - throw new Twig_Error_Runtime('No suitable convert encoding function (use UTF-8 as your encoding or install the iconv or mbstring extension).'); - } -} - -function _twig_escape_js_callback($matches) -{ - $char = $matches[0]; - - // \xHH - if (!isset($char[1])) { - return '\\x'.strtoupper(substr('00'.bin2hex($char), -2)); - } - - // \uHHHH - $char = twig_convert_encoding($char, 'UTF-16BE', 'UTF-8'); - - return '\\u'.strtoupper(substr('0000'.bin2hex($char), -4)); -} - -function _twig_escape_css_callback($matches) -{ - $char = $matches[0]; - - // \xHH - if (!isset($char[1])) { - $hex = ltrim(strtoupper(bin2hex($char)), '0'); - if (0 === strlen($hex)) { - $hex = '0'; - } - - return '\\'.$hex.' '; - } - - // \uHHHH - $char = twig_convert_encoding($char, 'UTF-16BE', 'UTF-8'); - - return '\\'.ltrim(strtoupper(bin2hex($char)), '0').' '; -} - -/** - * This function is adapted from code coming from Zend Framework. - * - * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (https://www.zend.com) - * @license https://framework.zend.com/license/new-bsd New BSD License - */ -function _twig_escape_html_attr_callback($matches) -{ - /* - * While HTML supports far more named entities, the lowest common denominator - * has become HTML5's XML Serialisation which is restricted to the those named - * entities that XML supports. Using HTML entities would result in this error: - * XML Parsing Error: undefined entity - */ - static $entityMap = array( - 34 => 'quot', /* quotation mark */ - 38 => 'amp', /* ampersand */ - 60 => 'lt', /* less-than sign */ - 62 => 'gt', /* greater-than sign */ - ); - - $chr = $matches[0]; - $ord = ord($chr); - - /** - * The following replaces characters undefined in HTML with the - * hex entity for the Unicode replacement character. - */ - if (($ord <= 0x1f && $chr != "\t" && $chr != "\n" && $chr != "\r") || ($ord >= 0x7f && $ord <= 0x9f)) { - return '�'; - } - - /** - * Check if the current character to escape has a name entity we should - * replace it with while grabbing the hex value of the character. - */ - if (strlen($chr) == 1) { - $hex = strtoupper(substr('00'.bin2hex($chr), -2)); - } else { - $chr = twig_convert_encoding($chr, 'UTF-16BE', 'UTF-8'); - $hex = strtoupper(substr('0000'.bin2hex($chr), -4)); - } - - $int = hexdec($hex); - if (array_key_exists($int, $entityMap)) { - return sprintf('&%s;', $entityMap[$int]); - } - - /** - * Per OWASP recommendations, we'll use hex entities for any other - * characters where a named entity does not exist. - */ - - return sprintf('&#x%s;', $hex); -} - -// add multibyte extensions if possible -if (function_exists('mb_get_info')) { - /** - * Returns the length of a variable. - * - * @param Twig_Environment $env A Twig_Environment instance - * @param mixed $thing A variable - * - * @return integer The length of the value - */ - function twig_length_filter(Twig_Environment $env, $thing) - { - return is_scalar($thing) ? mb_strlen($thing, $env->getCharset()) : count($thing); - } - - /** - * Converts a string to uppercase. - * - * @param Twig_Environment $env A Twig_Environment instance - * @param string $string A string - * - * @return string The uppercased string - */ - function twig_upper_filter(Twig_Environment $env, $string) - { - if (null !== ($charset = $env->getCharset())) { - return mb_strtoupper($string, $charset); - } - - return strtoupper($string); - } - - /** - * Converts a string to lowercase. - * - * @param Twig_Environment $env A Twig_Environment instance - * @param string $string A string - * - * @return string The lowercased string - */ - function twig_lower_filter(Twig_Environment $env, $string) - { - if (null !== ($charset = $env->getCharset())) { - return mb_strtolower($string, $charset); - } - - return strtolower($string); - } - - /** - * Returns a titlecased string. - * - * @param Twig_Environment $env A Twig_Environment instance - * @param string $string A string - * - * @return string The titlecased string - */ - function twig_title_string_filter(Twig_Environment $env, $string) - { - if (null !== ($charset = $env->getCharset())) { - return mb_convert_case($string, MB_CASE_TITLE, $charset); - } - - return ucwords(strtolower($string)); - } - - /** - * Returns a capitalized string. - * - * @param Twig_Environment $env A Twig_Environment instance - * @param string $string A string - * - * @return string The capitalized string - */ - function twig_capitalize_string_filter(Twig_Environment $env, $string) - { - if (null !== ($charset = $env->getCharset())) { - return mb_strtoupper(mb_substr($string, 0, 1, $charset), $charset). - mb_strtolower(mb_substr($string, 1, mb_strlen($string, $charset), $charset), $charset); - } - - return ucfirst(strtolower($string)); - } -} -// and byte fallback -else { - /** - * Returns the length of a variable. - * - * @param Twig_Environment $env A Twig_Environment instance - * @param mixed $thing A variable - * - * @return integer The length of the value - */ - function twig_length_filter(Twig_Environment $env, $thing) - { - return is_scalar($thing) ? strlen($thing) : count($thing); - } - - /** - * Returns a titlecased string. - * - * @param Twig_Environment $env A Twig_Environment instance - * @param string $string A string - * - * @return string The titlecased string - */ - function twig_title_string_filter(Twig_Environment $env, $string) - { - return ucwords(strtolower($string)); - } - - /** - * Returns a capitalized string. - * - * @param Twig_Environment $env A Twig_Environment instance - * @param string $string A string - * - * @return string The capitalized string - */ - function twig_capitalize_string_filter(Twig_Environment $env, $string) - { - return ucfirst(strtolower($string)); - } -} - -/* used internally */ -function twig_ensure_traversable($seq) -{ - if ($seq instanceof Traversable || is_array($seq)) { - return $seq; - } - - return array(); -} - -/** - * Checks if a variable is empty. - * - *
- * {# evaluates to true if the foo variable is null, false, or the empty string #}
- * {% if foo is empty %}
- *     {# ... #}
- * {% endif %}
- * 
- * - * @param mixed $value A variable - * - * @return Boolean true if the value is empty, false otherwise - */ -function twig_test_empty($value) -{ - if ($value instanceof Countable) { - return 0 == count($value); - } - - return '' === $value || false === $value || null === $value || array() === $value; -} - -/** - * Checks if a variable is traversable. - * - *
- * {# evaluates to true if the foo variable is an array or a traversable object #}
- * {% if foo is traversable %}
- *     {# ... #}
- * {% endif %}
- * 
- * - * @param mixed $value A variable - * - * @return Boolean true if the value is traversable - */ -function twig_test_iterable($value) -{ - return $value instanceof Traversable || is_array($value); -} - -/** - * Renders a template. - * - * @param string template The template to render - * @param array variables The variables to pass to the template - * @param Boolean with_context Whether to pass the current context variables or not - * @param Boolean ignore_missing Whether to ignore missing templates or not - * @param Boolean sandboxed Whether to sandbox the template or not - * - * @return string The rendered template - */ -function twig_include(Twig_Environment $env, $context, $template, $variables = array(), $withContext = true, $ignoreMissing = false, $sandboxed = false) -{ - if ($withContext) { - $variables = array_merge($context, $variables); - } - - if ($isSandboxed = $sandboxed && $env->hasExtension('sandbox')) { - $sandbox = $env->getExtension('sandbox'); - if (!$alreadySandboxed = $sandbox->isSandboxed()) { - $sandbox->enableSandbox(); - } - } - - try { - return $env->resolveTemplate($template)->display($variables); - } catch (Twig_Error_Loader $e) { - if (!$ignoreMissing) { - throw $e; - } - } - - if ($isSandboxed && !$alreadySandboxed) { - $sandbox->disableSandbox(); - } -} - -/** - * Provides the ability to get constants from instances as well as class/global constants. - * - * @param string $constant The name of the constant - * @param null|object $object The object to get the constant from - * - * @return string - */ -function twig_constant($constant, $object = null) -{ - if (null !== $object) { - $constant = get_class($object).'::'.$constant; - } - - return constant($constant); -} - -/** - * Batches item. - * - * @param array $items An array of items - * @param integer $size The size of the batch - * @param string $fill A string to fill missing items - * - * @return array - */ -function twig_array_batch($items, $size, $fill = null) -{ - if ($items instanceof Traversable) { - $items = iterator_to_array($items, false); - } - - $size = ceil($size); - - $result = array_chunk($items, $size, true); - - if (null !== $fill) { - $last = count($result) - 1; - $result[$last] = array_merge( - $result[$last], - array_fill(0, $size - count($result[$last]), $fill) - ); - } - - return $result; -} diff --git a/core1/lib/Twig/Extension/Debug.php b/core1/lib/Twig/Extension/Debug.php deleted file mode 100644 index 97007fb1..00000000 --- a/core1/lib/Twig/Extension/Debug.php +++ /dev/null @@ -1,70 +0,0 @@ - $isDumpOutputHtmlSafe ? array('html') : array(), 'needs_context' => true, 'needs_environment' => true)), - ); - } - - /** - * Returns the name of the extension. - * - * @return string The extension name - */ - public function getName() - { - return 'debug'; - } -} - -function twig_var_dump(Twig_Environment $env, $context) -{ - if (!$env->isDebug()) { - return; - } - - ob_start(); - - $count = func_num_args(); - if (2 === $count) { - $vars = array(); - foreach ($context as $key => $value) { - if (!$value instanceof Twig_Template) { - $vars[$key] = $value; - } - } - - var_dump($vars); - } else { - for ($i = 2; $i < $count; $i++) { - var_dump(func_get_arg($i)); - } - } - - return ob_get_clean(); -} diff --git a/core1/lib/Twig/Extension/Escaper.php b/core1/lib/Twig/Extension/Escaper.php deleted file mode 100644 index c9a7f68e..00000000 --- a/core1/lib/Twig/Extension/Escaper.php +++ /dev/null @@ -1,107 +0,0 @@ -setDefaultStrategy($defaultStrategy); - } - - /** - * Returns the token parser instances to add to the existing list. - * - * @return array An array of Twig_TokenParserInterface or Twig_TokenParserBrokerInterface instances - */ - public function getTokenParsers() - { - return array(new Twig_TokenParser_AutoEscape()); - } - - /** - * Returns the node visitor instances to add to the existing list. - * - * @return array An array of Twig_NodeVisitorInterface instances - */ - public function getNodeVisitors() - { - return array(new Twig_NodeVisitor_Escaper()); - } - - /** - * Returns a list of filters to add to the existing list. - * - * @return array An array of filters - */ - public function getFilters() - { - return array( - new Twig_SimpleFilter('raw', 'twig_raw_filter', array('is_safe' => array('all'))), - ); - } - - /** - * Sets the default strategy to use when not defined by the user. - * - * The strategy can be a valid PHP callback that takes the template - * "filename" as an argument and returns the strategy to use. - * - * @param mixed $defaultStrategy An escaping strategy - */ - public function setDefaultStrategy($defaultStrategy) - { - // for BC - if (true === $defaultStrategy) { - $defaultStrategy = 'html'; - } - - $this->defaultStrategy = $defaultStrategy; - } - - /** - * Gets the default strategy to use when not defined by the user. - * - * @param string $filename The template "filename" - * - * @return string The default strategy to use for the template - */ - public function getDefaultStrategy($filename) - { - // disable string callables to avoid calling a function named html or js, - // or any other upcoming escaping strategy - if (!is_string($this->defaultStrategy) && is_callable($this->defaultStrategy)) { - return call_user_func($this->defaultStrategy, $filename); - } - - return $this->defaultStrategy; - } - - /** - * Returns the name of the extension. - * - * @return string The extension name - */ - public function getName() - { - return 'escaper'; - } -} - -/** - * Marks a variable as being safe. - * - * @param string $string A PHP variable - */ -function twig_raw_filter($string) -{ - return $string; -} diff --git a/core1/lib/Twig/Extension/Optimizer.php b/core1/lib/Twig/Extension/Optimizer.php deleted file mode 100644 index 013fcb62..00000000 --- a/core1/lib/Twig/Extension/Optimizer.php +++ /dev/null @@ -1,35 +0,0 @@ -optimizers = $optimizers; - } - - /** - * {@inheritdoc} - */ - public function getNodeVisitors() - { - return array(new Twig_NodeVisitor_Optimizer($this->optimizers)); - } - - /** - * {@inheritdoc} - */ - public function getName() - { - return 'optimizer'; - } -} diff --git a/core1/lib/Twig/Extension/Sandbox.php b/core1/lib/Twig/Extension/Sandbox.php deleted file mode 100644 index bf76c11a..00000000 --- a/core1/lib/Twig/Extension/Sandbox.php +++ /dev/null @@ -1,112 +0,0 @@ -policy = $policy; - $this->sandboxedGlobally = $sandboxed; - } - - /** - * Returns the token parser instances to add to the existing list. - * - * @return array An array of Twig_TokenParserInterface or Twig_TokenParserBrokerInterface instances - */ - public function getTokenParsers() - { - return array(new Twig_TokenParser_Sandbox()); - } - - /** - * Returns the node visitor instances to add to the existing list. - * - * @return array An array of Twig_NodeVisitorInterface instances - */ - public function getNodeVisitors() - { - return array(new Twig_NodeVisitor_Sandbox()); - } - - public function enableSandbox() - { - $this->sandboxed = true; - } - - public function disableSandbox() - { - $this->sandboxed = false; - } - - public function isSandboxed() - { - return $this->sandboxedGlobally || $this->sandboxed; - } - - public function isSandboxedGlobally() - { - return $this->sandboxedGlobally; - } - - public function setSecurityPolicy(Twig_Sandbox_SecurityPolicyInterface $policy) - { - $this->policy = $policy; - } - - public function getSecurityPolicy() - { - return $this->policy; - } - - public function checkSecurity($tags, $filters, $functions) - { - if ($this->isSandboxed()) { - $this->policy->checkSecurity($tags, $filters, $functions); - } - } - - public function checkMethodAllowed($obj, $method) - { - if ($this->isSandboxed()) { - $this->policy->checkMethodAllowed($obj, $method); - } - } - - public function checkPropertyAllowed($obj, $method) - { - if ($this->isSandboxed()) { - $this->policy->checkPropertyAllowed($obj, $method); - } - } - - public function ensureToStringAllowed($obj) - { - if (is_object($obj)) { - $this->policy->checkMethodAllowed($obj, '__toString'); - } - - return $obj; - } - - /** - * Returns the name of the extension. - * - * @return string The extension name - */ - public function getName() - { - return 'sandbox'; - } -} diff --git a/core1/lib/Twig/Extension/Staging.php b/core1/lib/Twig/Extension/Staging.php deleted file mode 100644 index 8ab0f459..00000000 --- a/core1/lib/Twig/Extension/Staging.php +++ /dev/null @@ -1,113 +0,0 @@ - - */ -class Twig_Extension_Staging extends Twig_Extension -{ - protected $functions = array(); - protected $filters = array(); - protected $visitors = array(); - protected $tokenParsers = array(); - protected $globals = array(); - protected $tests = array(); - - public function addFunction($name, $function) - { - $this->functions[$name] = $function; - } - - /** - * {@inheritdoc} - */ - public function getFunctions() - { - return $this->functions; - } - - public function addFilter($name, $filter) - { - $this->filters[$name] = $filter; - } - - /** - * {@inheritdoc} - */ - public function getFilters() - { - return $this->filters; - } - - public function addNodeVisitor(Twig_NodeVisitorInterface $visitor) - { - $this->visitors[] = $visitor; - } - - /** - * {@inheritdoc} - */ - public function getNodeVisitors() - { - return $this->visitors; - } - - public function addTokenParser(Twig_TokenParserInterface $parser) - { - $this->tokenParsers[] = $parser; - } - - /** - * {@inheritdoc} - */ - public function getTokenParsers() - { - return $this->tokenParsers; - } - - public function addGlobal($name, $value) - { - $this->globals[$name] = $value; - } - - /** - * {@inheritdoc} - */ - public function getGlobals() - { - return $this->globals; - } - - public function addTest($name, $test) - { - $this->tests[$name] = $test; - } - - /** - * {@inheritdoc} - */ - public function getTests() - { - return $this->tests; - } - - /** - * {@inheritdoc} - */ - public function getName() - { - return 'staging'; - } -} diff --git a/core1/lib/Twig/Extension/StringLoader.php b/core1/lib/Twig/Extension/StringLoader.php deleted file mode 100644 index d5b881bf..00000000 --- a/core1/lib/Twig/Extension/StringLoader.php +++ /dev/null @@ -1,64 +0,0 @@ - true)), - ); - } - - /** - * {@inheritdoc} - */ - public function getName() - { - return 'string_loader'; - } -} - -/** - * Loads a template from a string. - * - *
- * {% include template_from_string("Hello {{ name }}") }}
- * 
- * - * @param Twig_Environment $env A Twig_Environment instance - * @param string $template A template as a string - * - * @return Twig_Template A Twig_Template instance - */ -function twig_template_from_string(Twig_Environment $env, $template) -{ - static $loader; - - if (null === $loader) { - $loader = new Twig_Loader_String(); - } - - $current = $env->getLoader(); - $env->setLoader($loader); - try { - $template = $env->loadTemplate($template); - } catch (Exception $e) { - $env->setLoader($current); - - throw $e; - } - $env->setLoader($current); - - return $template; -} diff --git a/core1/lib/Twig/ExtensionInterface.php b/core1/lib/Twig/ExtensionInterface.php deleted file mode 100644 index f189e9d9..00000000 --- a/core1/lib/Twig/ExtensionInterface.php +++ /dev/null @@ -1,83 +0,0 @@ - - */ -interface Twig_ExtensionInterface -{ - /** - * Initializes the runtime environment. - * - * This is where you can load some file that contains filter functions for instance. - * - * @param Twig_Environment $environment The current Twig_Environment instance - */ - public function initRuntime(Twig_Environment $environment); - - /** - * Returns the token parser instances to add to the existing list. - * - * @return array An array of Twig_TokenParserInterface or Twig_TokenParserBrokerInterface instances - */ - public function getTokenParsers(); - - /** - * Returns the node visitor instances to add to the existing list. - * - * @return array An array of Twig_NodeVisitorInterface instances - */ - public function getNodeVisitors(); - - /** - * Returns a list of filters to add to the existing list. - * - * @return array An array of filters - */ - public function getFilters(); - - /** - * Returns a list of tests to add to the existing list. - * - * @return array An array of tests - */ - public function getTests(); - - /** - * Returns a list of functions to add to the existing list. - * - * @return array An array of functions - */ - public function getFunctions(); - - /** - * Returns a list of operators to add to the existing list. - * - * @return array An array of operators - */ - public function getOperators(); - - /** - * Returns a list of global variables to add to the existing list. - * - * @return array An array of global variables - */ - public function getGlobals(); - - /** - * Returns the name of the extension. - * - * @return string The extension name - */ - public function getName(); -} diff --git a/core1/lib/Twig/Filter.php b/core1/lib/Twig/Filter.php deleted file mode 100644 index 18917885..00000000 --- a/core1/lib/Twig/Filter.php +++ /dev/null @@ -1,83 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -abstract class Twig_Filter implements Twig_FilterInterface, Twig_FilterCallableInterface -{ - protected $options; - protected $arguments = array(); - - public function __construct(array $options = array()) - { - $this->options = array_merge(array( - 'needs_environment' => false, - 'needs_context' => false, - 'pre_escape' => null, - 'preserves_safety' => null, - 'callable' => null, - ), $options); - } - - public function setArguments($arguments) - { - $this->arguments = $arguments; - } - - public function getArguments() - { - return $this->arguments; - } - - public function needsEnvironment() - { - return $this->options['needs_environment']; - } - - public function needsContext() - { - return $this->options['needs_context']; - } - - public function getSafe(Twig_Node $filterArgs) - { - if (isset($this->options['is_safe'])) { - return $this->options['is_safe']; - } - - if (isset($this->options['is_safe_callback'])) { - return call_user_func($this->options['is_safe_callback'], $filterArgs); - } - - return null; - } - - public function getPreservesSafety() - { - return $this->options['preserves_safety']; - } - - public function getPreEscape() - { - return $this->options['pre_escape']; - } - - public function getCallable() - { - return $this->options['callable']; - } -} diff --git a/core1/lib/Twig/Filter/Function.php b/core1/lib/Twig/Filter/Function.php deleted file mode 100644 index ad374a55..00000000 --- a/core1/lib/Twig/Filter/Function.php +++ /dev/null @@ -1,37 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -class Twig_Filter_Function extends Twig_Filter -{ - protected $function; - - public function __construct($function, array $options = array()) - { - $options['callable'] = $function; - - parent::__construct($options); - - $this->function = $function; - } - - public function compile() - { - return $this->function; - } -} diff --git a/core1/lib/Twig/Filter/Method.php b/core1/lib/Twig/Filter/Method.php deleted file mode 100644 index 63c8c3be..00000000 --- a/core1/lib/Twig/Filter/Method.php +++ /dev/null @@ -1,39 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -class Twig_Filter_Method extends Twig_Filter -{ - protected $extension; - protected $method; - - public function __construct(Twig_ExtensionInterface $extension, $method, array $options = array()) - { - $options['callable'] = array($extension, $method); - - parent::__construct($options); - - $this->extension = $extension; - $this->method = $method; - } - - public function compile() - { - return sprintf('$this->env->getExtension(\'%s\')->%s', $this->extension->getName(), $this->method); - } -} diff --git a/core1/lib/Twig/Filter/Node.php b/core1/lib/Twig/Filter/Node.php deleted file mode 100644 index 8744c5e0..00000000 --- a/core1/lib/Twig/Filter/Node.php +++ /dev/null @@ -1,39 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -class Twig_Filter_Node extends Twig_Filter -{ - protected $class; - - public function __construct($class, array $options = array()) - { - parent::__construct($options); - - $this->class = $class; - } - - public function getClass() - { - return $this->class; - } - - public function compile() - { - } -} diff --git a/core1/lib/Twig/FilterCallableInterface.php b/core1/lib/Twig/FilterCallableInterface.php deleted file mode 100644 index 145534df..00000000 --- a/core1/lib/Twig/FilterCallableInterface.php +++ /dev/null @@ -1,23 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -interface Twig_FilterCallableInterface -{ - public function getCallable(); -} diff --git a/core1/lib/Twig/FilterInterface.php b/core1/lib/Twig/FilterInterface.php deleted file mode 100644 index 5319ecc9..00000000 --- a/core1/lib/Twig/FilterInterface.php +++ /dev/null @@ -1,42 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -interface Twig_FilterInterface -{ - /** - * Compiles a filter. - * - * @return string The PHP code for the filter - */ - public function compile(); - - public function needsEnvironment(); - - public function needsContext(); - - public function getSafe(Twig_Node $filterArgs); - - public function getPreservesSafety(); - - public function getPreEscape(); - - public function setArguments($arguments); - - public function getArguments(); -} diff --git a/core1/lib/Twig/Function.php b/core1/lib/Twig/Function.php deleted file mode 100644 index b5ffb2b0..00000000 --- a/core1/lib/Twig/Function.php +++ /dev/null @@ -1,71 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -abstract class Twig_Function implements Twig_FunctionInterface, Twig_FunctionCallableInterface -{ - protected $options; - protected $arguments = array(); - - public function __construct(array $options = array()) - { - $this->options = array_merge(array( - 'needs_environment' => false, - 'needs_context' => false, - 'callable' => null, - ), $options); - } - - public function setArguments($arguments) - { - $this->arguments = $arguments; - } - - public function getArguments() - { - return $this->arguments; - } - - public function needsEnvironment() - { - return $this->options['needs_environment']; - } - - public function needsContext() - { - return $this->options['needs_context']; - } - - public function getSafe(Twig_Node $functionArgs) - { - if (isset($this->options['is_safe'])) { - return $this->options['is_safe']; - } - - if (isset($this->options['is_safe_callback'])) { - return call_user_func($this->options['is_safe_callback'], $functionArgs); - } - - return array(); - } - - public function getCallable() - { - return $this->options['callable']; - } -} diff --git a/core1/lib/Twig/Function/Function.php b/core1/lib/Twig/Function/Function.php deleted file mode 100644 index d1e1b96a..00000000 --- a/core1/lib/Twig/Function/Function.php +++ /dev/null @@ -1,38 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -class Twig_Function_Function extends Twig_Function -{ - protected $function; - - public function __construct($function, array $options = array()) - { - $options['callable'] = $function; - - parent::__construct($options); - - $this->function = $function; - } - - public function compile() - { - return $this->function; - } -} diff --git a/core1/lib/Twig/Function/Method.php b/core1/lib/Twig/Function/Method.php deleted file mode 100644 index 67039a95..00000000 --- a/core1/lib/Twig/Function/Method.php +++ /dev/null @@ -1,40 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -class Twig_Function_Method extends Twig_Function -{ - protected $extension; - protected $method; - - public function __construct(Twig_ExtensionInterface $extension, $method, array $options = array()) - { - $options['callable'] = array($extension, $method); - - parent::__construct($options); - - $this->extension = $extension; - $this->method = $method; - } - - public function compile() - { - return sprintf('$this->env->getExtension(\'%s\')->%s', $this->extension->getName(), $this->method); - } -} diff --git a/core1/lib/Twig/Function/Node.php b/core1/lib/Twig/Function/Node.php deleted file mode 100644 index 06a0d0db..00000000 --- a/core1/lib/Twig/Function/Node.php +++ /dev/null @@ -1,39 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -class Twig_Function_Node extends Twig_Function -{ - protected $class; - - public function __construct($class, array $options = array()) - { - parent::__construct($options); - - $this->class = $class; - } - - public function getClass() - { - return $this->class; - } - - public function compile() - { - } -} diff --git a/core1/lib/Twig/FunctionCallableInterface.php b/core1/lib/Twig/FunctionCallableInterface.php deleted file mode 100644 index 0aab4f5e..00000000 --- a/core1/lib/Twig/FunctionCallableInterface.php +++ /dev/null @@ -1,23 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -interface Twig_FunctionCallableInterface -{ - public function getCallable(); -} diff --git a/core1/lib/Twig/FunctionInterface.php b/core1/lib/Twig/FunctionInterface.php deleted file mode 100644 index 67f4f89c..00000000 --- a/core1/lib/Twig/FunctionInterface.php +++ /dev/null @@ -1,39 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -interface Twig_FunctionInterface -{ - /** - * Compiles a function. - * - * @return string The PHP code for the function - */ - public function compile(); - - public function needsEnvironment(); - - public function needsContext(); - - public function getSafe(Twig_Node $filterArgs); - - public function setArguments($arguments); - - public function getArguments(); -} diff --git a/core1/lib/Twig/Lexer.php b/core1/lib/Twig/Lexer.php deleted file mode 100644 index 000b038e..00000000 --- a/core1/lib/Twig/Lexer.php +++ /dev/null @@ -1,408 +0,0 @@ - - */ -class Twig_Lexer implements Twig_LexerInterface -{ - protected $tokens; - protected $code; - protected $cursor; - protected $lineno; - protected $end; - protected $state; - protected $states; - protected $brackets; - protected $env; - protected $filename; - protected $options; - protected $regexes; - protected $position; - protected $positions; - protected $currentVarBlockLine; - - const STATE_DATA = 0; - const STATE_BLOCK = 1; - const STATE_VAR = 2; - const STATE_STRING = 3; - const STATE_INTERPOLATION = 4; - - const REGEX_NAME = '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A'; - const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?/A'; - const REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As'; - const REGEX_DQ_STRING_DELIM = '/"/A'; - const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As'; - const PUNCTUATION = '()[]{}?:.,|'; - - public function __construct(Twig_Environment $env, array $options = array()) - { - $this->env = $env; - - $this->options = array_merge(array( - 'tag_comment' => array('{#', '#}'), - 'tag_block' => array('{%', '%}'), - 'tag_variable' => array('{{', '}}'), - 'whitespace_trim' => '-', - 'interpolation' => array('#{', '}'), - ), $options); - - $this->regexes = array( - 'lex_var' => '/\s*'.preg_quote($this->options['whitespace_trim'].$this->options['tag_variable'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_variable'][1], '/').'/A', - 'lex_block' => '/\s*(?:'.preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_block'][1], '/').')\n?/A', - 'lex_raw_data' => '/('.preg_quote($this->options['tag_block'][0].$this->options['whitespace_trim'], '/').'|'.preg_quote($this->options['tag_block'][0], '/').')\s*(?:end%s)\s*(?:'.preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_block'][1], '/').')/s', - 'operator' => $this->getOperatorRegex(), - 'lex_comment' => '/(?:'.preg_quote($this->options['whitespace_trim'], '/').preg_quote($this->options['tag_comment'][1], '/').'\s*|'.preg_quote($this->options['tag_comment'][1], '/').')\n?/s', - 'lex_block_raw' => '/\s*(raw|verbatim)\s*(?:'.preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_block'][1], '/').')/As', - 'lex_block_line' => '/\s*line\s+(\d+)\s*'.preg_quote($this->options['tag_block'][1], '/').'/As', - 'lex_tokens_start' => '/('.preg_quote($this->options['tag_variable'][0], '/').'|'.preg_quote($this->options['tag_block'][0], '/').'|'.preg_quote($this->options['tag_comment'][0], '/').')('.preg_quote($this->options['whitespace_trim'], '/').')?/s', - 'interpolation_start' => '/'.preg_quote($this->options['interpolation'][0], '/').'\s*/A', - 'interpolation_end' => '/\s*'.preg_quote($this->options['interpolation'][1], '/').'/A', - ); - } - - /** - * Tokenizes a source code. - * - * @param string $code The source code - * @param string $filename A unique identifier for the source code - * - * @return Twig_TokenStream A token stream instance - */ - public function tokenize($code, $filename = null) - { - if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) { - $mbEncoding = mb_internal_encoding(); - mb_internal_encoding('ASCII'); - } - - $this->code = str_replace(array("\r\n", "\r"), "\n", $code); - $this->filename = $filename; - $this->cursor = 0; - $this->lineno = 1; - $this->end = strlen($this->code); - $this->tokens = array(); - $this->state = self::STATE_DATA; - $this->states = array(); - $this->brackets = array(); - $this->position = -1; - - // find all token starts in one go - preg_match_all($this->regexes['lex_tokens_start'], $this->code, $matches, PREG_OFFSET_CAPTURE); - $this->positions = $matches; - - while ($this->cursor < $this->end) { - // dispatch to the lexing functions depending - // on the current state - switch ($this->state) { - case self::STATE_DATA: - $this->lexData(); - break; - - case self::STATE_BLOCK: - $this->lexBlock(); - break; - - case self::STATE_VAR: - $this->lexVar(); - break; - - case self::STATE_STRING: - $this->lexString(); - break; - - case self::STATE_INTERPOLATION: - $this->lexInterpolation(); - break; - } - } - - $this->pushToken(Twig_Token::EOF_TYPE); - - if (!empty($this->brackets)) { - list($expect, $lineno) = array_pop($this->brackets); - throw new Twig_Error_Syntax(sprintf('Unclosed "%s"', $expect), $lineno, $this->filename); - } - - if (isset($mbEncoding)) { - mb_internal_encoding($mbEncoding); - } - - return new Twig_TokenStream($this->tokens, $this->filename); - } - - protected function lexData() - { - // if no matches are left we return the rest of the template as simple text token - if ($this->position == count($this->positions[0]) - 1) { - $this->pushToken(Twig_Token::TEXT_TYPE, substr($this->code, $this->cursor)); - $this->cursor = $this->end; - - return; - } - - // Find the first token after the current cursor - $position = $this->positions[0][++$this->position]; - while ($position[1] < $this->cursor) { - if ($this->position == count($this->positions[0]) - 1) { - return; - } - $position = $this->positions[0][++$this->position]; - } - - // push the template text first - $text = $textContent = substr($this->code, $this->cursor, $position[1] - $this->cursor); - if (isset($this->positions[2][$this->position][0])) { - $text = rtrim($text); - } - $this->pushToken(Twig_Token::TEXT_TYPE, $text); - $this->moveCursor($textContent.$position[0]); - - switch ($this->positions[1][$this->position][0]) { - case $this->options['tag_comment'][0]: - $this->lexComment(); - break; - - case $this->options['tag_block'][0]: - // raw data? - if (preg_match($this->regexes['lex_block_raw'], $this->code, $match, null, $this->cursor)) { - $this->moveCursor($match[0]); - $this->lexRawData($match[1]); - // {% line \d+ %} - } elseif (preg_match($this->regexes['lex_block_line'], $this->code, $match, null, $this->cursor)) { - $this->moveCursor($match[0]); - $this->lineno = (int) $match[1]; - } else { - $this->pushToken(Twig_Token::BLOCK_START_TYPE); - $this->pushState(self::STATE_BLOCK); - $this->currentVarBlockLine = $this->lineno; - } - break; - - case $this->options['tag_variable'][0]: - $this->pushToken(Twig_Token::VAR_START_TYPE); - $this->pushState(self::STATE_VAR); - $this->currentVarBlockLine = $this->lineno; - break; - } - } - - protected function lexBlock() - { - if (empty($this->brackets) && preg_match($this->regexes['lex_block'], $this->code, $match, null, $this->cursor)) { - $this->pushToken(Twig_Token::BLOCK_END_TYPE); - $this->moveCursor($match[0]); - $this->popState(); - } else { - $this->lexExpression(); - } - } - - protected function lexVar() - { - if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, null, $this->cursor)) { - $this->pushToken(Twig_Token::VAR_END_TYPE); - $this->moveCursor($match[0]); - $this->popState(); - } else { - $this->lexExpression(); - } - } - - protected function lexExpression() - { - // whitespace - if (preg_match('/\s+/A', $this->code, $match, null, $this->cursor)) { - $this->moveCursor($match[0]); - - if ($this->cursor >= $this->end) { - throw new Twig_Error_Syntax(sprintf('Unclosed "%s"', $this->state === self::STATE_BLOCK ? 'block' : 'variable'), $this->currentVarBlockLine, $this->filename); - } - } - - // operators - if (preg_match($this->regexes['operator'], $this->code, $match, null, $this->cursor)) { - $this->pushToken(Twig_Token::OPERATOR_TYPE, $match[0]); - $this->moveCursor($match[0]); - } - // names - elseif (preg_match(self::REGEX_NAME, $this->code, $match, null, $this->cursor)) { - $this->pushToken(Twig_Token::NAME_TYPE, $match[0]); - $this->moveCursor($match[0]); - } - // numbers - elseif (preg_match(self::REGEX_NUMBER, $this->code, $match, null, $this->cursor)) { - $number = (float) $match[0]; // floats - if (ctype_digit($match[0]) && $number <= PHP_INT_MAX) { - $number = (int) $match[0]; // integers lower than the maximum - } - $this->pushToken(Twig_Token::NUMBER_TYPE, $number); - $this->moveCursor($match[0]); - } - // punctuation - elseif (false !== strpos(self::PUNCTUATION, $this->code[$this->cursor])) { - // opening bracket - if (false !== strpos('([{', $this->code[$this->cursor])) { - $this->brackets[] = array($this->code[$this->cursor], $this->lineno); - } - // closing bracket - elseif (false !== strpos(')]}', $this->code[$this->cursor])) { - if (empty($this->brackets)) { - throw new Twig_Error_Syntax(sprintf('Unexpected "%s"', $this->code[$this->cursor]), $this->lineno, $this->filename); - } - - list($expect, $lineno) = array_pop($this->brackets); - if ($this->code[$this->cursor] != strtr($expect, '([{', ')]}')) { - throw new Twig_Error_Syntax(sprintf('Unclosed "%s"', $expect), $lineno, $this->filename); - } - } - - $this->pushToken(Twig_Token::PUNCTUATION_TYPE, $this->code[$this->cursor]); - ++$this->cursor; - } - // strings - elseif (preg_match(self::REGEX_STRING, $this->code, $match, null, $this->cursor)) { - $this->pushToken(Twig_Token::STRING_TYPE, stripcslashes(substr($match[0], 1, -1))); - $this->moveCursor($match[0]); - } - // opening double quoted string - elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, null, $this->cursor)) { - $this->brackets[] = array('"', $this->lineno); - $this->pushState(self::STATE_STRING); - $this->moveCursor($match[0]); - } - // unlexable - else { - throw new Twig_Error_Syntax(sprintf('Unexpected character "%s"', $this->code[$this->cursor]), $this->lineno, $this->filename); - } - } - - protected function lexRawData($tag) - { - if (!preg_match(str_replace('%s', $tag, $this->regexes['lex_raw_data']), $this->code, $match, PREG_OFFSET_CAPTURE, $this->cursor)) { - throw new Twig_Error_Syntax(sprintf('Unexpected end of file: Unclosed "%s" block', $tag), $this->lineno, $this->filename); - } - - $text = substr($this->code, $this->cursor, $match[0][1] - $this->cursor); - $this->moveCursor($text.$match[0][0]); - - if (false !== strpos($match[1][0], $this->options['whitespace_trim'])) { - $text = rtrim($text); - } - - $this->pushToken(Twig_Token::TEXT_TYPE, $text); - } - - protected function lexComment() - { - if (!preg_match($this->regexes['lex_comment'], $this->code, $match, PREG_OFFSET_CAPTURE, $this->cursor)) { - throw new Twig_Error_Syntax('Unclosed comment', $this->lineno, $this->filename); - } - - $this->moveCursor(substr($this->code, $this->cursor, $match[0][1] - $this->cursor).$match[0][0]); - } - - protected function lexString() - { - if (preg_match($this->regexes['interpolation_start'], $this->code, $match, null, $this->cursor)) { - $this->brackets[] = array($this->options['interpolation'][0], $this->lineno); - $this->pushToken(Twig_Token::INTERPOLATION_START_TYPE); - $this->moveCursor($match[0]); - $this->pushState(self::STATE_INTERPOLATION); - - } elseif (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, null, $this->cursor) && strlen($match[0]) > 0) { - $this->pushToken(Twig_Token::STRING_TYPE, stripcslashes($match[0])); - $this->moveCursor($match[0]); - - } elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, null, $this->cursor)) { - - list($expect, $lineno) = array_pop($this->brackets); - if ($this->code[$this->cursor] != '"') { - throw new Twig_Error_Syntax(sprintf('Unclosed "%s"', $expect), $lineno, $this->filename); - } - - $this->popState(); - ++$this->cursor; - } - } - - protected function lexInterpolation() - { - $bracket = end($this->brackets); - if ($this->options['interpolation'][0] === $bracket[0] && preg_match($this->regexes['interpolation_end'], $this->code, $match, null, $this->cursor)) { - array_pop($this->brackets); - $this->pushToken(Twig_Token::INTERPOLATION_END_TYPE); - $this->moveCursor($match[0]); - $this->popState(); - } else { - $this->lexExpression(); - } - } - - protected function pushToken($type, $value = '') - { - // do not push empty text tokens - if (Twig_Token::TEXT_TYPE === $type && '' === $value) { - return; - } - - $this->tokens[] = new Twig_Token($type, $value, $this->lineno); - } - - protected function moveCursor($text) - { - $this->cursor += strlen($text); - $this->lineno += substr_count($text, "\n"); - } - - protected function getOperatorRegex() - { - $operators = array_merge( - array('='), - array_keys($this->env->getUnaryOperators()), - array_keys($this->env->getBinaryOperators()) - ); - - $operators = array_combine($operators, array_map('strlen', $operators)); - arsort($operators); - - $regex = array(); - foreach ($operators as $operator => $length) { - // an operator that ends with a character must be followed by - // a whitespace or a parenthesis - if (ctype_alpha($operator[$length - 1])) { - $regex[] = preg_quote($operator, '/').'(?=[\s()])'; - } else { - $regex[] = preg_quote($operator, '/'); - } - } - - return '/'.implode('|', $regex).'/A'; - } - - protected function pushState($state) - { - $this->states[] = $this->state; - $this->state = $state; - } - - protected function popState() - { - if (0 === count($this->states)) { - throw new Exception('Cannot pop state without a previous state'); - } - - $this->state = array_pop($this->states); - } -} diff --git a/core1/lib/Twig/LexerInterface.php b/core1/lib/Twig/LexerInterface.php deleted file mode 100644 index 4b83f81b..00000000 --- a/core1/lib/Twig/LexerInterface.php +++ /dev/null @@ -1,29 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -interface Twig_LexerInterface -{ - /** - * Tokenizes a source code. - * - * @param string $code The source code - * @param string $filename A unique identifier for the source code - * - * @return Twig_TokenStream A token stream instance - */ - public function tokenize($code, $filename = null); -} diff --git a/core1/lib/Twig/Loader/Array.php b/core1/lib/Twig/Loader/Array.php deleted file mode 100644 index 89087aea..00000000 --- a/core1/lib/Twig/Loader/Array.php +++ /dev/null @@ -1,98 +0,0 @@ - - */ -class Twig_Loader_Array implements Twig_LoaderInterface, Twig_ExistsLoaderInterface -{ - protected $templates; - - /** - * Constructor. - * - * @param array $templates An array of templates (keys are the names, and values are the source code) - * - * @see Twig_Loader - */ - public function __construct(array $templates) - { - $this->templates = array(); - foreach ($templates as $name => $template) { - $this->templates[$name] = $template; - } - } - - /** - * Adds or overrides a template. - * - * @param string $name The template name - * @param string $template The template source - */ - public function setTemplate($name, $template) - { - $this->templates[(string) $name] = $template; - } - - /** - * {@inheritdoc} - */ - public function getSource($name) - { - $name = (string) $name; - if (!isset($this->templates[$name])) { - throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name)); - } - - return $this->templates[$name]; - } - - /** - * {@inheritdoc} - */ - public function exists($name) - { - return isset($this->templates[(string) $name]); - } - - /** - * {@inheritdoc} - */ - public function getCacheKey($name) - { - $name = (string) $name; - if (!isset($this->templates[$name])) { - throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name)); - } - - return $this->templates[$name]; - } - - /** - * {@inheritdoc} - */ - public function isFresh($name, $time) - { - $name = (string) $name; - if (!isset($this->templates[$name])) { - throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name)); - } - - return true; - } -} diff --git a/core1/lib/Twig/Loader/Chain.php b/core1/lib/Twig/Loader/Chain.php deleted file mode 100644 index cd64b051..00000000 --- a/core1/lib/Twig/Loader/Chain.php +++ /dev/null @@ -1,135 +0,0 @@ - - */ -class Twig_Loader_Chain implements Twig_LoaderInterface, Twig_ExistsLoaderInterface -{ - private $hasSourceCache = array(); - protected $loaders; - - /** - * Constructor. - * - * @param Twig_LoaderInterface[] $loaders An array of loader instances - */ - public function __construct(array $loaders = array()) - { - $this->loaders = array(); - foreach ($loaders as $loader) { - $this->addLoader($loader); - } - } - - /** - * Adds a loader instance. - * - * @param Twig_LoaderInterface $loader A Loader instance - */ - public function addLoader(Twig_LoaderInterface $loader) - { - $this->loaders[] = $loader; - $this->hasSourceCache = array(); - } - - /** - * {@inheritdoc} - */ - public function getSource($name) - { - $exceptions = array(); - foreach ($this->loaders as $loader) { - if ($loader instanceof Twig_ExistsLoaderInterface && !$loader->exists($name)) { - continue; - } - - try { - return $loader->getSource($name); - } catch (Twig_Error_Loader $e) { - $exceptions[] = $e->getMessage(); - } - } - - throw new Twig_Error_Loader(sprintf('Template "%s" is not defined (%s).', $name, implode(', ', $exceptions))); - } - - /** - * {@inheritdoc} - */ - public function exists($name) - { - $name = (string) $name; - - if (isset($this->hasSourceCache[$name])) { - return $this->hasSourceCache[$name]; - } - - foreach ($this->loaders as $loader) { - if ($loader instanceof Twig_ExistsLoaderInterface && $loader->exists($name)) { - return $this->hasSourceCache[$name] = true; - } - - try { - $loader->getSource($name); - - return $this->hasSourceCache[$name] = true; - } catch (Twig_Error_Loader $e) { - } - } - - return $this->hasSourceCache[$name] = false; - } - - /** - * {@inheritdoc} - */ - public function getCacheKey($name) - { - $exceptions = array(); - foreach ($this->loaders as $loader) { - if ($loader instanceof Twig_ExistsLoaderInterface && !$loader->exists($name)) { - continue; - } - - try { - return $loader->getCacheKey($name); - } catch (Twig_Error_Loader $e) { - $exceptions[] = get_class($loader).': '.$e->getMessage(); - } - } - - throw new Twig_Error_Loader(sprintf('Template "%s" is not defined (%s).', $name, implode(' ', $exceptions))); - } - - /** - * {@inheritdoc} - */ - public function isFresh($name, $time) - { - $exceptions = array(); - foreach ($this->loaders as $loader) { - if ($loader instanceof Twig_ExistsLoaderInterface && !$loader->exists($name)) { - continue; - } - - try { - return $loader->isFresh($name, $time); - } catch (Twig_Error_Loader $e) { - $exceptions[] = get_class($loader).': '.$e->getMessage(); - } - } - - throw new Twig_Error_Loader(sprintf('Template "%s" is not defined (%s).', $name, implode(' ', $exceptions))); - } -} diff --git a/core1/lib/Twig/Loader/Filesystem.php b/core1/lib/Twig/Loader/Filesystem.php deleted file mode 100644 index faf27e3e..00000000 --- a/core1/lib/Twig/Loader/Filesystem.php +++ /dev/null @@ -1,220 +0,0 @@ - - */ -class Twig_Loader_Filesystem implements Twig_LoaderInterface, Twig_ExistsLoaderInterface -{ - protected $paths; - protected $cache; - - /** - * Constructor. - * - * @param string|array $paths A path or an array of paths where to look for templates - */ - public function __construct($paths) - { - $this->setPaths($paths); - } - - /** - * Returns the paths to the templates. - * - * @param string $namespace A path namespace - * - * @return array The array of paths where to look for templates - */ - public function getPaths($namespace = '__main__') - { - return isset($this->paths[$namespace]) ? $this->paths[$namespace] : array(); - } - - /** - * Returns the path namespaces. - * - * The "__main__" namespace is always defined. - * - * @return array The array of defined namespaces - */ - public function getNamespaces() - { - return array_keys($this->paths); - } - - /** - * Sets the paths where templates are stored. - * - * @param string|array $paths A path or an array of paths where to look for templates - * @param string $namespace A path namespace - */ - public function setPaths($paths, $namespace = '__main__') - { - if (!is_array($paths)) { - $paths = array($paths); - } - - $this->paths[$namespace] = array(); - foreach ($paths as $path) { - $this->addPath($path, $namespace); - } - } - - /** - * Adds a path where templates are stored. - * - * @param string $path A path where to look for templates - * @param string $namespace A path name - * - * @throws Twig_Error_Loader - */ - public function addPath($path, $namespace = '__main__') - { - // invalidate the cache - $this->cache = array(); - - if (!is_dir($path)) { - throw new Twig_Error_Loader(sprintf('The "%s" directory does not exist.', $path)); - } - - $this->paths[$namespace][] = rtrim($path, '/\\'); - } - - /** - * Prepends a path where templates are stored. - * - * @param string $path A path where to look for templates - * @param string $namespace A path name - * - * @throws Twig_Error_Loader - */ - public function prependPath($path, $namespace = '__main__') - { - // invalidate the cache - $this->cache = array(); - - if (!is_dir($path)) { - throw new Twig_Error_Loader(sprintf('The "%s" directory does not exist.', $path)); - } - - $path = rtrim($path, '/\\'); - - if (!isset($this->paths[$namespace])) { - $this->paths[$namespace][] = $path; - } else { - array_unshift($this->paths[$namespace], $path); - } - } - - /** - * {@inheritdoc} - */ - public function getSource($name) - { - return file_get_contents($this->findTemplate($name)); - } - - /** - * {@inheritdoc} - */ - public function getCacheKey($name) - { - return $this->findTemplate($name); - } - - /** - * {@inheritdoc} - */ - public function exists($name) - { - $name = (string) $name; - if (isset($this->cache[$name])) { - return true; - } - - try { - $this->findTemplate($name); - - return true; - } catch (Twig_Error_Loader $exception) { - return false; - } - } - - /** - * {@inheritdoc} - */ - public function isFresh($name, $time) - { - return filemtime($this->findTemplate($name)) <= $time; - } - - protected function findTemplate($name) - { - $name = (string) $name; - - // normalize name - $name = preg_replace('#/{2,}#', '/', strtr($name, '\\', '/')); - - if (isset($this->cache[$name])) { - return $this->cache[$name]; - } - - $this->validateName($name); - - $namespace = '__main__'; - if (isset($name[0]) && '@' == $name[0]) { - if (false === $pos = strpos($name, '/')) { - throw new Twig_Error_Loader(sprintf('Malformed namespaced template name "%s" (expecting "@namespace/template_name").', $name)); - } - - $namespace = substr($name, 1, $pos - 1); - - $name = substr($name, $pos + 1); - } - - if (!isset($this->paths[$namespace])) { - throw new Twig_Error_Loader(sprintf('There are no registered paths for namespace "%s".', $namespace)); - } - - foreach ($this->paths[$namespace] as $path) { - if (is_file($path.'/'.$name)) { - return $this->cache[$name] = $path.'/'.$name; - } - } - - throw new Twig_Error_Loader(sprintf('Unable to find template "%s" (looked into: %s).', $name, implode(', ', $this->paths[$namespace]))); - } - - protected function validateName($name) - { - if (false !== strpos($name, "\0")) { - throw new Twig_Error_Loader('A template name cannot contain NUL bytes.'); - } - - $parts = explode('/', $name); - $level = 0; - foreach ($parts as $part) { - if ('..' === $part) { - --$level; - } elseif ('.' !== $part) { - ++$level; - } - - if ($level < 0) { - throw new Twig_Error_Loader(sprintf('Looks like you try to load a template outside configured directories (%s).', $name)); - } - } - } -} diff --git a/core1/lib/Twig/Loader/String.php b/core1/lib/Twig/Loader/String.php deleted file mode 100644 index 8ad9856c..00000000 --- a/core1/lib/Twig/Loader/String.php +++ /dev/null @@ -1,59 +0,0 @@ - - */ -class Twig_Loader_String implements Twig_LoaderInterface, Twig_ExistsLoaderInterface -{ - /** - * {@inheritdoc} - */ - public function getSource($name) - { - return $name; - } - - /** - * {@inheritdoc} - */ - public function exists($name) - { - return true; - } - - /** - * {@inheritdoc} - */ - public function getCacheKey($name) - { - return $name; - } - - /** - * {@inheritdoc} - */ - public function isFresh($name, $time) - { - return true; - } -} diff --git a/core1/lib/Twig/LoaderInterface.php b/core1/lib/Twig/LoaderInterface.php deleted file mode 100644 index 927786d1..00000000 --- a/core1/lib/Twig/LoaderInterface.php +++ /dev/null @@ -1,52 +0,0 @@ - - */ -interface Twig_LoaderInterface -{ - /** - * Gets the source code of a template, given its name. - * - * @param string $name The name of the template to load - * - * @return string The template source code - * - * @throws Twig_Error_Loader When $name is not found - */ - public function getSource($name); - - /** - * Gets the cache key to use for the cache for a given template name. - * - * @param string $name The name of the template to load - * - * @return string The cache key - * - * @throws Twig_Error_Loader When $name is not found - */ - public function getCacheKey($name); - - /** - * Returns true if the template is still fresh. - * - * @param string $name The template name - * @param timestamp $time The last modification time of the cached template - * - * @return Boolean true if the template is fresh, false otherwise - * - * @throws Twig_Error_Loader When $name is not found - */ - public function isFresh($name, $time); -} diff --git a/core1/lib/Twig/Markup.php b/core1/lib/Twig/Markup.php deleted file mode 100644 index 69871fcb..00000000 --- a/core1/lib/Twig/Markup.php +++ /dev/null @@ -1,37 +0,0 @@ - - */ -class Twig_Markup implements Countable -{ - protected $content; - protected $charset; - - public function __construct($content, $charset) - { - $this->content = (string) $content; - $this->charset = $charset; - } - - public function __toString() - { - return $this->content; - } - - public function count() - { - return function_exists('mb_get_info') ? mb_strlen($this->content, $this->charset) : strlen($this->content); - } -} diff --git a/core1/lib/Twig/Node.php b/core1/lib/Twig/Node.php deleted file mode 100644 index 931b4635..00000000 --- a/core1/lib/Twig/Node.php +++ /dev/null @@ -1,226 +0,0 @@ - - */ -class Twig_Node implements Twig_NodeInterface -{ - protected $nodes; - protected $attributes; - protected $lineno; - protected $tag; - - /** - * Constructor. - * - * The nodes are automatically made available as properties ($this->node). - * The attributes are automatically made available as array items ($this['name']). - * - * @param array $nodes An array of named nodes - * @param array $attributes An array of attributes (should not be nodes) - * @param integer $lineno The line number - * @param string $tag The tag name associated with the Node - */ - public function __construct(array $nodes = array(), array $attributes = array(), $lineno = 0, $tag = null) - { - $this->nodes = $nodes; - $this->attributes = $attributes; - $this->lineno = $lineno; - $this->tag = $tag; - } - - public function __toString() - { - $attributes = array(); - foreach ($this->attributes as $name => $value) { - $attributes[] = sprintf('%s: %s', $name, str_replace("\n", '', var_export($value, true))); - } - - $repr = array(get_class($this).'('.implode(', ', $attributes)); - - if (count($this->nodes)) { - foreach ($this->nodes as $name => $node) { - $len = strlen($name) + 4; - $noderepr = array(); - foreach (explode("\n", (string) $node) as $line) { - $noderepr[] = str_repeat(' ', $len).$line; - } - - $repr[] = sprintf(' %s: %s', $name, ltrim(implode("\n", $noderepr))); - } - - $repr[] = ')'; - } else { - $repr[0] .= ')'; - } - - return implode("\n", $repr); - } - - public function toXml($asDom = false) - { - $dom = new DOMDocument('1.0', 'UTF-8'); - $dom->formatOutput = true; - $dom->appendChild($xml = $dom->createElement('twig')); - - $xml->appendChild($node = $dom->createElement('node')); - $node->setAttribute('class', get_class($this)); - - foreach ($this->attributes as $name => $value) { - $node->appendChild($attribute = $dom->createElement('attribute')); - $attribute->setAttribute('name', $name); - $attribute->appendChild($dom->createTextNode($value)); - } - - foreach ($this->nodes as $name => $n) { - if (null === $n) { - continue; - } - - $child = $n->toXml(true)->getElementsByTagName('node')->item(0); - $child = $dom->importNode($child, true); - $child->setAttribute('name', $name); - - $node->appendChild($child); - } - - return $asDom ? $dom : $dom->saveXml(); - } - - public function compile(Twig_Compiler $compiler) - { - foreach ($this->nodes as $node) { - $node->compile($compiler); - } - } - - public function getLine() - { - return $this->lineno; - } - - public function getNodeTag() - { - return $this->tag; - } - - /** - * Returns true if the attribute is defined. - * - * @param string The attribute name - * - * @return Boolean true if the attribute is defined, false otherwise - */ - public function hasAttribute($name) - { - return array_key_exists($name, $this->attributes); - } - - /** - * Gets an attribute. - * - * @param string The attribute name - * - * @return mixed The attribute value - */ - public function getAttribute($name) - { - if (!array_key_exists($name, $this->attributes)) { - throw new LogicException(sprintf('Attribute "%s" does not exist for Node "%s".', $name, get_class($this))); - } - - return $this->attributes[$name]; - } - - /** - * Sets an attribute. - * - * @param string The attribute name - * @param mixed The attribute value - */ - public function setAttribute($name, $value) - { - $this->attributes[$name] = $value; - } - - /** - * Removes an attribute. - * - * @param string The attribute name - */ - public function removeAttribute($name) - { - unset($this->attributes[$name]); - } - - /** - * Returns true if the node with the given identifier exists. - * - * @param string The node name - * - * @return Boolean true if the node with the given name exists, false otherwise - */ - public function hasNode($name) - { - return array_key_exists($name, $this->nodes); - } - - /** - * Gets a node by name. - * - * @param string The node name - * - * @return Twig_Node A Twig_Node instance - */ - public function getNode($name) - { - if (!array_key_exists($name, $this->nodes)) { - throw new LogicException(sprintf('Node "%s" does not exist for Node "%s".', $name, get_class($this))); - } - - return $this->nodes[$name]; - } - - /** - * Sets a node. - * - * @param string The node name - * @param Twig_Node A Twig_Node instance - */ - public function setNode($name, $node = null) - { - $this->nodes[$name] = $node; - } - - /** - * Removes a node by name. - * - * @param string The node name - */ - public function removeNode($name) - { - unset($this->nodes[$name]); - } - - public function count() - { - return count($this->nodes); - } - - public function getIterator() - { - return new ArrayIterator($this->nodes); - } -} diff --git a/core1/lib/Twig/Node/AutoEscape.php b/core1/lib/Twig/Node/AutoEscape.php deleted file mode 100644 index 8f190e0b..00000000 --- a/core1/lib/Twig/Node/AutoEscape.php +++ /dev/null @@ -1,39 +0,0 @@ - - */ -class Twig_Node_AutoEscape extends Twig_Node -{ - public function __construct($value, Twig_NodeInterface $body, $lineno, $tag = 'autoescape') - { - parent::__construct(array('body' => $body), array('value' => $value), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler->subcompile($this->getNode('body')); - } -} diff --git a/core1/lib/Twig/Node/Block.php b/core1/lib/Twig/Node/Block.php deleted file mode 100644 index 50eb67ed..00000000 --- a/core1/lib/Twig/Node/Block.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ -class Twig_Node_Block extends Twig_Node -{ - public function __construct($name, Twig_NodeInterface $body, $lineno, $tag = null) - { - parent::__construct(array('body' => $body), array('name' => $name), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->addDebugInfo($this) - ->write(sprintf("public function block_%s(\$context, array \$blocks = array())\n", $this->getAttribute('name')), "{\n") - ->indent() - ; - - $compiler - ->subcompile($this->getNode('body')) - ->outdent() - ->write("}\n\n") - ; - } -} diff --git a/core1/lib/Twig/Node/BlockReference.php b/core1/lib/Twig/Node/BlockReference.php deleted file mode 100644 index 013e369e..00000000 --- a/core1/lib/Twig/Node/BlockReference.php +++ /dev/null @@ -1,37 +0,0 @@ - - */ -class Twig_Node_BlockReference extends Twig_Node implements Twig_NodeOutputInterface -{ - public function __construct($name, $lineno, $tag = null) - { - parent::__construct(array(), array('name' => $name), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->addDebugInfo($this) - ->write(sprintf("\$this->displayBlock('%s', \$context, \$blocks);\n", $this->getAttribute('name'))) - ; - } -} diff --git a/core1/lib/Twig/Node/Body.php b/core1/lib/Twig/Node/Body.php deleted file mode 100644 index 3ffb1342..00000000 --- a/core1/lib/Twig/Node/Body.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ -class Twig_Node_Body extends Twig_Node -{ -} diff --git a/core1/lib/Twig/Node/Do.php b/core1/lib/Twig/Node/Do.php deleted file mode 100644 index c528066b..00000000 --- a/core1/lib/Twig/Node/Do.php +++ /dev/null @@ -1,38 +0,0 @@ - - */ -class Twig_Node_Do extends Twig_Node -{ - public function __construct(Twig_Node_Expression $expr, $lineno, $tag = null) - { - parent::__construct(array('expr' => $expr), array(), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->addDebugInfo($this) - ->write('') - ->subcompile($this->getNode('expr')) - ->raw(";\n") - ; - } -} diff --git a/core1/lib/Twig/Node/Embed.php b/core1/lib/Twig/Node/Embed.php deleted file mode 100644 index 4c9456dc..00000000 --- a/core1/lib/Twig/Node/Embed.php +++ /dev/null @@ -1,38 +0,0 @@ - - */ -class Twig_Node_Embed extends Twig_Node_Include -{ - // we don't inject the module to avoid node visitors to traverse it twice (as it will be already visited in the main module) - public function __construct($filename, $index, Twig_Node_Expression $variables = null, $only = false, $ignoreMissing = false, $lineno, $tag = null) - { - parent::__construct(new Twig_Node_Expression_Constant('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno, $tag); - - $this->setAttribute('filename', $filename); - $this->setAttribute('index', $index); - } - - protected function addGetTemplate(Twig_Compiler $compiler) - { - $compiler - ->write("\$this->env->loadTemplate(") - ->string($this->getAttribute('filename')) - ->raw(', ') - ->string($this->getAttribute('index')) - ->raw(")") - ; - } -} diff --git a/core1/lib/Twig/Node/Expression.php b/core1/lib/Twig/Node/Expression.php deleted file mode 100644 index a7382e7d..00000000 --- a/core1/lib/Twig/Node/Expression.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ -abstract class Twig_Node_Expression extends Twig_Node -{ -} diff --git a/core1/lib/Twig/Node/Expression/Array.php b/core1/lib/Twig/Node/Expression/Array.php deleted file mode 100644 index 1da785fe..00000000 --- a/core1/lib/Twig/Node/Expression/Array.php +++ /dev/null @@ -1,86 +0,0 @@ -index = -1; - foreach ($this->getKeyValuePairs() as $pair) { - if ($pair['key'] instanceof Twig_Node_Expression_Constant && ctype_digit((string) $pair['key']->getAttribute('value')) && $pair['key']->getAttribute('value') > $this->index) { - $this->index = $pair['key']->getAttribute('value'); - } - } - } - - public function getKeyValuePairs() - { - $pairs = array(); - - foreach (array_chunk($this->nodes, 2) as $pair) { - $pairs[] = array( - 'key' => $pair[0], - 'value' => $pair[1], - ); - } - - return $pairs; - } - - public function hasElement(Twig_Node_Expression $key) - { - foreach ($this->getKeyValuePairs() as $pair) { - // we compare the string representation of the keys - // to avoid comparing the line numbers which are not relevant here. - if ((string) $key == (string) $pair['key']) { - return true; - } - } - - return false; - } - - public function addElement(Twig_Node_Expression $value, Twig_Node_Expression $key = null) - { - if (null === $key) { - $key = new Twig_Node_Expression_Constant(++$this->index, $value->getLine()); - } - - array_push($this->nodes, $key, $value); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler->raw('array('); - $first = true; - foreach ($this->getKeyValuePairs() as $pair) { - if (!$first) { - $compiler->raw(', '); - } - $first = false; - - $compiler - ->subcompile($pair['key']) - ->raw(' => ') - ->subcompile($pair['value']) - ; - } - $compiler->raw(')'); - } -} diff --git a/core1/lib/Twig/Node/Expression/AssignName.php b/core1/lib/Twig/Node/Expression/AssignName.php deleted file mode 100644 index 2ddea78c..00000000 --- a/core1/lib/Twig/Node/Expression/AssignName.php +++ /dev/null @@ -1,28 +0,0 @@ -raw('$context[') - ->string($this->getAttribute('name')) - ->raw(']') - ; - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary.php b/core1/lib/Twig/Node/Expression/Binary.php deleted file mode 100644 index 9dd5de2c..00000000 --- a/core1/lib/Twig/Node/Expression/Binary.php +++ /dev/null @@ -1,40 +0,0 @@ - $left, 'right' => $right), array(), $lineno); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->raw('(') - ->subcompile($this->getNode('left')) - ->raw(' ') - ; - $this->operator($compiler); - $compiler - ->raw(' ') - ->subcompile($this->getNode('right')) - ->raw(')') - ; - } - - abstract public function operator(Twig_Compiler $compiler); -} diff --git a/core1/lib/Twig/Node/Expression/Binary/Add.php b/core1/lib/Twig/Node/Expression/Binary/Add.php deleted file mode 100644 index 0ef8e117..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/Add.php +++ /dev/null @@ -1,18 +0,0 @@ -raw('+'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/And.php b/core1/lib/Twig/Node/Expression/Binary/And.php deleted file mode 100644 index d5752ebb..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/And.php +++ /dev/null @@ -1,18 +0,0 @@ -raw('&&'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/BitwiseAnd.php b/core1/lib/Twig/Node/Expression/Binary/BitwiseAnd.php deleted file mode 100644 index 9a46d845..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/BitwiseAnd.php +++ /dev/null @@ -1,18 +0,0 @@ -raw('&'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/BitwiseOr.php b/core1/lib/Twig/Node/Expression/Binary/BitwiseOr.php deleted file mode 100644 index 058a20bf..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/BitwiseOr.php +++ /dev/null @@ -1,18 +0,0 @@ -raw('|'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/BitwiseXor.php b/core1/lib/Twig/Node/Expression/Binary/BitwiseXor.php deleted file mode 100644 index f4da73d4..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/BitwiseXor.php +++ /dev/null @@ -1,18 +0,0 @@ -raw('^'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/Concat.php b/core1/lib/Twig/Node/Expression/Binary/Concat.php deleted file mode 100644 index f9a64627..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/Concat.php +++ /dev/null @@ -1,18 +0,0 @@ -raw('.'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/Div.php b/core1/lib/Twig/Node/Expression/Binary/Div.php deleted file mode 100644 index e0797a61..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/Div.php +++ /dev/null @@ -1,18 +0,0 @@ -raw('/'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/Equal.php b/core1/lib/Twig/Node/Expression/Binary/Equal.php deleted file mode 100644 index 7b1236d0..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/Equal.php +++ /dev/null @@ -1,17 +0,0 @@ -raw('=='); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/FloorDiv.php b/core1/lib/Twig/Node/Expression/Binary/FloorDiv.php deleted file mode 100644 index 7fbd0556..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/FloorDiv.php +++ /dev/null @@ -1,29 +0,0 @@ -raw('intval(floor('); - parent::compile($compiler); - $compiler->raw('))'); - } - - public function operator(Twig_Compiler $compiler) - { - return $compiler->raw('/'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/Greater.php b/core1/lib/Twig/Node/Expression/Binary/Greater.php deleted file mode 100644 index a110bd92..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/Greater.php +++ /dev/null @@ -1,17 +0,0 @@ -raw('>'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/GreaterEqual.php b/core1/lib/Twig/Node/Expression/Binary/GreaterEqual.php deleted file mode 100644 index 3754fed2..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/GreaterEqual.php +++ /dev/null @@ -1,17 +0,0 @@ -raw('>='); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/In.php b/core1/lib/Twig/Node/Expression/Binary/In.php deleted file mode 100644 index 788f9377..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/In.php +++ /dev/null @@ -1,33 +0,0 @@ -raw('twig_in_filter(') - ->subcompile($this->getNode('left')) - ->raw(', ') - ->subcompile($this->getNode('right')) - ->raw(')') - ; - } - - public function operator(Twig_Compiler $compiler) - { - return $compiler->raw('in'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/Less.php b/core1/lib/Twig/Node/Expression/Binary/Less.php deleted file mode 100644 index 45fd3004..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/Less.php +++ /dev/null @@ -1,17 +0,0 @@ -raw('<'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/LessEqual.php b/core1/lib/Twig/Node/Expression/Binary/LessEqual.php deleted file mode 100644 index e38e257c..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/LessEqual.php +++ /dev/null @@ -1,17 +0,0 @@ -raw('<='); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/Mod.php b/core1/lib/Twig/Node/Expression/Binary/Mod.php deleted file mode 100644 index 9924114f..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/Mod.php +++ /dev/null @@ -1,18 +0,0 @@ -raw('%'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/Mul.php b/core1/lib/Twig/Node/Expression/Binary/Mul.php deleted file mode 100644 index c91529ca..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/Mul.php +++ /dev/null @@ -1,18 +0,0 @@ -raw('*'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/NotEqual.php b/core1/lib/Twig/Node/Expression/Binary/NotEqual.php deleted file mode 100644 index 26867ba2..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/NotEqual.php +++ /dev/null @@ -1,17 +0,0 @@ -raw('!='); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/NotIn.php b/core1/lib/Twig/Node/Expression/Binary/NotIn.php deleted file mode 100644 index f347b7b6..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/NotIn.php +++ /dev/null @@ -1,33 +0,0 @@ -raw('!twig_in_filter(') - ->subcompile($this->getNode('left')) - ->raw(', ') - ->subcompile($this->getNode('right')) - ->raw(')') - ; - } - - public function operator(Twig_Compiler $compiler) - { - return $compiler->raw('not in'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/Or.php b/core1/lib/Twig/Node/Expression/Binary/Or.php deleted file mode 100644 index adba49c6..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/Or.php +++ /dev/null @@ -1,18 +0,0 @@ -raw('||'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/Power.php b/core1/lib/Twig/Node/Expression/Binary/Power.php deleted file mode 100644 index b2c59040..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/Power.php +++ /dev/null @@ -1,33 +0,0 @@ -raw('pow(') - ->subcompile($this->getNode('left')) - ->raw(', ') - ->subcompile($this->getNode('right')) - ->raw(')') - ; - } - - public function operator(Twig_Compiler $compiler) - { - return $compiler->raw('**'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/Range.php b/core1/lib/Twig/Node/Expression/Binary/Range.php deleted file mode 100644 index bea4f2a6..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/Range.php +++ /dev/null @@ -1,33 +0,0 @@ -raw('range(') - ->subcompile($this->getNode('left')) - ->raw(', ') - ->subcompile($this->getNode('right')) - ->raw(')') - ; - } - - public function operator(Twig_Compiler $compiler) - { - return $compiler->raw('..'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Binary/Sub.php b/core1/lib/Twig/Node/Expression/Binary/Sub.php deleted file mode 100644 index d4463991..00000000 --- a/core1/lib/Twig/Node/Expression/Binary/Sub.php +++ /dev/null @@ -1,18 +0,0 @@ -raw('-'); - } -} diff --git a/core1/lib/Twig/Node/Expression/BlockReference.php b/core1/lib/Twig/Node/Expression/BlockReference.php deleted file mode 100644 index 647196eb..00000000 --- a/core1/lib/Twig/Node/Expression/BlockReference.php +++ /dev/null @@ -1,51 +0,0 @@ - - */ -class Twig_Node_Expression_BlockReference extends Twig_Node_Expression -{ - public function __construct(Twig_NodeInterface $name, $asString = false, $lineno, $tag = null) - { - parent::__construct(array('name' => $name), array('as_string' => $asString, 'output' => false), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - if ($this->getAttribute('as_string')) { - $compiler->raw('(string) '); - } - - if ($this->getAttribute('output')) { - $compiler - ->addDebugInfo($this) - ->write("\$this->displayBlock(") - ->subcompile($this->getNode('name')) - ->raw(", \$context, \$blocks);\n") - ; - } else { - $compiler - ->raw("\$this->renderBlock(") - ->subcompile($this->getNode('name')) - ->raw(", \$context, \$blocks)") - ; - } - } -} diff --git a/core1/lib/Twig/Node/Expression/Call.php b/core1/lib/Twig/Node/Expression/Call.php deleted file mode 100644 index a97b3b57..00000000 --- a/core1/lib/Twig/Node/Expression/Call.php +++ /dev/null @@ -1,171 +0,0 @@ -getAttribute('callable'); - - $closingParenthesis = false; - if ($callable) { - if (is_string($callable)) { - $compiler->raw($callable); - } elseif (is_array($callable) && $callable[0] instanceof Twig_ExtensionInterface) { - $compiler->raw(sprintf('$this->env->getExtension(\'%s\')->%s', $callable[0]->getName(), $callable[1])); - } else { - $type = ucfirst($this->getAttribute('type')); - $compiler->raw(sprintf('call_user_func_array($this->env->get%s(\'%s\')->getCallable(), array', $type, $this->getAttribute('name'))); - $closingParenthesis = true; - } - } else { - $compiler->raw($this->getAttribute('thing')->compile()); - } - - $this->compileArguments($compiler); - - if ($closingParenthesis) { - $compiler->raw(')'); - } - } - - protected function compileArguments(Twig_Compiler $compiler) - { - $compiler->raw('('); - - $first = true; - - if ($this->hasAttribute('needs_environment') && $this->getAttribute('needs_environment')) { - $compiler->raw('$this->env'); - $first = false; - } - - if ($this->hasAttribute('needs_context') && $this->getAttribute('needs_context')) { - if (!$first) { - $compiler->raw(', '); - } - $compiler->raw('$context'); - $first = false; - } - - if ($this->hasAttribute('arguments')) { - foreach ($this->getAttribute('arguments') as $argument) { - if (!$first) { - $compiler->raw(', '); - } - $compiler->string($argument); - $first = false; - } - } - - if ($this->hasNode('node')) { - if (!$first) { - $compiler->raw(', '); - } - $compiler->subcompile($this->getNode('node')); - $first = false; - } - - if ($this->hasNode('arguments') && null !== $this->getNode('arguments')) { - $callable = $this->hasAttribute('callable') ? $this->getAttribute('callable') : null; - - $arguments = $this->getArguments($callable, $this->getNode('arguments')); - - foreach ($arguments as $node) { - if (!$first) { - $compiler->raw(', '); - } - $compiler->subcompile($node); - $first = false; - } - } - - $compiler->raw(')'); - } - - protected function getArguments($callable, $arguments) - { - $parameters = array(); - $named = false; - foreach ($arguments as $name => $node) { - if (!is_int($name)) { - $named = true; - $name = $this->normalizeName($name); - } - $parameters[$name] = $node; - } - - if (!$named) { - return $parameters; - } - - if (!$callable) { - throw new LogicException(sprintf('Named arguments are not supported for %s "%s".', $this->getAttribute('type'), $this->getAttribute('name'))); - } - - // manage named arguments - if (is_array($callable)) { - $r = new ReflectionMethod($callable[0], $callable[1]); - } elseif (is_object($callable) && !$callable instanceof Closure) { - $r = new ReflectionObject($callable); - $r = $r->getMethod('__invoke'); - } else { - $r = new ReflectionFunction($callable); - } - - $definition = $r->getParameters(); - if ($this->hasNode('node')) { - array_shift($definition); - } - if ($this->hasAttribute('needs_environment') && $this->getAttribute('needs_environment')) { - array_shift($definition); - } - if ($this->hasAttribute('needs_context') && $this->getAttribute('needs_context')) { - array_shift($definition); - } - if ($this->hasAttribute('arguments') && null !== $this->getAttribute('arguments')) { - foreach ($this->getAttribute('arguments') as $argument) { - array_shift($definition); - } - } - - $arguments = array(); - $pos = 0; - foreach ($definition as $param) { - $name = $this->normalizeName($param->name); - - if (array_key_exists($name, $parameters)) { - $arguments[] = $parameters[$name]; - unset($parameters[$name]); - } elseif (array_key_exists($pos, $parameters)) { - $arguments[] = $parameters[$pos]; - unset($parameters[$pos]); - ++$pos; - } elseif ($param->isDefaultValueAvailable()) { - $arguments[] = new Twig_Node_Expression_Constant($param->getDefaultValue(), -1); - } elseif ($param->isOptional()) { - break; - } else { - throw new Twig_Error_Syntax(sprintf('Value for argument "%s" is required for %s "%s".', $name, $this->getAttribute('type'), $this->getAttribute('name'))); - } - } - - foreach (array_keys($parameters) as $name) { - throw new Twig_Error_Syntax(sprintf('Unknown argument "%s" for %s "%s".', $name, $this->getAttribute('type'), $this->getAttribute('name'))); - } - - return $arguments; - } - - protected function normalizeName($name) - { - return strtolower(preg_replace(array('/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'), array('\\1_\\2', '\\1_\\2'), $name)); - } -} diff --git a/core1/lib/Twig/Node/Expression/Conditional.php b/core1/lib/Twig/Node/Expression/Conditional.php deleted file mode 100644 index edcb1e2d..00000000 --- a/core1/lib/Twig/Node/Expression/Conditional.php +++ /dev/null @@ -1,31 +0,0 @@ - $expr1, 'expr2' => $expr2, 'expr3' => $expr3), array(), $lineno); - } - - public function compile(Twig_Compiler $compiler) - { - $compiler - ->raw('((') - ->subcompile($this->getNode('expr1')) - ->raw(') ? (') - ->subcompile($this->getNode('expr2')) - ->raw(') : (') - ->subcompile($this->getNode('expr3')) - ->raw('))') - ; - } -} diff --git a/core1/lib/Twig/Node/Expression/Constant.php b/core1/lib/Twig/Node/Expression/Constant.php deleted file mode 100644 index a91dc698..00000000 --- a/core1/lib/Twig/Node/Expression/Constant.php +++ /dev/null @@ -1,23 +0,0 @@ - $value), $lineno); - } - - public function compile(Twig_Compiler $compiler) - { - $compiler->repr($this->getAttribute('value')); - } -} diff --git a/core1/lib/Twig/Node/Expression/ExtensionReference.php b/core1/lib/Twig/Node/Expression/ExtensionReference.php deleted file mode 100644 index 00ac6701..00000000 --- a/core1/lib/Twig/Node/Expression/ExtensionReference.php +++ /dev/null @@ -1,33 +0,0 @@ - - */ -class Twig_Node_Expression_ExtensionReference extends Twig_Node_Expression -{ - public function __construct($name, $lineno, $tag = null) - { - parent::__construct(array(), array('name' => $name), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler->raw(sprintf("\$this->env->getExtension('%s')", $this->getAttribute('name'))); - } -} diff --git a/core1/lib/Twig/Node/Expression/Filter.php b/core1/lib/Twig/Node/Expression/Filter.php deleted file mode 100644 index 207b062a..00000000 --- a/core1/lib/Twig/Node/Expression/Filter.php +++ /dev/null @@ -1,36 +0,0 @@ - $node, 'filter' => $filterName, 'arguments' => $arguments), array(), $lineno, $tag); - } - - public function compile(Twig_Compiler $compiler) - { - $name = $this->getNode('filter')->getAttribute('value'); - $filter = $compiler->getEnvironment()->getFilter($name); - - $this->setAttribute('name', $name); - $this->setAttribute('type', 'filter'); - $this->setAttribute('thing', $filter); - $this->setAttribute('needs_environment', $filter->needsEnvironment()); - $this->setAttribute('needs_context', $filter->needsContext()); - $this->setAttribute('arguments', $filter->getArguments()); - if ($filter instanceof Twig_FilterCallableInterface || $filter instanceof Twig_SimpleFilter) { - $this->setAttribute('callable', $filter->getCallable()); - } - - $this->compileCallable($compiler); - } -} diff --git a/core1/lib/Twig/Node/Expression/Filter/Default.php b/core1/lib/Twig/Node/Expression/Filter/Default.php deleted file mode 100644 index 1827c888..00000000 --- a/core1/lib/Twig/Node/Expression/Filter/Default.php +++ /dev/null @@ -1,43 +0,0 @@ - - * {{ var.foo|default('foo item on var is not defined') }} - * - * - * @author Fabien Potencier - */ -class Twig_Node_Expression_Filter_Default extends Twig_Node_Expression_Filter -{ - public function __construct(Twig_NodeInterface $node, Twig_Node_Expression_Constant $filterName, Twig_NodeInterface $arguments, $lineno, $tag = null) - { - $default = new Twig_Node_Expression_Filter($node, new Twig_Node_Expression_Constant('default', $node->getLine()), $arguments, $node->getLine()); - - if ('default' === $filterName->getAttribute('value') && ($node instanceof Twig_Node_Expression_Name || $node instanceof Twig_Node_Expression_GetAttr)) { - $test = new Twig_Node_Expression_Test_Defined(clone $node, 'defined', new Twig_Node(), $node->getLine()); - $false = count($arguments) ? $arguments->getNode(0) : new Twig_Node_Expression_Constant('', $node->getLine()); - - $node = new Twig_Node_Expression_Conditional($test, $default, $false, $node->getLine()); - } else { - $node = $default; - } - - parent::__construct($node, $filterName, $arguments, $lineno, $tag); - } - - public function compile(Twig_Compiler $compiler) - { - $compiler->subcompile($this->getNode('node')); - } -} diff --git a/core1/lib/Twig/Node/Expression/Function.php b/core1/lib/Twig/Node/Expression/Function.php deleted file mode 100644 index 3e1f6b55..00000000 --- a/core1/lib/Twig/Node/Expression/Function.php +++ /dev/null @@ -1,35 +0,0 @@ - $arguments), array('name' => $name), $lineno); - } - - public function compile(Twig_Compiler $compiler) - { - $name = $this->getAttribute('name'); - $function = $compiler->getEnvironment()->getFunction($name); - - $this->setAttribute('name', $name); - $this->setAttribute('type', 'function'); - $this->setAttribute('thing', $function); - $this->setAttribute('needs_environment', $function->needsEnvironment()); - $this->setAttribute('needs_context', $function->needsContext()); - $this->setAttribute('arguments', $function->getArguments()); - if ($function instanceof Twig_FunctionCallableInterface || $function instanceof Twig_SimpleFunction) { - $this->setAttribute('callable', $function->getCallable()); - } - - $this->compileCallable($compiler); - } -} diff --git a/core1/lib/Twig/Node/Expression/GetAttr.php b/core1/lib/Twig/Node/Expression/GetAttr.php deleted file mode 100644 index 81a9b137..00000000 --- a/core1/lib/Twig/Node/Expression/GetAttr.php +++ /dev/null @@ -1,53 +0,0 @@ - $node, 'attribute' => $attribute, 'arguments' => $arguments), array('type' => $type, 'is_defined_test' => false, 'ignore_strict_check' => false, 'disable_c_ext' => false), $lineno); - } - - public function compile(Twig_Compiler $compiler) - { - if (function_exists('twig_template_get_attributes') && !$this->getAttribute('disable_c_ext')) { - $compiler->raw('twig_template_get_attributes($this, '); - } else { - $compiler->raw('$this->getAttribute('); - } - - if ($this->getAttribute('ignore_strict_check')) { - $this->getNode('node')->setAttribute('ignore_strict_check', true); - } - - $compiler->subcompile($this->getNode('node')); - - $compiler->raw(', ')->subcompile($this->getNode('attribute')); - - if (count($this->getNode('arguments')) || Twig_TemplateInterface::ANY_CALL !== $this->getAttribute('type') || $this->getAttribute('is_defined_test') || $this->getAttribute('ignore_strict_check')) { - $compiler->raw(', ')->subcompile($this->getNode('arguments')); - - if (Twig_TemplateInterface::ANY_CALL !== $this->getAttribute('type') || $this->getAttribute('is_defined_test') || $this->getAttribute('ignore_strict_check')) { - $compiler->raw(', ')->repr($this->getAttribute('type')); - } - - if ($this->getAttribute('is_defined_test') || $this->getAttribute('ignore_strict_check')) { - $compiler->raw(', '.($this->getAttribute('is_defined_test') ? 'true' : 'false')); - } - - if ($this->getAttribute('ignore_strict_check')) { - $compiler->raw(', '.($this->getAttribute('ignore_strict_check') ? 'true' : 'false')); - } - } - - $compiler->raw(')'); - } -} diff --git a/core1/lib/Twig/Node/Expression/MethodCall.php b/core1/lib/Twig/Node/Expression/MethodCall.php deleted file mode 100644 index 620b02bf..00000000 --- a/core1/lib/Twig/Node/Expression/MethodCall.php +++ /dev/null @@ -1,41 +0,0 @@ - $node, 'arguments' => $arguments), array('method' => $method, 'safe' => false), $lineno); - - if ($node instanceof Twig_Node_Expression_Name) { - $node->setAttribute('always_defined', true); - } - } - - public function compile(Twig_Compiler $compiler) - { - $compiler - ->subcompile($this->getNode('node')) - ->raw('->') - ->raw($this->getAttribute('method')) - ->raw('(') - ; - $first = true; - foreach ($this->getNode('arguments')->getKeyValuePairs() as $pair) { - if (!$first) { - $compiler->raw(', '); - } - $first = false; - - $compiler->subcompile($pair['value']); - } - $compiler->raw(')'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Name.php b/core1/lib/Twig/Node/Expression/Name.php deleted file mode 100644 index 3b8fae01..00000000 --- a/core1/lib/Twig/Node/Expression/Name.php +++ /dev/null @@ -1,88 +0,0 @@ - '$this', - '_context' => '$context', - '_charset' => '$this->env->getCharset()', - ); - - public function __construct($name, $lineno) - { - parent::__construct(array(), array('name' => $name, 'is_defined_test' => false, 'ignore_strict_check' => false, 'always_defined' => false), $lineno); - } - - public function compile(Twig_Compiler $compiler) - { - $name = $this->getAttribute('name'); - - if ($this->getAttribute('is_defined_test')) { - if ($this->isSpecial()) { - $compiler->repr(true); - } else { - $compiler->raw('array_key_exists(')->repr($name)->raw(', $context)'); - } - } elseif ($this->isSpecial()) { - $compiler->raw($this->specialVars[$name]); - } elseif ($this->getAttribute('always_defined')) { - $compiler - ->raw('$context[') - ->string($name) - ->raw(']') - ; - } else { - // remove the non-PHP 5.4 version when PHP 5.3 support is dropped - // as the non-optimized version is just a workaround for slow ternary operator - // when the context has a lot of variables - if (version_compare(phpversion(), '5.4.0RC1', '>=')) { - // PHP 5.4 ternary operator performance was optimized - $compiler - ->raw('(isset($context[') - ->string($name) - ->raw(']) ? $context[') - ->string($name) - ->raw('] : ') - ; - - if ($this->getAttribute('ignore_strict_check') || !$compiler->getEnvironment()->isStrictVariables()) { - $compiler->raw('null)'); - } else { - $compiler->raw('$this->getContext($context, ')->string($name)->raw('))'); - } - } else { - $compiler - ->raw('$this->getContext($context, ') - ->string($name) - ; - - if ($this->getAttribute('ignore_strict_check')) { - $compiler->raw(', true'); - } - - $compiler - ->raw(')') - ; - } - } - } - - public function isSpecial() - { - return isset($this->specialVars[$this->getAttribute('name')]); - } - - public function isSimple() - { - return !$this->isSpecial() && !$this->getAttribute('is_defined_test'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Parent.php b/core1/lib/Twig/Node/Expression/Parent.php deleted file mode 100644 index dcf618c0..00000000 --- a/core1/lib/Twig/Node/Expression/Parent.php +++ /dev/null @@ -1,47 +0,0 @@ - - */ -class Twig_Node_Expression_Parent extends Twig_Node_Expression -{ - public function __construct($name, $lineno, $tag = null) - { - parent::__construct(array(), array('output' => false, 'name' => $name), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - if ($this->getAttribute('output')) { - $compiler - ->addDebugInfo($this) - ->write("\$this->displayParentBlock(") - ->string($this->getAttribute('name')) - ->raw(", \$context, \$blocks);\n") - ; - } else { - $compiler - ->raw("\$this->renderParentBlock(") - ->string($this->getAttribute('name')) - ->raw(", \$context, \$blocks)") - ; - } - } -} diff --git a/core1/lib/Twig/Node/Expression/TempName.php b/core1/lib/Twig/Node/Expression/TempName.php deleted file mode 100644 index e6b058e8..00000000 --- a/core1/lib/Twig/Node/Expression/TempName.php +++ /dev/null @@ -1,26 +0,0 @@ - $name), $lineno); - } - - public function compile(Twig_Compiler $compiler) - { - $compiler - ->raw('$_') - ->raw($this->getAttribute('name')) - ->raw('_') - ; - } -} diff --git a/core1/lib/Twig/Node/Expression/Test.php b/core1/lib/Twig/Node/Expression/Test.php deleted file mode 100644 index 639f501a..00000000 --- a/core1/lib/Twig/Node/Expression/Test.php +++ /dev/null @@ -1,32 +0,0 @@ - $node, 'arguments' => $arguments), array('name' => $name), $lineno); - } - - public function compile(Twig_Compiler $compiler) - { - $name = $this->getAttribute('name'); - $test = $compiler->getEnvironment()->getTest($name); - - $this->setAttribute('name', $name); - $this->setAttribute('type', 'test'); - $this->setAttribute('thing', $test); - if ($test instanceof Twig_TestCallableInterface || $test instanceof Twig_SimpleTest) { - $this->setAttribute('callable', $test->getCallable()); - } - - $this->compileCallable($compiler); - } -} diff --git a/core1/lib/Twig/Node/Expression/Test/Constant.php b/core1/lib/Twig/Node/Expression/Test/Constant.php deleted file mode 100644 index 45b1e5da..00000000 --- a/core1/lib/Twig/Node/Expression/Test/Constant.php +++ /dev/null @@ -1,35 +0,0 @@ - - * {% if post.status is constant('Post::PUBLISHED') %} - * the status attribute is exactly the same as Post::PUBLISHED - * {% endif %} - * - * - * @author Fabien Potencier - */ -class Twig_Node_Expression_Test_Constant extends Twig_Node_Expression_Test -{ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->raw('(') - ->subcompile($this->getNode('node')) - ->raw(' === constant(') - ->subcompile($this->getNode('arguments')->getNode(0)) - ->raw('))') - ; - } -} diff --git a/core1/lib/Twig/Node/Expression/Test/Defined.php b/core1/lib/Twig/Node/Expression/Test/Defined.php deleted file mode 100644 index 85b07f59..00000000 --- a/core1/lib/Twig/Node/Expression/Test/Defined.php +++ /dev/null @@ -1,54 +0,0 @@ - - * {# defined works with variable names and variable attributes #} - * {% if foo is defined %} - * {# ... #} - * {% endif %} - * - * - * @author Fabien Potencier - */ -class Twig_Node_Expression_Test_Defined extends Twig_Node_Expression_Test -{ - public function __construct(Twig_NodeInterface $node, $name, Twig_NodeInterface $arguments = null, $lineno) - { - parent::__construct($node, $name, $arguments, $lineno); - - if ($node instanceof Twig_Node_Expression_Name) { - $node->setAttribute('is_defined_test', true); - } elseif ($node instanceof Twig_Node_Expression_GetAttr) { - $node->setAttribute('is_defined_test', true); - - $this->changeIgnoreStrictCheck($node); - } else { - throw new Twig_Error_Syntax('The "defined" test only works with simple variables', $this->getLine(), $compiler->getFilename()); - } - } - - protected function changeIgnoreStrictCheck(Twig_Node_Expression_GetAttr $node) - { - $node->setAttribute('ignore_strict_check', true); - - if ($node->getNode('node') instanceof Twig_Node_Expression_GetAttr) { - $this->changeIgnoreStrictCheck($node->getNode('node')); - } - } - - public function compile(Twig_Compiler $compiler) - { - $compiler->subcompile($this->getNode('node')); - } -} diff --git a/core1/lib/Twig/Node/Expression/Test/Divisibleby.php b/core1/lib/Twig/Node/Expression/Test/Divisibleby.php deleted file mode 100644 index 0aceb530..00000000 --- a/core1/lib/Twig/Node/Expression/Test/Divisibleby.php +++ /dev/null @@ -1,33 +0,0 @@ - - * {% if loop.index is divisibleby(3) %} - * - * - * @author Fabien Potencier - */ -class Twig_Node_Expression_Test_Divisibleby extends Twig_Node_Expression_Test -{ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->raw('(0 == ') - ->subcompile($this->getNode('node')) - ->raw(' % ') - ->subcompile($this->getNode('arguments')->getNode(0)) - ->raw(')') - ; - } -} diff --git a/core1/lib/Twig/Node/Expression/Test/Even.php b/core1/lib/Twig/Node/Expression/Test/Even.php deleted file mode 100644 index d7853e89..00000000 --- a/core1/lib/Twig/Node/Expression/Test/Even.php +++ /dev/null @@ -1,32 +0,0 @@ - - * {{ var is even }} - * - * - * @author Fabien Potencier - */ -class Twig_Node_Expression_Test_Even extends Twig_Node_Expression_Test -{ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->raw('(') - ->subcompile($this->getNode('node')) - ->raw(' % 2 == 0') - ->raw(')') - ; - } -} diff --git a/core1/lib/Twig/Node/Expression/Test/Null.php b/core1/lib/Twig/Node/Expression/Test/Null.php deleted file mode 100644 index 1c83825a..00000000 --- a/core1/lib/Twig/Node/Expression/Test/Null.php +++ /dev/null @@ -1,31 +0,0 @@ - - * {{ var is none }} - * - * - * @author Fabien Potencier - */ -class Twig_Node_Expression_Test_Null extends Twig_Node_Expression_Test -{ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->raw('(null === ') - ->subcompile($this->getNode('node')) - ->raw(')') - ; - } -} diff --git a/core1/lib/Twig/Node/Expression/Test/Odd.php b/core1/lib/Twig/Node/Expression/Test/Odd.php deleted file mode 100644 index 421c19e8..00000000 --- a/core1/lib/Twig/Node/Expression/Test/Odd.php +++ /dev/null @@ -1,32 +0,0 @@ - - * {{ var is odd }} - * - * - * @author Fabien Potencier - */ -class Twig_Node_Expression_Test_Odd extends Twig_Node_Expression_Test -{ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->raw('(') - ->subcompile($this->getNode('node')) - ->raw(' % 2 == 1') - ->raw(')') - ; - } -} diff --git a/core1/lib/Twig/Node/Expression/Test/Sameas.php b/core1/lib/Twig/Node/Expression/Test/Sameas.php deleted file mode 100644 index b48905ee..00000000 --- a/core1/lib/Twig/Node/Expression/Test/Sameas.php +++ /dev/null @@ -1,29 +0,0 @@ - - */ -class Twig_Node_Expression_Test_Sameas extends Twig_Node_Expression_Test -{ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->raw('(') - ->subcompile($this->getNode('node')) - ->raw(' === ') - ->subcompile($this->getNode('arguments')->getNode(0)) - ->raw(')') - ; - } -} diff --git a/core1/lib/Twig/Node/Expression/Unary.php b/core1/lib/Twig/Node/Expression/Unary.php deleted file mode 100644 index c514388e..00000000 --- a/core1/lib/Twig/Node/Expression/Unary.php +++ /dev/null @@ -1,30 +0,0 @@ - $node), array(), $lineno); - } - - public function compile(Twig_Compiler $compiler) - { - $compiler->raw('('); - $this->operator($compiler); - $compiler - ->subcompile($this->getNode('node')) - ->raw(')') - ; - } - - abstract public function operator(Twig_Compiler $compiler); -} diff --git a/core1/lib/Twig/Node/Expression/Unary/Neg.php b/core1/lib/Twig/Node/Expression/Unary/Neg.php deleted file mode 100644 index 2a3937ec..00000000 --- a/core1/lib/Twig/Node/Expression/Unary/Neg.php +++ /dev/null @@ -1,18 +0,0 @@ -raw('-'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Unary/Not.php b/core1/lib/Twig/Node/Expression/Unary/Not.php deleted file mode 100644 index f94073cf..00000000 --- a/core1/lib/Twig/Node/Expression/Unary/Not.php +++ /dev/null @@ -1,18 +0,0 @@ -raw('!'); - } -} diff --git a/core1/lib/Twig/Node/Expression/Unary/Pos.php b/core1/lib/Twig/Node/Expression/Unary/Pos.php deleted file mode 100644 index 04edb52a..00000000 --- a/core1/lib/Twig/Node/Expression/Unary/Pos.php +++ /dev/null @@ -1,18 +0,0 @@ -raw('+'); - } -} diff --git a/core1/lib/Twig/Node/Flush.php b/core1/lib/Twig/Node/Flush.php deleted file mode 100644 index 0467ddce..00000000 --- a/core1/lib/Twig/Node/Flush.php +++ /dev/null @@ -1,36 +0,0 @@ - - */ -class Twig_Node_Flush extends Twig_Node -{ - public function __construct($lineno, $tag) - { - parent::__construct(array(), array(), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->addDebugInfo($this) - ->write("flush();\n") - ; - } -} diff --git a/core1/lib/Twig/Node/For.php b/core1/lib/Twig/Node/For.php deleted file mode 100644 index 20e543c2..00000000 --- a/core1/lib/Twig/Node/For.php +++ /dev/null @@ -1,112 +0,0 @@ - - */ -class Twig_Node_For extends Twig_Node -{ - protected $loop; - - public function __construct(Twig_Node_Expression_AssignName $keyTarget, Twig_Node_Expression_AssignName $valueTarget, Twig_Node_Expression $seq, Twig_Node_Expression $ifexpr = null, Twig_NodeInterface $body, Twig_NodeInterface $else = null, $lineno, $tag = null) - { - $body = new Twig_Node(array($body, $this->loop = new Twig_Node_ForLoop($lineno, $tag))); - - if (null !== $ifexpr) { - $body = new Twig_Node_If(new Twig_Node(array($ifexpr, $body)), null, $lineno, $tag); - } - - parent::__construct(array('key_target' => $keyTarget, 'value_target' => $valueTarget, 'seq' => $seq, 'body' => $body, 'else' => $else), array('with_loop' => true, 'ifexpr' => null !== $ifexpr), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->addDebugInfo($this) - // the (array) cast bypasses a PHP 5.2.6 bug - ->write("\$context['_parent'] = (array) \$context;\n") - ->write("\$context['_seq'] = twig_ensure_traversable(") - ->subcompile($this->getNode('seq')) - ->raw(");\n") - ; - - if (null !== $this->getNode('else')) { - $compiler->write("\$context['_iterated'] = false;\n"); - } - - if ($this->getAttribute('with_loop')) { - $compiler - ->write("\$context['loop'] = array(\n") - ->write(" 'parent' => \$context['_parent'],\n") - ->write(" 'index0' => 0,\n") - ->write(" 'index' => 1,\n") - ->write(" 'first' => true,\n") - ->write(");\n") - ; - - if (!$this->getAttribute('ifexpr')) { - $compiler - ->write("if (is_array(\$context['_seq']) || (is_object(\$context['_seq']) && \$context['_seq'] instanceof Countable)) {\n") - ->indent() - ->write("\$length = count(\$context['_seq']);\n") - ->write("\$context['loop']['revindex0'] = \$length - 1;\n") - ->write("\$context['loop']['revindex'] = \$length;\n") - ->write("\$context['loop']['length'] = \$length;\n") - ->write("\$context['loop']['last'] = 1 === \$length;\n") - ->outdent() - ->write("}\n") - ; - } - } - - $this->loop->setAttribute('else', null !== $this->getNode('else')); - $this->loop->setAttribute('with_loop', $this->getAttribute('with_loop')); - $this->loop->setAttribute('ifexpr', $this->getAttribute('ifexpr')); - - $compiler - ->write("foreach (\$context['_seq'] as ") - ->subcompile($this->getNode('key_target')) - ->raw(" => ") - ->subcompile($this->getNode('value_target')) - ->raw(") {\n") - ->indent() - ->subcompile($this->getNode('body')) - ->outdent() - ->write("}\n") - ; - - if (null !== $this->getNode('else')) { - $compiler - ->write("if (!\$context['_iterated']) {\n") - ->indent() - ->subcompile($this->getNode('else')) - ->outdent() - ->write("}\n") - ; - } - - $compiler->write("\$_parent = \$context['_parent'];\n"); - - // remove some "private" loop variables (needed for nested loops) - $compiler->write('unset($context[\'_seq\'], $context[\'_iterated\'], $context[\''.$this->getNode('key_target')->getAttribute('name').'\'], $context[\''.$this->getNode('value_target')->getAttribute('name').'\'], $context[\'_parent\'], $context[\'loop\']);'."\n"); - - // keep the values set in the inner context for variables defined in the outer context - $compiler->write("\$context = array_merge(\$_parent, array_intersect_key(\$context, \$_parent));\n"); - } -} diff --git a/core1/lib/Twig/Node/ForLoop.php b/core1/lib/Twig/Node/ForLoop.php deleted file mode 100644 index b8841583..00000000 --- a/core1/lib/Twig/Node/ForLoop.php +++ /dev/null @@ -1,55 +0,0 @@ - - */ -class Twig_Node_ForLoop extends Twig_Node -{ - public function __construct($lineno, $tag = null) - { - parent::__construct(array(), array('with_loop' => false, 'ifexpr' => false, 'else' => false), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - if ($this->getAttribute('else')) { - $compiler->write("\$context['_iterated'] = true;\n"); - } - - if ($this->getAttribute('with_loop')) { - $compiler - ->write("++\$context['loop']['index0'];\n") - ->write("++\$context['loop']['index'];\n") - ->write("\$context['loop']['first'] = false;\n") - ; - - if (!$this->getAttribute('ifexpr')) { - $compiler - ->write("if (isset(\$context['loop']['length'])) {\n") - ->indent() - ->write("--\$context['loop']['revindex0'];\n") - ->write("--\$context['loop']['revindex'];\n") - ->write("\$context['loop']['last'] = 0 === \$context['loop']['revindex0'];\n") - ->outdent() - ->write("}\n") - ; - } - } - } -} diff --git a/core1/lib/Twig/Node/If.php b/core1/lib/Twig/Node/If.php deleted file mode 100644 index 4296a8d6..00000000 --- a/core1/lib/Twig/Node/If.php +++ /dev/null @@ -1,66 +0,0 @@ - - */ -class Twig_Node_If extends Twig_Node -{ - public function __construct(Twig_NodeInterface $tests, Twig_NodeInterface $else = null, $lineno, $tag = null) - { - parent::__construct(array('tests' => $tests, 'else' => $else), array(), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler->addDebugInfo($this); - for ($i = 0; $i < count($this->getNode('tests')); $i += 2) { - if ($i > 0) { - $compiler - ->outdent() - ->write("} elseif (") - ; - } else { - $compiler - ->write('if (') - ; - } - - $compiler - ->subcompile($this->getNode('tests')->getNode($i)) - ->raw(") {\n") - ->indent() - ->subcompile($this->getNode('tests')->getNode($i + 1)) - ; - } - - if ($this->hasNode('else') && null !== $this->getNode('else')) { - $compiler - ->outdent() - ->write("} else {\n") - ->indent() - ->subcompile($this->getNode('else')) - ; - } - - $compiler - ->outdent() - ->write("}\n"); - } -} diff --git a/core1/lib/Twig/Node/Import.php b/core1/lib/Twig/Node/Import.php deleted file mode 100644 index 99efc091..00000000 --- a/core1/lib/Twig/Node/Import.php +++ /dev/null @@ -1,50 +0,0 @@ - - */ -class Twig_Node_Import extends Twig_Node -{ - public function __construct(Twig_Node_Expression $expr, Twig_Node_Expression $var, $lineno, $tag = null) - { - parent::__construct(array('expr' => $expr, 'var' => $var), array(), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->addDebugInfo($this) - ->write('') - ->subcompile($this->getNode('var')) - ->raw(' = ') - ; - - if ($this->getNode('expr') instanceof Twig_Node_Expression_Name && '_self' === $this->getNode('expr')->getAttribute('name')) { - $compiler->raw("\$this"); - } else { - $compiler - ->raw('$this->env->loadTemplate(') - ->subcompile($this->getNode('expr')) - ->raw(")") - ; - } - - $compiler->raw(";\n"); - } -} diff --git a/core1/lib/Twig/Node/Include.php b/core1/lib/Twig/Node/Include.php deleted file mode 100644 index ed4a3751..00000000 --- a/core1/lib/Twig/Node/Include.php +++ /dev/null @@ -1,99 +0,0 @@ - - */ -class Twig_Node_Include extends Twig_Node implements Twig_NodeOutputInterface -{ - public function __construct(Twig_Node_Expression $expr, Twig_Node_Expression $variables = null, $only = false, $ignoreMissing = false, $lineno, $tag = null) - { - parent::__construct(array('expr' => $expr, 'variables' => $variables), array('only' => (Boolean) $only, 'ignore_missing' => (Boolean) $ignoreMissing), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler->addDebugInfo($this); - - if ($this->getAttribute('ignore_missing')) { - $compiler - ->write("try {\n") - ->indent() - ; - } - - $this->addGetTemplate($compiler); - - $compiler->raw('->display('); - - $this->addTemplateArguments($compiler); - - $compiler->raw(");\n"); - - if ($this->getAttribute('ignore_missing')) { - $compiler - ->outdent() - ->write("} catch (Twig_Error_Loader \$e) {\n") - ->indent() - ->write("// ignore missing template\n") - ->outdent() - ->write("}\n\n") - ; - } - } - - protected function addGetTemplate(Twig_Compiler $compiler) - { - if ($this->getNode('expr') instanceof Twig_Node_Expression_Constant) { - $compiler - ->write("\$this->env->loadTemplate(") - ->subcompile($this->getNode('expr')) - ->raw(")") - ; - } else { - $compiler - ->write("\$template = \$this->env->resolveTemplate(") - ->subcompile($this->getNode('expr')) - ->raw(");\n") - ->write('$template') - ; - } - } - - protected function addTemplateArguments(Twig_Compiler $compiler) - { - if (false === $this->getAttribute('only')) { - if (null === $this->getNode('variables')) { - $compiler->raw('$context'); - } else { - $compiler - ->raw('array_merge($context, ') - ->subcompile($this->getNode('variables')) - ->raw(')') - ; - } - } else { - if (null === $this->getNode('variables')) { - $compiler->raw('array()'); - } else { - $compiler->subcompile($this->getNode('variables')); - } - } - } -} diff --git a/core1/lib/Twig/Node/Macro.php b/core1/lib/Twig/Node/Macro.php deleted file mode 100644 index 89910618..00000000 --- a/core1/lib/Twig/Node/Macro.php +++ /dev/null @@ -1,96 +0,0 @@ - - */ -class Twig_Node_Macro extends Twig_Node -{ - public function __construct($name, Twig_NodeInterface $body, Twig_NodeInterface $arguments, $lineno, $tag = null) - { - parent::__construct(array('body' => $body, 'arguments' => $arguments), array('name' => $name), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->addDebugInfo($this) - ->write(sprintf("public function get%s(", $this->getAttribute('name'))) - ; - - $count = count($this->getNode('arguments')); - $pos = 0; - foreach ($this->getNode('arguments') as $name => $default) { - $compiler - ->raw('$_'.$name.' = ') - ->subcompile($default) - ; - - if (++$pos < $count) { - $compiler->raw(', '); - } - } - - $compiler - ->raw(")\n") - ->write("{\n") - ->indent() - ; - - if (!count($this->getNode('arguments'))) { - $compiler->write("\$context = \$this->env->getGlobals();\n\n"); - } else { - $compiler - ->write("\$context = \$this->env->mergeGlobals(array(\n") - ->indent() - ; - - foreach ($this->getNode('arguments') as $name => $default) { - $compiler - ->write('') - ->string($name) - ->raw(' => $_'.$name) - ->raw(",\n") - ; - } - - $compiler - ->outdent() - ->write("));\n\n") - ; - } - - $compiler - ->write("\$blocks = array();\n\n") - ->write("ob_start();\n") - ->write("try {\n") - ->indent() - ->subcompile($this->getNode('body')) - ->outdent() - ->write("} catch (Exception \$e) {\n") - ->indent() - ->write("ob_end_clean();\n\n") - ->write("throw \$e;\n") - ->outdent() - ->write("}\n\n") - ->write("return ('' === \$tmp = ob_get_clean()) ? '' : new Twig_Markup(\$tmp, \$this->env->getCharset());\n") - ->outdent() - ->write("}\n\n") - ; - } -} diff --git a/core1/lib/Twig/Node/Module.php b/core1/lib/Twig/Node/Module.php deleted file mode 100644 index 585048b8..00000000 --- a/core1/lib/Twig/Node/Module.php +++ /dev/null @@ -1,371 +0,0 @@ - - */ -class Twig_Node_Module extends Twig_Node -{ - public function __construct(Twig_NodeInterface $body, Twig_Node_Expression $parent = null, Twig_NodeInterface $blocks, Twig_NodeInterface $macros, Twig_NodeInterface $traits, $embeddedTemplates, $filename) - { - // embedded templates are set as attributes so that they are only visited once by the visitors - parent::__construct(array('parent' => $parent, 'body' => $body, 'blocks' => $blocks, 'macros' => $macros, 'traits' => $traits), array('filename' => $filename, 'index' => null, 'embedded_templates' => $embeddedTemplates), 1); - } - - public function setIndex($index) - { - $this->setAttribute('index', $index); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $this->compileTemplate($compiler); - - foreach ($this->getAttribute('embedded_templates') as $template) { - $compiler->subcompile($template); - } - } - - protected function compileTemplate(Twig_Compiler $compiler) - { - if (!$this->getAttribute('index')) { - $compiler->write('compileClassHeader($compiler); - - if (count($this->getNode('blocks')) || count($this->getNode('traits')) || null === $this->getNode('parent') || $this->getNode('parent') instanceof Twig_Node_Expression_Constant) { - $this->compileConstructor($compiler); - } - - $this->compileGetParent($compiler); - - $this->compileDisplayHeader($compiler); - - $this->compileDisplayBody($compiler); - - $this->compileDisplayFooter($compiler); - - $compiler->subcompile($this->getNode('blocks')); - - $this->compileMacros($compiler); - - $this->compileGetTemplateName($compiler); - - $this->compileIsTraitable($compiler); - - $this->compileDebugInfo($compiler); - - $this->compileClassFooter($compiler); - } - - protected function compileGetParent(Twig_Compiler $compiler) - { - if (null === $this->getNode('parent')) { - return; - } - - $compiler - ->write("protected function doGetParent(array \$context)\n", "{\n") - ->indent() - ->write("return ") - ; - - if ($this->getNode('parent') instanceof Twig_Node_Expression_Constant) { - $compiler->subcompile($this->getNode('parent')); - } else { - $compiler - ->raw("\$this->env->resolveTemplate(") - ->subcompile($this->getNode('parent')) - ->raw(")") - ; - } - - $compiler - ->raw(";\n") - ->outdent() - ->write("}\n\n") - ; - } - - protected function compileDisplayBody(Twig_Compiler $compiler) - { - $compiler->subcompile($this->getNode('body')); - - if (null !== $this->getNode('parent')) { - if ($this->getNode('parent') instanceof Twig_Node_Expression_Constant) { - $compiler->write("\$this->parent"); - } else { - $compiler->write("\$this->getParent(\$context)"); - } - $compiler->raw("->display(\$context, array_merge(\$this->blocks, \$blocks));\n"); - } - } - - protected function compileClassHeader(Twig_Compiler $compiler) - { - $compiler - ->write("\n\n") - // if the filename contains */, add a blank to avoid a PHP parse error - ->write("/* ".str_replace('*/', '* /', $this->getAttribute('filename'))." */\n") - ->write('class '.$compiler->getEnvironment()->getTemplateClass($this->getAttribute('filename'), $this->getAttribute('index'))) - ->raw(sprintf(" extends %s\n", $compiler->getEnvironment()->getBaseTemplateClass())) - ->write("{\n") - ->indent() - ; - } - - protected function compileConstructor(Twig_Compiler $compiler) - { - $compiler - ->write("public function __construct(Twig_Environment \$env)\n", "{\n") - ->indent() - ->write("parent::__construct(\$env);\n\n") - ; - - // parent - if (null === $this->getNode('parent')) { - $compiler->write("\$this->parent = false;\n\n"); - } elseif ($this->getNode('parent') instanceof Twig_Node_Expression_Constant) { - $compiler - ->write("\$this->parent = \$this->env->loadTemplate(") - ->subcompile($this->getNode('parent')) - ->raw(");\n\n") - ; - } - - $countTraits = count($this->getNode('traits')); - if ($countTraits) { - // traits - foreach ($this->getNode('traits') as $i => $trait) { - $this->compileLoadTemplate($compiler, $trait->getNode('template'), sprintf('$_trait_%s', $i)); - - $compiler - ->addDebugInfo($trait->getNode('template')) - ->write(sprintf("if (!\$_trait_%s->isTraitable()) {\n", $i)) - ->indent() - ->write("throw new Twig_Error_Runtime('Template \"'.") - ->subcompile($trait->getNode('template')) - ->raw(".'\" cannot be used as a trait.');\n") - ->outdent() - ->write("}\n") - ->write(sprintf("\$_trait_%s_blocks = \$_trait_%s->getBlocks();\n\n", $i, $i)) - ; - - foreach ($trait->getNode('targets') as $key => $value) { - $compiler - ->write(sprintf("\$_trait_%s_blocks[", $i)) - ->subcompile($value) - ->raw(sprintf("] = \$_trait_%s_blocks[", $i)) - ->string($key) - ->raw(sprintf("]; unset(\$_trait_%s_blocks[", $i)) - ->string($key) - ->raw("]);\n\n") - ; - } - } - - if ($countTraits > 1) { - $compiler - ->write("\$this->traits = array_merge(\n") - ->indent() - ; - - for ($i = 0; $i < $countTraits; $i++) { - $compiler - ->write(sprintf("\$_trait_%s_blocks".($i == $countTraits - 1 ? '' : ',')."\n", $i)) - ; - } - - $compiler - ->outdent() - ->write(");\n\n") - ; - } else { - $compiler - ->write("\$this->traits = \$_trait_0_blocks;\n\n") - ; - } - - $compiler - ->write("\$this->blocks = array_merge(\n") - ->indent() - ->write("\$this->traits,\n") - ->write("array(\n") - ; - } else { - $compiler - ->write("\$this->blocks = array(\n") - ; - } - - // blocks - $compiler - ->indent() - ; - - foreach ($this->getNode('blocks') as $name => $node) { - $compiler - ->write(sprintf("'%s' => array(\$this, 'block_%s'),\n", $name, $name)) - ; - } - - if ($countTraits) { - $compiler - ->outdent() - ->write(")\n") - ; - } - - $compiler - ->outdent() - ->write(");\n") - ->outdent() - ->write("}\n\n"); - ; - } - - protected function compileDisplayHeader(Twig_Compiler $compiler) - { - $compiler - ->write("protected function doDisplay(array \$context, array \$blocks = array())\n", "{\n") - ->indent() - ; - } - - protected function compileDisplayFooter(Twig_Compiler $compiler) - { - $compiler - ->outdent() - ->write("}\n\n") - ; - } - - protected function compileClassFooter(Twig_Compiler $compiler) - { - $compiler - ->outdent() - ->write("}\n") - ; - } - - protected function compileMacros(Twig_Compiler $compiler) - { - $compiler->subcompile($this->getNode('macros')); - } - - protected function compileGetTemplateName(Twig_Compiler $compiler) - { - $compiler - ->write("public function getTemplateName()\n", "{\n") - ->indent() - ->write('return ') - ->repr($this->getAttribute('filename')) - ->raw(";\n") - ->outdent() - ->write("}\n\n") - ; - } - - protected function compileIsTraitable(Twig_Compiler $compiler) - { - // A template can be used as a trait if: - // * it has no parent - // * it has no macros - // * it has no body - // - // Put another way, a template can be used as a trait if it - // only contains blocks and use statements. - $traitable = null === $this->getNode('parent') && 0 === count($this->getNode('macros')); - if ($traitable) { - if ($this->getNode('body') instanceof Twig_Node_Body) { - $nodes = $this->getNode('body')->getNode(0); - } else { - $nodes = $this->getNode('body'); - } - - if (!count($nodes)) { - $nodes = new Twig_Node(array($nodes)); - } - - foreach ($nodes as $node) { - if (!count($node)) { - continue; - } - - if ($node instanceof Twig_Node_Text && ctype_space($node->getAttribute('data'))) { - continue; - } - - if ($node instanceof Twig_Node_BlockReference) { - continue; - } - - $traitable = false; - break; - } - } - - if ($traitable) { - return; - } - - $compiler - ->write("public function isTraitable()\n", "{\n") - ->indent() - ->write(sprintf("return %s;\n", $traitable ? 'true' : 'false')) - ->outdent() - ->write("}\n\n") - ; - } - - protected function compileDebugInfo(Twig_Compiler $compiler) - { - $compiler - ->write("public function getDebugInfo()\n", "{\n") - ->indent() - ->write(sprintf("return %s;\n", str_replace("\n", '', var_export(array_reverse($compiler->getDebugInfo(), true), true)))) - ->outdent() - ->write("}\n") - ; - } - - protected function compileLoadTemplate(Twig_Compiler $compiler, $node, $var) - { - if ($node instanceof Twig_Node_Expression_Constant) { - $compiler - ->write(sprintf("%s = \$this->env->loadTemplate(", $var)) - ->subcompile($node) - ->raw(");\n") - ; - } else { - $compiler - ->write(sprintf("%s = ", $var)) - ->subcompile($node) - ->raw(";\n") - ->write(sprintf("if (!%s", $var)) - ->raw(" instanceof Twig_Template) {\n") - ->indent() - ->write(sprintf("%s = \$this->env->loadTemplate(%s);\n", $var, $var)) - ->outdent() - ->write("}\n") - ; - } - } -} diff --git a/core1/lib/Twig/Node/Print.php b/core1/lib/Twig/Node/Print.php deleted file mode 100644 index b0c41d1d..00000000 --- a/core1/lib/Twig/Node/Print.php +++ /dev/null @@ -1,39 +0,0 @@ - - */ -class Twig_Node_Print extends Twig_Node implements Twig_NodeOutputInterface -{ - public function __construct(Twig_Node_Expression $expr, $lineno, $tag = null) - { - parent::__construct(array('expr' => $expr), array(), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->addDebugInfo($this) - ->write('echo ') - ->subcompile($this->getNode('expr')) - ->raw(";\n") - ; - } -} diff --git a/core1/lib/Twig/Node/Sandbox.php b/core1/lib/Twig/Node/Sandbox.php deleted file mode 100644 index 8cf3ed44..00000000 --- a/core1/lib/Twig/Node/Sandbox.php +++ /dev/null @@ -1,47 +0,0 @@ - - */ -class Twig_Node_Sandbox extends Twig_Node -{ - public function __construct(Twig_NodeInterface $body, $lineno, $tag = null) - { - parent::__construct(array('body' => $body), array(), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->addDebugInfo($this) - ->write("\$sandbox = \$this->env->getExtension('sandbox');\n") - ->write("if (!\$alreadySandboxed = \$sandbox->isSandboxed()) {\n") - ->indent() - ->write("\$sandbox->enableSandbox();\n") - ->outdent() - ->write("}\n") - ->subcompile($this->getNode('body')) - ->write("if (!\$alreadySandboxed) {\n") - ->indent() - ->write("\$sandbox->disableSandbox();\n") - ->outdent() - ->write("}\n") - ; - } -} diff --git a/core1/lib/Twig/Node/SandboxedModule.php b/core1/lib/Twig/Node/SandboxedModule.php deleted file mode 100644 index be1f5daa..00000000 --- a/core1/lib/Twig/Node/SandboxedModule.php +++ /dev/null @@ -1,60 +0,0 @@ - - */ -class Twig_Node_SandboxedModule extends Twig_Node_Module -{ - protected $usedFilters; - protected $usedTags; - protected $usedFunctions; - - public function __construct(Twig_Node_Module $node, array $usedFilters, array $usedTags, array $usedFunctions) - { - parent::__construct($node->getNode('body'), $node->getNode('parent'), $node->getNode('blocks'), $node->getNode('macros'), $node->getNode('traits'), $node->getAttribute('embedded_templates'), $node->getAttribute('filename'), $node->getLine(), $node->getNodeTag()); - - $this->setAttribute('index', $node->getAttribute('index')); - - $this->usedFilters = $usedFilters; - $this->usedTags = $usedTags; - $this->usedFunctions = $usedFunctions; - } - - protected function compileDisplayBody(Twig_Compiler $compiler) - { - $compiler->write("\$this->checkSecurity();\n"); - - parent::compileDisplayBody($compiler); - } - - protected function compileDisplayFooter(Twig_Compiler $compiler) - { - parent::compileDisplayFooter($compiler); - - $compiler - ->write("protected function checkSecurity()\n", "{\n") - ->indent() - ->write("\$this->env->getExtension('sandbox')->checkSecurity(\n") - ->indent() - ->write(!$this->usedTags ? "array(),\n" : "array('".implode('\', \'', $this->usedTags)."'),\n") - ->write(!$this->usedFilters ? "array(),\n" : "array('".implode('\', \'', $this->usedFilters)."'),\n") - ->write(!$this->usedFunctions ? "array()\n" : "array('".implode('\', \'', $this->usedFunctions)."')\n") - ->outdent() - ->write(");\n") - ->outdent() - ->write("}\n\n") - ; - } -} diff --git a/core1/lib/Twig/Node/SandboxedPrint.php b/core1/lib/Twig/Node/SandboxedPrint.php deleted file mode 100644 index 73dfaa96..00000000 --- a/core1/lib/Twig/Node/SandboxedPrint.php +++ /dev/null @@ -1,59 +0,0 @@ - - */ -class Twig_Node_SandboxedPrint extends Twig_Node_Print -{ - public function __construct(Twig_Node_Expression $expr, $lineno, $tag = null) - { - parent::__construct($expr, $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->addDebugInfo($this) - ->write('echo $this->env->getExtension(\'sandbox\')->ensureToStringAllowed(') - ->subcompile($this->getNode('expr')) - ->raw(");\n") - ; - } - - /** - * Removes node filters. - * - * This is mostly needed when another visitor adds filters (like the escaper one). - * - * @param Twig_Node $node A Node - */ - protected function removeNodeFilter($node) - { - if ($node instanceof Twig_Node_Expression_Filter) { - return $this->removeNodeFilter($node->getNode('node')); - } - - return $node; - } -} diff --git a/core1/lib/Twig/Node/Set.php b/core1/lib/Twig/Node/Set.php deleted file mode 100644 index 4c9c16ce..00000000 --- a/core1/lib/Twig/Node/Set.php +++ /dev/null @@ -1,101 +0,0 @@ - - */ -class Twig_Node_Set extends Twig_Node -{ - public function __construct($capture, Twig_NodeInterface $names, Twig_NodeInterface $values, $lineno, $tag = null) - { - parent::__construct(array('names' => $names, 'values' => $values), array('capture' => $capture, 'safe' => false), $lineno, $tag); - - /* - * Optimizes the node when capture is used for a large block of text. - * - * {% set foo %}foo{% endset %} is compiled to $context['foo'] = new Twig_Markup("foo"); - */ - if ($this->getAttribute('capture')) { - $this->setAttribute('safe', true); - - $values = $this->getNode('values'); - if ($values instanceof Twig_Node_Text) { - $this->setNode('values', new Twig_Node_Expression_Constant($values->getAttribute('data'), $values->getLine())); - $this->setAttribute('capture', false); - } - } - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler->addDebugInfo($this); - - if (count($this->getNode('names')) > 1) { - $compiler->write('list('); - foreach ($this->getNode('names') as $idx => $node) { - if ($idx) { - $compiler->raw(', '); - } - - $compiler->subcompile($node); - } - $compiler->raw(')'); - } else { - if ($this->getAttribute('capture')) { - $compiler - ->write("ob_start();\n") - ->subcompile($this->getNode('values')) - ; - } - - $compiler->subcompile($this->getNode('names'), false); - - if ($this->getAttribute('capture')) { - $compiler->raw(" = ('' === \$tmp = ob_get_clean()) ? '' : new Twig_Markup(\$tmp, \$this->env->getCharset())"); - } - } - - if (!$this->getAttribute('capture')) { - $compiler->raw(' = '); - - if (count($this->getNode('names')) > 1) { - $compiler->write('array('); - foreach ($this->getNode('values') as $idx => $value) { - if ($idx) { - $compiler->raw(', '); - } - - $compiler->subcompile($value); - } - $compiler->raw(')'); - } else { - if ($this->getAttribute('safe')) { - $compiler - ->raw("('' === \$tmp = ") - ->subcompile($this->getNode('values')) - ->raw(") ? '' : new Twig_Markup(\$tmp, \$this->env->getCharset())") - ; - } else { - $compiler->subcompile($this->getNode('values')); - } - } - } - - $compiler->raw(";\n"); - } -} diff --git a/core1/lib/Twig/Node/SetTemp.php b/core1/lib/Twig/Node/SetTemp.php deleted file mode 100644 index 3bdd1cb7..00000000 --- a/core1/lib/Twig/Node/SetTemp.php +++ /dev/null @@ -1,35 +0,0 @@ - $name), $lineno); - } - - public function compile(Twig_Compiler $compiler) - { - $name = $this->getAttribute('name'); - $compiler - ->addDebugInfo($this) - ->write('if (isset($context[') - ->string($name) - ->raw('])) { $_') - ->raw($name) - ->raw('_ = $context[') - ->repr($name) - ->raw(']; } else { $_') - ->raw($name) - ->raw("_ = null; }\n") - ; - } -} diff --git a/core1/lib/Twig/Node/Spaceless.php b/core1/lib/Twig/Node/Spaceless.php deleted file mode 100644 index 7555fa0f..00000000 --- a/core1/lib/Twig/Node/Spaceless.php +++ /dev/null @@ -1,40 +0,0 @@ - - */ -class Twig_Node_Spaceless extends Twig_Node -{ - public function __construct(Twig_NodeInterface $body, $lineno, $tag = 'spaceless') - { - parent::__construct(array('body' => $body), array(), $lineno, $tag); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->addDebugInfo($this) - ->write("ob_start();\n") - ->subcompile($this->getNode('body')) - ->write("echo trim(preg_replace('/>\s+<', ob_get_clean()));\n") - ; - } -} diff --git a/core1/lib/Twig/Node/Text.php b/core1/lib/Twig/Node/Text.php deleted file mode 100644 index 21bdcea1..00000000 --- a/core1/lib/Twig/Node/Text.php +++ /dev/null @@ -1,39 +0,0 @@ - - */ -class Twig_Node_Text extends Twig_Node implements Twig_NodeOutputInterface -{ - public function __construct($data, $lineno) - { - parent::__construct(array(), array('data' => $data), $lineno); - } - - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler) - { - $compiler - ->addDebugInfo($this) - ->write('echo ') - ->string($this->getAttribute('data')) - ->raw(";\n") - ; - } -} diff --git a/core1/lib/Twig/NodeInterface.php b/core1/lib/Twig/NodeInterface.php deleted file mode 100644 index f0ef7258..00000000 --- a/core1/lib/Twig/NodeInterface.php +++ /dev/null @@ -1,30 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -interface Twig_NodeInterface extends Countable, IteratorAggregate -{ - /** - * Compiles the node to PHP. - * - * @param Twig_Compiler A Twig_Compiler instance - */ - public function compile(Twig_Compiler $compiler); - - public function getLine(); - - public function getNodeTag(); -} diff --git a/core1/lib/Twig/NodeOutputInterface.php b/core1/lib/Twig/NodeOutputInterface.php deleted file mode 100644 index 22172c09..00000000 --- a/core1/lib/Twig/NodeOutputInterface.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ -interface Twig_NodeOutputInterface -{ -} diff --git a/core1/lib/Twig/NodeTraverser.php b/core1/lib/Twig/NodeTraverser.php deleted file mode 100644 index 28cba1ad..00000000 --- a/core1/lib/Twig/NodeTraverser.php +++ /dev/null @@ -1,88 +0,0 @@ - - */ -class Twig_NodeTraverser -{ - protected $env; - protected $visitors; - - /** - * Constructor. - * - * @param Twig_Environment $env A Twig_Environment instance - * @param array $visitors An array of Twig_NodeVisitorInterface instances - */ - public function __construct(Twig_Environment $env, array $visitors = array()) - { - $this->env = $env; - $this->visitors = array(); - foreach ($visitors as $visitor) { - $this->addVisitor($visitor); - } - } - - /** - * Adds a visitor. - * - * @param Twig_NodeVisitorInterface $visitor A Twig_NodeVisitorInterface instance - */ - public function addVisitor(Twig_NodeVisitorInterface $visitor) - { - if (!isset($this->visitors[$visitor->getPriority()])) { - $this->visitors[$visitor->getPriority()] = array(); - } - - $this->visitors[$visitor->getPriority()][] = $visitor; - } - - /** - * Traverses a node and calls the registered visitors. - * - * @param Twig_NodeInterface $node A Twig_NodeInterface instance - */ - public function traverse(Twig_NodeInterface $node) - { - ksort($this->visitors); - foreach ($this->visitors as $visitors) { - foreach ($visitors as $visitor) { - $node = $this->traverseForVisitor($visitor, $node); - } - } - - return $node; - } - - protected function traverseForVisitor(Twig_NodeVisitorInterface $visitor, Twig_NodeInterface $node = null) - { - if (null === $node) { - return null; - } - - $node = $visitor->enterNode($node, $this->env); - - foreach ($node as $k => $n) { - if (false !== $n = $this->traverseForVisitor($visitor, $n)) { - $node->setNode($k, $n); - } else { - $node->removeNode($k); - } - } - - return $visitor->leaveNode($node, $this->env); - } -} diff --git a/core1/lib/Twig/NodeVisitor/Escaper.php b/core1/lib/Twig/NodeVisitor/Escaper.php deleted file mode 100644 index cc4b3d71..00000000 --- a/core1/lib/Twig/NodeVisitor/Escaper.php +++ /dev/null @@ -1,167 +0,0 @@ - - */ -class Twig_NodeVisitor_Escaper implements Twig_NodeVisitorInterface -{ - protected $statusStack = array(); - protected $blocks = array(); - protected $safeAnalysis; - protected $traverser; - protected $defaultStrategy = false; - protected $safeVars = array(); - - public function __construct() - { - $this->safeAnalysis = new Twig_NodeVisitor_SafeAnalysis(); - } - - /** - * Called before child nodes are visited. - * - * @param Twig_NodeInterface $node The node to visit - * @param Twig_Environment $env The Twig environment instance - * - * @return Twig_NodeInterface The modified node - */ - public function enterNode(Twig_NodeInterface $node, Twig_Environment $env) - { - if ($node instanceof Twig_Node_Module) { - if ($env->hasExtension('escaper') && $defaultStrategy = $env->getExtension('escaper')->getDefaultStrategy($node->getAttribute('filename'))) { - $this->defaultStrategy = $defaultStrategy; - } - $this->safeVars = array(); - } elseif ($node instanceof Twig_Node_AutoEscape) { - $this->statusStack[] = $node->getAttribute('value'); - } elseif ($node instanceof Twig_Node_Block) { - $this->statusStack[] = isset($this->blocks[$node->getAttribute('name')]) ? $this->blocks[$node->getAttribute('name')] : $this->needEscaping($env); - } elseif ($node instanceof Twig_Node_Import) { - $this->safeVars[] = $node->getNode('var')->getAttribute('name'); - } - - return $node; - } - - /** - * Called after child nodes are visited. - * - * @param Twig_NodeInterface $node The node to visit - * @param Twig_Environment $env The Twig environment instance - * - * @return Twig_NodeInterface The modified node - */ - public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env) - { - if ($node instanceof Twig_Node_Module) { - $this->defaultStrategy = false; - $this->safeVars = array(); - } elseif ($node instanceof Twig_Node_Expression_Filter) { - return $this->preEscapeFilterNode($node, $env); - } elseif ($node instanceof Twig_Node_Print) { - return $this->escapePrintNode($node, $env, $this->needEscaping($env)); - } - - if ($node instanceof Twig_Node_AutoEscape || $node instanceof Twig_Node_Block) { - array_pop($this->statusStack); - } elseif ($node instanceof Twig_Node_BlockReference) { - $this->blocks[$node->getAttribute('name')] = $this->needEscaping($env); - } - - return $node; - } - - protected function escapePrintNode(Twig_Node_Print $node, Twig_Environment $env, $type) - { - if (false === $type) { - return $node; - } - - $expression = $node->getNode('expr'); - - if ($this->isSafeFor($type, $expression, $env)) { - return $node; - } - - $class = get_class($node); - - return new $class( - $this->getEscaperFilter($type, $expression), - $node->getLine() - ); - } - - protected function preEscapeFilterNode(Twig_Node_Expression_Filter $filter, Twig_Environment $env) - { - $name = $filter->getNode('filter')->getAttribute('value'); - - $type = $env->getFilter($name)->getPreEscape(); - if (null === $type) { - return $filter; - } - - $node = $filter->getNode('node'); - if ($this->isSafeFor($type, $node, $env)) { - return $filter; - } - - $filter->setNode('node', $this->getEscaperFilter($type, $node)); - - return $filter; - } - - protected function isSafeFor($type, Twig_NodeInterface $expression, $env) - { - $safe = $this->safeAnalysis->getSafe($expression); - - if (null === $safe) { - if (null === $this->traverser) { - $this->traverser = new Twig_NodeTraverser($env, array($this->safeAnalysis)); - } - - $this->safeAnalysis->setSafeVars($this->safeVars); - - $this->traverser->traverse($expression); - $safe = $this->safeAnalysis->getSafe($expression); - } - - return in_array($type, $safe) || in_array('all', $safe); - } - - protected function needEscaping(Twig_Environment $env) - { - if (count($this->statusStack)) { - return $this->statusStack[count($this->statusStack) - 1]; - } - - return $this->defaultStrategy ? $this->defaultStrategy : false; - } - - protected function getEscaperFilter($type, Twig_NodeInterface $node) - { - $line = $node->getLine(); - $name = new Twig_Node_Expression_Constant('escape', $line); - $args = new Twig_Node(array(new Twig_Node_Expression_Constant((string) $type, $line), new Twig_Node_Expression_Constant(null, $line), new Twig_Node_Expression_Constant(true, $line))); - - return new Twig_Node_Expression_Filter($node, $name, $args, $line); - } - - /** - * {@inheritdoc} - */ - public function getPriority() - { - return 0; - } -} diff --git a/core1/lib/Twig/NodeVisitor/Optimizer.php b/core1/lib/Twig/NodeVisitor/Optimizer.php deleted file mode 100644 index a254def7..00000000 --- a/core1/lib/Twig/NodeVisitor/Optimizer.php +++ /dev/null @@ -1,246 +0,0 @@ - - */ -class Twig_NodeVisitor_Optimizer implements Twig_NodeVisitorInterface -{ - const OPTIMIZE_ALL = -1; - const OPTIMIZE_NONE = 0; - const OPTIMIZE_FOR = 2; - const OPTIMIZE_RAW_FILTER = 4; - const OPTIMIZE_VAR_ACCESS = 8; - - protected $loops = array(); - protected $optimizers; - protected $prependedNodes = array(); - protected $inABody = false; - - /** - * Constructor. - * - * @param integer $optimizers The optimizer mode - */ - public function __construct($optimizers = -1) - { - if (!is_int($optimizers) || $optimizers > 2) { - throw new InvalidArgumentException(sprintf('Optimizer mode "%s" is not valid.', $optimizers)); - } - - $this->optimizers = $optimizers; - } - - /** - * {@inheritdoc} - */ - public function enterNode(Twig_NodeInterface $node, Twig_Environment $env) - { - if (self::OPTIMIZE_FOR === (self::OPTIMIZE_FOR & $this->optimizers)) { - $this->enterOptimizeFor($node, $env); - } - - if (!version_compare(phpversion(), '5.4.0RC1', '>=') && self::OPTIMIZE_VAR_ACCESS === (self::OPTIMIZE_VAR_ACCESS & $this->optimizers) && !$env->isStrictVariables() && !$env->hasExtension('sandbox')) { - if ($this->inABody) { - if (!$node instanceof Twig_Node_Expression) { - if (get_class($node) !== 'Twig_Node') { - array_unshift($this->prependedNodes, array()); - } - } else { - $node = $this->optimizeVariables($node, $env); - } - } elseif ($node instanceof Twig_Node_Body) { - $this->inABody = true; - } - } - - return $node; - } - - /** - * {@inheritdoc} - */ - public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env) - { - $expression = $node instanceof Twig_Node_Expression; - - if (self::OPTIMIZE_FOR === (self::OPTIMIZE_FOR & $this->optimizers)) { - $this->leaveOptimizeFor($node, $env); - } - - if (self::OPTIMIZE_RAW_FILTER === (self::OPTIMIZE_RAW_FILTER & $this->optimizers)) { - $node = $this->optimizeRawFilter($node, $env); - } - - $node = $this->optimizePrintNode($node, $env); - - if (self::OPTIMIZE_VAR_ACCESS === (self::OPTIMIZE_VAR_ACCESS & $this->optimizers) && !$env->isStrictVariables() && !$env->hasExtension('sandbox')) { - if ($node instanceof Twig_Node_Body) { - $this->inABody = false; - } elseif ($this->inABody) { - if (!$expression && get_class($node) !== 'Twig_Node' && $prependedNodes = array_shift($this->prependedNodes)) { - $nodes = array(); - foreach (array_unique($prependedNodes) as $name) { - $nodes[] = new Twig_Node_SetTemp($name, $node->getLine()); - } - - $nodes[] = $node; - $node = new Twig_Node($nodes); - } - } - } - - return $node; - } - - protected function optimizeVariables($node, $env) - { - if ('Twig_Node_Expression_Name' === get_class($node) && $node->isSimple()) { - $this->prependedNodes[0][] = $node->getAttribute('name'); - - return new Twig_Node_Expression_TempName($node->getAttribute('name'), $node->getLine()); - } - - return $node; - } - - /** - * Optimizes print nodes. - * - * It replaces: - * - * * "echo $this->render(Parent)Block()" with "$this->display(Parent)Block()" - * - * @param Twig_NodeInterface $node A Node - * @param Twig_Environment $env The current Twig environment - */ - protected function optimizePrintNode($node, $env) - { - if (!$node instanceof Twig_Node_Print) { - return $node; - } - - if ( - $node->getNode('expr') instanceof Twig_Node_Expression_BlockReference || - $node->getNode('expr') instanceof Twig_Node_Expression_Parent - ) { - $node->getNode('expr')->setAttribute('output', true); - - return $node->getNode('expr'); - } - - return $node; - } - - /** - * Removes "raw" filters. - * - * @param Twig_NodeInterface $node A Node - * @param Twig_Environment $env The current Twig environment - */ - protected function optimizeRawFilter($node, $env) - { - if ($node instanceof Twig_Node_Expression_Filter && 'raw' == $node->getNode('filter')->getAttribute('value')) { - return $node->getNode('node'); - } - - return $node; - } - - /** - * Optimizes "for" tag by removing the "loop" variable creation whenever possible. - * - * @param Twig_NodeInterface $node A Node - * @param Twig_Environment $env The current Twig environment - */ - protected function enterOptimizeFor($node, $env) - { - if ($node instanceof Twig_Node_For) { - // disable the loop variable by default - $node->setAttribute('with_loop', false); - array_unshift($this->loops, $node); - } elseif (!$this->loops) { - // we are outside a loop - return; - } - - // when do we need to add the loop variable back? - - // the loop variable is referenced for the current loop - elseif ($node instanceof Twig_Node_Expression_Name && 'loop' === $node->getAttribute('name')) { - $this->addLoopToCurrent(); - } - - // block reference - elseif ($node instanceof Twig_Node_BlockReference || $node instanceof Twig_Node_Expression_BlockReference) { - $this->addLoopToCurrent(); - } - - // include without the only attribute - elseif ($node instanceof Twig_Node_Include && !$node->getAttribute('only')) { - $this->addLoopToAll(); - } - - // the loop variable is referenced via an attribute - elseif ($node instanceof Twig_Node_Expression_GetAttr - && (!$node->getNode('attribute') instanceof Twig_Node_Expression_Constant - || 'parent' === $node->getNode('attribute')->getAttribute('value') - ) - && (true === $this->loops[0]->getAttribute('with_loop') - || ($node->getNode('node') instanceof Twig_Node_Expression_Name - && 'loop' === $node->getNode('node')->getAttribute('name') - ) - ) - ) { - $this->addLoopToAll(); - } - } - - /** - * Optimizes "for" tag by removing the "loop" variable creation whenever possible. - * - * @param Twig_NodeInterface $node A Node - * @param Twig_Environment $env The current Twig environment - */ - protected function leaveOptimizeFor($node, $env) - { - if ($node instanceof Twig_Node_For) { - array_shift($this->loops); - } - } - - protected function addLoopToCurrent() - { - $this->loops[0]->setAttribute('with_loop', true); - } - - protected function addLoopToAll() - { - foreach ($this->loops as $loop) { - $loop->setAttribute('with_loop', true); - } - } - - /** - * {@inheritdoc} - */ - public function getPriority() - { - return 255; - } -} diff --git a/core1/lib/Twig/NodeVisitor/SafeAnalysis.php b/core1/lib/Twig/NodeVisitor/SafeAnalysis.php deleted file mode 100644 index 7dc65c0e..00000000 --- a/core1/lib/Twig/NodeVisitor/SafeAnalysis.php +++ /dev/null @@ -1,133 +0,0 @@ -safeVars = $safeVars; - } - - public function getSafe(Twig_NodeInterface $node) - { - $hash = spl_object_hash($node); - if (isset($this->data[$hash])) { - foreach ($this->data[$hash] as $bucket) { - if ($bucket['key'] === $node) { - return $bucket['value']; - } - } - } - - return null; - } - - protected function setSafe(Twig_NodeInterface $node, array $safe) - { - $hash = spl_object_hash($node); - if (isset($this->data[$hash])) { - foreach ($this->data[$hash] as &$bucket) { - if ($bucket['key'] === $node) { - $bucket['value'] = $safe; - - return; - } - } - } - $this->data[$hash][] = array( - 'key' => $node, - 'value' => $safe, - ); - } - - public function enterNode(Twig_NodeInterface $node, Twig_Environment $env) - { - return $node; - } - - public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env) - { - if ($node instanceof Twig_Node_Expression_Constant) { - // constants are marked safe for all - $this->setSafe($node, array('all')); - } elseif ($node instanceof Twig_Node_Expression_BlockReference) { - // blocks are safe by definition - $this->setSafe($node, array('all')); - } elseif ($node instanceof Twig_Node_Expression_Parent) { - // parent block is safe by definition - $this->setSafe($node, array('all')); - } elseif ($node instanceof Twig_Node_Expression_Conditional) { - // intersect safeness of both operands - $safe = $this->intersectSafe($this->getSafe($node->getNode('expr2')), $this->getSafe($node->getNode('expr3'))); - $this->setSafe($node, $safe); - } elseif ($node instanceof Twig_Node_Expression_Filter) { - // filter expression is safe when the filter is safe - $name = $node->getNode('filter')->getAttribute('value'); - $args = $node->getNode('arguments'); - if (false !== $filter = $env->getFilter($name)) { - $safe = $filter->getSafe($args); - if (null === $safe) { - $safe = $this->intersectSafe($this->getSafe($node->getNode('node')), $filter->getPreservesSafety()); - } - $this->setSafe($node, $safe); - } else { - $this->setSafe($node, array()); - } - } elseif ($node instanceof Twig_Node_Expression_Function) { - // function expression is safe when the function is safe - $name = $node->getAttribute('name'); - $args = $node->getNode('arguments'); - $function = $env->getFunction($name); - if (false !== $function) { - $this->setSafe($node, $function->getSafe($args)); - } else { - $this->setSafe($node, array()); - } - } elseif ($node instanceof Twig_Node_Expression_MethodCall) { - if ($node->getAttribute('safe')) { - $this->setSafe($node, array('all')); - } else { - $this->setSafe($node, array()); - } - } elseif ($node instanceof Twig_Node_Expression_GetAttr && $node->getNode('node') instanceof Twig_Node_Expression_Name) { - $name = $node->getNode('node')->getAttribute('name'); - // attributes on template instances are safe - if ('_self' == $name || in_array($name, $this->safeVars)) { - $this->setSafe($node, array('all')); - } else { - $this->setSafe($node, array()); - } - } else { - $this->setSafe($node, array()); - } - - return $node; - } - - protected function intersectSafe(array $a = null, array $b = null) - { - if (null === $a || null === $b) { - return array(); - } - - if (in_array('all', $a)) { - return $b; - } - - if (in_array('all', $b)) { - return $a; - } - - return array_intersect($a, $b); - } - - /** - * {@inheritdoc} - */ - public function getPriority() - { - return 0; - } -} diff --git a/core1/lib/Twig/NodeVisitor/Sandbox.php b/core1/lib/Twig/NodeVisitor/Sandbox.php deleted file mode 100644 index fb27045b..00000000 --- a/core1/lib/Twig/NodeVisitor/Sandbox.php +++ /dev/null @@ -1,92 +0,0 @@ - - */ -class Twig_NodeVisitor_Sandbox implements Twig_NodeVisitorInterface -{ - protected $inAModule = false; - protected $tags; - protected $filters; - protected $functions; - - /** - * Called before child nodes are visited. - * - * @param Twig_NodeInterface $node The node to visit - * @param Twig_Environment $env The Twig environment instance - * - * @return Twig_NodeInterface The modified node - */ - public function enterNode(Twig_NodeInterface $node, Twig_Environment $env) - { - if ($node instanceof Twig_Node_Module) { - $this->inAModule = true; - $this->tags = array(); - $this->filters = array(); - $this->functions = array(); - - return $node; - } elseif ($this->inAModule) { - // look for tags - if ($node->getNodeTag()) { - $this->tags[] = $node->getNodeTag(); - } - - // look for filters - if ($node instanceof Twig_Node_Expression_Filter) { - $this->filters[] = $node->getNode('filter')->getAttribute('value'); - } - - // look for functions - if ($node instanceof Twig_Node_Expression_Function) { - $this->functions[] = $node->getAttribute('name'); - } - - // wrap print to check __toString() calls - if ($node instanceof Twig_Node_Print) { - return new Twig_Node_SandboxedPrint($node->getNode('expr'), $node->getLine(), $node->getNodeTag()); - } - } - - return $node; - } - - /** - * Called after child nodes are visited. - * - * @param Twig_NodeInterface $node The node to visit - * @param Twig_Environment $env The Twig environment instance - * - * @return Twig_NodeInterface The modified node - */ - public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env) - { - if ($node instanceof Twig_Node_Module) { - $this->inAModule = false; - - return new Twig_Node_SandboxedModule($node, array_unique($this->filters), array_unique($this->tags), array_unique($this->functions)); - } - - return $node; - } - - /** - * {@inheritdoc} - */ - public function getPriority() - { - return 0; - } -} diff --git a/core1/lib/Twig/NodeVisitorInterface.php b/core1/lib/Twig/NodeVisitorInterface.php deleted file mode 100644 index f33c13fc..00000000 --- a/core1/lib/Twig/NodeVisitorInterface.php +++ /dev/null @@ -1,47 +0,0 @@ - - */ -interface Twig_NodeVisitorInterface -{ - /** - * Called before child nodes are visited. - * - * @param Twig_NodeInterface $node The node to visit - * @param Twig_Environment $env The Twig environment instance - * - * @return Twig_NodeInterface The modified node - */ - public function enterNode(Twig_NodeInterface $node, Twig_Environment $env); - - /** - * Called after child nodes are visited. - * - * @param Twig_NodeInterface $node The node to visit - * @param Twig_Environment $env The Twig environment instance - * - * @return Twig_NodeInterface|false The modified node or false if the node must be removed - */ - public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env); - - /** - * Returns the priority for this visitor. - * - * Priority should be between -10 and 10 (0 is the default). - * - * @return integer The priority level - */ - public function getPriority(); -} diff --git a/core1/lib/Twig/Parser.php b/core1/lib/Twig/Parser.php deleted file mode 100644 index 958e46b3..00000000 --- a/core1/lib/Twig/Parser.php +++ /dev/null @@ -1,394 +0,0 @@ - - */ -class Twig_Parser implements Twig_ParserInterface -{ - protected $stack = array(); - protected $stream; - protected $parent; - protected $handlers; - protected $visitors; - protected $expressionParser; - protected $blocks; - protected $blockStack; - protected $macros; - protected $env; - protected $reservedMacroNames; - protected $importedSymbols; - protected $traits; - protected $embeddedTemplates = array(); - - /** - * Constructor. - * - * @param Twig_Environment $env A Twig_Environment instance - */ - public function __construct(Twig_Environment $env) - { - $this->env = $env; - } - - public function getEnvironment() - { - return $this->env; - } - - public function getVarName() - { - return sprintf('__internal_%s', hash('sha1', uniqid(mt_rand(), true), false)); - } - - public function getFilename() - { - return $this->stream->getFilename(); - } - - /** - * Converts a token stream to a node tree. - * - * @param Twig_TokenStream $stream A token stream instance - * - * @return Twig_Node_Module A node tree - */ - public function parse(Twig_TokenStream $stream, $test = null, $dropNeedle = false) - { - // push all variables into the stack to keep the current state of the parser - $vars = get_object_vars($this); - unset($vars['stack'], $vars['env'], $vars['handlers'], $vars['visitors'], $vars['expressionParser']); - $this->stack[] = $vars; - - // tag handlers - if (null === $this->handlers) { - $this->handlers = $this->env->getTokenParsers(); - $this->handlers->setParser($this); - } - - // node visitors - if (null === $this->visitors) { - $this->visitors = $this->env->getNodeVisitors(); - } - - if (null === $this->expressionParser) { - $this->expressionParser = new Twig_ExpressionParser($this, $this->env->getUnaryOperators(), $this->env->getBinaryOperators()); - } - - $this->stream = $stream; - $this->parent = null; - $this->blocks = array(); - $this->macros = array(); - $this->traits = array(); - $this->blockStack = array(); - $this->importedSymbols = array(array()); - $this->embeddedTemplates = array(); - - try { - $body = $this->subparse($test, $dropNeedle); - - if (null !== $this->parent) { - if (null === $body = $this->filterBodyNodes($body)) { - $body = new Twig_Node(); - } - } - } catch (Twig_Error_Syntax $e) { - if (!$e->getTemplateFile()) { - $e->setTemplateFile($this->getFilename()); - } - - if (!$e->getTemplateLine()) { - $e->setTemplateLine($this->stream->getCurrent()->getLine()); - } - - throw $e; - } - - $node = new Twig_Node_Module(new Twig_Node_Body(array($body)), $this->parent, new Twig_Node($this->blocks), new Twig_Node($this->macros), new Twig_Node($this->traits), $this->embeddedTemplates, $this->getFilename()); - - $traverser = new Twig_NodeTraverser($this->env, $this->visitors); - - $node = $traverser->traverse($node); - - // restore previous stack so previous parse() call can resume working - foreach (array_pop($this->stack) as $key => $val) { - $this->$key = $val; - } - - return $node; - } - - public function subparse($test, $dropNeedle = false) - { - $lineno = $this->getCurrentToken()->getLine(); - $rv = array(); - while (!$this->stream->isEOF()) { - switch ($this->getCurrentToken()->getType()) { - case Twig_Token::TEXT_TYPE: - $token = $this->stream->next(); - $rv[] = new Twig_Node_Text($token->getValue(), $token->getLine()); - break; - - case Twig_Token::VAR_START_TYPE: - $token = $this->stream->next(); - $expr = $this->expressionParser->parseExpression(); - $this->stream->expect(Twig_Token::VAR_END_TYPE); - $rv[] = new Twig_Node_Print($expr, $token->getLine()); - break; - - case Twig_Token::BLOCK_START_TYPE: - $this->stream->next(); - $token = $this->getCurrentToken(); - - if ($token->getType() !== Twig_Token::NAME_TYPE) { - throw new Twig_Error_Syntax('A block must start with a tag name', $token->getLine(), $this->getFilename()); - } - - if (null !== $test && call_user_func($test, $token)) { - if ($dropNeedle) { - $this->stream->next(); - } - - if (1 === count($rv)) { - return $rv[0]; - } - - return new Twig_Node($rv, array(), $lineno); - } - - $subparser = $this->handlers->getTokenParser($token->getValue()); - if (null === $subparser) { - if (null !== $test) { - $error = sprintf('Unexpected tag name "%s"', $token->getValue()); - if (is_array($test) && isset($test[0]) && $test[0] instanceof Twig_TokenParserInterface) { - $error .= sprintf(' (expecting closing tag for the "%s" tag defined near line %s)', $test[0]->getTag(), $lineno); - } - - throw new Twig_Error_Syntax($error, $token->getLine(), $this->getFilename()); - } - - $message = sprintf('Unknown tag name "%s"', $token->getValue()); - if ($alternatives = $this->env->computeAlternatives($token->getValue(), array_keys($this->env->getTags()))) { - $message = sprintf('%s. Did you mean "%s"', $message, implode('", "', $alternatives)); - } - - throw new Twig_Error_Syntax($message, $token->getLine(), $this->getFilename()); - } - - $this->stream->next(); - - $node = $subparser->parse($token); - if (null !== $node) { - $rv[] = $node; - } - break; - - default: - throw new Twig_Error_Syntax('Lexer or parser ended up in unsupported state.', 0, $this->getFilename()); - } - } - - if (1 === count($rv)) { - return $rv[0]; - } - - return new Twig_Node($rv, array(), $lineno); - } - - public function addHandler($name, $class) - { - $this->handlers[$name] = $class; - } - - public function addNodeVisitor(Twig_NodeVisitorInterface $visitor) - { - $this->visitors[] = $visitor; - } - - public function getBlockStack() - { - return $this->blockStack; - } - - public function peekBlockStack() - { - return $this->blockStack[count($this->blockStack) - 1]; - } - - public function popBlockStack() - { - array_pop($this->blockStack); - } - - public function pushBlockStack($name) - { - $this->blockStack[] = $name; - } - - public function hasBlock($name) - { - return isset($this->blocks[$name]); - } - - public function getBlock($name) - { - return $this->blocks[$name]; - } - - public function setBlock($name, $value) - { - $this->blocks[$name] = new Twig_Node_Body(array($value), array(), $value->getLine()); - } - - public function hasMacro($name) - { - return isset($this->macros[$name]); - } - - public function setMacro($name, Twig_Node_Macro $node) - { - if (null === $this->reservedMacroNames) { - $this->reservedMacroNames = array(); - $r = new ReflectionClass($this->env->getBaseTemplateClass()); - foreach ($r->getMethods() as $method) { - $this->reservedMacroNames[] = $method->getName(); - } - } - - if (in_array($name, $this->reservedMacroNames)) { - throw new Twig_Error_Syntax(sprintf('"%s" cannot be used as a macro name as it is a reserved keyword', $name), $node->getLine(), $this->getFilename()); - } - - $this->macros[$name] = $node; - } - - public function addTrait($trait) - { - $this->traits[] = $trait; - } - - public function hasTraits() - { - return count($this->traits) > 0; - } - - public function embedTemplate(Twig_Node_Module $template) - { - $template->setIndex(mt_rand()); - - $this->embeddedTemplates[] = $template; - } - - public function addImportedSymbol($type, $alias, $name = null, Twig_Node_Expression $node = null) - { - $this->importedSymbols[0][$type][$alias] = array('name' => $name, 'node' => $node); - } - - public function getImportedSymbol($type, $alias) - { - foreach ($this->importedSymbols as $functions) { - if (isset($functions[$type][$alias])) { - return $functions[$type][$alias]; - } - } - } - - public function isMainScope() - { - return 1 === count($this->importedSymbols); - } - - public function pushLocalScope() - { - array_unshift($this->importedSymbols, array()); - } - - public function popLocalScope() - { - array_shift($this->importedSymbols); - } - - /** - * Gets the expression parser. - * - * @return Twig_ExpressionParser The expression parser - */ - public function getExpressionParser() - { - return $this->expressionParser; - } - - public function getParent() - { - return $this->parent; - } - - public function setParent($parent) - { - $this->parent = $parent; - } - - /** - * Gets the token stream. - * - * @return Twig_TokenStream The token stream - */ - public function getStream() - { - return $this->stream; - } - - /** - * Gets the current token. - * - * @return Twig_Token The current token - */ - public function getCurrentToken() - { - return $this->stream->getCurrent(); - } - - protected function filterBodyNodes(Twig_NodeInterface $node) - { - // check that the body does not contain non-empty output nodes - if ( - ($node instanceof Twig_Node_Text && !ctype_space($node->getAttribute('data'))) - || - (!$node instanceof Twig_Node_Text && !$node instanceof Twig_Node_BlockReference && $node instanceof Twig_NodeOutputInterface) - ) { - if (false !== strpos((string) $node, chr(0xEF).chr(0xBB).chr(0xBF))) { - throw new Twig_Error_Syntax('A template that extends another one cannot have a body but a byte order mark (BOM) has been detected; it must be removed.', $node->getLine(), $this->getFilename()); - } - - throw new Twig_Error_Syntax('A template that extends another one cannot have a body.', $node->getLine(), $this->getFilename()); - } - - // bypass "set" nodes as they "capture" the output - if ($node instanceof Twig_Node_Set) { - return $node; - } - - if ($node instanceof Twig_NodeOutputInterface) { - return; - } - - foreach ($node as $k => $n) { - if (null !== $n && null === $n = $this->filterBodyNodes($n)) { - $node->removeNode($k); - } - } - - return $node; - } -} diff --git a/core1/lib/Twig/ParserInterface.php b/core1/lib/Twig/ParserInterface.php deleted file mode 100644 index f0d79009..00000000 --- a/core1/lib/Twig/ParserInterface.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -interface Twig_ParserInterface -{ - /** - * Converts a token stream to a node tree. - * - * @param Twig_TokenStream $stream A token stream instance - * - * @return Twig_Node_Module A node tree - */ - public function parse(Twig_TokenStream $stream); -} diff --git a/core1/lib/Twig/Sandbox/SecurityError.php b/core1/lib/Twig/Sandbox/SecurityError.php deleted file mode 100644 index 015bfaea..00000000 --- a/core1/lib/Twig/Sandbox/SecurityError.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ -class Twig_Sandbox_SecurityError extends Twig_Error -{ -} diff --git a/core1/lib/Twig/Sandbox/SecurityPolicy.php b/core1/lib/Twig/Sandbox/SecurityPolicy.php deleted file mode 100644 index 66ee2332..00000000 --- a/core1/lib/Twig/Sandbox/SecurityPolicy.php +++ /dev/null @@ -1,119 +0,0 @@ - - */ -class Twig_Sandbox_SecurityPolicy implements Twig_Sandbox_SecurityPolicyInterface -{ - protected $allowedTags; - protected $allowedFilters; - protected $allowedMethods; - protected $allowedProperties; - protected $allowedFunctions; - - public function __construct(array $allowedTags = array(), array $allowedFilters = array(), array $allowedMethods = array(), array $allowedProperties = array(), array $allowedFunctions = array()) - { - $this->allowedTags = $allowedTags; - $this->allowedFilters = $allowedFilters; - $this->setAllowedMethods($allowedMethods); - $this->allowedProperties = $allowedProperties; - $this->allowedFunctions = $allowedFunctions; - } - - public function setAllowedTags(array $tags) - { - $this->allowedTags = $tags; - } - - public function setAllowedFilters(array $filters) - { - $this->allowedFilters = $filters; - } - - public function setAllowedMethods(array $methods) - { - $this->allowedMethods = array(); - foreach ($methods as $class => $m) { - $this->allowedMethods[$class] = array_map('strtolower', is_array($m) ? $m : array($m)); - } - } - - public function setAllowedProperties(array $properties) - { - $this->allowedProperties = $properties; - } - - public function setAllowedFunctions(array $functions) - { - $this->allowedFunctions = $functions; - } - - public function checkSecurity($tags, $filters, $functions) - { - foreach ($tags as $tag) { - if (!in_array($tag, $this->allowedTags)) { - throw new Twig_Sandbox_SecurityError(sprintf('Tag "%s" is not allowed.', $tag)); - } - } - - foreach ($filters as $filter) { - if (!in_array($filter, $this->allowedFilters)) { - throw new Twig_Sandbox_SecurityError(sprintf('Filter "%s" is not allowed.', $filter)); - } - } - - foreach ($functions as $function) { - if (!in_array($function, $this->allowedFunctions)) { - throw new Twig_Sandbox_SecurityError(sprintf('Function "%s" is not allowed.', $function)); - } - } - } - - public function checkMethodAllowed($obj, $method) - { - if ($obj instanceof Twig_TemplateInterface || $obj instanceof Twig_Markup) { - return true; - } - - $allowed = false; - $method = strtolower($method); - foreach ($this->allowedMethods as $class => $methods) { - if ($obj instanceof $class) { - $allowed = in_array($method, $methods); - - break; - } - } - - if (!$allowed) { - throw new Twig_Sandbox_SecurityError(sprintf('Calling "%s" method on a "%s" object is not allowed.', $method, get_class($obj))); - } - } - - public function checkPropertyAllowed($obj, $property) - { - $allowed = false; - foreach ($this->allowedProperties as $class => $properties) { - if ($obj instanceof $class) { - $allowed = in_array($property, is_array($properties) ? $properties : array($properties)); - - break; - } - } - - if (!$allowed) { - throw new Twig_Sandbox_SecurityError(sprintf('Calling "%s" property on a "%s" object is not allowed.', $property, get_class($obj))); - } - } -} diff --git a/core1/lib/Twig/Sandbox/SecurityPolicyInterface.php b/core1/lib/Twig/Sandbox/SecurityPolicyInterface.php deleted file mode 100644 index 6ab48e3c..00000000 --- a/core1/lib/Twig/Sandbox/SecurityPolicyInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -interface Twig_Sandbox_SecurityPolicyInterface -{ - public function checkSecurity($tags, $filters, $functions); - - public function checkMethodAllowed($obj, $method); - - public function checkPropertyAllowed($obj, $method); -} diff --git a/core1/lib/Twig/SimpleFilter.php b/core1/lib/Twig/SimpleFilter.php deleted file mode 100644 index a6bf60f8..00000000 --- a/core1/lib/Twig/SimpleFilter.php +++ /dev/null @@ -1,96 +0,0 @@ - - */ -class Twig_SimpleFilter -{ - protected $name; - protected $callable; - protected $options; - protected $arguments = array(); - - public function __construct($name, $callable, array $options = array()) - { - $this->name = $name; - $this->callable = $callable; - $this->options = array_merge(array( - 'needs_environment' => false, - 'needs_context' => false, - 'is_safe' => null, - 'is_safe_callback' => null, - 'pre_escape' => null, - 'preserves_safety' => null, - 'node_class' => 'Twig_Node_Expression_Filter', - ), $options); - } - - public function getName() - { - return $this->name; - } - - public function getCallable() - { - return $this->callable; - } - - public function getNodeClass() - { - return $this->options['node_class']; - } - - public function setArguments($arguments) - { - $this->arguments = $arguments; - } - - public function getArguments() - { - return $this->arguments; - } - - public function needsEnvironment() - { - return $this->options['needs_environment']; - } - - public function needsContext() - { - return $this->options['needs_context']; - } - - public function getSafe(Twig_Node $filterArgs) - { - if (null !== $this->options['is_safe']) { - return $this->options['is_safe']; - } - - if (null !== $this->options['is_safe_callback']) { - return call_user_func($this->options['is_safe_callback'], $filterArgs); - } - - return null; - } - - public function getPreservesSafety() - { - return $this->options['preserves_safety']; - } - - public function getPreEscape() - { - return $this->options['pre_escape']; - } -} diff --git a/core1/lib/Twig/SimpleFunction.php b/core1/lib/Twig/SimpleFunction.php deleted file mode 100644 index 8ef6aca2..00000000 --- a/core1/lib/Twig/SimpleFunction.php +++ /dev/null @@ -1,84 +0,0 @@ - - */ -class Twig_SimpleFunction -{ - protected $name; - protected $callable; - protected $options; - protected $arguments = array(); - - public function __construct($name, $callable, array $options = array()) - { - $this->name = $name; - $this->callable = $callable; - $this->options = array_merge(array( - 'needs_environment' => false, - 'needs_context' => false, - 'is_safe' => null, - 'is_safe_callback' => null, - 'node_class' => 'Twig_Node_Expression_Function', - ), $options); - } - - public function getName() - { - return $this->name; - } - - public function getCallable() - { - return $this->callable; - } - - public function getNodeClass() - { - return $this->options['node_class']; - } - - public function setArguments($arguments) - { - $this->arguments = $arguments; - } - - public function getArguments() - { - return $this->arguments; - } - - public function needsEnvironment() - { - return $this->options['needs_environment']; - } - - public function needsContext() - { - return $this->options['needs_context']; - } - - public function getSafe(Twig_Node $functionArgs) - { - if (null !== $this->options['is_safe']) { - return $this->options['is_safe']; - } - - if (null !== $this->options['is_safe_callback']) { - return call_user_func($this->options['is_safe_callback'], $functionArgs); - } - - return array(); - } -} diff --git a/core1/lib/Twig/SimpleTest.php b/core1/lib/Twig/SimpleTest.php deleted file mode 100644 index 225459c9..00000000 --- a/core1/lib/Twig/SimpleTest.php +++ /dev/null @@ -1,46 +0,0 @@ - - */ -class Twig_SimpleTest -{ - protected $name; - protected $callable; - protected $options; - - public function __construct($name, $callable, array $options = array()) - { - $this->name = $name; - $this->callable = $callable; - $this->options = array_merge(array( - 'node_class' => 'Twig_Node_Expression_Test', - ), $options); - } - - public function getName() - { - return $this->name; - } - - public function getCallable() - { - return $this->callable; - } - - public function getNodeClass() - { - return $this->options['node_class']; - } -} diff --git a/core1/lib/Twig/Template.php b/core1/lib/Twig/Template.php deleted file mode 100644 index abc3400e..00000000 --- a/core1/lib/Twig/Template.php +++ /dev/null @@ -1,453 +0,0 @@ - - */ -abstract class Twig_Template implements Twig_TemplateInterface -{ - protected static $cache = array(); - - protected $parent; - protected $parents; - protected $env; - protected $blocks; - protected $traits; - - /** - * Constructor. - * - * @param Twig_Environment $env A Twig_Environment instance - */ - public function __construct(Twig_Environment $env) - { - $this->env = $env; - $this->blocks = array(); - $this->traits = array(); - } - - /** - * Returns the template name. - * - * @return string The template name - */ - abstract public function getTemplateName(); - - /** - * {@inheritdoc} - */ - public function getEnvironment() - { - return $this->env; - } - - /** - * Returns the parent template. - * - * This method is for internal use only and should never be called - * directly. - * - * @return Twig_TemplateInterface|false The parent template or false if there is no parent - */ - public function getParent(array $context) - { - if (null !== $this->parent) { - return $this->parent; - } - - $parent = $this->doGetParent($context); - if (false === $parent) { - return false; - } elseif ($parent instanceof Twig_Template) { - $name = $parent->getTemplateName(); - $this->parents[$name] = $parent; - $parent = $name; - } elseif (!isset($this->parents[$parent])) { - $this->parents[$parent] = $this->env->loadTemplate($parent); - } - - return $this->parents[$parent]; - } - - protected function doGetParent(array $context) - { - return false; - } - - public function isTraitable() - { - return true; - } - - /** - * Displays a parent block. - * - * This method is for internal use only and should never be called - * directly. - * - * @param string $name The block name to display from the parent - * @param array $context The context - * @param array $blocks The current set of blocks - */ - public function displayParentBlock($name, array $context, array $blocks = array()) - { - $name = (string) $name; - - if (isset($this->traits[$name])) { - $this->traits[$name][0]->displayBlock($name, $context, $blocks); - } elseif (false !== $parent = $this->getParent($context)) { - $parent->displayBlock($name, $context, $blocks); - } else { - throw new Twig_Error_Runtime(sprintf('The template has no parent and no traits defining the "%s" block', $name), -1, $this->getTemplateName()); - } - } - - /** - * Displays a block. - * - * This method is for internal use only and should never be called - * directly. - * - * @param string $name The block name to display - * @param array $context The context - * @param array $blocks The current set of blocks - */ - public function displayBlock($name, array $context, array $blocks = array()) - { - $name = (string) $name; - - if (isset($blocks[$name])) { - $b = $blocks; - unset($b[$name]); - call_user_func($blocks[$name], $context, $b); - } elseif (isset($this->blocks[$name])) { - call_user_func($this->blocks[$name], $context, $blocks); - } elseif (false !== $parent = $this->getParent($context)) { - $parent->displayBlock($name, $context, array_merge($this->blocks, $blocks)); - } - } - - /** - * Renders a parent block. - * - * This method is for internal use only and should never be called - * directly. - * - * @param string $name The block name to render from the parent - * @param array $context The context - * @param array $blocks The current set of blocks - * - * @return string The rendered block - */ - public function renderParentBlock($name, array $context, array $blocks = array()) - { - ob_start(); - $this->displayParentBlock($name, $context, $blocks); - - return ob_get_clean(); - } - - /** - * Renders a block. - * - * This method is for internal use only and should never be called - * directly. - * - * @param string $name The block name to render - * @param array $context The context - * @param array $blocks The current set of blocks - * - * @return string The rendered block - */ - public function renderBlock($name, array $context, array $blocks = array()) - { - ob_start(); - $this->displayBlock($name, $context, $blocks); - - return ob_get_clean(); - } - - /** - * Returns whether a block exists or not. - * - * This method is for internal use only and should never be called - * directly. - * - * This method does only return blocks defined in the current template - * or defined in "used" traits. - * - * It does not return blocks from parent templates as the parent - * template name can be dynamic, which is only known based on the - * current context. - * - * @param string $name The block name - * - * @return Boolean true if the block exists, false otherwise - */ - public function hasBlock($name) - { - return isset($this->blocks[(string) $name]); - } - - /** - * Returns all block names. - * - * This method is for internal use only and should never be called - * directly. - * - * @return array An array of block names - * - * @see hasBlock - */ - public function getBlockNames() - { - return array_keys($this->blocks); - } - - /** - * Returns all blocks. - * - * This method is for internal use only and should never be called - * directly. - * - * @return array An array of blocks - * - * @see hasBlock - */ - public function getBlocks() - { - return $this->blocks; - } - - /** - * {@inheritdoc} - */ - public function display(array $context, array $blocks = array()) - { - $this->displayWithErrorHandling($this->env->mergeGlobals($context), $blocks); - } - - /** - * {@inheritdoc} - */ - public function render(array $context) - { - $level = ob_get_level(); - ob_start(); - try { - $this->display($context); - } catch (Exception $e) { - while (ob_get_level() > $level) { - ob_end_clean(); - } - - throw $e; - } - - return ob_get_clean(); - } - - protected function displayWithErrorHandling(array $context, array $blocks = array()) - { - try { - $this->doDisplay($context, $blocks); - } catch (Twig_Error $e) { - if (!$e->getTemplateFile()) { - $e->setTemplateFile($this->getTemplateName()); - } - - // this is mostly useful for Twig_Error_Loader exceptions - // see Twig_Error_Loader - if (false === $e->getTemplateLine()) { - $e->setTemplateLine(-1); - $e->guess(); - } - - throw $e; - } catch (Exception $e) { - throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, null, $e); - } - } - - /** - * Auto-generated method to display the template with the given context. - * - * @param array $context An array of parameters to pass to the template - * @param array $blocks An array of blocks to pass to the template - */ - abstract protected function doDisplay(array $context, array $blocks = array()); - - /** - * Returns a variable from the context. - * - * This method is for internal use only and should never be called - * directly. - * - * This method should not be overridden in a sub-class as this is an - * implementation detail that has been introduced to optimize variable - * access for versions of PHP before 5.4. This is not a way to override - * the way to get a variable value. - * - * @param array $context The context - * @param string $item The variable to return from the context - * @param Boolean $ignoreStrictCheck Whether to ignore the strict variable check or not - * - * @return The content of the context variable - * - * @throws Twig_Error_Runtime if the variable does not exist and Twig is running in strict mode - */ - final protected function getContext($context, $item, $ignoreStrictCheck = false) - { - if (!array_key_exists($item, $context)) { - if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { - return null; - } - - throw new Twig_Error_Runtime(sprintf('Variable "%s" does not exist', $item), -1, $this->getTemplateName()); - } - - return $context[$item]; - } - - /** - * Returns the attribute value for a given array/object. - * - * @param mixed $object The object or array from where to get the item - * @param mixed $item The item to get from the array or object - * @param array $arguments An array of arguments to pass if the item is an object method - * @param string $type The type of attribute (@see Twig_TemplateInterface) - * @param Boolean $isDefinedTest Whether this is only a defined check - * @param Boolean $ignoreStrictCheck Whether to ignore the strict attribute check or not - * - * @return mixed The attribute value, or a Boolean when $isDefinedTest is true, or null when the attribute is not set and $ignoreStrictCheck is true - * - * @throws Twig_Error_Runtime if the attribute does not exist and Twig is running in strict mode and $isDefinedTest is false - */ - protected function getAttribute($object, $item, array $arguments = array(), $type = Twig_TemplateInterface::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false) - { - $item = ctype_digit((string) $item) ? (int) $item : (string) $item; - - // array - if (Twig_TemplateInterface::METHOD_CALL !== $type) { - if ((is_array($object) && array_key_exists($item, $object)) - || ($object instanceof ArrayAccess && isset($object[$item])) - ) { - if ($isDefinedTest) { - return true; - } - - return $object[$item]; - } - - if (Twig_TemplateInterface::ARRAY_CALL === $type) { - if ($isDefinedTest) { - return false; - } - - if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { - return null; - } - - if (is_object($object)) { - throw new Twig_Error_Runtime(sprintf('Key "%s" in object (with ArrayAccess) of type "%s" does not exist', $item, get_class($object)), -1, $this->getTemplateName()); - } elseif (is_array($object)) { - throw new Twig_Error_Runtime(sprintf('Key "%s" for array with keys "%s" does not exist', $item, implode(', ', array_keys($object))), -1, $this->getTemplateName()); - } else { - throw new Twig_Error_Runtime(sprintf('Impossible to access a key ("%s") on a "%s" variable', $item, gettype($object)), -1, $this->getTemplateName()); - } - } - } - - if (!is_object($object)) { - if ($isDefinedTest) { - return false; - } - - if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { - return null; - } - - throw new Twig_Error_Runtime(sprintf('Item "%s" for "%s" does not exist', $item, is_array($object) ? 'Array' : $object), -1, $this->getTemplateName()); - } - - $class = get_class($object); - - // object property - if (Twig_TemplateInterface::METHOD_CALL !== $type) { - if (isset($object->$item) || array_key_exists($item, $object)) { - if ($isDefinedTest) { - return true; - } - - if ($this->env->hasExtension('sandbox')) { - $this->env->getExtension('sandbox')->checkPropertyAllowed($object, $item); - } - - return $object->$item; - } - } - - // object method - if (!isset(self::$cache[$class]['methods'])) { - self::$cache[$class]['methods'] = array_change_key_case(array_flip(get_class_methods($object))); - } - - $lcItem = strtolower($item); - if (isset(self::$cache[$class]['methods'][$lcItem])) { - $method = $item; - } elseif (isset(self::$cache[$class]['methods']['get'.$lcItem])) { - $method = 'get'.$item; - } elseif (isset(self::$cache[$class]['methods']['is'.$lcItem])) { - $method = 'is'.$item; - } elseif (isset(self::$cache[$class]['methods']['__call'])) { - $method = $item; - } else { - if ($isDefinedTest) { - return false; - } - - if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { - return null; - } - - throw new Twig_Error_Runtime(sprintf('Method "%s" for object "%s" does not exist', $item, get_class($object)), -1, $this->getTemplateName()); - } - - if ($isDefinedTest) { - return true; - } - - if ($this->env->hasExtension('sandbox')) { - $this->env->getExtension('sandbox')->checkMethodAllowed($object, $method); - } - - $ret = call_user_func_array(array($object, $method), $arguments); - - // useful when calling a template method from a template - // this is not supported but unfortunately heavily used in the Symfony profiler - if ($object instanceof Twig_TemplateInterface) { - return $ret === '' ? '' : new Twig_Markup($ret, $this->env->getCharset()); - } - - return $ret; - } - - /** - * This method is only useful when testing Twig. Do not use it. - */ - public static function clearCache() - { - self::$cache = array(); - } -} diff --git a/core1/lib/Twig/TemplateInterface.php b/core1/lib/Twig/TemplateInterface.php deleted file mode 100644 index 879f503e..00000000 --- a/core1/lib/Twig/TemplateInterface.php +++ /dev/null @@ -1,47 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -interface Twig_TemplateInterface -{ - const ANY_CALL = 'any'; - const ARRAY_CALL = 'array'; - const METHOD_CALL = 'method'; - - /** - * Renders the template with the given context and returns it as string. - * - * @param array $context An array of parameters to pass to the template - * - * @return string The rendered template - */ - public function render(array $context); - - /** - * Displays the template with the given context. - * - * @param array $context An array of parameters to pass to the template - * @param array $blocks An array of blocks to pass to the template - */ - public function display(array $context, array $blocks = array()); - - /** - * Returns the bound environment for this template. - * - * @return Twig_Environment The current environment - */ - public function getEnvironment(); -} diff --git a/core1/lib/Twig/Test.php b/core1/lib/Twig/Test.php deleted file mode 100644 index 3baff885..00000000 --- a/core1/lib/Twig/Test.php +++ /dev/null @@ -1,34 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -abstract class Twig_Test implements Twig_TestInterface, Twig_TestCallableInterface -{ - protected $options; - protected $arguments = array(); - - public function __construct(array $options = array()) - { - $this->options = array_merge(array( - 'callable' => null, - ), $options); - } - - public function getCallable() - { - return $this->options['callable']; - } -} diff --git a/core1/lib/Twig/Test/Function.php b/core1/lib/Twig/Test/Function.php deleted file mode 100644 index 4be6b9b9..00000000 --- a/core1/lib/Twig/Test/Function.php +++ /dev/null @@ -1,35 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -class Twig_Test_Function extends Twig_Test -{ - protected $function; - - public function __construct($function, array $options = array()) - { - $options['callable'] = $function; - - parent::__construct($options); - - $this->function = $function; - } - - public function compile() - { - return $this->function; - } -} diff --git a/core1/lib/Twig/Test/IntegrationTestCase.php b/core1/lib/Twig/Test/IntegrationTestCase.php deleted file mode 100644 index 724f0941..00000000 --- a/core1/lib/Twig/Test/IntegrationTestCase.php +++ /dev/null @@ -1,154 +0,0 @@ - - * @author Karma Dordrak - */ -abstract class Twig_Test_IntegrationTestCase extends PHPUnit_Framework_TestCase -{ - abstract protected function getExtensions(); - abstract protected function getFixturesDir(); - - /** - * @dataProvider getTests - */ - public function testIntegration($file, $message, $condition, $templates, $exception, $outputs) - { - $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs); - } - - public function getTests() - { - $fixturesDir = realpath($this->getFixturesDir()); - $tests = array(); - - foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($fixturesDir), RecursiveIteratorIterator::LEAVES_ONLY) as $file) { - if (!preg_match('/\.test$/', $file)) { - continue; - } - - $test = file_get_contents($file->getRealpath()); - - if (preg_match('/ - --TEST--\s*(.*?)\s*(?:--CONDITION--\s*(.*))?\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)\s*(?:--DATA--\s*(.*))?\s*--EXCEPTION--\s*(.*)/sx', $test, $match)) { - $message = $match[1]; - $condition = $match[2]; - $templates = $this->parseTemplates($match[3]); - $exception = $match[5]; - $outputs = array(array(null, $match[4], null, '')); - } elseif (preg_match('/--TEST--\s*(.*?)\s*(?:--CONDITION--\s*(.*))?\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)--DATA--.*?--EXPECT--.*/s', $test, $match)) { - $message = $match[1]; - $condition = $match[2]; - $templates = $this->parseTemplates($match[3]); - $exception = false; - preg_match_all('/--DATA--(.*?)(?:--CONFIG--(.*?))?--EXPECT--(.*?)(?=\-\-DATA\-\-|$)/s', $test, $outputs, PREG_SET_ORDER); - } else { - throw new InvalidArgumentException(sprintf('Test "%s" is not valid.', str_replace($fixturesDir.'/', '', $file))); - } - - $tests[] = array(str_replace($fixturesDir.'/', '', $file), $message, $condition, $templates, $exception, $outputs); - } - - return $tests; - } - - protected function doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs) - { - if ($condition) { - eval('$ret = '.$condition.';'); - if (!$ret) { - $this->markTestSkipped($condition); - } - } - - $loader = new Twig_Loader_Array($templates); - - foreach ($outputs as $match) { - $config = array_merge(array( - 'cache' => false, - 'strict_variables' => true, - ), $match[2] ? eval($match[2].';') : array()); - $twig = new Twig_Environment($loader, $config); - $twig->addGlobal('global', 'global'); - foreach ($this->getExtensions() as $extension) { - $twig->addExtension($extension); - } - - try { - $template = $twig->loadTemplate('index.twig'); - } catch (Exception $e) { - if (false !== $exception) { - $this->assertEquals(trim($exception), trim(sprintf('%s: %s', get_class($e), $e->getMessage()))); - - return; - } - - if ($e instanceof Twig_Error_Syntax) { - $e->setTemplateFile($file); - - throw $e; - } - - throw new Twig_Error(sprintf('%s: %s', get_class($e), $e->getMessage()), -1, $file, $e); - } - - try { - $output = trim($template->render(eval($match[1].';')), "\n "); - } catch (Exception $e) { - if (false !== $exception) { - $this->assertEquals(trim($exception), trim(sprintf('%s: %s', get_class($e), $e->getMessage()))); - - return; - } - - if ($e instanceof Twig_Error_Syntax) { - $e->setTemplateFile($file); - } else { - $e = new Twig_Error(sprintf('%s: %s', get_class($e), $e->getMessage()), -1, $file, $e); - } - - $output = trim(sprintf('%s: %s', get_class($e), $e->getMessage())); - } - - if (false !== $exception) { - list($class, ) = explode(':', $exception); - $this->assertThat(NULL, new PHPUnit_Framework_Constraint_Exception($class)); - } - - $expected = trim($match[3], "\n "); - - if ($expected != $output) { - echo 'Compiled template that failed:'; - - foreach (array_keys($templates) as $name) { - echo "Template: $name\n"; - $source = $loader->getSource($name); - echo $twig->compile($twig->parse($twig->tokenize($source, $name))); - } - } - $this->assertEquals($expected, $output, $message.' (in '.$file.')'); - } - } - - protected static function parseTemplates($test) - { - $templates = array(); - preg_match_all('/--TEMPLATE(?:\((.*?)\))?--(.*?)(?=\-\-TEMPLATE|$)/s', $test, $matches, PREG_SET_ORDER); - foreach ($matches as $match) { - $templates[($match[1] ? $match[1] : 'index.twig')] = $match[2]; - } - - return $templates; - } -} diff --git a/core1/lib/Twig/Test/Method.php b/core1/lib/Twig/Test/Method.php deleted file mode 100644 index 17c6c041..00000000 --- a/core1/lib/Twig/Test/Method.php +++ /dev/null @@ -1,37 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -class Twig_Test_Method extends Twig_Test -{ - protected $extension; - protected $method; - - public function __construct(Twig_ExtensionInterface $extension, $method, array $options = array()) - { - $options['callable'] = array($extension, $method); - - parent::__construct($options); - - $this->extension = $extension; - $this->method = $method; - } - - public function compile() - { - return sprintf('$this->env->getExtension(\'%s\')->%s', $this->extension->getName(), $this->method); - } -} diff --git a/core1/lib/Twig/Test/Node.php b/core1/lib/Twig/Test/Node.php deleted file mode 100644 index c832a57b..00000000 --- a/core1/lib/Twig/Test/Node.php +++ /dev/null @@ -1,37 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -class Twig_Test_Node extends Twig_Test -{ - protected $class; - - public function __construct($class, array $options = array()) - { - parent::__construct($options); - - $this->class = $class; - } - - public function getClass() - { - return $this->class; - } - - public function compile() - { - } -} diff --git a/core1/lib/Twig/Test/NodeTestCase.php b/core1/lib/Twig/Test/NodeTestCase.php deleted file mode 100644 index b15c85ff..00000000 --- a/core1/lib/Twig/Test/NodeTestCase.php +++ /dev/null @@ -1,58 +0,0 @@ -assertNodeCompilation($source, $node, $environment); - } - - public function assertNodeCompilation($source, Twig_Node $node, Twig_Environment $environment = null) - { - $compiler = $this->getCompiler($environment); - $compiler->compile($node); - - $this->assertEquals($source, trim($compiler->getSource())); - } - - protected function getCompiler(Twig_Environment $environment = null) - { - return new Twig_Compiler(null === $environment ? $this->getEnvironment() : $environment); - } - - protected function getEnvironment() - { - return new Twig_Environment(); - } - - protected function getVariableGetter($name) - { - if (version_compare(phpversion(), '5.4.0RC1', '>=')) { - return sprintf('(isset($context["%s"]) ? $context["%s"] : null)', $name, $name); - } - - return sprintf('$this->getContext($context, "%s")', $name); - } - - protected function getAttributeGetter() - { - if (function_exists('twig_template_get_attributes')) { - return 'twig_template_get_attributes($this, '; - } - - return '$this->getAttribute('; - } -} diff --git a/core1/lib/Twig/TestCallableInterface.php b/core1/lib/Twig/TestCallableInterface.php deleted file mode 100644 index 0db43682..00000000 --- a/core1/lib/Twig/TestCallableInterface.php +++ /dev/null @@ -1,21 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -interface Twig_TestCallableInterface -{ - public function getCallable(); -} diff --git a/core1/lib/Twig/TestInterface.php b/core1/lib/Twig/TestInterface.php deleted file mode 100644 index 30d8a2c4..00000000 --- a/core1/lib/Twig/TestInterface.php +++ /dev/null @@ -1,26 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -interface Twig_TestInterface -{ - /** - * Compiles a test. - * - * @return string The PHP code for the test - */ - public function compile(); -} diff --git a/core1/lib/Twig/Token.php b/core1/lib/Twig/Token.php deleted file mode 100644 index bbca90db..00000000 --- a/core1/lib/Twig/Token.php +++ /dev/null @@ -1,218 +0,0 @@ - - */ -class Twig_Token -{ - protected $value; - protected $type; - protected $lineno; - - const EOF_TYPE = -1; - const TEXT_TYPE = 0; - const BLOCK_START_TYPE = 1; - const VAR_START_TYPE = 2; - const BLOCK_END_TYPE = 3; - const VAR_END_TYPE = 4; - const NAME_TYPE = 5; - const NUMBER_TYPE = 6; - const STRING_TYPE = 7; - const OPERATOR_TYPE = 8; - const PUNCTUATION_TYPE = 9; - const INTERPOLATION_START_TYPE = 10; - const INTERPOLATION_END_TYPE = 11; - - /** - * Constructor. - * - * @param integer $type The type of the token - * @param string $value The token value - * @param integer $lineno The line position in the source - */ - public function __construct($type, $value, $lineno) - { - $this->type = $type; - $this->value = $value; - $this->lineno = $lineno; - } - - /** - * Returns a string representation of the token. - * - * @return string A string representation of the token - */ - public function __toString() - { - return sprintf('%s(%s)', self::typeToString($this->type, true, $this->lineno), $this->value); - } - - /** - * Tests the current token for a type and/or a value. - * - * Parameters may be: - * * just type - * * type and value (or array of possible values) - * * just value (or array of possible values) (NAME_TYPE is used as type) - * - * @param array|integer $type The type to test - * @param array|string|null $values The token value - * - * @return Boolean - */ - public function test($type, $values = null) - { - if (null === $values && !is_int($type)) { - $values = $type; - $type = self::NAME_TYPE; - } - - return ($this->type === $type) && ( - null === $values || - (is_array($values) && in_array($this->value, $values)) || - $this->value == $values - ); - } - - /** - * Gets the line. - * - * @return integer The source line - */ - public function getLine() - { - return $this->lineno; - } - - /** - * Gets the token type. - * - * @return integer The token type - */ - public function getType() - { - return $this->type; - } - - /** - * Gets the token value. - * - * @return string The token value - */ - public function getValue() - { - return $this->value; - } - - /** - * Returns the constant representation (internal) of a given type. - * - * @param integer $type The type as an integer - * @param Boolean $short Whether to return a short representation or not - * @param integer $line The code line - * - * @return string The string representation - */ - public static function typeToString($type, $short = false, $line = -1) - { - switch ($type) { - case self::EOF_TYPE: - $name = 'EOF_TYPE'; - break; - case self::TEXT_TYPE: - $name = 'TEXT_TYPE'; - break; - case self::BLOCK_START_TYPE: - $name = 'BLOCK_START_TYPE'; - break; - case self::VAR_START_TYPE: - $name = 'VAR_START_TYPE'; - break; - case self::BLOCK_END_TYPE: - $name = 'BLOCK_END_TYPE'; - break; - case self::VAR_END_TYPE: - $name = 'VAR_END_TYPE'; - break; - case self::NAME_TYPE: - $name = 'NAME_TYPE'; - break; - case self::NUMBER_TYPE: - $name = 'NUMBER_TYPE'; - break; - case self::STRING_TYPE: - $name = 'STRING_TYPE'; - break; - case self::OPERATOR_TYPE: - $name = 'OPERATOR_TYPE'; - break; - case self::PUNCTUATION_TYPE: - $name = 'PUNCTUATION_TYPE'; - break; - case self::INTERPOLATION_START_TYPE: - $name = 'INTERPOLATION_START_TYPE'; - break; - case self::INTERPOLATION_END_TYPE: - $name = 'INTERPOLATION_END_TYPE'; - break; - default: - throw new LogicException(sprintf('Token of type "%s" does not exist.', $type)); - } - - return $short ? $name : 'Twig_Token::'.$name; - } - - /** - * Returns the english representation of a given type. - * - * @param integer $type The type as an integer - * @param integer $line The code line - * - * @return string The string representation - */ - public static function typeToEnglish($type, $line = -1) - { - switch ($type) { - case self::EOF_TYPE: - return 'end of template'; - case self::TEXT_TYPE: - return 'text'; - case self::BLOCK_START_TYPE: - return 'begin of statement block'; - case self::VAR_START_TYPE: - return 'begin of print statement'; - case self::BLOCK_END_TYPE: - return 'end of statement block'; - case self::VAR_END_TYPE: - return 'end of print statement'; - case self::NAME_TYPE: - return 'name'; - case self::NUMBER_TYPE: - return 'number'; - case self::STRING_TYPE: - return 'string'; - case self::OPERATOR_TYPE: - return 'operator'; - case self::PUNCTUATION_TYPE: - return 'punctuation'; - case self::INTERPOLATION_START_TYPE: - return 'begin of string interpolation'; - case self::INTERPOLATION_END_TYPE: - return 'end of string interpolation'; - default: - throw new LogicException(sprintf('Token of type "%s" does not exist.', $type)); - } - } -} diff --git a/core1/lib/Twig/TokenParser.php b/core1/lib/Twig/TokenParser.php deleted file mode 100644 index decebd5e..00000000 --- a/core1/lib/Twig/TokenParser.php +++ /dev/null @@ -1,33 +0,0 @@ - - */ -abstract class Twig_TokenParser implements Twig_TokenParserInterface -{ - /** - * @var Twig_Parser - */ - protected $parser; - - /** - * Sets the parser associated with this token parser - * - * @param $parser A Twig_Parser instance - */ - public function setParser(Twig_Parser $parser) - { - $this->parser = $parser; - } -} diff --git a/core1/lib/Twig/TokenParser/AutoEscape.php b/core1/lib/Twig/TokenParser/AutoEscape.php deleted file mode 100644 index 27560288..00000000 --- a/core1/lib/Twig/TokenParser/AutoEscape.php +++ /dev/null @@ -1,89 +0,0 @@ - - * {% autoescape true %} - * Everything will be automatically escaped in this block - * {% endautoescape %} - * - * {% autoescape false %} - * Everything will be outputed as is in this block - * {% endautoescape %} - * - * {% autoescape true js %} - * Everything will be automatically escaped in this block - * using the js escaping strategy - * {% endautoescape %} - * - */ -class Twig_TokenParser_AutoEscape extends Twig_TokenParser -{ - /** - * Parses a token and returns a node. - * - * @param Twig_Token $token A Twig_Token instance - * - * @return Twig_NodeInterface A Twig_NodeInterface instance - */ - public function parse(Twig_Token $token) - { - $lineno = $token->getLine(); - $stream = $this->parser->getStream(); - - if ($stream->test(Twig_Token::BLOCK_END_TYPE)) { - $value = 'html'; - } else { - $expr = $this->parser->getExpressionParser()->parseExpression(); - if (!$expr instanceof Twig_Node_Expression_Constant) { - throw new Twig_Error_Syntax('An escaping strategy must be a string or a Boolean.', $stream->getCurrent()->getLine(), $stream->getFilename()); - } - $value = $expr->getAttribute('value'); - - $compat = true === $value || false === $value; - - if (true === $value) { - $value = 'html'; - } - - if ($compat && $stream->test(Twig_Token::NAME_TYPE)) { - if (false === $value) { - throw new Twig_Error_Syntax('Unexpected escaping strategy as you set autoescaping to false.', $stream->getCurrent()->getLine(), $stream->getFilename()); - } - - $value = $stream->next()->getValue(); - } - } - - $stream->expect(Twig_Token::BLOCK_END_TYPE); - $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true); - $stream->expect(Twig_Token::BLOCK_END_TYPE); - - return new Twig_Node_AutoEscape($value, $body, $lineno, $this->getTag()); - } - - public function decideBlockEnd(Twig_Token $token) - { - return $token->test('endautoescape'); - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'autoescape'; - } -} diff --git a/core1/lib/Twig/TokenParser/Block.php b/core1/lib/Twig/TokenParser/Block.php deleted file mode 100644 index a2e017f3..00000000 --- a/core1/lib/Twig/TokenParser/Block.php +++ /dev/null @@ -1,83 +0,0 @@ - - * {% block head %} - * - * {% block title %}{% endblock %} - My Webpage - * {% endblock %} - * - */ -class Twig_TokenParser_Block extends Twig_TokenParser -{ - /** - * Parses a token and returns a node. - * - * @param Twig_Token $token A Twig_Token instance - * - * @return Twig_NodeInterface A Twig_NodeInterface instance - */ - public function parse(Twig_Token $token) - { - $lineno = $token->getLine(); - $stream = $this->parser->getStream(); - $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); - if ($this->parser->hasBlock($name)) { - throw new Twig_Error_Syntax(sprintf("The block '$name' has already been defined line %d", $this->parser->getBlock($name)->getLine()), $stream->getCurrent()->getLine(), $stream->getFilename()); - } - $this->parser->setBlock($name, $block = new Twig_Node_Block($name, new Twig_Node(array()), $lineno)); - $this->parser->pushLocalScope(); - $this->parser->pushBlockStack($name); - - if ($stream->test(Twig_Token::BLOCK_END_TYPE)) { - $stream->next(); - - $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true); - if ($stream->test(Twig_Token::NAME_TYPE)) { - $value = $stream->next()->getValue(); - - if ($value != $name) { - throw new Twig_Error_Syntax(sprintf("Expected endblock for block '$name' (but %s given)", $value), $stream->getCurrent()->getLine(), $stream->getFilename()); - } - } - } else { - $body = new Twig_Node(array( - new Twig_Node_Print($this->parser->getExpressionParser()->parseExpression(), $lineno), - )); - } - $stream->expect(Twig_Token::BLOCK_END_TYPE); - - $block->setNode('body', $body); - $this->parser->popBlockStack(); - $this->parser->popLocalScope(); - - return new Twig_Node_BlockReference($name, $lineno, $this->getTag()); - } - - public function decideBlockEnd(Twig_Token $token) - { - return $token->test('endblock'); - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'block'; - } -} diff --git a/core1/lib/Twig/TokenParser/Do.php b/core1/lib/Twig/TokenParser/Do.php deleted file mode 100644 index 593d1c6d..00000000 --- a/core1/lib/Twig/TokenParser/Do.php +++ /dev/null @@ -1,42 +0,0 @@ -parser->getExpressionParser()->parseExpression(); - - $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); - - return new Twig_Node_Do($expr, $token->getLine(), $this->getTag()); - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'do'; - } -} diff --git a/core1/lib/Twig/TokenParser/Embed.php b/core1/lib/Twig/TokenParser/Embed.php deleted file mode 100644 index 69cb5f35..00000000 --- a/core1/lib/Twig/TokenParser/Embed.php +++ /dev/null @@ -1,66 +0,0 @@ -parser->getStream(); - - $parent = $this->parser->getExpressionParser()->parseExpression(); - - list($variables, $only, $ignoreMissing) = $this->parseArguments(); - - // inject a fake parent to make the parent() function work - $stream->injectTokens(array( - new Twig_Token(Twig_Token::BLOCK_START_TYPE, '', $token->getLine()), - new Twig_Token(Twig_Token::NAME_TYPE, 'extends', $token->getLine()), - new Twig_Token(Twig_Token::STRING_TYPE, '__parent__', $token->getLine()), - new Twig_Token(Twig_Token::BLOCK_END_TYPE, '', $token->getLine()), - )); - - $module = $this->parser->parse($stream, array($this, 'decideBlockEnd'), true); - - // override the parent with the correct one - $module->setNode('parent', $parent); - - $this->parser->embedTemplate($module); - - $stream->expect(Twig_Token::BLOCK_END_TYPE); - - return new Twig_Node_Embed($module->getAttribute('filename'), $module->getAttribute('index'), $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag()); - } - - public function decideBlockEnd(Twig_Token $token) - { - return $token->test('endembed'); - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'embed'; - } -} diff --git a/core1/lib/Twig/TokenParser/Extends.php b/core1/lib/Twig/TokenParser/Extends.php deleted file mode 100644 index 110bc8b4..00000000 --- a/core1/lib/Twig/TokenParser/Extends.php +++ /dev/null @@ -1,54 +0,0 @@ - - * {% extends "base.html" %} - * - */ -class Twig_TokenParser_Extends extends Twig_TokenParser -{ - /** - * Parses a token and returns a node. - * - * @param Twig_Token $token A Twig_Token instance - * - * @return Twig_NodeInterface A Twig_NodeInterface instance - */ - public function parse(Twig_Token $token) - { - if (!$this->parser->isMainScope()) { - throw new Twig_Error_Syntax('Cannot extend from a block', $token->getLine(), $this->parser->getFilename()); - } - - if (null !== $this->parser->getParent()) { - throw new Twig_Error_Syntax('Multiple extends tags are forbidden', $token->getLine(), $this->parser->getFilename()); - } - $this->parser->setParent($this->parser->getExpressionParser()->parseExpression()); - - $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); - - return null; - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'extends'; - } -} diff --git a/core1/lib/Twig/TokenParser/Filter.php b/core1/lib/Twig/TokenParser/Filter.php deleted file mode 100644 index 2b97475a..00000000 --- a/core1/lib/Twig/TokenParser/Filter.php +++ /dev/null @@ -1,61 +0,0 @@ - - * {% filter upper %} - * This text becomes uppercase - * {% endfilter %} - * - */ -class Twig_TokenParser_Filter extends Twig_TokenParser -{ - /** - * Parses a token and returns a node. - * - * @param Twig_Token $token A Twig_Token instance - * - * @return Twig_NodeInterface A Twig_NodeInterface instance - */ - public function parse(Twig_Token $token) - { - $name = $this->parser->getVarName(); - $ref = new Twig_Node_Expression_BlockReference(new Twig_Node_Expression_Constant($name, $token->getLine()), true, $token->getLine(), $this->getTag()); - - $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref, $this->getTag()); - $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); - - $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true); - $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); - - $block = new Twig_Node_Block($name, $body, $token->getLine()); - $this->parser->setBlock($name, $block); - - return new Twig_Node_Print($filter, $token->getLine(), $this->getTag()); - } - - public function decideBlockEnd(Twig_Token $token) - { - return $token->test('endfilter'); - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'filter'; - } -} diff --git a/core1/lib/Twig/TokenParser/Flush.php b/core1/lib/Twig/TokenParser/Flush.php deleted file mode 100644 index 4e15e785..00000000 --- a/core1/lib/Twig/TokenParser/Flush.php +++ /dev/null @@ -1,42 +0,0 @@ -parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); - - return new Twig_Node_Flush($token->getLine(), $this->getTag()); - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'flush'; - } -} diff --git a/core1/lib/Twig/TokenParser/For.php b/core1/lib/Twig/TokenParser/For.php deleted file mode 100644 index 98a6d079..00000000 --- a/core1/lib/Twig/TokenParser/For.php +++ /dev/null @@ -1,136 +0,0 @@ - - *
    - * {% for user in users %} - *
  • {{ user.username|e }}
  • - * {% endfor %} - *
- * - */ -class Twig_TokenParser_For extends Twig_TokenParser -{ - /** - * Parses a token and returns a node. - * - * @param Twig_Token $token A Twig_Token instance - * - * @return Twig_NodeInterface A Twig_NodeInterface instance - */ - public function parse(Twig_Token $token) - { - $lineno = $token->getLine(); - $stream = $this->parser->getStream(); - $targets = $this->parser->getExpressionParser()->parseAssignmentExpression(); - $stream->expect(Twig_Token::OPERATOR_TYPE, 'in'); - $seq = $this->parser->getExpressionParser()->parseExpression(); - - $ifexpr = null; - if ($stream->test(Twig_Token::NAME_TYPE, 'if')) { - $stream->next(); - $ifexpr = $this->parser->getExpressionParser()->parseExpression(); - } - - $stream->expect(Twig_Token::BLOCK_END_TYPE); - $body = $this->parser->subparse(array($this, 'decideForFork')); - if ($stream->next()->getValue() == 'else') { - $stream->expect(Twig_Token::BLOCK_END_TYPE); - $else = $this->parser->subparse(array($this, 'decideForEnd'), true); - } else { - $else = null; - } - $stream->expect(Twig_Token::BLOCK_END_TYPE); - - if (count($targets) > 1) { - $keyTarget = $targets->getNode(0); - $keyTarget = new Twig_Node_Expression_AssignName($keyTarget->getAttribute('name'), $keyTarget->getLine()); - $valueTarget = $targets->getNode(1); - $valueTarget = new Twig_Node_Expression_AssignName($valueTarget->getAttribute('name'), $valueTarget->getLine()); - } else { - $keyTarget = new Twig_Node_Expression_AssignName('_key', $lineno); - $valueTarget = $targets->getNode(0); - $valueTarget = new Twig_Node_Expression_AssignName($valueTarget->getAttribute('name'), $valueTarget->getLine()); - } - - if ($ifexpr) { - $this->checkLoopUsageCondition($stream, $ifexpr); - $this->checkLoopUsageBody($stream, $body); - } - - return new Twig_Node_For($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, $lineno, $this->getTag()); - } - - public function decideForFork(Twig_Token $token) - { - return $token->test(array('else', 'endfor')); - } - - public function decideForEnd(Twig_Token $token) - { - return $token->test('endfor'); - } - - // the loop variable cannot be used in the condition - protected function checkLoopUsageCondition(Twig_TokenStream $stream, Twig_NodeInterface $node) - { - if ($node instanceof Twig_Node_Expression_GetAttr && $node->getNode('node') instanceof Twig_Node_Expression_Name && 'loop' == $node->getNode('node')->getAttribute('name')) { - throw new Twig_Error_Syntax('The "loop" variable cannot be used in a looping condition', $node->getLine(), $stream->getFilename()); - } - - foreach ($node as $n) { - if (!$n) { - continue; - } - - $this->checkLoopUsageCondition($stream, $n); - } - } - - // check usage of non-defined loop-items - // it does not catch all problems (for instance when a for is included into another or when the variable is used in an include) - protected function checkLoopUsageBody(Twig_TokenStream $stream, Twig_NodeInterface $node) - { - if ($node instanceof Twig_Node_Expression_GetAttr && $node->getNode('node') instanceof Twig_Node_Expression_Name && 'loop' == $node->getNode('node')->getAttribute('name')) { - $attribute = $node->getNode('attribute'); - if ($attribute instanceof Twig_Node_Expression_Constant && in_array($attribute->getAttribute('value'), array('length', 'revindex0', 'revindex', 'last'))) { - throw new Twig_Error_Syntax(sprintf('The "loop.%s" variable is not defined when looping with a condition', $attribute->getAttribute('value')), $node->getLine(), $stream->getFilename()); - } - } - - // should check for parent.loop.XXX usage - if ($node instanceof Twig_Node_For) { - return; - } - - foreach ($node as $n) { - if (!$n) { - continue; - } - - $this->checkLoopUsageBody($stream, $n); - } - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'for'; - } -} diff --git a/core1/lib/Twig/TokenParser/From.php b/core1/lib/Twig/TokenParser/From.php deleted file mode 100644 index a54054db..00000000 --- a/core1/lib/Twig/TokenParser/From.php +++ /dev/null @@ -1,74 +0,0 @@ - - * {% from 'forms.html' import forms %} - * - */ -class Twig_TokenParser_From extends Twig_TokenParser -{ - /** - * Parses a token and returns a node. - * - * @param Twig_Token $token A Twig_Token instance - * - * @return Twig_NodeInterface A Twig_NodeInterface instance - */ - public function parse(Twig_Token $token) - { - $macro = $this->parser->getExpressionParser()->parseExpression(); - $stream = $this->parser->getStream(); - $stream->expect('import'); - - $targets = array(); - do { - $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); - - $alias = $name; - if ($stream->test('as')) { - $stream->next(); - - $alias = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); - } - - $targets[$name] = $alias; - - if (!$stream->test(Twig_Token::PUNCTUATION_TYPE, ',')) { - break; - } - - $stream->next(); - } while (true); - - $stream->expect(Twig_Token::BLOCK_END_TYPE); - - $node = new Twig_Node_Import($macro, new Twig_Node_Expression_AssignName($this->parser->getVarName(), $token->getLine()), $token->getLine(), $this->getTag()); - - foreach ($targets as $name => $alias) { - $this->parser->addImportedSymbol('function', $alias, 'get'.$name, $node->getNode('var')); - } - - return $node; - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'from'; - } -} diff --git a/core1/lib/Twig/TokenParser/If.php b/core1/lib/Twig/TokenParser/If.php deleted file mode 100644 index 3d7d1f51..00000000 --- a/core1/lib/Twig/TokenParser/If.php +++ /dev/null @@ -1,94 +0,0 @@ - - * {% if users %} - *
    - * {% for user in users %} - *
  • {{ user.username|e }}
  • - * {% endfor %} - *
- * {% endif %} - * - */ -class Twig_TokenParser_If extends Twig_TokenParser -{ - /** - * Parses a token and returns a node. - * - * @param Twig_Token $token A Twig_Token instance - * - * @return Twig_NodeInterface A Twig_NodeInterface instance - */ - public function parse(Twig_Token $token) - { - $lineno = $token->getLine(); - $expr = $this->parser->getExpressionParser()->parseExpression(); - $stream = $this->parser->getStream(); - $stream->expect(Twig_Token::BLOCK_END_TYPE); - $body = $this->parser->subparse(array($this, 'decideIfFork')); - $tests = array($expr, $body); - $else = null; - - $end = false; - while (!$end) { - switch ($stream->next()->getValue()) { - case 'else': - $stream->expect(Twig_Token::BLOCK_END_TYPE); - $else = $this->parser->subparse(array($this, 'decideIfEnd')); - break; - - case 'elseif': - $expr = $this->parser->getExpressionParser()->parseExpression(); - $stream->expect(Twig_Token::BLOCK_END_TYPE); - $body = $this->parser->subparse(array($this, 'decideIfFork')); - $tests[] = $expr; - $tests[] = $body; - break; - - case 'endif': - $end = true; - break; - - default: - throw new Twig_Error_Syntax(sprintf('Unexpected end of template. Twig was looking for the following tags "else", "elseif", or "endif" to close the "if" block started at line %d)', $lineno), $stream->getCurrent()->getLine(), $stream->getFilename()); - } - } - - $stream->expect(Twig_Token::BLOCK_END_TYPE); - - return new Twig_Node_If(new Twig_Node($tests), $else, $lineno, $this->getTag()); - } - - public function decideIfFork(Twig_Token $token) - { - return $token->test(array('elseif', 'else', 'endif')); - } - - public function decideIfEnd(Twig_Token $token) - { - return $token->test(array('endif')); - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'if'; - } -} diff --git a/core1/lib/Twig/TokenParser/Import.php b/core1/lib/Twig/TokenParser/Import.php deleted file mode 100644 index e7050c70..00000000 --- a/core1/lib/Twig/TokenParser/Import.php +++ /dev/null @@ -1,49 +0,0 @@ - - * {% import 'forms.html' as forms %} - * - */ -class Twig_TokenParser_Import extends Twig_TokenParser -{ - /** - * Parses a token and returns a node. - * - * @param Twig_Token $token A Twig_Token instance - * - * @return Twig_NodeInterface A Twig_NodeInterface instance - */ - public function parse(Twig_Token $token) - { - $macro = $this->parser->getExpressionParser()->parseExpression(); - $this->parser->getStream()->expect('as'); - $var = new Twig_Node_Expression_AssignName($this->parser->getStream()->expect(Twig_Token::NAME_TYPE)->getValue(), $token->getLine()); - $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); - - $this->parser->addImportedSymbol('template', $var->getAttribute('name')); - - return new Twig_Node_Import($macro, $var, $token->getLine(), $this->getTag()); - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'import'; - } -} diff --git a/core1/lib/Twig/TokenParser/Include.php b/core1/lib/Twig/TokenParser/Include.php deleted file mode 100644 index 4a317868..00000000 --- a/core1/lib/Twig/TokenParser/Include.php +++ /dev/null @@ -1,80 +0,0 @@ - - * {% include 'header.html' %} - * Body - * {% include 'footer.html' %} - * - */ -class Twig_TokenParser_Include extends Twig_TokenParser -{ - /** - * Parses a token and returns a node. - * - * @param Twig_Token $token A Twig_Token instance - * - * @return Twig_NodeInterface A Twig_NodeInterface instance - */ - public function parse(Twig_Token $token) - { - $expr = $this->parser->getExpressionParser()->parseExpression(); - - list($variables, $only, $ignoreMissing) = $this->parseArguments(); - - return new Twig_Node_Include($expr, $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag()); - } - - protected function parseArguments() - { - $stream = $this->parser->getStream(); - - $ignoreMissing = false; - if ($stream->test(Twig_Token::NAME_TYPE, 'ignore')) { - $stream->next(); - $stream->expect(Twig_Token::NAME_TYPE, 'missing'); - - $ignoreMissing = true; - } - - $variables = null; - if ($stream->test(Twig_Token::NAME_TYPE, 'with')) { - $stream->next(); - - $variables = $this->parser->getExpressionParser()->parseExpression(); - } - - $only = false; - if ($stream->test(Twig_Token::NAME_TYPE, 'only')) { - $stream->next(); - - $only = true; - } - - $stream->expect(Twig_Token::BLOCK_END_TYPE); - - return array($variables, $only, $ignoreMissing); - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'include'; - } -} diff --git a/core1/lib/Twig/TokenParser/Macro.php b/core1/lib/Twig/TokenParser/Macro.php deleted file mode 100644 index c2a03360..00000000 --- a/core1/lib/Twig/TokenParser/Macro.php +++ /dev/null @@ -1,70 +0,0 @@ - - * {% macro input(name, value, type, size) %} - * - * {% endmacro %} - * - */ -class Twig_TokenParser_Macro extends Twig_TokenParser -{ - /** - * Parses a token and returns a node. - * - * @param Twig_Token $token A Twig_Token instance - * - * @return Twig_NodeInterface A Twig_NodeInterface instance - */ - public function parse(Twig_Token $token) - { - $lineno = $token->getLine(); - $stream = $this->parser->getStream(); - $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); - - $arguments = $this->parser->getExpressionParser()->parseArguments(true, true); - - $stream->expect(Twig_Token::BLOCK_END_TYPE); - $this->parser->pushLocalScope(); - $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true); - if ($stream->test(Twig_Token::NAME_TYPE)) { - $value = $stream->next()->getValue(); - - if ($value != $name) { - throw new Twig_Error_Syntax(sprintf("Expected endmacro for macro '$name' (but %s given)", $value), $stream->getCurrent()->getLine(), $stream->getFilename()); - } - } - $this->parser->popLocalScope(); - $stream->expect(Twig_Token::BLOCK_END_TYPE); - - $this->parser->setMacro($name, new Twig_Node_Macro($name, new Twig_Node_Body(array($body)), $arguments, $lineno, $this->getTag())); - - return null; - } - - public function decideBlockEnd(Twig_Token $token) - { - return $token->test('endmacro'); - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'macro'; - } -} diff --git a/core1/lib/Twig/TokenParser/Sandbox.php b/core1/lib/Twig/TokenParser/Sandbox.php deleted file mode 100644 index 8fbdde72..00000000 --- a/core1/lib/Twig/TokenParser/Sandbox.php +++ /dev/null @@ -1,68 +0,0 @@ - - * {% sandbox %} - * {% include 'user.html' %} - * {% endsandbox %} - * - * - * @see https://www.twig-project.org/doc/api.html#sandbox-extension for details - */ -class Twig_TokenParser_Sandbox extends Twig_TokenParser -{ - /** - * Parses a token and returns a node. - * - * @param Twig_Token $token A Twig_Token instance - * - * @return Twig_NodeInterface A Twig_NodeInterface instance - */ - public function parse(Twig_Token $token) - { - $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); - $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true); - $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); - - // in a sandbox tag, only include tags are allowed - if (!$body instanceof Twig_Node_Include) { - foreach ($body as $node) { - if ($node instanceof Twig_Node_Text && ctype_space($node->getAttribute('data'))) { - continue; - } - - if (!$node instanceof Twig_Node_Include) { - throw new Twig_Error_Syntax('Only "include" tags are allowed within a "sandbox" section', $node->getLine(), $this->parser->getFilename()); - } - } - } - - return new Twig_Node_Sandbox($body, $token->getLine(), $this->getTag()); - } - - public function decideBlockEnd(Twig_Token $token) - { - return $token->test('endsandbox'); - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'sandbox'; - } -} diff --git a/core1/lib/Twig/TokenParser/Set.php b/core1/lib/Twig/TokenParser/Set.php deleted file mode 100644 index 6dbd1db1..00000000 --- a/core1/lib/Twig/TokenParser/Set.php +++ /dev/null @@ -1,84 +0,0 @@ - - * {% set foo = 'foo' %} - * - * {% set foo = [1, 2] %} - * - * {% set foo = {'foo': 'bar'} %} - * - * {% set foo = 'foo' ~ 'bar' %} - * - * {% set foo, bar = 'foo', 'bar' %} - * - * {% set foo %}Some content{% endset %} - * - */ -class Twig_TokenParser_Set extends Twig_TokenParser -{ - /** - * Parses a token and returns a node. - * - * @param Twig_Token $token A Twig_Token instance - * - * @return Twig_NodeInterface A Twig_NodeInterface instance - */ - public function parse(Twig_Token $token) - { - $lineno = $token->getLine(); - $stream = $this->parser->getStream(); - $names = $this->parser->getExpressionParser()->parseAssignmentExpression(); - - $capture = false; - if ($stream->test(Twig_Token::OPERATOR_TYPE, '=')) { - $stream->next(); - $values = $this->parser->getExpressionParser()->parseMultitargetExpression(); - - $stream->expect(Twig_Token::BLOCK_END_TYPE); - - if (count($names) !== count($values)) { - throw new Twig_Error_Syntax("When using set, you must have the same number of variables and assignements.", $stream->getCurrent()->getLine(), $stream->getFilename()); - } - } else { - $capture = true; - - if (count($names) > 1) { - throw new Twig_Error_Syntax("When using set with a block, you cannot have a multi-target.", $stream->getCurrent()->getLine(), $stream->getFilename()); - } - - $stream->expect(Twig_Token::BLOCK_END_TYPE); - - $values = $this->parser->subparse(array($this, 'decideBlockEnd'), true); - $stream->expect(Twig_Token::BLOCK_END_TYPE); - } - - return new Twig_Node_Set($capture, $names, $values, $lineno, $this->getTag()); - } - - public function decideBlockEnd(Twig_Token $token) - { - return $token->test('endset'); - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'set'; - } -} diff --git a/core1/lib/Twig/TokenParser/Spaceless.php b/core1/lib/Twig/TokenParser/Spaceless.php deleted file mode 100644 index 1e3fa8f3..00000000 --- a/core1/lib/Twig/TokenParser/Spaceless.php +++ /dev/null @@ -1,59 +0,0 @@ - - * {% spaceless %} - *
- * foo - *
- * {% endspaceless %} - * - * {# output will be
foo
#} - * - */ -class Twig_TokenParser_Spaceless extends Twig_TokenParser -{ - /** - * Parses a token and returns a node. - * - * @param Twig_Token $token A Twig_Token instance - * - * @return Twig_NodeInterface A Twig_NodeInterface instance - */ - public function parse(Twig_Token $token) - { - $lineno = $token->getLine(); - - $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); - $body = $this->parser->subparse(array($this, 'decideSpacelessEnd'), true); - $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); - - return new Twig_Node_Spaceless($body, $lineno, $this->getTag()); - } - - public function decideSpacelessEnd(Twig_Token $token) - { - return $token->test('endspaceless'); - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'spaceless'; - } -} diff --git a/core1/lib/Twig/TokenParser/Use.php b/core1/lib/Twig/TokenParser/Use.php deleted file mode 100644 index 9263a9a1..00000000 --- a/core1/lib/Twig/TokenParser/Use.php +++ /dev/null @@ -1,84 +0,0 @@ - - * {% extends "base.html" %} - * - * {% use "blocks.html" %} - * - * {% block title %}{% endblock %} - * {% block content %}{% endblock %} - * - * - * @see https://www.twig-project.org/doc/templates.html#horizontal-reuse for details. - */ -class Twig_TokenParser_Use extends Twig_TokenParser -{ - /** - * Parses a token and returns a node. - * - * @param Twig_Token $token A Twig_Token instance - * - * @return Twig_NodeInterface A Twig_NodeInterface instance - */ - public function parse(Twig_Token $token) - { - $template = $this->parser->getExpressionParser()->parseExpression(); - $stream = $this->parser->getStream(); - - if (!$template instanceof Twig_Node_Expression_Constant) { - throw new Twig_Error_Syntax('The template references in a "use" statement must be a string.', $stream->getCurrent()->getLine(), $stream->getFilename()); - } - - $targets = array(); - if ($stream->test('with')) { - $stream->next(); - - do { - $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); - - $alias = $name; - if ($stream->test('as')) { - $stream->next(); - - $alias = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); - } - - $targets[$name] = new Twig_Node_Expression_Constant($alias, -1); - - if (!$stream->test(Twig_Token::PUNCTUATION_TYPE, ',')) { - break; - } - - $stream->next(); - } while (true); - } - - $stream->expect(Twig_Token::BLOCK_END_TYPE); - - $this->parser->addTrait(new Twig_Node(array('template' => $template, 'targets' => new Twig_Node($targets)))); - - return null; - } - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag() - { - return 'use'; - } -} diff --git a/core1/lib/Twig/TokenParserBroker.php b/core1/lib/Twig/TokenParserBroker.php deleted file mode 100644 index 9518c7c8..00000000 --- a/core1/lib/Twig/TokenParserBroker.php +++ /dev/null @@ -1,138 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -class Twig_TokenParserBroker implements Twig_TokenParserBrokerInterface -{ - protected $parser; - protected $parsers = array(); - protected $brokers = array(); - - /** - * Constructor. - * - * @param array|Traversable $parsers A Traversable of Twig_TokenParserInterface instances - * @param array|Traversable $brokers A Traversable of Twig_TokenParserBrokerInterface instances - */ - public function __construct($parsers = array(), $brokers = array()) - { - foreach ($parsers as $parser) { - if (!$parser instanceof Twig_TokenParserInterface) { - throw new LogicException('$parsers must a an array of Twig_TokenParserInterface'); - } - $this->parsers[$parser->getTag()] = $parser; - } - foreach ($brokers as $broker) { - if (!$broker instanceof Twig_TokenParserBrokerInterface) { - throw new LogicException('$brokers must a an array of Twig_TokenParserBrokerInterface'); - } - $this->brokers[] = $broker; - } - } - - /** - * Adds a TokenParser. - * - * @param Twig_TokenParserInterface $parser A Twig_TokenParserInterface instance - */ - public function addTokenParser(Twig_TokenParserInterface $parser) - { - $this->parsers[$parser->getTag()] = $parser; - } - - /** - * Removes a TokenParser. - * - * @param Twig_TokenParserInterface $parser A Twig_TokenParserInterface instance - */ - public function removeTokenParser(Twig_TokenParserInterface $parser) - { - $name = $parser->getTag(); - if (isset($this->parsers[$name]) && $parser === $this->parsers[$name]) { - unset($this->parsers[$name]); - } - } - - /** - * Adds a TokenParserBroker. - * - * @param Twig_TokenParserBroker $broker A Twig_TokenParserBroker instance - */ - public function addTokenParserBroker(Twig_TokenParserBroker $broker) - { - $this->brokers[] = $broker; - } - - /** - * Removes a TokenParserBroker. - * - * @param Twig_TokenParserBroker $broker A Twig_TokenParserBroker instance - */ - public function removeTokenParserBroker(Twig_TokenParserBroker $broker) - { - if (false !== $pos = array_search($broker, $this->brokers)) { - unset($this->brokers[$pos]); - } - } - - /** - * Gets a suitable TokenParser for a tag. - * - * First looks in parsers, then in brokers. - * - * @param string $tag A tag name - * - * @return null|Twig_TokenParserInterface A Twig_TokenParserInterface or null if no suitable TokenParser was found - */ - public function getTokenParser($tag) - { - if (isset($this->parsers[$tag])) { - return $this->parsers[$tag]; - } - $broker = end($this->brokers); - while (false !== $broker) { - $parser = $broker->getTokenParser($tag); - if (null !== $parser) { - return $parser; - } - $broker = prev($this->brokers); - } - - return null; - } - - public function getParsers() - { - return $this->parsers; - } - - public function getParser() - { - return $this->parser; - } - - public function setParser(Twig_ParserInterface $parser) - { - $this->parser = $parser; - foreach ($this->parsers as $tokenParser) { - $tokenParser->setParser($parser); - } - foreach ($this->brokers as $broker) { - $broker->setParser($parser); - } - } -} diff --git a/core1/lib/Twig/TokenParserBrokerInterface.php b/core1/lib/Twig/TokenParserBrokerInterface.php deleted file mode 100644 index 3f006e33..00000000 --- a/core1/lib/Twig/TokenParserBrokerInterface.php +++ /dev/null @@ -1,45 +0,0 @@ - - * @deprecated since 1.12 (to be removed in 2.0) - */ -interface Twig_TokenParserBrokerInterface -{ - /** - * Gets a TokenParser suitable for a tag. - * - * @param string $tag A tag name - * - * @return null|Twig_TokenParserInterface A Twig_TokenParserInterface or null if no suitable TokenParser was found - */ - public function getTokenParser($tag); - - /** - * Calls Twig_TokenParserInterface::setParser on all parsers the implementation knows of. - * - * @param Twig_ParserInterface $parser A Twig_ParserInterface interface - */ - public function setParser(Twig_ParserInterface $parser); - - /** - * Gets the Twig_ParserInterface. - * - * @return null|Twig_ParserInterface A Twig_ParserInterface instance or null - */ - public function getParser(); -} diff --git a/core1/lib/Twig/TokenParserInterface.php b/core1/lib/Twig/TokenParserInterface.php deleted file mode 100644 index bbde7714..00000000 --- a/core1/lib/Twig/TokenParserInterface.php +++ /dev/null @@ -1,41 +0,0 @@ - - */ -interface Twig_TokenParserInterface -{ - /** - * Sets the parser associated with this token parser - * - * @param $parser A Twig_Parser instance - */ - public function setParser(Twig_Parser $parser); - - /** - * Parses a token and returns a node. - * - * @param Twig_Token $token A Twig_Token instance - * - * @return Twig_NodeInterface A Twig_NodeInterface instance - */ - public function parse(Twig_Token $token); - - /** - * Gets the tag name associated with this token parser. - * - * @return string The tag name - */ - public function getTag(); -} diff --git a/core1/lib/Twig/TokenStream.php b/core1/lib/Twig/TokenStream.php deleted file mode 100644 index a78189f6..00000000 --- a/core1/lib/Twig/TokenStream.php +++ /dev/null @@ -1,144 +0,0 @@ - - */ -class Twig_TokenStream -{ - protected $tokens; - protected $current; - protected $filename; - - /** - * Constructor. - * - * @param array $tokens An array of tokens - * @param string $filename The name of the filename which tokens are associated with - */ - public function __construct(array $tokens, $filename = null) - { - $this->tokens = $tokens; - $this->current = 0; - $this->filename = $filename; - } - - /** - * Returns a string representation of the token stream. - * - * @return string - */ - public function __toString() - { - return implode("\n", $this->tokens); - } - - public function injectTokens(array $tokens) - { - $this->tokens = array_merge(array_slice($this->tokens, 0, $this->current), $tokens, array_slice($this->tokens, $this->current)); - } - - /** - * Sets the pointer to the next token and returns the old one. - * - * @return Twig_Token - */ - public function next() - { - if (!isset($this->tokens[++$this->current])) { - throw new Twig_Error_Syntax('Unexpected end of template', $this->tokens[$this->current - 1]->getLine(), $this->filename); - } - - return $this->tokens[$this->current - 1]; - } - - /** - * Tests a token and returns it or throws a syntax error. - * - * @return Twig_Token - */ - public function expect($type, $value = null, $message = null) - { - $token = $this->tokens[$this->current]; - if (!$token->test($type, $value)) { - $line = $token->getLine(); - throw new Twig_Error_Syntax(sprintf('%sUnexpected token "%s" of value "%s" ("%s" expected%s)', - $message ? $message.'. ' : '', - Twig_Token::typeToEnglish($token->getType(), $line), $token->getValue(), - Twig_Token::typeToEnglish($type, $line), $value ? sprintf(' with value "%s"', $value) : ''), - $line, - $this->filename - ); - } - $this->next(); - - return $token; - } - - /** - * Looks at the next token. - * - * @param integer $number - * - * @return Twig_Token - */ - public function look($number = 1) - { - if (!isset($this->tokens[$this->current + $number])) { - throw new Twig_Error_Syntax('Unexpected end of template', $this->tokens[$this->current + $number - 1]->getLine(), $this->filename); - } - - return $this->tokens[$this->current + $number]; - } - - /** - * Tests the current token - * - * @return bool - */ - public function test($primary, $secondary = null) - { - return $this->tokens[$this->current]->test($primary, $secondary); - } - - /** - * Checks if end of stream was reached - * - * @return bool - */ - public function isEOF() - { - return $this->tokens[$this->current]->getType() === Twig_Token::EOF_TYPE; - } - - /** - * Gets the current token - * - * @return Twig_Token - */ - public function getCurrent() - { - return $this->tokens[$this->current]; - } - - /** - * Gets the filename associated with this stream - * - * @return string - */ - public function getFilename() - { - return $this->filename; - } -} diff --git a/core1/log/error.log b/core1/log/error.log deleted file mode 100644 index 9fbb281b..00000000 --- a/core1/log/error.log +++ /dev/null @@ -1,492 +0,0 @@ -Server date & time: 14.11.2015 01:48:38 -Error code: 10001 -Error message: SQLSTATE[28000] [1045] Access denied for user 'oribk'@'localhost' (using password: YES) -In file: /var/www/kombats/data/www/new-combats.com/core/app/core/database.php -In line: 16 -Client IP: 178.137.24.87 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/database.php', LINE: '16'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/init.php', LINE: '10'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/index.php', LINE: '26'; - -Server date & time: 14.11.2015 01:48:38 -Error code: 10002 -Error message: [Internal Error] Could not establish DB connection -In file: /var/www/kombats/data/www/new-combats.com/core/app/core/database.php -In line: 37 -Client IP: 178.137.24.87 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/database.php', LINE: '37'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/user.php', LINE: '29'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/logic/comission.php', LINE: '18'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/route.php', LINE: '32'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/init.php', LINE: '11'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/index.php', LINE: '26'; - -Server date & time: 14.11.2015 01:48:43 -Error code: 10001 -Error message: SQLSTATE[28000] [1045] Access denied for user 'oribk'@'localhost' (using password: YES) -In file: /var/www/kombats/data/www/new-combats.com/core/app/core/database.php -In line: 16 -Client IP: 178.137.24.87 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/database.php', LINE: '16'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/init.php', LINE: '10'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/index.php', LINE: '26'; - -Server date & time: 14.11.2015 01:48:43 -Error code: 10002 -Error message: [Internal Error] Could not establish DB connection -In file: /var/www/kombats/data/www/new-combats.com/core/app/core/database.php -In line: 37 -Client IP: 178.137.24.87 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/database.php', LINE: '37'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/user.php', LINE: '29'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/logic/comission.php', LINE: '18'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/route.php', LINE: '32'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/init.php', LINE: '11'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/index.php', LINE: '26'; - -Server date & time: 14.11.2015 01:48:47 -Error code: 10001 -Error message: SQLSTATE[28000] [1045] Access denied for user 'oribk'@'localhost' (using password: YES) -In file: /var/www/kombats/data/www/new-combats.com/core/app/core/database.php -In line: 16 -Client IP: 178.137.24.87 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/database.php', LINE: '16'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/init.php', LINE: '10'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/index.php', LINE: '26'; - -Server date & time: 14.11.2015 01:48:47 -Error code: 10002 -Error message: [Internal Error] Could not establish DB connection -In file: /var/www/kombats/data/www/new-combats.com/core/app/core/database.php -In line: 37 -Client IP: 178.137.24.87 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/database.php', LINE: '37'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/user.php', LINE: '29'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/logic/comission.php', LINE: '18'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/route.php', LINE: '32'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/init.php', LINE: '11'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/index.php', LINE: '26'; - -Server date & time: 15.11.2015 21:55:28 -Error code: 10001 -Error message: SQLSTATE[28000] [1045] Access denied for user 'oribk'@'localhost' (using password: YES) -In file: /var/www/kombats/data/www/new-combats.com/core/app/core/database.php -In line: 16 -Client IP: 37.204.54.70 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/database.php', LINE: '16'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/init.php', LINE: '10'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/index.php', LINE: '26'; - -Server date & time: 15.11.2015 21:55:28 -Error code: 10002 -Error message: [Internal Error] Could not establish DB connection -In file: /var/www/kombats/data/www/new-combats.com/core/app/core/database.php -In line: 37 -Client IP: 37.204.54.70 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/database.php', LINE: '37'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/user.php', LINE: '29'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/logic/comission.php', LINE: '18'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/route.php', LINE: '32'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/init.php', LINE: '11'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/index.php', LINE: '26'; - -Server date & time: 15.11.2015 21:55:44 -Error code: 10001 -Error message: SQLSTATE[28000] [1045] Access denied for user 'oribk'@'localhost' (using password: YES) -In file: /var/www/kombats/data/www/new-combats.com/core/app/core/database.php -In line: 16 -Client IP: 37.204.54.70 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/database.php', LINE: '16'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/init.php', LINE: '10'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/index.php', LINE: '26'; - -Server date & time: 15.11.2015 21:55:44 -Error code: 10002 -Error message: [Internal Error] Could not establish DB connection -In file: /var/www/kombats/data/www/new-combats.com/core/app/core/database.php -In line: 37 -Client IP: 37.204.54.70 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/database.php', LINE: '37'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/user.php', LINE: '29'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/logic/comission.php', LINE: '18'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/route.php', LINE: '32'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/init.php', LINE: '11'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/index.php', LINE: '26'; - -Server date & time: 15.11.2015 21:56:01 -Error code: 10001 -Error message: SQLSTATE[28000] [1045] Access denied for user 'oribk'@'localhost' (using password: YES) -In file: /var/www/kombats/data/www/new-combats.com/core/app/core/database.php -In line: 16 -Client IP: 37.204.54.70 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/database.php', LINE: '16'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/init.php', LINE: '10'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/index.php', LINE: '26'; - -Server date & time: 15.11.2015 21:56:01 -Error code: 10002 -Error message: [Internal Error] Could not establish DB connection -In file: /var/www/kombats/data/www/new-combats.com/core/app/core/database.php -In line: 37 -Client IP: 37.204.54.70 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/database.php', LINE: '37'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/user.php', LINE: '29'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/logic/comission.php', LINE: '18'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/route.php', LINE: '32'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/init.php', LINE: '11'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/index.php', LINE: '26'; - -Server date & time: 15.11.2015 21:57:38 -Error code: 10001 -Error message: SQLSTATE[28000] [1045] Access denied for user 'oribk'@'localhost' (using password: YES) -In file: /var/www/kombats/data/www/new-combats.com/core/app/core/database.php -In line: 16 -Client IP: 37.204.54.70 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/database.php', LINE: '16'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/init.php', LINE: '10'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/index.php', LINE: '26'; - -Server date & time: 15.11.2015 21:57:38 -Error code: 10002 -Error message: [Internal Error] Could not establish DB connection -In file: /var/www/kombats/data/www/new-combats.com/core/app/core/database.php -In line: 37 -Client IP: 37.204.54.70 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/database.php', LINE: '37'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/user.php', LINE: '29'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/logic/comission.php', LINE: '18'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/route.php', LINE: '32'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/init.php', LINE: '11'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/index.php', LINE: '26'; - -Server date & time: 13.01.2016 00:41:44 -Error code: 10002 -Error message: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'money' cannot be null -In file: /var/www/kombats/data/www/new-combats.com/core/app/core/database.php -In line: 37 -Client IP: 37.26.32.29 -GET Data: a:3:{s:8:"buy_item";s:2:"83";s:2:"kr";s:4:"1.02";s:4:"page";s:1:"1";} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/database.php', LINE: '37'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/logic/auction.php', LINE: '128'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/logic/auction.php', LINE: '30'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/core/route.php', LINE: '33'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/app/init.php', LINE: '11'; - FILE: '/var/www/kombats/data/www/new-combats.com/core/index.php', LINE: '29'; - -Server date & time: 08.01.2018 17:21:00 -Error code: 10001 -Error message: SQLSTATE[HY000] [1045] Access denied for user 'newcom1_bk'@'s3056.avahost.net' (using password: YES) -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 178.136.56.91 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 08.01.2018 17:21:00 -Error code: 10001 -Error message: SQLSTATE[HY000] [1045] Access denied for user 'newcom1_bk'@'s3056.avahost.net' (using password: YES) -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 178.136.56.91 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 29.03.2018 19:03:37 -Error code: 10001 -Error message: SQLSTATE[HY000] [1045] Access denied for user 'newcom1_bk'@'s3056.avahost.net' (using password: YES) -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 149.202.78.80 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 14.05.2018 13:36:21 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 176.31.247.41 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 24.05.2018 07:42:55 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 119.28.77.20 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 08.07.2018 09:39:31 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 206.189.8.249 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 08.07.2018 09:39:31 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 206.189.8.249 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 08.07.2018 09:39:31 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 206.189.8.249 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 08.07.2018 09:39:31 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 206.189.8.249 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 08.07.2018 09:39:31 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 206.189.8.249 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 12.07.2018 23:46:00 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 206.189.8.249 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 12.07.2018 23:46:00 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 206.189.8.249 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 12.07.2018 23:46:00 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 206.189.8.249 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 12.07.2018 23:46:00 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 206.189.8.249 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 12.07.2018 23:46:00 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 206.189.8.249 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 31.07.2018 13:56:16 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 206.189.8.249 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 31.07.2018 13:56:16 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 206.189.8.249 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 31.07.2018 13:56:17 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 206.189.8.249 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 31.07.2018 13:56:17 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 206.189.8.249 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 31.07.2018 13:56:17 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host '93.170.136.50' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core/app/core/database.php -In line: 16 -Client IP: 206.189.8.249 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core/index.php', LINE: '30'; - -Server date & time: 24.10.2018 20:41:27 -Error code: 10001 -Error message: SQLSTATE[HY000] [1130] Host 'sv.new-combats.com' is not allowed to connect to this MariaDB server -In file: /home/newcom1/public_html/core1/app/core/database.php -In line: 16 -Client IP: 31.131.106.205 -GET Data: a:0:{} -POST Data: a:0:{} -Call Stack Trace: - FILE: '/home/newcom1/public_html/core1/app/core/database.php', LINE: '16'; - FILE: '/home/newcom1/public_html/core1/app/init.php', LINE: '10'; - FILE: '/home/newcom1/public_html/core1/index.php', LINE: '30'; - diff --git a/core1/static/fonts/ARDESTINE.ttf b/core1/static/fonts/ARDESTINE.ttf deleted file mode 100644 index 1fed8cf8d187e609a77bb4625b3466c4f1219a9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45870 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%0Dhi32!4S$=V~co1GhA(o34 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 TQeRzCz1W=CrCrhpx{3k-OF;b! diff --git a/core1/static/fonts/ARESSENCE.ttf b/core1/static/fonts/ARESSENCE.ttf deleted file mode 100644 index eb49bd006c03787dd84e4a10b75dd808fb1ab17f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73326 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
wBKGbYBY}3XdJ82I98)^OuAjQNVst1;!se~ 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 z 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 diff --git a/core1/static/fonts/CHILLER.ttf b/core1/static/fonts/CHILLER.ttf deleted file mode 100644 index 86f6e38c9e5c30d8a0cd235cd4fbb299570a41e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96457 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 diff --git a/core1/static/fonts/Edgar_da_cool_Regular.ttf b/core1/static/fonts/Edgar_da_cool_Regular.ttf deleted file mode 100644 index 782443ed65a43c40d43b97baa829c6959e9f08f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49620 zcmcenYnIxwBwLa-SjLhp+cKVwjTy{f zgN@-DLVO{Cz#|F4KoXM#o)KoakY@sqT$}+yh(ox)8@M5myyPYjxQSKo+xt|@dimXd z0_aJ#yH1@tb?Th8*Z8fqc5#H`IE#CT6S)0X9c)j(aWEfn965r$r*6FMhCBZ9_^!`$ zobUsV<7aNX@17DD;vG(T7yj^P@3`qU`RIH494D9XnY(W~|G?R&zW>#aaGd%K$9>|3 zb7yWi{rB#t{usx;fYCdL9rBlj$8an?OYPik_uT)@?|o|zUgLOv`uy!T-td+4|M~%( z|2^23yX}Vi@8F-6@5S~UjxW9ZhTG0OxiWS?$9?vlc>Qm8+;y|2^_Qa zj=Rp>ffJ44^Ynd@qxXh!^zK*JuXh%I$fbq9!5;4adbqbYeqQxneD1|3_#Eg!|8N3%l01QTME+SG zcg#H=Ka;=Yrn&!h`Kcb_xTcC7jIemVi&#Z!rH z(bw@a-6l^D{+fTq;JxHSoJhVo_(T4ti^q9$aEAOXCy~Fn_%ZUpz$bSOp5?avBtnEPd}Ms6AW7558+*OI3O-{bBX{15J}IM;7-3G&*(H|gie+qfz@F!&yM9p@5l zu#4;&ybs5In!AU~6KAl8+&%aK_u;|!`PATJxTYVFs|G(I`v!kOq`_}-KjyOFK81S` z`#v>%?$1UDaejJTmkr#*KXE%TSN9FR%YBG*ge{=w#&ywayL_Al{pfXFHt2Qn z<-tD?k5kFLoCW&-EBOLfTl z9sflf|7{%qH{4H#$EQlU;qmy$;0uG_AKW4a%Z^H-0Qj5K^MN3dkyZKBhUbpIP@Q( zx`B?%|KUyHO>chmvA5uhUirZN_>z0?x%;j=@3{Ttx1GQBmYdJrboR_?QIZu^(+$(I z9oO@NFp-Q>=}b14FBD7VO0`yRj*Pa(#wRA*ovG>W%xteeH@|6Nar4sh$`<-%uYc$b z9JhPdo_)|+`>(qCz@dZJTzllYqsLAhKXv^LFT(+kaN9X<$Iilb80!8@S=uVGH*h|9d!odLzd{pN{W&hST;R`4}N@JNgV6Jp2r|mj5KQrEvYp ziDx)6UMg+7dF^R(3NQF^>}Zv-C5)H0KP}X^A2?DyT6(PX*sjx$mA048-EjJ8vCf|H z#+k>Cwo6ZQ2anv0zlV;LpI$kdy|j7e=+R9$k4VphkKpjfj^Yfr49|dPwyXUj4wAD6oD5IZa+dC>maAo4=g~EMw>G}#;E`>(((=&>O7pQx<{+Ml7kH6BCD_70i*J*5 z%17kCRUTIlso&P_(svuW$(diae#LIt&pHL?A$P=m-ur-mm;cW}E%;pMhrRIiiDcrw z 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 j59VdYD%@vm{*-H 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 DiAaK( diff --git a/core1/static/fonts/JAMI_Regular.ttf b/core1/static/fonts/JAMI_Regular.ttf deleted file mode 100644 index 3e445b95193cfa923ba4d83327055540ce5a4fe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44880 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 TGbc_c^+lz?XoG}T(SiR3-P2hQ diff --git a/core1/static/fonts/Justy1_Regular.ttf b/core1/static/fonts/Justy1_Regular.ttf deleted file mode 100644 index afae1b548604cda725a1d4c62b9ed0475cf2ea21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36109 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

u3ST0l#0dwrD8-BP^m+V0 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

D(srHj$x; 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:dN$|;VYnXQgqJfTpu*mqJ@oA$_p{dqP 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 =woEhL)1?r$sA{l!|tGUDqof?|1TI1^}d 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 Fe*j&Gqj3NL diff --git a/core1/static/fonts/courbi.ttf b/core1/static/fonts/courbi.ttf deleted file mode 100644 index 68721211a483d9212832279f8f8a4146bf42a69b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 523957 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�*%O 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 Jr?qqn+e^Q&mY%{|x>jt#nR`Rg@o(DCv^?y+ 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 g4Kv#AU3zUMb@OAzIptF! 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å=?s0=-Z~H#o8w#)!2DAU#sS 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 T_M*yd1T2Vk>xohzW+DC!XT>ZM diff --git a/core1/static/image.php b/core1/static/image.php deleted file mode 100644 index fa48b675..00000000 --- a/core1/static/image.php +++ /dev/null @@ -1,57 +0,0 @@ - \ No newline at end of file diff --git a/core1/static/scripts/item.js b/core1/static/scripts/item.js deleted file mode 100644 index cbfb5ced..00000000 --- a/core1/static/scripts/item.js +++ /dev/null @@ -1,466 +0,0 @@ -// JavaScript Document -var itmjs = { - - city: { - 'capitalcity' : 'Capital City' - }, - - explode:function ( delimiter, string ) { // Split a string by string - // - // + original by: Kevin van Zonneveld (https://kevin.vanzonneveld.net) - // + improved by: kenneth - // + improved by: Kevin van Zonneveld (https://kevin.vanzonneveld.net) - - var emptyArray = { 0: '' }; - - if ( arguments.length != 2 - || typeof arguments[0] == 'undefined' - || typeof arguments[1] == 'undefined' ) - { - return null; - } - - if ( delimiter === '' - || delimiter === false - || delimiter === null ) - { - return false; - } - - if ( typeof delimiter == 'function' - || typeof delimiter == 'object' - || typeof string == 'function' - || typeof string == 'object' ) - { - return emptyArray; - } - - if ( delimiter === true ) { - delimiter = '1'; - } - - return string.toString().split ( delimiter.toString() ); - }, - - lookStats:function( data ) { - var r = { },de = []; - var di = this.explode('|',data); - var i = 0; - while( i != -1 ) { - if( di[i] != undefined ) { - de = this.explode('=',di[i]); - r[de[0]] = de[1]; - }else{ - i = -2; - } - i++; - } - return r; - }, - - st_tr:['sex','align','lvl','s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','s11','a1','a2','a3','a4','a5','a6','a7','mg1','mg2','mg3','mg4','mg5','mg6','mg7','mall','m2all','aall','rep','align_bs'], - st_all:['exp','align_bs','nopryh','puti','align','hpAll','mpAll','enAll','sex','lvl','s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','s11','m1','m2','m3','m4','m5','m6','m7','m8','m9','m14','m15','m16','m17','m18','m19','m20','a1','a2','a3','a4','a5','a6','a7','aall','mall','m2all','mg1','mg2','mg3','mg4','mg5','mg6','mg7','tj','lh','minAtack','maxAtack','m10','m11','m11a','pa1','pa2','pa3','pa4','pm1','pm2','pm3','pm4','pm5','pm6','pm7','za','zm','zma','za1','za2','za3','za4','zm1','zm2','zm3','zm4','zm5','zm6','zm7','magic_cast','pza','pzm','pza1','min_heal_proc','notravma','yron_min','yron_max','zaproc','zmproc','zm2proc','pza2','pza3','pza4','pzm1','pzm2','pzm3','pzm4','pzm5','pzm6','pzm7','speedhp','speedmp','tya1','tya2','tya3','tya4','tym1','mg2static_points','tym2','tym3','tym4','hpProc','mpProc','tym5','tym6','tym7','min_use_mp','pog','pog2','pog2p','pog2mp','maxves','bonusexp','speeden','yza','yzm','yzma','yza1','yza2','yza3','yza4','yzm1','yzm2','yzm3','yzm4','yzm5','yzm6','yzm7','rep'], - st_add:['exp','enemy_am1','hod_minmana','yhod','noshock_voda','yza','yzm','yzma','yza1','yza2','yza3','yza4','yzm1','yzm2','yzm3','yzm4','yzm5','yzm6','yzm7','notuse_last_pr','yrn_mg_first','antishock','nopryh','speed_dungeon','naemnik','mg2static_points','yrnhealmpprocmg3','nousepriem','notactic','seeAllEff','100proboi1','pog2','pog2p','magic_cast','min_heal_proc','no_yv1','no_krit1','no_krit2','no_contr1','no_contr2','no_bl1','no_pr1','no_yv2','no_bl2','no_pr2','silver','pza','pza1','pza2','pza3','pza4','pzm','pzm1','pzm2','pzm3','pzm4','pzm5','pzm6','pzm7','yron_min','yron_max','notravma','min_zonb','min_zona','nokrit','pog','min_use_mp','za1proc','za2proc','za3proc','za4proc','zaproc','zmproc','zm1proc','zm2proc','zm3proc','zm4proc','shopSale','s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','s11','aall','a1','a2','a3','a4','a5','a6','a7','m2all','mall','mg1','mg2','mg3','mg4','mg5','mg6','mg7','hpAll','hpVinos','mpVinos','mpAll','enAll','hpProc','mpProc','m1','m2','m3','m4','m5','m6','m7','m8','m9','m14','m15','m16','m17','m18','m19','m20','pa1','pa2','pa3','pa4','pm1','pm2','pm3','pm4','pm5','pm6','pm7','za','za1','za2','za3','za4','zma','zm','zm1','zm2','zm3','zm4','zm5','zm6','zm7','mib1','mab1','mib2','mab2','mib3','mab3','mib4','mab4','speedhp','speedmp','m10','m11','m11a','zona','zonb','maxves','minAtack','maxAtack','bonusexp','speeden'], - st_sv:['pza','pza1','pza2','pza3','pza4','pzm','pzm1','pzm2','pzm3','pzm4','pzm5','pzm6','pzm7','notravma','min_zonb','min_zona','nokrit','pog','min_use_mp','za1proc','za2proc','za3proc','za4proc','zaproc','zmproc','zm1proc','zm2proc','zm3proc','zm4proc','shopSale','s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','s11','aall','a1','a2','a3','a4','a5','a6','a7','m2all','mall','mg1','mg2','mg3','mg4','mg5','mg6','mg7','hpAll','mpAll','enAll','m1','m2','m3','m4','m5','m6','m7','m8','m9','m14','m15','m16','m17','m18','m19','m20','pa1','pa2','pa3','pa4','pm1','pm2','pm3','pm4','pm5','pm6','pm7','za','za1','za2','za3','za4','zma','zm','zm1','zm2','zm3','zm4','zm5','zm6','zm7','mib1','mab1','mib2','mab2','mib3','mab3','mib4','mab4','speedhp','speedmp','m10','m11','zona','zonb','maxves','minAtack','maxAtack','speeden'], - infoItem:function( data , i , module ) { - var r = '', itm = data[i]; - // - if( itm[6] != itm[12] && itm[12] > 1 ) { - itm[6] = itm[12]; - if( data['g'][itm['iid']] != undefined && itm[21] > 0 && data['g'][itm['iid']][itm[21]] > 0 ) { - itm[6] * data['g'][itm['iid']][itm[21]]; - } - } - var po = this.lookStats( itm[20] ); - r += '' + itm[1] + ''; - if( module == 'comission' || module == 'comission_pick' ) { - if( itm['x'] > 1 ) { - r += ' (x' + itm['x'] + ')'; - } - }else{ - if( itm[21] > 0 && data['g'][itm['iid']] != undefined && data['g'][itm['iid']][itm[21]] > 0 ) { - if( data['g'][itm['iid']][itm[21]] > 1 ) { - r += ' (x' + data['g'][itm['iid']][itm[21]] + ')'; - } - } - } - r += ''; - r += '    (Масса: ' + itm[10] + ')'; - if( po['art'] != undefined ) { - r += ' '; - } - if( itm[17] != '' ) { - r += ' '; - } - if( po['sudba'] != undefined ) { - if( po['sudba'] == 0 ) { - r += ' '; - }else if( po['sudba'] == 1 ) { - r += ' '; - }else{ - r += ' '; - } - } - r += '
'; - if( module == 'comission' || module == 'comission_pick' ) { - r += 'Цена: ' + itm['prc'] + ' кр. '; - r += '    (Гос.Цена. ' + (itm['x'] * itm[6]) + ' кр.)'; - //r += ' (Количество: 1)'; - r += '
' - }else{ - if( itm[6] > 0 ) { - r += 'Цена: ' + itm[6] + ' кр.'; - r += '
' - } - } - if( Math.ceil(itm[16]) > 0 ) { - r += 'Долговечность: ' + Math.ceil(itm[15]) + '/' + Math.ceil(itm[16]) + '
'; - } - // - var tr = ''; - - var i = 0; - while( i != -1 ) { - if( this.st_tr[i] != undefined ) { - if( po['tr_' + this.st_tr[i] ] != undefined && this.st_is[this.st_tr[i]][0] != undefined && this.st_is[this.st_tr[i]][0] != '' ) { - tr += '
• ' + this.st_is[this.st_tr[i]][0] + ': ' + po['tr_' + this.st_tr[i] ] + ''; - } - }else{ - i = -2; - } - i++; - } - - - if( tr != '' ) { - r += 'Требует минимальное:' + tr + '
'; - tr = ''; - } - // - var add = ''; - - var i = 0; - while( i != -1 ) { - if( this.st_add[i] != undefined ) { - if( po['add_' + this.st_add[i] ] != undefined && this.st_is[this.st_add[i]] != undefined && this.st_is[this.st_add[i]][0] != undefined && this.st_is[this.st_add[i]][0] != '' ) { - add += '
• ' + this.st_is[this.st_add[i]][0] + ': '; - if( po['add_' + this.st_add[i] ] > 0 ) { - add += '+'; - } - add += '' + po['add_' + this.st_add[i] ] + ''; - } - }else{ - i = -2; - } - i++; - } - if( po['add_minAtack'] != undefined ) { - add += '
• Минимальный урон: '; - if( po['add_minAtack'] > 0 ) { - add += '+'; - } - add += po['add_minAtack']; - } - if( po['add_maxAtack'] != undefined ) { - add += '
• Максимальный урон: '; - if( po['add_maxAtack'] > 0 ) { - add += '+'; - } - add += po['add_minAtack']; - } - if( po['add_mib1'] != undefined ) { - add += '
• Броня головы: ' + po['add_mib1'] + '-' + po['add_mab1'] + ''; - } - if( po['add_mib2'] != undefined ) { - add += '
• Броня корпуса: ' + po['add_mib2'] + '-' + po['add_mab2'] + ''; - } - if( po['add_mib3'] != undefined ) { - add += '
• Броня пояса: ' + po['add_mib3'] + '-' + po['add_mab3'] + ''; - } - if( po['add_mib4'] != undefined ) { - add += '
• Броня ног: ' + po['add_mib4'] + '-' + po['add_mab4'] + ''; - } - - if( add != '' ) { - r += 'Действует на:' + add + '
'; - add = ''; - } - // - var sv = ''; - - if( po['sv_yron_min'] != undefined ) { - sv += '
• Урон: ' + po['sv_yron_min'] + '-' + po['sv_yron_max'] + ''; - } - var i = 0; - while( i != -1 ) { - if( this.st_sv[i] != undefined ) { - if( po['sv_' + this.st_sv[i] ] != undefined && this.st_is[this.st_sv[i]][0] != undefined && this.st_is[this.st_sv[i]][0] != '' ) { - sv += '
• ' + this.st_is[this.st_sv[i]][0] + ': '; - if( po['sv_' + this.st_sv[i] ] > 0 ) { - sv += '+'; - } - sv += '' + po['sv_' + this.st_sv[i] ] + ''; - } - }else{ - i = -2; - } - i++; - } - if( itm[4] > 0 ) { - sv += '
• Второе оружие'; - } - if( itm[3] > 0 ) { - sv += '
• Двуручное оружие'; - } - if( po['zonb'] != undefined ) { - var pozonb = ''; - if( po['zonb'] > 0 ) { - var i = 0; - while( i < po['zonb'] ) { - pozonb += '+'; - i++; - } - }else if( po['zonb'] < 0 ) { - var i = 0; - while( i > po['zonb'] ) { - pozonb += '-'; - i--; - } - }else{ - po['zonb'] += '??'; - } - sv += '
• Зоны блокирования: ' + pozonb + ''; - } - - if( sv != '' ) { - r += 'Свойства предмета:' + sv + '
'; - sv = ''; - } - // - var yl = ''; - - if( yl != '' ) { - r += 'Улучшения предмета:' + yl + '
'; - yl = ''; - } - // - var os = ''; - var i = 1; - while( i <= 11 ) { - if( i < 5 ) { - if( po['tya' + i] != undefined ) { - os += '
• ' + this.st_is['tya' + i][0] + ': ' + this.tympar(po['tya' + i]); - } - }else{ - if( po['tym' + i] != undefined ) { - os += '
• ' + this.st_is['tym' + i][0] + ': ' + this.tympar(po['tym' + i]); - } - } - i++; - } - if( os != '' ) { - r += 'Особенности предмета:' + os + '
'; - os = ''; - } - // - var sd = ''; - - if( itm[9] != '' ) { - sd += 'Описание:
' + itm[9] + '
'; - } - - if( itm[19] != '' ) { - sd += 'Сделано в ' + this.city[itm[19]] + '
'; - } - // - if( po['nosale'] != undefined ) { - sd += 'Предмет нельзя продать
'; - } - if( po['noremont'] != undefined ) { - sd += 'Предмет не подлежит ремонту
'; - } - if( po['zazuby'] != undefined ) { - sd += 'Предмет куплен за зубы
'; - } - if( po['frompisher'] != undefined ) { - sd += 'Предмет из подземелья
'; - } - // - if( sd != '' ) { - r += '' + sd + ''; - sd = ''; - } - return r; - }, - - tympar:function(val) { - var r = ''; - if( val >= 100 ) { - r = 'Всегда'; - }else if( val > 89 ) { - r = 'Часты' - }else if( val > 69 ) { - r = 'Регулярны'; - }else if( val > 39 ) { - r = 'Временами'; - }else if( val > 19 ) { - r = 'Малы'; - }else if( val > 9 ) { - r = 'Редки'; - }else{ - r = 'Ничтожно редки'; - } - r += ' (' + val + '%)'; - return r; - }, - - st_is:{ - 'exp':['Получаемый опыт (%)'], - 'align_bs':['Служитель закона'], - 'nopryh':['Прямое поподание'], - 'puti':['Запрет перемещения'], - 'align':['Склонность'], - 'hpAll':['Уровень жизни (HP)'], - 'mpAll':['Уровень маны'], - 'enAll':['Уровень энергии'], - 'sex':['Пол'], - 'lvl':['Уровень'], - 's1':['Сила'], - 's2':['Ловкость'], - 's3':['Интуиция'], - 's4':['Выносливость'], - 's5':['Интеллект'], - 's6':['Мудрость'], - 's7':['Духовность'], - 's8':['Воля'], - 's9':['Свобода духа'], - 's10':['Божественность'], - 's11':['Энергия'], - 'm1':['Мф. критического удара (%)'], - 'm2':['Мф. против критического удара (%)'], - 'm3':['Мф. мощности крит. удара (%)'], - 'm4':['Мф. увертывания (%)'], - 'm5':['Мф. против увертывания (%)'], - 'm6':['Мф. контрудара (%)'], - 'm7':['Мф. парирования (%)'], - 'm8':['Мф. блока щитом (%)'], - 'm9':['Мф. удара сквозь броню (%)'], - 'm14':['Мф. абс. критического удара (%)'], - 'm15':['Мф. абс. увертывания (%)'], - 'm16':['Мф. абс. парирования (%)'], - 'm17':['Мф. абс. контрудара (%)'], - 'm18':['Мф. абс. блока щитом (%)'], - 'm19':['Мф. абс. магический промах (%)'], - 'm20':['Мф. удача (%)'], - 'a1':['Мастерство владения ножами, кинжалами'], - 'a2':['Мастерство владения топорами, секирами'], - 'a3':['Мастерство владения дубинами, молотами'], - 'a4':['Мастерство владения мечами'], - 'a5':['Мастерство владения магическими посохами'], - 'a6':['Мастерство владения луками'], - 'a7':['Мастерство владения арбалетами'], - 'aall':['Мастерство владения оружием'], - 'mall':['Мастерство владения магией стихий'], - 'm2all':['Мастерство владения магией'], - 'mg1':['Мастерство владения магией огня'], - 'mg2':['Мастерство владения магией воздуха'], - 'mg3':['Мастерство владения магией воды'], - 'mg4':['Мастерство владения магией земли'], - 'mg5':['Мастерство владения магией Света'], - 'mg6':['Мастерство владения магией Тьмы'], - 'mg7':['Мастерство владения серой магией'], - 'tj':['Тяжелая броня'], - 'lh':['Легкая броня'], - 'minAtack':['Минимальный урон'], - 'maxAtack':['Максимальный урон'], - 'm10':['Мф. мощности урона'], - 'm11':['Мф. мощности магии стихий'], - 'm11a':['Мф. мощности магии'], - 'pa1':['Мф. мощности колющего урона'], - 'pa2':['Мф. мощности рубящего урона'], - 'pa3':['Мф. мощности дробящий урона'], - 'pa4':['Мф. мощности режущий урона'], - 'pm1':['Мф. мощности магии огня'], - 'pm2':['Мф. мощности магии воздуха'], - 'pm3':['Мф. мощности магии воды'], - 'pm4':['Мф. мощности магии земли'], - 'pm5':['Мф. мощности магии Света'], - 'pm6':['Мф. мощности магии Тьмы'], - 'pm7':['Мф. мощности серой магии'], - 'za':['Защита от урона'], - 'zm':['Защита от магии стихий'], - 'zma':['Защита от магии'], - 'za1':['Защита от колющего урона'], - 'za2':['Защита от рубящего урона'], - 'za3':['Защита от дробящего урона'], - 'za4':['Защита от режущего урона'], - 'zm1':['Защита от магии огня'], - 'zm2':['Защита от магии воздуха'], - 'zm3':['Защита от магии воды'], - 'zm4':['Защита от магии земли'], - 'zm5':['Защита от магии Света'], - 'zm6':['Защита от магии Тьмы'], - 'zm7':['Защита от серой магии'], - 'magic_cast':['Дополнительный каст за ход'], - 'pza':['Понижение защиты от урона'], - 'pzm':['Понижение защиты от магии'], - 'pza1':['Понижение защиты от колющего урона'], - 'min_heal_proc':['Эффект лечения (%)'], - 'notravma':['Защита от травм'], - 'yron_min':['Минимальный урон'], - 'yron_max':['Максимальный урон'], - 'zaproc':['Защита от урона (%)'], - 'zmproc':['Защита от магии стихий (%)'], - 'zm2proc':['Защита от магии Воздуха (%)'], - 'pza2':['Понижение защиты от рубящего урона'], - 'pza3':['Понижение защиты от дробящего урона'], - 'pza4':['Понижение защиты от режущего урона'], - 'pzm1':['Понижение защиты от магии огня'], - 'pzm2':['Понижение защиты от магии воздуха'], - 'pzm3':['Понижение защиты от магии воды'], - 'pzm4':['Понижение защиты от магии земли'], - 'pzm5':['Понижение защиты от магии Света'], - 'pzm6':['Понижение защиты от магии Тьмы'], - 'pzm7':['Понижение защиты от серой магии'], - 'speedhp':['Регенерация здоровья (%)'], - 'speedmp':['Регенерация маны (%)'], - 'tya1':['Колющие атаки'], - 'tya2':['Рубящие атаки'], - 'tya3':['Дробящие атаки'], - 'tya4':['Режущие атаки'], - 'tym1':['Огненные атаки'], - 'mg2static_points':['Уровень заряда (Воздух)'], - 'tym2':['Электрические атаки'], - 'tym3':['Ледяные атаки'], - 'tym4':['Земляные атаки'], - 'hpProc':['Уровень жизни (%)'], - 'mpProc':['Уровень маны (%)'], - 'tym5':['Атаки Света'], - 'tym6':['Атаки Тьмы'], - 'tym7':['Серые атаки'], - 'min_use_mp':['Уменьшает расход маны'], - 'pog':['Поглощение урона'], - 'pog2':['Поглощение урона'], - 'pog2p':['Процент поглощение урона'], - 'pog2mp':['Цена поглощение урона'], - 'maxves':['Увеличивает рюкзак'], - 'bonusexp':['Увеличивает получаемый опыт'], - 'speeden':['Регенерация энергии (%)'], - 'yza':['Уязвимость физическому урона (%)'], - 'yzm':['Уязвимость магии стихий (%)'], - 'yzma':['Уязвимость магии (%)'], - 'yza1':['Уязвимость колющему урона (%)'], - 'yza2':['Уязвимость рубящему урона (%)'], - 'yza3':['Уязвимость дробящему урона (%)'], - 'yza4':['Уязвимость режущему урона (%)'], - 'yzm1':['Уязвимость магии огня (%)'], - 'yzm2':['Уязвимость магии воздуха (%)'], - 'yzm3':['Уязвимость магии воды (%)'], - 'yzm4':['Уязвимость магии земли (%)'], - 'yzm5':['Уязвимость магии (%)'], - 'yzm6':['Уязвимость магии (%)'], - 'yzm7':['Уязвимость магии (%)'], - 'rep':['Репутация Рыцаря'] - } - -}; \ No newline at end of file diff --git a/core1/static/scripts/location.line.js b/core1/static/scripts/location.line.js deleted file mode 100644 index b7a38840..00000000 --- a/core1/static/scripts/location.line.js +++ /dev/null @@ -1,84 +0,0 @@ -// JavaScript Document -var locline = { - - lineRefleshStart:function() { - $('#line_rel1').hide(); - $('#line_rel2').show(); - this.finish = 0; - }, - lineRefleshFinish:function() { - $('#line_rel2').hide(); - $('#line_rel1').show(); - this.finish = 1; - }, - finish:1, - line:function( a , b , c , reflesh ) { - var r = ''; - this.a = a; - this.b = b; - this.c = c; - var d1 = '', d2 = 'none'; - if( this.finish == 0 ) { - d2 = ''; - d1 = 'none'; - } - r += '' + - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - '
' + - ''+ - ''+ - '
'; - return r; - }, - timer:null, - b:0, - a:0, - c:0, - lineTimer:function() { - if(document.getElementById('MoveLine')!=undefined) { - var prc = Math.ceil( (this.a - this.c) ); - if( prc < 0 ) { - prc = 0; - } - $('#MoveLine').animate({'width':'63px'}, prc * 1000 , "linear" ); - } - return ''; - }, - room:function( data ) { - var r = ''; - /* - - - - - -
Центральная Площадь
- */ - r += ''; - var i = 0; - while( i != - 1 ) { - if( data[i] != undefined ) { - r += ''; - r += ''; - }else{ - i = -2; - } - i++; - } - r += '
' + data[i][2] + '
'; - return r; - } - -}; \ No newline at end of file diff --git a/core1/static/scripts/location/auction.js b/core1/static/scripts/location/auction.js deleted file mode 100644 index c02c094e..00000000 --- a/core1/static/scripts/location/auction.js +++ /dev/null @@ -1,555 +0,0 @@ -// JavaScript Document -var locjs = { - - data:{ }, - - type:0, //0 - просмотр разделов , 1 - просмотр разделов и конкретного предмета , 2 - просмотр своих вещей (сдача) , 3 - просмотр своих вещей (забрать) - - baseconnect:false, - - start:function() { - this.getMenuHtml(); - this.getTopMenu(); - this.getDataItems(1); - // - locline.lineRefleshFinish(); - }, - - reflesh:function() { - locline.lineRefleshFinish(); - }, - - option_error:{ - - }, - - page_item:1, - option_item:1, - getDataItems:function( id ) { - this.option_item = id; - if( this.baseconnect == false ) { - locline.lineRefleshStart(); - this.baseconnect = true; - $.getJSON('/core/auction/', { - 'option_item':id, - 'page':locjs.page_item, - },function(data) { - locjs.baseconnect = false; - // - locjs.data.user.massaNow = parseFloat(data.massaNow).toFixed(2); - locjs.data.user.massaMax = parseFloat(data.massaMax).toFixed(2); - locjs.data.user.money = parseFloat(data.money).toFixed(2); - // - if( data.toppages != undefined && data.toppages > 0 ) { - var tphtml = ''; - var i = 1; - while( i <= data.toppages ) { - if( data.page == i ) { - tphtml = tphtml + '' + i + ' '; - }else{ - tphtml = tphtml + '' + i + ' '; - } - i++; - } - $('#toppages_line').show(); - $('#toppages').html( tphtml ); - }else{ - $('#toppages_line').hide(); - $('#toppages').html( '--' ); - } - // - if( data.item_data != undefined && data.item_data != 0 ) { - locjs.getItemsAuction( id , data.item_data ); - }else{ - locjs.getItemsAuction( id , {'x':0} ); - } - // - $('#u_money').html( locjs.data.user.money + ' кр.' ); - $('#u_massa').html( locjs.data.user.massaNow + '/' + locjs.data.user.massaMax ); - // - locline.lineRefleshFinish(); - // - }); - } - }, - - console_sale:function(id, txt, kr) { - var s = prompt("Сделать ставку на \""+txt+"\". Укажите цену:", kr); - if ((s != null) && (s != '') && (s >= 0)) { - locjs.user_buy( id, kr ); - } - }, - - buyItemsAuctionError:{ - 0:'', - 1:'Предмет не найден, возможно торги уже закончились', - 2:'Вы уже сделали ставку на этот предмет, ожидайте пока её перебьет кто-то другой', - 3:'Минимальная ставка 101% от текущей ставки', - 4:'Максимальная ставка 200% от текущей ставки', - 5:'У вас недостаточно денег для ставки', - 6:'Вы не можете участвовать в ставках на свои предметы' - }, - user_buy:function( id, kr ) { - // - //this.option_item = id; - if( this.baseconnect == false ) { - locline.lineRefleshStart(); - this.baseconnect = true; - $.getJSON('/core/auction/', { - 'buy_item':id, - 'kr':kr, - 'page':locjs.page_item, - },function(data) { - locjs.baseconnect = false; - // - if( data.error != undefined ) { - if( locjs.buyItemsAuctionError[ data.error ] != undefined ) { - $('#error').html( locjs.buyItemsAuctionError[ data.error ] ); - }else{ - $('#error').html( 'Неизвестная ошибка. Код #'+data.error+'' ); - } - $('#error').show(); - $("body").animate({"scrollTop":0},0); - }else{ - if( data.info != undefined ) { - alert('Вы успешно сделали ставку!'); - } - $('#error').html(''); - $('#error').hide(); - } - // - locline.lineRefleshFinish(); - // - }); - } - // - }, - - getItemsAuction:function( id , data ) { - var r = ''; - if( id == 5 ) { - r += ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''; - //предмет - if( data.x != undefined && data.x > 0 ) { - var i = 0; - while( i < data.x ) { - if( data[i] != undefined ) { - var itm_data = itmjs.lookStats( data[i][20] ); - if( itm_data['tr_lvl'] == undefined ) { - itm_data['tr_lvl'] = 0; - } - if( data[i].buy == '' ) { - data[i].buy = 'Нет покупателя'; - } - if( data[i].user_ow == '' ) { - data[i].user_ow = 'Неизвестно'; - } - if( data[i].time == '0 сек.' ) { - data[i].time = 'Торг закрыт.'; - } - r += ''+ - ''+ - ''+ - //''+ - ''+ - //''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''; - // - } - i++; - } - } - r += '
Предмет  УровеньВладелецСтавкаПокупательОсталось времени

' + data[i].name + '   (Масса: ' + data[i].massa + ')
Долговечность: ' + Math.ceil(data[i].iznosNOW) + '/' + Math.ceil(data[i].iznosMAX) + '
--' + itm_data['tr_lvl'] + '' + data[i].user_ow + '' + data[i].prc + ' кр.' + data[i].buy + '' + data[i].time + '
'; - if( data.x == undefined || data.x < 1 ) { - r += '

Ничего не найдено
'; - } - }else if( id == 1 ) { - r += ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''; - //предмет - if( data.x != undefined && data.x > 0 ) { - var i = 0; - while( i < data.x ) { - if( data[i] != undefined ) { - var itm_data = itmjs.lookStats( data[i][20] ); - if( itm_data['tr_lvl'] == undefined ) { - itm_data['tr_lvl'] = 0; - } - if( data[i].buy == '' ) { - data[i].buy = 'Нет покупателя'; - } - if( data[i].user_ow == '' ) { - data[i].user_ow = 'Неизвестно'; - } - if( data[i].time == '0 сек.' ) { - data[i].time = 'Торг закрыт.'; - } - r += ''+ - ''+ - ''+ - //''+ - ''+ - //''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''; - // - } - i++; - } - } - r += '
Предмет  УровеньВладелецСтавкаПокупательОсталось времени

' + data[i].name + '   (Масса: ' + data[i].massa + ')
Долговечность: ' + Math.ceil(data[i].iznosNOW) + '/' + Math.ceil(data[i].iznosMAX) + '
--' + itm_data['tr_lvl'] + '' + data[i].user_ow + '' + data[i].prc + ' кр.' + data[i].buy + '' + data[i].time + '
'; - if( data.x == undefined || data.x < 1 ) { - r += '
Ничего не найдено
'; - } - }else if( id == 2 ) { - r += ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''; - //предмет - if( data.x != undefined && data.x > 0 ) { - var i = 0; - while( i < data.x ) { - if( data[i] != undefined ) { - var itm_data = itmjs.lookStats( data[i][20] ); - if( itm_data['tr_lvl'] == undefined ) { - itm_data['tr_lvl'] = 0; - } - if( data[i].buy == '' ) { - data[i].buy = 'Нет покупателя'; - } - if( data[i].user_ow == '' ) { - data[i].user_ow = 'Неизвестно'; - } - if( data[i].time == '0 сек.' ) { - data[i].time = 'Торг закрыт.'; - } - r += ''+ - ''+ - //''+ - ''+ - //''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''; - // - } - i++; - } - } - r += '
Предмет УровеньВладелецСтавкаПокупательОсталось времени

' + data[i].name + '   (Масса: ' + data[i].massa + ')
Долговечность: ' + Math.ceil(data[i].iznosNOW) + '/' + Math.ceil(data[i].iznosMAX) + '
--' + itm_data['tr_lvl'] + '' + data[i].user_ow + '' + data[i].prc + ' кр.' + data[i].buy + '' + data[i].time + '
'; - if( data.x == undefined || data.x < 1 ) { - r += '
Ничего не найдено
'; - } - }else if( id == 3 ) { - r += ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''; - //предмет - if( data.x != undefined && data.x > 0 ) { - var i = 0; - while( i < data.x ) { - if( data[i] != undefined ) { - var itm_data = itmjs.lookStats( data[i][20] ); - if( itm_data['tr_lvl'] == undefined ) { - itm_data['tr_lvl'] = 0; - } - if( data[i].buy == '' ) { - data[i].buy = 'Нет покупателя'; - } - if( data[i].user_ow == '' ) { - data[i].user_ow = 'Неизвестно'; - } - if( data[i].time == '0 сек.' ) { - data[i].time = 'Торг закрыт.'; - } - r += ''+ - ''+ - //''+ - ''+ - //''+ - ''+ - ''+ - ''+ - ''+ - ''; - // - } - i++; - } - } - r += '
Предмет УровеньСтавкаПокупательОсталось времени

' + data[i].name + '   (Масса: ' + data[i].massa + ')
Долговечность: ' + Math.ceil(data[i].iznosNOW) + '/' + Math.ceil(data[i].iznosMAX) + '
--' + itm_data['tr_lvl'] + '' + data[i].prc + ' кр.' + data[i].buy + '' + data[i].time + '
'; - if( data.x == undefined || data.x < 1 ) { - r += '
Ничего не найдено
'; - } - }else if( id == 4 ) { - if( locjs.data.user.silver >= 4 ) { - prcauc = 2.5; - }else{ - prcauc = 10; - } - r += ''+ - ''+ - ''+ - ''+ - ''+ - ''; - //предмет - if( data.x != undefined && data.x > 0 ) { - var i = 0; - while( i < data.x ) { - if( data[i] != undefined ) { - var itm_data = itmjs.lookStats( data[i][20] ); - if( itm_data['tr_lvl'] == undefined ) { - itm_data['tr_lvl'] = 0; - } - r += ''+ - ''+ - //''+ - //''+ - ''+ - ''+ - ''+ - ''; - // - } - i++; - } - } - r += '
Предмет УровеньНачальная ставка
(Выставляется на 24 часа. +' + prcauc + '% комиссия)

' + data[i].name + '   (Масса: ' + data[i].massa + ')
Долговечность: ' + Math.ceil(data[i].iznosNOW) + '/' + Math.ceil(data[i].iznosMAX) + '
' + itmjs.infoItem( data , i , 'auction_inventory' ) + '' + itm_data['tr_lvl'] + ' кр.
'; - if( data.x == undefined || data.x < 1 ) { - r += '
Ничего не найдено
'; - } - } - - $('#auction_content').html( r ); - }, - - addItemsAuctionError:{ - 0:'Все прошло успешно', - 1:'Подходящий предмет не найден у вас в инвентаре', - 2:'Нельзя продать предмет дешевле 1 кр.', - 3:'Нельзя продать предмет дороже 1000000 кр.', - 4:'У вас недостаточно кр. для выставления предмета. Требуется 10% от вашей ставки.' - }, - addItemsAuction:function(id) { - // - this.option_item = id; - if( this.baseconnect == false ) { - locline.lineRefleshStart(); - this.baseconnect = true; - $.getJSON('/core/auction/', { - 'add_item':id, - 'price':$('#itm_add' + id + '_price').val(), - 'page':locjs.page_item, - },function(data) { - locjs.baseconnect = false; - // - if( data.error != undefined ) { - if( locjs.addItemsAuctionError[ data.error ] != undefined ) { - $('#error').html( locjs.addItemsAuctionError[ data.error ] ); - }else{ - $('#error').html( 'Неизвестная ошибка. Код #'+data.error+'' ); - } - $('#error').show(); - $("body").animate({"scrollTop":0},0); - }else{ - if( data.info != undefined ) { - if(data.info.x > 0) { - data.info.itm_name = data.info.itm_name + ' (x' + (1+data.info.x) + ')'; - } - //$("body").animate({"scrollTop":0},0); - //$('#error').html( 'Вы успешно выставили предмет "' + data.info.itm_name + '" на продажу за ' + data.info.price + ' кр.' ); - //$('#error').show(); - $('#itm_auction' + data.info.id).hide(); - } - $('#error').html(''); - $('#error').hide(); - } - // - locline.lineRefleshFinish(); - // - }); - } - // - }, - - getTopMenu:function() { - var r = ''; - - r += ''; - // - r += ''; - r += ''; - // - r += ''; - // - r += ''; - // - r += '' - // - r += '
Филиал Аукциона (тестовая версия)Страницы: --  
' - r += ''; - r += ''; - r += ''; - r += ''; - r += ''; - r += ''; - r += '
Залы:
Имя: '; - r += ''; - r += ', уровень - '; - r += '
'; - // - $('#auction_title').html( r ); - - // - // - // - }, - - getMenuHtml:function() { - var r = ''; - r += '
' + locline.line( this.data.user.timeGo, this.data.user.timeGoL , this.data.user.timeNow , 'locjs.reflesh();' ) + - '' + locline.room( this.data.locations ) + '' - + '
'; - // - r += '
У вас в наличии: ' + this.data.user.money + ' кр.
Масса: ' + parseInt(this.data.user.massaNow).toFixed(2) + '/' + parseInt(this.data.user.massaMax).toFixed(2) + '
'; - // - $('#auction_menu').html( r ); - locline.lineTimer(); - }, - - selectMenu:function( id ) { - if( $('#stylemenu' + id).attr('id') == 'stylemenu' + id ) { - this.getDataItems( id ); - var i = 1 - while( i != - 1 ) { - if( $('#stylemenu' + i).attr('id') == 'stylemenu' + i ) { - // - $('#stylemenu' + i).removeClass('unasel'); - $('#stylemenu' + i).removeClass('asel'); - // - if( $('#stylemenu' + i).attr('id') == 'stylemenu' + id ) { - $('#stylemenu' + i).addClass('asel'); - }else{ - $('#stylemenu' + i).addClass('unasel'); - } - // - }else{ - i = -2; - } - i++; - } - }else{ - alert('Раздел не найден'); - } - }, - - error:function( text ) { - $('#error').html( text ); - if( text == '' ) { - $('#error').hide(); - }else{ - $('#error').show(); - } - }, - - replaceslashhint:function(data) { - data = this.str_replace('"','',data); - data = this.str_replace("'","",data); - return data; - }, - - str_replace:function(search, replace, subject, count) { - var i = 0, - j = 0, - temp = '', - repl = '', - sl = 0, - fl = 0, - f = [].concat(search), - r = [].concat(replace), - s = subject, - ra = Object.prototype.toString.call(r) === '[object Array]', - sa = Object.prototype.toString.call(s) === '[object Array]'; - s = [].concat(s); - if (count) { - this.window[count] = 0; - } - - for (i = 0, sl = s.length; i < sl; i++) { - if (s[i] === '') { - continue; - } - for (j = 0, fl = f.length; j < fl; j++) { - temp = s[i] + ''; - repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0]; - s[i] = (temp) - .split(f[j]) - .join(repl); - if (count && s[i] !== temp) { - this.window[count] += (temp.length - s[i].length) / f[j].length; - } - } - } - return sa ? s : s[0]; - } -}; \ No newline at end of file diff --git a/core1/static/scripts/location/comission.js b/core1/static/scripts/location/comission.js deleted file mode 100644 index a7d3fabe..00000000 --- a/core1/static/scripts/location/comission.js +++ /dev/null @@ -1,463 +0,0 @@ -// JavaScript Document -var locjs = { - - data:{ }, - - type:0, //0 - просмотр разделов , 1 - просмотр разделов и конкретного предмета , 2 - просмотр своих вещей (сдача) , 3 - просмотр своих вещей (забрать) - - start:function() { - - //this.htmlTitle(); - //this.htmlMenu(); - //this.htmlContent(); - - this.selectPoint(0,false); - //this.error('Ошибка подключения к базе.'); - }, - - reflech:function() { - if( this.lookIt == 0 ) { - this.selectPoint( this.selectPointLast , false ); - }else{ - this.getBaseContent(); - } - }, - - refleshData:function( data ) { - if( data.money != undefined ) { - this.data.user.money = data.money; - this.data.user.massaNow = data.massaNow; - this.data.user.massaMax = data.massaMax; - // - this.data.user.timeGo = data.timeGo; - this.data.user.timeGoL = data.timeGoL; - this.data.user.timeNow = data.timeNow; - this.htmlMenu(); - } - locline.lineRefleshFinish(); - }, - - htmlMenu:function() { - var r = ''; - r += '
'; - // - r += '
' + locline.line( this.data.user.timeGo, this.data.user.timeGoL , this.data.user.timeNow , 'locjs.reflech();' ) + - '' + locline.room( this.data.locations ) + '' - + '
'; - // - r += ''; - r += 'Масса: ' + this.data.user.massaNow + '/' + this.data.user.massaMax + '
'; - r += 'У вас в наличии: ' + this.data.user.money + ' кр.

'; - r += '
'; - - r += '
'; - - if( this.data.user.level >= 4 ) { - r += ''; - r += ' '; - } - - r += '
Отделы магазина
'; - r += '
'; - - //Показываем меню - for (var i = 0; i < this.data.menu.length; i++) { - r += '
'; - if( this.data.menu[i][2] == 1 ) { - r += '     '; - } - r += '' + this.data.menu[i][0] + ''; - r += '
'; - } - - r += '

Внимание! Правила пользования комиссионным магазином:
'; - r += '• С персонажа взымается налог в виде 1 кр. при передачи вещи в магазин.'; - r += '
• Налог не возвращается, если вещь не будет продана в течении двух недель (Сама вещь продается в государственный магазин за 50% с учетом износа предмета).'; - r += '
• Если вещь продается, владельцу перечисляются деньги на почту за вычетом комиссионных 10%. Налог в 1 кр. возвращается.'; - r += '
• Администрация не несет ответственности за утрату вещей в случаи форс маожрных ситуаций.'; - //r += '
• Если вы нашли баг или недочет, сообщите об этом здесь Баги в комиссионном магазине.'; - r += '


'; - - return $('#comission_menu').html( r ) + locline.lineTimer() - //document.getElementById('comission_menu').innerHTML = r; - //return 'true'; - }, - - selectPointLast:0, - selectPoint:function( p , clearError ) { - if( clearError == true ) { - this.error(''); - } - this.baseconnect = true; - this.lookIt = 0; - this.type = 0; - $('#comission_pid' + this.selectPointLast + '').removeClass('comission_unhide'); - this.selectPointLast = p; - //Выбираем раздел предметов - //$('#comission_pick').removeClass('btnnew'); - //$('#comission_give').removeClass('btnnew'); - //$('#comission_pick').removeClass('btnnew2'); - //$('#comission_give').removeClass('btnnew2'); - if( p == 'give' ) { - //Сдаем вещи - this.data.base = this.getBaseContent(); - //$('#comission_pick').addClass('btnnew'); - //$('#comission_give').addClass('btnnew2'); - this.htmlTitle(); - this.htmlContent(); - }else if( p == 'pick' ) { - //Забираем - this.data.base = this.getBaseContent(); - //$('#comission_give').addClass('btnnew'); - //$('#comission_pick').addClass('btnnew2'); - this.htmlTitle(); - this.htmlContent(); - }else{ - // - this.data.base = this.getBaseContent(); - //$('#comission_give').addClass('btnnew'); - //$('#comission_pick').addClass('btnnew'); - // - this.htmlTitle(); - //this.htmlContent(); - //this.htmlMenu(); - // - $('#comission_pid' + this.selectPointLast + '').addClass('comission_unhide'); - $("body").animate({"scrollTop":0},0); - } - }, - - htmlTitle:function() { - var r = ''; - if( this.selectPointLast == 'give' ) { - r += 'Сдача вещей в комиссионный магазин'; - }else if( this.selectPointLast == 'pick' ) { - r += 'Забрать свои вещи из комиссионного магазина'; - }else{ - r += this.data.menu[this.selectPointLast][0]; - if( r == '' ) { - r += 'Отдел магазина закрыт'; - }else{ - r = r.charAt(0).toUpperCase() + r.substr(1); - r = 'Раздел: "' + r + '"'; - } - } - return $('#comission_title').html( r ); - }, - - baseconnect:false, - getBaseContent:function() { - //if( this.baseconnect == false ) { - locline.lineRefleshStart(); - $.getJSON('/core/comission/', { - 'point':this.selectPointLast, 'type':this.type, 'lookIt':this.lookIt - },function(data) { - locjs.refleshData( data ); - locjs.baseconnect = false; - locjs.data.base = data; - locjs.htmlContent(); - }); - //} - }, - - lookIt:0, - lookItems:function( p ) { - this.lookIt = p; - this.type = 1; - this.getBaseContent(); - }, - - buy_error:[ '','Предмет не найден, возможно его кто-то уже купил','У вас недостаточно денег','Хаосникам нельзя пользоваться комиссионным магазином','Персонажам ниже 1-го уровня запрещено пользоваться комиссионным магазином' ], - buy:function( cid , item_id ) { - if( this.baseconnect == false ) { - locline.lineRefleshStart(); - this.baseconnect = true; - $.getJSON('/core/comission/', { - 'buy_item':cid, 'items_id':item_id - },function(data) { - locjs.refleshData( data ); - locjs.baseconnect = false; - if( data.buy_item != undefined && (data.buy_error == undefined || data.buy_error == 0) ) { - $("body").animate({"scrollTop":0},0); - $('#itm_com_' + data.buy_item).remove(); - locjs.data.user.money -= parseFloat(data.buy_price).toFixed(2); - $('#u_money').html( locjs.data.user.money.toFixed(2) + ' кр.' ); - locjs.data.user.massaNow += parseFloat(data.buy_massa).toFixed(2); - $('#u_massa').html( locjs.data.user.massaNow + '/' + locjs.data.user.massaMax ); - locjs.error( 'Вы успешно купили предмет "' + data.buy_name + '" за ' + data.buy_price + ' кр.' ); - if( data.buy_last < 1 ) { - locjs.selectPoint( locjs.selectPointLast , false ); - } - }else if( locjs.buy_error[data.buy_error] != undefined ) { - $("body").animate({"scrollTop":0},0); - locjs.error( '' + locjs.buy_error[data.buy_error] ); - } - }); - } - }, - - newprice_error:[ - '','Предмет не найден в магазине','Цена не может быть ниже 1 кр.','Для данного предмета это слишком большая стоимость...','Для данного предмета это слишком маленькая стоимость, выгоднее отремонтировать предмет и сдать его в государственный магазин...' - ], - newprice:function( id , price ) { - if( this.baseconnect == false ) { - locline.lineRefleshStart(); - this.baseconnect = true; - $.getJSON('/core/comission/', { - 'newprice_item':id , 'newprice_price':price - },function(data) { - locjs.refleshData( data ); - locjs.baseconnect = false; - if( data.newprice_item != undefined && (data.newprice_error == undefined || data.newprice_error == 0) ) { - $("body").animate({"scrollTop":0},0); - locjs.data.user.money -= parseFloat(data.newprice_price_comission).toFixed(2); - $('#u_money').html( locjs.data.user.money.toFixed(2) + ' кр.' ); - locjs.error( 'Вы обновили цену "' + data.newprice_name + '" x' + data.newprice_x + ' шт. на ' + data.newprice_price + ' кр. за ' + data.newprice_price_comission + ' кр.' ); - }else if( locjs.newprice_error[data.newprice_error] != undefined ) { - $("body").animate({"scrollTop":0},0); - if( data.newprice_error_min != undefined && data.newprice_error_min != '' ) { - locjs.error( '' + locjs.newprice_error[data.newprice_error] + ' (Минимальная цена: ' + data.newprice_error_min + ' кр.)' ); - }else{ - locjs.error( '' + locjs.newprice_error[data.newprice_error] ); - } - } - }); - } - }, - - give_error:['','Предмет не найден в инвентаре','Недостаточно денег для уплаты комиссии','Хаосникам нельзя пользоваться комиссионным магазином','Персонажам ниже 4-го уровня запрещено выставлять вещи в комиссионном магазине', - 'Цена не может быть больше 1 000 000 кр.','Цена не может быть ниже 1 кр.','Для данного предмета это слишком большая стоимость...','Для данного предмета это слишком маленькая стоимость, выгоднее отремонтировать предмет и сдать его в государственный магазин...' - ,'Комиссионный магазин не принял ваши вещи' - ], - give:function( id , price ) { - if( this.baseconnect == false ) { - locline.lineRefleshStart(); - this.baseconnect = true; - $.getJSON('/core/comission/', { - 'give_item':id , 'give_price':price - },function(data) { - locjs.refleshData( data ); - locjs.baseconnect = false; - if( data.give_item != undefined && (data.give_error == undefined || data.give_error == 0) ) { - $("body").animate({"scrollTop":0},0); - $('#itm_usr_' + data.give_item).remove(); - locjs.data.user.money -= parseFloat(data.give_price_comission).toFixed(2); - $('#u_money').html( locjs.data.user.money.toFixed(2) + ' кр.' ); - locjs.data.user.massaNow -= parseFloat(data.give_massa).toFixed(2); - $('#u_massa').html( locjs.data.user.massaNow + '/' + locjs.data.user.massaMax ); - locjs.error( 'Вы сдали в магазин "' + data.give_name + '" x' + data.give_x + ' шт. на сумму ' + data.give_price + ' кр. за ' + data.give_price_comission + ' кр.' ); - if( data.give_last < 1 ) { - alert('Предметы в инвентаре закончились :)'); - } - }else if( locjs.give_error[data.give_error] != undefined ) { - $("body").animate({"scrollTop":0},0); - if( data.give_error_min != undefined && data.give_error_min != '' ) { - locjs.error( '' + locjs.give_error[data.give_error] + ' (Минимальная цена: ' + data.give_error_min + ' кр.)' ); - }else{ - locjs.error( '' + locjs.give_error[data.give_error] ); - } - } - }); - } - }, - pick_error:[ '', - 'Предмет не найден в магазине' - ], - pick:function( id ) { - if( this.baseconnect == false ) { - locline.lineRefleshStart(); - this.baseconnect = true; - $.getJSON('/core/comission/', { - 'pick_item':id - },function(data) { - locjs.refleshData( data ); - locjs.baseconnect = false; - if( data.pick_item != undefined && (data.pick_error == undefined || data.pick_error == 0) ) { - $("body").animate({"scrollTop":0},0); - $('#itm_usr_' + data.pick_uiid).remove(); - locjs.data.user.massaNow += parseFloat(data.pick_massa).toFixed(2); - $('#u_massa').html( locjs.data.user.massaNow + '/' + locjs.data.user.massaMax ); - locjs.error( 'Вы забрали из магазина "' + data.pick_name + '" x' + data.pick_x + ' шт.' ); - if( data.pick_last < 1 ) { - alert('Предметы в магазине закончились :)'); - } - }else if( locjs.pick_error[data.pick_error] != undefined ) { - $("body").animate({"scrollTop":0},0); - locjs.error( '' + locjs.pick_error[data.pick_error] ); - } - }); - } - }, - - - console_sale:function(name, txt, kr) { - var s = prompt("Сдать в магазин \""+txt+"\" (налог 1.00 кр.). Укажите цену:", kr); - if ((s != null) && (s != '') && (s >= 0)) { - locjs.give( name , s ); - } - }, - - console_change:function(name, txt, id, category, kr) { - var s = prompt("Сменить цену для предмета \""+txt+"\". Укажите новую цену:", kr); - if ((s != null) && (s != '') && (s>=1)) { - locjs.newprice( name , s ); - } - }, - - htmlContent:function() { - var r = ''; - - if( this.data.base != undefined ) { - // - //this.error( '
type: ' + this.type + ' , option: ' + this.selectPointLast + '
' ); - // - if( this.selectPointLast == 'give' ) { - - var i = 0, color = 'c8c8c8', left = '', right = ''; - r += ''; - while( i < this.data.base.it.i ) { - left = ''; right = ''; if( color == 'c8c8c8' ) { color = 'd4d4d4'; }else{ color = 'c8c8c8'; } - left += '
'; - if( this.data.base.it[i][22] > 0 ) { - //left += '(id' + this.data.base.it[i][22] + ')

'; - } - // - if( this.data.base.it[i][6] != this.data.base.it[i][12] && this.data.base.it[i][12] > 1 ) { - this.data.base.it[i][6] = this.data.base.it[i][12]; - } - if( this.data.base.it[i][21] > 0 && this.data.base.it['g'][this.data.base.it[i]['iid']][this.data.base.it[i][21]] > 0 ) { - this.data.base.it[i][6] = this.data.base.it[i][6] * parseFloat(this.data.base.it['g'][this.data.base.it[i]['iid']][this.data.base.it[i][21]]).toFixed(2); - this.data.base.it[i][6] = this.data.base.it[i][6].toFixed(2); - } - // - left += 'Сдать в магазин'; - // - right += itmjs.infoItem( this.data.base.it , i , 'comission_give' ); - // - r += ''; - r += ''; - i++; - } - r += '
' + left + '' + right + '
'; - - }else if( this.selectPointLast == 'pick' ) { - - var i = 0, color = 'c8c8c8', left = '', right = ''; - r += ''; - while( i < this.data.base.it.i ) { - left = ''; right = ''; if( color == 'c8c8c8' ) { color = 'd4d4d4'; }else{ color = 'c8c8c8'; } - left += '
'; - if( this.data.base.it[i][22] > 0 ) { - //left += '(id' + this.data.base.it[i][22] + ')

'; - } - // - left += 'Забрать предмет
'; - left += 'Сменить цену за 0.10 кр.'; - left += '

До ' + this.data.base.it[i]['timeend'] + '
'; - // - right += itmjs.infoItem( this.data.base.it , i , 'comission_pick' ); - // - r += ''; - r += ''; - i++; - } - r += '
' + left + '' + right + '
'; - - }else{ - - if( this.data.base.type == 1 ) { - - var i = 0, color = 'c8c8c8', left = '', right = ''; - r += ''; - while( i < this.data.base.it.i ) { - left = ''; right = ''; if( color == 'c8c8c8' ) { color = 'd4d4d4'; }else{ color = 'c8c8c8'; } - left += '
'; - left += 'купить'; - // - right += itmjs.infoItem( this.data.base.it , i , 'comission' ); - // - r += ''; - r += ''; - i++; - } - r += '
' + left + '' + right + '
'; - - }else if( this.data.base.type == 0 ) { - - var i = 0, color = 'c8c8c8', left = '', right = ''; - r += ''; - while( i < this.data.base.it.i ) { - left = ''; right = ''; if( color == 'c8c8c8' ) { color = 'd4d4d4'; }else{ color = 'c8c8c8'; } - left += '
подробнее'; - // - right += '' + this.data.base.it[i][4] + ''; - right += '    (Масса: ' + this.data.base.it[i][6] + ')
'; - right += 'Цена: ' + this.data.base.it[i][7][0] + ' - ' + this.data.base.it[i][7][1] + ' кр.'; - right += '   (Количество: ' + this.data.base.it[i][8] + ')
'; - right += 'Долговечность: ' + this.data.base.it[i][2][0] + '-' + this.data.base.it[i][3][0] + ' / ' + this.data.base.it[i][2][1] + '-' + this.data.base.it[i][3][1] + ''; - right += '
Требуется минимальное:
• Уровень: ' + this.data.base.it[i][9] + ''; - // - r += ''; - r += ''; - i++; - } - r += '
' + left + '' + right + '
'; - } - } - // - }else{ - r += '
Загрузка списка вещей
'; - } - - - - if( this.selectPointLast == 'give' ) { - if( this.data.user.level < 4 ) { - r += '
Сдача вещей в комиссионный магазин разрешена с 4-го уровня
'; - }else if( r == '' ) { - r += '
У вас нет предметов которые можно сдать в комиссионный магазин
'; - }else{ - - } - }else if( this.selectPointLast == 'pick' ) { - if( r == '' ) { - r += '
У вас нет предметов сданных в комиссионный магазин
'; - }else{ - - } - }else{ - if( this.data.base == undefined || this.data.base.it.i == 0 ) { - r = ''; - } - if( r == '' && this.baseconnect == false ) { - r += '
Прилавок магазина пуст
'; - }else{ - - } - } - if( r != '' ) { - $('#comission_content').html( r ); - } - }, - - error:function( text ) { - $('#error').html( text ); - if( text == '' ) { - $('#error').hide(); - }else{ - $('#error').show(); - } - } -}; \ No newline at end of file diff --git a/core1/static/scripts/location/debuger.js b/core1/static/scripts/location/debuger.js deleted file mode 100644 index 6c62a0f7..00000000 --- a/core1/static/scripts/location/debuger.js +++ /dev/null @@ -1,33 +0,0 @@ -var bug = { - - menu:[ - [1,'Приемы',0] - ], - - skills:{}, - - start:function() { - var html = ''; - // - var i = 0; - while( i != -1 ) { - if( this.menu[i] != undefined ) { - html += this.menuAdd( this.menu[i] ); - }else{ - i = -2; - } - i++; - } - // - $('#mainblock').html( html ); - }, - - menuAdd:function( m ) { - var r = ''; - // - r += 'test'; - // - return r; - } - -}; \ No newline at end of file diff --git a/core1/static/styles/location/auction.css b/core1/static/styles/location/auction.css deleted file mode 100644 index 01084096..00000000 --- a/core1/static/styles/location/auction.css +++ /dev/null @@ -1,132 +0,0 @@ -@charset "windows-1251"; -/* CSS Document */ - -.wrapper { - width: 100%; - min-width: 800px; - position: relative; -} - -.maroontext { - font-weight: bolder; - color: #8f0000; - font-size:12pt; -} - -.asel { - background-color:#e5e1e2; - padding:5px 10px 5px 10px; - color:#000; -} - -.cp { cursor:pointer; } - -.asel a { - color:#000; -} - -.unasel { - padding:5px 10px 5px 10px; -} - - -/* Middle ------------------------------------------------------------------------------*/ -.middle { - width: 100%; - position: relative; -} -.middle:after { - display: table; - clear: both; - content: ''; -} -.container { - width: 100%; - float: left; - overflow: hidden; -} -.content { - padding: 0 170px 0 0; - display:block; -} -.borderandpadding5px { - padding:5px; - /*border:solid 1px #a5a5a5;*/ -} -.borderitem { - border-right:solid 1px #a5a5a5; -} -.borderandpadding0px { - padding:0px; - border:solid 1px #a5a5a5; -} -.px3px { - padding:3px; -} -.brd1top { - border-top:solid 1px #a5a5a5; -} - - -/* Right Sidebar ------------------------------------------------------------------------------*/ -.right-sidebar { - float: left; - width: 150px; - margin-left: -150px; - position: relative; -} - -/* All Styles ------------------------------------------------------------------------------*/ - -#error { - color:red; - padding:5px; - display:none; -} - -#auction_title { - background-color:#d2d2d2; - text-align:center; - padding:5px 5px 0 5px; - display:block; -} - -#auction_content { - /*background-color:#c8c8c8;*/ - display:block; -} - -.auction_menu_point { - padding:1px 10px 1px 0; - border-bottom:1px solid #E2E0E0; -} - -.auction_menu_point:hover { - cursor:pointer; - background-color:#c7c7c7; -} - -.auction_unhide { - background-color:#c7c7c7; -} - - - - - - - - - - - - - - - - - - diff --git a/core1/static/styles/location/auction_ie_fix.css b/core1/static/styles/location/auction_ie_fix.css deleted file mode 100644 index 22d8635f..00000000 --- a/core1/static/styles/location/auction_ie_fix.css +++ /dev/null @@ -1,18 +0,0 @@ -#comission_title { - margin-right:280px; -} - -#comission_content { - margin-right:280px; -} - - - - - - - - - - - diff --git a/core1/static/styles/location/comission.css b/core1/static/styles/location/comission.css deleted file mode 100644 index 9f3a1c8a..00000000 --- a/core1/static/styles/location/comission.css +++ /dev/null @@ -1,114 +0,0 @@ -@charset "windows-1251"; -/* CSS Document */ - -.wrapper { - width: 100%; - min-width: 800px; - position: relative; -} - - -/* Middle ------------------------------------------------------------------------------*/ -.middle { - width: 100%; - position: relative; -} -.middle:after { - display: table; - clear: both; - content: ''; -} -.container { - width: 100%; - float: left; - overflow: hidden; -} -.content { - padding: 0 290px 0 0; - display:block; -} -.borderandpadding5px { - padding:5px; - /*border:solid 1px #a5a5a5;*/ -} -.borderitem { - border-right:solid 1px #a5a5a5; -} -.borderandpadding0px { - padding:0px; - border:solid 1px #a5a5a5; -} -.px3px { - padding:3px; -} -.brd1top { - border-top:solid 1px #a5a5a5; -} - - -/* Right Sidebar ------------------------------------------------------------------------------*/ -.right-sidebar { - float: left; - width: 270px; - margin-left: -270px; - position: relative; -} - -/* All Styles ------------------------------------------------------------------------------*/ - -#error { - color:red; - padding:5px; - display:none; -} - -#comission_title { - background-color:#a5a5a5; - font-weight:bold; - text-align:center; - padding:5px; - display:block; -} - -#comission_content { - background-color:#c8c8c8; - display:block; -} - -.comission_menu_point { - padding:1px 10px 1px 0; - border-bottom:1px solid #E2E0E0; -} - -.comission_menu_point:hover { - cursor:pointer; - background-color:#c7c7c7; -} - -.comission_unhide { - background-color:#c7c7c7; -} - - - - - - - - - - - - - - - - - - - - - diff --git a/cron/auction.php b/cron/auction.php index 6ae0e1fc..84e9f854 100644 --- a/cron/auction.php +++ b/cron/auction.php @@ -1,51 +1,53 @@ + */ -/* +use Insallah\Db; - CRON Комиссионного магазина - Действия: - 1. Если предмет висит уже 2 и более недель, продавать предмет за 50% от его стоимости с учетом износа - деньги отсылаются на почту. +const GAME = true; +const TIME_LAST = 86400; // 1 day +const AUC = 'Филиал Аукциона'; +const AUC_WIN = 'Вы выиграли торги. Предмет "%s" за %s кр. был добавлен к вам в инвентарь.'; +const AUC_SELL = 'Предмет "%s" был продан на торгах, %s кр. за товар отправлены вам по почте.'; +const AUC_SELL_LOG = 'Филиал Аукциона: Предмет "%s" был продан за %s кр.'; +const AUC_NOT_SELL = 'Предмет "%s" не был продан, он возвращен вам в инвентарь.'; +require_once '_incl_data/class/Insallah/Core/Db.php'; -*/ +$query = [ //all queries + 'insert into chat (new, login, `to`, text, time, type) values (1, ?, ?, ?, unix_timestamp(), 6)', + 'select * from items_auc where time_end = 0 and time < unix_timestamp() - ? order by user_buy', + 'select login from users where id = ?', + 'select count(*) from users where id = ?', + 'update items_users set uid = ?, lastUPD = unix_timestamp() where (id = ? or inGroup = ?) and uid = 0', + 'insert into items_users (`delete`, item_id, 1price, uid, lastUPD, `data`) values (0, 1220, ?, ?, unix_timestamp(), ?)', + 'insert into post (uid, sender_id, time, money, text) values (?, 0, unix_timestamp(), ?, ?)', + 'update items_auc set time_end = unix_timestamp() where id = ?', +]; -$time_last = 86400; //1 день - -$sp = mysql_query('SELECT * FROM `items_auc` WHERE `time_end` = 0 AND `time` < "'.(time()-$time_last).'" ORDER BY `user_buy` ASC'); -while( $pl = mysql_fetch_array($sp) ) { - // - if( $pl['x'] > 0 ) { - $pl['name'] .= ' (x'.$pl['x'].')'; - } - // - $user = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$pl['uid'].'" LIMIT 1')); - if( $pl['user_buy'] > 0 ) { - //Предмет купили - $buyer = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$pl['user_buy'].'" LIMIT 1')); - if(isset($buyer['id'])) { - mysql_query('UPDATE `items_users` SET `uid` = "'.$buyer['id'].'",`lastUPD` = "'.time().'" WHERE (`id` = "'.$pl['item_id'].'" OR `inGroup` = "'.$pl['item_id'].'") AND `uid` = 0'); - $u->send('','','','Филиал Аукциона',$buyer['login'],'Вы выиграли торги. Предмет "'.$pl['name'].'" за '.$pl['price'].' кр. был добавлен к вам в инвентарь.',time(),6,0,0,0,1,0); - } - if(isset($user['id'])) { - $u->send('','','','Филиал Аукциона',$user['login'],'Предмет "'.$pl['name'].'" был продан на торгах, '.$pl['price'].' кр. за товар отправлены вам по почте.',time(),6,0,0,0,1,0); - // - mysql_query('INSERT INTO `items_users` (`delete`,`item_id`,`1price`,`uid`,`lastUPD`) VALUES ("0","1220","'.$pl['price'].'","-51'.$user['id'].'","'.time().'")'); - mysql_query('INSERT INTO `post` (`uid`,`sender_id`,`time`,`money`,`text`) VALUES ( - "'.$user['id'].'","0","'.time().'","'.$pl['price'].'","Филиал Аукциона: Предмет "'.$pl['name'].'" был продан за '.$pl['price'].' кр." - )'); - } - }else{ - //Предмет не купили, возвращаем его обратно - if(isset($user['id'])) { - mysql_query('UPDATE `items_users` SET `uid` = "'.$user['id'].'",`lastUPD` = "'.time().'" WHERE (`id` = "'.$pl['item_id'].'" OR `inGroup` = "'.$pl['item_id'].'") AND `uid` = 0'); - $u->send('','','','Филиал Аукциона',$user['login'],'Предмет "'.$pl['name'].'" не был продан, он возвращен вам в инвентарь.',time(),6,0,0,0,1,0); - } - } - mysql_query('UPDATE `items_auc` SET `time_end` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); +$sp = Db::getRow($query[1], [TIME_LAST]); +foreach ($sp as $pl) { + if ($pl['x'] > 0) { + $pl['name'] .= ' (x' . $pl['x'] . ')'; + } + $userLogin = Db::getValue($query[2], [$pl['uid']]); + if ($pl['user_buy'] && Db::getValue($query[3], [$pl['user_buy']])) { + Db::sql($query[4], [$pl['user_buy'], $pl['item_id'], $pl['item_id']]); + Db::sql($query[0], [AUC, $pl['user_buy'], sprintf(AUC_WIN, $pl['name'], $pl['price'])]); + if ($userLogin) { + Db::sql($query[0], [AUC, $userLogin, sprintf(AUC_SELL, $pl['name'], $pl['price'])]); + Db::sql($query[5], [$pl['price'], '-51' . $pl['uid'], '']); + Db::sql($query[6], [$pl['uid'], $pl['price'], sprintf(AUC_SELL_LOG, $pl['name'], $pl['price'])]); + } + } elseif ($userLogin) { + Db::sql($query[4], [$pl['uid'], $pl['item_id'], $pl['item_id']]); + Db::sql($query[0], [AUC, $userLogin, sprintf(AUC_NOT_SELL, $pl['name'])]); + } + Db::sql($query[7], [$pl['id']]); } -?> \ No newline at end of file diff --git a/cron/battle_optimize.php b/cron/battle_optimize.php index b2eaf1ba..c86f4019 100644 --- a/cron/battle_optimize.php +++ b/cron/battle_optimize.php @@ -1,45 +1,21 @@ +$tables = ['battle_end', 'battle_last', 'battle_out', 'battle_stat', 'battle_logs', 'battle_logs_save']; +$q = [ + 'delete from battle_users where time_enter < unix_timestamp() - ? and time_enter != 0', + 'delete from battle where time_over < unix_timestamp() - ? and time_over != 0', +]; +foreach ($tables as $table) { + $pdo->prepare("delete from $table where time < unix_timestamp() - ?")->execute(DAY); +} +$pdo->prepare($q[0])->execute(DAY); +$pdo->prepare($q[1])->execute(DAY); diff --git a/cron/clear.php b/cron/clear.php index 482e230f..22096cbf 100644 --- a/cron/clear.php +++ b/cron/clear.php @@ -40,6 +40,9 @@ if( isset($_GET['actions']) ) { */ +// ЕБИИИИИИИЧЕСКАЯ СИИИИЛА!!!!! (с) Инс. +// forign_keys! Никто не знает про foreign_keys! + function delete_user_all( $uid , $login ) { mysql_query('DELETE FROM `aaa_birthday` WHERE `uid` = "'.$uid.'"'); mysql_query('DELETE FROM `aaa_bonus` WHERE `uid` = "'.$uid.'"'); diff --git a/cron/comission.php b/cron/comission.php index 573a15d5..da587b16 100644 --- a/cron/comission.php +++ b/cron/comission.php @@ -1,46 +1,44 @@ Shop.capitalcity": Возврат из комиссионного магазина предмет: [id="%s"/ Название : "%s"/ Цена : "%s"/ Груперованно : "$s"].'; +const RETURN_ONE = '"Shop.capitalcity": Возврат из комиссионного магазина предмет: [id="%s"/ Название : "%s"/ Цена : "%s"].'; +const SHOP_TYPE = 'Shop.comission'; +setlocale(LC_CTYPE, "ru_RU.CP1251"); include('/home/newcom1/public_html/_incl_data/__config.php'); include('/home/newcom1/public_html/_incl_data/class/__db_connect.php'); include('/home/newcom1/public_html/_incl_data/class/__user.php'); -/* - - CRON Комиссионного магазина - Действия: - 1. Если предмет висит уже 2 и более недель, продавать предмет за 50% от его стоимости с учетом износа - деньги отсылаются на почту. -*/ - - -$time_last = 86400 * 6; //2 недели - -$sp = mysql_query('SELECT * FROM `items_users` WHERE `inShop` = 30'); -while( $pl = mysql_fetch_array($sp) ) -{ - - $i = mysql_fetch_array(mysql_query('SELECT `im`.`price1`,`im`.`name`,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`id` = "'.$pl['id'].'" AND `iu`.`inShop` = "30" AND `iu`.`delete` = "0" LIMIT 1')); - - if( isset($i['inGroup']) AND $i['inGroup'] > 0 ) - { - $col = $u->itemsX($i['id']); - if($col > 1) - { - mysql_query('UPDATE `items_users` SET `inShop` = 0, `1price` = "'.$i['price1'].'" WHERE `item_id`="'.$i['item_id'].'" AND `inShop` = "30" AND `uid`="'.$i['uid'].'" AND `inGroup` = "'.$i['inGroup'].'" LIMIT '.$col.''); - $ld = $u->addDelo(1,$i['uid'],'"Shop.capitalcity": Возврат из комиссионного магазина предмет: [id="'.$i['item_id'].'"/ Название : "'.$i['name'].'"/ Цена : "'.$i['price1'].'"/ Груперованно : "'.$i['inGroup'].'+1"].',time(),$u->info['city'],'Shop.comission',0,0); - } - else - { - mysql_query('UPDATE `items_users` SET `inShop` = 0, `1price` = "'.$i['price1'].'" WHERE `uid` = "'.$pl['uid'].'" AND `id` = "'.$pl['id'].'" AND `inOdet` = "0" AND `delete` = "0" '); - $ld = $u->addDelo(1,$i['uid'],'"Shop.capitalcity": Возврат из комиссионного магазина предмет: [id="'.$i['item_id'].'"/ Название : "'.$i['name'].'"/ Цена : "'.$i['price1'].'"].',time(),$u->info['city'],'Shop.comission',0,0); - } - } - else - { - mysql_query('UPDATE `items_users` SET `inShop` = 0, `1price` = "'.$i['price1'].'" WHERE `id` = "'.$pl['id'].'" and `inShop` = "30" LIMIT 1'); - $ld = $u->addDelo(1,$i['uid'],'"Shop.capitalcity": Возврат из комиссионного магазина предмет: [id="'.$i['item_id'].'"/ Название : "'.$i['name'].'"/ Цена : "'.$i['price1'].'"].',time(),$u->info['city'],'Shop.comission',0,0); - } +$q = 'select items_main.id, uid, inGroup, item_id, price1, name from items_users left join items_main on items_main.id = item_id where inShop = 30 and `delete` = 0'; +foreach ($pdo->query($q) as $row) { + if ($row['inGroup']) { + $col = $u->itemsX($row['id']); + if ($col > 1) { + $stmt = $pdo->prepare('update items_users set inShop = 0, 1price = ? where item_id = ? and inShop = 30 and uid = ? and inGroup = ? limit ' . $col); + if ($stmt->execute([$row['price1'], $row['item_id'], $row['uid'], $row['inGroup']])) { + $ld = $u->addDelo(1, $row['uid'], + sprintf(RETURN_GROUP, $row['item_id'], $row['name'], $row['price1'], $row['inGroup'] . '+1'), + time(), $u->info['city'], SHOP_TYPE, 0, 0); + } + } else { + $stmt = $pdo->prepare('update items_users set inShop = 0, 1price = ? where uid = ? and id = ? and inOdet = 0 and `delete` = 0 and inShop = 30'); + if ($stmt->execute([$row['price1'], $row['uid'], $row['id']])) { + $ld = $u->addDelo(1, $row['uid'], sprintf(RETURN_ONE, $row['item_id'], $row['name'], $row['price1']), + time(), $u->info['city'], SHOP_TYPE, 0, 0); + } + } + } else { + $stmt = $pdo->prepare('update items_users set inShop = 0, 1price = ? where id = ? and inShop = 30'); + if ($stmt->execute([$row['price1'], $row['id']])) { + $ld = $u->addDelo(1, $row['uid'], sprintf(RETURN_ONE, $row['item_id'], $row['name'], $row['price1']), + time(), $u->info['city'], SHOP_TYPE, 0, 0); + } + } } - -?> \ No newline at end of file diff --git a/cron/comission.php.bac b/cron/comission.php.bac deleted file mode 100644 index 22a83f33..00000000 --- a/cron/comission.php.bac +++ /dev/null @@ -1,70 +0,0 @@ -0){ - $prc1 = $itm_user['iznosNOW']/$plmx*100; - }else{ - $prc1 = 0; - } - $shpCena = $u->shopSaleM( $shpCena , $itm_user ); - $shpCena = $shpCena/100*(100-$prc1); - if( $itm_user['iznosMAXi'] < 999999999 ) { - if($itm_user['iznosMAX']>0 && $itm_main['iznosMAXi']>0 && $itm_main['iznosMAXi']>$itm_user['iznosMAX']){ - $shpCena = $shpCena/100*($itm_user['iznosMAX']/$itm_main['iznosMAXi']*100); - } - } - $shpCena = $shpCena/2 * $pl['group']; - $shpCena = $u->round2($shpCena/100*(100-$shopProcent)); - if($shpCena<0){ - $shpCena = 0; - } - // - $itm_user['1price'] = $shpCena; - // - if( $itm_user['1price'] < 0.01 ) { - $itm_user['1price'] = 0.01; - } - // - mysql_query('UPDATE `items_com` SET `delete` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `items_users` (`delete`,`item_id`,`1price`,`uid`,`lastUPD`) VALUES ("0","1220","'.$itm_user['1price'].'","-51'.$user['id'].'","'.time().'")'); - mysql_query('INSERT INTO `post` (`uid`,`sender_id`,`time`,`money`,`text`) VALUES ( - "'.$user['id'].'","0","'.time().'","'.$itm_user['1price'].'","Комиссионный магазин: Предмет "'.$itm_main['name'].''.$grp.'" (Износ: '.ceil($itm_user['iznosNOW']).'/'.ceil($itm_user['iznosMAX']).') был продан за '.$itm_user['1price'].' кр." - )'); - // - $grp = ''; - if( $pl['group'] > 1 ) { - $grp = ' (x'.$pl['group'].')'; - } - $u->send('','','','Комиссионный магазин',$user['login'],'Предмет "'.$itm_main['name'].''.$grp.'" (Износ: '.ceil($itm_user['iznosNOW']).'/'.ceil($itm_user['iznosMAX']).') был продан в государственный магазин за '.$itm_user['1price'].' кр.. Деньги доставлены к вам на почту.',time(),6,0,0,0,1,0); -} - -?> \ No newline at end of file diff --git a/cron/rupor.php b/cron/rupor.php index 4e61ed74..b8a5410a 100644 --- a/cron/rupor.php +++ b/cron/rupor.php @@ -1,39 +1,24 @@ \ No newline at end of file +shuffle($rupor); +$q = 'insert into chat (new, text, time, type, da, color) values (1, ?, unix_timestamp(), 6, 1, ?)'; +$pdo->prepare($q)->execute(['Администрация: ' . $rupor[0], '#F00']); diff --git a/cron/stats_correct.php b/cron/stats_correct.php index 80606708..59f80cfa 100644 --- a/cron/stats_correct.php +++ b/cron/stats_correct.php @@ -1,27 +1,31 @@ 1999 ORDER BY `add_stats` DESC'); -//$sp = mysql_query('SELECT * FROM `rep` WHERE `id` =3'); - while($pl = mysql_fetch_array($sp)) - { - - echo 'id:'.$pl['id'].'
'; - // mysql_query('UPDATE `stats` SET `priemslot` = `priemslot` - '.$pl['add_slot'].', `priems` ="0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|" WHERE `id` ="'.$pl['id'].'"'); - mysql_query('UPDATE `rep` SET `nu_capitalcity`=0, `nu_demonscity`=0,`nu_angelscity`=0,`nu_suncity`=0,`nu_dreamscity`=0,`nu_abandonedplain`=0,`nu_sandcity`=0,`nu_emeraldscity`=0, `add_stats`=0,`add_skills`=0,`add_slot`=0 WHERE `id` ="'.$pl['id'].'"'); - - } +$q = [ + 'select id from rep where repemeraldscity > 1999 order by add_stats desc', + 'update rep set + nu_capitalcity = 0, + nu_demonscity = 0, + nu_angelscity = 0, + nu_suncity = 0, + nu_dreamscity = 0, + nu_abandonedplain = 0, + nu_sandcity = 0, + nu_emeraldscity = 0, + add_stats = 0, + add_skills = 0, + add_slot = 0 + where id = ?', +]; -// SELECT * FROM `rep` WHERE `repemeraldscity` > 1999 ORDER BY `add_stats` DESC -// rep (`add_stats`,`add_skills`,`add_slot`) `add_stats`,`add_skills`,`add_slot` ===== 0 -// stats (`ability`,`skills`,`priemslot`) ability=0 skills?? priemslot- -// (`nu_capitalcity`+`nu_demonscity`+`nu_angelscity`+`nu_suncity`+`nu_dreamscity`+`nu_abandonedplain`+`nu_sandcity`+`nu_emeraldscity`) - - - - -?> \ No newline at end of file +$correct = $pdo->prepare($q[1]); +foreach ($pdo->query($q[0]) as $row) { + echo 'id: ' . $row['id'] . '
'; + $correct->execute($row['id']); +} diff --git a/err.php b/err.php new file mode 100644 index 00000000..ab3d6633 --- /dev/null +++ b/err.php @@ -0,0 +1,22 @@ +$line"; +} +?> + + + + + + + +
diff --git a/inf.php b/inf.php index 2ee62c9f..4ee7f69f 100644 --- a/inf.php +++ b/inf.php @@ -1,17 +1,16 @@ -0) $pc = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id`="'.$inf['clan'].'" LIMIT 1')); } -if(isset($_GET['short'])) -{ - $n = ' -'; - $o = 0; - if($inf['online']>time()-520) - { - $o = 1; - } - $sh = ''; - $sh .= 'id='.$inf['id'].$n; - $sh .= 'login='.$inf['login'].$n; - $sh .= 'level='.$inf['level'].$n; - $sh .= 'align='.$inf['align'].$n; - $sh .= 'clan='.$pc['name_mini'].$n; - $sh .= 'sex='.$inf['sex'].$n; - $sh .= 'city='.$inf['city'].$n; - $sh .= 'city_reg='.$inf['cityreg'].$n; - $sh .= 'room_name='.$room['name'].$n; - $sh .= 'online='.$o.$n; - die($sh); -} - $nopal = false; if( $u->info['align'] < $inf['align'] && $inf['align'] > 1 && $inf['align'] < 2 && $u->info['admin'] == 0 ) { @@ -699,9 +674,6 @@ function closeGift() { } function tstlgnthm() { if( window.opener && ( window.opener.textmsg != undefined || window.opener.parent.textmsg != undefined ) ) { - /* - - */ if( window.opener.textmsg != undefined ) { $('#lgnthm').html( '' + $('#lgnthm').html() ); return @@ -727,10 +699,6 @@ if(isset($uer)){ echo '
'.$uer.'getStats($inf['id'],1,0,true); $st2 = $st[1]; $st = $st[0]; - //if( $u->info['admin'] > 0 ) { - // echo '
Мощность персонажа: '.$st['reting'].'
'; - //} - $rgd = $u->regen($inf['id'],$st,1); $us = $u->getInfoPers($inf['id'],1,$st); if( isset($bs['id']) && $bs['type_btl'] == 2 && ($u->info['x'] != $inf['x'] || $u->info['y'] != $inf['y'])) { $us[0] = '








Информация скрыта,
Вы в разных комнатах.






'; } if($us!=false){ echo $us[0]; }else{ echo 'information is lost.'; } ?>
- - -
- - -

» Предметы / / -

- -

- -
- - - - - - - - - - - - - - - - -
  
-
- -

 

-
- - - - - - - - - - -
- - - - - - - - - - - -
- - -Редактировать предмет    '; - echo $crd; - } + + + + + + + + -
+ +

+
+

» Предметы / / + +

+ +

+ +
+ + + + + + + + + + + + + + + + +
+   + +   +
+
+ +

 

+
+ + + + + +
- if($itm['massa']>0) - { - echo '(Масса: '.$itm['massa'].') '; - } - if(isset($itd['art']) && $itd['art'] > 0) - { - echo 'Артефактная вещь '; - } + + + - - -
+ + + Редактировать предмет    '; + echo $crd; + } - if(isset($po['sudba']) && $po['sudba'] > 0) - { - echo ' '; - } + if ($itm['massa'] > 0) { + echo '(Масса: ' . $itm['massa'] . ') '; + } + if (isset($itd['art']) && $itd['art'] > 0) { + echo 'Артефактная вещь '; + } - if($itm['price1'] > 0) { - echo '
Цена: '.$itm['price1'].' кр.'; - } + if (isset($po['sudba']) && $po['sudba'] > 0) { + echo ' '; + } - if($itm['price2'] > 0) { - echo '
Цена: '.$itm['price2'].' екр.'; - } + if ($itm['price1'] > 0) { + echo '
Цена: ' . $itm['price1'] . ' кр.'; + } - if($itm['iznosMAXi'] >= 999999999) { - echo '
Долговечность: неразрушимо'; - }elseif($itm['iznosMAXi'] > 0) { - echo '
Долговечность: 0/'.$itm['iznosMAXi'].''; - } + if ($itm['price2'] > 0) { + echo '
Цена: ' . $itm['price2'] . ' екр.'; + } + + if ($itm['iznosMAXi'] >= 999999999) { + echo '
Долговечность: неразрушимо'; + } elseif ($itm['iznosMAXi'] > 0) { + echo '
Долговечность: 0/' . $itm['iznosMAXi'] . ''; + } - //Срок годности предмета - if(isset($itd['srok']) && $itd['srok'] > 0) - { - $itm['srok'] = $itd['srok']; - } - if($itm['srok'] > 0) - { - echo '
Срок годности: '.timeOut($itm['srok']); - } - - //Продолжительность действия магии: - if((int)$itm['magic_inci'] > 0) - { - $efi = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "'.((int)$itm['magic_inci']).'" LIMIT 1')); - if(isset($efi['id2']) && $efi['actionTime']>0) - { - echo '
Продолжительность действия: '.timeOut($efi['actionTime']); - } - } + //Срок годности предмета + if (isset($itd['srok']) && $itd['srok'] > 0) { + $itm['srok'] = $itd['srok']; + } + if ($itm['srok'] > 0) { + echo '
Срок годности: ' . timeOut($itm['srok']); + } + + //Продолжительность действия магии: + if ((int)$itm['magic_inci'] > 0) { + $efi = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . ((int)$itm['magic_inci']) . '" LIMIT 1')); + if (isset($efi['id2']) && $efi['actionTime'] > 0) { + echo '
Продолжительность действия: ' . timeOut($efi['actionTime']); + } + } -/* требования */ -$tr = ''; + /* требования */ + $tr = ''; -$t = $items['tr']; -$x = 0; -while($xТребуется минимальное:'.$tr; -} + if ($tr != '') { + echo '
Требуется минимальное:' . $tr; + } -/* действует на */ -$tr = ''; + /* действует на */ + $tr = ''; -$t = $items['add']; -$x = 0; -while($x'головы',2=>'корпуса',3=>'пояса',4=>'ног'); - while($i<=4) - { - if(isset($itd['add_mab'.$i]) && $itd['add_mab'.$i]>0) - { - if($itd['add_mab'.$i]==$itd['add_mib'.$i]) - { - $z = '+'; - if($itd['add_mab'.$i]<0) - { - $z = ''; - } - $tr .= '
• Броня '.$bn[$i].': '.$z.''.$itd['add_mab'.$i]; - }else{ - $tr .= '
• Броня '.$bn[$i].': '.$itd['add_mib'.$i].'-'.$itd['add_mab'.$i]; - } - } - $i++; - } -if($tr != '') { - echo '
Действует на:'.$tr; -} -/* свойства предмета */ -$tr = ''; + //действует на (броня) + $i = 1; + $bn = [1 => 'головы', 2 => 'корпуса', 3 => 'пояса', 4 => 'ног']; + while ($i <= 4) { + if (isset($itd['add_mab' . $i]) && $itd['add_mab' . $i] > 0) { + if ($itd['add_mab' . $i] == $itd['add_mib' . $i]) { + $z = '+'; + if ($itd['add_mab' . $i] < 0) { + $z = ''; + } + $tr .= '
• Броня ' . $bn[$i] . ': ' . $z . '' . $itd['add_mab' . $i]; + } else { + $tr .= '
• Броня ' . $bn[$i] . ': ' . $itd['add_mib' . $i] . '-' . $itd['add_mab' . $i]; + } + } + $i++; + } + if ($tr != '') { + echo '
Действует на:' . $tr; + } + /* свойства предмета */ + $tr = ''; - if(isset($itd['sv_yron_min'],$itd['sv_yron_max'])) - { - $tr .= '
• Урон: '.$itd['sv_yron_min'].' - '.$itd['sv_yron_max']; - } - $x = 0; - while($x0) - { - $x = 1; - while($x<=$itd['zonb']) - { - $tr .= '+'; - $x++; - } - }else{ - $tr .= '—'; - } - } + if (isset($itd['sv_yron_min'], $itd['sv_yron_max'])) { + $tr .= '
• Урон: ' . $itd['sv_yron_min'] . ' - ' . $itd['sv_yron_max']; + } + $x = 0; + while ($x < count($t)) { + $n = $t[$x]; + if (isset($itd['sv_' . $n])) { + $z = '+'; + if ($itd['sv_' . $n] < 0) { + $z = ''; + } + $tr .= '
• ' . $is[$n] . ': ' . $z . '' . $itd['sv_' . $n]; + } + $x++; + } + if ($itm['2too'] == 1) { + $tr .= '
• Второе оружие'; + } + if ($itm['2h'] == 1) { + $tr .= '
• Двуручное оружие'; + } + if (isset($itd['zonb'])) { + $tr .= '
•Зоны блокирования: '; + if ($itd['zonb'] > 0) { + $x = 1; + while ($x <= $itd['zonb']) { + $tr .= '+'; + $x++; + } + } else { + $tr .= '—'; + } + } -if($tr != '') { - echo '
Свойства предмета:'.$tr; -} + if ($tr != '') { + echo '
Свойства предмета:' . $tr; + } -/* особенности */ -$tr = ''; + /* особенности */ + $tr = ''; - $x = 1; - while($x<=4) - { - if(isset($itd['tya'.$x]) && $itd['tya'.$x]>0) - { - $tyc = 'Ничтожно редки'; - if($itd['tya'.$x]>9) - { - $tyc = 'Редки'; - } - if($itd['tya'.$x]>24) - { - $tyc = 'Малы'; - } - if($itd['tya'.$x]>49) - { - $tyc = 'Временами'; - } - if($itd['tya'.$x]>74) - { - $tyc = 'Регулярны'; - } - if($itd['tya'.$x]>89) - { - $tyc = 'Часты'; - } - if($itd['tya'.$x]>=100) - { - $tyc = 'Всегда'; - } - $tr .= '
• '.$is['tya'.$x].': '.$tyc; - } - $x++; - } - $x = 1; - while($x<=7) - { - if(isset($itd['tym'.$x]) && $itd['tym'.$x]>0) - { - $tyc = 'Ничтожно редки'; - if($itd['tym'.$x]>9) - { - $tyc = 'Редки'; - } - if($itd['tym'.$x]>24) - { - $tyc = 'Малы'; - } - if($itd['tym'.$x]>49) - { - $tyc = 'Временами'; - } - if($itd['tym'.$x]>74) - { - $tyc = 'Регулярны'; - } - if($itd['tym'.$x]>89) - { - $tyc = 'Часты'; - } - if($itd['tym'.$x]>=100) - { - $tyc = 'Всегда'; - } - $tr .= '
• '.$is['tym'.$x].': '.$tyc; - } - $x++; - } - $x = 1; - while($x <= 4) - { - if(isset($itd['add_oza'.$x]) && $itd['add_oza'.$x]>0) - { - $tyc = 'Слабая'; - if($itd['add_oza'.$x] == 4) - { - $tyc = 'Посредственная'; - } - if($itd['add_oza'.$x] == 2) - { - $tyc = 'Нормальная'; - } - if($itd['add_oza'.$x] == 3) - { - $tyc = 'Хорошая'; - } - if($itd['add_oza'.$x] == 5) - { - $tyc = 'Великолепная'; - } - if($tyc != '') { - $tr .= '
• '.$is['oza'.$x].': '.$tyc; - } - } - $x++; - } - if(isset($itd['free_stats']) && $itd['free_stats']>0){ - echo '
Свободные распределения:
• Возможных распределений: '.$itd['free_stats']; - } -if($tr != '') { - echo '
Особенности:'.$tr; -} - $is2 = ''; + $x = 1; + while ($x <= 4) { + if (isset($itd['tya' . $x]) && $itd['tya' . $x] > 0) { + $tyc = 'Ничтожно редки'; + if ($itd['tya' . $x] > 9) { + $tyc = 'Редки'; + } + if ($itd['tya' . $x] > 24) { + $tyc = 'Малы'; + } + if ($itd['tya' . $x] > 49) { + $tyc = 'Временами'; + } + if ($itd['tya' . $x] > 74) { + $tyc = 'Регулярны'; + } + if ($itd['tya' . $x] > 89) { + $tyc = 'Часты'; + } + if ($itd['tya' . $x] >= 100) { + $tyc = 'Всегда'; + } + $tr .= '
• ' . $is['tya' . $x] . ': ' . $tyc; + } + $x++; + } + $x = 1; + while ($x <= 7) { + if (isset($itd['tym' . $x]) && $itd['tym' . $x] > 0) { + $tyc = 'Ничтожно редки'; + if ($itd['tym' . $x] > 9) { + $tyc = 'Редки'; + } + if ($itd['tym' . $x] > 24) { + $tyc = 'Малы'; + } + if ($itd['tym' . $x] > 49) { + $tyc = 'Временами'; + } + if ($itd['tym' . $x] > 74) { + $tyc = 'Регулярны'; + } + if ($itd['tym' . $x] > 89) { + $tyc = 'Часты'; + } + if ($itd['tym' . $x] >= 100) { + $tyc = 'Всегда'; + } + $tr .= '
• ' . $is['tym' . $x] . ': ' . $tyc; + } + $x++; + } + $x = 1; + while ($x <= 4) { + if (isset($itd['add_oza' . $x]) && $itd['add_oza' . $x] > 0) { + $tyc = 'Слабая'; + if ($itd['add_oza' . $x] == 4) { + $tyc = 'Посредственная'; + } + if ($itd['add_oza' . $x] == 2) { + $tyc = 'Нормальная'; + } + if ($itd['add_oza' . $x] == 3) { + $tyc = 'Хорошая'; + } + if ($itd['add_oza' . $x] == 5) { + $tyc = 'Великолепная'; + } + if ($tyc != '') { + $tr .= '
• ' . $is['oza' . $x] . ': ' . $tyc; + } + } + $x++; + } + if (isset($itd['free_stats']) && $itd['free_stats'] > 0) { + echo '
Свободные распределения:
• Возможных распределений: ' . $itd['free_stats']; + } + if ($tr != '') { + echo '
Особенности:' . $tr; + } + $is2 = ''; - if(isset($itd['complect'])) - { - $is2 .= '
Дополнительная информация:'; - } - if(isset($itd['complect'])) - { - //не отображается - $com1 = array('name'=>'Неизвестный Комплект','x'=>0,'text'=>''); - $spc = mysql_query('SELECT * FROM `complects` WHERE `com` = "'.$itd['complect'].'" ORDER BY `x` ASC LIMIT 20'); - while($itmc = mysql_fetch_array($spc)) - { - $com1['name'] = $itmc['name']; - $com1['text'] .= '    • '.$itmc['x'].': '; - //действие комплекта - $i1c = 0; $i2c = 0; - $i1e = lookStats($itmc['data']); - while($i1c0) - { - $i3c = '+'.$i3c; - } - if($i2c>0) - { - $com1['text'] .= '    '.$is[$items['add'][$i1c]].': '.$i3c; - }else{ - $com1['text'] .= $is[$items['add'][$i1c]].': '.$i3c; - } - $com1['text'] .= '
'; - $i2c++; - } - $i1c++; - } - unset($i1c,$i2c,$i3c); - $com1['x']++; - } - $is2 .= '
• Часть комплекта: '.$com1['name'].'
'; - $is2 .= $com1['text']; - $is2 .= ''; - } - - $is2 .= ''; - - if($itm['info']!='') - { - $is2 .= '
Описание:
'.$itm['info'].'
'; - } - - if(isset($itd['info']) && $itd['info']!='') - { - $is2 .= '
'.$itd['info'].'
'; - } - - if(isset($itm['use_text']) && $itm['max_text']-$itm['use_text'] > 0) { - $is2 .= '
Количество символов: '.($itm['max_text']-$itm['use_text']).'
'; - } - - if(isset($itd['noremont']) && $itd['noremont']>0) - { - $is2 .= '
Предмет не подлежит ремонту
'; - } - - if(isset($itd['frompisher']) && $itd['frompisher']>0) - { - $is2 .= '
Предмет из подземелья
'; - } - - if(isset($itm['dn_delete']) && $itm['dn_delete']>0) - { - $is2 .= '
Предмет будет удален при выходе из подземелья
'; - } - - $is2 .= '
'; - -echo $is2; + if (isset($itd['complect'])) { + $is2 .= '
Дополнительная информация:'; + } + if (isset($itd['complect'])) { + //не отображается + $com1 = ['name' => 'Неизвестный Комплект', 'x' => 0, 'text' => '']; + $spc = mysql_query('SELECT * FROM `complects` WHERE `com` = "' . $itd['complect'] . '" ORDER BY `x` ASC LIMIT 20'); + while ($itmc = mysql_fetch_array($spc)) { + $com1['name'] = $itmc['name']; + $com1['text'] .= '    • ' . $itmc['x'] . ': '; + //действие комплекта + $i1c = 0; + $i2c = 0; + $i1e = lookStats($itmc['data']); + while ($i1c < count($items['add'])) { + if (isset($i1e[$items['add'][$i1c]])) { + $i3c = $i1e[$items['add'][$i1c]]; + if ($i3c > 0) { + $i3c = '+' . $i3c; + } + if ($i2c > 0) { + $com1['text'] .= '    ' . $is[$items['add'][$i1c]] . ': ' . $i3c; + } else { + $com1['text'] .= $is[$items['add'][$i1c]] . ': ' . $i3c; + } + $com1['text'] .= '
'; + $i2c++; + } + $i1c++; + } + unset($i1c, $i2c, $i3c); + $com1['x']++; + } + $is2 .= '
• Часть комплекта: ' . $com1['name'] . '
'; + $is2 .= $com1['text']; + $is2 .= ''; + } -?> -
+ $is2 .= ''; + + if ($itm['info'] != '') { + $is2 .= '
Описание:
' . $itm['info'] . '
'; + } + + if (isset($itd['info']) && $itd['info'] != '') { + $is2 .= '
' . $itd['info'] . '
'; + } + + if (isset($itm['use_text']) && $itm['max_text'] - $itm['use_text'] > 0) { + $is2 .= '
Количество символов: ' . ($itm['max_text'] - $itm['use_text']) . '
'; + } + + if (isset($itd['noremont']) && $itd['noremont'] > 0) { + $is2 .= '
Предмет не подлежит ремонту
'; + } + + if (isset($itd['frompisher']) && $itd['frompisher'] > 0) { + $is2 .= '
Предмет из подземелья
'; + } + + if (isset($itm['dn_delete']) && $itm['dn_delete'] > 0) { + $is2 .= '
Предмет будет удален при выходе из подземелья
'; + } + + $is2 .= '
'; + + echo $is2; + + ?> +
- -Требуется минимальное:
• Уровень: 4
• Выносливость: 16
• Сила: 16
Действует на:
• Мф. увертывания (%): +30
• Интуиция: +3
• Сила: +5
@@ -672,521 +1084,480 @@ echo $is2; Возможно усиление до 10го уровня
*/ -?> + ?> -
-<?=$itm['name']?>
+
+ <?= $itm['name'] ?> +
-
-

- -

    
 
-= 0 ) { - - if($rv == 1) { - //Костыли - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 26'); - }elseif($rv == 3) { - //Свитки - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 29 AND `name` NOT LIKE "%Кристаллизатор%"'); - }elseif($rv == 2) { - //Эликсиры - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 30'); - }elseif($rv == 6) { - //Броня тяжелая - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 6'); - }elseif($rv == 32) { - //Броня легкая - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 5'); - }elseif($rv == 7) { - //Венки на голову - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 2'); - }elseif($rv == 8) { - //Наручи - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 3'); - }elseif($rv == 9) { - //Ботинки - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 15'); - }elseif($rv == 10) { - //Перчатки - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 12'); - }elseif($rv == 11) { - //Плащи - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 7'); - }elseif($rv == 12) { - //Поножи - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 14'); - }elseif($rv == 13) { - //Пояса - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 8'); - }elseif($rv == 14) { - //Рубахи - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 4'); - }elseif($rv == 15) { - //Шлема - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 1'); - }elseif($rv == 16) { - //Елки - $sp = mysql_query('SELECT * FROM `items_main` WHERE `name` LIKE "%Елка%"'); - }elseif($rv == 17) { - //Дубины - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 20'); - }elseif($rv == 18) { - //Кинжалы - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 18'); - }elseif($rv == 19) { - //Мечи - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 21'); - }elseif($rv == 20) { - //Топоры - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 19'); - }elseif($rv == 21) { - //Посохи - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 22'); - }elseif($rv == 22) { - //Цветы - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 32 AND `img` LIKE "f_%"'); - }elseif($rv == 23) { - //Компоненты - //$sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 2'); - }elseif($rv == 24) { - //Маг.предметы - //$sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 2'); - }elseif($rv == 25) { - //Подарки - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 38 OR `type` = 63'); - }elseif($rv == 26) { - //Руны - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 31'); - }elseif($rv == 27) { - //Прочие - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 32'); - }elseif($rv == 28) { - //Щиты - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 13'); - }elseif($rv == 29) { - //Кольца - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 11'); - }elseif($rv == 30) { - //Ожерелья - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 10'); - }elseif($rv == 31) { - //Серьги - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 9'); - } - - } - - - -?> - - - - - - - + -
-

» Предметы / -

- -

- '; - }else{ - - - while( $itm = mysql_fetch_array($sp) ) { - - //if(!isset($itm['id'])) { - $itd = mysql_fetch_array(mysql_query('SELECT * FROM `items_main_data` WHERE `items_id` = "'.mysql_real_escape_string($itm['id']).'" LIMIT 1')); - $itd = lookStats($itd['data']); - - ?>
- - - + + + + + + + +
- - +
- - - Редактировать предмет    '; - echo $crd; - } - if($itm['massa']>0) { - echo '(Масса: '.$itm['massa'].') '; - } - if(isset($itd['art']) && $itd['art'] > 0) - { - echo 'Артефактная вещь '; - } - - if(isset($po['sudba'])) - { - echo ' '; - } - - if($itm['price1'] > 0) { - echo '
Цена: '.$itm['price1'].' кр.'; - } - - if($itm['price2'] > 0) { - echo '
Цена: '.$itm['price2'].' екр.'; - } - - if($itm['iznosMAXi'] >= 999999999) { - echo '
Долговечность: неразрушимо'; - }elseif($itm['iznosMAXi'] > 0) { - echo '
Долговечность: 0/'.$itm['iznosMAXi'].''; - } +
+

+ +

    
 
+ = 0) { + if ($rv == 1) { + //Костыли + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 26'); + } elseif ($rv == 3) { + //Свитки + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 29 AND `name` NOT LIKE "%Кристаллизатор%"'); + } elseif ($rv == 2) { + //Эликсиры + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 30'); + } elseif ($rv == 6) { + //Броня тяжелая + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 6'); + } elseif ($rv == 32) { + //Броня легкая + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 5'); + } elseif ($rv == 7) { + //Венки на голову + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 2'); + } elseif ($rv == 8) { + //Наручи + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 3'); + } elseif ($rv == 9) { + //Ботинки + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 15'); + } elseif ($rv == 10) { + //Перчатки + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 12'); + } elseif ($rv == 11) { + //Плащи + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 7'); + } elseif ($rv == 12) { + //Поножи + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 14'); + } elseif ($rv == 13) { + //Пояса + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 8'); + } elseif ($rv == 14) { + //Рубахи + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 4'); + } elseif ($rv == 15) { + //Шлема + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 1'); + } elseif ($rv == 16) { + //Елки + $sp = mysql_query('SELECT * FROM `items_main` WHERE `name` LIKE "%Елка%"'); + } elseif ($rv == 17) { + //Дубины + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 20'); + } elseif ($rv == 18) { + //Кинжалы + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 18'); + } elseif ($rv == 19) { + //Мечи + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 21'); + } elseif ($rv == 20) { + //Топоры + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 19'); + } elseif ($rv == 21) { + //Посохи + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 22'); + } elseif ($rv == 22) { + //Цветы + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 32 AND `img` LIKE "f_%"'); + } elseif ($rv == 23) { + //Компоненты + //$sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 2'); + } elseif ($rv == 24) { + //Маг.предметы + //$sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 2'); + } elseif ($rv == 25) { + //Подарки + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 38 OR `type` = 63'); + } elseif ($rv == 26) { + //Руны + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 31'); + } elseif ($rv == 27) { + //Прочие + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 32'); + } elseif ($rv == 28) { + //Щиты + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 13'); + } elseif ($rv == 29) { + //Кольца + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 11'); + } elseif ($rv == 30) { + //Ожерелья + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 10'); + } elseif ($rv == 31) { + //Серьги + $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 9'); + } + } - //Срок годности предмета - if(isset($itd['srok']) && $itd['srok'] > 0) - { - $itm['srok'] = $itd['srok']; - } - if($itm['srok'] > 0) - { - echo '
Срок годности: '.timeOut($itm['srok']); - } - - //Продолжительность действия магии: - if((int)$itm['magic_inci'] > 0) - { - $efi = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "'.((int)$itm['magic_inci']).'" LIMIT 1')); - if(isset($efi['id2']) && $efi['actionTime']>0) - { - echo '
Продолжительность действия: '.timeOut($efi['actionTime']); - } - } + ?> + + + + + + + +
+ +

» Предметы / +

+ +

+ '; + } else { + while ($itm = mysql_fetch_array($sp)) { + //if(!isset($itm['id'])) { + $itd = mysql_fetch_array(mysql_query('SELECT * FROM `items_main_data` WHERE `items_id` = "' . mysql_real_escape_string($itm['id']) . '" LIMIT 1')); + $itd = lookStats($itd['data']); + + ?>
+ + + + + +
+ + + - - -
+ + + Редактировать предмет    '; + echo $crd; + } + if ($itm['massa'] > 0) { + echo '(Масса: ' . $itm['massa'] . ') '; + } + if (isset($itd['art']) && $itd['art'] > 0) { + echo 'Артефактная вещь '; + } + + if (isset($po['sudba'])) { + echo ' '; + } + + if ($itm['price1'] > 0) { + echo '
Цена: ' . $itm['price1'] . ' кр.'; + } + + if ($itm['price2'] > 0) { + echo '
Цена: ' . $itm['price2'] . ' екр.'; + } + + if ($itm['iznosMAXi'] >= 999999999) { + echo '
Долговечность: неразрушимо'; + } elseif ($itm['iznosMAXi'] > 0) { + echo '
Долговечность: 0/' . $itm['iznosMAXi'] . ''; + } -/* требования */ -$tr = ''; + //Срок годности предмета + if (isset($itd['srok']) && $itd['srok'] > 0) { + $itm['srok'] = $itd['srok']; + } + if ($itm['srok'] > 0) { + echo '
Срок годности: ' . timeOut($itm['srok']); + } -$t = $items['tr']; -$x = 0; -while($x 0) { + $efi = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . ((int)$itm['magic_inci']) . '" LIMIT 1')); + if (isset($efi['id2']) && $efi['actionTime'] > 0) { + echo '
Продолжительность действия: ' . timeOut($efi['actionTime']); + } + } -if($tr != '') { - echo '
Требуется минимальное:'.$tr; -} -/* действует на */ -$tr = ''; + /* требования */ + $tr = ''; -$t = $items['add']; -$x = 0; -while($x'головы',2=>'корпуса',3=>'пояса',4=>'ног'); - while($i<=4) - { - if(isset($itd['add_mab'.$i]) && $itd['add_mab'.$i]>0) - { - if($itd['add_mab'.$i]==$itd['add_mib'.$i]) - { - $z = '+'; - if($itd['add_mab'.$i]<0) - { - $z = ''; - } - $tr .= '
• Броня '.$bn[$i].': '.$z.''.$itd['add_mab'.$i]; - }else{ - $tr .= '
• Броня '.$bn[$i].': '.$itd['add_mib'.$i].'-'.$itd['add_mab'.$i]; - } - } - $i++; - } -if($tr != '') { - echo '
Действует на:'.$tr; -} -/* свойства предмета */ -$tr = ''; + if ($tr != '') { + echo '
Требуется минимальное:' . $tr; + } - if(isset($itd['sv_yron_min'],$itd['sv_yron_max'])) - { - $tr .= '
• Урон: '.$itd['sv_yron_min'].' - '.$itd['sv_yron_max']; - } - $x = 0; - while($x0) - { - $x = 1; - while($x<=$itd['zonb']) - { - $tr .= '+'; - $x++; - } - }else{ - $tr .= '—'; - } - } + /* действует на */ + $tr = ''; -if($tr != '') { - echo '
Свойства предмета:'.$tr; -} + $t = $items['add']; + $x = 0; + while ($x < count($t)) { + $n = $t[$x]; + if (isset($itd['add_' . $n]) && isset($is[$n])) { + $z = '+'; + if ($itd['add_' . $n] < 1) { + $z = ''; + } + $tr .= '
• ' . $is[$n] . ': ' . $z . $itd['add_' . $n]; + } + $x++; + } -/* особенности */ -$tr = ''; + //действует на (броня) + $i = 1; + $bn = [1 => 'головы', 2 => 'корпуса', 3 => 'пояса', 4 => 'ног']; + while ($i <= 4) { + if (isset($itd['add_mab' . $i]) && $itd['add_mab' . $i] > 0) { + if ($itd['add_mab' . $i] == $itd['add_mib' . $i]) { + $z = '+'; + if ($itd['add_mab' . $i] < 0) { + $z = ''; + } + $tr .= '
• Броня ' . $bn[$i] . ': ' . $z . '' . $itd['add_mab' . $i]; + } else { + $tr .= '
• Броня ' . $bn[$i] . ': ' . $itd['add_mib' . $i] . '-' . $itd['add_mab' . $i]; + } + } + $i++; + } + if ($tr != '') { + echo '
Действует на:' . $tr; + } + /* свойства предмета */ + $tr = ''; - $x = 1; - while($x<=4) - { - if(isset($itd['tya'.$x]) && $itd['tya'.$x]>0) - { - $tyc = 'Ничтожно редки'; - if($itd['tya'.$x]>6) - { - $tyc = 'Редки'; - } - if($itd['tya'.$x]>14) - { - $tyc = 'Малы'; - } - if($itd['tya'.$x]>34) - { - $tyc = 'Временами'; - } - if($itd['tya'.$x]>79) - { - $tyc = 'Регулярны'; - } - if($itd['tya'.$x]>89) - { - $tyc = 'Часты'; - } - if($itd['tya'.$x]>=100) - { - $tyc = 'Всегда'; - } - $tr .= '
• '.$is['tya'.$x].': '.$tyc; - } - $x++; - } - $x = 1; - while($x<=7) - { - if(isset($itd['tym'.$x]) && $itd['tym'.$x]>0) - { - $tyc = 'Ничтожно редки'; - if($itd['tym'.$x]>6) - { - $tyc = 'Редки'; - } - if($itd['tym'.$x]>14) - { - $tyc = 'Малы'; - } - if($itd['tym'.$x]>34) - { - $tyc = 'Временами'; - } - if($itd['tym'.$x]>79) - { - $tyc = 'Регулярны'; - } - if($itd['tym'.$x]>89) - { - $tyc = 'Часты'; - } - if($itd['tym'.$x]>=100) - { - $tyc = 'Всегда'; - } - $tr .= '
• '.$is['tym'.$x].': '.$tyc; - } - $x++; - } - $x = 1; - while($x <= 4) - { - if(isset($itd['add_oza'.$x]) && $itd['add_oza'.$x]>0) - { - $tyc = 'Слабая'; - if($itd['add_oza'.$x] == 4) - { - $tyc = 'Посредственная'; - } - if($itd['add_oza'.$x] == 2) - { - $tyc = 'Нормальная'; - } - if($itd['add_oza'.$x] == 3) - { - $tyc = 'Хорошая'; - } - if($itd['add_oza'.$x] == 5) - { - $tyc = 'Великолепная'; - } - if($tyc != '') { - $tr .= '
• '.$is['oza'.$x].': '.$tyc; - } - } - $x++; - } - if(isset($itd['free_stats']) && $itd['free_stats']>0){ - echo '
Свободные распределения:
• Возможных распределений: '.$itd['free_stats']; - } -if($tr != '') { - echo '
Особенности:'.$tr; -} - $is2 = ''; + if (isset($itd['sv_yron_min'], $itd['sv_yron_max'])) { + $tr .= '
• Урон: ' . $itd['sv_yron_min'] . ' - ' . $itd['sv_yron_max']; + } + $x = 0; + while ($x < count($t)) { + $n = $t[$x]; + if (isset($itd['sv_' . $n])) { + $z = '+'; + if ($itd['sv_' . $n] < 0) { + $z = ''; + } + $tr .= '
• ' . $is[$n] . ': ' . $z . '' . $itd['sv_' . $n]; + } + $x++; + } + if ($itm['2too'] == 1) { + $tr .= '
• Второе оружие'; + } + if ($itm['2h'] == 1) { + $tr .= '
• Двуручное оружие'; + } + if (isset($itd['zonb'])) { + $tr .= '
• Зоны блокирования: '; + if ($itd['zonb'] > 0) { + $x = 1; + while ($x <= $itd['zonb']) { + $tr .= '+'; + $x++; + } + } else { + $tr .= '—'; + } + } - if(isset($itd['complect'])) - { - $is2 .= '
Дополнительная информация:'; - } - if(isset($itd['complect'])) - { - //не отображается - $com1 = array('name'=>'Неизвестный Комплект','x'=>0,'text'=>''); - $spc = mysql_query('SELECT * FROM `complects` WHERE `com` = "'.$itd['complect'].'" ORDER BY `x` ASC LIMIT 20'); - while($itmc = mysql_fetch_array($spc)) - { - $com1['name'] = $itmc['name']; - $com1['text'] .= '    • '.$itmc['x'].': '; - //действие комплекта - $i1c = 0; $i2c = 0; - $i1e = lookStats($itmc['data']); - while($i1c0) - { - $i3c = '+'.$i3c; - } - if($i2c>0) - { - $com1['text'] .= '    '.$is[$items['add'][$i1c]].': '.$i3c; - }else{ - $com1['text'] .= $is[$items['add'][$i1c]].': '.$i3c; - } - $com1['text'] .= '
'; - $i2c++; - } - $i1c++; - } - unset($i1c,$i2c,$i3c); - $com1['x']++; - } - $is2 .= '
• Часть комплекта: '.$com1['name'].'
'; - $is2 .= $com1['text']; - $is2 .= ''; - } - - $is2 .= ''; - - if($itm['info']!='') - { - $is2 .= '
Описание:
'.$itm['info'].'
'; - } - - if(isset($itd['info']) && $itd['info']!='') - { - $is2 .= '
'.$itd['info'].'
'; - } - - if(isset($itm['use_text']) && $itm['max_text']-$itm['use_text'] > 0) { - $is2 .= '
Количество символов: '.($itm['max_text']-$itm['use_text']).'
'; - } - - if(isset($itd['noremont']) && $itd['noremont']>0) - { - $is2 .= '
Предмет не подлежит ремонту
'; - } - - if(isset($itd['frompisher']) && $itd['frompisher']>0) - { - $is2 .= '
Предмет из подземелья
'; - } - - if(isset($itm['dn_delete']) && $itm['dn_delete']>0) - { - $is2 .= '
Предмет будет удален при выходе из подземелья
'; - } - - $is2 .= '
'; - -echo $is2; + if ($tr != '') { + echo '
Свойства предмета:' . $tr; + } -?> -
- 0) { + $tyc = 'Ничтожно редки'; + if ($itd['tya' . $x] > 6) { + $tyc = 'Редки'; + } + if ($itd['tya' . $x] > 14) { + $tyc = 'Малы'; + } + if ($itd['tya' . $x] > 34) { + $tyc = 'Временами'; + } + if ($itd['tya' . $x] > 79) { + $tyc = 'Регулярны'; + } + if ($itd['tya' . $x] > 89) { + $tyc = 'Часты'; + } + if ($itd['tya' . $x] >= 100) { + $tyc = 'Всегда'; + } + $tr .= '
• ' . $is['tya' . $x] . ': ' . $tyc; + } + $x++; + } + $x = 1; + while ($x <= 7) { + if (isset($itd['tym' . $x]) && $itd['tym' . $x] > 0) { + $tyc = 'Ничтожно редки'; + if ($itd['tym' . $x] > 6) { + $tyc = 'Редки'; + } + if ($itd['tym' . $x] > 14) { + $tyc = 'Малы'; + } + if ($itd['tym' . $x] > 34) { + $tyc = 'Временами'; + } + if ($itd['tym' . $x] > 79) { + $tyc = 'Регулярны'; + } + if ($itd['tym' . $x] > 89) { + $tyc = 'Часты'; + } + if ($itd['tym' . $x] >= 100) { + $tyc = 'Всегда'; + } + $tr .= '
• ' . $is['tym' . $x] . ': ' . $tyc; + } + $x++; + } + $x = 1; + while ($x <= 4) { + if (isset($itd['add_oza' . $x]) && $itd['add_oza' . $x] > 0) { + $tyc = 'Слабая'; + if ($itd['add_oza' . $x] == 4) { + $tyc = 'Посредственная'; + } + if ($itd['add_oza' . $x] == 2) { + $tyc = 'Нормальная'; + } + if ($itd['add_oza' . $x] == 3) { + $tyc = 'Хорошая'; + } + if ($itd['add_oza' . $x] == 5) { + $tyc = 'Великолепная'; + } + if ($tyc != '') { + $tr .= '
• ' . $is['oza' . $x] . ': ' . $tyc; + } + } + $x++; + } + if (isset($itd['free_stats']) && $itd['free_stats'] > 0) { + echo '
Свободные распределения:
• Возможных распределений: ' . $itd['free_stats']; + } + if ($tr != '') { + echo '
Особенности:' . $tr; + } + $is2 = ''; + + if (isset($itd['complect'])) { + $is2 .= '
Дополнительная информация:'; + } + if (isset($itd['complect'])) { + //не отображается + $com1 = ['name' => 'Неизвестный Комплект', 'x' => 0, 'text' => '']; + $spc = mysql_query('SELECT * FROM `complects` WHERE `com` = "' . $itd['complect'] . '" ORDER BY `x` ASC LIMIT 20'); + while ($itmc = mysql_fetch_array($spc)) { + $com1['name'] = $itmc['name']; + $com1['text'] .= '    • ' . $itmc['x'] . ': '; + //действие комплекта + $i1c = 0; + $i2c = 0; + $i1e = lookStats($itmc['data']); + while ($i1c < count($items['add'])) { + if (isset($i1e[$items['add'][$i1c]])) { + $i3c = $i1e[$items['add'][$i1c]]; + if ($i3c > 0) { + $i3c = '+' . $i3c; + } + if ($i2c > 0) { + $com1['text'] .= '    ' . $is[$items['add'][$i1c]] . ': ' . $i3c; + } else { + $com1['text'] .= $is[$items['add'][$i1c]] . ': ' . $i3c; + } + $com1['text'] .= '
'; + $i2c++; + } + $i1c++; + } + unset($i1c, $i2c, $i3c); + $com1['x']++; + } + $is2 .= '
• Часть комплекта: ' . $com1['name'] . '
'; + $is2 .= $com1['text']; + $is2 .= ''; + } + + $is2 .= ''; + + if ($itm['info'] != '') { + $is2 .= '
Описание:
' . $itm['info'] . '
'; + } + + if (isset($itd['info']) && $itd['info'] != '') { + $is2 .= '
' . $itd['info'] . '
'; + } + + if (isset($itm['use_text']) && $itm['max_text'] - $itm['use_text'] > 0) { + $is2 .= '
Количество символов: ' . ($itm['max_text'] - $itm['use_text']) . '
'; + } + + if (isset($itd['noremont']) && $itd['noremont'] > 0) { + $is2 .= '
Предмет не подлежит ремонту
'; + } + + if (isset($itd['frompisher']) && $itd['frompisher'] > 0) { + $is2 .= '
Предмет из подземелья
'; + } + + if (isset($itm['dn_delete']) && $itm['dn_delete'] > 0) { + $is2 .= '
Предмет будет удален при выходе из подземелья
'; + } + + $is2 .= '
'; + + echo $is2; + + ?> +
+ Требуется минимальное:
• Уровень: 4
• Выносливость: 16
• Сила: 16
Действует на:
• Мф. увертывания (%): +30
• Интуиция: +3
• Сила: +5
@@ -1199,97 +1570,116 @@ echo $is2; Возможно усиление до 10го уровня
*/ -?>
<?=$itm['name']?>
+ ?>
<?= $itm['name'] ?>
+
+ +

 

+
+

+ +

    
- -

 

-
-

- -

    
- - - - Предметы
- - - - - - -

- Амуниция
-    · Костыли 
-    · Эликсиры и еда 
- Заклинания
-    · Заклинания 
- Одежда
-    · Тяжелая броня 
-    · Легкая броня 
-    · Венки 
-    · Наручи 
-    · Обувь 
-    · Перчатки 
-    · Плащи 
-    · Поножи 
-    · Пояса 
-    · Рубахи 
-    · Шлемы 
- Оружие
-    · Ёлки 
-    · Дубины 
-    · Кинжалы 
-    · Мечи 
-    · Топоры 
-    · Посохи 
-    · Цветы и Букеты 
- Разное
-    · Компоненты 
-    · Магические предметы 
-    · Подарки 
-    · Руны 
-    · Прочие предметы 
- Щиты
-    · Щиты 
- Ювелирные товары
-    · Кольца 
-    · Ожерелья 
-    · Серьги 
-


- - -
 
- + + + + + + Предметы
+ + + + + + +
+
+ Амуниция
+    · Костыли 
+    · Эликсиры и еда 
+ Заклинания
+    · Заклинания 
+ Одежда
+    · Тяжелая броня 
+    · Легкая броня 
+    · Венки 
+    · Наручи 
+    · Обувь 
+    · Перчатки 
+    · Плащи 
+    · Поножи 
+    · Пояса 
+    · Рубахи 
+    · Шлемы 
+ Оружие
+    · Ёлки 
+    · Дубины 
+    · Кинжалы 
+    · Мечи 
+    · Топоры 
+    · Посохи 
+    · Цветы и Букеты 
+ Разное
+    · Компоненты 
+    · Магические предметы 
+    · Подарки 
+    · Руны 
+    · Прочие предметы 
+ Щиты
+    · Щиты 
+ Ювелирные товары
+    · Кольца 
+    · Ожерелья 
+    · Серьги 
+


+ + + + +   + + + - - - - - - - - + + + + + + + +
-  -
Copyright © «www.new-combats.com»

+
+   +
+
+
+ Copyright © «www.new-combats.com» +

+
diff --git a/jx/battle/log_text.php b/jx/battle/log_text.php index 91c22808..0ea2fb1c 100644 --- a/jx/battle/log_text.php +++ b/jx/battle/log_text.php @@ -1,7 +1,7 @@ \ No newline at end of file diff --git a/logs.php b/logs.php index d0c1121d..b74662d6 100644 --- a/logs.php +++ b/logs.php @@ -1,5 +1,6 @@ info['banned'] > 0) { header('location: /index.php'); @@ -70,7 +78,7 @@ if ($u->info['bithday'] == '01.01.1800' && $u->info['inTurnirnew'] == 0) { } error_reporting(E_ALL ^ E_NOTICE); -ini_set('display_errors', 'Off'); +ini_set('display_errors', 'on'); ini_set('max_execution_time', '120'); #--------для общаги, и позже для почты $sleep = $u->testAction('`vars` = "sleep" AND `uid` = "' . $u->info['id'] . '" LIMIT 1', 1); @@ -279,7 +287,7 @@ if ($u->info['battle'] == 0) { $btl_last = mysql_fetch_array(mysql_query('SELECT `id`,`battle` FROM `battle_users` WHERE `uid` = "' . $u->info['id'] . '" AND `finish` = "0" LIMIT 1')); } if (isset($btl_last['id']) && $u->info['battle'] == 0) { - include('modules_data/btl_.php'); + require_once('modules_data/btl_.php'); $u->info['battle_lsto'] = true; } elseif ($u->info['battle'] == 0) { @@ -358,73 +366,73 @@ if ($act != -2) { /*-----------------------*/ if (isset($_GET['worklist']) && $u->info['admin'] > 0) { - include('modules_data/worklist.php'); + require_once('modules_data/worklist.php'); } elseif (isset($_GET['security']) && !isset($u->tfer['id']) && $trololo == 1) { - include('modules_data/_changepass.php'); + require_once('modules_data/_changepass.php'); } elseif ($u->info['level'] >= 0 && isset($_GET['friends']) && !isset($u->tfer['id'])) { - include('modules_data/_friends.php'); + require_once('modules_data/_friends.php'); } elseif (($u->info['admin'] > 0 || $u->info['level'] > 7 || $u->info['align'] == 50) && isset($_GET['notepad']) && !isset($u->tfer['id'])) { - include('modules_data/notepad.php'); + require_once('modules_data/notepad.php'); } elseif ((($u->info['align'] > 1 && $u->info['align'] < 2) || $u->info['admin'] > 0) && isset($_GET['light']) && !isset($u->tfer['id'])) { if ($u->info['id'] == 1000001) { $u->info['admin'] = 0; die(); } - include('modules_data/_mod.php'); + require_once('modules_data/_mod.php'); } elseif ((($u->info['align'] > 3 && $u->info['align'] < 4) || $u->info['admin'] > 0) && isset($_GET['dark']) && !isset($u->tfer['id'])) { if ($u->info['id'] == 1000001) { $u->info['admin'] = 0; die(); } - include('modules_data/_mod.php'); + require_once('modules_data/_mod.php'); } elseif (isset($_GET['admin']) && $u->info['admin'] > 0) { if ($u->info['id'] == 1000001) { $u->info['admin'] = 0; die(); } if ($u->info['id'] == 7) { - include('modules_data/_light.php'); + require_once('modules_data/_light.php'); } else { - include('modules_data/_mod.php'); + require_once('modules_data/_mod.php'); } } elseif (isset($_GET['vip']) && !isset($u->tfer['id'])) { - include('modules_data/vip.php'); + require_once('modules_data/vip.php'); } elseif ((isset($_GET['zayvka']) && $u->info['battle'] == 0) || (isset($_GET['zayvka']) && ($_GET['r'] == 6 || $_GET['r'] == 7 || !isset($_GET['r'])) && $u->info['battle'] > 0) && !isset($u->tfer['id'])) { if ($u->room['zvsee'] == 1) { - include('modules_data/_zv2.php'); + require_once('modules_data/_zv2.php'); } else { - include('modules_data/_zv.php'); + require_once('modules_data/_zv.php'); } } elseif (isset($_GET['alh']) && $u->info['level'] >= 0 && !isset($u->tfer['id'])) { - include('modules_data/_alh.php'); + require_once('modules_data/_alh.php'); } elseif ($u->info['clan'] > 0 && isset($_GET['clan']) && !isset($u->tfer['id'])) { if ($u->info['id'] == 1000001) { $u->info['admin'] = 0; die(); } - include('modules_data/_clan.php'); + require_once('modules_data/_clan.php'); } elseif (isset($_GET['alhp']) && ($u->info['admin'] == 1 || $u->info['align'] == 50 || $u->info['align2'] == 50) && !isset($u->tfer['id'])) { if ($u->info['id'] == 1000001) { $u->info['admin'] = 0; die(); } - include('modules_data/_alhp.php'); + require_once('modules_data/_alhp.php'); //Панель букмекера } elseif (isset($_GET['bukmeker']) && $u->info['level'] > 0 && !isset($u->tfer['id'])) { - include('modules_data/_bukmeker.php'); + require_once('modules_data/_bukmeker.php'); //Панель светлого } elseif ($u->info['align'] >= 1 && $u->info['align'] < 2 && isset($_GET['1_panel']) && $u->info['level'] > 3 && !isset($u->tfer['id'])) { - include('modules_data/1_panel.php'); + require_once('modules_data/1_panel.php'); //Панель темного } elseif ($u->info['align'] >= 3 && $u->info['align'] < 4 && isset($_GET['3_panel']) && $u->info['level'] > 3 && !isset($u->tfer['id'])) { - include('modules_data/3_panel.php'); + require_once('modules_data/3_panel.php'); //Панель темного } elseif ($u->info['align'] >= 7 && $u->info['align'] < 8 && isset($_GET['7_panel']) && $u->info['level'] > 3 && !isset($u->tfer['id'])) { - include('modules_data/7_panel.php'); + require_once('modules_data/7_panel.php'); } elseif ($u->info['battle'] != 0) { //поединок if ((!isset($btl_last['id']) || $u->info['battle'] > 0) && !isset($u->info['battle_lsto'])) { - include('modules_data/btl_.php'); + require_once('modules_data/btl_.php'); echo ''; } @@ -437,36 +445,36 @@ if (isset($_GET['worklist']) && $u->info['admin'] > 0) { "; if ($u->info['dnow'] > 0) { - include('_incl_data/class/__dungeon.php'); + require_once('_incl_data/class/__dungeon.php'); } - include('modules_data/_dialog.php'); + require_once('modules_data/_dialog.php'); } elseif (isset($_GET['inv']) && !isset($u->tfer['id']) && $trololo == 1) { - include('modules_data/_inv.php'); + require_once('modules_data/_inv.php'); } elseif (isset($_GET['add_eff']) && !isset($u->tfer['id']) && $trololo == 1) { - include('modules_data/add_eff.php'); + require_once('modules_data/add_eff.php'); } elseif (isset($_GET['referals']) && $trololo == 1 && !isset($u->tfer['id'])) { - include('modules_data/_ref.php'); + require_once('modules_data/_ref.php'); } elseif (isset($_GET['obraz']) && !isset($u->tfer['id']) && $trololo == 1) { - include('modules_data/_obraz.php'); + require_once('modules_data/_obraz.php'); } elseif (isset($_GET['skills']) && !isset($u->tfer['id']) && $trololo == 1) { - include('modules_data/_umenie.php'); + require_once('modules_data/_umenie.php'); } elseif ((isset($_GET['transfer']) || isset($u->tfer['id'])) && $u->info['level'] >= $c['level_ransfer'] && $trololo == 1 && $u->info['inTurnir'] == 0 && $u->info['inTurnirnew'] == 0) { if ($u->info['allLock'] > time()) { - include('modules_data/_locations.php'); + require_once('modules_data/_locations.php'); echo ''; } else { - include('modules_data/_transfers.php'); + require_once('modules_data/_transfers.php'); } } elseif (isset($_GET['anketa']) && !isset($u->tfer['id']) && $trololo == 1) { - include('settings.php'); + require_once('settings.php'); } elseif (isset($_GET['newanimal']) && $trololo == 1) { - include('modules_data/_newanimal.php'); + require_once('modules_data/_newanimal.php'); } elseif (isset($_GET['act_trf']) && $u->room['block_all'] == 0) { - include('modules_data/act_trf.php'); + require_once('modules_data/act_trf.php'); } elseif (isset($_GET['titul']) && $u->room['block_all'] == 0) { - include('modules_data/titul.php'); + require_once('modules_data/titul.php'); } elseif (!isset($u->tfer['id'])) { - include('modules_data/_locations.php'); + require_once('modules_data/_locations.php'); } } diff --git a/modules_data/1_panel.php b/modules_data/1_panel.php index eda62d47..2a46c781 100644 --- a/modules_data/1_panel.php +++ b/modules_data/1_panel.php @@ -1,87 +1,75 @@ - - var elem = document.getElementById('se-pre-con'); - elem.parentNode.removeChild(elem); - - "; -if(!defined('GAME')) -{ - die(); +info['align'] !== 1) { + exit(); } -if($u->info['align']>=1 && $u->info['align']<2) { -if($u->error!='') -{ - echo ''.$u->error.'
'; + +if ($u->error) { + echo '' . $u->error . '
'; } -$vu = array(0,0,0,0,0,0,0); + //Абилки $item_light -$item_light = array( -"" => array( - array(5048,1,0,0,0,'usefromfile=1|nohaos=1|musor=2|noremont=1|tr_align=1|srok=86400|nosale=1|sudba=1',1) - //array(5049,1,0,0,0,'usefromfile=1|musor=1|noremont=1|useOnLogin=1|tr_align=1|srok=86400|nosale=1|sudba=1',1) - //Для темного//array(4398,113,0,0,0,'useOnLogin=1|onlyOne=1|oneType=37|noremont=1|musor=1|tr_align=1|sudba='.$u->info['login'].'|srok=86400|nosale=1',1), - - ), -); -$vi = array( -); +$item_light = [ + [5048, 1, 0, 0, 0, 'usefromfile=1|nohaos=1|musor=2|noremont=1|tr_align=1|srok=86400|nosale=1|sudba=1', 1], +]; +$vi = []; +$vnr = [0 => 'на сегодня', 1 => ' всего']; +$seet = ''; +foreach ($item_light as $item) { + if (!$item[1]) { + continue; + } + $itm = Db::getRow('select * from items_main where id = ?', [$item[0]]); + if (!$itm['id']) { + continue; + } + $vix = 0; + if ($item[4] === 0) { + $vix = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `time`>=' . strtotime('now 00:00:00') . ' AND `vars` = "dark_itm' . $itm['id'] . '"', + 2); + } else { + $vix = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `time`>=' . $vt['timeUse'] . ' AND `vars` = "dark_itm' . $itm['id'] . '" ', + 2); + } + $vix = $vix[0]; + if ($item[1] - $vix > 0 && $_GET['take_item_light_panel'] == $itm['id']) { + $nitm = $u->addItem($itm['id'], $u->info['id'], $item[5]); + $u->addAction(time(), 'dark_itm' . $itm['id'], ''); + echo 'Предмет "' . $itm['name'] . '" перемещен к Вам в инвентарь!

'; + } + + //Вывод предметов + $seet0 = ' '; + if ($item[1] - $vix > 0) { + $seet0 = '' . $seet0 . ''; + } else { + $seet0 = '' . $seet0 . ''; + } + $seet .= $seet0; +} + ?> - - - - - -

Светлая Сила с нами, собрат microLogin($u->info['id'],1)?>

- - -
-

Абилки:
(Чтобы забрать предмет просто нажмите на его изображение)

-

- 'на сегодня',1 => ' всего'); - while($i < count($item_light[$lightn_panel])) { - if($item_light[$lightn_panel][$i][1]>0) { - $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$item_light[$lightn_panel][$i][0].'" LIMIT 1')); - if(isset($itm['id'])) { - $vix = 0; - if($item_light[$lightn_panel][$i][4] == 0) { - $vix = $u->testAction('`uid` = "'.$u->info['id'].'" AND `time`>='.strtotime('now 00:00:00').' AND `vars` = "dark_itm'.$itm['id'].'"',2); - $vix = $vix[0]; - }else{ - $vix = $u->testAction('`uid` = "'.$u->info['id'].'" AND `time`>='.$vt['timeUse'].' AND `vars` = "dark_itm'.$itm['id'].'" ',2); - $vix = $vix[0]; - } - if($item_light[$lightn_panel][$i][1]-$vix > 0) { - if(isset($_GET['take_item_light_panel']) && $_GET['take_item_light_panel'] == $itm['id']) { - $nitm = $u->addItem($itm['id'],$u->info['id'],$item_light[$lightn_panel][$i][5]); - if($item_light[$lightn_panel][6]>0) { - } - $u->addAction(time(),'dark_itm'.$itm['id'],''); - echo 'Предмет "'.$itm['name'].'" перемещен к Вам в инвентарь!

'; - } - } - $seet0 = ''; - //Вывод предметов - $seet0 .= ' '; - if($item_light[$lightn_panel][$i][1]-$vix > 0) { - $seet0 = ''.$seet0.''; - }else{ - $seet0 = ''.$seet0.''; - } - $seet .= $seet0; - } - } - $i++; - } -} - echo $seet; - ?> -

- - \ No newline at end of file + + + +

Светлая Сила с нами, собрат microLogin($u->info['id'], 1) ?>

+
+ + +
+
+
Абилки:
(Чтобы забрать предмет просто нажмите на его изображение)
+
+
diff --git a/modules_data/location/ab/hramOLD.php b/modules_data/location/ab/hramOLD.php new file mode 100644 index 00000000..be3c1821 --- /dev/null +++ b/modules_data/location/ab/hramOLD.php @@ -0,0 +1,394 @@ +info['id'].'" AND `var` = "qsthram1" AND `val` = 1 LIMIT 1')); +if(isset($qst_hram['id'])) { + $qst_hram = true; +}else{ + $qst_hram = false; + unset($_GET['r']); +}*/ + +$qst_hram = true; + +if($u->room['file']=='ab/hram') +{ + if(isset($_GET['itm']) && $qst_hram == true) + { + + if($_GET['itm']>0) + { + if($_GET['r']==1) + { + $_GET['itm'] = (int)$_GET['itm']; + //Переплавка вещей + $resz = $u->plavka($_GET['itm'],1); + $re = ''.$resz.''; + unset($resz); + }elseif( $_GET['r'] == 2 ){ + //Переплавка рун + $resz = ''; + + $itm123 = explode('x',$_GET['itm']); + + $itm1 = round((int)$itm123[0]); + $itm2 = round((int)$itm123[1]); + $itm3 = round((int)$itm123[2]); + + + $itm1 = mysql_fetch_array(mysql_query('SELECT `a`.`id` AS `iid`,`a`.*,`b`.* FROM `items_users` AS `a` LEFT JOIN `items_main` AS `b` ON (`b`.`id` = `a`.`item_id` AND `b`.`type` = 31) WHERE `a`.`id` = "'.mysql_real_escape_string($itm1).'" AND `a`.`uid` = "'.$u->info['id'].'" AND `a`.`delete` = 0 AND `a`.`inShop` = 0 AND `a`.`inTransfer` = 0 LIMIT 1')); + $itm2 = mysql_fetch_array(mysql_query('SELECT `a`.`id` AS `iid`,`a`.*,`b`.* FROM `items_users` AS `a` LEFT JOIN `items_main` AS `b` ON (`b`.`id` = `a`.`item_id` AND `b`.`type` = 31) WHERE `a`.`id` = "'.mysql_real_escape_string($itm2).'" AND `a`.`uid` = "'.$u->info['id'].'" AND `a`.`delete` = 0 AND `a`.`inShop` = 0 AND `a`.`inTransfer` = 0 LIMIT 1')); + $itm3 = mysql_fetch_array(mysql_query('SELECT `a`.`id` AS `iid`,`a`.*,`b`.* FROM `items_users` AS `a` LEFT JOIN `items_main` AS `b` ON (`b`.`id` = `a`.`item_id` AND `b`.`type` = 31) WHERE `a`.`id` = "'.mysql_real_escape_string($itm3).'" AND `a`.`uid` = "'.$u->info['id'].'" AND `a`.`delete` = 0 AND `a`.`inShop` = 0 AND `a`.`inTransfer` = 0 LIMIT 1')); + + if($itm1['iid'] == $itm2['iid'] || $itm2['iid'] == $itm3['iid'] || $itm1['iid'] == $itm3['iid'] ) { + $resz = 'Не удалось расплавить одну руну, она сгорела.'; + mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `id` = "'.$itm3['iid'].'" OR `id` = "'.$itm2['iid'].'" OR `id` = "'.$itm1['iid'].'"'); + }elseif(!isset($itm1['id']) || !isset($itm2['id']) || !isset($itm3['id'])) { + $resz = 'Недостаточно компонентов для преобразования.'; + }elseif( $itm1['level'] != $itm2['level'] || $itm1['level'] != $itm3['level'] ) { + $resz = 'Руны должны быть одного уровня.'; + }elseif( $itm1['level'] == 1 ) { + //$resz = 'Унируны нельзя преобразовывать'; + $itm4 = array(); + $sp = mysql_query('SELECT * FROM `items_main` WHERE `level` = "'.$itm1['level'].'" AND `type` = 31 + AND `id` != "'.$itm1['item_id'].'" AND `id` != "'.$itm2['item_id'].'" AND `id` != "'.$itm3['item_id'].'" AND `id` < 6000'); + while( $pl = mysql_fetch_array($sp) ) { + $itm4[] = $pl; + } + $itm4 = $itm4[rand(0,count($itm4)-1)]; + mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `id` = "'.$itm3['iid'].'" OR `id` = "'.$itm2['iid'].'" OR `id` = "'.$itm1['iid'].'"'); + $u->rep['rep1'] += 10; + mysql_query('UPDATE `rep` SET `rep1` = "'.$u->rep['rep1'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + $u->addItem($itm4['id'],$u->info['id']); + $resz = 'Удачно преобразованы руны "'.$itm1['name'].'","'.$itm2['name'].'" и "'.$itm3['name'].'" в "'.$itm4['name'].'".'; + $resz .= '
Добавлена репутация Храма Знаний +10'; + }else{ + $itm4 = array(); + $sp = mysql_query('SELECT * FROM `items_main` WHERE `level` = "'.$itm1['level'].'" AND `type` = 31 + AND `id` != "'.$itm1['item_id'].'" AND `id` != "'.$itm2['item_id'].'" AND `id` != "'.$itm3['item_id'].'"'); + while( $pl = mysql_fetch_array($sp) ) { + $itm4[] = $pl; + } + $itm4 = $itm4[rand(0,count($itm4)-1)]; + mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `id` = "'.$itm3['iid'].'" OR `id` = "'.$itm2['iid'].'" OR `id` = "'.$itm1['iid'].'"'); + $u->rep['rep1'] += 1; + mysql_query('UPDATE `rep` SET `rep1` = "'.$u->rep['rep1'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + $u->addItem($itm4['id'],$u->info['id']); + $resz = 'Удачно преобразованы руны "'.$itm1['name'].'","'.$itm2['name'].'" и "'.$itm3['name'].'" в "'.$itm4['name'].'".'; + $resz .= '
Добавлена репутация Храма Знаний +1'; + } + + $re = ''.$resz.''; + unset($resz); + } + } + } +?> + + + + + +
+
Храм Знаний
+
'.$re.''; } ?>
+
+ + + + +
  + + + +
+ + + + + + + + +
+ + + + +
Центральная площадь
 
+

+  

+
+ + + + + + + + +
getInfoPers($u->info['id'],0); if($usee!=false){ echo $usee[0]; }else{ echo 'information is lost.'; } ?>
+ + + + + +
'.$re.''; } ?> + + + + +
+
  Форум  
+ +
src="https://img.new-combats.com/city/ap_exit.gif" width="57" height="26" class="aFilter" />
+
+
onclick="location.href='main.php?r=1'" title="Алтарь Предметов" src="https://img.new-combats.com/city/ap_altar1.gif" width="147" height="93" class="aFilter" />
+
onclick="location.href='main.php?r=2'" title="Алтарь Рун" src="https://img.new-combats.com/city/ap_altar2.gif" width="147" height="93" class="aFilter" />
+
src="https://img.new-combats.com/city/ap_exit.gif" width="57" height="26" class="aFilter" />
+ + +
+
+ + +
+ +
+
+ Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
+ Администрация.

+
+
+ genInv(11,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete` = "0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`data` NOT LIKE "%fromshop=2%" ORDER BY `lastUPD` DESC'); + if($itmAll[0]==0){ + $itmAllSee = 'ПУСТО (нет подходящих предметов)'; + }else{ + $itmAllSee = $itmAll[2]; + } + //Удачно растворен предмет "Укрепленный Костыль". Получена руна "Моно Бауни". + ?> + + + + + + + + + + +
microLogin($u->info['id'],1)?>Подходящие предметы в инвентаре
+ Репутация: rep['rep1']; ?> +

Предмет не выбран

+
+
+
+ Внимание!
+ Предметы при растворении и руны при слиянии необратимо теряются.
+
+ + + info['invBlock']==0){ echo $itmAllSee; }else{ echo '
Рюкзак закрыт.
Введите пароль:
'; } ?> +
+ +
+genInv(14,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete` = "0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `im`.`type` = 31 ORDER BY `lastUPD` DESC'); + if($itmAll[0]==0){ + $itmAllSee = 'ПУСТО (нет подходящих предметов)'; + }else{ + $itmAllSee = $itmAll[2]; + } + //Удачно растворен предмет "Укрепленный Костыль". Получена руна "Моно Бауни". + ?> + + + + + + + + + + +
microLogin($u->info['id'],1)?>Подходящие предметы в инвентаре
+ Репутация: rep['rep1']; ?> +

+ + + + + + + +
ПустоПустоПусто
+ +

+
+
+
+ Внимание!
+ Предметы при растворении и руны при слиянии необратимо теряются.
+
+ + + info['invBlock']==0){ echo $itmAllSee; }else{ echo '
Рюкзак закрыт.
Введите пароль:
'; } ?> +
+ +
+ + \ No newline at end of file diff --git a/modules_data/location/bank.bac.php b/modules_data/location/bank.bac.php new file mode 100644 index 00000000..81084832 --- /dev/null +++ b/modules_data/location/bank.bac.php @@ -0,0 +1,943 @@ +'; + $subject = mime_header_encode($subject, $data_charset, $send_charset); + $from = mime_header_encode($name_from, $data_charset, $send_charset) + .' <' . $email_from . '>'; + if($data_charset != $send_charset) { + $body = iconv($data_charset, $send_charset, $body); + } + $headers = "From: $from\r\n"; + $headers .= "Content-type: text/html; charset=$send_charset\r\n"; + + return mail($to, $subject, $body, $headers); + } + + function mime_header_encode($str, $data_charset, $send_charset) { + if($data_charset != $send_charset) { + $str = iconv($data_charset, $send_charset, $str); + } + return '=?' . $send_charset . '?B?' . base64_encode($str) . '?='; + } + } + +if($u->room['file']=='bank') +{ + $noc = $c['crtoecr']*2; //120 kr = 1 ekr. + $con = $c['ecrtocr']*2.5; //1 екр. = 30 кр. + function getNum($v) + { + $plid = $v; + $pi = iconv_strlen($plid); + if($pi<5) + { + $i = 0; + while($i<=5-$pi) + { + $plid = '0'.$plid; + $i++; + } + } + return $plid; + } + function getNumId($v) + { + $plid = $v; + $array = str_split($plid); + $ends=0; + $result=''; + for($i=0,$end=(count($array)-1);$i<=$end;$i++){ + if($array[$i]==0 and $ends==0){$array[$i]='';}else{$ends=1;} + $result.=$array[$i]; + } + //print_r($array); + return $result; + } + + if($u->info['allLock'] > time()) { + $u->bank = false; + } + + $re2 = ''; + if(isset($_GET['enter']) && !isset($u->bank['id'])) + { + $bank = mysql_fetch_array(mysql_query('SELECT * FROM `bank` WHERE `uid` = "'.$u->info['id'].'" AND `id` = "'.mysql_real_escape_string((int)$_POST['bank']).'" LIMIT 1')); + if(!isset($bank['id'])) + { + $re2 = 'Неверный номер счета.'; + }elseif($bank['pass']!=$_POST['pass']) + { + $pl = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `time` > "'.(time()-60*60).'" AND `vars` = "bank_bad_pass_'.mysql_real_escape_string($bank['id']).'" LIMIT 5')); + if($pl[0]>=3) + { + $re2 = 'Ваш счет был заблокирован на 1 час'; + }else{ + if($pl[0]==0) + { + $re2 = 'Неверный номер счета или пароль. Если вы трижды введете неверный номер счета или пароль, счет будет заблокирован на час'; + }else{ + $pp = array(0=>'ок',1=>'ка',2=>'ки',3=>'ки'); + $re2 = 'Неверный номер счета или пароль. У вас осталось '.(3-$pl[0]).' попыт'.$pp[3-$pl[0]].', в противном случаи счет будет заблокирован на час'; + } + mysql_query('INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`) VALUES ("'.$u->info['id'].'","'.time().'","'.$u->info['city'].'","'.$u->info['room'].'","bank_bad_pass_'.mysql_real_escape_string($bank['id']).'","'.mysql_real_escape_string($_SERVER['HTTP_X_REAL_IP']).'")'); + } + }else{ + + if($u->info['allLock'] > time()) { + echo ''; + }else{ + //вошли! + $bank['useNow'] = time()+12*60*60; + mysql_query('UPDATE `bank` SET `useNow` = "0" WHERE `id` != "'.$bank['id'].'" AND `uid` = "'.$u->info['id'].'" AND `useNow`!="0" LIMIT 1'); + mysql_query('UPDATE `bank` SET `useNow` = "'.$bank['useNow'].'" WHERE `id` = "'.$bank['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); + mysql_query('INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`) VALUES ("'.$u->info['id'].'","'.time().'","'.$u->info['city'].'","'.$u->info['room'].'","bank_good_pass_'.mysql_real_escape_string($bank['id']).'","'.mysql_real_escape_string($_SERVER['HTTP_X_REAL_IP']).'")'); + $u->bank = $bank; + } + } + }elseif(isset($_GET['res'])) + { + //echo $_GET['schet'].'
'; + $b_pass = mysql_fetch_array(mysql_query('SELECT * FROM `bank` WHERE `uid` = "'.$u->info['id'].'" AND `id` = "'.mysql_real_escape_string(getNumId($_GET['schet'])).'" ORDER BY `id` DESC LIMIT 1')); + if($b_pass['repass'] >= time()) + { + $re2 = 'Номера счетов и пароли к ним можно выслать только один раз в сутки'; + }else{ + mysql_query('INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`) VALUES ("'.$u->info['id'].'","'.time().'","'.$u->info['city'].'","'.$u->info['room'].'","bank_res","'.mysql_real_escape_string($_SERVER['HTTP_X_REAL_IP']).'")'); + $re2 = 'Выслан номер счета и пароль на email, указанный в анкете'; + mysql_query('UPDATE `bank` SET `repass` = "'.(time()+24*3600).'" WHERE `id` = "'.$b_pass['id'].'" LIMIT 1'); + send_mime_mail('Бойцовский Клуб - Support', + 'support@new-combats.com', + ''.$u->info['login'].'', + $u->info['mail'], + 'CP1251', // кодировка, в которой находятся передаваемые строки + 'KOI8-R', // кодировка, в которой будет отправлено письмо + 'Восстановление пароля от счета в банке персонажа '.$u->info['login'].'', + "Номер счета: ".getNum($b_pass['id'])."
Пароль: ".$b_pass['pass'].'

С уважением,
Администрация Бойцовского Клуба'); + + } + }elseif(isset($_GET['open']) && !isset($u->bank['id'])) + { + if( $_POST['rdn01'] == 2 && ($u->info['level'] >= 8 || $u->info['money4'] < 15 )) { + $re2 = 'Недостаточно зубов!'; + }elseif($u->info['money']>=3 || ($u->info['level'] < 8 && $u->info['money4'] >= 15 && $c['zuby'] == true )) + { + if( $_POST['pass1'] == '' || $_POST['pass1'] == ' ' ) { + $re2 = 'Вы не указали пароль!'; + }elseif( $_POST['pass1'] != $_POST['pass2'] ) { + $re2 = 'Пароли не совпадают!'; + }elseif( $u->info['money'] - 3 < 0 && $_POST['rdn01'] != 2 ) { + $re2 = 'У вас недостаточно кр.'; + }elseif($u->info['align']!=2) + { + $pass = rand(10000,91191); + $pass = htmlspecialchars($_POST['pass1'],NULL,'cp1251'); + $ins = mysql_query('INSERT INTO `bank` (`uid`,`create`,`pass`) VALUES ("'.$u->info['id'].'","'.time().'","'.$pass.'")'); + if($ins) + { + $bank = mysql_insert_id(); + if( $u->info['level'] < 8 && $_POST['rdn01'] == 2 && $c['zuby'] == true) { + $u->info['money4'] -= 15; + }else{ + $u->info['money'] -= 3; + } + $upd = mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'",`money4` = "'.$u->info['money4'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + $re2 = 'Счет №'.getNum($bank).' был успешно открыт.
Пароль от счета: '.$pass.'

(Сменить пароль можно в разделе "Управление счетом" после авторизации)'; + $u->addDelo(3,$u->info['id'],'Вы успешно открыли счет №'.getNum($bank).'',time(),$u->info['city'],'Bank.System',3,0,''); + }else{ + $re2 = 'Банк отказал в получении банковского счета.'; + } + }else{ + $re2 = 'Хаосники не могут создавать новые счета в банке.'; + } + }else{ + if( $u->info['level'] < 8 && $c['zuby'] == true ) { + $re2 = 'Для открытия счета необходимо иметь при себе 3.00 кр. или '.$u->zuby(15).''; + }else{ + $re2 = 'Для открытия счета необходимо иметь при себе 3.00 кр.'; + } + } + }elseif(isset($_GET['exit']) && isset($u->bank['id'])) + { + $u->bank = false; + mysql_query('UPDATE `bank` SET `useNow` = "0" WHERE `uid` = "'.$u->info['id'].'" AND `useNow`!="0" LIMIT 1'); + } + + if($u->info['allLock'] > time()) { + $u->bank = false; + } + + if(isset($u->bank['id'])) + { + if(isset($_POST['sd4']) && $u->newAct($_POST['sd4'])) + { + if(isset($_POST['transfer_kredit2']) && $u->info['admin']>0) + { + //перевод екредитов с одного счета на другой + $ub = mysql_fetch_array(mysql_query('SELECT * FROM `bank` WHERE `id` = "'.mysql_real_escape_string((int)$_POST['num2']).'" LIMIT 1')); + if(isset($ub['id']) && $ub['id']!=$u->bank['id']) + { + $ut = mysql_fetch_array(mysql_query('SELECT `id`,`level`,`city`,`room`,`login` FROM `users` WHERE `id` = "'.mysql_real_escape_string($ub['uid']).'" LIMIT 1')); + if($ut['level']>=0 || $ut['id']==$u->info['id'] || $u->info['admin']>0) + { + $mn = floor((int)($_POST['tansfer_sum2']*100)); + $mn = round(($mn/100),2); + $prc = 0; + $mn += $prc; + if($u->bank['money2']>=$mn) + { + if($mn<0.01 || $mn>1000000000) + { + $re2 = 'Неверно указана сумма'; + }else{ + $upd = mysql_query('UPDATE `bank` SET `money2` = "'.mysql_real_escape_string($u->bank['money2']-$mn).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); + if($upd) + { + $u->bank['money2'] -= $mn; + $ub['money2'] += $mn-$prc; + + mysql_query('UPDATE `users` SET `catch` = `catch` + "'.floor($mn-$prc).'" WHERE `id` = "'.$ut['id'].'" LIMIT 1'); + mysql_query('UPDATE `users` SET `frg` = `frg` + '.floor($mn).' WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + + mysql_query('UPDATE `bank` SET `money2` = "'.mysql_real_escape_string($ub['money2']).'" WHERE `id` = "'.$ub['id'].'" LIMIT 1'); + $re2 = 'Вы удачно перевели '.($mn-$prc).' екр. (комиссия '.$prc.' екр.) на счет №'.getNum($ub['id']).' персонажу "'.$ut['login'].'"'; + $u->addDelo(3,$ut['id'],'Получено '.($mn-$prc).' екр. со счета №'.getNum($u->bank['id']).' от персонажа "'.$u->info['login'].'", комиссия '.$prc.' екр. (Итого: '.$ub['money1'].' кр., '.$ub['money2'].' екр.)',time(),$ut['city'],'Bank.System',mysql_real_escape_string($mn-$prc),0,$ub['id']); + $u->addDelo(3,$u->info['id'],'Передано '.($mn-$prc).' екр. на счет №'.getNum($ub['id']).' персонажу "'.$ut['login'].'", комиссия '.$prc.' екр. (Итого: '.$u->bank['money1'].' кр., '.$u->bank['money2'].' екр.)',time(),$u->info['city'],'Bank.System',0,mysql_real_escape_string($mn),$u->bank['id']); + $log = '"'.$u->info['login'].'" ['.$u->info['level'].'] перевел со своего банковского счета №'.$u->bank['id'].' на счет №'.$ub['id'].' к персонажу "'.$ut['login'].'" ['.$ut['level'].'] '.($mn-$prc).' екр.'; + $u->addDelo(1,$u->info['id'],$log,time(),$u->info['city'],'Bank.System',0,0,''); + $u->addDelo(1,$ut['id'],$log,time(),$ut['city'],'Bank.System',0,0,''); + if($ut['id']!=$u->info['id']) + { + $alg = ''; + if($u->info['align']==50) + { + $alg = ''; + } + $text = '"'.$alg.'[login:'.$u->info['login'].']" перевел'.($u->info['sex']==0?"":"а").' вам '.($mn-$prc).' екр. со своего банковского счета №'.getNum($u->bank['id']).' на ваш банковский счет №'.getNum($ub['id']).'.'; + + mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES ('".$ut['city']."','".$ut['room']."','','".$ut['login']."','".$text."','".time()."','12','0','1')"); + } + }else{ + $re2 = 'Не удалось выполнить операцию'; + } + } + }else{ + $re2 = 'У вас нет '.$mn.' екр. на счете'; + } + }else{ + $re2 = 'Нельзя перевести кредиты на этот счет'; + } + }else{ + $re2 = 'Нельзя перевести кредиты на этот счет'; + } + }elseif(isset($_POST['transfer_kredit']) && $u->info['align']!=2) + { + //перевод кредитов с одного счета на другой + if($u->info['level']>=4 || $u->info['admin']>0) + { + $ub = mysql_fetch_array(mysql_query('SELECT * FROM `bank` WHERE `id` = "'.mysql_real_escape_string((int)$_POST['num']).'" LIMIT 1')); + if(isset($ub['id']) && $ub['id']!=$u->bank['id']) + { + $ut = mysql_fetch_array(mysql_query('SELECT `id`,`level`,`city`,`room`,`login` FROM `users` WHERE `id` = "'.mysql_real_escape_string($ub['uid']).'" LIMIT 1')); + if($ut['level']>=4 || $ut['id']==$u->info['id'] || $u->info['admin']>0) + { + $mn = floor((int)($_POST['tansfer_sum']*100)); + $mn = round(($mn/100),2); + $prc = round($mn*3/100,2); + $mn += $prc; + if($u->bank['money1']>=$mn) + { + if($mn<0.01 || $mn>1000000000) + { + $re2 = 'Неверно указана сумма'; + }else{ + $upd = mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($u->bank['money1']-$mn).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); + if($upd) + { + $u->bank['money1'] -= $mn; + $ub['money1'] += $mn-$prc; + mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($ub['money1']).'" WHERE `id` = "'.$ub['id'].'" LIMIT 1'); + $re2 = 'Вы удачно перевели '.($mn-$prc).' кр. (комиссия '.$prc.' кр.) на счет №'.getNum($ub['id']).' персонажу "'.$ut['login'].'"'; + $u->addDelo(3,$ut['id'],'Получено '.($mn-$prc).' кр. со счета №'.getNum($u->bank['id']).' от персонажа "'.$u->info['login'].'", комиссия '.$prc.' кр. (Итого: '.$ub['money1'].' кр., '.$ub['money2'].' екр.)',time(),$ut['city'],'Bank.System',mysql_real_escape_string($mn-$prc),0,$ub['id']); + $u->addDelo(3,$u->info['id'],'Передано '.($mn-$prc).' кр. на счет №'.getNum($ub['id']).' персонажу "'.$ut['login'].'", комиссия '.$prc.' кр. (Итого: '.$u->bank['money1'].' кр., '.$u->bank['money2'].' екр.)',time(),$u->info['city'],'Bank.System',0,mysql_real_escape_string($mn),$u->bank['id']); + $log = '"'.$u->info['login'].'" ['.$u->info['level'].'] перевел со своего банковского счета №'.$u->bank['id'].' на счет №'.$ub['id'].' к персонажу "'.$ut['login'].'" ['.$ut['level'].'] '.($mn-$prc).' кр. Дополнительно снято '.$prc.' кр. за услуги банка.'; + $u->addDelo(1,$u->info['id'],$log,time(),$u->info['city'],'Bank.System',0,0,''); + $u->addDelo(1,$ut['id'],$log,time(),$ut['city'],'Bank.System',0,0,''); + if($ut['id']!=$u->info['id']) + { + $text = '"[login:'.$u->info['login'].']" перевел'.($u->info['sex']==0?"":"а").' вам '.($mn-$prc).' кр. со своего банковского счета №'.getNum($u->bank['id']).' на ваш банковский счет №'.getNum($ub['id']).'.'; + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$ut['city']."','".$ut['room']."','','".$ut['login']."','".$text."','".time()."','6','0','1')"); + } + }else{ + $re2 = 'Не удалось выполнить операцию'; + } + } + }else{ + $re2 = 'У вас нет '.$mn.' кр. на счете'; + } + }else{ + $re2 = 'Нельзя перевести кредиты на этот счет'; + } + }else{ + $re2 = 'Нельзя перевести кредиты на этот счет'; + } + }else{ + $re2 = 'Передача кредитов возможна только с 4-го уровня'; + } + }elseif($u->info['align']!=2 && $u->info['haos'] < time() && $u->info['haos'] != 1 && $u->info['align'] !=50 && isset($_POST['convert_kredit']) && $c['crtoecr'] > 0) { + //обменять кр. на екр. + if($u->info['palpro'] > time()) { + $mn = ceil((int)($_POST['convert_sum2']*100)); + $mn = round(($mn/100),2); + $mne = round($mn/$noc,2); + $mn = round(($mn/100*103+5),2); + $sm = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "bank_kr_to_ekr_['.date('d.m.Y',time()).']" ORDER BY `id` DESC LIMIT 1',1); + $sm_lim = 100; + if(isset($sm['id']) && $sm['vals']+$mne > $sm_lim) { + if($sm['vals'] < $sm_lim) { + $re2 = 'На сегодня Вы можете обменять еще на '.($sm_lim-$sm['vals']).' екр.. (Примерно '.round( ( ($sm_lim-$sm['vals'])*$noc ) ,2).' кр.), текущий обмен на '.$mne.' екр..'; + }else{ + $re2 = 'На сегодня Вы исчерпали свой лимит обмена кр. на екр. ('.$sm_lim.' екр.)'; + } + }elseif($mn > 0 && $mne > 0 && $mn >= round((0.01*($noc*1.03)+5),2)) { + if($u->bank['money1'] >= $mn) { + if(!isset($sm['id'])) { + $u->addAction(time(),'bank_kr_to_ekr_['.date('d.m.Y').']',$mne); + }else{ + mysql_query('UPDATE `actions` SET `vals` = "'.($sm['vals']+$mne).'" WHERE `id` = "'.$sm['id'].'" LIMIT 1'); + } + $re2 = 'Вы успешно обменяли '.$mn.' кр. на '.$mne.' екр.'; + $u->bank['money1'] -= $mn; + $u->bank['money2'] += $mne; + + mysql_query('UPDATE `users` SET `catch` = `catch` + "'.round($mne,2).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + + mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($u->bank['money1']).'", `money2` = "'.mysql_real_escape_string($u->bank['money2']).'",`shara` = `shara` + "'.mysql_real_escape_string($mne).'" WHERE `id` = "'.mysql_real_escape_string($u->bank['id']).'" LIMIT 1'); + $log = '"'.$u->info['login'].'" ['.$u->info['level'].'] обменял '.$mn.' кр. на '.$mne.' екр., Банковский счет №'.$u->bank['id'].'.'; + $u->addDelo(1,$u->info['id'],$log,time(),$u->info['city'],'Bank.System',0,0,''); + $u->addDelo(3,$u->info['id'],'Вы успешно обменяли '.ceil((int)($_POST['convert_sum2']*100/100)).' кр. на '.$mne.' екр., комиссия '.round((ceil((int)($_POST['convert_sum2']*100/100))/100*3+5),2).' кр. (Итого: '.$u->bank['money1'].' кр., '.$u->bank['money2'].' екр.)',time(),$u->info['city'],'Bank.System',0,0,$u->bank['id']); + }else{ + $re2 = 'У вас нет '.$mn.' кр. на счете'; + } + }else{ + $re2 = 'Минимальная сумма для обмена составляет '.round((0.01*($noc*1.03)+5),2).' кр.'; + } + }else{ + $re2 = 'Вы должны пройти проверку на чистоту у Паладинов или Тарманов.'; + } + }elseif(isset($_POST['convert_ekredit'])) + { + //обменять екр. на кр. + $mn = ceil((int)($_POST['convert_sum']*100)); + $mn = round(($mn/100),2); + if($u->bank['money2']>=$mn) + { + if($mn<0.01 || $mn>1000000000) + { + $re2 = 'Неверно указана сумма'; + }else{ + $upd = mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($u->bank['money1']+($mn*$con)).'",`money2` = "'.mysql_real_escape_string($u->bank['money2']-$mn).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); + if($upd) + { + $u->bank['money1'] += $mn*$con; + $u->bank['money2'] -= $mn; + $u->addDelo(3,$u->info['id'],'Вы обменяли '.$mn.' екр. на '.($mn*$con).' кр., комиссия 0 кр. (Итого: '.$u->bank['money1'].' кр., '.$u->bank['money2'].' екр.)',time(),$u->info['city'],'Bank.System',0,mysql_real_escape_string($mn*$con),$u->bank['id']); + $re2 = 'Вы удачно обменяли '.$mn.' екр. на '.($mn*$con).' кр.'; + }else{ + $re2 = 'Не удалось выполнить операцию'; + } + } + }else{ + $re2 = 'У вас нет '.$mn.' екр. на счете'; + } + }elseif(isset($_POST['get_kredit'])) + { + //положить деньги на счет + $mn = floor((int)($_POST['get_sum']*100)); + $mn = round(($mn/100),2); + if($u->bank['money1']>=$mn) + { + if($mn<0.01 || $mn>1000000000) + { + $re2 = 'Неверно указана сумма (Снять '.((int)$_POST['get_sum']).' кр.)'; + }else{ + $upd = mysql_query('UPDATE `users` SET `money` = "'.mysql_real_escape_string($u->info['money']+$mn).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + if($upd) + { + $u->bank['money1'] -= $mn; + $u->info['money'] += $mn; + mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($u->bank['money1']).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); + $u->addDelo(3,$u->info['id'],'Вы сняли со счета '.$mn.' кр., комиссия 0 кр. (Итого: '.$u->bank['money1'].' кр., '.$u->bank['money2'].' екр.)',time(),$u->info['city'],'Bank.System',0,0,$u->bank['id']); + $re2 = 'Вы удачно сняли со счета '.$mn.' кр.'; + }else{ + $re2 = 'Не удалось выполнить операцию'; + } + } + }else{ + $re2 = 'У вас нет '.$mn.' кр. на счете'; + } + }elseif(isset($_POST['get_ekredit'])) + { + //положить деньги на счет + $mn = floor((int)($_POST['get_esum']*100)); + $mn = round(($mn/100),2); + if($u->bank['money2']>=$mn) + { + if($mn<0.01 || $mn>1000000000) + { + $re2 = 'Неверно указана сумма (Снять '.((int)$_POST['get_esum']).' Екр.)'; + }else{ + $upd = mysql_query('UPDATE `users` SET `money2` = "'.mysql_real_escape_string($u->info['money2']+$mn).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + if($upd) + { + $u->bank['money2'] -= $mn; + $u->info['money2'] += $mn; + mysql_query('UPDATE `bank` SET `money2` = "'.mysql_real_escape_string($u->bank['money2']).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); + $u->addDelo(3,$u->info['id'],'Вы сняли со счета '.$mn.' Екр., комиссия 0 Екр. (Итого: '.$u->bank['money1'].' кр., '.$u->bank['money2'].' екр.)',time(),$u->info['city'],'Bank.System',0,0,$u->bank['id']); + $re2 = 'Вы удачно сняли со счета '.$mn.' Екр.'; + }else{ + $re2 = 'Не удалось выполнить операцию'; + } + } + }else{ + $re2 = 'У вас нет '.$mn.' Екр. на счете'; + } + }elseif(isset($_POST['add_ekredit'])) + { + //положить деньги на счет + $mn = floor((int)($_POST['add_esum']*100)); + $mn = round(($mn/100),2); + if($u->info['money2']>=$mn) + { + if($mn<0.01 || $mn>1000000000) + { + $re2 = 'Неверно указана сумма (Пополнение счета)'; + }else{ + $upd = mysql_query('UPDATE `users` SET `money2` = "'.mysql_real_escape_string($u->info['money2']-$mn).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + if($upd) + { + $u->bank['money2'] += $mn; + $u->info['money2'] -= $mn; + mysql_query('UPDATE `bank` SET `money2` = "'.mysql_real_escape_string($u->bank['money2']).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); + $u->addDelo(3,$u->info['id'],'Вы положили на счет '.$mn.' Eкр., комиссия 0 Екр. (Итого: '.$u->bank['money1'].' кр., '.$u->bank['money2'].' екр.)',time(),$u->info['city'],'Bank.System',0,0,$u->bank['id']); + $re2 = 'Вы удачно положили на свой счет '.$mn.' Екр.'; + }else{ + $re2 = 'Не удалось выполнить операцию'; + } + } + }else{ + $re2 = 'У вас нет при себе '.$mn.' Екр.'; + } + }elseif(isset($_POST['add_kredit'])) + { + //положить деньги на счет + $mn = floor((int)($_POST['add_sum']*100)); + $mn = round(($mn/100),2); + if($u->info['money']>=$mn) + { + if($mn<0.01 || $mn>1000000000) + { + $re2 = 'Неверно указана сумма (Пополнение счета)'; + }else{ + $upd = mysql_query('UPDATE `users` SET `money` = "'.mysql_real_escape_string($u->info['money']-$mn).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + if($upd) + { + $u->bank['money1'] += $mn; + $u->info['money'] -= $mn; + mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($u->bank['money1']).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); + $u->addDelo(3,$u->info['id'],'Вы положили на счет '.$mn.' кр., комиссия 0 кр. (Итого: '.$u->bank['money1'].' кр., '.$u->bank['money2'].' екр.)',time(),$u->info['city'],'Bank.System',0,0,$u->bank['id']); + $re2 = 'Вы удачно положили на свой счет '.$mn.' кр.'; + }else{ + $re2 = 'Не удалось выполнить операцию'; + } + } + }else{ + $re2 = 'У вас нет при себе '.$mn.' кр.'; + } + }elseif(isset($_POST['change_psw2'])) + { + //смена пароля счета + $sm = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vals` = "id='.$u->bank['id'].'&new_pass='.$u->bank['pass'].'" AND `vars` = "bank_new_pass" AND `time` > "'.(time()-24*60*60).'" LIMIT 1',1); + if($_POST['new_psw1']!=$_POST['new_psw2']) + { + $re2 = 'Пароли не совпадают'; + }elseif(iconv_strlen($_POST['new_psw1'])<6 || iconv_strlen($_POST['new_psw1'])>32) + { + $re2 = 'Пароль не может быть короче 6 или длинее 32 символов'; + }elseif(isset($sm['id'])) + { + $re2 = 'Нельзя менять пароль чаще одного раза в день'; + }else{ + //меняем + $upd = mysql_query('UPDATE `bank` SET `pass` = "'.mysql_real_escape_string($_POST['new_psw1']).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); + if($upd) + { + $u->addAction(time(),'bank_new_pass','id='.$u->bank['id'].'&new_pass='.$_POST['new_psw1'].''); + $u->bank['pass'] = $_POST['new_psw1']; + $re2 = 'Пароль от счета №'.getNum($u->bank['id']).' был успешно изменен
Новый пароль: '.$u->bank['pass'].''; + $u->addDelo(3,$u->info['id'],'Был изменен пароль от счета.',time(),$u->info['city'],'Bank.System',0,0,$u->bank['id']); + }else{ + $re2 = 'Вам отказали в смене пароля'; + } + } + } + } + } + + if($re!=''){ echo '
'.$re.'
'; } ?> + + +
+ + + + + +
+
+

Банк

+
+
+
+ + + + + +
  + + + +
+ + + + + + +
+ + + + +
Страшилкина улица
+
+ + + + + + + + + + +
+
+ '.$re2.'
'; } + if(!isset($u->bank['id'])) + { + ?> + Мы предоставляем следующие услуги: +
    +
  1. Открытие счета
  2. Возможность положить/снять кредиты/еврокредиты со счета +
  3. Перевести кредиты/еврокредиты с одного счета на другой +
  4. Обменный пункт. Обмен еврокредитов на кредиты +
+ + +
+ Хотите открыть свой счет? Услуга платная: + +
+
+
+
Управление счетом + + +
+ + + + + +
Номер счета
Пароль
+
+
+
+
+ > +
+
+ Забыли пароль? Можно его выслать на email, номер счета:
+
+
+ + + + +
+ + + + + + + +

Управление счетом

  +Счёт №: bank['id']); ?> [x]
+
+
+
У вас на счете + + + + + + + + + +
Кредитов:round2($u->bank['money1']); ?>
Еврокредитов:round2($u->bank['money2']); ?>

При себе наличных:round2($u->info['money']); ?> кр.
При себе наличных:round2($u->info['money2']); ?> Екр.
+
+
+
Внимание! Некоторые услуги банка платные, о размере взымаемой комиссии написано в соответствующем разделе.
+ + + + + + +
+ + + + + + + + + + info['align']!=2 && $u->info['haos'] < time() && $u->info['haos'] != 1 && $c['crtoecr'] > 0) { ?> + + + + info['admin']>1000) + { + ?> + + + + + + + + + + +
+ Пополнить счет + Сумма + + кр. + +
+ Сумма + + Екр. + +
+
+ Перевести кредиты на другой счет + Сумма + + кр.
+ Номер счета куда перевести кредиты + +
+ +
+ Комиссия составляет 3.00 % от суммы, но не менее 1.00 кр. +
+ Обменный пункт + Обменять еврокредиты на кредиты.
+ Курс 1 екр. = .00 кр.
+ Сумма + + екр. + /> +
+ Обменный пункт + Обменять кредиты на еврокредиты.
+ Курс кр. = 1.00 екр.
+ Сумма + + кр. +
+ Комиссия составляет 3.00 % от суммы, а так-же 5.00 кр. + +
+ Перевести еврокредиты на другой счет + Сумма + + екр.
+ Номер счета куда перевести кредиты + +
+ +
+ Комиссия составляет 0.00 % от суммы, но не менее 0.01 екр. +
+ Настройки + У вас разрешена высылка номера счета и пароля на email. Если вы не уверены в своем email, или убеждены, что не забудете свой номер счета и пароль к нему, то можете запретить высылку пароля на email. Это убережет вас от кражи кредитов с вашего счета в случае взлома вашего email. Но если вы сами забудете свой номер счета и/или пароль, вам уже никто не поможет!
+ +
+ Сменить пароль
+ + + + + + + + + +
Новый пароль
Введите новый пароль повторно
+ +
+ +
 
+
+ + + + + + + + + + + + +
+ Снять со счета + Сумма + + кр. + +
+ Сумма + + Eкр. + +
+
+ Курс еврокредита к мировой валюте + + + + + + + + + + + + + + + + + + + + + + + +
Данные на без учета комиссий
1 екр. =
10UAH = 1 Еврокредит
0.35USD = 1 Еврокредит
20RUB = 1 Еврокредит
0.29EUR = 1 Еврокредит
+
+ Последние операции + + info['id'].'" AND `dop` = "'.$u->bank['id'].'" AND `type` = "3" ORDER BY `time` DESC LIMIT 21'); + while($pl = mysql_fetch_array($sp)) + { + ?> + + + + +
'.date('d.m.Y H:i',$pl['time']).' '; echo $pl['text']; ?>
+
+
+Сумма указанная в окне оповещения и суммы взымаемая\начисляемая могут различаться. + \ No newline at end of file diff --git a/modules_data/location/btl_.php b/modules_data/location/btl_.php index 7e4d0661..1c5ec920 100644 --- a/modules_data/location/btl_.php +++ b/modules_data/location/btl_.php @@ -435,7 +435,7 @@ function looklogrep(text,vars) { text = replaceAll('{u1}','' + data['login1'] + '',text); text = replaceAll('{u2}','' + data['login2'] + '',text); - if( data['prm'] != undefined ) { + if(!empty(data['prm'])) { data['prm'] = replaceAll("rvnO","=",data['prm']); } diff --git a/test1.php b/test1.php deleted file mode 100644 index 47b2a0b5..00000000 --- a/test1.php +++ /dev/null @@ -1,5 +0,0 @@ - -- 2.45.2 From 42714daedaee33d5c932a8ba2c1a038dedd8410e Mon Sep 17 00:00:00 2001 From: Ivor Barhansky Date: Thu, 25 Aug 2022 14:23:36 +0300 Subject: [PATCH 2/5] =?UTF-8?q?closes=20#17,=20=D0=B2=D0=B5=D0=BB=D0=B8?= =?UTF-8?q?=D0=BA=D0=BE=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B8=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BB=D0=B0?= =?UTF-8?q?=D1=81=D1=81=D0=BE=D0=B2=20=D0=B4=D0=BB=D1=8F=20=D0=B0=D0=B2?= =?UTF-8?q?=D1=82=D0=BE=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D1=87=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0,=20=D0=B0=D0=BA=D1=82=D1=83=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BA=D0=BE=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AI.php | 397 +- _incl_data/__config.php | 9 +- _incl_data/class/{__battle.php => Battle.php} | 37 +- _incl_data/class/BotLogic.php | 1024 ++++ _incl_data/class/BotPriemLogic.php | 399 ++ _incl_data/class/CalculateFromString.php | 63 + _incl_data/class/Chat.php | 85 + _incl_data/class/Dialog.php | 1398 +++++ _incl_data/class/Dungeon.php | 1813 +++++++ _incl_data/class/DungeonEditor.php | 609 +++ .../class/{__zv.php => FightRequest.php} | 1271 +++-- .../class/{__filter_class.php => Filter.php} | 41 +- _incl_data/class/GameDealer.php | 245 + _incl_data/class/Insallah/Achievements.php | 2 +- _incl_data/class/Insallah/Config.php | 1 - _incl_data/class/Insallah/Core/Db.php | 58 +- _incl_data/class/{__magic.php => Magic.php} | 47 +- _incl_data/class/MobileDetect.php | 1004 ++++ _incl_data/class/{_cron_.php => Priems.php} | 854 ++- _incl_data/class/PriemsMain.php | 14 - _incl_data/class/{__quest.php => Quests.php} | 17 +- .../class/{__seasons.php => Season.php} | 12 +- _incl_data/class/Telegram.php | 170 + _incl_data/class/Tournir.php | 491 ++ _incl_data/class/{__user.php => User.php} | 126 +- _incl_data/class/UserRegister.php | 28 + _incl_data/class/__chat_class.php | 189 - _incl_data/class/__db_connect.php | 48 +- _incl_data/class/__dungeon.php | 1956 ------- _incl_data/class/__reg.php | 405 -- _incl_data/class/__telegram.php | 197 - _incl_data/class/__turnir.php | 539 -- _incl_data/class/bot.logic.php | 1339 ----- _incl_data/class/bot.priem.php | 516 -- _incl_data/class/dialog.class.php | 1501 ------ _incl_data/class/magic/Elemental/Fire.php | 4 +- _incl_data/class/magic/__magic.php | 2 +- _incl_data/class/mobile.php | 1231 ----- _incl_data/class/pay.php | 243 - _incl_data/class/priem/121.php | 6 +- _incl_data/class/priem/122.php | 6 +- _incl_data/class/priem/123.php | 6 +- _incl_data/class/priem/124.php | 6 +- _incl_data/class/priem/125.php | 6 +- _incl_data/class/priem/21.php | 2 - _incl_data/class/priem/22.php | 6 +- _incl_data/class/priem/23.php | 6 +- _incl_data/class/priem/243.php | 2 +- _incl_data/class/priem/244.php | 4 +- _incl_data/class/priem/25.php | 4 +- _incl_data/class/priem/252.php | 6 +- _incl_data/class/priem/26.php | 4 +- _incl_data/class/priem/260.php | 4 +- _incl_data/class/priem/261.php | 2 +- _incl_data/class/priem/263.php | 173 +- _incl_data/class/priem/265.php | 180 +- _incl_data/class/priem/267.php | 82 +- _incl_data/class/priem/27.php | 4 +- _incl_data/class/priem/276.php | 2 - _incl_data/class/priem/277.php | 2 - _incl_data/class/priem/28.php | 4 +- _incl_data/class/priem/294.php | 26 +- _incl_data/class/priem/295.php | 26 +- _incl_data/class/priem/296.php | 26 +- _incl_data/class/priem/299.php | 24 +- _incl_data/class/priem/300.php | 24 +- _incl_data/class/priem/301.php | 24 +- _incl_data/class/priem/33.php | 9 +- _incl_data/class/priem/34.php | 4 +- _incl_data/class/priem/42.php | 6 +- _incl_data/class/priem/56.php | 4 +- _incl_data/class/priem/57.php | 4 +- _incl_data/class/priem/58.php | 4 +- _incl_data/class/priem/59.php | 4 +- _incl_data/class/priem/60.php | 4 +- _incl_data/class/priem/67.php | 4 +- _incl_data/class/priem/68.php | 4 +- _incl_data/class/priem/69.php | 4 +- _incl_data/class/priem/70.php | 6 +- _incl_data/class/priem/71.php | 6 +- _incl_data/class/priem/72.php | 6 +- _incl_data/class/priem/73.php | 1 - _incl_data/class/priem/74.php | 1 - _incl_data/class/priem/75.php | 1 - _incl_data/class/priem/77.php | 1 - _incl_data/class/priem/78.php | 1 - _incl_data/class/priem/79.php | 1 - _incl_data/class/priem/81.php | 6 +- _incl_data/class/priem/82.php | 6 +- _incl_data/class/priem/83.php | 6 +- _incl_data/class/priem/84.php | 6 +- _incl_data/class/priems/curse_01.php | 48 +- _incl_data/class/priems/itm286.end.php | 1 - _incl_data/class/priems/itm347.end.php | 1 - _incl_data/class/priems/moment.php | 38 +- _incl_data/class/quest/dailyquest.php | 2 +- admin.php | 578 -- balance.php | 656 ++- bandit.php | 297 +- bonuss.php | 62 +- breakchaos.php | 233 +- buttons.php | 2281 ++++---- cgi-bin/buttons.php | 986 ---- clans_inf.php | 585 +- cron/battle_dell.php | 84 +- cron/battle_finish.php | 17 +- cron/battle_save.php | 6 +- cron/clear.php | 5 +- cron/comission.php | 5 +- cron/cron_clear.php | 9 +- cron/tom_check.php | 72 +- cron_GoBattle.php | 96 +- cron_autozv.php | 40 - cron_bot_core.php | 273 +- cron_bs.php | 1 - cron_dungeon_getOut.php | 4 +- cron_dungeon_goBots.php | 759 +-- cron_dungeon_save.php | 47 +- cron_killusers.php | 360 +- cron_prizhaot.php | 50 +- cron_psh.php | 155 +- cron_tower.php | 1858 ++++--- cron_turnir.php | 150 +- cron_vs.php | 113 - cron_zv.php | 76 +- dn_editor.php | 2480 +++++---- dn_editor_bots.php | 139 +- dn_editor_botsAll.php | 70 +- dn_editor_bots_itms.php | 144 +- dn_editor_class.php | 693 --- dncon.php | 153 +- dress.php | 89 - editor_shop.php | 274 +- ekr.bac.php | 2258 ++++---- ekr.php | 1029 ++++ enter.php | 728 ++- fastpanel.php | 53 - fight/take.team.php | 173 +- forum_script/_forum.class.php | 1516 +++--- forum_script/index.php | 1992 ++++--- head/buttons.php | 1114 ---- hmonitor.php | 318 +- inf.php | 4752 +++++++++-------- item_edit_data.php | 37 +- items_editor.php | 874 +-- jx/battle/refresh.php | 499 +- jx/battle/refresh_bot.php | 476 +- jx/battle/refresh_vip.php | 586 +- jx/dungeon.php | 486 +- jx/post.php | 59 +- logs.php | 1670 +++--- lotowork.php | 260 +- lotoworkekr.php | 266 +- main.php | 223 +- main_bot.php | 674 +-- map.php | 17 +- modules_data/1_panel.php | 2 +- modules_data/_NewLocations.php | 2 +- modules_data/_bukmeker.php | 235 +- modules_data/_dialog.php | 84 +- modules_data/_inv-new.php | 6 +- modules_data/_inv-old.php | 32 +- modules_data/_inv.php | 948 ++-- modules_data/_locations.php | 2 +- modules_data/_umenie.php | 4283 +++++++++------ modules_data/_zv.php | 10 +- modules_data/_zv2.php | 2 +- modules_data/btl_.php | 478 +- modules_data/btl_bac.php | 463 +- modules_data/location/__zv.php | 1349 ----- modules_data/location/_locations.php | 2 +- modules_data/location/ab/izlom2.php | 285 +- modules_data/location/btl_.php | 1864 ++++--- modules_data/location/dragopsh.php | 1859 +++---- modules_data/location/dungeon.php | 2374 ++++---- modules_data/location/enterptp.php | 2 +- modules_data/location/izlom2.php | 277 +- modules_data/location/turnir.php | 14 +- modules_data/titul.php | 11 +- modules_data/vip.php | 1 - mult.php | 62 +- mults.php | 25 +- myexp.php | 41 +- online.php | 532 +- quest_dlg_edit.php | 89 +- recovery.php | 193 +- reg.php | 658 +-- register.php | 2121 +++++--- reting_pers.php | 14 +- ruin_characteristics.php | 399 +- ruins.php | 27 +- ruletka.php | 1367 +++-- ruletka2.php | 1371 +++-- seasons.php | 487 +- settings.php | 1025 ++-- shop_editor.php | 7 +- sms.php | 31 +- social.php | 2 +- spam.php | 255 +- telegraf.php | 527 +- testing.php | 551 +- towerlog.php | 152 +- transfer.php | 827 +-- 203 files changed, 38783 insertions(+), 39766 deletions(-) rename _incl_data/class/{__battle.php => Battle.php} (99%) create mode 100644 _incl_data/class/BotLogic.php create mode 100644 _incl_data/class/BotPriemLogic.php create mode 100644 _incl_data/class/CalculateFromString.php create mode 100644 _incl_data/class/Chat.php create mode 100644 _incl_data/class/Dialog.php create mode 100644 _incl_data/class/Dungeon.php create mode 100644 _incl_data/class/DungeonEditor.php rename _incl_data/class/{__zv.php => FightRequest.php} (80%) rename _incl_data/class/{__filter_class.php => Filter.php} (62%) create mode 100644 _incl_data/class/GameDealer.php rename _incl_data/class/{__magic.php => Magic.php} (99%) create mode 100644 _incl_data/class/MobileDetect.php rename _incl_data/class/{_cron_.php => Priems.php} (75%) delete mode 100644 _incl_data/class/PriemsMain.php rename _incl_data/class/{__quest.php => Quests.php} (99%) rename _incl_data/class/{__seasons.php => Season.php} (90%) create mode 100644 _incl_data/class/Telegram.php create mode 100644 _incl_data/class/Tournir.php rename _incl_data/class/{__user.php => User.php} (98%) create mode 100644 _incl_data/class/UserRegister.php delete mode 100644 _incl_data/class/__chat_class.php delete mode 100644 _incl_data/class/__dungeon.php delete mode 100644 _incl_data/class/__reg.php delete mode 100644 _incl_data/class/__telegram.php delete mode 100644 _incl_data/class/__turnir.php delete mode 100644 _incl_data/class/bot.logic.php delete mode 100644 _incl_data/class/bot.priem.php delete mode 100644 _incl_data/class/dialog.class.php delete mode 100644 _incl_data/class/mobile.php delete mode 100644 _incl_data/class/pay.php delete mode 100644 admin.php delete mode 100644 cgi-bin/buttons.php delete mode 100644 cron_autozv.php delete mode 100644 cron_vs.php delete mode 100644 dn_editor_class.php delete mode 100644 dress.php create mode 100644 ekr.php delete mode 100644 fastpanel.php delete mode 100644 head/buttons.php delete mode 100644 modules_data/location/__zv.php diff --git a/AI.php b/AI.php index 34c7dc21..0fa85209 100644 --- a/AI.php +++ b/AI.php @@ -7,234 +7,221 @@ */ -if(isset($_GET['m1'])) { - define('GAME',true); - - setlocale(LC_CTYPE ,"ru_RU.CP1251"); - - include('_incl_data/__config.php'); - include('_incl_data/class/__db_connect.php'); - - $sp = mysql_query('SELECT * FROM `users_recombats` WHERE `email` != "" ORDER BY `name` DESC LIMIT 7000'); - while( $pl = mysql_fetch_array($sp) ) { - echo "
".$pl['email']; - } -}elseif(isset($_GET['bk1'])) { - define('GAME',true); - - setlocale(LC_CTYPE ,"ru_RU.CP1251"); - - include('_incl_data/__config.php'); - include('_incl_data/class/__db_connect.php'); - include('_incl_data/class/__user.php'); - - $ins = 'Вещи БК-1:
'; - $sp = mysql_query('SELECT * FROM `items_main` WHERE `geni` = 1'); - while( $pl = mysql_fetch_array($sp) ) { - - $po = mysql_fetch_array(mysql_query('SELECT * FROM `items_main_data` WHERE `items_id` = "'.$pl['id'].'" LIMIT 1')); - $po = $u->lookStats($po['data']); - - if(!isset($po['add_minAtack']) && isset($po['sv_minAtack'])) { - $po['add_minAtack'] = $po['sv_minAtack']; - $po['add_maxAtack'] = $po['sv_maxAtack']; - } - - $ins .= 'INSERT INTO `items_main` ( +if (isset($_GET['m1'])) { + define('GAME', true); + + setlocale(LC_CTYPE, "ru_RU.CP1251"); + + include_once '_incl_data/__config.php'; + include_once '_incl_data/class/__db_connect.php'; + + $sp = mysql_query('SELECT * FROM `users_recombats` WHERE `email` != "" ORDER BY `name` DESC LIMIT 7000'); + while ($pl = mysql_fetch_array($sp)) { + echo "
" . $pl['email']; + } +} elseif (isset($_GET['bk1'])) { + define('GAME', true); + + setlocale(LC_CTYPE, "ru_RU.CP1251"); + + include('_incl_data/__config.php'); + include('_incl_data/class/__db_connect.php'); + $u = User::start(); + + $ins = 'Вещи БК-1:
'; + $sp = mysql_query('SELECT * FROM `items_main` WHERE `geni` = 1'); + while ($pl = mysql_fetch_array($sp)) { + + $po = mysql_fetch_array( + mysql_query('SELECT * FROM `items_main_data` WHERE `items_id` = "' . $pl['id'] . '" LIMIT 1') + ); + $po = $u->lookStats($po['data']); + + if (!isset($po['add_minAtack']) && isset($po['sv_minAtack'])) { + $po['add_minAtack'] = $po['sv_minAtack']; + $po['add_maxAtack'] = $po['sv_maxAtack']; + } + + $ins .= 'INSERT INTO `items_main` ( `id`, `name`, `img`, `art`, `type`, `inslot`, `use_magic`, `price`, `price2`, `iznosMAXi`, `massa`, `tr_level`, `tr_s1`, `tr_s2`, `tr_s3`, `tr_s4`, `tr_s5`, `tr_s6`, `add_s1`, `add_s2`, `add_s3`, `add_s4`, `add_s5`, `add_s6`, `add_hp`, `add_mp`, `add_m1`, `add_m2`, `add_m3`, `add_m4`, `add_b1`, `add_b2`, `add_b3`, `add_b4`, `add_attack_min`, `add_attack_max` ,`tr_a1`,`tr_a2`,`tr_a3`,`tr_a4`,`tr_mg1`,`tr_mg2`,`tr_mg3`,`tr_mg4`,`tr_mg5`,`tr_mg6`,`tr_mg7` ,`add_a1`,`add_a2`,`add_a3`,`add_a4`,`add_mg1`,`add_mg2`,`add_mg3`,`add_mg4`,`add_mg5`,`add_mg6`,`add_mg7` ) VALUES '; - $ins .= '( + $ins .= '( NULL, - "'.$pl['name'].'", - "'.$pl['img'].'", - "'.( 0 + round( $po['art'] ) ).'", - "'.$pl['type'].'", - "'.$pl['inslot'].'", + "' . $pl['name'] . '", + "' . $pl['img'] . '", + "' . (0 + round($po['art'])) . '", + "' . $pl['type'] . '", + "' . $pl['inslot'] . '", "", - "'.$pl['price1'].'", - "'.$pl['price2'].'", - "'.$pl['iznosMAXi'].'", - "'.$pl['massa'].'", - "'.( 0 + round( $po['tr_lvl'] ) ).'", - "'.( 0 + round( $po['tr_s1'] ) ).'", - "'.( 0 + round( $po['tr_s2'] ) ).'", - "'.( 0 + round( $po['tr_s3'] ) ).'", - "'.( 0 + round( $po['tr_s4'] ) ).'", - "'.( 0 + round( $po['tr_s5'] ) ).'", - "'.( 0 + round( $po['tr_s6'] ) ).'", - "'.( 0 + round( $po['add_s1'] ) ).'", - "'.( 0 + round( $po['add_s2'] ) ).'", - "'.( 0 + round( $po['add_s3'] ) ).'", - "'.( 0 + round( $po['add_s4'] ) ).'", - "'.( 0 + round( $po['add_s5'] ) ).'", - "'.( 0 + round( $po['add_s6'] ) ).'", - "'.( 0 + round( $po['add_hpAll'] ) ).'", - "'.( 0 + round( $po['add_mpAll'] ) ).'", - "'.( 0 + round( $po['add_m1'] ) ).'", - "'.( 0 + round( $po['add_m2'] ) ).'", - "'.( 0 + round( $po['add_m3'] ) ).'", - "'.( 0 + round( $po['add_m4'] ) ).'", - "'.( 0 + round( $po['add_mib1'] ) ).'", - "'.( 0 + round( $po['add_mib2'] ) ).'", - "'.( 0 + round( $po['add_mib3'] ) ).'", - "'.( 0 + round( $po['add_mib4'] ) ).'", - "'.( 0 + round( $po['add_minAtack'] ) ).'", - "'.( 0 + round( $po['add_maxAtack'] ) ).'", - "'.( 0 + round( $po['tr_a1'] ) ).'", - "'.( 0 + round( $po['tr_a2'] ) ).'", - "'.( 0 + round( $po['tr_a3'] ) ).'", - "'.( 0 + round( $po['tr_a4'] ) ).'", - "'.( 0 + round( $po['tr_mg1'] ) ).'", - "'.( 0 + round( $po['tr_mg2'] ) ).'", - "'.( 0 + round( $po['tr_mg3'] ) ).'", - "'.( 0 + round( $po['tr_mg4'] ) ).'", - "'.( 0 + round( $po['tr_mg5'] ) ).'", - "'.( 0 + round( $po['tr_mg6'] ) ).'", - "'.( 0 + round( $po['tr_mg7'] ) ).'", - "'.( 0 + round( $po['add_a1'] ) ).'", - "'.( 0 + round( $po['add_a2'] ) ).'", - "'.( 0 + round( $po['add_a3'] ) ).'", - "'.( 0 + round( $po['add_a4'] ) ).'", - "'.( 0 + round( $po['add_mg1'] ) ).'", - "'.( 0 + round( $po['add_mg2'] ) ).'", - "'.( 0 + round( $po['add_mg3'] ) ).'", - "'.( 0 + round( $po['add_mg4'] ) ).'", - "'.( 0 + round( $po['add_mg5'] ) ).'", - "'.( 0 + round( $po['add_mg6'] ) ).'", - "'.( 0 + round( $po['add_mg7'] ) ).'" + "' . $pl['price1'] . '", + "' . $pl['price2'] . '", + "' . $pl['iznosMAXi'] . '", + "' . $pl['massa'] . '", + "' . (0 + round($po['tr_lvl'])) . '", + "' . (0 + round($po['tr_s1'])) . '", + "' . (0 + round($po['tr_s2'])) . '", + "' . (0 + round($po['tr_s3'])) . '", + "' . (0 + round($po['tr_s4'])) . '", + "' . (0 + round($po['tr_s5'])) . '", + "' . (0 + round($po['tr_s6'])) . '", + "' . (0 + round($po['add_s1'])) . '", + "' . (0 + round($po['add_s2'])) . '", + "' . (0 + round($po['add_s3'])) . '", + "' . (0 + round($po['add_s4'])) . '", + "' . (0 + round($po['add_s5'])) . '", + "' . (0 + round($po['add_s6'])) . '", + "' . (0 + round($po['add_hpAll'])) . '", + "' . (0 + round($po['add_mpAll'])) . '", + "' . (0 + round($po['add_m1'])) . '", + "' . (0 + round($po['add_m2'])) . '", + "' . (0 + round($po['add_m3'])) . '", + "' . (0 + round($po['add_m4'])) . '", + "' . (0 + round($po['add_mib1'])) . '", + "' . (0 + round($po['add_mib2'])) . '", + "' . (0 + round($po['add_mib3'])) . '", + "' . (0 + round($po['add_mib4'])) . '", + "' . (0 + round($po['add_minAtack'])) . '", + "' . (0 + round($po['add_maxAtack'])) . '", + "' . (0 + round($po['tr_a1'])) . '", + "' . (0 + round($po['tr_a2'])) . '", + "' . (0 + round($po['tr_a3'])) . '", + "' . (0 + round($po['tr_a4'])) . '", + "' . (0 + round($po['tr_mg1'])) . '", + "' . (0 + round($po['tr_mg2'])) . '", + "' . (0 + round($po['tr_mg3'])) . '", + "' . (0 + round($po['tr_mg4'])) . '", + "' . (0 + round($po['tr_mg5'])) . '", + "' . (0 + round($po['tr_mg6'])) . '", + "' . (0 + round($po['tr_mg7'])) . '", + "' . (0 + round($po['add_a1'])) . '", + "' . (0 + round($po['add_a2'])) . '", + "' . (0 + round($po['add_a3'])) . '", + "' . (0 + round($po['add_a4'])) . '", + "' . (0 + round($po['add_mg1'])) . '", + "' . (0 + round($po['add_mg2'])) . '", + "' . (0 + round($po['add_mg3'])) . '", + "' . (0 + round($po['add_mg4'])) . '", + "' . (0 + round($po['add_mg5'])) . '", + "' . (0 + round($po['add_mg6'])) . '", + "' . (0 + round($po['add_mg7'])) . '" );'; - $ins .= "\n".'
'; - } - - echo $ins; - - die(); + $ins .= "\n" . '
'; + } + + echo $ins; + + die(); } -if( isset($_GET['test'])) { - $i = 3; - - - function yrn($sila) { - $r = 0; - - $level = $_GET['test']; - - $r = 2 + $level + $sila - round($sila / 5); - - return $r; - } - - - while( $i <= 100 ) { - echo ' '; - echo $i.' = '.yrn($i).''; - echo '

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

'; - $i++; - } - - die(); +if (isset($_GET['test'])) { + $i = 3; + + + function yrn($sila) + { + return 2 + $_GET['test'] + $sila - round($sila / 5); + } + + + while ($i <= 100) { + echo ' '; + echo $i . ' = ' . yrn($i); + echo '
'; + $i++; + } + + die(); } -function getIP() { - if(isset($_SERVER['HTTP_X_REAL_IP'])) return $_SERVER['HTTP_X_REAL_IP']; - return $_SERVER['REMOTE_ADDR']; +function getIP() +{ + return isset($_SERVER['HTTP_X_REAL_IP']) ? $_SERVER['HTTP_X_REAL_IP'] : $_SERVER['REMOTE_ADDR']; } -if(isset($_GET['robot'])) { - -}elseif(getIP() != $_SERVER['SERVER_ADDR'] && getIP() != '127.0.0.1' && getIP() != '' && getIP() != '31.131.116.166') { - if( !isset($_GET['test'])) { - die(getIP().'
'.$_SERVER['SERVER_ADDR']); - } +if (!isset($_GET['robot']) && getIP() != $_SERVER['SERVER_ADDR'] && getIP() != '127.0.0.1' && getIP() != '' && getIP( + ) != '31.131.116.166' && !isset($_GET['test'])) { + die(getIP() . '
' . $_SERVER['SERVER_ADDR']); } -define('GAME',true); +const GAME = true; -setlocale(LC_CTYPE ,"ru_RU.CP1251"); +setlocale(LC_CTYPE, "ru_RU.CP1251"); include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); -include('_incl_data/class/bot.priem.php'); -include('_incl_data/class/bot.logic.php'); -function e($t) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #'.date('d.m.Y').' %'.date('H:i:s').' (Критическая ошибка): '.mysql_real_escape_string($t).'","capitalcity","LEL","6","1","-1")'); +$count = [0, 0, 0, 0, 0, 0]; + +function inuser_go_btl($id) +{ + if (isset($id['id'])) { + file_get_contents( + 'https://new-combats.com/jx/battle/refresh.php?uid=' . $id['id'] . '&cron_core=' . md5( + $id['id'] . '_brfCOreW@!_' . $id['pass'] + ) . '&pass=' . $id['pass'] + ); + } } -$count = array( - 0, - 0, - 0, - 0, - 0, - 0 +$sp = mysql_query( + 'SELECT `u`.* , `s`.* FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `u`.`id` = `s`.`id` WHERE `u`.`pass` = "botforpeople" ORDER BY `s`.`nextAct` ASC LIMIT 200' ); -function inuser_go_btl($id) { - if(isset($id['id'])) { - file_get_contents('https://new-combats.com/jx/battle/refresh.php?uid='.$id['id'].'&cron_core='.md5($id['id'].'_brfCOreW@!_'.$id['pass']).'&pass='.$id['pass']); - } +$btltest = []; + +while ($pl = mysql_fetch_array($sp)) { + + $i++; + + if ($pl['zv'] == 0 && ($pl['battle'] == 0 || !isset($btltest[$pl['battle']]) || $btltest[$pl['battle']] < 10)) { + + $btltest[$pl['battle']]++; + + if ($pl['timereg'] == 0) { + mysql_query('UPDATE `users` SET `timereg` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } else { + mysql_query('UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + + if ($pl['bot'] == 0) { + mysql_query('UPDATE `stats` SET `bot` = "2" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + + mysql_query('UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + + BotLogic::start($pl['id']); + + } else { + + if ($pl['zv'] > 0) { + BotLogic::start($pl['id']); + } + + if ($pl['timereg'] == 0) { + mysql_query('UPDATE `users` SET `timereg` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } else { + mysql_query('UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + + if ($pl['bot'] == 0) { + mysql_query('UPDATE `stats` SET `bot` = "2" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + mysql_query('UPDATE `stats` SET `nextAct` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + + echo '*'; + } + echo '+'; + echo '[' . $pl['login'] . '] -> Действие: ' . $pl['ipreg'] . ' , ожидаем: ' . ($pl['timeMain'] - time( + )) . ' сек., заявка: ' . $pl['zv'] . ', поединок: ' . $pl['battle'] . ''; + echo '
'; } - -$sp = mysql_query('SELECT `u`.* , `s`.* FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `u`.`id` = `s`.`id` WHERE `u`.`pass` = "botforpeople" ORDER BY `s`.`nextAct` ASC LIMIT 200'); - -$btltest = array(); - -while($pl = mysql_fetch_array($sp)) { - - $i++; - - if( $pl['zv'] == 0 && ($pl['battle'] == 0 || !isset($btltest[$pl['battle']]) || $btltest[$pl['battle']] < 10)) { - - $btltest[$pl['battle']]++; - - if( $pl['timereg'] == 0 ) { - mysql_query('UPDATE `users` SET `timereg` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - }else{ - mysql_query('UPDATE `users` SET `online` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - - if( $pl['bot'] == 0 ) { - mysql_query('UPDATE `stats` SET `bot` = "2" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - - mysql_query('UPDATE `users` SET `online` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - - botLogic::start( $pl['id'] ); - - }else{ - - if( $pl['zv'] > 0 ) { - botLogic::start( $pl['id'] ); - } - - if( $pl['timereg'] == 0 ) { - mysql_query('UPDATE `users` SET `timereg` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - }else{ - mysql_query('UPDATE `users` SET `online` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - - if( $pl['bot'] == 0 ) { - mysql_query('UPDATE `stats` SET `bot` = "2" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - mysql_query('UPDATE `stats` SET `nextAct` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `online` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - - echo '*'; - } - echo '+'; - echo '['.$pl['login'].'] -> Действие: '.$pl['ipreg'].' , ожидаем: '.($pl['timeMain']-time()).' сек., заявка: '.$pl['zv'].', поединок: '.$pl['battle'].''; - echo '
'; -} -?> diff --git a/_incl_data/__config.php b/_incl_data/__config.php index ea039956..e148e520 100644 --- a/_incl_data/__config.php +++ b/_incl_data/__config.php @@ -87,9 +87,10 @@ spl_autoload_register(function ($className) { __DIR__ . '/class/' . str_replace('\\', '/', $className . '.php'), __DIR__ . '/class/' . $className . '.php' ]; - foreach ($fileName as $file) - if (file_exists($file)) { - require_once $file; - break; + foreach ($fileName as $file) { + if (file_exists($file)) { + require_once $file; + break; + } } }); diff --git a/_incl_data/class/__battle.php b/_incl_data/class/Battle.php similarity index 99% rename from _incl_data/class/__battle.php rename to _incl_data/class/Battle.php index a92357d4..3d1061b3 100644 --- a/_incl_data/class/__battle.php +++ b/_incl_data/class/Battle.php @@ -1,14 +1,13 @@ -info['money3']; $this->users[$i]['lose'] += 1; - //Добавляем эффект ослабления - /*if($this->users[$i]['level']>=4 && $this->info['dungeon'] == 0 && $this->stats[$i]['silver'] < 2){ - $noOsl = 0; - $nn = 0; - while($nnstats[$i]['effects'])){ - if($this->stats[$i]['effects'][$nn]['id_eff']==5){ - $noOsl = 1; - } - $nn++; - } - if($noOsl==0){ - if($this->users[$i]['id'] != 3874647) { - $magic->oslablenie($this->users[$i]['id']); - } - } - }*/ - // mysql_query('UPDATE `users` SET `swin` = 0, `slose` = `slose` + 1 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); // $act01 = 2; @@ -5288,10 +5270,10 @@ class battleClass } //Выделение из лог текста - public function addlt($a, $id, $s, $rnd) + public function addlt($a, $id, $s, $rnd = null) { global $log_text; - if ($rnd == null) { + if ($rnd === null) { $rnd = rand(0, (count($log_text[$s][$id]) - 1)); } return '{' . $a . 'x' . $id . 'x' . $rnd . '}'; @@ -11801,6 +11783,3 @@ class battleClass //Конец спасения } - -$btl = new battleClass; -?> diff --git a/_incl_data/class/BotLogic.php b/_incl_data/class/BotLogic.php new file mode 100644 index 00000000..3cbf8fd2 --- /dev/null +++ b/_incl_data/class/BotLogic.php @@ -0,0 +1,1024 @@ + ['timeout' => 30]]); + $val = file_get_contents('https://new-combats.com/jx/battle/refresh_bot.php?uid=' . $id['id'] . '&cron_core=' . md5($id['id'] . '_brfCOreW@!_' . $id['pass']) . '&pass=' . $id['pass'] . '&' . $txt, false, $ctx); + echo '[' . $val . ']
'; + unset($val); + } + } + + static function battle_priems() + { + //используем приемы в бою + if (self::$st['hpNow'] > 0 && self::$bot['battle'] > 0) { + + $pr = explode('|', self::$bot['priems']); + $rz = explode('|', self::$bot['priems_z']); + $i = 0; + while ($i < count($pr)) { + if ($pr[$i] > 0) { + self::$pr[$pr[$i]] = $rz[$i]; + } + $i++; + } + $i = 0; + while ($i < count($pr)) { + if ($rz[$i] < 1 && $pr[$i] > 0) { + //Можно использовать прием, подключаем логику + BotPriemLogic::start($i, $pr[$i]); + } + $i++; + } + self::$pr = false; + } + } + + static function clear_bot() + { + + //Очистка бота, обнуляем его до [0], удаляем эффекты, предметы и т.д, а текущему ставим логин delete + + //Удаляем сообщения в чате + mysql_query('DELETE FROM `chat` WHERE `to` = "' . self::$bot['login'] . '"'); + //Удаляем шмотки и эффекты + mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . self::$bot['id'] . '"'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . self::$bot['id'] . '"'); + + //Удаляем статы и поле в юзерс + mysql_query('DELETE FROM `users` WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `stats` WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `online` WHERE `uid` = "' . self::$bot['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `actions` WHERE `uid` = "' . self::$bot['id'] . '" LIMIT 1'); + + } + + static function inuser_go_main($id, $txt = '') + { + if (isset($id['id'])) { + $ctx = stream_context_create(['https' => ['timeout' => 1]]); + file_get_contents('https://new-combats.com/main_bot.php?uid=' . $id['id'] . '&cron_core=' . md5($id['id'] . '_brfCOreW@!_' . $id['pass']) . '&pass=' . $id['pass'] . '&' . $txt, false, $ctx); + } + } + + static function inuser_go_zv($id, $txt = '') + { + if (isset($id['id'])) { + $ctx = stream_context_create(['https' => ['timeout' => 1]]); + file_get_contents('https://new-combats.com/main_bot.php?zayvka=1&r=4&uid=' . $id['id'] . '&cron_core=' . md5($id['id'] . '_brfCOreW@!_' . $id['pass']) . '&pass=' . $id['pass'] . '&' . $txt, false, $ctx); + } + } + + //ПРоверка на файтрум + static function test_fr($id, $city = 'capitalcity') + { + return $city != 'capitalcity' || $id == 0 || $id == 2 || $id == 4 || $id == 5 || $id == 7 || $id == 377; + } + + //Действия бота вне боя + static function actions() + { + + global $u; + + if (self::$bot['battle'] == 0 && self::$bot['zv'] == 0 && self::$bot['pass'] == 'saintlucia') { + + //Можно: сменить фулл, перейти в другую комнату, входить наймом, делать бафы + + //Переходим в другую комнату + if (true == false && self::$bot['a1'] != 0 && self::$bot['a1'] != self::$bot['room']) { + + self::_loc(self::$bot['a1']); + + } else { + + self::update('a1', 0); + + //CAPITAL + if (self::$bot['city'] == 'capitalcity' && !self::test_fr(self::$bot['room'])) { + + if (self::$bot['exp'] > 400000 && self::$bot['level'] == 8) { + self::$bot['exp'] = 400000; + mysql_query('UPDATE `stats` SET `exp` = "400000" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + } elseif (self::$bot['exp'] > 3500000 && self::$bot['level'] == 9) { + self::$bot['exp'] = 3500000; + mysql_query('UPDATE `stats` SET `exp` = "3500000" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + } + + //Действие в комнате + //Магазин + //Покупаем кристалл вечности + if (self::$bot['room'] == 10 && self::$bot['level'] == 5 && self::$bot['exp'] >= 12499) { + $cr = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `item_id` = "1204" AND `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" LIMIT 1')); + if (!isset($cr['id'])) { + //Покупаем кристалл + $u->addItem(1204, self::$bot['id']); + } + } + //Переходим в комнату для сражений + self::_loc(self::_loc_zv()); + } + } + + //Если бот уже набрал опыт для перехода на 6-ой + if (self::$bot['level'] == 5 && self::$bot['exp'] >= 12499) { + $cr = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `item_id` = "1204" AND `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" LIMIT 1')); + if (!isset($cr['id'])) { + self::update('a1', 10); + } + } + + //Похоже что боту пора сменить комплект )) + if (self::$bot['clss'] == 0) { + + //Выбираем новый класс и шмотки :) + + //Меняем класс + self::$bot['clss'] = rand(1, 4); + + $x = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" ')); + + if ($x[0] > 0) { + + if ($x[0] > 1) { + + $x = rand(1, $x[0]); + //выбираем 1 из нескольких + $da = ['ASC', 'DESC', 'DESC', 'ASC']; + $da = $da[rand(0, 5)]; + $com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" ORDER BY `id` ' . $da . ' LIMIT ' . ($x - 1) . ',1')); + } else { + $com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" LIMIT 1')); + } + + if (!isset($com['id'])) { + + $com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` < "' . (self::$bot['level']) . '" ORDER BY `id` DESC LIMIT 1')); + + } + + if (isset($com['id'])) { + + mysql_query('UPDATE `users` SET `clss` = "' . self::$bot['clss'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + + /* Забираем старые шмотки и эффекты */ + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `gift` = "" AND `item_id` != "1204" AND `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"'); + mysql_query('UPDATE `items_users` SET `iznosNOW` = "0" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"'); + mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"'); + + /* Обновляем статы и приемы */ + + if ($com['pr'] == '') { + $i = 1; + while ($i <= 18) { + $com['pr'] .= $com['p' . $i] . '|'; + $i++; + } + $com['pr'] .= '0'; + } + + mysql_query('UPDATE `stats` SET `stats` = "' . $com['stats'] . '",`priems` = "' . $com['pr'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + + $i = 1; + while ($i <= 20) { + if ($com['e' . $i] > 0) { + //Выдаем и надеваем предмет + //$it = $u->addItem($com['e'.$i],self::$bot['id']); + $eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $com['e' . $i] . '" LIMIT 1')); + mysql_query('INSERT INTO `eff_users` (`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`,`no_Ace`) VALUES ("' . $eff['oneType'] . '","' . $eff['id2'] . '","' . self::$bot['id'] . '","' . $eff['mname'] . '","' . (time() + 9640000) . '","' . $eff['mdata'] . '","' . $eff['noAce'] . '")'); + } + $i++; + } + + $i = 1; + while ($i <= 20) { + if ($com['w' . $i] > 0) { + //Выдаем и надеваем предмет + $it = $u->addItem($com['w' . $i], self::$bot['id']); + $eff1 = mysql_fetch_array(mysql_query('SELECT * FROM `items_shop` WHERE `item_id` = "' . $com['w' . $i] . '" LIMIT 1')); + if ($it > 0) { + mysql_query('UPDATE `items_users` SET `inOdet` = "' . $i . '",`delete` = "0", `1price` = "' . $eff1['price_1'] . '" WHERE `uid` = "' . self::$bot['id'] . '" AND `id` = "' . $it . '" LIMIT 1'); + } + } + $i++; + } + } + } + } + + //если бот уже 1-ый уровень, а сидит в новичках :) кидаем его в залы + if (self::$bot['city'] == 'capitalcity' && self::$bot['level'] < 2 && self::$bot['room'] == 0 && self::$bot['a1'] == 0) { + self::_loc(self::_loc_zv()); + } + } + } + + public $bot_last_action = []; + + //Включаем логику бота + static function start($id) + { + if (!isset($bot_last_action[$id])) { + global $u; + $bot_last_action[$id]++; + self::$bot = mysql_fetch_array(mysql_query('SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON `st`.`id` = `u`.`id` WHERE `u`.`id` = "' . mysql_real_escape_string($id) . '" AND `u`.`banned` = "0" LIMIT 1')); + + if (isset(self::$bot['id'])) { + + self::$st = $u->getStats(self::$bot, 0); + + //Заходим ботом в онлайн + self::_online(); + + if (self::$bot['battle'] > 0) { + + //Действия бота в поединке + self::$btl = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "' . mysql_real_escape_string(self::$bot['battle']) . '" AND `team_win` = "-1" LIMIT 1')); + if (isset(self::$btl['id'])) { + + $go_bot = false; + $go_txt = ''; + + $a1 = mysql_fetch_array(mysql_query('SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE `battle` = "' . self::$btl['id'] . '" AND `uid1` = "' . self::$bot['id'] . '" ORDER BY `time` ASC LIMIT 1')); + + //Проверяем возможность использования приемов и делаем список что использовать + //используем приемы + self::battle_priems(); + + //Бот сделал удар, но никто не ответил, проверяем таймаут и если что заходим + if (isset($a1['id']) && $a1['time'] + self::$btl['timeout'] < time()) { + $go_bot = true; + } + + //ТУТ test + $a2 = mysql_fetch_array(mysql_query('SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE `battle` = "' . self::$btl['id'] . '" AND `uid2` = "' . self::$bot['id'] . '" ORDER BY `time` ASC LIMIT 1')); + if (isset($a2['uid1'])) { + mysql_query('UPDATE `stats` SET `enemy` = "' . $a2['uid1'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + } + $a3 = mysql_fetch_array(mysql_query('SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE `battle` = "' . self::$btl['id'] . '" AND `uid2` = "' . self::$bot['id'] . '" ORDER BY `time` ASC LIMIT 1')); + if (isset($a3['uid2'])) { + mysql_query('UPDATE `stats` SET `enemy` = "' . $a3['uid2'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + } + //Размен с противником + + + self::$enemy = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . self::$bot['enemy'] . '" LIMIT 1')); + + } else { + + //Заходим на персонажа + self::inuser_go_btl(self::$bot); + + //Поединок уже завершился, выкидываем из боя + self::$bot['battle'] = 0; + mysql_query('UPDATE `users` SET `battle` = "' . self::$bot['battle'] . '" WHERE `id` = "' . mysql_real_escape_string(self::$bot['id']) . '" LIMIT 1 '); + } + + } else { + + //Действия бота вне поединка + if (self::$bot['timeMain'] < time()) { + + mysql_query('UPDATE `chat` SET `time` = "' . time() . '" WHERE `to` = "' . self::$bot['login'] . '" AND `time` = "-1"'); + + //Действие возможно произвести + if (self::$bot['ipreg'] == 1 || self::$bot['ipreg'] == 2 || self::$bot['ipreg'] == 4) { + //Принимаем только хаоты + self::$bot['ipreg'] = 3; + } + if (self::$bot['ipreg'] == 5) { + //Подаем только хаоты + self::$bot['ipreg'] = 7; + } + // + if (self::$bot['ipreg'] == 0 || !self::test_fr(self::$bot['room'])) { + + //Обновляем эффекты + $com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" LIMIT 1')); + if (isset($com['id'])) { + $eft = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" LIMIT 1')); + if (!isset($eft['id'])) { + mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"'); + $i = 1; + while ($i <= 20) { + if ($com['e' . $i] > 0) { + //Выдаем и надеваем предмет + //$it = $u->addItem($com['e'.$i],self::$bot['id']); + $eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $com['e' . $i] . '" LIMIT 1')); + mysql_query('INSERT INTO `eff_users` (`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`,`no_Ace`) VALUES ("' . $eff['oneType'] . '","' . $eff['id2'] . '","' . self::$bot['id'] . '","' . $eff['mname'] . '","' . (time() + 86400 * 7) . '","' . $eff['mdata'] . '","' . $eff['noAce'] . '")'); + } + $i++; + } + } + } + + if (self::$bot['level'] >= 13 && self::$bot['clan'] == 0 && self::$bot['align'] == 0) { + //обнуляем бота + self::clear_bot(); + } + + //Только-что из поединка, хиляется + if (!self::test_fr(self::$bot['room'])) { + + //В какой-то локации, видимо что-то делаем + + } elseif (self::$st['hpNow'] >= self::$st['hpAll']) { + echo 1; + //Приступаем к активной деятельности :) + mysql_query('UPDATE `stats` SET `zv`= "0",`team`= "0",`hpNow` = "' . self::$st['hpNow'] . '",`mpNow` = "' . self::$st['mpNow'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `ipreg` = "' . self::new_action() . '",`mod_zvanie` = "Стажер" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + + } else { + + if (self::$bot['mod_zvanie'] == 'Стажер100500') { + //Надеваем комплект + обновляем эффекты + mysql_query('UPDATE `eff_users` SET `timeUse` = "' . (time() + 7200) . '" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" AND `v1` != "priem" LIMIT 12'); + mysql_query('UPDATE `items_users` SET `inOdet` = "0" WHERE `uid` = "' . self::$bot['id'] . '" AND `inOdet` > 0 AND `delete` = "0"'); + $sp = mysql_query('SELECT `u`.`id`,`st`.`inslot`,`st`.`2too` FROM `items_users` AS `u` LEFT JOIN `items_main` AS `st` ON `st`.`id` = `u`.`item_id` WHERE `u`.`inOdet` = 0 AND `st`.`inslot` > 0 AND `st`.`inSlot` <= 20'); + $in = []; + while ($pl = mysql_fetch_array($sp)) { + $od = $pl['inslot']; + + if ($od == 10 && $in[10] > 0) { + if ($in[11] > 0) { + if ($in[12] == 0) { + $od = 12; + } + } else { + $od = 11; + } + } + + if ($od == 3 && $in[3] > 0 && $pl['2too'] > 0) { + if ($in[14] > 0) { + mysql_query('UPDATE `items_users` SET `inOdet` = "0" WHERE `uid` = "' . self::$bot['id'] . '" AND `inOdet` = "14" AND `delete` = "0" LIMIT 1'); + $in[14] = 0; + } + $od = 14; + } + + if ($in[$od] == 0) { + $in[$od] = $pl['id']; + mysql_query('UPDATE `items_users` SET `inOdet` = "' . $od . '" WHERE `id` = "' . $pl['id'] . '" AND `uid` = "' . self::$bot['id'] . '" LIMIT 1'); + } + } + mysql_query('UPDATE `items_users` SET `mod_zvanie` = "Cтaжер" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + } + + //Хиляемся дальше + if (self::$bot['regHP'] == 0 || self::$bot['regMP'] == 0) { + mysql_query('UPDATE `stats` SET `regHP` = "' . time() . '", `regMP` = "' . time() . '",`hpNow` = "' . self::$st['hpNow'] . '",`mpNow` = "' . self::$st['mpNow'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + } + + $reg = $u->regen(self::$bot['id'], self::$st, 0); + } + + self::actions(); + + self::update('timeMain', self::rnd()); + + } elseif (self::$bot['ipreg'] == 1) { + + //Принять заявку на бой (физ.) + if (self::$bot['zv'] == 0) { + + //Выделяем подходящую заявку в физ. поединке + $rz = 2; + $zv = 0; + $nozv = 0; + + if (self::$bot['level'] == 0) { + $rz = 1; + } + + $zv = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `city` = "' . self::$bot['city'] . '" AND `otk` < "' . rand(2, 6) . '" AND `time` < "' . (time() - rand(15, 25)) . '" AND `bcs` < "' . time() . '" AND `start` = "0" AND `razdel` = "' . $rz . '" AND `cancel` = "0" AND `time` > "' . (time() - 1111) . '" AND `money3` = 0 ORDER BY `time` DESC LIMIT 1')); + + if (isset($zv['id'])) { + + $uz1 = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zv['id'] . '" AND `st`.`team`="1" LIMIT 1')); + $uz2 = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zv['id'] . '" AND `st`.`team`="2" LIMIT 1')); + + if (isset($uz1['id']) && !isset($uz2['id'])) { + + $uz1st = $u->getStats($uz1, 0); + + if ($uz1st['reting'] <= floor(self::$st['reting'] * 1.27)) { + + //Принимаем заявку + $sa = ''; + if (self::$bot['sex'] == 2) { + $sa = 'а'; + } + + $text = ' [login:' . self::$bot['login'] . '] принял' . $sa . ' вашу заявку на бой.[reflesh_main_zv_priem:' . self::$bot['id'] . ']'; + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $uz1['city'] . "','','','" . $uz1['login'] . "','" . $text . "','" . time() . "','6','0')"); + mysql_query('UPDATE `stats` SET `zv` = "' . $zv['id'] . '",`team` = "2" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `ipreg` = "8",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + + } else { + $nozv = 1; + } + + unset ($uz1st); + + } else { + $nozv = 1; + } + } else { + $nozv = 1; + } + + if ($nozv == 1 && self::$bot['timeMain'] < time() - rand(1, 3) * 60) { + mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + } + + unset($rz); + } + + + } elseif (self::$bot['ipreg'] == 2) { + + //Принять заявку на бой (груп.) + self::bot_group_haot_zv(6); + } elseif (self::$bot['ipreg'] == 3) { + + //Принять заявку на бой (хаот.) + self::bot_group_haot_zv(7); + } elseif (self::$bot['ipreg'] == 4) { + + //Принять заявку на бой (турнир.) + self::e('' . self::$bot['login'] . ', я хочу принять турнир...'); + } elseif (self::$bot['ipreg'] == 5) { + + //Подать заявку (физ.) + if (self::$bot['zv'] == 0) { + + $rz = 2; + if (self::$bot['level'] == 0) { + $rz = 1; + } + + $ins = mysql_query('INSERT INTO `zayvki` (`bot1`,`bot2`,`time`,`city`,`creator`,`type`,`time_start`,`timeout`,`min_lvl_1`,`min_lvl_2`,`max_lvl_1`,`max_lvl_2`,`tm1max`,`tm2max`,`travmaChance`,`invise`,`razdel`,`comment`,`money`,`withUser`,`tm1`,`tm2`) VALUES ( + "0", + "0", + "' . time() . '", + "' . self::$bot['city'] . '", + "' . self::$bot['id'] . '", + "0", + "0", + "300", + "0", + "21", + "0", + "21", + "1", + "1", + "0", + "0", + "' . $rz . '", + "", + "", + "","' . (0 + self::$bot['reting']) . '","0")'); + $zid = mysql_insert_id(); + mysql_query('UPDATE `stats` SET `zv` = "' . $zid . '", `team` = "1" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `ipreg` = "8",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + } + + } elseif (self::$bot['ipreg'] == 6 || self::$bot['ipreg'] == 7) { + + self::bot_group_haot_zv(self::$bot['ipreg']); + + if (self::$bot['zv'] == 0) { + + $rz = 5; + + $zv_c = [ + + 'time_start' => (60 * 5), 'tm1' => rand(2, 6), 'tm2' => rand(2, 6), 'l1min' => 0, 'l1max' => 21, 'l2min' => 0, 'l2max' => 21, 'timeout' => (60 * rand(1, 3)), + + ]; + + if (self::$bot['ipreg'] == 7) { + $zv_c['tm1'] = 99; + } + + $zv_c['tm2'] = $zv_c['tm1']; + $zv_c['l1min'] = self::$bot['level']; + $zv_c['l1max'] = self::$bot['level']; + + if ($zv_c['l1min'] < 2) { + $zv_c['l1min'] = 2; + } + if ($zv_c['l1max'] > 21) { + $zv_c['l1max'] = 21; + } + + $zv_c['l2min'] = $zv_c['l1min']; + $zv_c['l2max'] = $zv_c['l1max']; + + } + + } elseif (self::$bot['ipreg'] == 8) { + + //Ожидание начала поединка + if (self::$bot['zv'] == 0) { + + //Поединок не удалось начать + mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + } else { + $zv = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `id` = "' . self::$bot['zv'] . '" AND `cancel` = "0" AND `start` = "0" LIMIT 1')); + + if (!isset($zv['id'])) { + + //Обнуляем действия + mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + + } elseif ($zv['razdel'] == 4 || $zv['razdel'] == 5) { + + //хаот или группа + if ($zv['time_start'] + $zv['time'] <= time()) { + + self::inuser_go_zv(self::$bot); + } + + } else { + //физ + if ($zv['creator'] == self::$bot['id']) { + + $uz2 = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zv['id'] . '" AND `st`.`team`="2" LIMIT 1')); + if (isset($uz2['id'])) { + //Заявку кто-то принял, реагируем! :) + $pr = -1; + + $uz2st = $u->getStats($uz2, 0); + + //btl-cof + if ($uz2st['reting'] > floor(self::$st['reting'] * 1.27)) { + + //Отказываем, в 95% случаев, противник слишком силен + if (rand(0, 100) > 95) { + //отправляем бота на избиение :D + $pr = 1; + } else { + //отказ + $pr = 0; + } + + } else { + $pr = 1; + } + + //Можно принять заявку + //$pr = 0; + + if ($pr == 1) { + + //Прием заявки + //создаем поединок с ботом + $expB = 0; + $btl = ['players' => '', 'timeout' => $zv['timeout'], 'type' => $zv['type'], 'invis' => $zv['invis'], 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0]; + $ins = mysql_query('INSERT INTO `battle` (`time_over`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`,`team_win`) VALUES ( + "0", + "' . self::$bot['city'] . '", + "' . time() . '", + "' . $btl['players'] . '", + "' . $btl['timeout'] . '", + "' . $btl['type'] . '", + "' . $btl['invis'] . '", + "' . $btl['noinc'] . '", + "' . $btl['travmChance'] . '", + "' . $btl['typeBattle'] . '", + "' . $btl['addExp'] . '", + "' . $btl['money'] . '", + "-1")'); + if ($ins) { + $btl_id = mysql_insert_id(); + //обновляем данные о поединке + mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $uz2['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '",`ipreg` = "0" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `zv` = "0",`team`="1" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `zv` = "0",`team`="2" WHERE `id` = "' . $uz2['id'] . '" LIMIT 1'); + + //Если бой кулачный, то снимаем вещи + if ($btl['type'] == 1) { + mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . self::$bot['id'] . '" AND `inOdet`!=0'); + mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $uz2['id'] . '" AND `inOdet`!=0'); + } + + mysql_query('UPDATE `zayvki` SET `start` = "' . time() . '",`btl_id` = "' . $btl_id . '" WHERE `id` = "' . $zv['id'] . '" LIMIT 1'); + + //обновляем заявку, что бой начался + self::$bot['battle'] = $btl_id; + + //Отправляем сообщение в чат всем бойцам + mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $u->info['city'] . "','" . $u->info['room'] . "','" . $uz2['login'] . "','" . time() . "','11','0','117')"); + } + + } elseif ($pr == 0) { + + //Отказ + $sa = ''; + if (self::$bot['sex'] == 2) { + $sa = 'а'; + } + $text = ' [login:' . self::$bot['login'] . '] отказал' . $sa . ' вам в поединке.'; + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $uz2['city'] . "','','','" . $uz2['login'] . "','" . $text . "','" . time() . "','6','0')"); + mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "1" WHERE `id` = "' . $uz2['id'] . '" LIMIT 1'); + mysql_query('UPDATE `zayvki` SET `otk` = ( `otk` + 1 ),`bcs` = "' . (time() + rand(30, rand(60, 180))) . '" WHERE `id` = "' . $zv['id'] . '" LIMIT 1'); + } + + } else { + + //Заявку никто не принял, возможно стоит отменить заявку вообще! + if (self::$bot['timeMain'] < time() - 30 - rand((7 / $zv['otk']), (3 * 49 / $zv['otk']))) { + + mysql_query('UPDATE `stats` SET `zv` = "0" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `zayvki` SET `cancel` = "' . time() . '" WHERE `id` = "' . $zv['id'] . '" LIMIT 1'); + + } + + } + + } + + } + + //Бот уже слишком долго ждет ответа игрока, отказываемся от заявки + if (self::$bot['timeMain'] < time() - rand((30 / $zv['otk']), (135 / $zv['otk'])) && $zv['creator'] != self::$bot['id'] && ($zv['razdel'] == 1 || $zv['razdel'] == 2)) { + + $uz1 = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zv['id'] . '" AND `st`.`team`="1" LIMIT 1')); + if (isset($uz1['id'])) { + + $sa = ''; + if (self::$bot['sex'] == 2) { + $sa = 'а'; + } + + $text = ' [login:' . self::$bot['login'] . '] отозвал' . $sa . ' свой запрос на бой.'; + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $uz1['city'] . "','','','" . $uz1['login'] . "','" . $text . "','" . time() . "','6','0')"); + } + + mysql_query('UPDATE `zayvki` SET `otk` = ( `otk` + 1 ),`bcs` = "' . (time() + rand(30, rand(60, 180))) . '" WHERE `id` = "' . $zv['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "1" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `ipreg` = "1",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + } + + } + + } else { + self::update('ipreg', 0); + } + + } + + } + + return true; + + } else { + + return false; + + } + } + } + + static function team_zv_cf($zv, $tm) + { + $r = mysql_fetch_array(mysql_query('SELECT SUM(`btl_cof`) FROM `stats` WHERE `zv` = "' . $zv['id'] . '" AND `team` = "' . $tm . '" LIMIT 1')); + return $r[0]; + } + + static function new_action() + { + + $r = rand(1, 7); + + if (self::$bot['level'] < 2) { + if ($r == 2 || $r == 3 || $r == 6 || $r == 7 || $r == 8) { + if (rand(0, 1) == 1) { + $r = 1; //принимаем физ + } elseif (rand(0, 1) == 0) { + $r = 4; //принимаем турнир + } else { + $r = 5; //подаем физ + } + } + } elseif (self::$bot['level'] == 0) { + if (rand(0, 1) == 1) { + $r = 1; //принимаем физ + } else { + $r = 5; //подаем физ + } + } + + if ($r == 4) { + $r = 1; + } + + return $r; + + } + + + /*/ + Базовые функции обучения бота + /*/ + //Бот ищет заявку в группы или хаот для своего уровня и подходящую ему + static function bot_group_haot_zv($id) + { + $rz = 5; + + $sp = mysql_query('SELECT * FROM `zayvki` WHERE `razdel` = "' . $rz . '" AND `cancel` = "0" AND `start` = "0" AND `invise` = "0" AND `money3` = 0 AND ( + ( `min_lvl_1` <= ' . self::$bot['level'] . ' AND `max_lvl_1` >= ' . self::$bot['level'] . ' ) OR ( `min_lvl_2` <= ' . self::$bot['level'] . ' AND `max_lvl_2` >= ' . self::$bot['level'] . ' ) + )'); + + $pr = 0; + + while ($pl = mysql_fetch_array($sp)) { + + if ($pr == 0) { + + $go = 1; + $tm = [0, 0, 0]; + + if ($rz == 4) { + + $tm1c = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $pl['id'] . '" AND `team` = "1" LIMIT 1')); + $tm2c = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $pl['id'] . '" AND `team` = "2" LIMIT 1')); + + if ($tm1c[0] < $pl['tm1max'] && $pl['min_lvl_1'] <= self::$bot['level'] && $pl['max_lvl_1'] >= self::$bot['level']) { + $tm[1] = 1; + } + + if ($tm2c[0] < $pl['tm2max'] && $pl['min_lvl_1'] <= self::$bot['level'] && $pl['max_lvl_1'] >= self::$bot['level']) { + $tm[2] = 1; + } + + $atm = 1; + $tmr = 0; + if ($tm[1] == 1 && $tm[2] == 0) { + $tmr = 1; + } elseif ($tm[1] == 0 && $tm[2] == 1) { + $tmr = 2; + } else { + $tmr = rand(1, 2); + } + + if ($tmr > 0) { + if ($tmr == 1) { + $atm = 2; + } + + + //Логика приема заявки + if ((self::team_zv_cf($pl, $atm) > (self::team_zv_cf($pl, $tmr) + self::$st['reting']) * 1.67 || ($zv['tm2max'] < $zv['tm1max'] / 2) || ($zv['tm1max'] < $zv['tm2max'] / 2)) && rand(0, 100) < 90) { + $go = 0; + } + } + + } elseif ($rz == 5) { + + + if ($pl['min_lvl_1'] == self::$bot['level'] && $pl['max_lvl_1'] == self::$bot['level']) { + $tm[1] = 1; + } + $col_p = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $pl['id'] . '"')); + $cols = $col_p[0]; + if ($cols >= $pl['maxplayers']) { + $go = 0; + } + + } + + + if ($go == 1 && ($tm[1] != 0 || $tm[2] != 0)) { + + if ($tm[1] == 1 && $tm[2] == 0) { + $tm = 1; + } elseif ($tm[1] == 0 && $tm[2] == 1) { + $tm = 2; + } else { + $tm = rand(1, 2); + } + + if ($rz == 5) { + $tm = 1; + } + + + if ($rz == 5) { + $tm = rand(1, 2); + + if ($pl['invise'] == 0) { + $nxtID = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $pl['id'] . '"')); + $nxtID = $nxtID[0]; + self::$bot['login2'] = ''; + } else { + self::$bot['login2'] = ''; + } + + $blnc = 100 * self::$bot['level'] + self::$st['reting']; + + $pl['tm' . $tm] += $blnc; + + mysql_query('UPDATE `zayvki` SET `tm1` = "' . $pl['tm1'] . '", `tm2` = "' . $pl['tm2'] . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + + } + + if ($tm > 0 || $rz == 5) { + + //Принимаем участие в заявке + mysql_query('UPDATE `stats` SET `zv` = "' . $pl['id'] . '",`team` = "' . $tm . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `login2` = "' . self::$bot['login2'] . '",`ipreg` = "8" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + self::$bot['zv'] = $pl['id']; + $pr = $pl['id']; + + } + + } //if + + } // while + + } + + } + + //Добавляем нового бота + static function createNewBot($login, $sex) + { + if ($sex != 1) { + $sex = 0; + } else { + $se = 1; + } + + $r = ['name' => '_', 'city_real' => '', 'deviz' => '', 'chatColor' => 'Black']; + + $ins = mysql_query("INSERT INTO `users` (`fnq`,`host_reg`,`room`,`login`,`pass`,`ipreg`,`ip`,`city`,`cityreg`,`name`,`sex`,`city_real`,`deviz`,`chatColor`,`timereg`) VALUES ( + '0', + 'real_bot_user', + '0', + '" . mysql_real_escape_string($login) . "', + '" . md5('regnxt#$%^а0.' . time()) . "', + '127.0.0.1', + '127.0.0.1', + 'capitalcity', + 'capitalcity', + '" . $r['name'] . "', + '" . mysql_real_escape_string($sex) . "', + '" . $r['city_real'] . "', + '" . $r['deviz'] . "', + '" . $r['chatColor'] . "', + '" . time() . "')"); + if ($ins) { + $uid = mysql_insert_id(); + mysql_query("INSERT INTO `online` (`uid`,`timeStart`) VALUES ('" . $uid . "','" . time() . "')"); + mysql_query("INSERT INTO `stats` (`id`,`stats`) VALUES ('" . $uid . "','s1=3|s2=3|s3=3|s4=3|rinv=40|m9=5|m6=10')"); + mysql_query("UPDATE `users` SET `online`='" . time() . "' WHERE `uid` = '" . $uid . "' LIMIT 1"); + } + + } + + //Бот находится в онлайне + static function _online() + { + if (self::$bot['online'] < time() - 60) { + //уровень/апп + if (self::$bot['battle'] == 0 && self::$bot['zv'] == 0) { + self::_level(); + } + self::update('online', time()); + + } + } + + //Бот меняет локацию + static function _loc_A($a, $b) + { + return $b; + } + + static function _loc_zv() + { + + if (rand(0, 100) < 5) { + $r = 1; + } else { + $r = rand(1, 4); + } + + //будуар + if ($r == 4 && self::$bot['sex'] != 1) { + $r = rand(1, 3); + } + + if (self::$bot['city'] == 'capitalcity') { + if ($r == 4) { + //будуар + $r = 7; + } elseif ($r == 3) { + //ЗВ 3 + $r = 5; + } elseif ($r == 2) { + //ЗВ 2 + $r = 2; + } else { + //ЗВ 1 + $r = 4; + } + + if (self::$bot['level'] == 0) { + //Новички + $r = 0; + } + + } + + return $r; + } + + static function _loc($id) + { + + if ($id == self::$bot['room']) { + //ничего, уже пришли + self::update('a1', 0); + + } else { + + //Прокладываем маршрут из текущей комнаты + $rid_next = self::_loc_A(self::$bot['room'], $id); + if ($rid_next > 0) { + //Идем туда + //$rid_next = 377; + mysql_query('UPDATE `users` SET `room` = "' . $rid_next . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + return true; + } else { + //Невозможно дойти туда + return false; + } + + } + + } + + //Бот получил уровень, либо апп + static function _level() + { + global $u; + $lvl = mysql_fetch_array(mysql_query('SELECT `upLevel`,`nextLevel`,`exp`,`money`,`money_bonus1`,`money_bonus2`,`ability`,`skills`,`nskills`,`sskills`,`expBtlMax`,`hpRegen`,`mpRegen`,`money2` FROM `levels` WHERE `upLevel`="' . (self::$bot['upLevel'] + 1) . '" LIMIT 1')); + if (isset($lvl['upLevel'])) { + + if (self::$bot['level'] <= 5 && self::$bot['exp'] >= 12499) { + $cr = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `item_id` = "1204" AND `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" LIMIT 1')); + if (!isset($cr['id'])) { + $u->addItem(1204, self::$bot['id']); + self::$bot['exp'] = 12500; + } + } + if ($lvl['exp'] <= self::$bot['exp']) { + self::inuser_go_main(self::$bot); + mysql_query('UPDATE `users` SET `clss` = "0" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + + } + + } else { + self::e(self::$bot['login']); + } + + } + + //Вспомогательные функции + static function e($t) + { + + mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #' . date('d.m.Y') . ' %' . date('H:i:s') . ' (Критическая ошибка): ' . mysql_real_escape_string($t) . '","capitalcity", + "LEL","6","1","-1")'); + + } + + static function rnd() + { + return time() + rand(3, 14) + rand(0, 14) + rand(7, 21); + } + + static function update($n, $v, $t = 'users') + { + self::$bot[$n] = $v; + mysql_query('UPDATE `' . $t . '` SET `' . $n . '` = "' . self::$bot[$n] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + } + +} diff --git a/_incl_data/class/BotPriemLogic.php b/_incl_data/class/BotPriemLogic.php new file mode 100644 index 00000000..da3fc716 --- /dev/null +++ b/_incl_data/class/BotPriemLogic.php @@ -0,0 +1,399 @@ += 175 && $id <= 179) { + self::priem175($i); + } + //********************************* + } + return true; + } + + private static function usePriem($id, $on = null) + { + $go_txt = '&usepriem=' . $id; + if ($on != '') { + $on = str_replace(' ', '%20', $on); + $go_txt .= '&useon=' . $on; + } + BotLogic::inuser_go_btl(BotLogic::$bot, $go_txt); + } + + //Ставка на опережение + private static function priem220($i) + { + if (rand(0, 100) < 30) { + self::usePriem($i); + } + } + + //Разгадать тактику + private static function priem217($i) + { + if (rand(0, 100) < 30) { + self::usePriem($i); + } + } + + //Обреченность + private static function priem204($i) + { + if (rand(0, 100) < 30) { + self::usePriem($i); + } + } + + //Выжить + private static function priem232($i) + { + if (self::hp() <= 30 && rand(0, 100) < 50) { + self::usePriem($i); + } + } + + //Жажда крови + private static function priem188($i) + { + if (rand(0, 100) < 30) { + self::usePriem($i); + } + } + + //Шок удар + private static function priem235($i) + { + if (rand(0, 100) < 50) { + self::usePriem($i); + } + } + + //Хлебнуть крови + private static function priem240($i) + { + if (self::hp() <= 70) { + self::usePriem($i); + } + } + + //Силовое поле + private static function priem175($i) + { + self::usePriem($i); + } + + //Прикрыться + private static function priem1($i) + { + if (rand(0, 100) < 50) { + self::usePriem($i); + } + } + + //Вломить + private static function priem2($i) + { + if (rand(0, 100) < 50) { + self::usePriem($i); + } + } + + //Собрать зубы + private static function priem3($i) + { + if (self::hp() <= 70 && rand(0, 100) < 50) { + self::usePriem($i); + } + } + + //Воля к победе + private static function priem6($i) + { + if (self::hp() <= 40 && rand(0, 100) < 50) { + self::usePriem($i); + } + } + + //Танец ветра + private static function priem8($i) + { + if (rand(0, 100) < 30) { + self::usePriem($i); + } + } + + //Танец лезвий + private static function priem48($i) + { + if (rand(0, 100) < 70) { + self::usePriem($i); + } + } + + //Дикая удача + private static function priem9($i) + { + if (rand(0, 100) < 30) { + self::usePriem($i); + } + } + + //Слепая удача + private static function priem47($i) + { + if (rand(0, 100) < 50) { + self::usePriem($i); + } + } + + //Предвиденье + private static function priem10($i) + { + if (rand(0, 100) < 30) { + self::usePriem($i); + } + } + + //Второе дыхание + private static function priem49($i) + { + if (rand(0, 100) < 80 && self::hp() <= 60) { + self::usePriem($i); + } + } + + //Рывок + private static function priem223($i) + { + if (self::hp() <= 50 && rand(0, 100) < 50) { + self::usePriem($i); + } + } + + //Удачный удар + private static function priem11($i) + { + if (rand(0, 100) < 30) { + self::usePriem($i); + } + } + + //Стойкость + private static function priem13($i) + { + if (rand(0, 100) < 50) { + self::usePriem($i); + } + } + + //Ярость + private static function priem14($i) + { + if (rand(0, 100) < 50) { + self::usePriem($i); + } + } + + //Сильный удар + private static function priem4($i) + { + if (rand(0, 100) < 60) { + self::usePriem($i); + } + } + + //Утереть пот + private static function priem5($i) + { + if (self::hp() <= 95) { + self::usePriem($i); + } + } + + + //Агрессивная защита + private static function priem211($i) + { + if (rand(0, 100) < 80) { + self::usePriem($i); + } + } + + + //Полная защита + private static function priem45($i) + { + if (rand(0, 100) < 50) { + self::usePriem($i); + } + } + + + //Активная защита + private static function priem7($i) + { + if (rand(0, 100) < 30) { + self::usePriem($i); + } + } + + + private static function hp() + { + return round((BotLogic::$st['hpNow'] / BotLogic::$st['hpAll'] * 100), 2); + } + + //Тест на возможность использования + private static function testpriem($pl) + { + global $u; + $notr = 0; + + $tr = $u->lookStats($pl['tr']); + $d2 = $u->lookStats($pl['date2']); + + $x = 1; + while ($x <= 7) { + if (BotLogic::$bot['tactic' . $x] < $pl['tt' . $x] && $x != 7 && $pl['tt' . $x] > 0) { + $notr++; + } elseif ($x == 7) { + if ($pl['tt' . $x] > 0 && BotLogic::$bot['tactic' . $x] <= 0) { + $notr++; + } + } + $x++; + } + + if ($pl['xuse'] > 0) { + $xu = $u->testAction('`vars` = "use_priem_' . BotLogic::$bot['battle'] . '_' . BotLogic::$bot['id'] . '" AND `vals` = "' . $pl['id'] . '" LIMIT ' . $pl['xuse'] . '', 2); + if ($xu[0] >= $pl['xuse']) { + $notr++; + } + } + + $x = 0; + $t = $u->items['tr']; + while ($x < count($t)) { + $n = $t[$x]; + if (isset($tr['tr_' . $n])) { + if ($n == 'lvl') { + if ($tr['tr_' . $n] > BotLogic::$bot['level']) { + $notr++; + } + } elseif ($tr['tr_' . $n] > BotLogic::$st[$n]) { + $notr++; + } + } + $x++; + } + + if (isset($tr['tr_mpNow']) && BotLogic::$st['mpNow'] < $tr['tr_mpNow']) { + $notr++; + } + + if ($pl['trUser'] == 1) { + //требует чтобы пользователь с кем-то разменивался (при ожидании прием гаснит) + $ga = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_act` WHERE `battle` = "' . BotLogic::$bot['battle'] . '" AND `uid1` = "' . BotLogic::$bot['id'] . '" AND `uid2` = "' . BotLogic::$bot['enemy'] . '" LIMIT 1')); + if (isset($ga['id'])) { + $notr++; + } + } + + //Если прием уже использовали + if (BotLogic::$st['prsu'][$pl['id']] > 0) { + $notr++; + } + + return $notr; + } +} diff --git a/_incl_data/class/CalculateFromString.php b/_incl_data/class/CalculateFromString.php new file mode 100644 index 00000000..7768ce24 --- /dev/null +++ b/_incl_data/class/CalculateFromString.php @@ -0,0 +1,63 @@ + self::PARENTHESIS_DEPTH){ + break; + } + } + + // Calculate the result + if(preg_match(self::PATTERN, $input, $match)){ + return $this->compute($match[0]); + } + // To handle the special case of expressions surrounded by global parenthesis like "(1+1)" + if(is_numeric($input)){ + return $input; + } + + return 0; + } + + return $input; + } + + private function compute($input){ + $compute = create_function('', 'return '.$input.';'); + + return 0 + $compute(); + } + + private function callback($input){ + if(is_numeric($input[1])){ + return $input[1]; + } + elseif(preg_match(self::PATTERN, $input[1], $match)){ + return $this->compute($match[0]); + } + + return 0; + } +} + +$Cal = new CalculateFromString(); +$xyz='(100 * 25000) + (250 * 25000) + ((500/100) * 25000)'; +$result = $Cal->calculate($xyz); +echo $result; + diff --git a/_incl_data/class/Chat.php b/_incl_data/class/Chat.php new file mode 100644 index 00000000..da8774ea --- /dev/null +++ b/_incl_data/class/Chat.php @@ -0,0 +1,85 @@ + [0 => 'смеется', 1 => 'посмеялся над [*%l*]'], 'fingal' => [0 => 'трет фингал', 1 => 'щупает фингал у [*%l*]'], 'eek' => [0 => 'ошарашен', 1 => 'ошарашен действиями [*%l*]'], 'smoke' => [0 => 'закуривает', 1 => 'предлагает [*%l*] пойти покурить'], 'hi' => [0 => 'приветствует всех вокруг', 1 => 'приветствует [*%l*]'], 'bye' => [0 => 'прощается со всеми и уходит', 1 => 'прощается с [*%l*]'], 'king' => [0 => 'коронует себя :-)', 1 => 'объявляет [*%l*] своим королем!'], 'king2' => [0 => 'коронует себя :-)', 1 => 'объявляет [*%l*] своей королевой!'], 'boks2' => [0 => 'вызывает всех на поединок', 1 => 'предлагает [*%l*] дружеский матч'], 'boks' => [0 => 'обещает побить любого, кто примет вызов!', 1 => 'намекает [*%l*] на поединок'], 'gent' => [0 => 'предлагает считать себя благородным сэром', 1 => 'считает [*%l*] джельтельменом'], 'lady' => [0 => 'предлагает считать себя благородной леди', 1 => 'считает, что [*%l*] настоящая Леди'], 'tongue' => [0 => 'показывает окружающим язык', 1 => 'показывает язык [*%l*]'], 'smil' => [0 => 'болтает без умолку', 1 => 'считает, что [*%l*] говорит откровенную ерунду!'], 'ponder' => [0 => 'кое-что усиленно обдумывает', 1 => 'обещает обмозговать предложение [*%l*]'], 'bow' => [0 => 'сохраняя достоинство, кивает окружающим', 1 => 'сохраняя достоинство кивает [*%l*]'], 'angel' => [0 => 'считает себя Ангелом', 1 => 'считает [*%l*] своим Ангелом'], 'angel2' => [0 => 'грезит об Ангелах', 1 => 'думает что [*%l*] Ангел'], 'hello' => [0 => 'желает здравствовать окружающим', 1 => 'желает здравствовать [*%l*]'], 'dont' => [0 => 'рекомендует окружающим не делать этого', 1 => 'рекомендует [*%l*] не делать этого'], 'idea' => [0 => 'озарен свежей идеей!', 1 => 'предлагает [*%l*] обсудить пару идей'], 'mol' => [0 => 'преклоняется перед окружающими', 1 => 'преклоняется перед [*%l*]'], 'super' => [0 => 'считает, что мир хорош, все дамы - Леди, а Солнце - шар дающий свет!', 1 => 'фанатеет от [*%l*]'], 'beer' => [0 => 'вспоминает про припрятаный в заначке эликсир...', 1 => 'готов поделиться с [*%l*] припрятанным эликсиром!'], 'drink' => [0 => 'считает, что пора пить различные эликсиры', 1 => 'предлагает [*%l*] пойти пропустить по стаканчику эликсира'], 'baby' => [0 => 'изображает малыша', 1 => ' считает, что [*%l*] еще мал и неопытен для обоснованной критики'], 'tongue2' => [0 => ' показывает всяким врединам язык', 1 => 'показывает [*%l*] язык, проявляя недовольство'], 'sword' => [0 => 'готов сразиться в честном поединке', 1 => 'вызывает [*%l*] на честный поединок!'], 'agree' => [0 => 'пожимает руку собеседникам', 1 => 'пожимает руку [*%l*]'], 'loveya' => [0 => 'преисполнен чувства любви', 1 => 'преисполнен чувства любви к [*%l*]'], 'kiss' => [0 => 'целует всех', 1 => 'целует [*%l*]'], 'kiss2' => [0 => 'хочет нежно поцеловать кого-то...', 1 => 'нежно целует [*%l*]'], 'kiss3' => [0 => 'кое-кого целует...', 1 => 'нежно целует [*%l*]'], 'kiss4' => [0 => 'кое-кого целует...', 1 => 'хочет уединиться с [*%l*] и целоваться...'], 'rose' => [0 => 'хочет кому-то подарить розу, но стесняется...', 1 => 'дарит [*%l*] ароматную розу...'], 'love' => [0 => 'думает только о любви...', 1 => 'думает, что [loginfrom] + [*%l*]= любовь!'], 'love2' => [0 => 'мечтает о свадьбе...', 1 => 'мечтает о свадьбе с [*%l*]'], 'confused' => [0 => 'в недоумении...', 1 => 'недоумевает от [*%l*]'], 'yes' => [0 => 'кивает в знак согласия', 1 => 'кивает [*%l*] в знак согласия'], 'no' => [0 => 'мотает головой в знак протеста', 1 => 'мотает головой [*%l*] в знак протеста'], 'shuffle' => [0 => 'в смущении от таких обстоятельств', 1 => 'в смущении от [*%l*]'], 'nono' => [0 => 'выражает категорическое несогласие!', 1 => 'выражает категорическое несогласение с [*%l*]'], 'maniac' => [0 => 'знает точно наперед - сегодня кто-нибудь умрет...', 1 => 'считает, что [*%l*] пора бы уже стать жертвой маньяка...'], 'privet' => [0 => 'почтительно приветствует окружающих', 1 => 'почтительно приветствует [*%l*]'], 'ok' => [0 => 'считает, что это замечательная идея', 1 => 'считает, что [*%l*] движется в правильном направлении'], 'ninja' => [0 => 'угрожает окружающим тайным мастерством!', 1 => 'угрожает [*%l*] мастерством древних'], 'pif' => [0 => 'ищет подходящую мишень', 1 => 'думает, что сложно промахнуться по [*%l*]'], 'smash' => [0 => 'собирается крушить и ломать', 1 => 'хочет сломать пару-тройку костей у [*%l*]'], 'alien' => [0 => 'считает, что мир захватили мутанты!', 1 => ' считает, что [*%l*] еще тот мутант!'], 'pirate' => [0 => 'подумывает, кого бы ограбить!...', 1 => 'считает, что лучшей жертвы чем [*%l*], не найти!'], 'gun' => [0 => 'хочет повысить кое-кому уровень железа в организме... :gun:', 1 => 'считает, что у [*%l*] маловато железа в организме! :gun:'], 'trup' => [0 => 'падает замертво', 1 => 'считает, что [*%l*], живет слишком долго, и пора бы это исправить!'], 'mdr' => [0 => 'считает, что у него есть отличный способ решения разногласий... :mdr:', 1 => 'предлагает [*%l*] культурно отдохнуть :mdr:'], 'sneeze' => [0 => 'громко чихает', 1 => 'чихает на [*%l*], обрызгивая его слюнями с ног до головы!'], 'mad' => [0 => 'просто в бешенстве!!!', 1 => 'в бешенстве от [*%l*]!!!'], 'friday' => [0 => 'культурно отдыхает...', 1 => 'предлагает [*%l*] культурно отдохнуть'], 'cry' => [0 => 'безудержно рыдает', 1 => 'рыдает на плече у [*%l*]'], 'grust' => [0 => 'грустит...', 1 => 'грустит о [*%l*]'], 'rupor' => [0 => 'пытается докричаться до окружающих', 1 => 'пытается докричаться до [*%l*]'], 'fie' => [0 => 'умоляет: НЕТ, только не ЭТО!!!', 1 => 'умоляет [*%l*] о пощаде!'], 'nnn' => [0 => 'ничего не видит, не слышит, и никому не скажет...', 1 => 'ничего не видел, не слышал и не помнит о [*%l*]'], 'row' => [0 => 'находится в бешенстве и ищет с кем бы пообщаться...', 1 => 'собирается выяснить отношения с [*%l*]'], 'red' => [0 => 'смущаясь краснеет...', 1 => 'краснеет от [*%l*]'], 'lick' => [0 => 'облизнулся, в предвкушении', 1 => 'облизывается при виде [*%l*]'], 'help' => [0 => 'нуждается в срочной помощи!', 1 => 'просит помощи у [*%l*]'], 'wink' => [0 => 'подмигивает окружающим', 1 => 'подмигивает [*%l*]'], 'jeer' => [0 => 'посмеивается над ситуацией...', 1 => 'посмеивается над [*%l*]'], 'tease' => [0 => 'дразнится', 1 => 'дразнит [*%l*]'], 'nunu' => [0 => 'недоволен окружающими...', 1 => 'недоволен [*%l*]'], 'inv' => [0 => 'хочет найти свои зубы...', 1 => 'жалуется [*%l*] на трудности жизни инвалида...'], 'duel' => [0 => 'собирается проткнуть кое-кого...', 1 => 'вызывает [*%l*] на дуэль!'], 'susel' => [0 => 'Напевая: "эээххх ухнеееемм, да ещеее ууухнеем.." высматривает в толпе подходящий пондер...', 1 => 'предлагает [*%l*] отхватить прямо по пондеру!'], 'nun' => [0 => 'угрожает окружающим палочками для риса', 1 => 'показывает [*%l*] как надо пользоваться палочками для риса'], 'kruger' => [0 => 'ненавязчиво объясняет окружающим кого тут надо бояться :kruger:', 1 => 'демонстрирует [*%l*] нестриженные когти'], 'flowers' => [0 => 'учится выхватывать букет Ромашек-21 из-за спины одним движением', 1 => 'целует [*%l*] и дарит букет ромашек'], 'horse' => [0 => 'патрулирует границы Бойцовского Клуба', 1 => 'предлагает [*%l*] порубать всех врагов в капусту! :horse:'], 'hug' => [0 => 'готов обнять всех в комнате!', 1 => 'крепко обнимает [*%l*]'], 'str' => [0 => 'в ужасе покрывается ледяным потом!', 1 => 'в ужасе прячется от [*%l*]'], 'alch' => [0 => 'напоминает окружающим о вечных ценностях :alch:', 1 => 'предлагает [*%l*] приобщиться к вечным ценностям :alch:'], 'pal' => [0 => ' напоминает, что из под робы выпирает крест, а не что-то там! :-)', 1 => 'требует от [*%l*] предъявить документы в развернутом виде!'], 'mag' => [0 => 'читает заклинания. Вслух. По слогам.', 1 => 'произносит страшное колдунство на [*%l*]'], 'sniper' => [0 => 'изображает из себя Вильгельма Теля', 1 => 'предлагает [*%l*] поиграть в Вильгельма Теля'], 'fuck' => [0 => 'повторяет позы камасутры', 1 => 'предлагает [*%l*] повторить позы камасутры вместе'], 'rotate' => [0 => 'катается от смеха по полу', 1 => 'катается по полу от смеха над [*%l*]']]; + + public function expworld($txt, $vl) + { + $words = explode(' ', $txt); + $j = 0; + $i = -1; + while ($i < count($words)) { + $i++; + if (isset($words[$i]) && strlen($words[$i]) > $vl) { + $words[$i] = substr($words[$i], 0, $vl) . ' ' . substr($words[$i], $vl); + $i = 0; + $j++; + $txt = implode(' ', $words); + $words = explode(' ', $txt); + } + } + return implode(' ', $words); + } + + public function str_count($str, $col) + { + if (strlen($str) > $col) { + $str = substr($str, 0, $col); + } + return ($str); + } + + public function smileText($text, $tol, $room, $city) + { + $retxt = ''; + $j = 0; + $txt = str_replace('/', '⁄', $text) . ' '; + + if (preg_match("/⁄(.*?) /", $txt, $retxt) && isset($this->smilesWorld[$retxt[1]])) { + if ($tol == '') { + $tol = str_replace('⁄' . $retxt[1] . ' ', '', $txt); + $tol = trim($tol, ' '); + } + if ($tol == '') { + $txt = $this->smilesWorld[$retxt[1]][0]; + } else { + $mbl = mysql_fetch_array(mysql_query('SELECT `online`,`id`,`login`,`room`,`city` FROM `users` WHERE `room`="' . $room . '" AND `online` > ' . (time() - 520) . ' AND `city` = "' . $city . '" AND `login`="' . mysql_real_escape_string($tol) . '" LIMIT 1')); + if (isset($mbl['id'])) { + $txt = '' . $this->smilesWorld[$retxt[1]][1] . ''; + $txt = str_replace('[*%l*]', '[login:' . $tol . ']', $txt); + } else { + $txt = 'USER IS FALSE'; + } + } + $j = 1; + } + + if ($j == 1) { + $text = $txt; + } else { + $text = false; + } + + return $text; + } + + public function send($color, $room, $city, $from, $to, $text, $time, $type, $toChat, $spam, $sound, $new = 0) + { + mysql_query("INSERT INTO `chat` (`new`,`sound`,`color`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`spam`) VALUES ('" . $new . "','" . $sound . "','" . $color . "','" . $city . "','" . $room . "','" . $from . "','" . $to . "','" . $text . "','" . $time . "','" . $type . "','" . $toChat . "','" . $spam . "')"); + return mysql_insert_id(); + } + + public function jsmsg($id, $time, $to, $from, $type, $ch, $e, $see, $js = 0, $cl = '#000000', $typeTime = NULL) + { + $tm = date('H:i', $time); + if ($typeTime == 1) { + $tm = date('d.m.Y H:i', $time); + } + $rt = 'top.addMessage(\'' . $id . '\',\'' . $tm . '\',\'' . $to . ' \',\'' . $from . '\',\'' . $type . '\',\'' . $ch . '\'," ' . $e . ' ",\'' . $see . '\',\'' . $cl . '\');'; + if ($js == 1) { + $rt = ''; + } + return $rt; + } +} diff --git a/_incl_data/class/Dialog.php b/_incl_data/class/Dialog.php new file mode 100644 index 00000000..e03c0e14 --- /dev/null +++ b/_incl_data/class/Dialog.php @@ -0,0 +1,1398 @@ + $i, 1 => $x - ($i * $j)]; + } + + public function objLevel($t, $l) + { + $i = 1; + $r = 0; + while ($i <= $l) { + if (isset($t[$i])) { + $r = $t[$i]; + } + $i++; + } + return $r; + } + + public function start($id) + { + global $u, $q, $c, $d, $code; + $this->info = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_dialog` WHERE `id` = "' . mysql_real_escape_string((int)$id) . '" LIMIT 1')); + if (isset($this->info['id'])) { + $pg = 1; + $go = 1; + $txt = ''; + //Переход по страницам + if (isset($_GET['act'])) { + $ta = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_dlg` WHERE `type` = "0" AND `id` = "' . mysql_real_escape_string((int)$_GET['act']) . '" AND `id_dg` = "' . $this->info['id'] . '" LIMIT 1')); + if (isset($ta['id'])) { + $ta['action'] = $this->ltr($ta['action']); + $act = explode('|', $ta['action']); + $go1 = 1; + $needRep = []; + if ($ta['tr'] != '') { + $i = 0; + $x = explode('|', $ta['tr']); + while ($i < count($x)) { + //Требования + $k = explode('=', $x[$i]); + if ($k[0] == 'data') { + $date = explode('-', $k[1]); + $dd1 = $date[0]; + $mm1 = $date[1]; + $dd2 = $date[2]; + $mm2 = $date[3]; + $date1 = strtotime($dd1 . '-' . $mm1 . '-' . date('Y')); + $date2 = strtotime($dd2 . '-' . $mm2 . '-' . date('Y')); + + if ($date1 > time() || $date2 < time()) { + $go1 = 'delete'; + $i = count($x); + } + + } elseif ($k[0] == 'diact') { + //Действия + //user_id # all # all # lukaqst1 # -1 + if ($this->quest_act($k[1]) == false) { + $go1 = 'delete'; + $i = count($x); + } + } elseif ($k[0] == 'quest_end') { + //Квест можно выполнять несколько раз в текущей пещере + $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $k[1] . '" ORDER BY `id` DESC LIMIT 1')); + if (isset($qlst['id']) && $qlst['vals'] != 'win' && $qlst['vals'] != 'end' && $qlst['vals'] != 'bad') { + $go1 = 0; + $txt .= '
Что-то не так, Вы уже взяли данное задание...'; + $pg = $ta['page']; + } + } elseif ($k[0] == 'quest_only_one') { + //Квест можно выполнять только один раз + $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $k[1] . '" ORDER BY `id` DESC LIMIT 1')); + if (isset($qlst['id']) && ($qlst['vals'] == 'win' || $qlst['vals'] == 'bad')) { + $go1 = 0; + $txt .= '
Что-то не так, Вы уже выполняли данное задание...'; + $pg = $ta['page']; + } + } elseif ($k[0] == 'quest_now') { + //Квест должен быть взят + $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $k[1] . '" ORDER BY `id` DESC LIMIT 1')); + if (isset($qlst['id']) && $qlst['vals'] != 'win' && $qlst['vals'] != 'end' && $qlst['vals'] != 'bad') { + } else { + $go1 = 0; + $txt .= '
Что-то не так, требуется взять задание...'; + $pg = $ta['page']; + } + } elseif ($k[0] == 'tr_itm') { + //Квест требует предмет + $qlst = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . $k[1] . '" AND `inOdet` = 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); + if ($qlst[0] < $k[2]) { + $go1 = 0; + $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $k[1] . '" LIMIT 1')); + if (isset($itmqs['id'])) { + $txt .= '
Требуется предмет "' . $itmqs['name'] . '" (x' . $k[2] . ').'; + } + $pg = $ta['page']; + } + } elseif ($k[0] == 'tr_itmodet') { + //Квест требует предмет + $k[1] = str_replace(',', '" OR `item_id` = "', $k[1]); + $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "' . $k[1] . '") AND `inOdet` > 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); + if (!isset($qlst['id'])) { + $go1 = 0; + $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $k[1] . '" LIMIT 1')); + if (isset($itmqs['id'])) { + $txt .= '
Требуется предмет "' . $itmqs['name'] . '".'; + } + $pg = $ta['page']; + } + } elseif ($k[0] == 'tr_noitmodet') { + //Квест требует предмет + $k[1] = str_replace(',', '" OR `item_id` = "', $k[1]); + $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "' . $k[1] . '") AND `inOdet` > 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); + if (isset($qlst['id'])) { + $go1 = 0; + $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $k[1] . '" LIMIT 1')); + if (isset($itmqs['id'])) { + $txt .= '
У вас уже есть требуемый предмет "' . $itmqs['name'] . '".'; + } + $pg = $ta['page']; + } + } elseif ($k[0] == 'tr_noitm') { + //Квест требует предмет + $k[1] = str_replace(',', '" OR `item_id` = "', $k[1]); + $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "' . $k[1] . '") AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); + if (isset($qlst['id'])) { + $go1 = 0; + $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $k[1] . '" LIMIT 1')); + if (isset($itmqs['id'])) { + $txt .= '
У вас уже есть требуемый предмет "' . $itmqs['name'] . '".'; + } + $pg = $ta['page']; + } + } elseif ($k[0] == 'del_itm') { + //Квест удаляет предмет + $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . $k[1] . '" AND `inOdet` = 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); + if (isset($qlst['id'])) { + $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $k[1] . '" LIMIT 1')); + if (isset($itmqs['id'])) { + if (mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $qlst['id'] . '" LIMIT 1')) { + $txt .= '
Вы отдали "' . $itmqs['name'] . '"'; + } + } + $pg = $ta['page']; + } + } elseif ($k[0] == 'needRep') { + // разговор требует репутации в пещере. + $temp = explode(',', $k[1]); + $needRep = ['city' => $temp[0], 'rep' => (int)$temp[1]]; + if (isset($needRep)) { # Проверяем репутацию. + if ($u->rep['rep' . $needRep['city']] < $needRep['rep']) { + $swapActStatus = 0; + $go1 = 0; + $txt = 'Я тебя раньше здесь не видел, уходи прочь негодник!'; + $pg = $ta['page']; + } + } + } + $i++; + } + } + if (isset($act[1]) && $go1 == 1) { + $act1 = explode('=', $act[1]); + $act0 = explode('=', $act[0]); + if ($act0[0] == 'fileqst') { + if (file_exists('_incl_data/class/quest/' . htmlspecialchars($act0[1]) . '.php')) { + require_once('_incl_data/class/quest/' . htmlspecialchars($act0[1]) . '.php'); + } else { + $txt .= '
Квест не найден в списках NPS...'; + } + $pg = $act[1]; + } elseif ($act[0] == 'dialog_act_update') { + $act33 = $this->dialog_act_update($act[2]); + if ($act33[0] == false) { + if ($act33[1] == '') { + $txt .= '
Что-то пошло не так...'; + } else { + $txt .= '
' . $act33[1] . ''; + } + } else { + $txt .= '
' . $act33[1] . ''; + } + $pg = $act[1]; + } elseif ($act[0] == 'quest_act') { + $txt .= '
Вы получили новое задание.'; + mysql_query('INSERT INTO `dialog_act` ( + `uid`,`city`,`time`,`var`,`val`,`btl_bot`,`itms`,`now`,`max`,`info` + ) VALUES ( + "' . $u->info['id'] . '","' . $u->info['city'] . '","' . time() . '","' . mysql_real_escape_string($act1[0]) . '","' . mysql_real_escape_string($act1[1]) . '" + ,"' . mysql_real_escape_string($act1[3]) . '","' . mysql_real_escape_string($act1[4]) . '","' . mysql_real_escape_string($act1[5]) . '","' . mysql_real_escape_string($act1[6]) . '","' . mysql_real_escape_string($act1[7]) . '" + )'); + $pg = $act1[2]; + if ($act1[8] != 0) { + //Выдаем предмет для квеста + $itmb = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $act1[8] . '" LIMIT 1')); + if (isset($itmb['id'])) { + $u->addItem($act1[8], $u->info['id'], '|nodelete=1'); + $txt .= '
Вы получили предмет "' . $itmb['name'] . '"'; + } + } + } elseif ($act[0] == 'buyitm') { + $itmb = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $act1[0] . '" LIMIT 1')); + if (isset($itmb['id'])) { + if ($u->info['money'] < $act1[1]) { + $txt .= '
Вам не хватает денег для покупки "' . $itmb['name'] . '", требуется ' . $act1[1] . ' кр.'; + } else { + $act1dt = ''; + $txt .= '
Вы успешно приобрели "' . $itmb['name'] . '"'; + if ($act1[1] > 0) { + $txt .= ' за ' . $act1[1] . ' кр.'; + $u->info['money'] -= $act1[1]; + mysql_query('UPDATE `users` SET `money` = "' . $u->info['money'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } + if ($act1[2] > 0) { + $txt .= ' за ' . $act1[2] . ' екр.'; + } + if ($act1[3] > 0) { + $txt .= ' на срок ' . $u->timeOut($act1[3]) . ''; + $act1dt .= '|srok=' . $act1[3] . ''; + } + $txt .= ''; + + $u->addItem($itmb['id'], $u->info['id'], $act1dt); + $pg = $act1[4]; + } + } else { + $txt .= '
Неудалось приобрести предмет...'; + $pg = 1; + } + } elseif ($act1[0] == 'quest') { + $pg = $act1[1]; + $act2 = explode('=', $act[1]); + if ($act2[0] > 0 && $q->testGood($act2[0]) == 1) { + //выдаем квест + if ($act2[1] != '0') { + //Выдача предмета + $ic1 = 0; + $act21 = explode(',', $act2[1]); + while ($ic1 < count($act21)) { + $act3 = explode('-', $act21[$ic1]); + $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $act3[0] . '" LIMIT 1')); + if (isset($itmqs['id'])) { + if ($act3[2] > 1) { + //несколько + $txt .= '
Вы получили предмет "' . $itmqs['name'] . '" (x' . $act3[2] . ' шт.).'; + } else { + //один + $txt .= '
Вы получили квестовый предмет "' . $itmqs['name'] . '".'; + } + $ic2 = 1; + while ($ic2 <= $act3[2]) { + $u->addItem($itmqs['id'], $u->info['id'], '|quest_item=1', ['del' => $act3[3]]); + $ic2++; + } + } + $ic1++; + } + } + $q->startq($act2[0]); + $txt .= '
' . $u->error . '.'; + $u->error = ''; + } else { + $txt .= '
Не удалось получить задание, не соответствуют условия получения...'; + } + } elseif ($act[0] == 'go' && $go1 == 1) { + $pg = $act[1]; + } elseif ($act[0] == 'atackbot' && $go1 == 1) { + //Нападение на монстра + if (round((int)$act[1]) > 0) { + $btl_id = 0; + //$expB = -77.77; + $expB = 0; + $btl = ['players' => '', 'timeout' => 180, 'type' => 0, 'invis' => 0, 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0]; + + $ins = mysql_query('INSERT INTO `battle` (`dungeon`,`dn_id`,`x`,`y`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( + "' . $d->info['id2'] . '", + "' . $d->info['id'] . '", + "' . $u->info['x'] . '", + "' . $u->info['y'] . '", + "' . $u->info['city'] . '", + "' . time() . '", + "' . $btl['players'] . '", + "' . $btl['timeout'] . '", + "' . $btl['type'] . '", + "' . $btl['invis'] . '", + "' . $btl['noinc'] . '", + "' . $btl['travmChance'] . '", + "' . $btl['typeBattle'] . '", + "' . $btl['addExp'] . '", + "' . $btl['money'] . '")'); + $btl_id = mysql_insert_id(); + + if ($btl_id > 0) { + //Добавляем ботов + $k = $u->addNewbot(round((int)$act[1]), null, null, []); + mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `x`="' . $u->info['x'] . '",`y`="' . $u->info['y'] . '",`team` = "2" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + + } + header('location: main.php'); + } else { + echo 'Поединок почему-то не начался...'; + } + die(); + } elseif ($act[0] == 'goroom' && $go1 == 1) { + $u->info['room'] = $act[1]; + mysql_query('UPDATE `users` SET `room` = "' . $u->info['room'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + header('location: main.php'); + die(); + } elseif ($act[0] == 'transfer2' && $go1 == 1) { + //Обменник тыквоголового + $txt = ''; + + $xtik = 0; //Требуется тыкв + + if ($act[1] == 1 && true == false) { + $txt .= 'Обмен 1...'; + $xtik = 10; + $itik = 4465; + + } elseif ($act[1] == 2) { + $txt .= 'Обмен 2...'; + $xtik = 15; + $itik = 2143; + + } elseif ($act[1] == 3) { + $txt .= 'Обмен 3...'; + $xtik = 15; + $itik = 2144; + + } elseif ($act[1] == 4 && true == false) { + $txt .= 'Обмен 4...'; + $xtik = 6; + //арт воина + $itik = -1; + + } elseif ($act[1] == 5 && true == false) { + $txt .= 'Обмен 5...'; + $xtik = 6; + //арт мага + $itik = -2; + + } elseif ($act[1] == 6) { + $txt .= 'Обмен 6...'; + $xtik = 50; + //значок 1 + $itik = -3; + + } elseif ($act[1] == 7) { + $txt .= 'Обмен 7...'; + $xtik = 70; + //значок 2 + $itik = -4; + + } else { + $txt .= 'Тыквоголовый не меняет этот хлам...'; + } + + $txt = 'Обменник начнет свою работу 3 ноября'; + + $itms = []; + $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "4504" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 100'); + while ($pl = mysql_fetch_array($sp)) { + $itms[$pl['item_id']]++; + } + + $t = $this->trnObj($itms[4504], $xtik); + if ($t[0] > 0) { + // $t[0] - сколько предметов награды даем, $cn[$i]['add'][0] - item_id предмета награды + //удаляем ингридиенты + + $gdtik = 1; + + if ($gdtik == 1) { + $upd = mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "4504" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" ORDER BY `inGroup` ASC LIMIT ' . $xtik . ''); + //echo 'UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "4504" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT '.$t[0].''; + if ($upd) { + if ($itik > 0) { + //Выдаем предметы + $u->addItem($itik, $u->info['id'], '|nosale=1|srok=' . (7 * 86400) . '', null, 1); + $itm_nm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itik . '" LIMIT 1')); + $txt = 'Вы получили предмет "' . $itm_nm['name'] . '"'; + } else { + //Что-то уникальное + if ($itik == -1) { + //Артефакт воин + $arts_1 = []; + $arts_lvl = $u->info['level']; + if ($arts_lvl < 4) { + $arts_lvl = 4; + } elseif ($arts_lvl > 10) { + $arts_lvl = 10; + } + $sp1 = mysql_query('SELECT `items_id` FROM `items_main_data` WHERE `data` LIKE "%|art=%" AND `data` LIKE "%tr_lvl=' . $arts_lvl . '%" AND `data` NOT LIKE "%|tr_s5=%" AND `data` NOT LIKE "%|add_s6=%" AND `data` NOT LIKE "%|tr_s6=%"'); + while ($pl1 = mysql_fetch_array($sp1)) { + $arts_1[] = $pl1['items_id']; + } + $arts_1 = $arts_1[rand(0, count($arts_1) - 1)]; + if ($arts_1 > 0) { + $u->addItem($arts_1, $u->info['id'], '|sroknext=1|nosale=1|sleep_moroz=1|srok=' . (86400 / 2) . '', null, 100); + } + $itm_nm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $arts_1 . '" LIMIT 1')); + + $txt = 'Вы получили артефакт для воина "' . $itm_nm['name'] . '" на срок 12 часов.'; + } elseif ($itik == -2) { + //Артефакт мага + $arts_1 = []; + $arts_lvl = $u->info['level']; + if ($arts_lvl < 4) { + $arts_lvl = 4; + } elseif ($arts_lvl > 10) { + $arts_lvl = 10; + } + $sp1 = mysql_query('SELECT `items_id` FROM `items_main_data` WHERE `data` LIKE "%|art=%" AND `data` LIKE "%tr_lvl=' . $arts_lvl . '%" AND ( `data` LIKE "%|tr_s6=%" OR `data` LIKE "%|add_s6=%")'); + while ($pl1 = mysql_fetch_array($sp1)) { + $arts_1[] = $pl1['items_id']; + } + $arts_1 = $arts_1[rand(0, count($arts_1) - 1)]; + if ($arts_1 > 0) { + $u->addItem($arts_1, $u->info['id'], '|sroknext=1|nosale=1|sleep_moroz=1|srok=' . (86400 / 2) . '', null, 100); + } + $itm_nm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $arts_1 . '" LIMIT 1')); + + $txt = 'Вы получили артефакт для мага "' . $itm_nm['name'] . '" на срок 12 часов.'; + } elseif ($itik == -3) { + //Значок +1 + mysql_query('DELETE FROM `users_ico` WHERE `uid` = "' . $u->info['id'] . '" AND (`img` = "helloween_2014m1.gif" OR `img` = "helloween_2014m2.gif")'); + mysql_query('INSERT INTO `users_ico` (`uid`,`time`,`text`,`img`,`endTime`,`bonus`,`type`,`x`) VALUES ( + "' . $u->info['id'] . '", + "' . time() . '", + "Хэллоуин`' . date('Y') . '
Обыкновенный собиратель тыкв!", + "helloween_2014m1.gif", + "' . (time() + 86400 * 365) . '", + "add_m10=15|add_m11=15", + "1", + "1" + )'); + $txt = 'Вы получили значок "Хэллоуин`' . date('Y') . ' Обыкновенный"'; + } elseif ($itik == -4) { + //Значок +5 + mysql_query('DELETE FROM `users_ico` WHERE `uid` = "' . $u->info['id'] . '" AND (`img` = "helloween_2014m1.gif" OR `img` = "helloween_2014m2.gif")'); + mysql_query('INSERT INTO `users_ico` (`uid`,`time`,`text`,`img`,`endTime`,`bonus`,`type`,`x`) VALUES ( + "' . $u->info['id'] . '", + "' . time() . '", + "Хэллоуин`' . date('Y') . '
Лучший собиратель тыкв!", + "helloween_2014m2.gif", + "' . (time() + 86400 * 365) . '", + "add_m10=15|add_m11=15", + "1", + "1" + )'); + $txt = 'Вы получили значок "Хэллоуин`' . date('Y') . ' Лучший"'; + } + } + } + } else { + $txt = 'Неудалось совершить обмен...'; + } + } else { + $txt = 'Недостаточно тыкв для обмена...'; + } + + if ($txt != '') { + $txt = '
' . $txt . ''; + } + $pg = 3; + } elseif ($act[0] == 'transfer1' && $go1 == 1) { + //Меняем гайки и прочий мусор из канализации на жетоны + //ИХ больше у тебя нету... Неси еще, Луке нужно больше ИХ! + $pg = $act[1]; + $itms = []; + $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "1002" OR `item_id` = "1003" OR `item_id` = "1004" OR `item_id` = "1005" OR (`item_id` >= "1009" AND`item_id` <= "1014")) AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 250'); + while ($pl = mysql_fetch_array($sp)) { + $itms[$pl['item_id']]++; + } + //Предметы + $cn = [0 => 3, //кол-во классификаций + 1 => [//гайка + 1 => ['n' => 'Гайка', 0 => 1002, 1 => 3, 7 => 9, 8 => 15], //болт + 2 => ['n' => 'Болт', 0 => 1003, 1 => 1, 7 => 3, 8 => 5], //вентиль + 3 => ['n' => 'Вентиль', 0 => 1005, 1 => (1 / 3), 7 => 1, 8 => 2], 'add' => [0 => 1006, 1 => 'Жетон'] //предмет вознаграждения, бронзовый жетон + ], //бронза + 2 => [//гайка + 1 => ['n' => 'Чистая гайка', 0 => 1009, 1 => 3, 7 => 9, 8 => 15], //болт + 2 => ['n' => 'Длинный Болт', 0 => 1010, 1 => 1, 7 => 3, 8 => 5], //вентиль + 3 => ['n' => 'Чистый вентиль', 0 => 1011, 1 => (1 / 3), 7 => 1, 8 => 2], 'add' => [0 => 1007, 1 => 'Серебряный жетон'] //предмет вознаграждения, бронзовый жетон + ], //серебро + 3 => [//гайка + 1 => ['n' => 'Гайка с Резьбой', 0 => 1012, 1 => 3, 7 => 9, 8 => 15], //болт + 2 => ['n' => 'Нужный болт', 0 => 1013, 1 => 1, 7 => 3, 8 => 5], //вентиль + 3 => ['n' => 'Рабочий вентиль', 0 => 1014, 1 => (1 / 3), 7 => 1, 8 => 2], 'add' => [0 => 1008, 1 => 'Золотой жетон'] //предмет вознаграждения, бронзовый жетон + ] //золото + ]; + + $i = 1; + while ($i <= $cn[0]) { + $j = 1; + while ($j < count($cn[$i][$j])) { + + $t = $cn[$i][$j]; + $t = $this->trnObj($itms[$cn[$i][$j][0]], $this->objLevel($cn[$i][$j], $u->info['level'])); + if ($t[0] > 0) { + // $t[0] - сколько предметов награды даем, $cn[$i]['add'][0] - item_id предмета награды + //удаляем ингридиенты + $upd = mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . $cn[$i][$j][0] . '" AND `delete` = "0" AND `inOdet` = "0" AND `inShop` = "0" LIMIT ' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ''); + if ($upd) { + $data = '|frompisher=' . $d->info['id2']; + $e = 1; + while ($e <= $t[0]) { + $u->addItem($cn[$i]['add'][0], $u->info['id'], $data); + $e++; + } + $txt .= $cn[$i][$j]['n'] . ' x' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ' = ' . $cn[$i]['add'][1] . ' x' . $t[0] . '
'; + } else { + $txt .= 'Не удалось обменять предмет "' . $cn[$i][$j]['n'] . '", что-то не так ...
'; + } + } + $j++; + } + $i++; + } + + if ($txt != '') { + $txt = '
' . $txt . ''; + } + } elseif ($act[0] == 'transfer3' && $go1 == 1) { + //ИХ больше у тебя нету... Неси еще, Луке нужно больше ИХ! + //Серебро на золото, 3 к 1 + $pg = $act[1]; + $itms = []; + $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "1007" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 250'); + while ($pl = mysql_fetch_array($sp)) { + $itms[$pl['item_id']]++; + } + //Предметы + $cn = [0 => 1, //кол-во классификаций + 1 => [//гайка + 1 => ['n' => 'Серебряный жетон', 0 => 1007, 1 => 3, 7 => 3, 8 => 3], 'add' => [0 => 1008, 1 => 'Золотой жетон'] //предмет вознаграждения, бронзовый жетон + ]]; + + $i = 1; + while ($i <= $cn[0]) { + $j = 1; + while ($j < count($cn[$i][$j])) { + + $t = $cn[$i][$j]; + $t = $this->trnObj($itms[$cn[$i][$j][0]], $this->objLevel($cn[$i][$j], $u->info['level'])); + if ($t[0] > 0) { + // $t[0] - сколько предметов награды даем, $cn[$i]['add'][0] - item_id предмета награды + //удаляем ингридиенты + $upd = mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . $cn[$i][$j][0] . '" AND `delete` = "0" AND `inOdet` = "0" AND `inShop` = "0" LIMIT ' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ''); + if ($upd) { + $data = '|frompisher=' . $d->info['id2']; + $e = 1; + while ($e <= $t[0]) { + $u->addItem($cn[$i]['add'][0], $u->info['id'], $data); + $e++; + } + $txt .= $cn[$i][$j]['n'] . ' x' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ' = ' . $cn[$i]['add'][1] . ' x' . $t[0] . '
'; + } else { + $txt .= 'Не удалось обменять предмет "' . $cn[$i][$j]['n'] . '", что-то не так ...
'; + } + } + $j++; + } + $i++; + } + + if ($txt != '') { + $txt = '
' . $txt . ''; + } + } elseif ($act[0] == 'transfer4' && $go1 == 1) { + //ИХ больше у тебя нету... Неси еще, мне нужно больше ИХ! + //Засоры к золоту, 20 к 1 + $pg = $act[1]; + $itms = []; + $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "4728" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 250'); + while ($pl = mysql_fetch_array($sp)) { + $itms[$pl['item_id']]++; + } + //Предметы + $cn = [0 => 1, //кол-во классификаций + 1 => [//гайка + 1 => ['n' => 'Засоры', 0 => 4728, 1 => 20, 7 => 20, 8 => 20], 'add' => [0 => 1008, 1 => 'Золотой жетон'] //предмет вознаграждения, бронзовый жетон + ]]; + + $i = 1; + while ($i <= $cn[0]) { + $j = 1; + while ($j < count($cn[$i][$j])) { + + $t = $cn[$i][$j]; + $t = $this->trnObj($itms[$cn[$i][$j][0]], $this->objLevel($cn[$i][$j], $u->info['level'])); + if ($t[0] > 0) { + // $t[0] - сколько предметов награды даем, $cn[$i]['add'][0] - item_id предмета награды + //удаляем ингридиенты + $upd = mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . $cn[$i][$j][0] . '" AND `delete` = "0" AND `inOdet` = "0" AND `inShop` = "0" LIMIT ' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ''); + if ($upd) { + $data = '|frompisher=' . $d->info['id2']; + $e = 1; + while ($e <= $t[0]) { + $u->addItem($cn[$i]['add'][0], $u->info['id'], $data); + $e++; + } + $txt .= $cn[$i][$j]['n'] . ' x' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ' = ' . $cn[$i]['add'][1] . ' x' . $t[0] . '
'; + } else { + $txt .= 'Не удалось обменять предмет "' . $cn[$i][$j]['n'] . '", что-то не так ...
'; + } + } + $j++; + } + $i++; + } + + if ($txt == '') { + $txt = 'Необходимо минимум 20 засоров для обмена.'; + } + + if ($txt != '') { + $txt = '
' . $txt . ''; + } + } elseif ($act[0] == 'transferSpells30' && $go1 == 1) { + + //2553 2554 + + $keypr1 = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = 0 AND `item_id` = "2553" LIMIT 1')); + $keypr2 = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = 0 AND `item_id` = "2554" LIMIT 1')); + + $txt = ''; + + if (isset($keypr1['id'], $keypr2['id'])) { + mysql_query('DELETE FROM `items_users` WHERE `id` = "' . $keypr1['id'] . '" OR `id` = "' . $keypr2['id'] . '" LIMIT 2'); + $data = '|frompisher=' . $d->info['id2']; + $u->addItem(2555, $u->info['id'], $data); + $txt = 'Вы успешно получили "Пирамидальный ключ"'; + } + + if ($txt == '') { + $txt = 'Необходимо принести два разных осколка...'; + } + + if ($txt != '') { + $txt = '
' . $txt . ''; + } + + } elseif ($act[0] == 'transferSpells31' && $go1 == 1) { + + $pg = $act[1]; + $itms = []; + $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "2560" OR `item_id` = "2564" OR `item_id` = "2568" OR `item_id` = "2572" OR `item_id` = "2576") AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 250'); + while ($pl = mysql_fetch_array($sp)) { + $itms[$pl['item_id']]++; + } + + $keypr = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = 0 AND `item_id` = "2555" LIMIT 1')); + if (!isset($keypr['id'])) { + $itms = []; + $txt = 'Необходим "Пирамидальный ключ", у вас его нет...'; + } + + //Предметы + $cn = [0 => 5, //кол-во классификаций + 1 => [1 => ['n' => 'Зачаровать Украшение [0]', 0 => 2560, 8 => 3, 'add' => [2561, 'Зачаровать Украшение [1]']], 2 => ['n' => 'Зачаровать Оружие [0]', 0 => 2564, 8 => 3, 'add' => [2565, 'Зачаровать Оружие [1]']], 3 => ['n' => 'Зачаровать Броню [0]', 0 => 2568, 8 => 3, 'add' => [2569, 'Зачаровать Броню [1]']], 4 => ['n' => 'Зачаровать Перчатки [0]', 0 => 2572, 8 => 3, 'add' => [2573, 'Зачаровать Перчатки [1]']], 5 => ['n' => 'Зачаровать Шлем [0]', 0 => 2576, 8 => 3, 'add' => [2577, 'Зачаровать Шлем [1]']]]]; + + $i = 1; + while ($i <= $cn[0]) { + $j = 1; + while ($j <= $cn[0]) { + $t = $cn[$i][$j]; + $t = $this->trnObj($itms[$cn[$i][$j][0]], $this->objLevel($cn[$i][$j], 8)); + if ($t[0] > 0) { + $upd = mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . $cn[$i][$j][0] . '" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT ' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ''); + if ($upd) { + $data = '|frompisher=' . $d->info['id2']; + $e = 1; + while ($e <= $t[0]) { + $u->addItem($cn[$i][$j]['add'][0], $u->info['id'], $data); + $e++; + } + mysql_query('DELETE FROM `items_users` WHERE `id` = "' . $keypr['id'] . '" LIMIT 1'); + $txt .= $cn[$i][$j]['n'] . ' x' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ' = ' . $cn[$i][$j]['add'][1] . ' x' . $t[0] . '
'; + } else { + $txt .= 'Не удалось обменять предмет "' . $cn[$i][$j]['n'] . '", что-то не так ...
'; + } + $i = $cn[0]; + $j = count($cn[$i][$j]); + } + $j++; + } + $i++; + } + + if ($txt == '') { + $txt = 'У вас не хватило необходимых предметов...'; + } + + if ($txt != '') { + $txt = '
' . $txt . ''; + } + + } elseif ($act[0] == 'transferSpells32' && $go1 == 1) { + + $pg = $act[1]; + $itms = []; + $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "2561" OR `item_id` = "2565" OR `item_id` = "2569" OR `item_id` = "2573" OR `item_id` = "2577") AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 250'); + while ($pl = mysql_fetch_array($sp)) { + $itms[$pl['item_id']]++; + } + + $keypr = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = 0 AND `item_id` = "2555" LIMIT 1')); + if (!isset($keypr['id'])) { + $itms = []; + $txt = 'Необходим "Пирамидальный ключ", у вас его нет...'; + } + + //Предметы + $cn = [0 => 5, //кол-во классификаций + 1 => [1 => ['n' => 'Зачаровать Украшение [1]', 0 => 2561, 8 => 3, 'add' => [2562, 'Зачаровать Украшение [2]']], 2 => ['n' => 'Зачаровать Оружие [1]', 0 => 2565, 8 => 3, 'add' => [2566, 'Зачаровать Оружие [2]']], 3 => ['n' => 'Зачаровать Броню [1]', 0 => 2569, 8 => 3, 'add' => [2570, 'Зачаровать Броню [2]']], 4 => ['n' => 'Зачаровать Перчатки [0]', 0 => 2573, 8 => 3, 'add' => [2574, 'Зачаровать Перчатки [2]']], 5 => ['n' => 'Зачаровать Шлем [1]', 0 => 2577, 8 => 3, 'add' => [2578, 'Зачаровать Шлем [2]']]]]; + + $i = 1; + while ($i <= $cn[0]) { + $j = 1; + while ($j <= $cn[0]) { + + $t = $cn[$i][$j]; + $t = $this->trnObj($itms[$cn[$i][$j][0]], $this->objLevel($cn[$i][$j], 8)); + if ($t[0] > 0) { + $upd = mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . $cn[$i][$j][0] . '" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT ' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ''); + if ($upd) { + $data = '|frompisher=' . $d->info['id2']; + $e = 1; + while ($e <= $t[0]) { + $u->addItem($cn[$i][$j]['add'][0], $u->info['id'], $data); + $e++; + } + mysql_query('DELETE FROM `items_users` WHERE `id` = "' . $keypr['id'] . '" LIMIT 1'); + $txt .= $cn[$i][$j]['n'] . ' x' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ' = ' . $cn[$i][$j]['add'][1] . ' x' . $t[0] . '
'; + } else { + $txt .= 'Не удалось обменять предмет "' . $cn[$i][$j]['n'] . '", что-то не так ...
'; + } + $i = $cn[0]; + $j = count($cn[$i][$j]); + } + $j++; + } + $i++; + } + + if ($txt == '') { + $txt = 'У вас не хватило необходимых предметов...'; + } + + if ($txt != '') { + $txt = '
' . $txt . ''; + } + + } elseif ($act[0] == 'transferSpells33' && $go1 == 1) { + + $pg = $act[1]; + $itms = []; + $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "2562" OR `item_id` = "2566" OR `item_id` = "2570" OR `item_id` = "2574" OR `item_id` = "2578") AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 250'); + while ($pl = mysql_fetch_array($sp)) { + $itms[$pl['item_id']]++; + } + + $keypr = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = 0 AND `item_id` = "2555" LIMIT 1')); + if (!isset($keypr['id'])) { + $itms = []; + $txt = 'Необходим "Пирамидальный ключ", у вас его нет...'; + } + + //Предметы + $cn = [0 => 5, //кол-во классификаций + 1 => [1 => ['n' => 'Зачаровать Украшение [0]', 0 => 2562, 8 => 3, 'add' => [2563, 'Зачаровать Украшение [3]']], 2 => ['n' => 'Зачаровать Оружие [0]', 0 => 2566, 8 => 3, 'add' => [2567, 'Зачаровать Оружие [3]']], 3 => ['n' => 'Зачаровать Броню [0]', 0 => 2570, 8 => 3, 'add' => [2571, 'Зачаровать Броню [3]']], 4 => ['n' => 'Зачаровать Перчатки [0]', 0 => 2574, 8 => 3, 'add' => [2575, 'Зачаровать Перчатки [3]']], 5 => ['n' => 'Зачаровать Шлем [0]', 0 => 2578, 8 => 3, 'add' => [2579, 'Зачаровать Шлем [3]']]]]; + + $i = 1; + while ($i <= $cn[0]) { + $j = 1; + while ($j <= $cn[0]) { + + $t = $cn[$i][$j]; + $t = $this->trnObj($itms[$cn[$i][$j][0]], $this->objLevel($cn[$i][$j], 8)); + if ($t[0] > 0) { + $upd = mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . $cn[$i][$j][0] . '" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT ' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ''); + if ($upd) { + $data = '|frompisher=' . $d->info['id2']; + $e = 1; + while ($e <= $t[0]) { + $u->addItem($cn[$i][$j]['add'][0], $u->info['id'], $data); + $e++; + } + $txt .= $cn[$i][$j]['n'] . ' x' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ' = ' . $cn[$i][$j]['add'][1] . ' x' . $t[0] . '
'; + mysql_query('DELETE FROM `items_users` WHERE `id` = "' . $keypr['id'] . '" LIMIT 1'); + } else { + $txt .= 'Не удалось обменять предмет "' . $cn[$i][$j]['n'] . '", что-то не так ...
'; + } + $i = $cn[0]; + $j = count($cn[$i][$j]); + } + $j++; + } + $i++; + } + + if ($txt == '') { + $txt = 'У вас не хватило необходимых предметов...'; + } + + if ($txt != '') { + $txt = '
' . $txt . ''; + } + + } elseif ($act[0] == 'GoHrumpShop' && $go1 == 1) { //отправляемся в магазин Рульфа Хрумпта (пещеры мглы) + mysql_query('UPDATE `stats` SET `x` = "6",`y` = "73" WHERE `id` = "' . $u->info['id'] . '" AND `dnow` = "' . $u->info['dnow'] . '" LIMIT 1'); + header('location: main.php'); + die(); + } elseif ($act[0] == 'swapItem' && $go1 == 1) { + $txt = ''; + $swapItem = $act[1]; + $swapError = $act[2]; + $swapTrue = $act[3]; + # Обмениваем предметы у Забытого (Мастерская Забытых) + if (!isset($swapActStatus)) $swapActStatus = 1; # Все окей, проблем нет! + $swapAct = []; # Собираем данные об обмене. + $temp = explode("\\", $swapItem); + foreach ($temp as $t) { + $t = explode('=', $t); + if ($t[0] == 'tr') { // Нужны для обмена + $temp2 = explode(',', $t[1]); + $tr_items = []; + foreach ($temp2 as $t2) { + $temp3 = explode('x', $t2); + if (!isset($temp3[1])) $temp3[1] = 1; // Если количество не задано, задаем 1ед. + if (isset($temp3[2]) && $temp3[2] == 'del') $temp3[2] = true; else $temp3[2] = false; // Удаляем даже при неудачной попытке совершить обмен! + $tr_items[] = ['item_id' => $temp3[0], 'colvo' => (int)$temp3[1], 'delete' => $temp3[2]]; + } + $swapAct['tr'] = $tr_items; + + } elseif ($t[0] == 'needQuest') { // Если нужен какой-то квест для приобретения. + + } elseif ($t[0] == 'needRep') { // Если нужна репутация в подземельи + $temp2 = explode(',', $t[1]); + $need_rep = []; + $need_rep[] = ['city' => $temp2[0], 'rep' => (int)$temp2[1]]; + + $swapAct['need_rep'] = $need_rep; + + } elseif ($t[0] == 'add') { // Какие предметы даем. + $temp2 = explode(',', $t[1]); + $add_items = []; + foreach ($temp2 as $t2) { + $temp3 = explode('x', $t2); + if (!isset($temp3[1])) $temp3[1] = 1; // Если количество не задано, задаем 1ед. + $add_items[] = ['item_id' => $temp3[0], 'colvo' => (int)$temp3[1]]; + } + $swapAct['add'] = $add_items; + } elseif ($t[0] == 'uses') { // Если нужна репутация в подземельи + $swapAct['uses'] = $t[1]; + } + } // Цикл обработки данных разговора. + unset($temp, $temp2, $temp3, $t2, $tr_items, $add_items); + + if ($swapActStatus == 0) { + $txt = 'Я тебя раньше здесь не видел, уходи прочь негодник!'; + $pg = $swapError; + } elseif (isset($swapAct['need_rep'])) { # Проверяем репутацию. + foreach ($swapAct['need_rep'] as $rep) { # Если несколько репутаций + if ($u->rep['rep' . $rep['city']] < $rep['rep']) { + $swapActStatus = 0; + $txt = 'Я тебя раньше здесь не видел, уходи прочь негодник!'; + $pg = $swapError; + } + } + } + + if (isset($swapAct['uses'])) { # Проверяем количество раз использований. + #$swapAct['uses'] = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `room` = "'.$u->info['room'].'" AND `vals` = "masteryUses'.$u->info['dnow'].'" ORDER BY `id` DESC LIMIT '.$swapAct['uses'] .'')); + if (isset($swapAct['uses']['id'])) { + $swapActStatus = 0; + $txt = 'Кто-то уже побывал здесь и испортил кузницу, ничего не получится...'; + $pg = 0; + } + } + + if (isset($swapAct['tr']) and $swapActStatus == 1) { # Проверяем необходимые предметы. + foreach ($swapAct['tr'] as $item) { # Если несколько предметов. + $item_info = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $item['item_id'] . '" LIMIT 1')); + if (isset($item_info['id'])) { + $query = mysql_query('SELECT * FROM `items_users` WHERE `item_id` = "' . $item['item_id'] . '" AND `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `inShop` = "0" AND `inOdet` = "0" LIMIT ' . $item['colvo'] . ''); + $j = 0; + while ($t = mysql_fetch_array($query)) { + $j++; + } + if ($j < $item['colvo']) { + $txt .= 'У вас недостаточно предметов "' . $item_info['name'] . '"! (' . $item['item_id'] . ')
'; + $swapActStatus = 3; + $pg = $swapError; + } elseif ($swapActStatus != 3) { + $swapActStatus = 2; + } + } + } + } + + if (isset($swapAct['tr']) and $swapActStatus == 3) { # Забираем предметы del==true. + $mess = 'Израсходованы ресурсы: '; + $qsw = 0; + foreach ($swapAct['tr'] as $item) { # Если несколько предметов. + if ($item['delete'] == true) { + $query = mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `item_id` = "' . $item['item_id'] . '" AND `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `inShop` = "0" AND `inOdet` = "0" ORDER BY inGroup DESC LIMIT ' . $item['colvo'] . ''); + if ($query) { + $item_info = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $item['item_id'] . '" LIMIT 1')); + if ($qsw > 0) $mess .= ', '; + $mess .= '"' . $item_info['name'] . '"'; + if ($item['colvo'] > 1) $mess .= '(' . $item['item_id'] . 'шт)'; + $qsw++; + } + } + } + $mess .= '.
'; + if ($qsw > 0) $txt .= $mess; + } elseif (isset($swapAct['tr']) and $swapActStatus == 2) { # Забираем предметы все. + $mess = 'Израсходованы ресурсы: '; + $qsw = 0; + foreach ($swapAct['tr'] as $item) { + $query = mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `item_id` = "' . $item['item_id'] . '" AND `uid` = "' . $u->info['id'] . '" AND (`delete` = "0" OR `delete` = "1000") AND `inShop` = "0" AND `inOdet` = "0" ORDER BY inGroup DESC LIMIT ' . $item['colvo'] . ''); + if ($query) { + $item_info = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $item['item_id'] . '" LIMIT 1')); + if ($qsw > 0) $mess .= ', '; + $mess .= '"' . $item_info['name'] . '"'; + if ($item['colvo'] > 1) $mess .= '(' . $item['item_id'] . 'шт)'; + $qsw++; + } + } + $mess .= '.
'; + if ($qsw > 0) $txt .= $mess; + } + + if (isset($swapAct['add']) and $swapActStatus == 2) { # Выдаем предметы. + foreach ($swapAct['add'] as $item) { + $qsw = 0; + while ($qsw < $item['colvo']) { + $txt .= '
Вы получили предмет'; + $u->addItem($item['item_id'], $u->info['id']); + $qsw++; + } + } + + mysql_query('INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`,`vals`) VALUES ("' . $u->info['id'] . '","' . time() . '","' . $u->info['city'] . '","' . $u->info['room'] . '", "","' . mysql_real_escape_string($_SERVER['HTTP_X_REAL_IP']) . '", "masteryUses' . $u->info['dnow'] . '")'); + $pg = $swapTrue; + } + if ($txt != '') { + $txt = '
' . $txt . ''; + } + } + } + } + } + + if ($this->info['tr_room'] != 0 && $this->info['tr_room'] != $u->info['room']) { + $go = 0; + } + + if ($this->info['tr_dn'] != 0) { + //требует пещеру + global $d; + if ($this->info['tr_dn'] != $d->info['id2']) { + $go = 0; + } elseif ($this->info['x'] != 0 || $this->info['y'] != 0) { + if ($d->testLike($u->info['x'], $u->info['y'], $this->info['x'], $this->info['y']) != 1) { + $go = 0; + } + //если бот погиб + $dbot = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_bots` WHERE `dn` = "' . $u->info['dnow'] . '" AND `x` = "' . $this->info['x'] . '" AND `y` = "' . $this->info['y'] . '" LIMIT 1')); + if (!isset($dbot['id2'])) { + $go = 0; + } + } + } + + if ($go == 1) { + //dlg_nps:=:3=7 + //квест (с наградой) + $qs_sp = mysql_query('SELECT `id`,`act_date` FROM `quests` WHERE `act_date` LIKE "%dlg_nps:=:' . $this->info['id'] . '=' . $pg . '=1=e%" LIMIT 1'); + while ($qs_pl = mysql_fetch_array($qs_sp)) { + $q->endq($qs_pl['id'], 'win'); + $gsex = explode('=e' . $this->info['id'] . $pg . '=', $qs_pl['act_date']); + if ($gsex[1] > 0) { + //выдаем добавочный квест + $q->startq($gsex[1]); + $txt .= '
Задание изменилось'; + } + } + + //квест (без наградой) + $qs_sp = mysql_query('SELECT `id`,`act_date` FROM `quests` WHERE `act_date` LIKE "%dlg_nps:=:' . $this->info['id'] . '=' . $pg . '=0=e%" LIMIT 1'); + while ($qs_pl = mysql_fetch_array($qs_sp)) { + $q->endq($qs_pl['id'], 'end'); + $gsex = explode('=e' . $this->info['id'] . $pg . '=', $qs_pl['act_date']); + if ($gsex[1] > 0) { + //выдаем добавочный квест $gsex[1] + $q->startq($gsex[1]); + $txt .= '
Задание изменилось'; + } + } + + $this->title = $this->info['text']; + $this->youInfo = $u->getInfoPers($u->info['id'], 1); + $this->youInfo = $this->youInfo[0]; + $this->botInfo = $this->infoBot($this->info['bot_id']); + //Диалог + $qpl = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_dlg` WHERE `type` = "1" AND `qid` = "0" AND `id_dg` = "' . $this->info['id'] . '" AND `page` = "' . ((int)$pg) . '" LIMIT 1')); + if (!isset($qpl['id'])) { + if ($txt == '') { + $qpl['text'] = 'Диалог не найден ...'; + } else { + $qpl['text'] = $txt . ' (уйти)'; + $txt = ''; + } + } else { + $this->pg = $qpl['id']; + } + + if ($u->info['admin'] > 0) { + if (isset($_GET['add_new_qid'])) { + mysql_query('INSERT INTO `dungeon_dlg` (`type`,`qid`,`id_dg`,`text`) VALUES ("0","' . $qpl['id'] . '","' . $this->info['id'] . '","Новый вариант ответа")'); + } + } + + //Варианты ответа + $a = ''; + $sp = mysql_query('SELECT * FROM `dungeon_dlg` WHERE `type` = "0" AND `qid` = "' . $qpl['id'] . '" AND `id_dg` = "' . $this->info['id'] . '" ORDER BY `sort` DESC LIMIT 25'); + while ($pl = mysql_fetch_array($sp)) { + $pl['action'] = $this->ltr($pl['action']); + $act = explode('|', $pl['action']); + if (isset($act[1])) { + $pl['action'] = 'main.php?talk=' . $this->info['id'] . '&act=' . $pl['id'] . '&rnd=' . $code; + } + $go1 = ''; + if ($pl['tr'] != '') { + $i = 0; + $x = explode('|', $pl['tr']); + while ($i < count($x)) { + //Требования + $k = explode('=', $x[$i]); + if ($k[0] == 'data') { + $date = explode('-', $k[1]); + $dd1 = $date[0]; + $mm1 = $date[1]; + $dd2 = $date[2]; + $mm2 = $date[3]; + $date1 = strtotime($dd1 . '-' . $mm1 . '-' . date('Y')); + $date2 = strtotime($dd2 . '-' . $mm2 . '-' . date('Y')); + + if ($date1 > time() || $date2 < time()) { + $go1 = 'delete'; + $i = count($x); + } + + } elseif ($k[0] == 'diact') { + //Действия + //user_id # all # all # lukaqst1 # -1 + if ($this->quest_act($k[1]) == false) { + $go1 = 'delete'; + $i = count($x); + } + + } elseif ($k[0] == 'quest_end') { + //Квест можно выполнять несколько раз в текущей пещере + $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $k[1] . '" ORDER BY `id` DESC LIMIT 1')); + if (isset($qlst['id']) && $qlst['vals'] != 'win' && $qlst['vals'] != 'end' && $qlst['vals'] != 'bad') { + //$go1 .= "Вы уже взяли данное задание\n"; + $go1 = 'delete'; + $i = count($x); + } + } elseif ($k[0] == 'quest_only_one') { + //Квест можно выполнять только один раз + $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $k[1] . '" ORDER BY `id` DESC LIMIT 1')); + if (isset($qlst['id']) && ($qlst['vals'] == 'win' || $qlst['vals'] == 'bad')) { + //$go1 .= "Вы уже взяли данное задание\n"; + $go1 = 'delete'; + $i = count($x); + } + } elseif ($k[0] == 'quest_now') { + //Квест должен быть взят + $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $k[1] . '" ORDER BY `id` DESC LIMIT 1')); + if (isset($qlst['id']) && $qlst['vals'] != 'win' && $qlst['vals'] != 'end' && $qlst['vals'] != 'bad') { + } else { + $go1 = 'delete'; + $i = count($x); + } + } elseif ($k[0] == 'tr_itm') { + //Квест требует предмет + $qlst = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . $k[1] . '" AND `inOdet` = 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); + if ($qlst[0] < $k[2]) { + $go1 = 'delete'; + $i = count($x); + } + } elseif ($k[0] == 'tr_itmodet') { + //Квест требует предмет + $k[1] = str_replace(',', '" OR `item_id` = "', $k[1]); + $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "' . $k[1] . '") AND `inOdet` > 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); + if (!isset($qlst['id'])) { + $go1 = 'delete'; + $i = count($x); + } + } elseif ($k[0] == 'tr_noitmodet') { + //Квест требует предмет + $k[1] = str_replace(',', '" OR `item_id` = "', $k[1]); + $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "' . $k[1] . '") AND `inTransfer` = 0 AND `inOdet` > 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); + if (isset($qlst['id'])) { + $go1 = 'delete'; + $i = count($x); + } + } elseif ($k[0] == 'tr_noitm') { + //Квест требует предмет + $k[1] = str_replace(',', '" OR `item_id` = "', $k[1]); + $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "' . $k[1] . '") AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); + if (isset($qlst['id'])) { + $go1 = 'delete'; + $i = count($x); + } + } + $i++; + } + } + if ($u->info['admin'] > 0) { + $a .= '(ред.)   '; + } + if ($go1 == '') { + $a .= '• ' . $pl['text'] . '
'; + } elseif ($go1 == 'delete') { + if ($u->info['admin'] > 0) { + $a .= '• ' . $pl['text'] . '
'; + } + } else { + $a .= '' . $pl['text'] . ' [?]
'; + } + } + + + if ($u->info['admin'] > 0) { + $a .= 'Добавить вариант ответа'; + } + + $this->dText = $qpl['text'] . '
' . $txt; + $this->aText = $a; + } else { + $this->aText = '
Диалог не доступен, вернуться назад
'; + } + } else { + $this->aText = '
Диалог не найден, вернуться назад
' . ((int)$id) . '
'; + } + } + + public function dialog_act_update($data) + { + global $u; + $r = [false, '']; + $x = explode('#', $data); + $i = 0; + while ($i < count($x)) { + $k = explode('=', $x[$i]); + $var = $k[0]; + $val = $k[1]; + if ($var == 'take_item') { + //Забираем предмет + $itms = []; + $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . mysql_real_escape_string($val) . '" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 100'); + while ($pl = mysql_fetch_array($sp)) { + $itms[$pl['item_id']]++; + } + + if ($itms[$val] >= $k[2]) { + //$u->deleteItemID($val,$u->info['id'],$k[2]); + + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `item_id` = "' . mysql_real_escape_string($val) . '" AND `uid` = "' . $u->info['id'] . '" AND `inShop` = 0 AND `inTransfer` = 0 AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = 0 LIMIT ' . round($k[2])); + } else { + $i = count($x); + $r[0] = false; + $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $val . '" LIMIT 1')); + $r[1] = 'У вас нет нужного предмета! Требуется "' . $itm['name'] . '"'; + if ($k[2] > 1) { + $r[1] .= ' (' . $k[2] . ' шт.)'; + } + } + // + } elseif ($var == 'add_item') { + $data_itm = '|frompisher=1'; + $i1 = 0; + while ($i1 < $k[2]) { + if ($val == 4797) { + //Повестка + if ($u->info['level'] >= 4 && $u->info['level'] <= 7) { + $val = 4797; + } elseif ($u->info['level'] >= 8 && $u->info['level'] <= 9) { + $val = 4798; + } else { + $val = 4799; + } + } + $u->addItem($val, $u->info['id'], $data_itm); + $i1++; + } + } elseif ($var == 'up') { + $tqst = mysql_fetch_array(mysql_query('SELECT * FROM `dialog_act` WHERE `uid` = "' . $u->info['id'] . '" AND `var` = "' . mysql_real_escape_string($val) . '" ORDER BY `id` DESC LIMIT 1')); + if (!isset($tqst['id'])) { + mysql_query('INSERT INTO `dialog_act` ( + `uid`,`city`,`time`,`var`,`val` + ) VALUES ( + "' . $u->info['id'] . '","' . $u->info['city'] . '","' . time() . '","' . mysql_real_escape_string($val) . '","' . mysql_real_escape_string($k[2]) . '" + )'); + } else { + mysql_query('UPDATE `dialog_act` SET `val` = "' . mysql_real_escape_string($k[2]) . '" WHERE `uid` = "' . $u->info['id'] . '" AND `var` = "' . mysql_real_escape_string($val) . '" ORDER BY `id` DESC LIMIT 1'); + } + } elseif ($var == 'finish') { + $r[0] = true; + $r[1] = $val; + } + $i++; + } + return $r; + } + + public function quest_act($data) + { + global $u; + $r = true; + $f = explode('#', $data); + $ql = mysql_fetch_array(mysql_query('SELECT * FROM `dialog_act` WHERE `var` = "' . mysql_real_escape_string($f[3]) . '" AND `uid` = "' . $u->info['id'] . '" ORDER BY `id` DESC LIMIT 1')); + if (isset($ql['id'])) { + //user_id # all # all # lukaqst1 # -1 + if ($f[0] == 'user_id') { + $f[0] = $u->info['id']; + } + // + if ( + $f[0] != $ql['uid'] && $f[0] != 'all' || + $f[1] != $ql['city'] && $f[1] != 'all' || + $f[2] != $ql['time'] && $f[2] != 'all' || + $f[3] != $ql['var'] && $f[3] != 'all' || + $f[4] == -1 || + $f[4] != $ql['val'] || + $f[5] == 1 && $ql['now'] < $ql['max'] + ) { + $r = false; + } + } elseif ($f[4] != -1) { + $r = false; + } + return $r; + } + + public function ltr($v) + { + return $v; + } + + public function infoBot($id) + { + global $c, $code; + $r = ''; + $bot = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `id` = "' . ((int)$id) . '" LIMIT 1')); + if (isset($bot['id'])) { + //Характеристики от предметов и их изображение + $witm = []; + $witm[1] = ''; + $witm[2] = ''; + $witm[3] = ''; + $witm[4] = ''; + $witm[7] = ''; + $witm[8] = ''; + $witm[9] = ''; + $witm[10] = ''; + $witm[11] = ''; + $witm[12] = ''; + $witm[13] = ''; + $witm[14] = ''; + $witm[16] = ''; + $witm[17] = ''; + //40-52 слот под магию + $witm[53] = ''; + $witm[54] = ''; + $witm[55] = ''; + $witm[56] = ''; + $witm[57] = ''; + $witm[58] = ''; + + $pb = ''; + $hpmp = '?? '; + $eff = ''; + $anml = ''; + $oi = ''; + $msl = ''; + $witmg = ''; + + if ($bot['level'] < 0) { + $bot['level'] = '??'; + } + + $r = '
' . $bot['login'] . ' [' . $bot['level'] . ']
+
+
' . $pb . '
+ + + + + + +
+ + + + + + + + + + + + + + + + +
' . $witm[1] . '
' . $witm[2] . '
' . $witm[3] . '
' . $witm[4] . '
' . $witm[7] . '
+
+ + + + + + + + + + +
+ + ' . $hpmp . ' + +
+
+ +
+
' . $eff . '
' . $anml . ' +
+
' . $msl . '
+
+ + + + + + + + + + + + + + + + + + + + + + +
' . $witm[8] . '
' . $witm[9] . '
+ + + + + +
' . $witm[10] . '' . $witm[11] . '' . $witm[12] . '
' . $witm[13] . '
' . $witm[14] . '
' . $witm[16] . '
' . $witm[17] . '
+
' . $witmg . ' +
'; + } else { + $r = 'No information'; + } + return $r; + } +} + diff --git a/_incl_data/class/Dungeon.php b/_incl_data/class/Dungeon.php new file mode 100644 index 00000000..7d9dbfa6 --- /dev/null +++ b/_incl_data/class/Dungeon.php @@ -0,0 +1,1813 @@ + []]; //карта + private $cord = ['x' => 0]; + private $sg = [ + 1 => [1 => 1, 2 => 2, 3 => 3, 4 => 4], + 2 => [1 => 2, 2 => 3, 3 => 4, 4 => 1], + 3 => [1 => 3, 2 => 4, 3 => 1, 4 => 2], + 4 => [1 => 4, 2 => 1, 3 => 2, 4 => 3], + ]; + public $info; + public $error; + public $gs = 1; + public $information; + public $id_dng; + public $see; + + public function start() + { + global $u, $c, $code; + $this->info = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_now` WHERE `id` = "' . $u->info['dnow'] . '" LIMIT 1')); + $this->id_dng = $this->info['id2']; + $this->gs = $u->info['s']; + if ($this->gs < 1 || $this->gs > 4) { + $this->gs = 1; + } + + if ($this->info['bsid'] > 0) { + $this->bs = mysql_fetch_assoc(mysql_query('SELECT * FROM `bs_turnirs` WHERE `city` = "' . $u->info['city'] . '" AND `id` = "' . $this->info['bsid'] . '" AND `time_start` = "' . $this->info['time_start'] . '" LIMIT 1')); + } + + if (isset($_GET['itm_luck']) && $this->info['bsid'] == 0) { + $this->itm_luck((int)$_GET['itm_luck']); + } elseif (isset($_GET['itm_unluck']) && $this->info['bsid'] == 0) { + $this->itm_unluck((int)$_GET['itm_unluck']); + } elseif (isset($_GET['atack'])) { + $this->atack((int)$_GET['atack']); + } elseif (isset($_GET['take'])) { + $this->takeinv((int)$_GET['take']); + } elseif (isset($_GET['take_obj'])) { + $this->takeit((int)$_GET['take_obj']); + } elseif (isset($_GET['look'])) { + if ((int)$_GET['look'] == 1) { + if ($this->gs == 1) { + $this->gs = 2; + } elseif ($this->gs == 2) { + $this->gs = 3; + } elseif ($this->gs == 3) { + $this->gs = 4; + } elseif ($this->gs == 4) { + $this->gs = 1; + } + } elseif ((int)$_GET['look'] == 2) { + if ($this->gs == 1) { + $this->gs = 4; + } elseif ($this->gs == 2) { + $this->gs = 1; + } elseif ($this->gs == 3) { + $this->gs = 2; + } elseif ($this->gs == 4) { + $this->gs = 3; + } + } + mysql_query('UPDATE `stats` SET `s` = "' . ((int)$this->gs) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + $u->info['s'] = $this->gs; + } elseif (isset($_GET['go'])) { + //перемещение + $this->testGo((int)$_GET['go']); + } + + /* генерируем вид персонажа (только карта) + $this->gs = 1; //смотрим прямо + 2; //смотрим лево + 3; //смотрим вниз + 4; //смотрим право + ( ( ( `y` >= '.$u->info['y'].' && `y` <= '.($u->info['y']+4).' ) && ( `x` >= '.($u->info['x']-1).' && `x` <= '.($u->info['x']+1).' ) ) || ( (`x` = '.($u->info['x']+2).' || `x` = '.($u->info['x']-2).') && ( `y` = '.($u->info['y']+3).' || `y` = '.($u->info['y']+4).' ) ) ) + */ + + $whr = [1 => ' ((`x` <= ' . ($u->info['x'] + 2) . ' && `x` >= ' . ($u->info['x'] - 2) . ') && (`y` >= ' . $u->info['y'] . ' && `y` <= ' . ($u->info['y'] + 4) . ')) ', //прямо + 3 => ' ((`x` <= ' . ($u->info['x'] + 2) . ' && `x` >= ' . ($u->info['x'] - 2) . ') && (`y` <= ' . $u->info['y'] . ' && `y` >= ' . ($u->info['y'] - 4) . ')) ', //вниз + 2 => ' ((`x` <= ' . $u->info['x'] . ' && `x` >= ' . ($u->info['x'] - 4) . ') && (`y` <= ' . ($u->info['y'] + 2) . ' && `y` >= ' . ($u->info['y'] - 2) . ')) ', //лево + 4 => ' ((`x` >= ' . $u->info['x'] . ' && `x` <= ' . ($u->info['x'] + 4) . ') && (`y` <= ' . ($u->info['y'] + 2) . ' && `y` >= ' . ($u->info['y'] - 2) . ')) ' //право + ]; + + $i = 1; + $sp = mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "' . $this->id_dng . '" AND ' . $whr[$this->gs] . ' ORDER BY `y` ASC , `x` ASC LIMIT 25'); + while ($pl = mysql_fetch_assoc($sp)) { + $this->map[0][$pl['y'] . '_' . $pl['x']] = $pl; + $i++; + } + $this->map['good'] = $i; //целых клеток + $this->map[1] = $this->genMatix(); + $this->lookDungeon(); + } + + public function pickitem($obj, $itm, $for, $data = '', $dn_delete = false, $chat = 0) + { + global $u; + $itm = mysql_fetch_assoc(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $itm . '" LIMIT 1')); + if (isset($itm['id'])) { + $tou = 0; //какому юзеру предназначено + /* выделяем случайного юзера из команды */ + $itmnm = mysql_fetch_assoc(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itmz[0] . '" LIMIT 1')); + $itmnm = $itmnm['name']; + $asex = ''; + if ($u->info['sex'] == 1) { + $asex = 'а'; + } + + if ($for > 0) { + $tou = $for; + $rtxt = '' . $u->info['login'] . ' обнаружил' . $asex . ' предмет "' . $itm['name'] . '" в "' . $obj['name'] . '"'; + } else { + $rtxt = '' . $u->info['login'] . ' обнаружил' . $asex . ' предмет "' . $itm['name'] . '" в "' . $obj['name'] . '", и вы решили разыграть его'; + } + if ($dn_delete) { + $dn_delete = 1; + } else { + $dn_delete = 0; + } + if ($chat == 0) { + mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $u->info['dnow'] . "','" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); + } + $ins = mysql_query('INSERT INTO `dungeon_items` (`dn_delete`,`data`,`dn`,`user`,`item_id`,`time`,`x`,`y`) VALUES ( + "' . $dn_delete . '", + "' . mysql_real_escape_string($data) . '", + "' . $u->info['dnow'] . '", + "' . $tou . '", + "' . $itm['id'] . '", + "' . time() . '", + "' . $u->info['x'] . '", + "' . $u->info['y'] . '")'); + return $ins; + } + } + + public function n_lead($who, $lead) + { + global $u, $c, $code; + + $to = mysql_fetch_assoc(mysql_query('SELECT `u`.`id`, `u`.`login`, `st`.`id`, `st`.`dnow` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`login` = "' . mysql_real_escape_string($who) . '" LIMIT 1')); + + if ($this->info['uid'] != $lead) { + $this->error = 'Вы не лидер...'; + } elseif (!isset($to['id'])) { + $this->error = 'Персонаж не найден...'; + } elseif ($to['id'] == $this->info['uid']) { + $this->error = 'Вы и так лидер...'; + } elseif ($to['dnow'] != $this->info['id']) { + $this->error = 'Персонаж не найден в вашей команде...'; + } else { + mysql_query('UPDATE `dungeon_now` SET `uid` = "' . $to['id'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + if ($u->info['sex'] == 0) { + $this->sys_chat('' . $u->info['login'] . ' передал лидерство в группе персонажу ' . $to['login'] . ''); + } else { + $this->sys_chat('' . $u->info['login'] . ' передала лидерство в группе персонажу ' . $to['login'] . ''); + } + //header('Location: main.php'); + die(''); + } + } + + public function go_to_hell($who, $lead) + { + global $u, $c, $code; + + $to = mysql_fetch_assoc(mysql_query('SELECT `u`.`id`, `u`.`login`, `st`.`id`, `st`.`dnow` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`login` = "' . mysql_real_escape_string($who) . '" LIMIT 1')); + + if ($this->info['uid'] != $lead) { + $this->error = 'Вы не лидер...'; + } elseif (!isset($to['id'])) { + $this->error = 'Персонаж не найден...'; + } elseif ($to['id'] == $this->info['uid']) { + $this->error = 'Лидера нельзя выгнать...'; + } elseif ($to['dnow'] != $this->info['id']) { + $this->error = 'Персонаж не найден в вашей команде...'; + } else { + $rb = 321; // Магический портал + if ($u->info['room'] == 304) { + $rb = 209; // Вход в ледяную пещеру + } elseif ($u->info['room'] == 396) { + $rb = 395; // Канализация (Ангелс) + } elseif ($u->info['room'] == 398) { + $rb = 321; // Все пещеры + } elseif ($this->info['id2'] == 3) { + $rb = 293; // Вход в Катакомбы + } elseif ($this->info['id2'] == 1) { + $rb = 188; // Вход в Канализацию + } elseif ($this->info['id2'] == 13) { + $rb = 275; // Гора Легиона + } elseif ($this->info['id2'] == 12) { + $rb = 372; // Вход в Пещеру Тысячи Проклятий + } elseif ($this->info['id2'] == 444) { + $rb = 321; // Вход в пещеру инкв + } elseif ($this->info['id2'] == 31) { + $rb = 321; // Вход в пещеру инкв + } elseif ($this->info['id2'] == 101) { + $rb = 321; // Вход в Бездну + + } + + $sp = mysql_query('SELECT * FROM `dungeon_now` WHERE `time_finish` = "0" LIMIT 50'); + while ($pl = mysql_fetch_assoc($sp)) { + $cn = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `stats` WHERE `dnow` = "' . $pl['id'] . '" LIMIT 1')); + if (!isset($cn['id'])) { + mysql_query('DELETE FROM `dungeon_bots` WHERE `dn` = "' . $pl['id'] . '" AND `for_dn` = "0"'); + mysql_query('DELETE FROM `dungeon_obj` WHERE `dn` = "' . $pl['id'] . '" AND `for_dn` = "0"'); + mysql_query('DELETE FROM `dungeon_items` WHERE `dn` = "' . $pl['id'] . '" AND `for_dn` = "0"'); + mysql_query('DELETE FROM `dungeon_bots` WHERE `dn` = "' . $pl['id'] . '" AND `for_dn` = "0"'); + mysql_query('DELETE FROM `dungeon_actions` WHERE `dn` = "' . $pl['id'] . '"'); + mysql_query('UPDATE `dungeon_now` SET `time_finish` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + } + + $city = mysql_fetch_assoc(mysql_query('SELECT `id`, `city` FROM `room` WHERE `id` = "' . $rb . '" LIMIT 1')); + mysql_query('UPDATE `stats` SET `dnow` = "0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `room` = "' . $rb . '", `city`="' . $city['city'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + //удаляем все предметы которые пропадают после выхода из пещеры + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `dn_delete` = "1" LIMIT 1000'); + + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "1189" OR `item_id` = "4447" OR `item_id` = "1174") LIMIT 1000'); + + if ($u->info['sex'] == 0) { + $this->sys_chat('' . $u->info['login'] . ' выгнал из похода персонажа ' . $to['login'] . ''); + } else { + $this->sys_chat('' . $u->info['login'] . ' выгнала из похода персонажа ' . $to['login'] . ''); + } + header('Location: /main.php'); + } + } + + public function usersDng($laba = false) + { + global $u, $c; + $r = ''; + $stt = []; + if ($laba == false) { + $sp = mysql_query('SELECT `u`.`id`,`st`.`id` FROM `stats` AS `u` LEFT JOIN `users` AS `st` ON (`st`.`id` = `u`.`id`) WHERE `u`.`dnow` = "' . $this->info['id'] . '" LIMIT 10'); + } else { + $sp = mysql_query('SELECT `u`.`id` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`st`.`id` = `u`.`id`) WHERE `u`.`room` = 370 AND `st`.`dnow` = "' . $laba . '" AND `st`.`bot` = 0 LIMIT 6'); + } + while ($pl = mysql_fetch_assoc($sp)) { + $stt = $u->getStats($pl['id'], 0); + if ($stt['mpAll'] > 0) { + $pm = $stt['mpNow'] / $stt['mpAll'] * 100; + } + $ph = $stt['hpNow'] / $stt['hpAll'] * 100; + $r .= ' + +
  ' . $u->microLogin($pl['id'], 1) . '   ' . floor($stt['hpNow']) . '/' . $stt['hpAll'] . ' +
+
+
+'; + if ($stt['mpAll'] > 0) { + $r .= '
' . floor($stt['mpNow']) . '/' . $stt['mpAll'] . '
+
+
+
'; + } + $r .= '
'; + if ($this->info['uid'] == $pl['id']) { + $r .= ''; + } + if ($this->info['uid'] == $u->info['id'] && $pl['id'] == $u->info['id'] && $this->info['id2'] != 15) { + $r .= ' '; + $r .= ' '; + } + $r .= '

'; + $r .= ''; + } + unset($stt, $ph, $pm); + return $r; + } + + public function atack($id) + { + global $u, $c, $code; + $bot = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_bots` WHERE `id2` = "' . $id . '" AND `for_dn` = "0" AND `dn` = "' . $this->info['id'] . '" AND `delete` = "0" LIMIT 1')); + if (isset($bot['id2'])) { + if (($u->info['x'] != $bot['x'] || $bot['y'] != $u->info['y']) && $this->testLike($u->info['x'], $u->info['y'], $bot['x'], $bot['y']) == 1) { + //Создаем подеинок + $tbtl = mysql_fetch_assoc(mysql_query('SELECT * FROM `battle` WHERE `dn_id` = "' . $this->info['id'] . '" AND `team_win` = "-1" AND `x` = "' . $bot['x'] . '" AND `y` = "' . $bot['y'] . '" LIMIT 1')); + if (isset($tbtl['id'])) { + //вступаем в поединок + mysql_query('UPDATE `users` SET `battle` = "' . $tbtl['id'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + /*#$this->error = 'Нападаем ... '; // */ + //header('location: main.php'); + die(''); + } else { + $btl_id = 0; + //$expB = -77.77; + $expB = 0; + $btl = ['players' => '', 'timeout' => 120, 'type' => 0, 'invis' => 0, 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0]; + + $ins = mysql_query('INSERT INTO `battle` (`dungeon`,`dn_id`,`x`,`y`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( + "' . $this->info['id2'] . '", + "' . $this->info['id'] . '", + "' . $bot['x'] . '", + "' . $bot['y'] . '", + "' . $u->info['city'] . '", + "' . time() . '", + "' . $btl['players'] . '", + "' . $btl['timeout'] . '", + "' . $btl['type'] . '", + "' . $btl['invis'] . '", + "' . $btl['noinc'] . '", + "' . $btl['travmChance'] . '", + "' . $btl['typeBattle'] . '", + "' . $btl['addExp'] . '", + "' . $btl['money'] . '")'); + $btl_id = mysql_insert_id(); + + if ($btl_id > 0) { + //Добавляем ботов + $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "0" AND `dn` = "' . $this->info['id'] . '" AND `x` = "' . $bot['x'] . '" AND `y` = "' . $bot['y'] . '" AND `delete` = "0" LIMIT 1001'); + $j = 0; + $logins_bot = []; + while ($pl = mysql_fetch_assoc($sp)) { + $jui = 1; + mysql_query('UPDATE `dungeon_bots` SET `inBattle` = "' . $btl_id . '" WHERE `id2` = "' . $pl['id2'] . '" LIMIT 1'); + while ($jui <= $pl['colvo']) { + $k = $u->addNewbot($pl['id_bot'], null, null, $logins_bot); + $logins_bot = $k['logins_bot']; + if ($k != false) { + $upd = mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); + if ($upd) { + $upd = mysql_query('UPDATE `stats` SET `x`="' . $bot['x'] . '",`y`="' . $bot['y'] . '",`team` = "2" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); + if ($upd) { + $j++; + } + } + } + $jui++; + } + } + unset($logins_bot); + if ($j > 0) { + mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + /*#$this->error = 'Нападаем ...';// */ // + //header('location: main.php'); + die(''); + } else { + $this->error = 'Не удалось напасть, ошибка обьекта нападения ...'; + } + } else { + $this->error = 'Не удалось создать поединок ...'; + } + } + } else { + $this->error = 'Не удалось напасть ...'; + } + } else { + if (isset($this->bs['id']) || $this->info['id2'] == 15) { + $bot = mysql_fetch_assoc(mysql_query('SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id` = "' . mysql_real_escape_string($id) . '" LIMIT 1')); + if (($u->info['x'] != $bot['x'] || $bot['y'] != $u->info['y']) && $this->testLike($u->info['x'], $u->info['y'], $bot['x'], $bot['y']) == 1) { + //Создаем подеинок + $tbtl = mysql_fetch_assoc(mysql_query('SELECT * FROM `battle` WHERE `dn_id` = "' . $this->info['id'] . '" AND `team_win` = "-1" AND `x` = "' . $bot['x'] . '" AND `y` = "' . $bot['y'] . '" LIMIT 1')); + //die('Нападения временно запрещены. ['.$tbtl['id'].'] 5-10 мин.'); + if (isset($tbtl['id'])) { + //вступаем в поединок + $lstm = mysql_fetch_assoc(mysql_query('SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle`="' . $tbtl['id'] . '" ORDER BY `st`.`team` DESC LIMIT 1')); + mysql_query('UPDATE `users` SET `battle` = "' . $tbtl['id'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + $nextteam = $lstm['team'] + 1; + mysql_query('UPDATE `stats` SET `team` = "' . $nextteam . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `x` = "' . $bot['x'] . '", `y` = "' . $bot['y'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + // + if ($this->info['bsid'] > 0) { + + $me_real = mysql_fetch_assoc(mysql_query('SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "' . $u->info['id'] . '" AND `login` = "' . $u->info['login'] . '" LIMIT 1')); + $usr_real = mysql_fetch_assoc(mysql_query('SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "' . $bot['id'] . '" AND `login` = "' . $bot['login'] . '" LIMIT 1')); + mysql_query('UPDATE `stats` SET `tactic7`= 20.000 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + //Заносим в лог БС + if ($u->info['sex'] == 0) { + $text = '{u1} вмешался в поединок напав на {u2} »»'; + } else { + $text = '{u1} вмешалася в поединок напав на {u2} »»'; + } + if (isset($usr_real['id'])) { + $usrreal = ''; + if ($usr_real['align'] > 0) { + $usrreal .= ''; + } + if ($usr_real['clan'] > 0) { + $usrreal .= ''; + } + $usrreal .= '' . $usr_real['login'] . '[' . $usr_real['level'] . ']'; + } else { + $mereal = 'Невидимка[??]'; + } + if (isset($me_real['id'])) { + $mereal = ''; + if ($me_real['align'] > 0) { + $mereal .= ''; + } + if ($me_real['clan'] > 0) { + $mereal .= ''; + } + $mereal .= '' . $me_real['login'] . '[' . $me_real['level'] . ']'; + } else { + $mereal = 'Невидимка[??]'; + } + $text = str_replace('{u1}', $mereal, $text); + $text = str_replace('{u2}', $usrreal, $text); + //Добавляем в лог БС + mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( + "1", "' . mysql_real_escape_string($text) . '", "' . time() . '", "' . $this->bs['id'] . '", "' . $this->bs['count'] . '", "' . $this->bs['city'] . '", + "' . round($this->bs['money'] * 0.85, 2) . '","' . $i . '" + )'); + // + } + // + $this->error = 'Нападаем ... '; + } else { + $btl_id = 0; + //$expB = -77.77; + if ($this->info['id2'] == 1) { + $expB = 200; + } + $btl = ['players' => '', 'timeout' => 40, 'type' => 0, 'invis' => 0, 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0, 'inTurnir' => 0]; + + if ($this->info['bsid'] > 0) { + $btl['inTurnir'] = $this->info['bsid']; + } + + $ins = mysql_query('INSERT INTO `battle` (`inTurnir`,`dungeon`,`dn_id`,`x`,`y`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( + "' . $btl['inTurnir'] . '", + "' . $this->info['id2'] . '", + "' . $this->info['id'] . '", + "' . $bot['x'] . '", + "' . $bot['y'] . '", + "' . $u->info['city'] . '", + "' . time() . '", + "' . $btl['players'] . '", + "' . $btl['timeout'] . '", + "' . $btl['type'] . '", + "' . $btl['invis'] . '", + "' . $btl['noinc'] . '", + "' . $btl['travmChance'] . '", + "' . $btl['typeBattle'] . '", + "' . $btl['addExp'] . '", + "' . $btl['money'] . '")'); + $btl_id = mysql_insert_id(); + mysql_query('UPDATE `stats` SET `x` = "' . $bot['x'] . '", `y` = "' . $bot['y'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `x` = "' . $bot['x'] . '", `y` = "' . $bot['y'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + + if ($btl_id > 0) { + //Добавляем ботов + mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + + mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team` = "2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + + if ($u->stats['hpNow'] < 1) { + $u->stats['hpNow'] = 1; + mysql_query('UPDATE `stats` SET `hpNow` = "1" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `lose` = `lose` + 1 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } + + if ($bot['hpNow'] < 1) { + $bot['hpNow'] = 1; + mysql_query('UPDATE `stats` SET `hpNow` = "1" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `lose` = `lose` + 1 WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + } + + if ($this->info['bsid'] > 0) { + + $me_real = mysql_fetch_assoc(mysql_query('SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "' . $u->info['id'] . '" AND `login` = "' . $u->info['login'] . '" LIMIT 1')); + $usr_real = mysql_fetch_assoc(mysql_query('SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "' . $bot['id'] . '" AND `login` = "' . $bot['login'] . '" LIMIT 1')); + + //Заносим в лог БС + if ($u->info['sex'] == 0) { + $text = '{u1} напал на {u2} завязался бой »»'; + } else { + $text = '{u1} напала на {u2} завязался бой »»'; + } + if (isset($usr_real['id'])) { + $usrreal = ''; + if ($usr_real['align'] > 0) { + $usrreal .= ''; + } + if ($usr_real['clan'] > 0) { + $usrreal .= ''; + } + $usrreal .= '' . $usr_real['login'] . '[' . $usr_real['level'] . ']'; + } else { + $mereal = 'Невидимка[??]'; + } + if (isset($me_real['id'])) { + $mereal = ''; + if ($me_real['align'] > 0) { + $mereal .= ''; + } + if ($me_real['clan'] > 0) { + $mereal .= ''; + } + $mereal .= '' . $me_real['login'] . '[' . $me_real['level'] . ']'; + } else { + $mereal = 'Невидимка[??]'; + } + $text = str_replace('{u1}', $mereal, $text); + $text = str_replace('{u2}', $usrreal, $text); + //Добавляем в лог БС + mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( + "1", "' . mysql_real_escape_string($text) . '", "' . time() . '", "' . $this->bs['id'] . '", "' . $this->bs['count'] . '", "' . $this->bs['city'] . '", + "' . round($this->bs['money'] * 0.85, 2) . '","' . $i . '" + )'); + // + } + + $this->error = 'Нападаем ... '; + } else { + $this->error = 'Не удалось создать поединок ...'; + } + } + } else { + $this->error = 'Не удалось напасть ...'; + } + } else { + $this->error = 'Не удалось напасть, слишком далеко (id' . $id . ') ...'; + } + } + } + + public function testDie() + { + global $u, $c, $code; + $dies = mysql_fetch_assoc(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `dn` = "' . $u->info['dnow'] . '" AND `vars` = "die" LIMIT 1')); + $dies = $dies[0]; + + + if ($u->stats['hpNow'] < 1 || $dies > 2) { + if ($dies < 2) { + mysql_query('INSERT INTO `dungeon_actions` (`dn`,`uid`,`x`,`y`,`time`,`vars`,`vals`) VALUES ( + "' . $u->info['dnow'] . '","' . $u->info['id'] . '","' . $u->info['x'] . '","' . $u->info['y'] . '","' . time() . '","die","" + )'); + //21:50 Ярополк трагически погиб и находится в комнате "Этаж 2 - Водосток" + $dnow = mysql_fetch_assoc(mysql_query('SELECT id2 FROM `dungeon_now` WHERE `id` = "' . $u->info['dnow'] . '" LIMIT 1')); + $room = mysql_fetch_assoc(mysql_query('SELECT name FROM `dungeon_map_info` WHERE `x` = "' . $u->info['res_x'] . '" AND `y` = "' . $u->info['res_y'] . '" AND `id_dng` = "' . $dnow['id2'] . '" LIMIT 1')); + + if ($u->info['sex'] == 0) { + $this->sys_chat('' . $u->info['login'] . ' трагически погиб и находится в комнате "' . $room['name'] . '"'); + } else { + $this->sys_chat('' . $u->info['login'] . ' трагически погибла и находится в комнате "' . $room['name'] . '"'); + } + mysql_query('UPDATE `stats` SET `hpNow` = "1",`x` = "' . $u->info['res_x'] . '",`y` = "' . $u->info['res_y'] . '",`s` = "' . $u->info['res_s'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + //header('location: main.php'); + die(''); + } else { + mysql_query('INSERT INTO `dungeon_actions` (`dn`,`uid`,`x`,`y`,`time`,`vars`,`vals`) VALUES ( + "' . $u->info['dnow'] . '","' . $u->info['id'] . '","' . $u->info['x'] . '","' . $u->info['y'] . '","' . time() . '","die","" + )'); + //21:50 Ярополк трагически погиб и находится в комнате "Этаж 2 - Водосток" + if ($u->info['sex'] == 0) { + $this->sys_chat('' . $u->info['login'] . ' трагически погиб без права на воскрешение'); + } else { + $this->sys_chat('' . $u->info['login'] . ' трагически погибла без права на воскрешение'); + } + $_GET['exitd'] = true; + } + } + } + + //Предметы для БС + public $itbs = [0 => 558, 1 => 722, 2 => 718, 3 => 700, 4 => 291, 5 => 545, 6 => 533, 7 => 536, 8 => 628, 9 => 710, 10 => 654, 11 => 684, 12 => 689, 13 => 552, 14 => 552, 15 => 716, 16 => 320, 17 => 290, 18 => 543, 19 => 528, 20 => 540, 21 => 627, 22 => 709, 23 => 653, 24 => 681, 25 => 687, 26 => 523, 27 => 523, 28 => 712, 29 => 1151, 30 => 544, 31 => 541, 32 => 525, 33 => 539, 34 => 633, 35 => 707, 36 => 647, 37 => 680, 38 => 685, 39 => 567, 40 => 717, 41 => 706, 42 => 527, 43 => 537, 44 => 626, 45 => 708, 46 => 723, 47 => 651, 48 => 683, 49 => 686, 50 => 2862, 51 => 2863, 52 => 2864]; + + public function sys_chat($rtxt) + { + global $u; + mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $u->info['dnow'] . "','" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); + } + + public function takeit($id) + { + global $u, $c, $code, $magic; + $obj = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_obj` WHERE `id` = "' . $id . '" AND `for_dn` = "0" AND `dn` = "' . $this->info['id'] . '" LIMIT 1')); + if (isset($obj['id'])) { + $tbot = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_bots` WHERE `x` = "' . $obj['x'] . '" AND `y` = "' . $obj['y'] . '" AND `dn` = "' . $this->info['id'] . '" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1')); + + + $i = 0; + # Создаем МАССИВ { $act_sl['save_pos'] = "save_pos" }или { $act_sl['port'] = "10:20" } + $act_sl = []; + $act_sm = explode('|', $obj['action']); + while ($i < count($act_sm)) { + $s = explode(':', $act_sm[$i]); + if (isset($s[1]) && $s[1] != '') { + $act_sl[$s[0]] = $s[1]; + } else { + $act_sl[$s[0]] = $s[0]; + } + $i++; + } + + if (isset($tbot['id2'])) { + $this->error = 'Не удалось, что-то или кто-то мешает ...'; + } elseif ($this->testLike($u->info['x'], $u->info['y'], $obj['x'], $obj['y']) != 1) { + $this->error = 'Не удалось, слишком далеко ...!'; + } else { + $a = explode('|', $obj['action']); + $r = ''; + $i = 0; + while ($i < count($a)) { + $s = explode(':', $a[$i]); + + if ($s[0] == 'kill_bot') { + //Требуется убить ботов + $t = explode(',', $s[1]); + $tr_gd = 0; + + //Проверяем кого нужно убить и убили-ли + $j = 1; + $jn = 0; + while ($j < count($t)) { + $itm = explode('.', $t[$j]); + //[0] - x , [1] - y + $bot_itm = mysql_fetch_assoc(mysql_query('SELECT `u`.`id2`,`st`.`login` FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE `u`.`dn` = "' . $u->info['dnow'] . '" AND `u`.`x` = "' . $itm[0] . '" AND `u`.`y` = "' . $itm[1] . '" AND `u`.`delete` = "0" LIMIT 10')); + if (isset($bot_itm['id2'])) { + $jn++; + } + $j++; + } + + if ($jn == 0) { + $tr_gd = 1; + } + + unset($itm, $bot_itm, $jn); + if ($tr_gd == 0) { + if ($t[0] == '0') { + $r .= 'Не удалось, что-то или кто-то мешает ...'; + } else { + $r .= $t[0]; + } + $i = count($a); + } + } elseif ($s[0] == 'kill_bot_d') { + //Требуется убить ботов (все боты нападают , если что-то не так ) + $t = explode(',', $s[1]); + $tr_gd = 0; + + //Проверяем кого нужно убить и убили-ли + $j = 1; + $jn = 0; + $tuz = mysql_fetch_assoc(mysql_query('SELECT `x`,`y`,`id`,`hpNow` FROM `stats` WHERE `dnow` = "' . $this->info['id'] . '" AND ( (`x` = ' . ($pl['x'] + 1) . ' AND `y` = ' . ($pl['y']) . ') OR (`x` = ' . ($pl['x'] - 1) . ' AND `y` = ' . ($pl['y']) . ') OR (`x` = ' . ($pl['x']) . ' AND `y` = ' . ($pl['y'] + 1) . ') OR (`x` = ' . ($pl['x']) . ' AND `y` = ' . ($pl['y'] - 1) . ') ) LIMIT 1')); + while ($j < count($t)) { + $itm = explode('.', $t[$j]); + //[0] - x , [1] - y + $bot_itm_sp = mysql_query('SELECT `u`.*,`st`.* FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE `u`.`dn` = "' . $u->info['dnow'] . '" AND `u`.`x` = "' . $itm[0] . '" AND `u`.`y` = "' . $itm[1] . '" AND `u`.`delete` = "0" LIMIT 50'); + while ($bot_itm = mysql_fetch_assoc($bot_itm_sp)) { + $jn++; + $this->botAtack($bot_itm, $u->info, 1); + } + $j++; + } + + if ($jn == 0) { + $tr_gd = 1; + } + + unset($itm, $bot_itm, $jn); + if ($tr_gd == 0) { + if ($t[0] == '0') { + $r .= 'Не удалось, что-то или кто-то мешает ...'; + } else { + $r .= $t[0]; + } + $r .= ' Монстры начали атаковать вас!'; + $i = count($a); + } + } elseif ($s[0] == 'ditm') { + //требует предмет для действия + $j = 0; + $t = explode(',', $s[1]); + $tr_gd = 1; + while ($j < count($t)) { + $itm = explode('=', $t[$j]); + $uitm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itm[0] . '" LIMIT 1')); + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `item_id` = "' . $itm[0] . '" AND `uid` = "' . $u->info['id'] . '" AND (`delete` = 0 OR `delete` = 100) AND `inShop` = 0 AND `inTransfer` = 0 AND `inOdet` = 0 LIMIT ' . $itm[1]); + $r .= 'Предмет "' . $uitm['name'] . '" (x' . $itm[1] . ') был утрачен...
'; + $j++; + } + } elseif ($s[0] == 'tritm') { + //требует предмет для действия + $j = 0; + $t = explode(',', $s[1]); + $j = 0; + $tr_gd = 1; + while ($j < count($t)) { + $itm = explode('=', $t[$j]); + $uitm = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `items_users` WHERE `item_id` = "' . $itm[0] . '" AND `uid` = "' . $u->info['id'] . '" AND (`delete` = 0 OR `delete` = 100) AND `inShop` = 0 AND `inTransfer` = 0 AND `inOdet` = 0 LIMIT ' . $itm[1])); + $uitm = $uitm[0]; + if ($uitm < $itm[1]) { + $tr_gd = 0; + $uitm = mysql_fetch_assoc(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itm[0] . '" LIMIT 1')); + $r .= 'Требуется предмет "' . $uitm['name'] . '" (x' . $itm[1] . ')
'; + } + $j++; + } + if (rand(0, 10000) > $itm[2] * 100) { + $tr_gd = 0; + $r .= 'Странно, но ничего не произошло...
'; + } + if ($tr_gd == 1) { + //все отлично + } else { + $i = count($a); + } + } elseif ($s[0] == 'repl_ptp') { + require_once('dnaction/_dungeon_replace.php'); + die(); + //header('Location: ../../modules_data/location/_dungeon_replace.php'); + } elseif ($s[0] == 'add_eff') { + //Кастуем эффект + $t = explode(',', $s[1]); + $j = 0; + while ($j < count($t)) { + $itm = explode('=', $t[$j]); + $ch = $u->testAction('`vars` = "add_eff_' . $this->info['id'] . '_' . $obj['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT ' . (1 + (int)$itm[2]) . '', 2); //кол-во прошлых попыток + $ch = $ch[0]; + $ch2 = $u->testAction(' `vars` = "add_eff_' . $this->info['id'] . '_' . $obj['id'] . '" LIMIT ' . (1 + (int)$itm[4]) . '', 2); //кол-во прошлых попыток (все юзеры) + $ch2 = $ch2[0]; + if (($ch2 < $itm[4] || $itm[4] == 0) && $ch < $itm[2]) { + if ($itm[1] * 100 >= rand(0, 10000)) { + //удачно + $eff_d = mysql_fetch_assoc(mysql_query('SELECT `id2`,`mname` FROM `eff_main` WHERE `id2` = "' . $itm[0] . '" LIMIT 1')); + if (isset($eff_d['id2'])) { + //добавляем эффект + $us = $magic->add_eff($u->info['id'], $itm[0], 1); + if ($us[0] == 1) { + $r .= '
На Вас наложили заклятие "' . $eff_d['mname'] . '".
'; + } else { + $r .= '
Что-то пошло не так... Ощущается чье-то присутствие...
'; + } + } else { + $r .= '
Что-то пошло не так... Слышен чей-то вой...
'; + } + unset($eff_d, $us); + } else { + //не удачно + $r .= '
Не удалось...
'; + } + $u->addAction(time(), 'add_eff_' . $this->info['id'] . '_' . $obj['id'], $u->info['city']); + } else { + //уже нельзя юзать + $r .= '
Что-то пошло не так...
'; + } + + unset($ch, $ch2); + $j++; + } + } elseif ($s[0] == 'mfast') { + //Добавляем баф //Ловушки и бафы + $j = 0; + $t = explode(',', $s[1]); + while ($j < count($t)) { + $itm = explode('=', $t[$j]); + $ch = $u->testAction('`vars` = "bafit_' . $this->info['id'] . '_' . $obj['id'] . '" LIMIT ' . (1 + (int)$itm[2]) . '', 2); //кол-во прошлых попыток + $ch = $ch[0]; + if ($ch < $itm[3]) { + if ($itm[2] * 1000 >= rand(1, 100000)) { + if ($itm[0] == 'hpNow') { + $mm = explode('r', $itm[1]); + if ($mm[1] != 0) { + $itm[1] = rand($mm[0], $mm[1]); + } + if ($itm[1] < 0) { + $r .= '
Вы попали в ловушку... Здоровье: ' . $itm[1] . ' HP
'; + } elseif ($itm[1] > 0) { + $r .= '
Вы прикоснулись к магии... Здоровье: +' . $itm[1] . ' HP
'; + } + $u->info['hpNow'] += $itm[1]; + if ($u->info['hpNow'] < 1) { + $r .= '
Вы перемещены в точку возрождения...
'; + mysql_query('UPDATE `stats` SET `hpNow` = "' . $u->info['hpNow'] . '",`x` = "' . $u->info['res_x'] . '",`y` = "' . $u->info['res_y'] . '",`s` = "' . $u->info['res_s'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } else { + mysql_query('UPDATE `stats` SET `hpNow` = "' . $u->info['hpNow'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } + } + } + $u->addAction(time(), 'bafit_' . $this->info['id'] . '_' . $obj['id'], $u->info['city']); + } + //записываем попытку + $j++; + } + } elseif ($s[0] == 'save_pos') { + if (isset($act_sl['port'])) { + $itm = explode('=', $act_sl['port']); + $obj['x'] = $itm[0]; + $obj['y'] = $itm[1]; + } + #$r .= 'Позиция сохранена. Теперь после смерти вы оживете здесь.'; + mysql_query('UPDATE `stats` SET `res_x` = "' . $obj['x'] . '",`res_y` = "' . $obj['y'] . '",`res_s` = "' . $u->info['s'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } elseif ($s[0] == 'look_text') { + $itm = explode('=', $s[1]); + $r .= $itm[rand(0, count($itm) - 1)]; + } elseif ($s[0] == 'save_pos_xy') { + $itm = explode('=', $s[1]); + $u->info['res_x'] = $itm[0]; + $u->info['res_y'] = $itm[1]; + $upd = mysql_query('UPDATE `stats` SET `res_x` = "' . $u->info['x'] . '",`res_y` = "' . $u->info['y'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + if ($upd) { + $r .= 'Вы куда-то переместились... на этот раз удачно...
'; + } else { + $r .= 'Что-то здесь не так ...'; + } + } elseif ($s[0] == 'port') { + //телепортирует пользователя + $itm = explode('=', $s[1]); + $u->info['x'] = $itm[0]; + $u->info['y'] = $itm[1]; + $upd = mysql_query('UPDATE `stats` SET + `x` = "' . $u->info['x'] . '",`y` = "' . $u->info['y'] . '" + WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + if ($upd) { + $r .= 'Вы куда-то переместились... на этот раз удачно...
'; + } else { + $r .= 'Что-то здесь не так ...'; + } + } elseif ($s[0] == 'save_port') { + $itm = explode('=', $s[1]); + $u->info['res_x'] = $itm[0]; + $u->info['res_y'] = $itm[1]; + $upd = mysql_query('UPDATE `stats` SET `res_x` = "' . $u->info['res_x'] . '", `res_y` = "' . $u->info['res_y'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } elseif ($s[0] == 'itm') { + //Добавляем предмет + $j = 0; + $t = explode(',', $s[1]); + while ($j < count($t)) { + $itm = explode('=', $t[$j]); + $ch = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `vars` = "takeit_' . $this->info['id'] . '_' . $obj['id'] . '" LIMIT ' . (1 + (int)$itm[2]) . '', 2); //кол-во прошлых попыток + $ch = $ch[0]; + if ($ch >= $itm[2]) { + //закончились попытки + $r = 'ничего не произошло...
'; + } else { + if ($itm[1] * 1000 >= rand(1, 100000)) { + + //Случайный предмет (Башня смерти) + if ($itm[0] == 'random1') { + $itm[0] = $this->itbs[rand(0, count($this->itbs))]; + } + + //удачная попытка + $it = mysql_fetch_assoc(mysql_query('SELECT * FROM `items_main` WHERE `id`="' . ((int)$itm[0]) . '" LIMIT 1')); + if (isset($it['id'])) { + $r .= 'Вы обнаружили предмет "' . $it['name'] . '".
'; + $this->addItem(['uid' => $u->info['id'], 'iid' => $it['id'], 'time' => time(), 'x' => $u->info['x'], 'y' => $u->info['y'], 'bid' => 0, 'del' => (int)$itm[4]]); + } + } else { + //неудачная попытка + $r .= 'Вы ничего не нашли ...
'; + } + $u->addAction(time(), 'takeit_' . $this->info['id'] . '_' . $obj['id'], $u->info['city']); + } + //записываем попытку + $j++; + } + } elseif ($s[0] == 'itm1') { + //Добавляем предмет , только 1 предмет из всех и все юзеры могут тоже + $nj = 0; + $t = explode(',', $s[1]); + $j = rand(0, count($t)); + if ($nj == 0) { + $itm = explode('=', $t[$j]); + $ch = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `vars` = "takeit_' . $this->info['id'] . '_' . $obj['id'] . '" LIMIT ' . (1 + (int)$itm[2]) . '', 2); //кол-во прошлых попыток + $ch = $ch[0]; + if ($ch >= $itm[2]) { + //закончились попытки + $r .= 'Странно, но ничего не произошло...
'; + } else { + if ($itm[1] * 1000 >= rand(1, 100000)) { + + //Случайный предмет (Башня смерти) + if ($itm[0] == 'random1') { + $itm[0] = $this->itbs[rand(0, count($this->itbs))]; + } + + //удачная попытка + $it = mysql_fetch_assoc(mysql_query('SELECT * FROM `items_main` WHERE `id`="' . ((int)$itm[0]) . '" LIMIT 1')); + if (isset($it['id'])) { + $r .= 'Вы обнаружили предмет "' . $it['name'] . '".
'; + $u->addAction(time(), 'takeit_' . $this->info['id'] . '_' . $obj['id'], $u->info['city']); + $this->addItem(['uid' => $u->info['id'], 'iid' => $it['id'], 'time' => time(), 'x' => $u->info['x'], 'y' => $u->info['y'], 'bid' => 0, 'del' => (int)$itm[4]]); + $nj++; + } + } else { + //неудачная попытка + $u->addAction(time(), 'takeit_' . $this->info['id'] . '_' . $obj['id'], $u->info['city']); + $r .= 'Вы ничего не нашли ...
'; + } + } + } + } elseif ($s[0] == 'itm2') { + //Добавляем предмет , только 1 предмет из всех и только 1 юзер может поднять + $nj = 0; + $t = explode(',', $s[1]); + $j = rand(0, count($t) - 1); + if ($nj == 0) { + $itm = explode('=', $t[$j]); + $ch = $u->testAction('`vars` = "takeit_' . $this->info['id'] . '_' . $obj['id'] . '" LIMIT ' . (1 + (int)$itm[2]) . '', 2); //кол-во прошлых попыток + $ch = $ch[0]; + if ($ch >= $itm[2]) { + //закончились попытки + $r .= 'Ничего не произошло...
'; + } else { + if ($itm[1] * 1000 >= rand(1, 100000)) { + + //Случайный предмет (Башня смерти) + if ($itm[0] == 'random1') { + $itm[0] = $this->itbs[rand(0, count($this->itbs))]; + } + + //удачная попытка + $it = mysql_fetch_assoc(mysql_query('SELECT * FROM `items_main` WHERE `id`="' . ((int)$itm[0]) . '" LIMIT 1')); + if (isset($it['id'])) { + $r .= 'Вы обнаружили предмет "' . $it['name'] . '".
'; + $u->addAction(time(), 'takeit_' . $this->info['id'] . '_' . $obj['id'], $u->info['city']); + $this->addItem(['uid' => $u->info['id'], 'iid' => $it['id'], 'time' => time(), 'x' => $u->info['x'], 'y' => $u->info['y'], 'bid' => 0, 'del' => (int)$itm[4]]); + $nj++; + } + } else { + //неудачная попытка + $u->addAction(time(), 'takeit_' . $this->info['id'] . '_' . $obj['id'], $u->info['city']); + $r .= 'Вы ничего не нашли ...
'; + } + } + } + } elseif ($s[0] == 'fileact') { + require('dnaction/' . $s[1] . '.php'); + } + $i++; + } + $r = rtrim($r, '\'); + if ($r == '') { + $r = 'В этот раз не удалось найти что-либо еще'; + } + $this->error = $r; + } + } else { + $this->error = 'Предмет не найден ...'; + } + } + + public function addItem($i) + { + //добавляем предмет в пещеру (возможно выпал из бота или из сундука) + return mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`,`bot`,`del`) VALUES ("' . $this->info['id'] . '","' . $i['uid'] . '","' . $i['iid'] . '","' . $i['time'] . '","' . $i['x'] . '","' . $i['y'] . '","' . $i['bid'] . '","' . ((int)$i['del']) . '")'); + } + + public function takeinv($id) + { + global $u, $c, $code; + $obj = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_items` WHERE `id` = "' . $id . '" AND `for_dn` = "0" AND `dn` = "' . $this->info['id'] . '" LIMIT 1')); + if (isset($obj['id'])) { + $this->test_luck($id); + $fxv = ['luck_count' => mysql_fetch_assoc(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "' . $this->info['id'] . '" AND `vars` = "luck_itm' . mysql_real_escape_string($id) . '" LIMIT 1')), 'user_count' => mysql_fetch_assoc(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `dnow` = "' . $this->info['id'] . '" LIMIT 1'))]; + if ($obj['user'] == 0 && $fxv['user_count'][0] > $fxv['luck_count'][0] && $fxv['user_count'][0] > 1 && $this->info['bsid'] == 0) { + $this->error = 'Вы не можете сейчас поднять этот предмет, дождитесь завершения розыгрыша. Осталось ' . $u->timeOut($obj['time'] - time() + 300); + } elseif ($u->info['x'] != $obj['x'] || $obj['y'] != $u->info['y']) { + $this->error = 'Предмет не найден ...'; + } else { + if ($obj['take'] > 0) { + $this->error = 'Кто-то опередил вас ...'; + } else { + if ($obj['user'] > 0 && $obj['user'] != $u->info['id'] && $obj['time'] > time() - 300) { + $uo = mysql_fetch_assoc(mysql_query('SELECT `id`,`login`,`sex` FROM `users` WHERE `id` = "' . $obj['user'] . '" LIMIT 1')); + } + if (isset($uo['id'])) { + $this->error = 'Предмет предназначен для "' . $uo['login'] . '". Вы сможете забрать этот предмет, если '; + if ($uo['sex'] == 1) { + $this->error .= 'она '; + } else { + $this->error .= 'он '; + } + $this->error .= ' не поднимет его в течении ' . ceil(5 - (time() - $obj['time']) / 60) . ' мин.'; + unset($uo); + } else { + $upd = mysql_query('UPDATE `dungeon_items` SET `take` = "' . $u->info['id'] . '" WHERE `id` = "' . $obj['id'] . '" LIMIT 1'); + if ($upd) { + $it = mysql_fetch_assoc(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $obj['item_id'] . '" LIMIT 1')); + if (isset($it['id'])) { + $data = '|noremont=1|frompisher=' . $this->info['id2']; + if ($it['ts'] != 0) { + $data .= '|sudba=' . $u->info['login']; + } + if ($obj['data'] != '') { + $data .= $obj['data']; + } + $data = str_replace('|sudba=-1', '|sudba=' . $u->info['login'] . '', $data); + + $idl = $u->addItem($obj['item_id'], $u->info['id'], $data, $obj); + if ($obj['del'] > 0) { + mysql_query('UPDATE `items_users` SET `dn_delete` = 1 WHERE `id` = "' . $idl . '" LIMIT 1'); + } + unset($idl); + + if ($this->info['bsid'] == 0) { + $rtxt = '' . $u->info['login'] . ' поднял предмет "' . $it['name'] . '"'; + if ($obj['quest'] > 0) { + $rtxt .= ' (Квест)'; + } + mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $u->info['dnow'] . "','" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); + } + + $this->error = 'Вы подняли "' . $it['name'] . '"'; + } else { + $this->error = 'Не удалось найти предмет ...'; + } + } else { + $this->error = 'Не удалось добавить предмет в инвентарь ...'; + } + } + } + } + } + } + + + //Розыгрыш предмета + public function test_luck($id) + { + global $u; + $fxv = ['itm' => mysql_fetch_assoc(mysql_query('SELECT `im`.*,`ish`.* FROM `dungeon_items` AS `ish` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `ish`.`item_id`) WHERE `ish`.`dn` = "' . $this->info['id'] . '" AND `ish`.`id` = "' . mysql_real_escape_string($id) . '" AND `ish`.`take` = "0" AND `ish`.`delete` = "0" AND `ish`.`x` = "' . $u->info['x'] . '" AND `ish`.`y` = "' . $u->info['y'] . '" LIMIT 1')), 'luck_count' => mysql_fetch_assoc(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "' . $this->info['id'] . '" AND `vars` = "luck_itm' . mysql_real_escape_string($id) . '" LIMIT 1')), 'user_count' => mysql_fetch_assoc(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `dnow` = "' . $this->info['id'] . '" LIMIT 1'))]; + $fxv['luck_count'] = $fxv['luck_count'][0]; + $fxv['user_count'] = $fxv['user_count'][0]; + + if (($fxv['luck_count'] >= $fxv['user_count'] || $fxv['itm']['time'] + 300 < time()) && !empty($fxv['itm']['user'])) { + $fxv['sp'] = mysql_query('SELECT * FROM `dungeon_actions` WHERE `dn` = "' . $this->info['id'] . '" AND `vars` = "luck_itm' . mysql_real_escape_string($id) . '" ORDER BY `vals` DESC LIMIT ' . $fxv['luck_count'] . ''); + $fxv['winner'] = []; + $fxv['win_val'] = 0; + unset($fxv['pl'], $fxv['sp']); + if (count($fxv['winner']) > 1) { + //Розыгрыш еще раз между победителями + $this->error .= '
Розыгрыш завершен!
'; + } elseif (count($fxv['winner']) == 1) { + $fxv['user_win'] = mysql_fetch_assoc(mysql_query('SELECT `id`,`login`,`sex` FROM `users` WHERE `id` = "' . $fxv['winner'][0] . '" LIMIT 1')); + $fxv['text'] = '' . $fxv['user_win']['login'] . ' выигрывает в споре за предмет "' . $fxv['itm']['name'] . '"'; + $this->sys_chat($fxv['text']); + mysql_query('UPDATE `dungeon_items` SET `time` = "' . time() . '",`user` = "' . $fxv['user_win']['id'] . '" WHERE `id` = "' . $fxv['itm']['id'] . '" LIMIT 1'); + $this->error .= '
Розыгрыш завершен! Победитель ' . $fxv['user_win']['login'] . '!
'; + } + } else { + $this->error .= '
У остальных участников осталось ' . $u->timeOut($fxv['itm']['time'] + 300 - time()) . ' мин. до конца розыгрыша
'; + } + unset($fxv); + } + + public function itm_luck($id) + { + global $u; + $fxv = ['itm' => mysql_fetch_assoc(mysql_query('SELECT `im`.*,`ish`.* FROM `dungeon_items` AS `ish` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `ish`.`item_id`) WHERE `ish`.`dn` = "' . $this->info['id'] . '" AND `ish`.`id` = "' . mysql_real_escape_string($id) . '" AND `ish`.`take` = "0" AND `ish`.`delete` = "0" AND `ish`.`x` = "' . $u->info['x'] . '" AND `ish`.`y` = "' . $u->info['y'] . '" LIMIT 1')), 'luck' => mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `dn` = "' . $this->info['id'] . '" AND `vars` = "luck_itm' . mysql_real_escape_string($id) . '" LIMIT 1')), 'luck2' => mysql_fetch_assoc(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `dn` = "' . $this->info['id'] . '" AND `vars` = "luck_itm' . mysql_real_escape_string($id) . '" LIMIT 1'))]; + if ($u->stats['silver'] >= 3) { //дополнительный бросок + $fxv['luck2'][0]--; + } + if ($fxv['itm']['user'] > 0) { + $this->error = 'Розыгрыш предмет уже завершился...'; + } elseif (!isset($fxv['itm']['id'])) { + $this->error .= '
Предмет не найден
'; + } elseif ($fxv['luck2'][0] > 0) { + $this->error .= '
Вы уже учавствуете в розыгрыше "' . $fxv['itm']['name'] . '", ожидаем других участников еще ' . $u->timeOut($fxv['itm']['time'] - time() + 300) . '
'; + } else { + $luck_users = mysql_fetch_assoc(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `dn` = "' . $this->info['id'] . '" AND `vars` = "luck_itm' . mysql_real_escape_string($id) . '" LIMIT 1')); + $luck_users = $luck_users[0]; + if ($luck_users < 1) { + mysql_query('UPDATE `dungeon_items` SET `time` = "' . time() . '" WHERE `id` = "' . $fxv['itm']['id'] . '" LIMIT 1'); + } + $rndl = rand(1, 100); + mysql_query('INSERT INTO `dungeon_actions` (`uid`,`dn`,`x`,`y`,`time`,`vars`,`vals`) VALUES ( + "' . $u->info['id'] . '","' . $u->info['dnow'] . '","' . $u->info['x'] . '","' . $u->info['y'] . '","' . time() . '", + "luck_itm' . mysql_real_escape_string($id) . '","' . $rndl . '" + )'); + if ($u->info['sex'] == 0) { + $fxv['text'] = '' . $u->info['login'] . ' выбросил *' . $rndl . '* в споре за предмет "' . $fxv['itm']['name'] . '"'; + } else { + $fxv['text'] = '' . $u->info['login'] . ' выбросила *' . $rndl . '* в споре за предмет "' . $fxv['itm']['name'] . '"'; + } + $this->sys_chat($fxv['text']); + $this->error .= '
Вы выбросили ' . $rndl . ' в споре за "' . $fxv['itm']['name'] . '"
'; + } + $this->test_luck($id); + unset($fxv); + } + + public function itm_unluck($id) + { + global $u; + $fxv = ['itm' => mysql_fetch_assoc(mysql_query('SELECT `im`.*,`ish`.* FROM `dungeon_items` AS `ish` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `ish`.`item_id`) WHERE `ish`.`dn` = "' . $this->info['id'] . '" AND `ish`.`id` = "' . mysql_real_escape_string($id) . '" AND `ish`.`take` = "0" AND `ish`.`delete` = "0" AND `ish`.`x` = "' . $u->info['x'] . '" AND `ish`.`y` = "' . $u->info['y'] . '" LIMIT 1')), 'luck' => mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `dn` = "' . $this->info['id'] . '" AND `vars` = "luck_itm' . mysql_real_escape_string($id) . '" LIMIT 1'))]; + if ($fxv['itm']['user'] > 0) { + $this->error = 'Розыгрыш предмет уже завершился...'; + } elseif (!isset($fxv['itm']['id'])) { + $this->error .= '
Предмет не найден
'; + } elseif (isset($fxv['luck']['id'])) { + if ($fxv['luck']['vals'] == 0) { + $this->error .= '
Вы уже отказались от участия в розыгрыше "' . $fxv['itm']['name'] . '"
'; + } else { + $this->error .= '
Вы уже учавствуете в розыгрыше "' . $fxv['itm']['name'] . '", ожидаем других участников еще ' . $u->timeOut($fxv['itm']['time'] - time() + 300) . '
'; + } + } else { + $luck_users = mysql_fetch_assoc(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `dn` = "' . $this->info['id'] . '" AND `vars` = "luck_itm' . mysql_real_escape_string($id) . '" LIMIT 1')); + $luck_users = $luck_users[0]; + if ($luck_users < 1) { + mysql_query('UPDATE `dungeon_items` SET `time` = "' . time() . '" WHERE `id` = "' . $fxv['itm']['id'] . '" LIMIT 1'); + } + if ($u->info['sex'] == 0) { + $fxv['text'] = '' . $u->info['login'] . ' отказался от спора за предмет "' . $fxv['itm']['name'] . '"'; + } else { + $fxv['text'] = '' . $u->info['login'] . ' отказалась от спора за предмет "' . $fxv['itm']['name'] . '"'; + } + $this->sys_chat($fxv['text']); + mysql_query('INSERT INTO `dungeon_actions` (`uid`,`dn`,`x`,`y`,`time`,`vars`,`vals`) VALUES ( + "' . $u->info['id'] . '","' . $u->info['dnow'] . '","' . $u->info['x'] . '","' . $u->info['y'] . '","' . time() . '", + "luck_itm' . mysql_real_escape_string($id) . '","0" + )'); + $this->error .= '
Вы отказались от участия в розыгрыше "' . $fxv['itm']['name'] . '"
'; + } + unset($fxv); + } + + public function itemsMap() + { + global $u, $c, $code; + $r = ''; + $live_users = mysql_fetch_assoc(mysql_query('SELECT COUNT(`id`) FROM `stats` WHERE `dnow` = "' . $this->info['id'] . '" LIMIT 1')); + $live_users = $live_users[0]; + $sp = mysql_query('SELECT `im`.*,`ish`.* FROM `dungeon_items` AS `ish` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `ish`.`item_id`) WHERE `ish`.`dn` = "' . $this->info['id'] . '" AND `ish`.`take` = "0" AND `ish`.`delete` = "0" AND ( `ish`.`onlyfor` = "0" OR `ish`.`onlyfor` = "' . $u->info['id'] . '" ) AND `ish`.`x` = "' . $u->info['x'] . '" AND `ish`.`y` = "' . $u->info['y'] . '" LIMIT 100'); + while ($pl = mysql_fetch_assoc($sp)) { + $action = 'main.php?take=' . $pl['id'] . ''; + $tk = 0; + $luck_users = mysql_fetch_assoc(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `dn` = "' . $this->info['id'] . '" AND `vars` = "luck_itm' . mysql_real_escape_string($pl['id']) . '" LIMIT 1')); + $luck_users = $luck_users[0]; + if ($pl['user'] == 0 && $live_users > 1 && ($pl['time'] + 300 > time() || $luck_users < 1)) { + $fxv = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `dn` = "' . $this->info['id'] . '" AND `vars` = "luck_itm' . $pl['id'] . '" LIMIT 1')); + if (!isset($fxv['id'])) { + //Розыгрыш + if ($this->info['bsid'] == 0) { + $action = 'javascript: top.fartgame(\'' . $pl['id'] . '\',\'' . $pl['img'] . '\',\'' . $pl['name'] . '\',1,\'\');'; + $tk = 1; + } + } + } + if ($tk == 0) { + $r .= ''; + } elseif ($tk == 1) { + $r .= ''; + } + } + if ($r != '') { + $r = '

В комнате разбросаны вещи:

' . $r; //
Подобрать все
+ } + return $r; + } + + public function testLike($x1, $y1, $x2, $y2) + { + //из $x1,$y1 в $x2,$y2 + //доступна-ли эта клетка для действий + $r = 0; + $c1 = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $x1 . '" AND `y` = "' . $y1 . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); + $c2 = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $x2 . '" AND `y` = "' . $y2 . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); + if (isset($c1['id']) && isset($c2['id'])) { + if ($x1 == $x2 && $y1 == $y2) { + $r = 1; + } elseif ($x1 == $x2 - 1 && $c1['go_1'] == 1) //право + { + $r = 1; + } elseif ($x1 == $x2 + 1 && $c1['go_2'] == 1) //лево + { + $r = 1; + } elseif ($y1 == $y2 - 1 && $c1['go_3'] == 1) //верх + { + $r = 1; + } elseif ($y1 == $y2 + 1 && $c1['go_4'] == 1) //низ + { + $r = 1; + } + } + return $r; + } + + public function genObjects() + { + global $u, $c, $code; + ////i:{id,name,mapPoint,action,img,type}, + //'count':1,0:{0:1234,1:'Сундук',2:5,3:'',4:'test.gif',5:0,6:position,7:width,8:heigh,9:left,10:top}, + //psition 0 - по центру , 1- сверху, 2- слева, 3- снизу, 4- справа + $r = ''; + $whr = [1 => ' (((`u`.`x` <= ' . ($u->info['x'] + 2) . ' && `u`.`x` >= ' . ($u->info['x'] - 2) . ') && (`u`.`y` >= ' . ($u->info['y'] + 1) . ' && `u`.`y` <= ' . ($u->info['y'] + 4) . ')) OR (`u`.`y` = ' . $u->info['y'] . ' && `u`.`x` = ' . $u->info['x'] . ')) ', //прямо + 3 => ' (((`u`.`x` <= ' . ($u->info['x'] + 2) . ' && `u`.`x` >= ' . ($u->info['x'] - 2) . ') && (`u`.`y` <= ' . ($u->info['y'] - 1) . ' && `u`.`y` >= ' . ($u->info['y'] - 4) . ')) OR (`u`.`y` = ' . $u->info['y'] . ' && `u`.`x` = ' . $u->info['x'] . ')) ', //вниз + 2 => ' (((`u`.`x` <= ' . ($u->info['x'] - 1) . ' && `u`.`x` >= ' . ($u->info['x'] - 4) . ') && (`u`.`y` <= ' . ($u->info['y'] + 2) . ' && `u`.`y` >= ' . ($u->info['y'] - 2) . '))OR (`u`.`y` = ' . $u->info['y'] . ' && `u`.`x` = ' . $u->info['x'] . ')) ', //лево + 4 => ' (((`u`.`x` >= ' . ($u->info['x'] + 1) . ' && `u`.`x` <= ' . ($u->info['x'] + 4) . ') && (`u`.`y` <= ' . ($u->info['y'] + 2) . ' && `u`.`y` >= ' . ($u->info['y'] - 2) . ')) OR (`u`.`y` = ' . $u->info['y'] . ' && `u`.`x` = ' . $u->info['x'] . ')) ' //право + ]; + $sp = mysql_query('SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "' . $u->info['dnow'] . '" AND `u`.`for_dn` = "0" AND ((`u`.`s` = "0" OR `u`.`s` = "' . $this->gs . '") OR `u`.`s2` = "' . $this->gs . '") AND ' . $whr[$this->gs] . ' LIMIT 150'); + $i = 0; + $pos = []; + while ($pl = mysql_fetch_assoc($sp)) { + if ($pl['fix_x_y'] == 0 || ($pl['fix_x_y'] == 1 && $pl['x'] == $u->info['x']) || ($pl['fix_x_y'] == 2 && $pl['y'] == $u->info['y']) || ($pl['fix_x_y'] == 3 && $pl['x'] == $u->info['x'] && $pl['y'] == $u->info['y'])) { + if (($pl['os1'] == 0 && $pl['os2'] == 0 && $pl['os3'] == 0 && $pl['os4'] == 0) || ($this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os1'] || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os2'] || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os3'] || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os4'])) { + $i++; + if (!isset($pos[$this->cord[$pl['y'] . '_' . $pl['x']]])) { + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] = 0; + } + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]]++; + $r .= ',' . ($i - 1) . ':{0:' . $pl['id'] . ',1:\'' . $pl['name'] . '\',2:' . (0 + $this->cord[$pl['y'] . '_' . $pl['x']]) . ',3:\'action\',4:\'' . $pl['img'] . '\',5:' . $pl['type'] . ',6:0,7:' . $pl['w'] . ',8:' . $pl['h'] . ',9:' . $pl['left'] . ',10:' . $pl['top'] . ',11:' . $pl['date'] . '}'; + } elseif ($this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os1'] - 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os2'] - 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os3'] - 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os4'] - 1) { + $dt2 = explode(',', ltrim(rtrim($pl['date'], '\}'), '\{')); + $da = []; + $is = 0; + while ($is < count($dt2)) { + $dt2[$is] = explode(':', $dt2[$is]); + $da[$dt2[$is][0]] = $dt2[$is][1]; + $is++; + } + if (isset($da['use'])) unset($da['use']); // Справа + if (isset($da['rl2'])) $da['rl2'] = -round((int)$da['rl2'] * 1.55); // Слева + if (isset($da['rl3'])) $da['rl3'] = round((int)$da['rl3'] + 160); + if (isset($da['rl4'])) $da['rl4'] = round((int)$da['rl4'] - 120); + $pl['date'] = str_replace('"', '', json_encode($da)); + + + $i++; + if (!isset($pos[$this->cord[$pl['y'] . '_' . $pl['x']]])) { + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] = 0; + } + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]]++; + $r .= ',' . ($i - 1) . ':{0:' . $pl['id'] . ',1:\'' . $pl['name'] . '\',2:' . (0 + $this->cord[$pl['y'] . '_' . $pl['x']]) . ',3:\'\',4:\'' . $pl['img'] . '\',5:' . $pl['type'] . ',6:0,7:' . $pl['w'] . ',8:' . $pl['h'] . ',9:' . $pl['left'] . ',10:' . $pl['top'] . ',11:' . $pl['date'] . '}'; + } elseif ($this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os1'] + 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os2'] + 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os3'] + 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os4'] + 1) { + + $dt2 = explode(',', ltrim(rtrim($pl['date'], '\}'), '\{')); + $da = []; + $is = 0; + while ($is < count($dt2)) { + $dt2[$is] = explode(':', $dt2[$is]); + $da[$dt2[$is][0]] = $dt2[$is][1]; + $is++; + } + if (isset($da['use'])) unset($da['use']); // Справа + if (isset($da['rl2'])) $da['rl2'] = 355 - round((int)$da['rl2'] * 0.30); // Справа + if (isset($da['rl3'])) $da['rl3'] = round((int)$da['rl3'] - 160); + if (isset($da['rl4'])) $da['rl4'] = round((int)$da['rl4'] + 120); + $pl['date'] = str_replace('"', '', json_encode($da)); + $i++; + if (!isset($pos[$this->cord[$pl['y'] . '_' . $pl['x']]])) { + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] = 0; + } + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]]++; + $r .= ',' . ($i - 1) . ':{0:' . $pl['id'] . ',1:\'' . $pl['name'] . '\',2:' . (0 + $this->cord[$pl['y'] . '_' . $pl['x']]) . ',3:\'\',4:\'' . $pl['img'] . '\',5:' . $pl['type'] . ',6:0,7:' . $pl['w'] . ',8:' . $pl['h'] . ',9:' . $pl['left'] . ',10:' . $pl['top'] . ',11:' . $pl['date'] . '}'; + } + } + } + return 'count:' . $i . $r; + } + + public function botAtack($bot, $uid, $bs) + { + global $u, $c, $code; + $user = mysql_fetch_assoc(mysql_query('SELECT `id`,`battle` FROM `users` WHERE `id` = "' . $uid['id'] . '" LIMIT 1')); + + if ($user['battle'] > 0) { + $btli = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $user['battle'] . '" AND `team_win` = "-1" LIMIT 1')); + } + + if (!isset($btli['id'])) { //Создаем поединок + $btl_id = 0; + $expB = 0; + $btl = ['players' => '', 'timeout' => 120, 'type' => 0, 'invis' => 0, 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0]; + + mysql_query('INSERT INTO `battle` (`dungeon`,`dn_id`,`x`,`y`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ("' . $this->info['id2'] . '", "' . $this->info['id'] . '", "' . $bot['x'] . '", "' . $bot['y'] . '", "' . $u->info['city'] . '", "' . time() . '", "' . $btl['players'] . '", "' . $btl['timeout'] . '", "' . $btl['type'] . '", "' . $btl['invis'] . '", "' . $btl['noinc'] . '", "' . $btl['travmChance'] . '", "' . $btl['typeBattle'] . '", "' . $btl['addExp'] . '", "' . $btl['money'] . '")'); + + $btl_id = mysql_insert_id(); + + if ($btl_id > 0) { //Добавляем ботов + $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "0" AND `delete` = "0" AND `dn` = "' . $this->info['id'] . '" AND `id2` = "' . $bot['id2'] . '" LIMIT 1'); // Только тот, который напал и жив ли он? + $j = 0; + $logins_bot = []; + while ($pl = mysql_fetch_assoc($sp)) { + mysql_query('UPDATE `dungeon_bots` SET `inBattle` = "' . $btl_id . '" WHERE `id2` = "' . $bot['id2'] . '" LIMIT 1'); + $jui = 1; + while ($jui <= $pl['colvo']) { + $k = $u->addNewbot($pl['id_bot'], null, null, $logins_bot); + $logins_bot = $k['logins_bot']; + if ($k) { + $upd = mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); + if ($upd) { + $upd = mysql_query('UPDATE `stats` SET `team` = "2" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); + if ($upd) { + $j++; + } + } + } + $jui++; + } + } + unset($logins_bot); + if ($j > 0) { + mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $user['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $user['id'] . '" LIMIT 1'); + } + } + } else { + $btl_id = $btli['id']; + //Добавляем ботов + $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "0" AND `delete` = "0" AND `dn` = "' . $this->info['id'] . '" AND `id2` = "' . $bot['id2'] . '" LIMIT 1'); + $j = 0; + $logins_bot = []; + $logins_bot_text = []; + $logins_bot_vars = ['time1=' . time() . '']; + while ($pl = mysql_fetch_assoc($sp)) { + mysql_query('UPDATE `dungeon_bots` SET `inBattle` = "' . $btl_id . '" WHERE `id2` = "' . $bot['id2'] . '" LIMIT 1'); + $jui = 1; + while ($jui <= $pl['colvo']) { + $k = $u->addNewbot($pl['id_bot'], null, null, $logins_bot); + $logins_bot = $k['logins_bot']; + $logins_bot_text[] = ' ' . $k['login'] . ''; + if ($k != false) { + $upd = mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); + if ($upd) { + $upd = mysql_query('UPDATE `stats` SET `team` = "2" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); + if ($upd) { + $j++; + } + } + } + $jui++; + } + if ($j > 0) { + $logins_bot_text = '{tm1} В поединок вмешались: ' . implode(', ', $logins_bot_text) . '.'; + $logins_bot_vars = implode('||', $logins_bot_vars); + $battle_log = mysql_fetch_assoc(mysql_query('SELECT * FROM `battle_logs` WHERE `battle`=' . $btl_id . ' ORDER BY `id_hod` DESC LIMIT 1')); + if ($battle_log['id_hod'] > 0) { + mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . time() . '","' . $btl_id . '","' . ($battle_log['id_hod'] + 1) . '","' . $logins_bot_text . '","' . $logins_bot_vars . '","","","","",1)'); + } + } + } + unset($logins_bot); + if ($j > 0) { + mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $user['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $user['id'] . '" LIMIT 1'); + } + } + } + + public function genUsers() + { + global $u, $c, $code; + ////i:{id,login,mapPoint,sex,obraz,type,users_p}, + //'count':1,0:{0:1015,1:'Test1',2:5,3:0,4:'1',5:'user',6:1}, + $r = ''; + $whr = [1 => ' ((`u`.`x` <= ' . ($u->info['x'] + 2) . ' && `u`.`x` >= ' . ($u->info['x'] - 2) . ') && (`u`.`y` >= ' . $u->info['y'] . ' && `u`.`y` <= ' . ($u->info['y'] + 4) . ')) ', //прямо + 3 => ' ((`u`.`x` <= ' . ($u->info['x'] + 2) . ' && `u`.`x` >= ' . ($u->info['x'] - 2) . ') && (`u`.`y` <= ' . $u->info['y'] . ' && `u`.`y` >= ' . ($u->info['y'] - 4) . ')) ', //вниз + 2 => ' ((`u`.`x` <= ' . $u->info['x'] . ' && `u`.`x` >= ' . ($u->info['x'] - 4) . ') && (`u`.`y` <= ' . ($u->info['y'] + 2) . ' && `u`.`y` >= ' . ($u->info['y'] - 2) . ')) ', //лево + 4 => ' ((`u`.`x` >= ' . $u->info['x'] . ' && `u`.`x` <= ' . ($u->info['x'] + 4) . ') && (`u`.`y` <= ' . ($u->info['y'] + 2) . ' && `u`.`y` >= ' . ($u->info['y'] - 2) . ')) ' //право + ]; + // + $tmsu = mysql_fetch_assoc(mysql_query('SELECT * FROM `katok_now` WHERE `clone` = "' . $u->info['id'] . '" LIMIT 1')); + // + $sp = mysql_query('SELECT `u`.*,`st`.* FROM `stats` AS `u` LEFT JOIN `users` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`dnow` = "' . $u->info['dnow'] . '" AND ' . $whr[$this->gs] . ' AND `u`.`id` != "' . $u->info['id'] . '" LIMIT 100'); + $i = 0; + $pos = []; + while ($pl = mysql_fetch_assoc($sp)) { + $i++; + if (!isset($pos[$this->cord[$pl['y'] . '_' . $pl['x']]])) { + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] = 0; + } + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]]++; + $noat = 0; + if ($this->info['bsid'] > 0) { + $noat = 1; + } + if ($this->info['id2'] == 15) { + //Хоккей + $r .= ',' . ($i - 1) . ':{8:' . $noat . ',0:' . $pl['id'] . ',1:\'' . $pl['login'] . '\',2:' . (0 + $this->cord[$pl['y'] . '_' . $pl['x']]) . ',3:' . $pl['sex'] . ',4:\'' . str_replace('.gif', '', $pl['obraz']) . '\',5:\'user\',6:' . $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] . ''; + // + $tms = mysql_fetch_assoc(mysql_query('SELECT * FROM `katok_now` WHERE `clone` = "' . $pl['id'] . '" LIMIT 1')); + if ($tms['team'] == $tmsu['team']) { + $r .= ',9:1'; + } else { + $r .= ',9:2'; + } + $r .= ''; + // + $r .= '}'; + } else { + $r .= ',' . ($i - 1) . ':{9:0,8:' . $noat . ',0:' . $pl['id'] . ',1:\'' . $pl['login'] . '\',2:' . (0 + $this->cord[$pl['y'] . '_' . $pl['x']]) . ',3:' . $pl['sex'] . ',4:\'' . str_replace('.gif', '', $pl['obraz']) . '\',5:\'user\',6:' . $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] . '}'; + } + } + + //отображаем ботов + // + //$sp = mysql_query('SELECT `u`.*,`st`.* FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE `u`.`dn` = "'.$u->info['dnow'].'" AND `u`.`atack` = "0" AND `u`.`delete` = "0" AND `u`.`inBattle` = "0" AND `u`.`go_bot` > 0 ORDER BY `u`.`go_bot` ASC LIMIT 35'); + + // Выбираем Ботов в подземельи, которые Не в бою, Живые, и не дальше чем -\+30 по X и -\+35 по Y (дабы не гонять всех ботов, меньше выборка). + + $sp = mysql_query('SELECT `db`.*, `tb`.* FROM `dungeon_bots` AS `db` LEFT JOIN `test_bot` AS `tb` ON (`db`.`id_bot` = `tb`.`id`) LEFT JOIN `stats` as `st` ON (`st`.`dnow` = `db`.`dn`) WHERE `db`.`dn` = "' . $u->info['dnow'] . '" AND `db`.`x` > `st`.`x`-30 AND `db`.`x` < `st`.`x`+30 AND `db`.`y` > `st`.`y`-35 AND `db`.`y` < `st`.`y`+35 AND `db`.`atack` = "0" AND `db`.`delete` = "0" AND `db`.`inBattle` = "0" AND `db`.`go_bot` > 0 GROUP BY `db`.`id2` ORDER BY `db`.`go_bot` ASC LIMIT 100'); + while ($pl = mysql_fetch_assoc($sp)) { + //перемещение бота, каждые 3-10 сек. + if ($pl['go_bot'] > 0 && $pl['go_bot'] <= time()) { + $tgx = rand(-1, 1); + $tgy = rand(-1, 1); + if ($tgx != 0 && $tgy != 0) { + if (rand(0, 1) == 1) { + $tgy = 0; + } else { + $tgx = 0; + } + } + $vlb = $this->testLike($pl['x'], $pl['y'], $pl['x'] + $tgx, $pl['y'] + $tgy); + //Кто-то рядом + $tuz = mysql_fetch_assoc(mysql_query('SELECT `x`,`y`,`id`,`hpNow` FROM `stats` WHERE `dnow` = "' . $this->info['id'] . '" AND ( (`x` = ' . ($pl['x'] + 1) . ' AND `y` = ' . ($pl['y']) . ') OR (`x` = ' . ($pl['x'] - 1) . ' AND `y` = ' . ($pl['y']) . ') OR (`x` = ' . ($pl['x']) . ' AND `y` = ' . ($pl['y'] + 1) . ') OR (`x` = ' . ($pl['x']) . ' AND `y` = ' . ($pl['y'] - 1) . ') ) LIMIT 1')); + + if (isset($tuz['id']) && $this->testLike($pl['x'], $pl['y'], $tuz['x'], $tuz['y']) == 1) { + $tuz['x'] = $pl['x']; + $tuz['y'] = $pl['y']; + mysql_query('UPDATE `stats` SET `x` = "' . $tuz['x'] . '" , `y` = "' . $tuz['y'] . '" WHERE `id` = "' . $tuz['id'] . '" LIMIT 1'); + $this->botAtack($pl, $tuz, 1);//Тут + $sps = mysql_query('SELECT `db`.*, `tb`.* FROM `dungeon_bots` AS `db` LEFT JOIN `test_bot` AS `tb` ON (`db`.`id_bot` = `tb`.`id`) LEFT JOIN `stats` as `st` ON (`st`.`dnow` = `db`.`dn`) WHERE `db`.`dn` = "' . $u->info['dnow'] . '" AND `db`.`x` ="' . $tuz['x'] . '" AND `db`.`y` ="' . $tuz['y'] . '" AND `db`.`atack` = "0" AND `db`.`delete` = "0" AND `db`.`inBattle` = "0" GROUP BY `db`.`id2` ORDER BY `db`.`go_bot` ASC LIMIT 50'); + while ($pll = mysql_fetch_assoc($sps)) { + $this->botAtack($pll, $tuz, 1); + } + + } elseif ($vlb == 1) { // Передвижение ботов. + $pl['go_bot'] = time() + 10 + rand(1, 5); + $pl['x'] += $tgx; + $pl['y'] += $tgy; + mysql_query('UPDATE `dungeon_bots` SET `x` = "' . $pl['x'] . '",`y` = "' . $pl['y'] . '",`go_bot` = "' . $pl['go_bot'] . '" WHERE `id2` = "' . $pl['id2'] . '" LIMIT 1'); + } + unset($tgx, $tgy, $vlb, $tuz); + } + } + + $sp = mysql_query('SELECT `u`.*,`st`.* FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE `u`.`dn` = "' . $u->info['dnow'] . '" AND ' . $whr[$this->gs] . ' AND `u`.`delete` = "0" LIMIT 50'); + while ($pl = mysql_fetch_assoc($sp)) { + $i++; + if (!isset($pos[$this->cord[$pl['y'] . '_' . $pl['x']]])) { + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] = 0; + } + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]]++; + $dlg = 0; + if ($pl['dialog'] > 0) { + $dlg = $pl['dialog']; + } + $noat = 1; + if ($pl['noatack'] == 1 && $this->info['bsid'] == 0) { + $noat = 0; + } + $r .= ',' . ($i - 1) . ':{9:0,0:' . $pl['id2'] . ',1:\'' . $pl['login'] . '\',2:' . (0 + $this->cord[$pl['y'] . '_' . $pl['x']]) . ',3:' . $pl['sex'] . ',4:\'' . str_replace('.gif', '', $pl['obraz']) . '\',5:\'bot\',6:' . $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] . ',7:' . $dlg . ',8:' . $noat . '}'; + } + + return 'count:' . $i . $r; + } + + public function testGo($id) + { + global $u, $c, $code; + $go = 0; + if ($id == 1) { + //вперед + $go = $this->sg[$this->gs][1]; + } elseif ($id == 2) { + //назад + $go = $this->sg[$this->gs][3]; + } elseif ($id == 3) { + //на право + $go = $this->sg[$this->gs][4]; + } elseif ($id == 4) { + //на лево + $go = $this->sg[$this->gs][2]; + } + $thp = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['x'] . '" AND `y` = "' . $u->info['y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); + $ng = [4 => 1, 2 => 2, 1 => 3, 3 => 4]; + if (isset($thp['id']) && $thp['go_' . $ng[$go]] == 0) { + $go = 0; + } + $tgo = [0 => 0, 1 => 0]; + if ($go == 1) { + $tgo[1] += 1; + } elseif ($go == 2) { + $tgo[0] -= 1; + } elseif ($go == 3) { + $tgo[1] -= 1; + } elseif ($go == 4) { + $tgo[0] += 1; + } + + $tbot = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_bots` WHERE `x` = "' . ($u->info['x'] + (int)$tgo[0]) . '" AND `y` = "' . ($u->info['y'] + (int)$tgo[1]) . '" AND `dn` = "' . $this->info['id'] . '" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1')); + if (isset($tbot['id2']) && $u->info['admin'] == 0) { + $go = 0; + } + + $tmap = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['x'] . '" AND `y` = "' . $u->info['y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); + //наличие предмета + if ($tmap['tr_items'] != '') { + $ti = explode(',', $tmap['tr_items']); + $i = 0; + $trnit = ''; + while ($i < count($ti)) { + $ti2 = explode('=', $ti[$i]); + if ($ti2[0] > 0 && $ti2[1] > 0) { + $num_rows = mysql_num_rows(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `inShop` = "0" AND `item_id` = "' . ((int)$ti2[0]) . '" LIMIT ' . ((int)$ti2[1]) . '')); + if ($num_rows < (int)$ti2[1]) { + $tgo = $ti2[2]; + if ($tgo != '0000' && $tgo[$ng[$go] - 1] == 1) { + $go = 0; + $trm = mysql_fetch_assoc(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . ((int)$ti2[0]) . '" LIMIT 1')); + $trnit .= '"' . $trm['name'] . '", '; + } + } + } + $i++; + } + if ($trnit != '') { + $trnit = rtrim($trnit, ', '); + $this->error = 'У вас нет подходящего предмета. Требуется ' . $trnit; + } + } + + $tmGo = $u->info['timeGo'] - time(); //сколько секунд осталось + if ($tmGo > 0) { + $go = 0; + $this->error = 'Не так быстро...'; + } + + if ($u->aves['now'] >= $u->aves['max']) { + $go = 0; + $this->error = 'Вы не можете перемещаться, рюкзак переполнен ...'; + } + + if ($go > 0) { + if ($go == 1) { + $u->info['y'] += 1; + } elseif ($go == 2) { + $u->info['x'] -= 1; + } elseif ($go == 3) { + $u->info['y'] -= 1; + } elseif ($go == 4) { + $u->info['x'] += 1; + } + if ($u->stats['speed_dungeon'] > 0) { + $tmap['timeGO'] = round($tmap['timeGO'] / 100 * (100 - $u->stats['speed_dungeon'])); + if ($tmap['timeGO'] < 2) { + $tmap['timeGO'] = 1; + } + } + $u->info['timeGo'] = time() + $tmap['timeGO']; + $u->info['timeGoL'] = time(); + $tmap0 = mysql_fetch_assoc(mysql_query('SELECT `id`,`teleport` FROM `dungeon_map` WHERE `id_dng` = "' . $tmap['id_dng'] . '" AND `x` = "' . $u->info['x'] . '" AND `y` = "' . $u->info['y'] . '" LIMIT 1')); + if ($tmap0['teleport'] > 0) { + $tmap1 = mysql_fetch_assoc(mysql_query('SELECT `id`,`x`,`y` FROM `dungeon_map` WHERE `id` = "' . $tmap0['teleport'] . '" LIMIT 1')); + if (isset($tmap1['id'])) { + $u->info['x'] = $tmap1['x']; + $u->info['y'] = $tmap1['y']; + $this->error = 'Вы переместились в другую комнату...'; + } + } + mysql_query('UPDATE `stats` SET `x` = "' . $u->info['x'] . '",`y` = "' . $u->info['y'] . '",`timeGo` = "' . $u->info['timeGo'] . '",`timeGoL` = "' . $u->info['timeGoL'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + unset($id); + } + } + + public function testGone($id) + { + global $u, $c, $code; + $go = 0; + if ($id == 1) { + //вперед + $go = $this->sg[$this->gs][1]; + } elseif ($id == 2) { + //назад + $go = $this->sg[$this->gs][3]; + } elseif ($id == 3) { + //на право + $go = $this->sg[$this->gs][4]; + } elseif ($id == 4) { + //на лево + $go = $this->sg[$this->gs][2]; + } + $thp = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['x'] . '" AND `y` = "' . $u->info['y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); + $ng = [4 => 1, 2 => 2, 1 => 3, 3 => 4]; + if (isset($thp['id']) && $thp['go_' . $ng[$go]] == 0) { + $go = 0; + } + $tgo = [0 => 0, 1 => 0]; + if ($go == 1) { + $tgo[1] += 1; + } elseif ($go == 2) { + $tgo[0] -= 1; + } elseif ($go == 3) { + $tgo[1] -= 1; + } elseif ($go == 4) { + $tgo[0] += 1; + } + + $tbot = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_bots` WHERE `x` = "' . ($u->info['x'] + (int)$tgo[0]) . '" AND `y` = "' . ($u->info['y'] + (int)$tgo[1]) . '" AND `dn` = "' . $this->info['id'] . '" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1')); + if (isset($tbot['id2']) && $u->info['admin'] == 0) { + $go = 0; + } + + return $go; + } + + public function testSt($id, $s) + { + $r = 0; + //заменяем отображение стен в зависимости от угла обзора + $s = $this->sg[$this->gs][$s]; + if (isset($this->map[1][$id]['id'])) { + $r = $this->map[1][$id]['st'][($s - 1)]; + } + return $r; + } + + public function lookDungeon() + { + global $u, $c, $code, $pd; + /* Генерируем изображение карты */ /* LEVEL 1 */ + + // Исправления от 29/10/2014 относительно D5, 2 этаж, ПТП. Покрутиться и все гуд. и от 22/11/2014 для обратных стен. Если стена к нам задницей, мы её не видим. + if ($this->testSt(2, 4) > 0 /* || $this->testSt(3,2)>0 */) { + $pd[28] = 1; + } + if (/*$this->testSt(1,4)>0 ||*/ $this->testSt(2, 2) > 0) { + $pd[27] = 1; + } + if ($this->testSt(2, 1) > 0 /*|| $this->testSt(5,3)>0*/) { + $pd[26] = 1; + } + if ($this->testSt(3, 1) > 0/* || $this->testSt(6,3)>0*/) { + $pd[25] = 1; + } + if ($this->testSt(1, 1) > 0 /*|| $this->testSt(4,3)>0*/) { + $pd[24] = 1; + } + /* LEVEL 2 */ + if ($this->testSt(5, 4) > 0 /*|| $this->testSt(6,2)>0*/) { + $pd[23] = 1; + } + if (/*$this->testSt(4,4)>0 || */ $this->testSt(5, 2) > 0) { + $pd[22] = 1; + } + if ($this->testSt(5, 1) > 0 /*|| $this->testSt(8,3)>0*/) { + $pd[21] = 1; + } + if ($this->testSt(6, 1) > 0 /*|| $this->testSt(7,3)>0*/) { + $pd[20] = 1; + } + if ($this->testSt(4, 1) > 0/* || $this->testSt(9,3)>0*/) { + $pd[19] = 1; + } + + /* LEVEL 3 */ + if ($this->testSt(8, 4) > 0 /*|| $this->testSt(7,2)>0*/) { + $pd[18] = 1; + } + if (/*$this->testSt(9,4)>0 || */ $this->testSt(8, 2) > 0) { + $pd[17] = 1; + } + if ($this->testSt(8, 1) > 0 /* || $this->testSt(12,3)>0*/) { + $pd[16] = 1; + } + if ($this->testSt(7, 1) > 0 /* || $this->testSt(13,3)>0*/) { + $pd[15] = 1; + } + if ($this->testSt(9, 1) > 0 /*|| $this->testSt(11,3)>0*/) { + $pd[14] = 1; + } + + /* LEVEL 4 */ + + if ($this->testSt(12, 4) > 0 || $this->testSt(13, 2) > 0) { + $pd[13] = 1; + } + if ($this->testSt(12, 2) > 0 || $this->testSt(11, 4) > 0) { + $pd[12] = 1; + } + if ($this->testSt(13, 1) > 0 || $this->testSt(17, 3) > 0) { + $pd[11] = 1; + } //8 + if ($this->testSt(11, 1) > 0 || $this->testSt(16, 3) > 0) { + $pd[10] = 1; + } //7 + if ($this->testSt(12, 1) > 0/* || $this->testSt(15,3)>0*/) { + $pd[9] = 1; + } + if ($this->testSt(14, 1) > 0 || $this->testSt(18, 3) > 0) { + $pd[6] = 1; + } //2 + if ($this->testSt(10, 1) > 0 || $this->testSt(19, 3) > 0) { + $pd[5] = 1; + } //1 + if ($this->testSt(16, 4) > 0 || $this->testSt(15, 2) > 0) { + $pd[4] = 1; + } + if ($this->testSt(15, 4) > 0 || $this->testSt(17, 2) > 0) { + $pd[3] = 1; + } + + /* Генерируем предметы на карте */ + + /* Генерируем персонажей и ботов на карте */ + + } + + public function getMatrix($y, $x) + { + global $u; + $this->cord['x']++; + $this->cord[($u->info['y'] + $y) . '_' . ($u->info['x'] + $x)] = $this->cord['x']; + return $this->map[0][($u->info['y'] + $y) . '_' . ($u->info['x'] + $x)]; + } + + public function genMatix() + { + $r = []; + if ($this->gs == 1) { + //1; //смотрим прямо + $r[1] = $this->getMatrix(0, -1); # слева от меня + $r[2] = $this->getMatrix(0, 0); # подомной + $r[3] = $this->getMatrix(0, 1); # справа от меня + $r[4] = $this->getMatrix(1, -1); # слева +1 вперед + $r[5] = $this->getMatrix(1, 0); # передомной +1 + $r[6] = $this->getMatrix(1, 1); # справа +1 вперед + $r[7] = $this->getMatrix(2, 1); # справа +2 вперед + $r[8] = $this->getMatrix(2, 0); # передомной +2 + $r[9] = $this->getMatrix(2, -1); # слева +2 вперед + $r[10] = $this->getMatrix(3, -2); # слева через одну, +3 вперед + $r[11] = $this->getMatrix(3, -1); # слева +3 вперед + $r[12] = $this->getMatrix(3, 0); # передомной +3 + $r[13] = $this->getMatrix(3, 1); # справа +3 вперед + $r[14] = $this->getMatrix(3, 2); # справа через одну, +3 вперед + $r[15] = $this->getMatrix(4, 0); # передомной +4 + $r[16] = $this->getMatrix(4, -1); # слева +4 вперед + $r[17] = $this->getMatrix(4, 1); # справа +4 вперед + $r[18] = $this->getMatrix(4, 2); # справа через одну, +4 вперед + $r[19] = $this->getMatrix(4, -2); # слева через одну, +4 вперед + + } elseif ($this->gs == 2) { + //2; //смотрим лево + $r[1] = $this->getMatrix(-1, 0); + $r[2] = $this->getMatrix(0, 0); + $r[3] = $this->getMatrix(1, 0); + $r[4] = $this->getMatrix(-1, -1); + $r[5] = $this->getMatrix(0, -1); + $r[6] = $this->getMatrix(1, -1); + $r[7] = $this->getMatrix(1, -2); + $r[8] = $this->getMatrix(0, -2); + $r[9] = $this->getMatrix(-1, -2); + $r[10] = $this->getMatrix(-2, -3); + $r[11] = $this->getMatrix(-1, -3); + $r[12] = $this->getMatrix(0, -3); + $r[13] = $this->getMatrix(1, -3); + $r[14] = $this->getMatrix(2, -3); + $r[15] = $this->getMatrix(0, -4); + $r[16] = $this->getMatrix(-1, -4); + $r[17] = $this->getMatrix(1, -4); + $r[18] = $this->getMatrix(2, -4); + $r[19] = $this->getMatrix(-2, -4); + } elseif ($this->gs == 3) { + //3; //смотрим вниз + $r[1] = $this->getMatrix(0, 1); + $r[2] = $this->getMatrix(0, 0); + $r[3] = $this->getMatrix(0, -1); + $r[4] = $this->getMatrix(-1, 1); + $r[5] = $this->getMatrix(-1, 0); + $r[6] = $this->getMatrix(-1, -1); + $r[7] = $this->getMatrix(-2, -1); + $r[8] = $this->getMatrix(-2, 0); + $r[9] = $this->getMatrix(-2, 1); + $r[10] = $this->getMatrix(-3, 2); + $r[11] = $this->getMatrix(-3, 1); + $r[12] = $this->getMatrix(-3, 0); + $r[13] = $this->getMatrix(-3, -1); + $r[14] = $this->getMatrix(-3, -2); + $r[15] = $this->getMatrix(-4, 0); + $r[16] = $this->getMatrix(-4, 1); + $r[17] = $this->getMatrix(-4, -1); + $r[18] = $this->getMatrix(-4, -2); + $r[19] = $this->getMatrix(-4, 2); + } elseif ($this->gs == 4) { + //4; //смотрим право + $r[1] = $this->getMatrix(1, 0); + $r[2] = $this->getMatrix(0, 0); + $r[3] = $this->getMatrix(-1, 0); + $r[4] = $this->getMatrix(1, 1); + $r[5] = $this->getMatrix(0, 1); + $r[6] = $this->getMatrix(-1, 1); + $r[7] = $this->getMatrix(-1, 2); + $r[8] = $this->getMatrix(0, 2); + $r[9] = $this->getMatrix(1, 2); + $r[10] = $this->getMatrix(2, 3); + $r[11] = $this->getMatrix(1, 3); + $r[12] = $this->getMatrix(0, 3); + $r[13] = $this->getMatrix(-1, 3); + $r[14] = $this->getMatrix(-2, 3); + $r[15] = $this->getMatrix(0, 4); + $r[16] = $this->getMatrix(1, 4); + $r[17] = $this->getMatrix(-1, 4); + $r[18] = $this->getMatrix(-2, 4); + $r[19] = $this->getMatrix(2, 4); + } + return $r; + } +} diff --git a/_incl_data/class/DungeonEditor.php b/_incl_data/class/DungeonEditor.php new file mode 100644 index 00000000..4abcb580 --- /dev/null +++ b/_incl_data/class/DungeonEditor.php @@ -0,0 +1,609 @@ + [] //карта + ], $id_dng, $cord = ['x' => 0], $sg = [1 => [1 => 1, 2 => 2, 3 => 3, 4 => 4], 2 => [1 => 2, 2 => 3, 3 => 4, 4 => 1], 3 => [1 => 3, 2 => 4, 3 => 1, 4 => 2], 4 => [1 => 4, 2 => 1, 3 => 2, 4 => 3]]; + + public function start() + { + global $u, $c, $code, $id; + $this->info = ['id2' => $id, 'id' => 0, 'name' => 'Редактирование Пещеры', 'room' => 0, 'time_start' => time(), 'time_start' => 0, 'uid' => 0, 'type' => 0, 'bsid' => 0]; + + $this->id_dng = $this->info['id2']; + $this->gs = $u->info['psevdo_s']; + if ($this->gs < 1 || $this->gs > 4) { + $this->gs = 1; + } + + if ($this->info['bsid'] > 0) { + $this->bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `city` = "' . $u->info['city'] . '" AND `id` = "' . $this->info['bsid'] . '" AND `time_start` = "' . $this->info['time_start'] . '" LIMIT 1')); + //Если БС закончена + if (isset($this->bs['id']) && $this->bs['users'] - $this->bs['users_finish'] < 2) { + $u->bsfinish($this->bs, false, null); + } + } + + /* генерируем вид персонажа (только карта) + $this->gs = 1; //смотрим прямо + 2; //смотрим лево + 3; //смотрим вниз + 4; //смотрим право + ( ( ( `y` >= '.$u->info['psevdo_y'].' && `y` <= '.($u->info['psevdo_y']+4).' ) && ( `x` >= '.($u->info['psevdo_x']-1).' && `x` <= '.($u->info['psevdo_x']+1).' ) ) || ( (`x` = '.($u->info['psevdo_x']+2).' || `x` = '.($u->info['psevdo_x']-2).') && ( `y` = '.($u->info['psevdo_y']+3).' || `y` = '.($u->info['psevdo_y']+4).' ) ) ) + */ + + $whr = [1 => ' ((`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`y` >= ' . $u->info['psevdo_y'] . ' && `y` <= ' . ($u->info['psevdo_y'] + 4) . ')) ', //прямо + 3 => ' ((`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`y` <= ' . $u->info['psevdo_y'] . ' && `y` >= ' . ($u->info['psevdo_y'] - 4) . ')) ', //вниз + 2 => ' ((`x` <= ' . $u->info['psevdo_x'] . ' && `x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ', //лево + 4 => ' ((`x` >= ' . $u->info['psevdo_x'] . ' && `x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ' //право + ]; + + $i = 1; + $sp = mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "' . $this->id_dng . '" AND ' . $whr[$this->gs] . ' ORDER BY `y` ASC , `x` ASC LIMIT 25'); + while ($pl = mysql_fetch_array($sp)) { + $this->map[0][$pl['y'] . '_' . $pl['x']] = $pl; + $i++; + } + $this->map['good'] = $i; //целых клеток + $this->map[1] = $this->genMatix(); + $this->lookDungeon(); + } + + public function usersDng() + { + global $u, $c; + $r = ''; + /* отображение ботов (бесполезно в данном редакторе) */ + } + + public function atack($id) + { + global $u, $c, $code; + /* нападение, какое нападение может быть в редакторе? :) На самого себя, со стулом? :) */ + } + + public function takeinv($id) + { + global $u, $c, $code; + /* Это редактор, а не майнкрафт, здесь ничего собирать не нужно :) */ + } + + public function takeit($id) + { + global $u, $c, $code, $magic; + /* В редакторе ничего не падает ;) */ + } + + public function addItem($i) + { + //добавляем предмет в пещеру (возможно выпал из бота или из сундука) + /* А что еще? Пульт к управлению Землей?! */ + } + + public function itemsMap() + { + global $u, $c, $code; + /* Да ничего здесь не падает! Говорю же! */ + } + + public function testLike($x1, $y1, $x2, $y2) + { + //из $x1,$y1 в $x2,$y2 + //доступна-ли эта клетка для действий + $r = 0; + $c1 = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $x1 . '" AND `y` = "' . $y1 . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); + $c2 = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $x2 . '" AND `y` = "' . $y2 . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); + if (isset($c1['id']) && isset($c2['id'])) { + if ($x1 == $x2 && $y1 == $y2) { + $r = 1; + } elseif ( + $x1 == $x2 - 1 && $c1['go_1'] == 1 || //право + $x1 == $x2 + 1 && $c1['go_2'] == 1 || //лево + $y1 == $y2 - 1 && $c1['go_3'] == 1 || //верх + $y1 == $y2 + 1 && $c1['go_4'] == 1 //низ + ) + { + $r = 1; + } + } + return $r; + } + + public function genObjects() + { + global $u, $c, $code; + ////i:{id,name,mapPoint,action,img,type}, + //'count':1,0:{0:1234,1:'Сундук',2:5,3:'',4:'test.gif',5:0,6:position,7:width,8:heigh,9:left,10:top}, + //psition 0 - по центру , 1- сверху, 2- слева, 3- снизу, 4- справа + $r = ''; + $whr = [1 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` >= ' . ($u->info['psevdo_y'] + 1) . ' && `u`.`y` <= ' . ($u->info['psevdo_y'] + 4) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', //прямо + 3 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] - 1) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 4) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', //вниз + 2 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] - 1) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . '))OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', //лево + 4 => ' (((`u`.`x` >= ' . ($u->info['psevdo_x'] + 1) . ' && `u`.`x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ' //право + ]; + $sp = mysql_query('SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "0" AND `u`.`for_dn` = "' . $this->id_dng . '" AND ((`u`.`s` = "0" OR `u`.`s` = "' . $this->gs . '") OR `u`.`s2` = "' . $this->gs . '") AND ' . $whr[$this->gs] . ' LIMIT 76'); + # die('SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "0" AND `u`.`for_dn` = "'.$this->id_dng.'" AND ((`u`.`s` = "0" OR `u`.`s` = "'.$this->gs.'") OR `u`.`s2` = "'.$this->gs.'") AND '.$whr[$this->gs].' LIMIT 76'); + $i = 0; + $pos = []; + while ($pl = mysql_fetch_array($sp)) { + + if ($pl['fix_x_y'] == 0 || ($pl['fix_x_y'] == 1 && $pl['x'] == $u->info['psevdo_x']) || ($pl['fix_x_y'] == 2 && $pl['y'] == $u->info['psevdo_y']) || ($pl['fix_x_y'] == 3 && $pl['x'] == $u->info['psevdo_x'] && $pl['y'] == $u->info['psevdo_y'])) { + if (($pl['os1'] == 0 && $pl['os2'] == 0 && $pl['os3'] == 0 && $pl['os4'] == 0) || ($this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os1'] || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os2'] || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os3'] || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os4'])) { + $i++; + if (!isset($pos[$this->cord[$pl['y'] . '_' . $pl['x']]])) { + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] = 0; + } + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]]++; + $r .= ',' . ($i - 1) . ':{\'x\':' . $pl['x'] . ',\'y\':' . $pl['y'] . ',0:' . $pl['id'] . ',1:\'' . $pl['name'] . '\',2:' . (0 + $this->cord[$pl['y'] . '_' . $pl['x']]) . ',3:\'action\',4:\'' . $pl['img'] . '\',5:' . $pl['type'] . ',6:0,7:' . $pl['w'] . ',8:' . $pl['h'] . ',9:' . $pl['left'] . ',10:' . $pl['top'] . ',11:' . $pl['date'] . ',12:' . $pl['type'] . ',13:' . $pl['type2'] . ',14:' . $pl['s'] . ',15:' . $pl['s2'] . ',16:' . $pl['os1'] . ',17:' . $pl['os2'] . ',18:' . $pl['os3'] . ',19:' . $pl['os4'] . ',20:' . $pl['fix_x_y'] . '}'; + } elseif ($this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os1'] - 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os2'] - 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os3'] - 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os4'] - 1) { + $dt2 = explode(',', ltrim(rtrim($pl['date'], '\}'), '\{')); + $da = []; + $is = 0; + while ($is < count($dt2)) { + $dt2[$is] = explode(':', $dt2[$is]); + $da[$dt2[$is][0]] = $dt2[$is][1]; + $is++; + } + #if(isset($da['rl2']))$da['rl2'] = -round((int)$da['rl2'] * 0.70); // Слева + if (isset($da['rl2'])) $da['rl2'] = round((int)$da['rl2'] - 230); // Слева + if (isset($da['rl3'])) $da['rl3'] = round((int)$da['rl3'] + 160); + if (isset($da['rl4'])) $da['rl4'] = round((int)$da['rl4'] - 120); + $pl['date'] = str_replace('"', '', json_encode($da)); + $i++; + if (!isset($pos[$this->cord[$pl['y'] . '_' . $pl['x']]])) { + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] = 0; + } + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]]++; + $r .= ',' . ($i - 1) . ':{\'x\':' . $pl['x'] . ',\'y\':' . $pl['y'] . ',0:' . $pl['id'] . ',1:\'' . $pl['name'] . '\',2:' . (0 + $this->cord[$pl['y'] . '_' . $pl['x']]) . ',3:\'action\',4:\'' . $pl['img'] . '\',5:' . $pl['type'] . ',6:0,7:' . $pl['w'] . ',8:' . $pl['h'] . ',9:' . $pl['left'] . ',10:' . $pl['top'] . ',11:' . $pl['date'] . ',12:' . $pl['type'] . ',13:' . $pl['type2'] . ',14:' . $pl['s'] . ',15:' . $pl['s2'] . ',16:' . $pl['os1'] . ',17:' . $pl['os2'] . ',18:' . $pl['os3'] . ',19:' . $pl['os4'] . ',20:' . $pl['fix_x_y'] . '}'; + } elseif ($this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os1'] + 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os2'] + 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os3'] + 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os4'] + 1) { + + $dt2 = explode(',', ltrim(rtrim($pl['date'], '\}'), '\{')); + $da = []; + $is = 0; + while ($is < count($dt2)) { + $dt2[$is] = explode(':', $dt2[$is]); + $da[$dt2[$is][0]] = $dt2[$is][1]; + $is++; + } + #if(isset($da['rl2']))$da['rl2'] = 355-round((int)$da['rl2'] * 0.30); // Справа + if (isset($da['rl2'])) $da['rl2'] = round((int)$da['rl2'] + 230); // Справа + if (isset($da['rl3'])) $da['rl3'] = round((int)$da['rl3'] - 160); + if (isset($da['rl4'])) $da['rl4'] = round((int)$da['rl4'] + 120); + $pl['date'] = str_replace('"', '', json_encode($da)); + $i++; + if (!isset($pos[$this->cord[$pl['y'] . '_' . $pl['x']]])) { + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] = 0; + } + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]]++; + $r .= ',' . ($i - 1) . ':{\'x\':' . $pl['x'] . ',\'y\':' . $pl['y'] . ',0:' . $pl['id'] . ',1:\'' . $pl['name'] . '\',2:' . (0 + $this->cord[$pl['y'] . '_' . $pl['x']]) . ',3:\'action\',4:\'' . $pl['img'] . '\',5:' . $pl['type'] . ',6:0,7:' . $pl['w'] . ',8:' . $pl['h'] . ',9:' . $pl['left'] . ',10:' . $pl['top'] . ',11:' . $pl['date'] . ',12:' . $pl['type'] . ',13:' . $pl['type2'] . ',14:' . $pl['s'] . ',15:' . $pl['s2'] . ',16:' . $pl['os1'] . ',17:' . $pl['os2'] . ',18:' . $pl['os3'] . ',19:' . $pl['os4'] . ',20:' . $pl['fix_x_y'] . '}'; + } + } + } + return 'count:' . $i . $r; + } + + public function genUsers() + { + global $u, $c, $code; + ////i:{id,login,mapPoint,sex,obraz,type,users_p}, + //'count':1,0:{0:1015,1:'Test1',2:5,3:0,4:'1',5:'user',6:1}, + $r = ''; + $whr = [1 => ' ((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` >= ' . $u->info['psevdo_y'] . ' && `u`.`y` <= ' . ($u->info['psevdo_y'] + 4) . ')) ', //прямо + 3 => ' ((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` <= ' . $u->info['psevdo_y'] . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 4) . ')) ', //вниз + 2 => ' ((`u`.`x` <= ' . $u->info['psevdo_x'] . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ', //лево + 4 => ' ((`u`.`x` >= ' . $u->info['psevdo_x'] . ' && `u`.`x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ' //право + ]; + $i = 0; + //отображаем ботов + $sp = mysql_query('SELECT `u`.*,`st`.* FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE ' . $whr[$this->gs] . ' AND `dn` = "0" AND `for_dn` = "' . $this->id_dng . '" AND `u`.`delete` = "0" LIMIT 50'); + while ($pl = mysql_fetch_array($sp)) { + $i++; + if (!isset($pos[$this->cord[$pl['y'] . '_' . $pl['x']]])) { + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] = 0; + } + $pos[$this->cord[$pl['y'] . '_' . $pl['x']]]++; + $dlg = 0; + if ($pl['dialog'] > 0) { + $dlg = $pl['dialog']; + } + $r .= ',' . ($i - 1) . ':{0:' . $pl['id2'] . ',1:\'' . $pl['login'] . '\',2:' . (0 + $this->cord[$pl['y'] . '_' . $pl['x']]) . ',3:' . $pl['sex'] . ',4:\'' . str_replace('.gif', '', $pl['obraz']) . '\',5:\'bot\',6:' . $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] . ',7:' . $dlg . '}'; + } + return 'count:' . $i . $r; + } + + public function botAtack($bot, $uid, $bs) + { + global $u, $c, $code; + $user = mysql_fetch_array(mysql_query('SELECT `id`,`battle` FROM `users` WHERE `id` = "' . $uid['id'] . '" LIMIT 1')); + if ($user['battle'] > 0) { + $btli = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $user['battle'] . '" AND `team_win` = "-1" LIMIT 1')); + } + if (!isset($btli['id'])) { + //Создаем поединок + $btl_id = 0; + $expB = 0; + $btl = ['players' => '', 'timeout' => 180, 'type' => 0, 'invis' => 0, 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0]; + + mysql_query('INSERT INTO `battle` (`dungeon`,`dn_id`,`x`,`y`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( + "' . $this->info['id2'] . '", + "' . $this->info['id'] . '", + "' . $bot['x'] . '", + "' . $bot['y'] . '", + "' . $u->info['city'] . '", + "' . time() . '", + "' . $btl['players'] . '", + "' . $btl['timeout'] . '", + "' . $btl['type'] . '", + "' . $btl['invis'] . '", + "' . $btl['noinc'] . '", + "' . $btl['travmChance'] . '", + "' . $btl['typeBattle'] . '", + "' . $btl['addExp'] . '", + "' . $btl['money'] . '")'); + $btl_id = mysql_insert_id(); + + if ($btl_id > 0) { + //Добавляем ботов + $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "0" AND `dn` = "' . $this->info['id'] . '" AND `x` = "' . $bot['x'] . '" AND `y` = "' . $bot['y'] . '" LIMIT 50'); + $j = 0; + $logins_bot = []; + while ($pl = mysql_fetch_array($sp)) { + mysql_query('UPDATE `dungeon_bots` SET `inBattle` = "' . $btl_id . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + $jui = 1; + while ($jui <= $pl['colvo']) { + $k = $u->addNewbot($pl['id_bot'], null, null, $logins_bot); + $logins_bot = $k['logins_bot']; + if ($k) { + $upd = mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); + if ($upd) { + $upd = mysql_query('UPDATE `stats` SET `x`="' . $bot['x'] . '",`y`="' . $bot['y'] . '",`team` = "1" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); + if ($upd) { + $j++; + } + } + } + $jui++; + } + } + unset($logins_bot); + if ($j > 0) { + mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $user['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team` = "2" WHERE `id` = "' . $user['id'] . '" LIMIT 1'); + } + } + } + } + + public function testGo($id) + { + global $u, $c, $code; + $go = 0; + if ($id == 1) { + //вперед + $go = $this->sg[$this->gs][1]; + } elseif ($id == 2) { + //назад + $go = $this->sg[$this->gs][3]; + } elseif ($id == 3) { + //на право + $go = $this->sg[$this->gs][4]; + } elseif ($id == 4) { + //на лево + $go = $this->sg[$this->gs][2]; + } + $thp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['psevdo_x'] . '" AND `y` = "' . $u->info['psevdo_y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); + $ng = [4 => 1, 2 => 2, 1 => 3, 3 => 4]; + if (isset($thp['id']) && $thp['go_' . $ng[$go]] == 0) { + $go = 0; + } + $tgo = [0 => 0, 1 => 0]; + if ($go == 1) { + $tgo[1] += 1; + } elseif ($go == 2) { + $tgo[0] -= 1; + } elseif ($go == 3) { + $tgo[1] -= 1; + } elseif ($go == 4) { + $tgo[0] += 1; + } + + $tbot = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_bots` WHERE `x` = "' . ($u->info['psevdo_x'] + (int)$tgo[0]) . '" AND `y` = "' . ($u->info['psevdo_y'] + (int)$tgo[1]) . '" AND `dn` = "' . $this->info['id'] . '" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1')); + if (isset($tbot['id2']) && $u->info['admin'] == 0) { + $go = 0; + } + + $tmap = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['psevdo_x'] . '" AND `y` = "' . $u->info['psevdo_y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); + //наличие предмета + if ($tmap['tr_items'] != '') { + $ti = explode(',', $tmap['tr_items']); + $i = 0; + $trnit = ''; + while ($i < count($ti)) { + $ti2 = explode('=', $ti[$i]); + if ($ti2[0] > 0 && $ti2[1] > 0) { + $num_rows = mysql_num_rows(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `inShop` = "0" AND `item_id` = "' . ((int)$ti2[0]) . '" LIMIT ' . ((int)$ti2[1]) . '')); + if ($num_rows < (int)$ti2[1]) { + $tgo = $ti2[2]; + if ($tgo != '0000' && $tgo[$ng[$go] - 1] == 1) { + $go = 0; + $trm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . ((int)$ti2[0]) . '" LIMIT 1')); + $trnit .= '"' . $trm['name'] . '", '; + } + } + } + $i++; + } + if ($trnit != '') { + $trnit = rtrim($trnit, ', '); + $this->error = 'У вас нет подходящего предмета. Требуется ' . $trnit; + } + } + + $tmGo = $u->info['timeGo'] - time(); //сколько секунд осталось + if ($tmGo > 0) { + $go = 0; + $this->error = 'Не так быстро...'; + } + + if ($u->aves['now'] >= $u->aves['max']) { + $go = 0; + $this->error = 'Вы не можете перемещаться, рюкзак переполнен ...'; + } + + if ($go > 0) { + if ($go == 1) { + $u->info['psevdo_y'] += 1; + } elseif ($go == 2) { + $u->info['psevdo_x'] -= 1; + } elseif ($go == 3) { + $u->info['psevdo_y'] -= 1; + } elseif ($go == 4) { + $u->info['psevdo_x'] += 1; + } + $u->info['timeGo'] = time() + $tmap['timeGO']; + $u->info['timeGoL'] = time(); + mysql_query('UPDATE `stats` SET `x` = "' . $u->info['psevdo_x'] . '",`y` = "' . $u->info['psevdo_y'] . '",`timeGo` = "' . $u->info['timeGo'] . '",`timeGoL` = "' . $u->info['timeGoL'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } + } + + public function testGone($id) + { + global $u, $c, $code; + $go = 0; + if ($id == 1) { + //вперед + $go = $this->sg[$this->gs][1]; + } elseif ($id == 2) { + //назад + $go = $this->sg[$this->gs][3]; + } elseif ($id == 3) { + //на право + $go = $this->sg[$this->gs][4]; + } elseif ($id == 4) { + //на лево + $go = $this->sg[$this->gs][2]; + } + $thp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['psevdo_x'] . '" AND `y` = "' . $u->info['psevdo_y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); + $ng = [4 => 1, 2 => 2, 1 => 3, 3 => 4]; + if (isset($thp['id']) && $thp['go_' . $ng[$go]] == 0) { + $go = 0; + } + $tgo = [0 => 0, 1 => 0]; + if ($go == 1) { + $tgo[1] += 1; + } elseif ($go == 2) { + $tgo[0] -= 1; + } elseif ($go == 3) { + $tgo[1] -= 1; + } elseif ($go == 4) { + $tgo[0] += 1; + } + + $tbot = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_bots` WHERE `x` = "' . ($u->info['psevdo_x'] + (int)$tgo[0]) . '" AND `y` = "' . ($u->info['psevdo_y'] + (int)$tgo[1]) . '" AND `dn` = "' . $this->info['id'] . '" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1')); + if (isset($tbot['id2']) && $u->info['admin'] == 0) { + $go = 0; + } + + return $go; + } + + public function testSt($id, $s) + { + $r = 0; + //заменяем отображение стен в зависимости от угла обзора + $s = $this->sg[$this->gs][$s]; + if (isset($this->map[1][$id]['id'])) { + $r = $this->map[1][$id]['st'][($s - 1)]; + } + return $r; + } + + public function lookDungeon() + { + global $u, $c, $code, $pd; + /* Генерируем изображение карты */ + /* LEVEL 1 */ + if ($this->testSt(2, 4) > 0 || $this->testSt(3, 2) > 0) { + $pd[28] = 1; + } + if ($this->testSt(1, 4) > 0 || $this->testSt(2, 2) > 0) { + $pd[27] = 1; + } + if ($this->testSt(2, 1) > 0 || $this->testSt(5, 3) > 0) { + $pd[26] = 1; + } + if ($this->testSt(3, 1) > 0 || $this->testSt(6, 3) > 0) { + $pd[25] = 1; + } + if ($this->testSt(1, 1) > 0 || $this->testSt(4, 3) > 0) { + $pd[24] = 1; + } + + /* LEVEL 2 */ + if ($this->testSt(5, 4) > 0 || $this->testSt(6, 2) > 0) { + $pd[23] = 1; + } + if ($this->testSt(4, 4) > 0 || $this->testSt(5, 2) > 0) { + $pd[22] = 1; + } + if ($this->testSt(5, 1) > 0 || $this->testSt(8, 3) > 0) { + $pd[21] = 1; + } + if ($this->testSt(6, 1) > 0 || $this->testSt(7, 3) > 0) { + $pd[20] = 1; + } + if ($this->testSt(4, 1) > 0 || $this->testSt(9, 3) > 0) { + $pd[19] = 1; + } + + /* LEVEL 3 */ + if ($this->testSt(8, 4) > 0 || $this->testSt(7, 2) > 0) { + $pd[18] = 1; + } + if ($this->testSt(9, 4) > 0 || $this->testSt(8, 2) > 0) { + $pd[17] = 1; + } + if ($this->testSt(8, 1) > 0 || $this->testSt(12, 3) > 0) { + $pd[16] = 1; + } + if ($this->testSt(7, 1) > 0 || $this->testSt(13, 3) > 0) { + $pd[15] = 1; + } + if ($this->testSt(9, 1) > 0 || $this->testSt(11, 3) > 0) { + $pd[14] = 1; + } + + /* LEVEL 4 */ + if ($this->testSt(12, 4) > 0 || $this->testSt(13, 2) > 0) { + $pd[13] = 1; + } + if ($this->testSt(12, 2) > 0 || $this->testSt(11, 4) > 0) { + $pd[12] = 1; + } + if ($this->testSt(13, 1) > 0 || $this->testSt(17, 3) > 0) { + $pd[11] = 1; + } //8 + if ($this->testSt(11, 1) > 0 || $this->testSt(16, 3) > 0) { + $pd[10] = 1; + } //7 + if ($this->testSt(12, 1) > 0 || $this->testSt(15, 3) > 0) { + $pd[9] = 1; + } + if ($this->testSt(14, 1) > 0 || $this->testSt(18, 3) > 0) { + $pd[6] = 1; + } //2 + if ($this->testSt(10, 1) > 0 || $this->testSt(19, 3) > 0) { + $pd[5] = 1; + } //1 + if ($this->testSt(16, 4) > 0 || $this->testSt(15, 2) > 0) { + $pd[4] = 1; + } + if ($this->testSt(15, 4) > 0 || $this->testSt(17, 2) > 0) { + $pd[3] = 1; + } + + /* Генерируем предметы на карте */ + + /* Генерируем персонажей и ботов на карте */ + + } + + public function getMatrix($y, $x) + { + global $u; + $this->cord['x']++; + $this->cord[($u->info['psevdo_y'] + $y) . '_' . ($u->info['psevdo_x'] + $x)] = $this->cord['x']; + return $this->map[0][($u->info['psevdo_y'] + $y) . '_' . ($u->info['psevdo_x'] + $x)]; + } + + public function genMatix() + { + $r = []; + if ($this->gs == 1) { + //1; //смотрим прямо + $r[1] = $this->getMatrix(0, -1); + $r[2] = $this->getMatrix(0, 0); + $r[3] = $this->getMatrix(0, 1); + $r[4] = $this->getMatrix(1, -1); + $r[5] = $this->getMatrix(1, 0); + $r[6] = $this->getMatrix(1, 1); + $r[7] = $this->getMatrix(2, 1); + $r[8] = $this->getMatrix(2, 0); + $r[9] = $this->getMatrix(2, -1); + $r[10] = $this->getMatrix(3, -2); + $r[11] = $this->getMatrix(3, -1); + $r[12] = $this->getMatrix(3, 0); + $r[13] = $this->getMatrix(3, 1); + $r[14] = $this->getMatrix(3, 2); + $r[15] = $this->getMatrix(4, 0); + $r[16] = $this->getMatrix(4, -1); + $r[17] = $this->getMatrix(4, 1); + $r[18] = $this->getMatrix(4, 2); + $r[19] = $this->getMatrix(4, -2); + } elseif ($this->gs == 2) { + //2; //смотрим лево + $r[1] = $this->getMatrix(-1, 0); + $r[2] = $this->getMatrix(0, 0); + $r[3] = $this->getMatrix(1, 0); + $r[4] = $this->getMatrix(-1, -1); + $r[5] = $this->getMatrix(0, -1); + $r[6] = $this->getMatrix(1, -1); + $r[7] = $this->getMatrix(1, -2); + $r[8] = $this->getMatrix(0, -2); + $r[9] = $this->getMatrix(-1, -2); + $r[10] = $this->getMatrix(-2, -3); + $r[11] = $this->getMatrix(-1, -3); + $r[12] = $this->getMatrix(0, -3); + $r[13] = $this->getMatrix(1, -3); + $r[14] = $this->getMatrix(2, -3); + $r[15] = $this->getMatrix(0, -4); + $r[16] = $this->getMatrix(-1, -4); + $r[17] = $this->getMatrix(1, -4); + $r[18] = $this->getMatrix(2, -4); + $r[19] = $this->getMatrix(-2, -4); + } elseif ($this->gs == 3) { + //3; //смотрим вниз + $r[1] = $this->getMatrix(0, 1); + $r[2] = $this->getMatrix(0, 0); + $r[3] = $this->getMatrix(0, -1); + $r[4] = $this->getMatrix(-1, 1); + $r[5] = $this->getMatrix(-1, 0); + $r[6] = $this->getMatrix(-1, -1); + $r[7] = $this->getMatrix(-2, -1); + $r[8] = $this->getMatrix(-2, 0); + $r[9] = $this->getMatrix(-2, 1); + $r[10] = $this->getMatrix(-3, 2); + $r[11] = $this->getMatrix(-3, 1); + $r[12] = $this->getMatrix(-3, 0); + $r[13] = $this->getMatrix(-3, -1); + $r[14] = $this->getMatrix(-3, -2); + $r[15] = $this->getMatrix(-4, 0); + $r[16] = $this->getMatrix(-4, 1); + $r[17] = $this->getMatrix(-4, -1); + $r[18] = $this->getMatrix(-4, -2); + $r[19] = $this->getMatrix(-4, 2); + } elseif ($this->gs == 4) { + //4; //смотрим право + $r[1] = $this->getMatrix(1, 0); + $r[2] = $this->getMatrix(0, 0); + $r[3] = $this->getMatrix(-1, 0); + $r[4] = $this->getMatrix(1, 1); + $r[5] = $this->getMatrix(0, 1); + $r[6] = $this->getMatrix(-1, 1); + $r[7] = $this->getMatrix(-1, 2); + $r[8] = $this->getMatrix(0, 2); + $r[9] = $this->getMatrix(1, 2); + $r[10] = $this->getMatrix(2, 3); + $r[11] = $this->getMatrix(1, 3); + $r[12] = $this->getMatrix(0, 3); + $r[13] = $this->getMatrix(-1, 3); + $r[14] = $this->getMatrix(-2, 3); + $r[15] = $this->getMatrix(0, 4); + $r[16] = $this->getMatrix(1, 4); + $r[17] = $this->getMatrix(-1, 4); + $r[18] = $this->getMatrix(-2, 4); + $r[19] = $this->getMatrix(2, 4); + } + return $r; + } +} \ No newline at end of file diff --git a/_incl_data/class/__zv.php b/_incl_data/class/FightRequest.php similarity index 80% rename from _incl_data/class/__zv.php rename to _incl_data/class/FightRequest.php index ca34e581..1f4a243b 100644 --- a/_incl_data/class/__zv.php +++ b/_incl_data/class/FightRequest.php @@ -1,161 +1,69 @@ - 'групповые', 5 => 'хаотичные']; + private $z2n = [4 => 'группового', 5 => 'хаотичного']; + private $u; + private $zv_see; + public $test_s = ''; + public $error = ''; + + /** + * Заявки на бой. + */ + public function __construct() { - $result = []; + $this->u = User::start(); + unset($_POST['kingfight'], $_POST['nobot'], $_POST['mut_clever']); - $maxWeight = floor(self::sum($items, $key) / 2); - - $numItems = count($items); - - $sack = self::buildSack($numItems, $maxWeight); - - for ($n = 1; $n <= $numItems; $n++) { - // loop all items - for ($weight = 1; $weight <= $maxWeight; $weight++) { - $a = $sack[$n - 1][$weight]['value']; - $b = null; - $value = $items[$n - 1][$key]; - if ($value <= $weight) { - $b = $value + $sack[$n - 1][$weight - $value]['value']; - } - $sack[$n][$weight]['value'] = ($b === null ? $a : max($a, $b)); - $sack[$n][$weight]['take'] = ($b !== null && $b > $a); - } + $this->u->info['no_zv_key'] = true; + if (!isset($_GET['del_z_time']) || $_GET['del_z_time'] == null) { + return; } - - $setA = []; - $setB = []; - - for ($n = $numItems, $weight = $maxWeight; $n > 0; $n--) { - $item = $items[$n - 1]; - $value = $item[$key]; - if ($sack[$n][$weight]['take']) { - $setA[] = $item; - } else { - $setB[] = $item; - } - $weight = $weight - $value; + $zay = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `id` = "' . $this->u->info['zv'] . '" AND `creator` = "' . $this->u->info['id'] . '" AND `start` = 0 AND `cancel` = 0 AND `btl_id` = 0 ORDER BY `id` DESC LIMIT 1')); + if (!isset($zay['id']) || $zay['priz'] != 0) { + return; } - - return [$setA, $setB]; - } - - protected static function sum($items, $key) - { - $sum = 0; - foreach ($items as $item) { - $sum += $item[$key]; - } - return $sum; - } - - protected static function buildSack($width, $height) - { - $sack = []; - for ($x = 0; $x <= $width; $x++) { - $sack[$x] = []; - for ($y = 0; $y <= $height; $y++) { - $sack[$x][$y] = [ - 'value' => 0, - 'take' => false - ]; - } - } - return $sack; - } -} - -unset($_POST['kingfight'], $_POST['nobot'], $_POST['mut_clever']); - -session_start(); - -function add_effn($uid, $id) -{ - $g = [0 => 0, 1 => '']; - $eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $id . '" LIMIT 1')); - if (isset($eff['id2'])) { - $n = $eff['mname']; - $d = $eff['mdata']; - $ins = mysql_query('INSERT INTO `eff_users` (`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`) VALUES ("' . $eff['oneType'] . '","' . $eff['id2'] . '","' . $uid . '","' . $n . '","' . time() . '","' . $d . '")'); - if ($ins) { - $g[0] = 1; - $g[1] = '...'; - } - } - return $g; -} - -$u->info['no_zv_key'] = true; -$moder = mysql_fetch_array(mysql_query('SELECT * FROM `moder` WHERE `align` = "' . $u->info['align'] . '" LIMIT 1')); - -if (isset($_GET['del_z_time']) && $_GET['del_z_time'] != null) { - $zay = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `id` = "' . $u->info['zv'] . '" AND `creator` = "' . $u->info['id'] . '" AND `start` = 0 AND `cancel` = 0 AND `btl_id` = 0 ORDER BY `id` DESC LIMIT 1')); - if (isset($zay['id']) && $zay['priz'] == 0) { $colls = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $zay['id'] . '"')); $cs = $colls[0]; - if ($u->info['zv'] == $zay['id'] && ($zay['creator'] == $u->info['id'])) { - if ($cs == 1) { - mysql_query('UPDATE `stats` SET `zv` = 0 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - mysql_query('DELETE FROM `zayvki` WHERE `id` = "' . $zay['id'] . '" LIMIT 1'); - $test_s = 'Заявка удалена...'; - } else { - $test_s = 'Кто-то кроме вас уже участвует в данной заявке.'; - } + if ($this->u->info['zv'] != $zay['id'] || $zay['creator'] != $this->u->info['id']) { + $this->test_s = 'Вы не в этой заявке , либо не вы её создали.'; + } elseif ($cs != 1) { + $this->test_s = 'Кто-то кроме вас уже участвует в данной заявке.'; } else { - $test_s = 'Вы не в этой заявке , либо не вы её создали.'; + mysql_query('UPDATE `stats` SET `zv` = 0 WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `zayvki` WHERE `id` = "' . $zay['id'] . '" LIMIT 1'); + $this->test_s = 'Заявка удалена...'; } - } -} -class zayvki -{ - public $zv_see, $error, $z1n = [4 => 'групповые', 5 => 'хаотичные'], $z2n = [4 => 'группового', 5 => 'хаотичного']; - - public function testTravm() - { - global $u; - $r = 0; - $tr_pl = mysql_fetch_array(mysql_query('SELECT `id`,`v1` FROM `eff_users` WHERE `id_eff` = 4 AND `uid` = "' . $u->info['id'] . '" AND `delete` = "0" ORDER BY `v1` DESC LIMIT 1')); - if (isset($tr_pl['id'])) { - //Проверяем костыли - if ($tr_pl['v1'] == 1) { - //все ок - } elseif ($tr_pl['v1'] == 2) { - $r = 1; - } elseif ($tr_pl['v1'] == 3) { - $r = 2; - } - } - return $r; + $this->test(); //проверяем заявки } - public function test() + private function add_effn($uid, $id) { - global $code, $c, $u; - - if ($u->info['zv'] > 0) { - $test_zv = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `id` = "' . $u->info['zv'] . '" LIMIT 1')); - if (!isset($test_zv['id'])) { - $u->info['zv'] = 0; - } else { - if ($test_zv['cancel'] > 0 || $test_zv['btl_id'] > 0) { - $u->info['zv'] = 0; - } - if ($test_zv['time'] < time() - 3600) { - $u->info['zv'] = 0; - } - } - if ($u->info['zv'] == 0) { - mysql_query('UPDATE `stats` SET `zv` = 0 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + $g = [0 => 0, 1 => '']; + $eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $id . '" LIMIT 1')); + if (isset($eff['id2'])) { + $n = $eff['mname']; + $d = $eff['mdata']; + $ins = mysql_query('INSERT INTO `eff_users` (`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`) VALUES ("' . $eff['oneType'] . '","' . $eff['id2'] . '","' . $uid . '","' . $n . '","' . time() . '","' . $d . '")'); + if ($ins) { + $g[0] = 1; + $g[1] = '...'; } } + return $g; + } + private function testTravm() + { + $tr_pl = mysql_fetch_array(mysql_query('SELECT `id`,`v1` FROM `eff_users` WHERE `id_eff` = 4 AND `uid` = "' . $this->u->info['id'] . '" AND `delete` = "0" ORDER BY `v1` DESC LIMIT 1')); + return isset($tr_pl['id']) ? $tr_pl['v1'] - 1 : 0; + } + + private function testTurnir() + { //Проверяем турниры в этом городе $sp = mysql_query('SELECT * FROM `turnirs` WHERE `status` != "-1"'); while ($pl = mysql_fetch_array($sp)) { @@ -204,9 +112,12 @@ class zayvki } } } + } + private function testGroupAndChaotic() + { //Проверяем хаотичные и групповые бои в этом городе - $sp = mysql_query('SELECT * FROM `zayvki` AS `z` WHERE /*`z`.`city` = "' . $u->info['city'] . '" AND*/ `z`.`btl_id` = "0" AND `z`.`cancel` = "0" AND `z`.`start` = "0" AND (`z`.`razdel` = 4 OR `z`.`razdel` = 5) ORDER BY `z`.`id` DESC LIMIT 22'); + $sp = mysql_query('SELECT * FROM `zayvki` AS `z` WHERE `z`.`btl_id` = "0" AND `z`.`cancel` = "0" AND `z`.`start` = "0" AND (`z`.`razdel` = 4 OR `z`.`razdel` = 5) ORDER BY `z`.`id` DESC LIMIT 22'); while ($pl = mysql_fetch_array($sp)) { $uz = mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $pl['id'] . '"'); $tm1 = []; @@ -226,7 +137,7 @@ class zayvki $toChat .= '' . $t['login'] . ','; $toWhere .= 'OR `id` = "' . $t['id'] . '" '; if ($pl['razdel'] == 5 && $pl['time_start'] - 180 < time() - $pl['time'] && $pl['send'] == 0) { - $toChat2 .= '' . $u->microLogin2($t) . ', '; + $toChat2 .= '' . $this->u->microLogin2($t) . ', '; } $i[$t['team']]++; } @@ -267,45 +178,68 @@ class zayvki } } - public function testCronZv() + /** Проверяем заявки + * @return void + */ + private function test() { - global $code, $c, $u; + if ($this->u->info['zv'] > 0) { + $test_zv = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `id` = "' . $this->u->info['zv'] . '" LIMIT 1')); + if (!isset($test_zv['id'])) { + $this->u->info['zv'] = 0; + } else { + if ($test_zv['cancel'] > 0 || $test_zv['btl_id'] > 0) { + $this->u->info['zv'] = 0; + } + if ($test_zv['time'] < time() - 3600) { + $this->u->info['zv'] = 0; + } + } + if ($this->u->info['zv'] == 0) { + mysql_query('UPDATE `stats` SET `zv` = 0 WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + } + } - $back_test = false; + $this->testTurnir(); + $this->testGroupAndChaotic(); + } + + private function testCronTurnir() + { //Проверяем турниры в этом городе $sp = mysql_query('SELECT * FROM `turnirs` WHERE `status` != "-1"'); while ($pl = mysql_fetch_array($sp)) { - //Начало турнира - if ($pl['status'] == 0 && $pl['time'] < time()) { - if ($pl['users_in'] > 1) { - //Начало турнира - mysql_query('UPDATE `turnirs` SET `time` = "' . (time() + $pl['time3']) . '",`status` = "1" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); - - $usp = mysql_query('SELECT * FROM `users` WHERE `inTurnirnew` = "' . $pl['id'] . '" LIMIT ' . $pl['users_in']); - while ($ur = mysql_fetch_array($usp)) { - mysql_query('INSERT INTO `users` (`login`,`room`,`name`,`sex`,`level`,`inTurnirnew`,`bithday`,`activ`) VALUES ("' . $ur['login'] . '","318","' . $ur['name'] . '","' . $ur['sex'] . '","' . $t['level'] . '","' . $pl['id'] . '","01.01.2001","0")'); - $uri = mysql_insert_id(); - mysql_query('INSERT INTO `users_turnirs` (`uid`,`bot`,`turnir`) VALUES ("' . $ur['id'] . '","' . $uri . '","' . $pl['id'] . '")'); - $zid = 0; - $x1 = 0; - $y1 = 0; - mysql_query('INSERT INTO `stats` (`upLevel`,`dnow`,`id`,`stats`,`exp`,`ability`,`skills`,`x`,`y`) VALUES ("98","' . $zid . '","' . $uri . '","s1=3|s2=3|s3=3|s4=3|s5=0|s6=0|rinv=40|m9=5|m6=10","0","0","0",' . $x1 . ',' . $y1 . ')'); - mysql_query('UPDATE `users` SET `inUser` = "' . $uri . '" WHERE `id` = "' . $ur['id'] . '" LIMIT 1'); - //Добавляем эффекты скорость регена и запрет передвижения - - } - - } else { - //Отмена турнира - mysql_query('UPDATE `turnirs` SET `time` = "' . (time() + $pl['time2']) . '",`users_in` = "0" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); - mysql_query('UPDATE `users` SET `inTurnirnew` = "0" WHERE `inTurnirnew` = "' . $pl['id'] . '"'); + if ($pl['status'] != 0 || $pl['time'] >= time()) { + continue; + } + if ($pl['users_in'] > 1) { + //Начало турнира + mysql_query('UPDATE `turnirs` SET `time` = "' . (time() + $pl['time3']) . '",`status` = "1" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + $usp = mysql_query('SELECT * FROM `users` WHERE `inTurnirnew` = "' . $pl['id'] . '" LIMIT ' . $pl['users_in']); + while ($ur = mysql_fetch_array($usp)) { + mysql_query('INSERT INTO `users` (`login`,`room`,`name`,`sex`,`level`,`inTurnirnew`,`bithday`,`activ`) VALUES ("' . $ur['login'] . '","318","' . $ur['name'] . '","' . $ur['sex'] . '","' . $t['level'] . '","' . $pl['id'] . '","01.01.2001","0")'); + $uri = mysql_insert_id(); + mysql_query('INSERT INTO `users_turnirs` (`uid`,`bot`,`turnir`) VALUES ("' . $ur['id'] . '","' . $uri . '","' . $pl['id'] . '")'); + $zid = 0; + $x1 = 0; + $y1 = 0; + mysql_query('INSERT INTO `stats` (`upLevel`,`dnow`,`id`,`stats`,`exp`,`ability`,`skills`,`x`,`y`) VALUES ("98","' . $zid . '","' . $uri . '","s1=3|s2=3|s3=3|s4=3|s5=0|s6=0|rinv=40|m9=5|m6=10","0","0","0",' . $x1 . ',' . $y1 . ')'); + mysql_query('UPDATE `users` SET `inUser` = "' . $uri . '" WHERE `id` = "' . $ur['id'] . '" LIMIT 1'); + //Добавляем эффекты скорость регена и запрет передвижения } + } else { + //Отмена турнира + mysql_query('UPDATE `turnirs` SET `time` = "' . (time() + $pl['time2']) . '",`users_in` = "0" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `inTurnirnew` = "0" WHERE `inTurnirnew` = "' . $pl['id'] . '"'); } } + } + private function testCronGroupAndChaotic() + { //Проверяем хаотичные и групповые бои в этом городе $sp = mysql_query('SELECT * FROM `zayvki` AS `z` WHERE `z`.`btl_id` = "0" AND `z`.`cancel` = "0" AND `z`.`start` = "0" AND (`z`.`razdel` = 4 OR `z`.`razdel` = 5) ORDER BY `z`.`id` DESC LIMIT 1000'); while ($pl = mysql_fetch_array($sp)) { @@ -327,125 +261,131 @@ class zayvki $toWhere .= 'OR `id` = "' . $t['id'] . '" '; $i[$t['team']]++; } - if ($pl['time_start'] <= time() - $pl['time'] || ($pl['razdel'] == 4 && $i[1] >= $pl['tm1max'] && $i[2] >= $pl['tm2max'])) { - $toChat = rtrim($toChat, ','); - $toWhere = ltrim($toWhere, 'OR '); - if ($pl['razdel'] == 4) { - //группы - if (!isset($i[1]) || !isset($i[2])) { - //группа не набрана - $this->cancelGroup($pl, $toChat); - } else { - //Начинаем поединок - $this->startBattle($pl['id'], $toChat . '|-|' . $toWhere); + if ($pl['time_start'] > time() - $pl['time'] && ($pl['razdel'] != 4 || $i[1] < $pl['tm1max'] || $i[2] < $pl['tm2max'])) { + continue; + } + $toChat = rtrim($toChat, ','); + $toWhere = ltrim($toWhere, 'OR '); + if ($pl['razdel'] == 4) { + //группы + if (!isset($i[1]) || !isset($i[2])) { + //группа не набрана + $this->cancelGroup($pl, $toChat); + } else { + //Начинаем поединок + $this->startBattle($pl['id'], $toChat . '|-|' . $toWhere); + } + } elseif ($pl['razdel'] == 5) { + //хаоты + $i = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $pl['id'] . '" LIMIT 1')); + if ($i[0] < 4 && ($pl['fastfight'] == 0 || $i[0] < 2)) { + $rcf = mysql_fetch_array(mysql_query('SELECT `id`,`btl_cof` FROM `stats` WHERE `zv` = "' . $pl['id'] . '" ORDER BY `btl_cof` DESC LIMIT 1')); + $rcf = $rcf['btl_cof']; + //группа не набрана + //Добавляем недостающих игроков + $lvl_btl_exp = [ + 0 => 0, + 1 => 110, + 2 => 420, + 3 => 1300, + 4 => 2500, + 5 => 5000, + 6 => 12500, + 7 => 30000, + 8 => 300000, + 9 => 3000000, + 10 => 10000000, + 11 => 52000000, + 12 => 63000000, + 13 => 182000000, + 14 => 212000000, + 15 => 352000000, + 16 => 504000000, + 17 => 1187000000, + 18 => 2455000000, + 19 => 4387000000, + 20 => 6355000000, + 21 => 15500000000, + 22 => 755500000000 + ]; + $bot_users = []; + + if ($pl['min_lvl_1'] <= 8 && $pl['max_lvl_1'] <= 8 && $pl['nobot'] == 0) { + $bsp = mysql_query('SELECT + `u`.`id`, + `u`.`login`, + `u`.`level`, + `s`.`stats`, + `u`.`cityreg`, + `u`.`sex`, + `u`.`obraz`, + `s`.`upLevel`, + `s`.`priems`, + `s`.`btl_cof` + FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `u`.`id` = `s`.`id` WHERE `s`.`exp` >= ' . $lvl_btl_exp[$pl['min_lvl_1']] . ' AND `s`.`exp` < ' . $lvl_btl_exp[$pl['max_lvl_1'] + 1] . ' AND `s`.`bot` = "0" ORDER BY `s`.`btl_cof` DESC LIMIT 50'); + while ($bpl = mysql_fetch_array($bsp)) { + $bot_users[] = $bpl; + } } - } elseif ($pl['razdel'] == 5) { - //хаоты - $i = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $pl['id'] . '" LIMIT 1')); - if ($i[0] < 4 && ($pl['fastfight'] == 0 || $i[0] < 2)) { - $rcf = mysql_fetch_array(mysql_query('SELECT `id`,`btl_cof` FROM `stats` WHERE `zv` = "' . $pl['id'] . '" ORDER BY `btl_cof` DESC LIMIT 1')); - $rcf = $rcf['btl_cof']; - //группа не набрана - //Добавляем недостающих игроков - $lvl_btl_exp = [ - 0 => 0, - 1 => 110, - 2 => 420, - 3 => 1300, - 4 => 2500, - 5 => 5000, - 6 => 12500, - 7 => 30000, - 8 => 300000, - 9 => 3000000, - 10 => 10000000, - 11 => 52000000, - 12 => 63000000, - 13 => 182000000, - 14 => 212000000, - 15 => 352000000, - 16 => 504000000, - 17 => 1187000000, - 18 => 2455000000, - 19 => 4387000000, - 20 => 6355000000, - 21 => 15500000000, - 22 => 755500000000 - ]; - $bot_users = []; - if ($pl['min_lvl_1'] <= 8 && $pl['max_lvl_1'] <= 8 && $pl['nobot'] == 0) { - $bsp = mysql_query('SELECT - `u`.`id`, - `u`.`login`, - `u`.`level`, - `s`.`stats`, - `u`.`cityreg`, - `u`.`sex`, - `u`.`obraz`, - `s`.`upLevel`, - `s`.`priems`, - `s`.`btl_cof` - FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `u`.`id` = `s`.`id` WHERE `s`.`exp` >= ' . $lvl_btl_exp[$pl['min_lvl_1']] . ' AND `s`.`exp` < ' . $lvl_btl_exp[$pl['max_lvl_1'] + 1] . ' AND `s`.`bot` = "0" ORDER BY `s`.`btl_cof` DESC LIMIT 50'); - while ($bpl = mysql_fetch_array($bsp)) { - $bot_users[] = $bpl; - } - } + $mincs = 4; + if ($pl['fastfight'] > 0) { + $mincs = 2; + } - $mincs = 4; - if ($pl['fastfight'] > 0) { - $mincs = 2; - } - - if (count($bot_users) == 0) { - if ($i[0] < 4 && ($pl['fastfight'] == 0 || $i[0] < 2)) { - $text = ' Не удалось начать поединок по причине: Группа не набрана. (' . $pl['id'] . ': ' . count($bot_users) . ' ' . $lvl_btl_exp[$pl['min_lvl_1']] . '-' . $lvl_btl_exp[$pl['max_lvl_1'] + 1] . ')'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $zv['city'] . "','','','LEL','" . $text . "','" . time() . "','6','0')"); - $this->cancelGroup($pl, $toChat); - } - } else { - $j = 0; - $k = 0; - $bot_users_new = []; - while ($j < $mincs - $i[0]) { - $botlg = $bot_users[rand(0, count($bot_users) - 1)]; - $j++; - $clone = [ - 'id' => $botlg['id'], - 'login' => 'Боец (клон ' . $j . ')', - 'level' => $botlg['level'], - 'city' => $pl['city'], - 'cityreg' => $pl['city'], - 'name' => 'Боец', - 'sex' => $botlg['sex'], - 'deviz' => '', - 'hobby' => '', - 'time_reg' => time(), - 'obraz' => $botlg['obraz'], - 'stats' => $botlg['stats'], - 'upLevel' => $botlg['upLevel'], - 'priems' => $botlg['priems'], - 'loclon' => true - ]; - $bot = $u->addNewbot(1, null, $clone, null, true); - if ($bot > 0) { - mysql_query('UPDATE `stats` SET `btl_cof` = "' . $botlg['btl_cof'] . '",`zv` = "' . $pl['id'] . '",`hpNow` = "100000",`mpNow` = "100000" WHERE `id` = "' . $bot . '" LIMIT 1'); - mysql_query('UPDATE `users` SET `room` = "303",`battle` = "0" WHERE `id` = "' . $bot . '" LIMIT 1'); - $k++; - } - } - unset($bot_users, $bpl, $bsp, $bot); - if ($k + $i[0] >= 4 || ($pl['fastfight'] == 0 || $k + $i[0] >= 2)) { - $back_test = true; - } + if (empty($bot_users)) { + if ($pl['fastfight'] == 0 || $i[0] < 2) { + $text = ' Не удалось начать поединок по причине: Группа не набрана. (' . $pl['id'] . ': ' . count($bot_users) . ' ' . $lvl_btl_exp[$pl['min_lvl_1']] . '-' . $lvl_btl_exp[$pl['max_lvl_1'] + 1] . ')'; + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $zv['city'] . "','','','LEL','" . $text . "','" . time() . "','6','0')"); + $this->cancelGroup($pl, $toChat); } } else { - //Начинаем поединок - $this->startBattle($pl['id'], $toChat . '|-|' . $toWhere); + $j = 0; + $k = 0; + while ($j < $mincs - $i[0]) { + $botlg = $bot_users[rand(0, count($bot_users) - 1)]; + $j++; + $clone = [ + 'id' => $botlg['id'], + 'login' => 'Боец (клон ' . $j . ')', + 'level' => $botlg['level'], + 'city' => $pl['city'], + 'cityreg' => $pl['city'], + 'name' => 'Боец', + 'sex' => $botlg['sex'], + 'deviz' => '', + 'hobby' => '', + 'time_reg' => time(), + 'obraz' => $botlg['obraz'], + 'stats' => $botlg['stats'], + 'upLevel' => $botlg['upLevel'], + 'priems' => $botlg['priems'], + 'loclon' => true + ]; + $bot = $this->u->addNewbot(1, null, $clone, null, true); + if ($bot > 0) { + mysql_query('UPDATE `stats` SET `btl_cof` = "' . $botlg['btl_cof'] . '",`zv` = "' . $pl['id'] . '",`hpNow` = 100000,`mpNow` = 100000 WHERE `id` = ' . $bot . ' LIMIT 1'); + mysql_query('UPDATE `users` SET `room` = 303,`battle` = 0 WHERE `id` = ' . $bot . ' LIMIT 1'); + $k++; + } + } + unset($bot_users, $bpl, $bsp, $bot); + if ($k + $i[0] >= 4 || ($pl['fastfight'] == 0 || $k + $i[0] >= 2)) { + $back_test = true; + } } + } else { + //Начинаем поединок + $this->startBattle($pl['id'], $toChat . '|-|' . $toWhere); } } } + return isset($back_test)? $back_test : false; + } + public function testCronZv() + { + $this->testCronTurnir(); + $back_test = $this->testCronGroupAndChaotic(); if ($back_test) { $this->testCronZv(); @@ -455,29 +395,28 @@ class zayvki public function userInfo() { - global $u, $c; $r = ''; - if ($u->stats['mpAll'] > 0) { - $pm = $u->stats['mpNow'] / $u->stats['mpAll'] * 100; + if ($this->u->stats['mpAll'] > 0) { + $pm = $this->u->stats['mpNow'] / $this->u->stats['mpAll'] * 100; } - $ph = $u->stats['hpNow'] / $u->stats['hpAll'] * 100; + $ph = $this->u->stats['hpNow'] / $this->u->stats['hpAll'] * 100; $dp = ''; - if ($u->stats['mpAll'] <= 0) { + if ($this->u->stats['mpAll'] <= 0) { $dp = 'margin-top:13px;'; } $r .= ' - +
  ' . $u->microLogin($u->info['id'], 1) . '  
  ' . $this->u->microLogin($this->u->info['id'], 1) . '   -
' . floor($u->stats['hpNow']) . '/' . $u->stats['hpAll'] . '
+
' . floor($this->u->stats['hpNow']) . '/' . $this->u->stats['hpAll'] . '
-
+
'; - if ($u->stats['mpAll'] > 0) { - $r .= '
' . floor($u->stats['mpNow']) . '/' . $u->stats['mpAll'] . '
+ if ($this->u->stats['mpAll'] > 0) { + $r .= '
' . floor($this->u->stats['mpNow']) . '/' . $this->u->stats['mpAll'] . '
-
+
'; } $r .= '
'; @@ -487,55 +426,54 @@ class zayvki public function cancelGroup($zv, $uids) { - global $u; - if ($zv['priz'] > 0) { $sp = mysql_query('SELECT `id` FROM `stats` WHERE `zv` = "' . $zv['id'] . '"'); } $upd = mysql_query('UPDATE `stats` SET `zv` = "0" WHERE `zv` = "' . $zv['id'] . '"'); - if ($upd) { - $upd = mysql_query('UPDATE `zayvki` SET `cancel` = "' . time() . '" WHERE `id` = "' . $zv['id'] . '"'); - if ($upd && $uids != '') { - if ($zv['priz'] > 0) { - while ($pl = mysql_fetch_array($sp)) { - //Выдаем по 1 жетону - if ($zv['type'] == 33) //ТУТ група не набранна удаляем персонажа и выдаем жетон - { - $pld = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `inUser` = "' . $pl['id'] . '"')); - if (isset($pld['id'])) { - mysql_query('UPDATE `users` SET `inUser` = "0" WHERE `id` = "' . $pld['id'] . '" LIMIT 1'); - $u->addItem(4754, $pld['id'], ''); - $uids = $pld['id']; - mysql_query('DELETE FROM `users` WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); - mysql_query('DELETE FROM `stats` WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); - mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $pl['id'] . '" LIMIT 100'); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $pl['id'] . '" LIMIT 100'); - } - } else { - $u->addItem(4754, $pl['id'], ''); - } - } - $text = ' Не удалось начать поединок по причине: Группа не набрана. Вы получаете Призовой Жетон (х1)'; - } else { - $text = ' Не удалось начать поединок по причине: Группа не набрана.'; - } - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $zv['city'] . "','','','" . $uids . "','" . $text . "','" . time() . "','6','0')"); - } + if (!$upd) { + return; } + $upd = mysql_query('UPDATE `zayvki` SET `cancel` = "' . time() . '" WHERE `id` = "' . $zv['id'] . '"'); + if (!$upd || $uids == '') { + return; + } + if ($zv['priz'] > 0) { + while ($pl = mysql_fetch_array($sp)) { + //Выдаем по 1 жетону + if ($zv['type'] == 33) //ТУТ група не набранна удаляем персонажа и выдаем жетон + { + $pld = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `inUser` = "' . $pl['id'] . '"')); + if (isset($pld['id'])) { + mysql_query('UPDATE `users` SET `inUser` = "0" WHERE `id` = "' . $pld['id'] . '" LIMIT 1'); + $this->u->addItem(4754, $pld['id'], ''); + $uids = $pld['id']; + mysql_query('DELETE FROM `users` WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `stats` WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $pl['id'] . '" LIMIT 100'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $pl['id'] . '" LIMIT 100'); + } + } else { + $this->u->addItem(4754, $pl['id'], ''); + } + } + $text = ' Не удалось начать поединок по причине: Группа не набрана. Вы получаете Призовой Жетон (х1)'; + } else { + $text = ' Не удалось начать поединок по причине: Группа не набрана.'; + } + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $zv['city'] . "','','','" . $uids . "','" . $text . "','" . time() . "','6','0')"); } public function add() { - global $u, $c, $code; - if (isset($_GET['r']) && $u->info['inTurnirnew'] == 0) { + if (isset($_GET['r']) && $this->u->info['inTurnirnew'] == 0) { $r = round(intval($_GET['r'])); if (in_array($r, [1, 4, 5, 8, 10])) { $az = 1; - if ($r == 1 && $u->info['level'] > 0) { + if ($r == 1 && $this->u->info['level'] > 0) { $az = 0; $this->error = 'Вы уже выросли из ползунков ;)'; } - if (($r == 4 || $r == 5) && $u->info['level'] < 2) { + if (($r == 4 || $r == 5) && $this->u->info['level'] < 2) { $az = 0; $this->error = 'В ' . $this->z1n[$r] . ' бои только со второго уровня.'; } @@ -546,18 +484,18 @@ class zayvki } elseif ($this->testTravm() == 2) { $this->error = 'Вы травмированы. С такими увечьями невозможно сражаться.'; $az = 0; - } elseif ($u->info['hpNow'] < $u->stats['hpAll'] / 100 * 30 && ($r >= 1 || $r <= 3)) { + } elseif ($this->u->info['hpNow'] < $this->u->stats['hpAll'] / 100 * 30 && ($r >= 1 || $r <= 3)) { $this->error = 'Вы еще слишком ослаблены чтобы начать новый бой'; $az = 0; } - if ($u->info['zv'] > 0) { + if ($this->u->info['zv'] > 0) { $az = 0; $this->error = 'Вы уже находите в заявке.'; } if ($az == 1) { $nz = []; - $nz['city'] = $u->info['city']; - $nz['creator'] = $u->info['id']; + $nz['city'] = $this->u->info['city']; + $nz['creator'] = $this->u->info['id']; $nz['type'] = 0; if ($_POST['k'] == 1) { $nz['type'] = 1; @@ -589,7 +527,7 @@ class zayvki $nz['otmorozok'] = 0; $gad = 1; - if ($r == 5 && $u->info['level'] > 1) { + if ($r == 5 && $this->u->info['level'] > 1) { //хаотичный бой if ($_POST['startime2']) { $nz['time_start'] = (int)$_POST['startime2']; @@ -651,13 +589,13 @@ class zayvki $nz['min_lvl_1'] = 2; $nz['max_lvl_1'] = 21; } elseif ($lvl == 3) { - $nz['min_lvl_1'] = $u->info['level']; - $nz['max_lvl_1'] = $u->info['level']; + $nz['min_lvl_1'] = $this->u->info['level']; + $nz['max_lvl_1'] = $this->u->info['level']; $nz['min_lvl_2'] = $nz['min_lvl_1']; $nz['max_lvl_2'] = $nz['min_lvl_2']; } elseif ($lvl == 6) { - $nz['min_lvl_1'] = $u->info['level'] - 1; - $nz['max_lvl_2'] = $u->info['level'] + 1; + $nz['min_lvl_1'] = $this->u->info['level'] - 1; + $nz['max_lvl_2'] = $this->u->info['level'] + 1; } else { $nz['min_lvl_1'] = 2; $nz['max_lvl_1'] = 2; @@ -673,9 +611,9 @@ class zayvki $nz['travmaChance'] = 1; } $nz['timeout'] = $nz['timeout'] * 60; - $nz['tm1'] = $u->stats['reting']; + $nz['tm1'] = $this->u->stats['reting']; - if (!$u->info['no_zv_key'] && ($_POST['code21'] == 0 || $_POST['code21'] != $_SESSION['code2'] || $_SESSION['code2'] == 0 || !isset($_SESSION['code2']))) { + if (!$this->u->info['no_zv_key'] && ($_POST['code21'] == 0 || $_POST['code21'] != $_SESSION['code2'] || $_SESSION['code2'] == 0 || !isset($_SESSION['code2']))) { $this->error = 'Неправильный код подтверждения'; $gad = 0; } @@ -683,7 +621,7 @@ class zayvki $gad = 0; $this->error = 'Что-то не так...
'; } - } elseif ($r == 4 && $u->info['level'] > 1) { + } elseif ($r == 4 && $this->u->info['level'] > 1) { //групповой бой //здесь заносим и проверяем данные на гурпповой бой if ($_POST['startime']) { @@ -731,22 +669,22 @@ class zayvki $nz['max_lvl_1'] = 21; } elseif ($lvl == 1) { $nz['min_lvl_1'] = 2; - $nz['max_lvl_1'] = $u->info['level']; + $nz['max_lvl_1'] = $this->u->info['level']; } elseif ($lvl == 2) { $nz['min_lvl_1'] = 2; - $nz['max_lvl_1'] = $u->info['level'] - 1; + $nz['max_lvl_1'] = $this->u->info['level'] - 1; } elseif ($lvl == 3) { - $nz['min_lvl_1'] = $u->info['level']; - $nz['max_lvl_1'] = $u->info['level']; + $nz['min_lvl_1'] = $this->u->info['level']; + $nz['max_lvl_1'] = $this->u->info['level']; } elseif ($lvl == 4) { - $nz['min_lvl_1'] = $u->info['level']; - $nz['max_lvl_1'] = $u->info['level'] + 1; + $nz['min_lvl_1'] = $this->u->info['level']; + $nz['max_lvl_1'] = $this->u->info['level'] + 1; } elseif ($lvl == 5) { - $nz['min_lvl_1'] = $u->info['level'] - 1; - $nz['max_lvl_1'] = $u->info['level']; + $nz['min_lvl_1'] = $this->u->info['level'] - 1; + $nz['max_lvl_1'] = $this->u->info['level']; } elseif ($lvl == 6) { - $nz['min_lvl_1'] = $u->info['level'] - 1; - $nz['max_lvl_1'] = $u->info['level'] + 1; + $nz['min_lvl_1'] = $this->u->info['level'] - 1; + $nz['max_lvl_1'] = $this->u->info['level'] + 1; $nz['min_lvl_1'] = 99; } else { $this->error = 'Что-то не так...
'; @@ -760,22 +698,22 @@ class zayvki $nz['max_lvl_2'] = 21; } elseif ($lvl == 1) { $nz['min_lvl_2'] = 2; - $nz['max_lvl_2'] = $u->info['level']; + $nz['max_lvl_2'] = $this->u->info['level']; } elseif ($lvl == 2) { $nz['min_lvl_2'] = 2; - $nz['max_lvl_2'] = $u->info['level'] - 1; + $nz['max_lvl_2'] = $this->u->info['level'] - 1; } elseif ($lvl == 3) { - $nz['min_lvl_2'] = $u->info['level']; - $nz['max_lvl_2'] = $u->info['level']; + $nz['min_lvl_2'] = $this->u->info['level']; + $nz['max_lvl_2'] = $this->u->info['level']; } elseif ($lvl == 4) { - $nz['min_lvl_2'] = $u->info['level']; - $nz['max_lvl_2'] = $u->info['level'] + 1; + $nz['min_lvl_2'] = $this->u->info['level']; + $nz['max_lvl_2'] = $this->u->info['level'] + 1; } elseif ($lvl == 5) { - $nz['min_lvl_2'] = $u->info['level'] - 1; - $nz['max_lvl_2'] = $u->info['level']; + $nz['min_lvl_2'] = $this->u->info['level'] - 1; + $nz['max_lvl_2'] = $this->u->info['level']; } elseif ($lvl == 6) { - $nz['min_lvl_2'] = $u->info['level'] - 1; - $nz['max_lvl_2'] = $u->info['level'] + 1; + $nz['min_lvl_2'] = $this->u->info['level'] - 1; + $nz['max_lvl_2'] = $this->u->info['level'] + 1; $nz['min_lvl_2'] = 99; } else { $this->error = 'Что-то не так...
'; @@ -812,12 +750,12 @@ class zayvki } $bt2 = (int)$_POST['bots2']; - if ($bt2 != 0 && $r == 4 && $u->info['level'] > 1) { + if ($bt2 != 0 && $r == 4 && $this->u->info['level'] > 1) { $bt2 = 1; - $nz['min_lvl_2'] = $u->info['level']; - $nz['max_lvl_2'] = $u->info['level']; - $nz['min_lvl_1'] = $u->info['level']; - $nz['max_lvl_1'] = $u->info['level']; + $nz['min_lvl_2'] = $this->u->info['level']; + $nz['max_lvl_2'] = $this->u->info['level']; + $nz['min_lvl_1'] = $this->u->info['level']; + $nz['max_lvl_1'] = $this->u->info['level']; } else { $bt2 = 0; } @@ -844,11 +782,11 @@ class zayvki $nz['max_lvl_1'] = 21; $nz['max_lvl_2'] = 21; // - if (floor($u->info['align']) == 3) { + if (floor($this->u->info['align']) == 3) { $nz['align1'] = 3; $nz['align2'] = 1; $nz['align3'] = 7; - } elseif (floor($u->info['align']) == 7) { + } elseif (floor($this->u->info['align']) == 7) { $nz['align1'] = 7; $nz['align2'] = 1; $nz['align3'] = 3; @@ -921,8 +859,8 @@ class zayvki "' . $nz['withUser'] . '","' . $nz['tm1'] . '","' . $nz['tm2'] . '")'); $zid = mysql_insert_id(); if ($ins) { - mysql_query('UPDATE `stats` SET `zv`="' . $zid . '",`team`="1" WHERE `id`="' . $u->info['id'] . '" LIMIT 1'); - $u->info['zv'] = $zid; + mysql_query('UPDATE `stats` SET `zv`="' . $zid . '",`team`="1" WHERE `id`="' . $this->u->info['id'] . '" LIMIT 1'); + $this->u->info['zv'] = $zid; $this->error = 'Заявка на бой подана'; } else { $this->error = 'Вы не смогли подать заявку...' . $ins; @@ -936,19 +874,19 @@ class zayvki //тренеровочный бой public function addBot() { - global $u, $c, $code; + global $c; - if (($u->info['level'] <= $c['bot_level'] || $u->info['admin'] > 0) && $u->info['exp'] != 12499) { - $bot = $u->addNewbot($id['id'], null, $u->info['id'], null, true); + if (($this->u->info['level'] <= $c['bot_level'] || $this->u->info['admin'] > 0) && $this->u->info['exp'] != 12499) { + $bot = $this->u->addNewbot($id['id'], null, $this->u->info['id'], null, true); } else { $bot = false; } if (!$bot) { $this->error = 'Бои с монстрами, нежитью, клонами и прочими вурдалаками проводятся только для персонажей младше 8 уровня...
Со стороны посматривает Общий Враг, ему явно что-то не понравилось...
'; - } elseif ($u->info['hpNow'] < $u->stats['hpAll'] / 100 * 30 && ($r == 1)) { + } elseif ($this->u->info['hpNow'] < $this->u->stats['hpAll'] / 100 * 30 && ($r == 1)) { $this->error = 'Вы еще слишком ослаблены чтобы начать новый бой'; $az = 0; - } elseif ($u->info['align'] == 2) { + } elseif ($this->u->info['align'] == 2) { $this->error = 'Хаосники не могут сражаться здесь'; $az = 0; } elseif (!$bot) { @@ -968,7 +906,7 @@ class zayvki "' . $btl['nobot'] . '", "' . $btl['fastfight'] . '", "1", - "' . $u->info['city'] . '", + "' . $this->u->info['city'] . '", "' . time() . '", "' . $btl['players'] . '", "' . $btl['timeout'] . '", @@ -983,14 +921,14 @@ class zayvki if ($ins) { $btl_id = mysql_insert_id(); //обновляем данные о поединке - $u->info['enNow'] -= $trEn; - $upd2 = mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $u->info['id'] . '" OR `id` = "' . $bot . '" LIMIT 2'); - mysql_query('UPDATE `stats` SET `team`="1",`enNow` = "' . $u->info['enNow'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - mysql_query('UPDATE `stats` SET `hpNow` = "' . $u->stats['hpAll'] . '",`team`="2" WHERE `id` = "' . $bot . '" LIMIT 1'); + $this->u->info['enNow'] -= $trEn; + $upd2 = mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $this->u->info['id'] . '" OR `id` = "' . $bot . '" LIMIT 2'); + mysql_query('UPDATE `stats` SET `team`="1",`enNow` = "' . $this->u->info['enNow'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->u->stats['hpAll'] . '",`team`="2" WHERE `id` = "' . $bot . '" LIMIT 1'); //обновляем заявку, что бой начался - $u->info['battle'] = $btl_id; + $this->u->info['battle'] = $btl_id; //Отправляем сообщение в чат всем бойцам - mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $u->info['city'] . "','" . $u->info['room'] . "','" . $u->info['login'] . "','" . time() . "','11','0','117')"); + mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $this->u->info['city'] . "','" . $this->u->info['room'] . "','" . $this->u->info['login'] . "','" . time() . "','11','0','117')"); die(''); } else { $this->error = 'Cannot start battle (no prototype "ABD0Clone")'; @@ -1001,19 +939,17 @@ class zayvki //тренеровочный бой public function addBotClone($uid) { - global $u, $c, $code; - - if ($u->info['online'] > 0) { - $bot = $u->addNewbot($id['id'], null, $uid, null, false); + if ($this->u->info['online'] > 0) { + $bot = $this->u->addNewbot($id['id'], null, $uid, null, false); } else { $bot = false; } if (!$bot) { $this->error = 'Не получилось начать поединок'; - } elseif ($u->info['hpNow'] < $u->stats['hpAll'] / 100 * 30 && ($r >= 1 || $r <= 3)) { + } elseif ($this->u->info['hpNow'] < $this->u->stats['hpAll'] / 100 * 30 && ($r >= 1 || $r <= 3)) { $this->error = 'Вы еще слишком ослаблены чтобы начать новый бой'; $az = 0; - } elseif ($u->info['align'] == 2) { + } elseif ($this->u->info['align'] == 2) { $this->error = 'Хаосники не могут сражаться здесь'; $az = 0; } elseif (!$bot) { @@ -1034,7 +970,7 @@ class zayvki "' . $btl['nobot'] . '", "' . $btl['fastfight'] . '", "1", - "' . $u->info['city'] . '", + "' . $this->u->info['city'] . '", "' . time() . '", "' . $btl['players'] . '", "' . $btl['timeout'] . '", @@ -1048,20 +984,20 @@ class zayvki if ($ins) { $btl_id = mysql_insert_id(); //обновляем данные о поединке - $u->info['enNow'] -= $trEn; - $upd2 = mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $u->info['id'] . '" OR `id` = "' . $bot . '" LIMIT 2'); - mysql_query('UPDATE `stats` SET `team`="1",`enNow` = "' . $u->info['enNow'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + $this->u->info['enNow'] -= $trEn; + $upd2 = mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $this->u->info['id'] . '" OR `id` = "' . $bot . '" LIMIT 2'); + mysql_query('UPDATE `stats` SET `team`="1",`enNow` = "' . $this->u->info['enNow'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot . '" LIMIT 1'); //Если бой кулачный, то снимаем вещи if ($btl['type'] == 1) { - mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $u->info['id'] . '" AND `inOdet`!=0'); + mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $this->u->info['id'] . '" AND `inOdet`!=0'); mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $bot . '" AND `inOdet`!=0'); } //обновляем заявку, что бой начался - $u->info['battle'] = $btl_id; + $this->u->info['battle'] = $btl_id; //Отправляем сообщение в чат всем бойцам - mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $u->info['city'] . "','" . $u->info['room'] . "','" . $u->info['login'] . "','" . time() . "','11','0','117')"); + mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $this->u->info['city'] . "','" . $this->u->info['room'] . "','" . $this->u->info['login'] . "','" . time() . "','11','0','117')"); die(''); } else { $this->error = 'Cannot start battle (no prototype "ABD0Clone")'; @@ -1072,7 +1008,6 @@ class zayvki //Изломы public function startIzlom($id2, $lvl) { - global $u, $c, $code; $lvl = (int)$lvl; if ($lvl == 8) { @@ -1086,9 +1021,9 @@ class zayvki } $id2 = rand(0, (count($bots) - 1)); - $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); + $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $this->u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); $logins_bot = []; - $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null); + $bot = $this->u->addNewbot($id['id'], null, null, $logins_bot, null); if (isset($id['id']) && $bot) { $logins_bot = $bot['logins_bot']; @@ -1106,7 +1041,7 @@ class zayvki "' . $btl['kingfight'] . '", "' . $btl['nobot'] . '", "' . $btl['fastfight'] . '", - "' . $u->info['city'] . '", + "' . $this->u->info['city'] . '", "' . time() . '", "' . $btl['players'] . '", "' . $btl['timeout'] . '", @@ -1120,25 +1055,25 @@ class zayvki if ($ins) { $btl_id = mysql_insert_id(); //обновляем данные о поединке - $upd2 = mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $u->info['id'] . '" OR `id` = "' . $bot['id'] . '" LIMIT 2'); - mysql_query('UPDATE `stats` SET `team`="1" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + $upd2 = mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $this->u->info['id'] . '" OR `id` = "' . $bot['id'] . '" LIMIT 2'); + mysql_query('UPDATE `stats` SET `team`="1" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); //обновляем заявку, что бой начался - $u->info['battle'] = $btl_id; + $this->u->info['battle'] = $btl_id; //Добавляем еще 2 бота $id2 = rand(0, (count($bots) - 1)); - $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); - $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null); + $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $this->u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); + $bot = $this->u->addNewbot($id['id'], null, null, $logins_bot, null); if (isset($id['id']) && $bot) { $logins_bot = $bot['logins_bot']; mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); } $id2 = rand(0, (count($bots) - 1)); - $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); - $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null); + $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $this->u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); + $bot = $this->u->addNewbot($id['id'], null, null, $logins_bot, null); if (isset($id['id']) && $bot) { $logins_bot = $bot['logins_bot']; mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); @@ -1146,7 +1081,7 @@ class zayvki } //Отправляем сообщение в чат всем бойцам - mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $u->info['city'] . "','" . $u->info['room'] . "','" . $u->info['login'] . "','" . time() . "','11','0','117')"); + mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $this->u->info['city'] . "','" . $this->u->info['room'] . "','" . $this->u->info['login'] . "','" . time() . "','11','0','117')"); die(''); } else { $this->error = 'Cannot start battle (no prototype "ABD0' . $id['id'] . '")'; @@ -1158,7 +1093,6 @@ class zayvki public function startBattle($id, $vars = null) { - global $c, $code, $u; $z = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `id`="' . $id . '" AND `start` = "0" AND `cancel` = "0" AND (`time` > "' . (time() - 60 * 60 * 2) . '" OR `razdel` > 3) LIMIT 1')); if ($z['type'] == 33) { sleep(5); @@ -1364,20 +1298,20 @@ class zayvki //обновляем заявку, что бой начался $upd = mysql_query('UPDATE `zayvki` SET `start` = "' . time() . '",`btl_id` = "' . $btl_id . '" WHERE `id` = "' . $z['id'] . '" LIMIT 1'); - $u->info['battle'] = $btl_id; + $this->u->info['battle'] = $btl_id; //Отправляем сообщение в чат всем бойцам - mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $u->info['city'] . "','-1','" . $vars[0] . "','" . time() . "','11','0','117')"); + mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $this->u->info['city'] . "','-1','" . $vars[0] . "','" . time() . "','11','0','117')"); } } elseif ($z['razdel'] >= 1 && $z['razdel'] <= 3) { //начало PvP - if ($u->info['team'] == 1 && $u->info['zv'] == $z['id']) { + if ($this->u->info['team'] == 1 && $this->u->info['zv'] == $z['id']) { $zu = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `zv`="' . $z['id'] . '" AND `team` = "2" LIMIT 1')); if (isset($zu['id'])) { $uz = mysql_fetch_array(mysql_query('SELECT `login`,`money` FROM `users` WHERE `id`="' . $zu['id'] . '" LIMIT 1')); if ($zu['clone'] > 0) { //обновляем клона - $bot = $u->addNewbot(1, null, $zu['clone'], null, true); + $bot = $this->u->addNewbot(1, null, $zu['clone'], null, true); if ($bot > 0) { mysql_query('DELETE FROM `users` WHERE `id` = "' . $zu['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `stats` WHERE `id` = "' . $zu['id'] . '" LIMIT 1'); @@ -1393,7 +1327,7 @@ class zayvki //создаем поединок $btl_id = 0; - if ($uz['money'] < $z['money'] || $u->info['money'] < $z['money']) { + if ($uz['money'] < $z['money'] || $this->u->info['money'] < $z['money']) { $z['money'] = 0; } $btl = ['otmorozok' => $z['otmorozok'], 'players' => '', 'timeout' => $z['timeout'], 'type' => $z['type'], 'travmChance' => $z['travmChance'], 'invis' => 0, 'noinc' => 0, 'typeBattle' => 0, 'addExp' => 0, 'money' => round($z['money'], 2), 'money3' => 0]; @@ -1407,7 +1341,7 @@ class zayvki "' . mysql_real_escape_string($btl['kingfight']) . '", "' . mysql_real_escape_string($btl['nobot']) . '", "' . mysql_real_escape_string($btl['fastfight']) . '", - "' . $u->info['city'] . '", + "' . $this->u->info['city'] . '", "' . time() . '", "' . mysql_real_escape_string($btl['players']) . '", "' . mysql_real_escape_string($btl['timeout']) . '", @@ -1422,21 +1356,21 @@ class zayvki if ($ins) { //обновляем данные о поединке $upd1 = mysql_query('UPDATE `stats` SET `zv`="0" WHERE `zv` = "' . $z['id'] . '" LIMIT 2'); - $upd2 = mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $u->info['id'] . '" OR `id` = "' . $zu['id'] . '" LIMIT 2'); + $upd2 = mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $this->u->info['id'] . '" OR `id` = "' . $zu['id'] . '" LIMIT 2'); //Если бой кулачный, то снимаем вещи if ($z['type'] == 1) { - mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $u->info['id'] . '" AND `inOdet`!=0'); + mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $this->u->info['id'] . '" AND `inOdet`!=0'); mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $zu['id'] . '" AND `inOdet`!=0'); } //обновляем заявку, что бой начался $upd = mysql_query('UPDATE `zayvki` SET `start` = "' . time() . '",`btl_id` = "' . $btl_id . '" WHERE `id` = "' . $z['id'] . '" LIMIT 1'); - $u->info['battle'] = $btl_id; + $this->u->info['battle'] = $btl_id; //Отправляем сообщение в чат всем бойцам - mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $u->info['city'] . "','" . $u->info['room'] . "','" . $uz['login'] . "','" . time() . "','11','0','117')"); + mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $this->u->info['city'] . "','" . $this->u->info['room'] . "','" . $uz['login'] . "','" . time() . "','11','0','117')"); die(''); } else { $this->error = 'Ошибка создания битвы.'; @@ -1455,11 +1389,11 @@ class zayvki public function cancelzv() { - global $u, $c, $code, $zi; + global $zi; if (isset($_GET['cancelzv'], $zi['id']) && $zi['razdel'] >= 1 && $zi['razdel'] <= 3) { $enemy = mysql_fetch_array(mysql_query('SELECT `u`.*,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zi['id'] . '" AND `st`.`team` = "2" LIMIT 1')); if (isset($enemy['id'])) { - if ($u->info['team'] == 1) { + if ($this->u->info['team'] == 1) { //выкидываем из заявки + пишем сообщение в чат $upd = mysql_query('UPDATE `stats` SET `zv` = "0",`team`="0" WHERE `id` = "' . $enemy['id'] . '" LIMIT 1'); if ($upd) { @@ -1467,13 +1401,13 @@ class zayvki $this->error = 'Вы отказали ' . $enemy['login'] . ' в поединке'; //отправляем сообщение в чат $sa = ''; - if ($u->info['sex'] == 2) { + if ($this->u->info['sex'] == 2) { $sa = 'а'; } - $text = ' [login:' . $u->info['login'] . '] отказал' . $sa . ' вам в поединке.'; + $text = ' [login:' . $this->u->info['login'] . '] отказал' . $sa . ' вам в поединке.'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $enemy['city'] . "','','','" . $enemy['login'] . "','" . $text . "','" . time() . "','6','0')"); } - } elseif ($u->info['id'] == $enemy['id'] && $zi['start'] == 0) { + } elseif ($this->u->info['id'] == $enemy['id'] && $zi['start'] == 0) { //выкидываем из заявки + пишем сообщение в чат $upd = mysql_query('UPDATE `stats` SET `zv` = "0",`team`="0" WHERE `id` = "' . $enemy['id'] . '" LIMIT 1'); if ($upd) { @@ -1482,14 +1416,14 @@ class zayvki $this->error = 'Вы отозвали свой запрос на бой.'; //отправляем сообщение в чат $sa = ''; - if ($u->info['sex'] == 2) { + if ($this->u->info['sex'] == 2) { $sa = 'а'; } - $text = ' [login:' . $u->info['login'] . '] отозвал' . $sa . ' свой запрос на бой.'; + $text = ' [login:' . $this->u->info['login'] . '] отозвал' . $sa . ' свой запрос на бой.'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $uz['city'] . "','','','" . $uz['login'] . "','" . $text . "','" . time() . "','6','0')"); } - $u->info['zv'] = 0; - $u->info['team'] = 0; + $this->u->info['zv'] = 0; + $this->u->info['team'] = 0; } } if ($enemy['bot'] == 1) { @@ -1500,14 +1434,14 @@ class zayvki mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $enemy['id'] . '" LIMIT 100'); } } else { - if ($u->info['team'] == 1) { + if ($this->u->info['team'] == 1) { //удаляем заявку на бой $upd = mysql_query('UPDATE `zayvki` SET `cancel` = "' . time() . '" WHERE `id` = "' . $zi['id'] . '" LIMIT 1'); if ($upd) { - mysql_query('UPDATE `stats` SET `zv` = "0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `zv` = "0" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); $this->error = 'Вы отозвали свою заявку'; $zi = false; - $u->info['zv'] = 0; + $this->u->info['zv'] = 0; } } } @@ -1516,27 +1450,27 @@ class zayvki public function see() { - global $u, $c, $code, $zi, $cron; + global $c, $code, $zi; if (isset($_GET['r']) && ((!isset($_GET['new_group']) && !isset($_POST['groupClick'])) || isset($zi['id']))) { $r = round(intval($_GET['r'])); if (in_array($r, [1, 4, 5, 8, 10])) { $this->zv_see = 1; - if ($u->room['FR'] == 0 && $u->room['zvsee'] == 0) { + if ($this->u->room['FR'] == 0 && $this->u->room['zvsee'] == 0) { echo '


Подать заявку можно только в комнатах бойцовского клуба
'; $this->zv_see = 0; - } elseif ($r == 1 && $u->info['level'] > 0) { + } elseif ($r == 1 && $this->u->info['level'] > 0) { echo '


Вы уже выросли из ползунков ;)
'; $this->zv_see = 0; - } elseif ($r > 1 && $r < 6 && $u->info['level'] < 1) { + } elseif ($r > 1 && $r < 6 && $this->u->info['level'] < 1) { echo '


Вы еще не выросли из ползунков ;)
'; $this->zv_see = 0; - } elseif ($r > 3 && $r < 6 && $u->info['level'] < 2) { + } elseif ($r > 3 && $r < 6 && $this->u->info['level'] < 2) { echo '


В ' . $this->z1n[$r] . ' бои только со второго уровня.
'; $this->zv_see = 0; - } elseif ($r == 1 && $u->info['level'] > 0) { + } elseif ($r == 1 && $this->u->info['level'] > 0) { echo '


Вы уже выросли из ползунков ;)
'; $this->zv_see = 0; - } elseif ($r == 8 && $u->info['level'] < 1) { + } elseif ($r == 8 && $this->u->info['level'] < 1) { echo '


Принимать участие в турнире только с первого уровня.
'; $this->zv_see = 0; } elseif ($r == 10) { @@ -1549,7 +1483,7 @@ class zayvki if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_POST['key'] == $_SESSION['bypass']) { unset($_SESSION['bypass']); if (array_key_exists('tournament_start', $_POST)) { - (new \Insallah\Tournament())->join($u->info['id']); + (new \Insallah\Tournament())->join($this->u->info['id']); } } ## @@ -1573,10 +1507,10 @@ class zayvki Внимание!
  • В случае создания либо присоединения к Турниру, покинуть его - невозможно!
  • - info['id'])): ?> -
  • Стоимость предметов, одетых на вас не должна превышать info['level']) ?> еврокредитов.
  • + u->info['id'])): ?> +
  • Стоимость предметов, одетых на вас не должна превышать u->info['level']) ?> еврокредитов.
  • - info['exp'] < \Insallah\Tournament::MIN_EXP): ?> + u->info['exp'] < \Insallah\Tournament::MIN_EXP): ?>
  • У вас должно быть не менее опыта.
  • Турнир начнётся, когда в заявке наберётся человек.
  • @@ -1589,7 +1523,7 @@ class zayvki - info['id']) || !\Insallah\TournamentModel::isStarted($u->info['level'])): ?> + u->info['id']) || !\Insallah\TournamentModel::isStarted($this->u->info['level'])): ?>
    @@ -1606,14 +1540,14 @@ class zayvki info['zv'] > 0 && $u->info['battle'] == 0 && $r != 8) { + } elseif ($this->u->info['zv'] > 0 && $this->u->info['battle'] == 0 && $r != 8) { if ($zi['razdel'] == 1 || $zi['razdel'] == 2 || $zi['razdel'] == 3) { echo '
    '; - if ($u->info['team'] == 1) { + if ($this->u->info['team'] == 1) { $uz = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zi['id'] . '" AND `st`.`team`="2" LIMIT 1')); if (!isset($uz['id'])) { //если никто не принял @@ -1624,12 +1558,12 @@ class zayvki if ($uz['sex'] == 2) { $sa = 'а'; } - echo 'Вашу заявку принял' . $sa . ' ' . $ca . ' ' . $u->microLogin($uz['id'], 1) . ' Хотите подтвердить бой? '; + echo 'Вашу заявку принял' . $sa . ' ' . $ca . ' ' . $this->u->microLogin($uz['id'], 1) . ' Хотите подтвердить бой? '; } } else { $uz = mysql_fetch_array(mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zi['id'] . '" AND `st`.`team`="1" LIMIT 1')); if (isset($uz['id'])) { - echo 'Ожидаем подтверждения боя от ' . $u->microLogin($uz['id'], 1) . ' '; + echo 'Ожидаем подтверждения боя от ' . $this->u->microLogin($uz['id'], 1) . ' '; } } echo '
    '; @@ -1648,13 +1582,13 @@ class zayvki 2 => 'Захват ключа!' ]; - if (isset($_POST['trn1']) && $u->room['zvsee'] == 0) { - if ($u->info['inTurnirnew'] == 0) { + if (isset($_POST['trn1']) && $this->u->room['zvsee'] == 0) { + if ($this->u->info['inTurnirnew'] == 0) { $totr = mysql_fetch_array(mysql_query('SELECT * FROM `turnirs` WHERE `id` = "' . mysql_real_escape_string($_POST['trn1']) . '" AND `status` = "0" LIMIT 1')); if (isset($totr['id'])) { - mysql_query('UPDATE `users` SET `inTurnirnew` = "' . $totr['id'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `inTurnirnew` = "' . $totr['id'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `turnirs` SET `users_in` = `users_in` + 1 WHERE `id` = "' . $totr['id'] . '" LIMIT 1'); - $u->info['inTurnirnew'] = $totr['id']; + $this->u->info['inTurnirnew'] = $totr['id']; $this->error = 'Вы записались на участие в турнире.'; } else { $this->error = 'Заявка на турнир не найдена.'; @@ -1662,13 +1596,13 @@ class zayvki } else { $this->error = 'Вы уже находитесь в заявке на турнир.'; } - } elseif (isset($_GET['cancel13']) && $u->room['zvsee'] == 0) { - if ($u->info['inTurnirnew'] > 0) { - $totr = mysql_fetch_array(mysql_query('SELECT * FROM `turnirs` WHERE `id` = "' . mysql_real_escape_string($u->info['inTurnirnew']) . '" AND `status` = "0" LIMIT 1')); + } elseif (isset($_GET['cancel13']) && $this->u->room['zvsee'] == 0) { + if ($this->u->info['inTurnirnew'] > 0) { + $totr = mysql_fetch_array(mysql_query('SELECT * FROM `turnirs` WHERE `id` = "' . mysql_real_escape_string($this->u->info['inTurnirnew']) . '" AND `status` = "0" LIMIT 1')); if (isset($totr['id'])) { - mysql_query('UPDATE `users` SET `inTurnirnew` = "0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `inTurnirnew` = "0" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `turnirs` SET `users_in` = `users_in` - 1 LIMIT 1'); - $u->info['inTurnirnew'] = 0; + $this->u->info['inTurnirnew'] = 0; $this->error = 'Вы отказались от заявки на турнир.'; } else { $this->error = 'Нельзя отказаться от заявки находясь в турнире.'; @@ -1681,8 +1615,8 @@ class zayvki $dv = ''; $trse = ''; - if ($u->info['inTurnirnew'] > 0) { - $pl = mysql_fetch_array(mysql_query('SELECT * FROM `turnirs` WHERE `id` = "' . $u->info['inTurnirnew'] . '" LIMIT 1')); + if ($this->u->info['inTurnirnew'] > 0) { + $pl = mysql_fetch_array(mysql_query('SELECT * FROM `turnirs` WHERE `id` = "' . $this->u->info['inTurnirnew'] . '" LIMIT 1')); if (!isset($pl['id'])) { mysql_query('UPDATE `users` SET `inTurnirnew` = "0" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); echo 'Что-то не так... Обновите страницу.'; @@ -1691,7 +1625,7 @@ class zayvki $spu = mysql_query('SELECT `u`.`id`,`u`.`align`,`u`.`login`,`u`.`clan`,`u`.`level`,`u`.`city`,`u`.`online`,`u`.`sex`,`u`.`cityreg`,`u`.`palpro`,`u`.`invis` FROM `users` AS `u` WHERE `u`.`inTurnirnew` = "' . $pl['id'] . '" LIMIT ' . $pl['users_in']); $i = 1; while ($plu = mysql_fetch_array($spu)) { - $dv .= '
    ' . $i . '. ' . $u->microLogin($plu, 2) . '
    '; + $dv .= '
    ' . $i . '. ' . $this->u->microLogin($plu, 2) . '
    '; $i++; } echo ' @@ -1708,7 +1642,7 @@ class zayvki ' . $this->error . '
    - Начало турнира через ' . $u->timeOut($pl['time'] - time()) . ' + Начало турнира через ' . $this->u->timeOut($pl['time'] - time()) . '
    ' . $dv . ' @@ -1738,9 +1672,9 @@ class zayvki $j = 0; while ($pl = mysql_fetch_array($sp)) { $j++; - $dinf = 'Начало через ' . $u->timeOut($pl['time'] - time()) . ''; + $dinf = 'Начало через ' . $this->u->timeOut($pl['time'] - time()) . ''; $dv .= ''; @@ -1784,11 +1718,11 @@ class zayvki 1 => 'Если вы не достигли первого уровня, то для вас это единственный способ для проведения битв.', ]; $dv = ''; - if ($u->room['zvsee'] == 0) { - if ($u->info['level'] <= $c['bot_level'] || $u->info['admin'] > 0) { - $dv = 'Тренировочные бои доступны до ' . ($c['bot_level'] + 1) . '-го уровня. '; + if ($this->u->room['zvsee'] == 0) { + if ($this->u->info['level'] <= $c['bot_level'] || $this->u->info['admin'] > 0) { + $dv = 'Тренировочные бои доступны до ' . ($c['bot_level'] + 1) . '-го уровня. '; } else { - if ($u->info['level'] < 9) { + if ($this->u->info['level'] < 9) { $tstw = ' для 8 левелов недоступны'; } else { $tstw = ''; @@ -1802,12 +1736,12 @@ class zayvki
    '; } - if ($u->info['admin'] > 0) { + if ($this->u->info['admin'] > 0) { if (isset($_GET['adminbotatack'])) { $bot_atack = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `id` = "' . mysql_real_escape_string($_GET['adminbotatack']) . '" LIMIT 1')); if (isset($bot_atack['id'])) { $logins_bot = []; - $k = $u->addNewbot($bot_atack['id'], null, null, $logins_bot); + $k = $this->u->addNewbot($bot_atack['id'], null, null, $logins_bot); if (isset($k['id'])) { $expB = 0; $btl = [ @@ -1827,7 +1761,7 @@ class zayvki "0", "0", "0", - "' . $u->info['city'] . '", + "' . $this->u->info['city'] . '", "' . time() . '", "' . $btl['players'] . '", "' . $btl['timeout'] . '", @@ -1839,9 +1773,9 @@ class zayvki "' . $btl['addExp'] . '", "' . $btl['money'] . '")'); $btl_id = mysql_insert_id(); - mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $k['id'] . '" OR `id` = "' . $u->info['id'] . '" LIMIT 2'); + mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $k['id'] . '" OR `id` = "' . $this->u->info['id'] . '" LIMIT 2'); mysql_query('UPDATE `stats` SET `team` = "2" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); die(''); } } @@ -1882,7 +1816,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0
    '; } } elseif ($r == 4) { - if ($u->room['zvsee'] == 0) { //групповые ?> + if ($this->u->room['zvsee'] == 0) { //групповые ?> @@ -2036,7 +1970,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $j = 0; while ($j < count($tmu[$tms[$j]])) { if ($tmu[$tms[$i]][$j] > 0) { - $tmsu .= $u->microLogin($tmu[$tms[$i]][$j], 1) . ', '; + $tmsu .= $this->u->microLogin($tmu[$tms[$i]][$j], 1) . ', '; } $j++; } @@ -2084,7 +2018,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $dt = round((int)$_GET['logs2']); } $dt = strtotime(date('d F Y', $dt) . ' 00:00:00'); - $slogin = $u->info['login']; + $slogin = $this->u->info['login']; if (isset($_GET['filter'])) { $slogin = $_GET['filter']; } @@ -2193,35 +2127,32 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 public function rzInfo($id) { - global $u; $r = ''; - $w = mysql_num_rows(mysql_query('SELECT * FROM `zayvki` WHERE `time` > ' . (time() - 7200) . ' AND `cancel` = "0" AND `start` = "0" AND `razdel` = "' . $id . '" AND (`min_lvl_1` <= ' . $u->info['level'] . ' OR `min_lvl_2` <= ' . $u->info['level'] . ') AND (`max_lvl_1` >= ' . $u->info['level'] . ' OR `max_lvl_2` >= ' . $u->info['level'] . ')')); + $w = mysql_num_rows(mysql_query('SELECT * FROM `zayvki` WHERE `time` > ' . (time() - 7200) . ' AND `cancel` = "0" AND `start` = "0" AND `razdel` = "' . $id . '" AND (`min_lvl_1` <= ' . $this->u->info['level'] . ' OR `min_lvl_2` <= ' . $this->u->info['level'] . ') AND (`max_lvl_1` >= ' . $this->u->info['level'] . ' OR `max_lvl_2` >= ' . $this->u->info['level'] . ')')); if ($w > 0) { $r = ' (' . $w . ')'; } return $r; } - public function testzvu($id, $tm, $bt) + public function testzvu($id, $tm, $bt = 0) { - $r = 0; - if ($bt == 0) { - $r = mysql_num_rows(mysql_query('SELECT `id` FROM `stats` WHERE `zv` = "' . $id . '" AND `team` = "' . $tm . '"')); - } else { - $r = mysql_num_rows(mysql_query('SELECT `id` FROM `stats` WHERE `zv` = "' . $id . '" AND `team` = "' . $tm . '" AND `bot` = "2"')); + $query = "select id from stats where zv = $id and team = $tm"; + if ($bt) { + $query .= " and bot = 2"; } - return $r; + return mysql_num_rows(mysql_query($query)); } public function seeZv() { - global $u, $c, $code, $zi; + global $c, $code, $zi; if (isset($_GET['r']) && $this->zv_see == 1) { $r = round(intval($_GET['r'])); if ($r >= 1 && $r <= 5) { //Список заявок $i = 0; - $cl = mysql_query('SELECT * FROM `zayvki` WHERE `razdel` = "' . mysql_real_escape_string($r) . '" AND `start` = "0" AND `cancel` = "0" AND `time` > "' . (time() - 60 * 60 * 2) . '" /*AND `city` = "' . $u->info['city'] . '"*/ ORDER BY `id` DESC'); + $cl = mysql_query('SELECT * FROM `zayvki` WHERE `razdel` = "' . mysql_real_escape_string($r) . '" AND `start` = "0" AND `cancel` = "0" AND `time` > "' . (time() - 60 * 60 * 2) . '" /*AND `city` = "' . $this->u->info['city'] . '"*/ ORDER BY `id` DESC'); $zvb = ''; while ($pl = mysql_fetch_array($cl)) { @@ -2243,11 +2174,11 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $col_p = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $pl['id'] . '"')); $cols = $col_p[0]; while ($s = mysql_fetch_array($users)) { - $tm .= $u->microLogin($s['id'], 1) . ', '; + $tm .= $this->u->microLogin($s['id'], 1) . ', '; } $rad = ''; $tm = rtrim($tm, ', '); - if (!isset($zi['id']) && $u->room['zvsee'] == 0 && $u->info['inTurnirnew'] == 0) { + if (!isset($zi['id']) && $this->u->room['zvsee'] == 0 && $this->u->info['inTurnirnew'] == 0) { $rad = ' '; } $n1tv = ''; @@ -2258,16 +2189,16 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $unvs = 0; $usrszv = ''; - //if( $u->info['admin'] > 0 ) { + //if( $this->u->info['admin'] > 0 ) { $spzm = mysql_query('SELECT `id`,`team` FROM `stats` WHERE `zv` = "' . $pl['id'] . '" AND `id` != "' . $pl['creator'] . '"'); while ($plzm = mysql_fetch_array($spzm)) { - if ($u->info['admin'] > 0 || ($u->info['align'] > 1 && $u->info['align'] < 2) || ($u->info['align'] > 3 && $u->info['align'] < 4)) { - $usrszv .= ',' . $u->microLogin($plzm['id'], 1) . ''; + if ($this->u->info['admin'] > 0 || ($this->u->info['align'] > 1 && $this->u->info['align'] < 2) || ($this->u->info['align'] > 3 && $this->u->info['align'] < 4)) { + $usrszv .= ',' . $this->u->microLogin($plzm['id'], 1) . ''; } $unvs++; } //} - $tm = '' . $u->microLogin($pl['creator'], 1) . '' . $usrszv . ' - ' . $tm; + $tm = '' . $this->u->microLogin($pl['creator'], 1) . '' . $usrszv . ' - ' . $tm; $unvs = ' Участников: ' . (1 + $unvs) . ' чел. '; $n1tv = ' '; @@ -2301,18 +2232,18 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } if ($pl['comment'] != '') { $dl = ''; - if (($moder['boi'] == 1 || $u->info['admin'] > 0) && $pl['dcom'] == 0) { - $dl .= ' (удалить комментарий)'; - if (isset($_GET['delcom']) && $_GET['delcom'] == $pl['id'] && $u->newAct($_GET['key']) == true) { - mysql_query('UPDATE `zayvki` SET `dcom` = "' . $u->info['id'] . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); - $pl['dcom'] = $u->info['id']; + if (($moder['boi'] == 1 || $this->u->info['admin'] > 0) && $pl['dcom'] == 0) { + $dl .= ' (удалить комментарий)'; + if (isset($_GET['delcom']) && $_GET['delcom'] == $pl['id'] && $this->u->newAct($_GET['key']) == true) { + mysql_query('UPDATE `zayvki` SET `dcom` = "' . $this->u->info['id'] . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + $pl['dcom'] = $this->u->info['id']; } } if ($pl['dcom'] > 0) { $dl = 'Комментарий удален модератором'; } if ($pl['dcom'] > 0) { - if ($moder['boi'] == 1 || $u->info['admin'] > 0) { + if ($moder['boi'] == 1 || $this->u->info['admin'] > 0) { $pl['comment'] = '[ Текст комментария : ' . $pl['comment'] . '] '; } else { $pl['comment'] = ''; @@ -2329,7 +2260,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } $zv_comm = ' (Героическое Сражение' . $imn . ')'; } - if ($r == 5 && ($pl['creator'] == $u->info['id']) && $cols < 2 && $pl['priz'] == 0) { + if ($r == 5 && ($pl['creator'] == $this->u->info['id']) && $cols < 2 && $pl['priz'] == 0) { $del_q = '  '; } else { $del_q = ''; @@ -2370,7 +2301,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $logins_bot = []; while ($plb = mysql_fetch_array($spb)) { if ($xx2 < $pl['tm2max'] && rand(0, 10000) < 5000 && rand(0, 10000) > 5000) { - $bt = $u->addNewbot(0, '', $plb['id']); + $bt = $this->u->addNewbot(0, '', $plb['id']); $logins_bot = $bt['logins_bot']; if ($bt > 0) { mysql_query('UPDATE `stats` SET `zv` = "' . $pl['id'] . '",`team` = "2" WHERE `id` = "' . $bt . '" LIMIT 1'); @@ -2386,7 +2317,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $users = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`u`.`admin`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON `u`.`id` = `st`.`id` WHERE `st`.`zv` = "' . $pl['id'] . '"'); $tmc = []; while ($s = mysql_fetch_array($users)) { - ${'tm' . $s['team']} .= $u->microLogin($s['id'], 1) . ', '; + ${'tm' . $s['team']} .= $this->u->microLogin($s['id'], 1) . ', '; $tmc[$s['team']]++; } @@ -2442,23 +2373,23 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } // $rad = ''; - if (!isset($zi['id']) && $u->room['zvsee'] == 0) { + if (!isset($zi['id']) && $this->u->room['zvsee'] == 0) { $rad = ' '; } if ($pl['comment'] != '') { $dl = ''; - if (($moder['boi'] == 1 || $u->info['admin'] > 0) && $pl['dcom'] == 0) { - $dl .= ' (удалить комментарий)'; - if (isset($_GET['delcom']) && $_GET['delcom'] == $pl['id'] && $u->newAct($_GET['key']) == true) { - mysql_query('UPDATE `zayvki` SET `dcom` = "' . $u->info['id'] . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); - $pl['dcom'] = $u->info['id']; + if (($moder['boi'] == 1 || $this->u->info['admin'] > 0) && $pl['dcom'] == 0) { + $dl .= ' (удалить комментарий)'; + if (isset($_GET['delcom']) && $_GET['delcom'] == $pl['id'] && $this->u->newAct($_GET['key']) == true) { + mysql_query('UPDATE `zayvki` SET `dcom` = "' . $this->u->info['id'] . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + $pl['dcom'] = $this->u->info['id']; } } if ($pl['dcom'] > 0) { $dl = 'Комментарий удален модератором'; } if ($pl['dcom'] > 0) { - if ($moder['boi'] == 1 || $u->info['admin'] > 0) { + if ($moder['boi'] == 1 || $this->u->info['admin'] > 0) { $pl['comment'] = '[ Текст комментария : ' . $pl['comment'] . '] '; } else { $pl['comment'] = ''; @@ -2500,13 +2431,13 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 if (isset($uz['id'])) { $uze = mysql_fetch_array(mysql_query('SELECT `u`.*,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $pl['id'] . '" AND `st`.`team` = "2" LIMIT 1')); $d1 = ''; - if ($uz['id'] == $u->info['id'] || $uze['id'] == $u->info['id'] || $u->info['level'] <= $c['bot_level']) { + if ($uz['id'] == $this->u->info['id'] || $uze['id'] == $this->u->info['id'] || $this->u->info['level'] <= $c['bot_level']) { $d1 = 'disabled="disabled"'; } - if (!isset($uze['id']) || $u->info['zv'] == $pl['id']) { + if (!isset($uze['id']) || $this->u->info['zv'] == $pl['id']) { $enm = ''; if (isset($uze['id'])) { - $enm = ' против ' . $u->microLogin($uze['id'], 1) . ''; + $enm = ' против ' . $this->u->microLogin($uze['id'], 1) . ''; } if ($uz['banned'] > 0) { $pl['id'] = 0; @@ -2515,16 +2446,16 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } $dp1 = ''; if ($pl['money'] > 0) { - $dp1 = ' Бой на деньги, ставка: ' . $u->round2($pl['money']) . ' кр.'; + $dp1 = ' Бой на деньги, ставка: ' . $this->u->round2($pl['money']) . ' кр.'; } - if ($u->room['zvsee'] == 0) { + if ($this->u->room['zvsee'] == 0) { $zvb .= ''; } $mbcom = ''; if ($pl['comment'] != '') { $mbcom = ' ' . $pl['comment'] . ''; } - $zvb .= '' . date('H:i', $pl['time']) . ' ' . $u->microLogin($uz['id'], 1) . ' ' . $enm . ' тип боя: ( таймаут ' . round($pl['timeout'] / 60) . ' мин.' . $dp1 . ' ' . $mon . ')' . $mbcom . '
    '; + $zvb .= '' . date('H:i', $pl['time']) . ' ' . $this->u->microLogin($uz['id'], 1) . ' ' . $enm . ' тип боя: ( таймаут ' . round($pl['timeout'] / 60) . ' мин.' . $dp1 . ' ' . $mon . ')' . $mbcom . '
    '; if ($uz['banned'] > 0) { $zvb .= ''; } @@ -2535,13 +2466,13 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } if ($i == 0) { //заявок нет - if ($u->room['zvsee'] > 0) { + if ($this->u->room['zvsee'] > 0) { echo '


    В данном разделе нет ни одной заявки
    '; } } else { - if (!isset($zi['id']) && $u->room['zvsee'] == 0) { + if (!isset($zi['id']) && $this->u->room['zvsee'] == 0) { if ($_GET['r'] == 5) { - if (!$u->info['no_zv_key']) { + if (!$this->u->info['no_zv_key']) { echo '

    Код подтверждения:
    ' . $zvb . ' Код подтверждения: @@ -2553,7 +2484,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0
    '; } } else { - if ($zvb != '' && $u->info['level'] > $c['bot_level']) { + if ($zvb != '' && $this->u->info['level'] > $c['bot_level']) { echo '


    ' . $zvb . '
    '; } else { echo '
    ' . $zvb . '
    '; @@ -2569,10 +2500,13 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 public function go($id) { - global $u, $c, $code, $zi, $filter; - if (!isset($zi['id'])) { - if ($u->info['battle'] == 0 && $u->info['inTurnirnew'] == 0) { - $z = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `id`="' . mysql_real_escape_string(intval($id)) . '" /*AND `city` = "' . $u->info['city'] . '"*/ AND `start` = "0" AND `cancel` = "0" AND `time` > "' . (time() - 60 * 60 * 2) . '" LIMIT 1')); + global $zi; + $filter = new Filter(); + if (isset($zi['id'])) { + $this->error = 'Вы не можете принять бой. Сначала отзовите свою заявку.'; + } else { + if ($this->u->info['battle'] == 0 && $this->u->info['inTurnirnew'] == 0) { + $z = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `id`="' . mysql_real_escape_string(intval($id)) . '" /*AND `city` = "' . $this->u->info['city'] . '"*/ AND `start` = "0" AND `cancel` = "0" AND `time` > "' . (time() - 60 * 60 * 2) . '" LIMIT 1')); if (isset($z['id'])) { if ($z['razdel'] >= 1 && $z['razdel'] <= 3) { //новички, физы, договорные @@ -2585,19 +2519,19 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } elseif ($this->testTravm() == 2) { $this->error = 'Вы травмированы. С такими увечьями невозможно сражаться.'; $az = 0; - } elseif ($u->info['hpNow'] < $u->stats['hpAll'] / 100 * 30 && ($z['razdel'] >= 1 || $z['razdel'] <= 3)) { + } elseif ($this->u->info['hpNow'] < $this->u->stats['hpAll'] / 100 * 30 && ($z['razdel'] >= 1 || $z['razdel'] <= 3)) { $this->error = 'Вы еще слишком ослаблены чтобы начать новый бой'; $az = 0; - } elseif ($uz1['clan'] == $u->info['clan'] && $u->info['clan'] != 0 && $u->info['admin'] == 0 && true == false) { + } elseif ($uz1['clan'] == $this->u->info['clan'] && $this->u->info['clan'] != 0 && $this->u->info['admin'] == 0 && true == false) { $this->error = 'Вы не можете сражаться против сокланов'; - } elseif ($z['withUser'] != '' && $filter->mystr($u->info['login']) != $filter->mystr($z['withUser']) && $z['razdel'] == 3) { + } elseif ($z['withUser'] != '' && $filter->mystr($this->u->info['login']) != $filter->mystr($z['withUser']) && $z['razdel'] == 3) { $this->error = 'Вы не можете принять эту заявку'; - } elseif ($z['money'] > 0 && $z['money'] > $u->info['money']) { + } elseif ($z['money'] > 0 && $z['money'] > $this->u->info['money']) { $this->error = 'У Вас недостаточно денег, чтобы принять эту заявку'; - } elseif ($u->stats['hpNow'] < ceil($u->stats['hpMax'] / 100 * 30)) { + } elseif ($this->u->stats['hpNow'] < ceil($this->u->stats['hpMax'] / 100 * 30)) { $this->error = 'Вы слишком ослаблены, восстановитесь'; } elseif (!isset($uz2['id'])) { - $upd = mysql_query('UPDATE `stats` SET `zv` = "' . $z['id'] . '",`team` = "2" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + $upd = mysql_query('UPDATE `stats` SET `zv` = "' . $z['id'] . '",`team` = "2" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); if ($upd) { $ca = ''; if ($uz1['clan'] != 0) { @@ -2612,14 +2546,14 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } $this->error = 'Ожидаем подтверждения боя от ' . $ca . ' ' . $uz1['login'] . ' [' . $uz1['level'] . ']'; $sa = ''; - if ($u->info['sex'] == 2) { + if ($this->u->info['sex'] == 2) { $sa = 'а'; } - $text = ' [login:' . $u->info['login'] . '] принял' . $sa . ' вашу заявку на бой.[reflesh_main_zv_priem:' . $u->info['id'] . ']'; + $text = ' [login:' . $this->u->info['login'] . '] принял' . $sa . ' вашу заявку на бой.[reflesh_main_zv_priem:' . $this->u->info['id'] . ']'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $uz1['city'] . "','','','" . $uz1['login'] . "','" . $text . "','" . time() . "','6','0')"); $zi = $z; - $u->info['zv'] = $z['id']; - $u->info['team'] = 2; + $this->u->info['zv'] = $z['id']; + $this->u->info['team'] = 2; } else { $this->error = 'Невозможно принять заявку.'; } @@ -2629,7 +2563,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } else { $this->error = 'Заявка на бой заблокирована.'; } - } elseif ($z['razdel'] == 4 && $u->info['level'] > 1) { + } elseif ($z['razdel'] == 4 && $this->u->info['level'] > 1) { $tm = 0; //групповые if (isset($_GET['tm1'])) { @@ -2649,7 +2583,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $cl111 = mysql_query('SELECT `u`.`clan`,`st`.`team`,`st`.`id`,`st`.`zv` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv` = "' . $z['id'] . '" LIMIT 200'); $cln = 0; while ($pc111 = mysql_fetch_array($cl111)) { - if ($pc111['clan'] == $u->info['clan'] && $u->info['clan'] != 0 && $pc111['team'] == $t2) { + if ($pc111['clan'] == $this->u->info['clan'] && $this->u->info['clan'] != 0 && $pc111['team'] == $t2) { $cln++; } if ($pc111['team'] == $t1) { @@ -2660,31 +2594,31 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $this->error = 'Вы не можете сражаться против сокланов'; } elseif ($z['bot2'] == 1 && $t1 == 2) { $this->error = 'Вы не можете сражаться на стороне ботов'; - } elseif ($z['money3'] > 0 && $z['money3'] > $u->info['money3']) { + } elseif ($z['money3'] > 0 && $z['money3'] > $this->u->info['money3']) { $this->error = 'У Вас недостаточно денег, чтобы принять эту заявку'; - } elseif (($z['money'] > 0 || $z['money3'] > 0) && $u->info['level'] < 4) { + } elseif (($z['money'] > 0 || $z['money3'] > 0) && $this->u->info['level'] < 4) { $this->error = 'Бои на деньги проводятся с 4-го уровня'; } elseif ($z['tm' . $t1 . 'max'] > $tmmax) { - if ($z['min_lvl_' . $t1] > $u->info['level'] || $z['max_lvl_' . $t1] < $u->info['level']) { + if ($z['min_lvl_' . $t1] > $this->u->info['level'] || $z['max_lvl_' . $t1] < $this->u->info['level']) { $this->error = 'Вы не подходите по уровню, за эту команду могут зайти персонажи ' . $z['min_lvl_' . $t1] . ' - ' . $z['max_lvl_' . $t1] . ' уровня'; - } elseif ($u->stats['hpNow'] < ceil($u->stats['hpMax'] / 100 * 30)) { + } elseif ($this->u->stats['hpNow'] < ceil($this->u->stats['hpMax'] / 100 * 30)) { $this->error = 'Вы слишком ослаблены, восстановитесь'; } else { - $upd = mysql_query('UPDATE `stats` SET `zv` = "' . $z['id'] . '",`team` = "' . mysql_real_escape_string((int)$t1) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + $upd = mysql_query('UPDATE `stats` SET `zv` = "' . $z['id'] . '",`team` = "' . mysql_real_escape_string((int)$t1) . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); if (!$upd) { $this->error = 'Ошибка приема заявки...'; } else { $this->error = 'Вы приняли групповой бой...'; $zi = $z; - $u->info['zv'] = $z['id']; - $u->info['team'] = mysql_real_escape_string((int)$t1); + $this->u->info['zv'] = $z['id']; + $this->u->info['team'] = mysql_real_escape_string((int)$t1); } } } else { $this->error = 'Группа уже набрана (' . ($z['tm' . $t1 . 'max'] - $tmmax) . ')'; } } - } elseif ($z['razdel'] == 5 && $u->info['level'] > 1) { + } elseif ($z['razdel'] == 5 && $this->u->info['level'] > 1) { //хаотичные $col_p = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $z['id'] . '"')); $cols = $col_p[0]; @@ -2694,13 +2628,13 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $this->error = 'Вы травмированы. С такими увечьями доступны кулачные бои.'; } elseif ($this->testTravm() == 2) { $this->error = 'Вы травмированы. С такими увечьями невозможно сражаться.'; - } elseif (!$u->info['no_zv_key'] && (!isset($_SESSION['code2']) || $_SESSION['code2'] < 1 || ($_POST['code21'] != $_SESSION['code2'] && $_POST['code22'] != $_SESSION['code2']))) { + } elseif (!$this->u->info['no_zv_key'] && (!isset($_SESSION['code2']) || $_SESSION['code2'] < 1 || ($_POST['code21'] != $_SESSION['code2'] && $_POST['code22'] != $_SESSION['code2']))) { $this->error = 'Неправильный код подтверждения'; - } elseif ($z['min_lvl_1'] > $u->info['level'] || $z['max_lvl_1'] < $u->info['level']) { + } elseif ($z['min_lvl_1'] > $this->u->info['level'] || $z['max_lvl_1'] < $this->u->info['level']) { $this->error = 'Вы не подходите по уровню, за эту команду могут зайти персонажи ' . $z['min_lvl_1'] . ' - ' . $z['max_lvl_1'] . ' уровня'; - } elseif ($u->stats['hpNow'] < ceil($u->stats['hpMax'] / 100 * 30)) { + } elseif ($this->u->stats['hpNow'] < ceil($this->u->stats['hpMax'] / 100 * 30)) { $this->error = 'Вы слишком ослаблены, восстановитесь'; - } elseif ($z['money'] > 0 && $u->info['level'] < 4) { + } elseif ($z['money'] > 0 && $this->u->info['level'] < 4) { $this->error = 'Бои на деньги проводятся с 4-го уровня'; } else { $t1 = 0; @@ -2711,12 +2645,12 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 mysql_query('INSERT INTO `users` (`name`,`align`,`real`,`login`,`host_reg`,`pass`,`ip`,`ipreg`,`city`,`cityreg`,`room`,`timereg`, `activ`,`mail`,`bithday`,`sex`,`fnq`,`battle`,`design`,`molch2`,`level` ) VALUES ( - "' . $u->info['name'] . '", - "' . $u->info['align'] . '", + "' . $this->u->info['name'] . '", + "' . $this->u->info['align'] . '", "1", - "' . $u->info['login'] . '", + "' . $this->u->info['login'] . '", "0", - "' . $u->info['pass'] . '", + "' . $this->u->info['pass'] . '", "' . mysql_real_escape_string(IP) . '", "' . mysql_real_escape_string(IP) . '", "capitalcity", @@ -2726,7 +2660,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 "0", "haot@new-combats.com", "01.01.1980", - "' . $u->info['sex'] . '", + "' . $this->u->info['sex'] . '", "0", "0", "1", @@ -2735,84 +2669,84 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 )'); $uidb = mysql_insert_id(); - mysql_query('UPDATE `users` SET `inUser` = "' . $uidb . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `inUser` = "' . $uidb . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); //тут классы $sellclass = rand(1, 6); if ($sellclass == 1) { //уворот класс 1 - $us = add_effn($uidb, 8); // ловка - $us = add_effn($uidb, 20); // сокрушение + $us = $this->add_effn($uidb, 8); // ловка + $us = $this->add_effn($uidb, 20); // сокрушение mysql_query("INSERT INTO `stats` (`id`,`stats`,`ability`,`skills`,exp) VALUES ('" . $uidb . "','s1=21|s2=31|s3=16|s4=30|rinv=40|m9=5|m6=10|s7=0|a1=10|a2=0|a3=0|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0',-75,-9,100000)"); - $re = $u->addItem(525, $uidb); + $re = $this->u->addItem(525, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 1 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "525" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(539, $uidb); + $re = $this->u->addItem(539, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 2 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "539" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(523, $uidb); + $re = $this->u->addItem(523, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 3 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "523" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(523, $uidb); + $re = $this->u->addItem(523, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 14 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "523" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(290, $uidb); + $re = $this->u->addItem(290, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 4 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "290" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(541, $uidb); + $re = $this->u->addItem(541, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 5 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "541" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(633, $uidb); + $re = $this->u->addItem(633, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 7 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "633" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(647, $uidb); + $re = $this->u->addItem(647, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 8 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "647" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(680, $uidb); + $re = $this->u->addItem(680, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 9 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "680" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(685, $uidb); + $re = $this->u->addItem(685, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 10 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "685" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(685, $uidb); + $re = $this->u->addItem(685, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 11 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "685" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(685, $uidb); + $re = $this->u->addItem(685, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 12 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "685" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(1151, $uidb); + $re = $this->u->addItem(1151, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 13 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "1151" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(707, $uidb); + $re = $this->u->addItem(707, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 16 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "707" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(712, $uidb); + $re = $this->u->addItem(712, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 17 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "712" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); @@ -2820,78 +2754,78 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 //уворот класс закончен } elseif ($sellclass == 2) { //крит класс 2 - $us = add_effn($uidb, 7); // инта - $us = add_effn($uidb, 20); // сокрушение + $us = $this->add_effn($uidb, 7); // инта + $us = $this->add_effn($uidb, 20); // сокрушение mysql_query("INSERT INTO `stats` (`id`,`stats`,`ability`,`skills`,exp) VALUES ('" . $uidb . "','s1=24|s2=20|s3=24|s4=30|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=9|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',-75,-9,100000)"); - $re = $u->addItem(527, $uidb); + $re = $this->u->addItem(527, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 1 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "527" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(537, $uidb); + $re = $this->u->addItem(537, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 2 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "537" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(567, $uidb); + $re = $this->u->addItem(567, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 3 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "567" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(723, $uidb); + $re = $this->u->addItem(723, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 14 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "723" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(291, $uidb); + $re = $this->u->addItem(291, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 4 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "291" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(544, $uidb); + $re = $this->u->addItem(544, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 5 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "544" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(626, $uidb); + $re = $this->u->addItem(626, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 7 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "626" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(651, $uidb); + $re = $this->u->addItem(651, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 8 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "651" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(683, $uidb); + $re = $this->u->addItem(683, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 9 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "683" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(686, $uidb); + $re = $this->u->addItem(686, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 10 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "686" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(686, $uidb); + $re = $this->u->addItem(686, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 11 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "686" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(686, $uidb); + $re = $this->u->addItem(686, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 12 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "686" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(706, $uidb); + $re = $this->u->addItem(706, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 13 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "706" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(708, $uidb); + $re = $this->u->addItem(708, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 16 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "708" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(717, $uidb); + $re = $this->u->addItem(717, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 17 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "717" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); @@ -2899,78 +2833,78 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 //193|204|221|138|9|188|240|215|147|232|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 } elseif ($sellclass == 3) { //танк класс 3 - $us = add_effn($uidb, 1); // сила - $us = add_effn($uidb, 20); // сокрушение + $us = $this->add_effn($uidb, 1); // сила + $us = $this->add_effn($uidb, 20); // сокрушение mysql_query("INSERT INTO `stats` (`id`,`stats`,`ability`,`skills`,exp) VALUES ('" . $uidb . "','s1=42|s2=3|s3=3|s4=50|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=9|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',-75,-9,100000)"); - $re = $u->addItem(533, $uidb); + $re = $this->u->addItem(533, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 1 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "533" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(536, $uidb); + $re = $this->u->addItem(536, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 2 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "536" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(558, $uidb); + $re = $this->u->addItem(558, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 3 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "558" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(722, $uidb); + $re = $this->u->addItem(722, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 14 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "722" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(291, $uidb); + $re = $this->u->addItem(291, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 4 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "291" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(545, $uidb); + $re = $this->u->addItem(545, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 5 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "545" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(628, $uidb); + $re = $this->u->addItem(628, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 7 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "628" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(654, $uidb); + $re = $this->u->addItem(654, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 8 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "654" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(684, $uidb); + $re = $this->u->addItem(684, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 9 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "684" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(689, $uidb); + $re = $this->u->addItem(689, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 10 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "689" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(689, $uidb); + $re = $this->u->addItem(689, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 11 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "689" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(689, $uidb); + $re = $this->u->addItem(689, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 12 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "689" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(700, $uidb); + $re = $this->u->addItem(700, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 13 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "700" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(710, $uidb); + $re = $this->u->addItem(710, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 16 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "710" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(718, $uidb); + $re = $this->u->addItem(718, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 17 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "718" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); @@ -2978,79 +2912,79 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } elseif ($sellclass == 4) { //топор класс 4 - $us = add_effn($uidb, 1); // сила - $us = add_effn($uidb, 20); // сокрушение + $us = $this->add_effn($uidb, 1); // сила + $us = $this->add_effn($uidb, 20); // сокрушение mysql_query("INSERT INTO `stats` (`id`,`stats`,`ability`,`skills`,exp) VALUES ('" . $uidb . "','s1=43|s2=15|s3=15|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=10|a3=0|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0',-75,-9,100000)"); - $re = $u->addItem(528, $uidb); + $re = $this->u->addItem(528, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 1 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "528" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(538, $uidb); + $re = $this->u->addItem(538, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 2 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "538" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(552, $uidb); + $re = $this->u->addItem(552, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 3 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "552" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(552, $uidb); + $re = $this->u->addItem(552, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 14 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "552" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(291, $uidb); + $re = $this->u->addItem(291, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 4 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "291" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(543, $uidb); + $re = $this->u->addItem(543, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 5 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "543" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(627, $uidb); + $re = $this->u->addItem(627, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 7 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "627" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(653, $uidb); + $re = $this->u->addItem(653, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 8 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "653" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(681, $uidb); + $re = $this->u->addItem(681, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 9 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "681" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(687, $uidb); + $re = $this->u->addItem(687, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 10 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "687" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(687, $uidb); + $re = $this->u->addItem(687, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 11 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "687" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(687, $uidb); + $re = $this->u->addItem(687, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 12 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "687" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(320, $uidb); + $re = $this->u->addItem(320, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 13 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "320" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(709, $uidb); + $re = $this->u->addItem(709, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 16 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "709" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(716, $uidb); + $re = $this->u->addItem(716, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 17 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "716" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); @@ -3060,77 +2994,77 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } elseif ($sellclass == 5) { //м земля класс 5 //кастим эфекты - $us = add_effn($uidb, 9); // интелект - $us = add_effn($uidb, 32); // Холодный разум - $us = add_effn($uidb, 54); // Маг уселок земля - $us = add_effn($uidb, 439); // Маг уселок + $us = $this->add_effn($uidb, 9); // интелект + $us = $this->add_effn($uidb, 32); // Холодный разум + $us = $this->add_effn($uidb, 54); // Маг уселок земля + $us = $this->add_effn($uidb, 439); // Маг уселок mysql_query("INSERT INTO `stats` (`id`,`stats`,`ability`,`skills`,exp) VALUES ('" . $uidb . "','s1=14|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=0|a5=3|mg1=0|mg2=0|mg3=0|mg4=6|mg5=0|mg6=0|mg7=0|s5=13|s6=40|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',-75,-9,100000)"); - $re = $u->addItem(531, $uidb); + $re = $this->u->addItem(531, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 1 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "531" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(534, $uidb); + $re = $this->u->addItem(534, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 2 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "534" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(1026, $uidb); + $re = $this->u->addItem(1026, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 3 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "1026" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(291, $uidb); + $re = $this->u->addItem(291, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 4 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "291" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(548, $uidb); + $re = $this->u->addItem(548, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 5 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "548" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(629, $uidb); + $re = $this->u->addItem(629, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 7 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "629" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(699, $uidb); + $re = $this->u->addItem(699, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 13 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "699" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(711, $uidb); + $re = $this->u->addItem(711, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 16 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "711" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(714, $uidb); + $re = $this->u->addItem(714, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 17 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "714" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); ///------- юва - $re = $u->addItem(657, $uidb); + $re = $this->u->addItem(657, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 8 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "657" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(674, $uidb); + $re = $this->u->addItem(674, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 9 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "674" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(692, $uidb); + $re = $this->u->addItem(692, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 10 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "692" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(692, $uidb); + $re = $this->u->addItem(692, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 11 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "692" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(692, $uidb); + $re = $this->u->addItem(692, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 12 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "692" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); @@ -3140,77 +3074,77 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } elseif ($sellclass == 6) { //м воздух 6 //кастим эфекты - $us = add_effn($uidb, 9); // интелект - $us = add_effn($uidb, 32); // Холодный разум - $us = add_effn($uidb, 53); // Маг уселок воздух - $us = add_effn($uidb, 439); // Маг уселок + $us = $this->add_effn($uidb, 9); // интелект + $us = $this->add_effn($uidb, 32); // Холодный разум + $us = $this->add_effn($uidb, 53); // Маг уселок воздух + $us = $this->add_effn($uidb, 439); // Маг уселок mysql_query("INSERT INTO `stats` (`id`,`stats`,`ability`,`skills`,exp) VALUES ('" . $uidb . "','s1=14|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=0|a5=3|mg1=0|mg2=6|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=13|s6=40|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',-75,-9,100000)"); - $re = $u->addItem(531, $uidb); + $re = $this->u->addItem(531, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 1 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "531" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(534, $uidb); + $re = $this->u->addItem(534, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 2 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "534" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(1026, $uidb); + $re = $this->u->addItem(1026, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 3 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "1026" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(291, $uidb); + $re = $this->u->addItem(291, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 4 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "291" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(548, $uidb); + $re = $this->u->addItem(548, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 5 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "548" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(629, $uidb); + $re = $this->u->addItem(629, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 7 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "629" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(699, $uidb); + $re = $this->u->addItem(699, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 13 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "699" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(711, $uidb); + $re = $this->u->addItem(711, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 16 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "711" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(714, $uidb); + $re = $this->u->addItem(714, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 17 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "714" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); ///------- юва - $re = $u->addItem(658, $uidb); + $re = $this->u->addItem(658, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 8 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "658" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(675, $uidb); + $re = $this->u->addItem(675, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 9 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "675" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(693, $uidb); + $re = $this->u->addItem(693, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 10 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "693" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(693, $uidb); + $re = $this->u->addItem(693, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 11 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "693" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(693, $uidb); + $re = $this->u->addItem(693, $uidb); mysql_query('UPDATE `items_users` SET `inodet` = 12 WHERE `id` = "' . $re . '" LIMIT 1'); $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "693" AND `sid`=1 LIMIT 1')); mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); @@ -3221,17 +3155,17 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 // классы кончились //кастим эфекты - $us = add_effn($uidb, 37);//нектар - $us = add_effn($uidb, 38);//нектар отрицания - $us = add_effn($uidb, 283);//Бутерброд -Завтрак Рыцаря- толстый - $us = add_effn($uidb, 25);//Защита от оружия - $us = add_effn($uidb, 296);//Жажда Жизни +6 + $us = $this->add_effn($uidb, 37);//нектар + $us = $this->add_effn($uidb, 38);//нектар отрицания + $us = $this->add_effn($uidb, 283);//Бутерброд -Завтрак Рыцаря- толстый + $us = $this->add_effn($uidb, 25);//Защита от оружия + $us = $this->add_effn($uidb, 296);//Жажда Жизни +6 mysql_query('UPDATE `users` SET `money` = -3000 , `money2` = 0 WHERE `id` = "' . $uidb . '" LIMIT 1'); //Корекция хп в призовых $hpclon = mysql_fetch_array(mysql_query('SELECT `hpAll`,`mpAll` FROM `stats` WHERE `id` = "' . $uidb . '" LIMIT 1')); mysql_query('UPDATE `stats` SET `hpNow` = "' . $hpclon['hpAll'] . '" `mpNow` = "' . $hpclon['mpAll'] . '" WHERE `id` = "' . $uidb . '" LIMIT 1'); - $u->info['id'] = $uidb; + $this->u->info['id'] = $uidb; //============================================================================================= $this->error = 'Вы вселены в клона 8го левела'; //ТУТ вселяем в клона призовые хаоты echo ''; @@ -3241,22 +3175,22 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $nxtID = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $z['id'] . '"')); $nxtID = $nxtID[0]; } - $u->info['login2'] = ''; + $this->u->info['login2'] = ''; - $blnc = $u->stats['reting']; + $blnc = $this->u->stats['reting']; $z['tm' . $t1] += $blnc; - $upd = mysql_query('UPDATE `stats` SET `zv` = "' . $z['id'] . '",`team` = "' . $t1 . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + $upd = mysql_query('UPDATE `stats` SET `zv` = "' . $z['id'] . '",`team` = "' . $t1 . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); if (!$upd) { $this->error = 'Ошибка приема заявки...'; } else { - mysql_query('UPDATE `users` SET `login2` = "' . $u->info['login2'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `login2` = "' . $this->u->info['login2'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `zayvki` SET `tm1` = "' . $z['tm1'] . '", `tm2` = "' . $z['tm2'] . '" WHERE `id` = "' . $z['id'] . '" LIMIT 1'); $this->error = 'Вы приняли хаотичный бой...'; $zi = $z; - $u->info['zv'] = $z['id']; - $u->info['team'] = mysql_real_escape_string((int)$t1); + $this->u->info['zv'] = $z['id']; + $this->u->info['team'] = mysql_real_escape_string((int)$t1); } } } @@ -3264,11 +3198,6 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $this->error = 'Заявка на бой не найдена.'; } } - } else { - $this->error = 'Вы не можете принять бой. Сначала отзовите свою заявку.'; } } } - -$zv = new zayvki; -$zv->test(); //проверяем заявки \ No newline at end of file diff --git a/_incl_data/class/__filter_class.php b/_incl_data/class/Filter.php similarity index 62% rename from _incl_data/class/__filter_class.php rename to _incl_data/class/Filter.php index 8dfeeb81..56a58846 100644 --- a/_incl_data/class/__filter_class.php +++ b/_incl_data/class/Filter.php @@ -1,7 +1,4 @@ 1, "fingal" => 1, "eek" => 1, "smoke" => 1, "hi" => 1, "bye" => 1, "king" => 1, "king2" => 1, "boks2" => 1, "boks" => 1, "gent" => 1, "lady" => 1, "tongue" => 1, "smil" => 1, "rotate" => 1, "ponder" => 1, "bow" => 1, "angel" => 1, "angel2" => 1, "hello" => 1, "dont" => 1, "idea" => 1, "mol" => 1, "super" => 1, "beer" => 1, "drink" => 1, "baby" => 1, "tongue2" => 1, "sword" => 1, "agree" => 1, "loveya" => 1, "kiss" => 1, "kiss2" => 1, "kiss3" => 1, "kiss4" => 1, "rose" => 1, "love" => 1, "love2" => 1, "confused" => 1, "yes" => 1, "no" => 1, "shuffle" => 1, "nono" => 1, "maniac" => 1, "privet" => 1, "ok" => 1, "ninja" => 1, "pif" => 1, "smash" => 1, "alien" => 1, "pirate" => 1, "gun" => 1, "trup" => 1, "mdr" => 1, "sneeze" => 1, "mad" => 1, "friday" => 1, "cry" => 1, "grust" => 1, "rupor" => 1, "fie" => 1, "nnn" => 1, "row" => 1, "red" => 1, "lick" => 1, "help" => 1, "wink" => 1, "jeer" => 1, "tease" => 1, "nunu" => 1, "inv" => 1, "duel" => 1, "susel" => 1, "nun" => 1, "kruger" => 1, "flowers" => 1, "horse" => 1, "hug" => 1, "str" => 1, "alch" => 1, "pal" => 1, "mag" => 1, "sniper" => 1, "vamp" => 1, "doc" => 1, "doc2" => 1, "sharp" => 1, "naem" => 1, "naem2" => 1, "naem3" => 1, "invis" => 1, "chtoza" => 1, "beggar" => 1, "sorry" => 1, "sorry2" => 1, - "creator" => 1, "grace" => 1, "dustman" => 1, "carreat" => 1, "lordhaos" => 1, "ura" => 1, "elix" => 1, "dedmoroz" => 1, "snegur" => 1, "showng" => 1, "superng" => 1, "podz" => 1, "sten" => 1, "devil" => 1, "cat" => 1, "owl" => 1, "lightfly" => 1, "snowfight" => 1, "rocket" => 1, "ball" => 1, "smile" => 1, "fuck" => 1]; + private $sm = ["laugh" => 1, "fingal" => 1, "eek" => 1, "smoke" => 1, "hi" => 1, "bye" => 1, "king" => 1, "king2" => 1, "boks2" => 1, "boks" => 1, "gent" => 1, "lady" => 1, "tongue" => 1, "smil" => 1, "rotate" => 1, "ponder" => 1, "bow" => 1, "angel" => 1, "angel2" => 1, "hello" => 1, "dont" => 1, "idea" => 1, "mol" => 1, "super" => 1, "beer" => 1, "drink" => 1, "baby" => 1, "tongue2" => 1, "sword" => 1, "agree" => 1, "loveya" => 1, "kiss" => 1, "kiss2" => 1, "kiss3" => 1, "kiss4" => 1, "rose" => 1, "love" => 1, "love2" => 1, "confused" => 1, "yes" => 1, "no" => 1, "shuffle" => 1, "nono" => 1, "maniac" => 1, "privet" => 1, "ok" => 1, "ninja" => 1, "pif" => 1, "smash" => 1, "alien" => 1, "pirate" => 1, "gun" => 1, "trup" => 1, "mdr" => 1, "sneeze" => 1, "mad" => 1, "friday" => 1, "cry" => 1, "grust" => 1, "rupor" => 1, "fie" => 1, "nnn" => 1, "row" => 1, "red" => 1, "lick" => 1, "help" => 1, "wink" => 1, "jeer" => 1, "tease" => 1, "nunu" => 1, "inv" => 1, "duel" => 1, "susel" => 1, "nun" => 1, "kruger" => 1, "flowers" => 1, "horse" => 1, "hug" => 1, "str" => 1, "alch" => 1, "pal" => 1, "mag" => 1, "sniper" => 1, "vamp" => 1, "doc" => 1, "doc2" => 1, "sharp" => 1, "naem" => 1, "naem2" => 1, "naem3" => 1, "invis" => 1, "chtoza" => 1, "beggar" => 1, "sorry" => 1, "sorry2" => 1, "creator" => 1, "grace" => 1, "dustman" => 1, "carreat" => 1, "lordhaos" => 1, "ura" => 1, "elix" => 1, "dedmoroz" => 1, "snegur" => 1, "showng" => 1, "superng" => 1, "podz" => 1, "sten" => 1, "devil" => 1, "cat" => 1, "owl" => 1, "lightfly" => 1, "snowfight" => 1, "rocket" => 1, "ball" => 1, "smile" => 1, "fuck" => 1]; public function e($t) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("#' . date('d.m.Y') . ' %' . date('H:i:s') . ': ' . mysql_real_escape_string($t) . '","capitalcity","Игромир","6","1","-1")'); + mysql_query( + 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("#' . date('d.m.Y') . ' %' . date( + 'H:i:s' + ) . ': ' . mysql_real_escape_string($t) . '","capitalcity","Игромир","6","1","-1")' + ); } - public function setOnline($online, $uid, $afk) + public function setOnline($online, $uid) { $add = 0; @@ -45,7 +45,9 @@ class Filter $on['time_today'] += $add; } $add = $on['time_all'] + $add; - mysql_query('UPDATE `online` SET `mainTime` = "' . $mt . '",`time_today` = "' . $on['time_today'] . '",`lastUp` = "' . $lst . '",`time_all` = "' . $add . '" WHERE `id` = "' . $on['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `online` SET `mainTime` = "' . $mt . '",`time_today` = "' . $on['time_today'] . '",`lastUp` = "' . $lst . '",`time_all` = "' . $add . '" WHERE `id` = "' . $on['id'] . '" LIMIT 1' + ); } } } @@ -93,8 +95,7 @@ class Filter $spam = mysql_fetch_array(mysql_query('SELECT * FROM `spam_word` WHERE `id` = 1 LIMIT 1')); $spam = $spam['data']; // - $testEN = preg_replace('/[^a-z]*/i', '', $txt); - $testEN = preg_replace('/[^A-Z]*/i', '', $txt); + $testEN = preg_replace('/[^A-z]*/i', '', $txt); $testEN2 = $txt; $testEN2 = str_replace('"', '', $testEN2); @@ -116,10 +117,8 @@ class Filter $testEN2 = str_replace('я', '9', $testEN2); $testEN2 = str_replace('()', 'o', $testEN2); $testEN2 = str_replace('0', 'o', $testEN2); - $testEN2 = preg_replace('/[^a-z]*/i', '', $testEN2); - $testEN2 = preg_replace('/[^A-Z]*/i', '', $testEN2); - $testRU = preg_replace('/[^а-я]*/i', '', $txt); - $testRU = preg_replace('/[^А-Я]*/i', '', $txt); + $testEN2 = preg_replace('/[^A-z]*/i', '', $testEN2); + $testRU = preg_replace('/[^А-я]*/i', '', $txt); $testRU2 = $txt; $testRU2 = str_replace('a', 'а', $testRU2); @@ -143,15 +142,9 @@ class Filter $i = 0; $spe = explode('|', $spam); while ($i <= count($spe)) { - if ( - isset($spe[$i]) && - $spe[$i] != '' && - $spe[$i] != 'new-combats.com' && - ( - stristr($testEN, $spe[$i]) || - stristr($testRU, $spe[$i]) - ) - ) { + if (isset($spe[$i]) && $spe[$i] != '' && $spe[$i] != 'new-combats.com' && (stristr( + $testEN, $spe[$i] + ) || stristr($testRU, $spe[$i]))) { $nospam .= '%' . $spe[$i]; } $i++; @@ -164,5 +157,3 @@ class Filter trigger_error('Дублирование не допускается.', E_USER_ERROR); } } - -$filter = new Filter(); \ No newline at end of file diff --git a/_incl_data/class/GameDealer.php b/_incl_data/class/GameDealer.php new file mode 100644 index 00000000..b0b13bb5 --- /dev/null +++ b/_incl_data/class/GameDealer.php @@ -0,0 +1,245 @@ + 'pay_operations', //Таблица в которую заносятся данные + 'db_host' => 'localhost', + 'db_user' => 'newcom1_abk', + 'db_pass' => '4nWYsIM[c?}P', + 'db_base' => 'newcom1_abk', /* Настройки платежей */ + 'ip_list' => ['127,0,0,1,188.166.34.68,136.243.38.147,136.243.38.149,136.243.38.150,136.243.38.151,136.243.38.189,88.198.88.98'], //Указывать через запятую (Разрешенные IP) + 'key' => 'qtzl0igb', //gamedealer key + 'id' => '65643' //ID проекта + ], $BACK = []; //Результат который возвращаем в конце + + //Кодируем из ЮТФ-8 в Кирилицу + public function in($text) + { + return iconv("UTF-8", "cp1251", $text); + } + + //Кодируем из Кирилицу в ЮТФ-8 + public function out($text) + { + return iconv("cp1251", "UTF-8", $text); + } + + //Добавляем данные в базу данных + public function add($type, $value, $money) + { + mysql_query('INSERT INTO `' . $this->c['db_name'] . '` (`time`,`type`,`ip`,`value`,`money`,`project`) VALUES ("' . time() . '","' . mysql_real_escape_string($type) . '","' . $_SERVER['HTTP_X_REAL_IP'] . '","' . mysql_real_escape_string($value) . '","' . mysql_real_escape_string($money) . '","' . mysql_real_escape_string($this->id) . '")'); + } + + //Подключаемся к базе данных + public function connect_db() + { + $db = mysql_connect($this->c['db_host'], $this->c['db_user'], $this->c['db_pass']) or die('Ошибка подключения к MySQL серверу!'); + mysql_select_db($this->c['db_base'], $db) or die('Ошибка подключения к базе данных!'); + mysql_query('SET NAMES cp1251'); + } + + public function output($a, $v = null) + { + $r = ''; + $i = 0; + while ($i < count($a)) { + $rn = ''; + $tb = ''; + if ($v != null) { + $rn = "\r\n"; + $tb = " "; + } + $r .= $rn . '<' . $a[$i][0] . '>'; + if (!is_array($a[$i][1])) { + $rn = ''; + $tb = ''; + $r .= $rn . $tb . ($this->out($a[$i][1])); + } else { + if ($i > 0) { + $r .= $rn; + } + $r .= $tb . ($this->output($a[$i][1], 1)); + } + $r .= $rn . ''; + $i++; + } + return $r; + } + + //Генерируем XML-файл + public function backInformation() + { + header('Content-Type: text/html/force-download'); + echo ''; + echo $this->output($this->BACK, 1); + } + + //Проверка существования персонажа + public function test_accaunt($nick) + { + $r = false; + $nick = mysql_fetch_array(mysql_query('SELECT `id` FROM `bank` WHERE `id` = "' . mysql_real_escape_string($nick) . '" LIMIT 1')); + if (isset($nick['id'])) { + $r = true; + } + return $r; + } + + //Получает счет в банке по логину + public function getBank($nick) + { + $nick = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `login` = "' . mysql_real_escape_string($nick) . '" LIMIT 1')); + $nick = mysql_fetch_array(mysql_query('SELECT `id` FROM `bank` WHERE `uid` = "' . mysql_real_escape_string($nick['id']) . '" LIMIT 1')); + return $nick['id']; + } + + //Поиск логина + public function bank_user($nick) + { + $nick = mysql_fetch_array(mysql_query('SELECT `id`,`uid FROM `bank` WHERE `id` = "' . mysql_real_escape_string($nick) . '" LIMIT 1')); + $nick = mysql_fetch_array(mysql_query('SELECT `id`,`login` FROM `users` WHERE `login` = "' . mysql_real_escape_string($nick['uid']) . '" LIMIT 1')); + return $nick['login']; + } + + //Начинаем обработку запросов + public function start_session() + { + + $ip = ''; + $ip = $_SERVER['HTTP_X_REAL_IP']; + + //Подключаемся к БД + $this->connect_db(); + + //Получаем данные запроса + //$xml = file_get_contents('php://input'); + + //Парсинг XML запроса + if (function_exists('simplexml_load_string')) { + $xml = simplexml_load_string($xml); + } else { + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Не удалось произвести обработку запроса']]]]; + die($this->backInformation()); + } + + $this->id = $xml->projectid; + + if (!in_array($ip, $this->c['ip_list'])) { + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Нет доступа с данного IP']]]]; + die($this->backInformation()); + } + + //Обработка запросов + if ($xml->method == 'check_balance') { + //MD5(method+MD5(gdKey)) + + $sign = md5($xml->method . md5($this->c['key'])); + + if ($sign == $xml->sign) { + //Баланс дилера + $balance = 1000000; + $this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Баланс дилера: ' . $balance], ['balance', $balance]]]]; + $this->add('4', 'check:' . $xml->nick . ':1' . $r, 0); + } + + } elseif ($xml->method == 'check') { + /* + nick - логин персонажа MD5(nick+method+MD5(gdKey)) */ + + $sign = md5($xml->nick . $xml->method . md5($this->c['key'])); + + if ($sign == $xml->sign) { + $xml->nick = $this->in($xml->nick); + if ($this->test_accaunt($xml->nick) == true) { + //Персонаж найден и зачисляем ему игровую валюту + $this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Банковский счет найден']]]]; + $this->add('3', 'check:' . $xml->nick . ':1' . $r, 0); + } else { + //Персонаж не найден + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Платеж не обработан. Банковский счет не найден.']]]]; + $this->add('-1', 'Персонаж не найден:pay:' . $xml->nick . ':0', 0); + } + } + } elseif ($xml->method == 'pay') { + /* Проводим платеж + nick - логин аккаунта , projectid - id проекта , sign , amount - деньги , payid - id платежа */ + + $sign = md5($xml->nick . $xml->projectid . $xml->amount . $xml->payid . $xml->method . md5($this->c['key'])); + + if ($sign == $xml->sign) { + $xml->nick = $this->in($xml->nick); + if ($this->test_accaunt($xml->nick)) { + //Персонаж найден и зачисляем ему игровую валюту + $bank = $this->test_accaunt($xml->nick); + if ($bank > 0) { + mysql_query('UPDATE `bank` SET `money2` = `money2` + ' . mysql_real_escape_string($xml->amount) . ' WHERE `id` = "' . mysql_real_escape_string($xml->nick) . '" LIMIT 1'); + $this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Платеж прошел успешно'], ['id', $this->c['id']]]]]; + $this->add('2', 'pay:' . $xml->nick . ':' . $xml->projectid . ':' . $xml->sign . ':' . $xml->amount . ':' . $xml->payid . ':' . $bank['id'], $xml->amount); + + $user = mysql_fetch_array(mysql_query('SELECT `id`,`uid` FROM `bank` WHERE `id` = "' . mysql_real_escape_string($xml->nick) . '" LIMIT 1')); + $user = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`city`,`sex`,`room` FROM `users` WHERE `id` = "' . mysql_real_escape_string($user['uid']) . '" LIMIT 1')); + + mysql_query('UPDATE `users` SET `catch` = `catch` + ' . mysql_real_escape_string(floor($xml->amount)) . ' WHERE `id` = "' . mysql_real_escape_string($xml->nick) . '" LIMIT 1'); + + $r = '' . date('d.m.Y H:i') . ' Алхимик Enchanter / Автоматическая оплата сообщает: '; + + if ($user['sex'] == 1) { + $r .= 'Уважаемая'; + } else { + $r .= 'Уважаемый'; + } + + $r .= ' ' . $user['login'] . ', на Ваш банковский счет №' . $bank . ' зачислено ' . $xml->amount . ' Ekr. Благодарим Вас за покупку!'; + + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $user['city'] . "','" . $user['room'] . "','','" . $user['login'] . "','" . $r . "','-1','5','0')"); + + } else { + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'У пользователя отсутствует банк'], ['id', $this->c['id']]]]]; + $this->add('-1', 'У персонажа отсутствует банк:pay:' . $xml->nick . ':' . $xml->projectid . ':' . $xml->sign . ':' . $xml->amount . ':' . $xml->payid . ':' . $bank['id'], $xml->amount); + } + } else { + //Персонаж не найден + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Платеж не обработан. Персонаж не найден.']]]]; + $this->add('-1', 'Персонаж не найден:pay:' . $xml->nick . ':0', 0); + } + } else { + //Ошибка сигнатуры + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Ошибка сигнатуры']]]]; + $this->add('-1', 'Ошибка сигнатуры:pay:' . $xml->nick . ':0', 0); + } + } elseif ($xml->method == 'check_login') { + /* Проверка аккаунта + nick - логин аккаунта , projectid - id проекта , sign */ + $sign = md5($xml->nick . $xml->method . md5($this->c['key'])); + + if ($sign == $xml->sign) { + $xml->nick = $this->in($xml->nick); + if ($this->test_accaunt($xml->nick)) { + //Персонаж найден + $this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Счет найден'], ['addinfo', $this->bank_user($xml->nick)]]]]; + $this->add('1', 'check_login:' . $xml->nick . ':1' . $r, 0); + } else { + //Персонаж не найден + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Счет не найден']]]]; + $this->add('-1', 'Персонаж не найден:check_login:' . $xml->nick . ':0', 0); + } + } else { + //Ошибка сигнатуры + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Ошибка сигнатуры']]]]; + $this->add('-1', 'Ошибка сигнатуры:pay:' . $xml->nick . ':0', 0); + } + } else { + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Неизвестный тип запроса']]]]; + $this->add('-1', 'Неизвестный тип запроса:error_method:gamedealer', 0); + } + + //Возвращаем результат + $this->backInformation(); + } +} + +$pay = new GameDealer; +$pay->start_session(); diff --git a/_incl_data/class/Insallah/Achievements.php b/_incl_data/class/Insallah/Achievements.php index 9fdbd3eb..ac26441f 100644 --- a/_incl_data/class/Insallah/Achievements.php +++ b/_incl_data/class/Insallah/Achievements.php @@ -93,7 +93,7 @@ class Achievements ], ]; - public function __construct(\user $user) + public function __construct(\User $user) { $this->user = $user; $this->info = Db::getRow('select * from users_achiv where id = ?', [$user->info['id']]); diff --git a/_incl_data/class/Insallah/Config.php b/_incl_data/class/Insallah/Config.php index ab123b1b..02d1d4f9 100644 --- a/_incl_data/class/Insallah/Config.php +++ b/_incl_data/class/Insallah/Config.php @@ -10,7 +10,6 @@ require_once 'Tournament/Tournament.php'; require_once 'Tournament/TournamentModel.php'; require_once 'Achievements.php'; - //Вместо крона для турнира. if (Tournament::IS_ENABLED) { (new Tournament())->startAllBattles(); diff --git a/_incl_data/class/Insallah/Core/Db.php b/_incl_data/class/Insallah/Core/Db.php index fcdcc9fe..f4b24e48 100644 --- a/_incl_data/class/Insallah/Core/Db.php +++ b/_incl_data/class/Insallah/Core/Db.php @@ -3,6 +3,7 @@ namespace Insallah; use Exception; +use http\Message; use PDO; use PDOException; use PDOStatement; @@ -35,17 +36,18 @@ class Db * DB constructor. * @throws Exception */ - public function __construct(){ - if (self::$instance === null){ + public function __construct() + { + if (self::$instance === null) { try { self::$db = new PDO( - 'mysql:host='.self::DB_HOST.';dbname='.self::DB_NAME, + 'mysql:host=' . self::DB_HOST . ';dbname=' . self::DB_PREFIX . self::DB_NAME, self::DB_USER, self::DB_PASSWORD, - $options = [ + [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES ".self::CHARSET + PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES " . self::CHARSET, ] ); } catch (PDOException $e) { @@ -59,7 +61,8 @@ class Db * @param $stmt * @return PDOStatement */ - public static function query($stmt) { + public static function query($stmt) + { return self::$db->query($stmt); } @@ -67,7 +70,8 @@ class Db * @param $stmt * @return PDOStatement */ - public static function prepare($stmt) { + public static function prepare($stmt) + { return self::$db->prepare($stmt); } @@ -75,25 +79,28 @@ class Db * @param $query * @return int */ - static public function exec($query) { + static public function exec($query) + { return self::$db->exec($query); } /** * @return string */ - static public function lastInsertId() { + static public function lastInsertId() + { return self::$db->lastInsertId(); } /** - * @param $query + * @param $query * @param array $args * @return PDOStatement * @throws Exception */ - public static function run($query, $args = []) { - try{ + public static function run($query, $args = []) + { + try { if (!$args) { return self::query($query); } @@ -106,29 +113,35 @@ class Db } /** - * @param $query + * @param $query * @param array $args * @return mixed + * @throws Exception */ - public static function getRow($query, $args = []) { + public static function getRow($query, $args = []) + { return self::run($query, $args)->fetch(); } /** - * @param $query + * @param $query * @param array $args * @return array + * @throws Exception */ - public static function getRows($query, $args = []) { + public static function getRows($query, $args = []) + { return self::run($query, $args)->fetchAll(); } /** - * @param $query + * @param $query * @param array $args * @return mixed + * @throws Exception */ - public static function getValue($query, $args = []) { + public static function getValue($query, $args = []) + { $result = self::getRow($query, $args); if (!empty($result)) { $result = array_shift($result); @@ -137,14 +150,19 @@ class Db } /** - * @param $query + * @param $query * @param array $args * @return array + * @throws Exception */ - public static function getColumn($query, $args = []) { + public static function getColumn($query, $args = []) + { return self::run($query, $args)->fetchAll(PDO::FETCH_COLUMN); } + /** + * @throws Exception + */ public static function sql($query, $args = []) { self::run($query, $args); diff --git a/_incl_data/class/__magic.php b/_incl_data/class/Magic.php similarity index 99% rename from _incl_data/class/__magic.php rename to _incl_data/class/Magic.php index a4c869fd..17a69186 100644 --- a/_incl_data/class/__magic.php +++ b/_incl_data/class/Magic.php @@ -1,11 +1,4 @@ info['id'] . '" AND `iu`.`inShop`="0" AND `iu`.`delete`="0" AND `iu`.`id` = "' . mysql_real_escape_string((int)$id) . '" LIMIT 1')); $bs_is = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "' . $u->info['inTurnir'] . '" LIMIT 1')); if (isset($itm['id'])) { - if ($itm['group'] == 1) { - //Группа предметов - if ($u->itemsX($itm['id']) > 1) { - //вытаскиваем предмет РёР· РіСЂСѓРїРїС‹ - $u->unstack($itm['id'], 1); - } + //Группа предметов + if ($itm['group'] == 1 && $u->itemsX($itm['id']) > 1) { + //вытаскиваем предмет РёР· РіСЂСѓРїРїС‹ + $u->unstack($itm['id'], 1); } $st = $u->lookStats($itm['data']); if (isset($st['tr_lvl']) && $st['tr_lvl'] > $u->info['level']) { $u->error = 'Р’С‹ слишком малы чтобы использовать данный предмет '; - $err = 'Р’С‹ слишком малы чтобы использовать данный предмет'; - return $err; + return 'Р’С‹ слишком малы чтобы использовать данный предмет'; } if ($itm['magic_chance'] > 0 && $itm['magic_chance'] < 100) { @@ -58,14 +55,14 @@ class Magic $itm['magic_chance'] = 99; } } - if (isset($bs_is['id'])) { - if (in_array($itm['item_id'], $e_magic) || in_array($itm['item_id'], $c_magic)) { - $itm['magic_chance'] += $bs_is['users']; - if ($itm['magic_chance'] >= 99) { - $itm['magic_chance'] = 99; + if (isset($bs_is['id']) && (in_array($itm['item_id'], $this->e_magic) || in_array( + $itm['item_id'], $this->c_magic + ))) { + $itm['magic_chance'] += $bs_is['users']; + if ($itm['magic_chance'] >= 99) { + $itm['magic_chance'] = 99; + } } - } - } if ($itm['iznosNOW'] >= $itm['iznosMAX']) { $u->error = 'РќРµ осталось зарядов...'; @@ -1993,7 +1990,3 @@ class Magic return $good; } } - -$magic = new Magic; - -?> \ No newline at end of file diff --git a/_incl_data/class/MobileDetect.php b/_incl_data/class/MobileDetect.php new file mode 100644 index 00000000..43559ebe --- /dev/null +++ b/_incl_data/class/MobileDetect.php @@ -0,0 +1,1004 @@ +, Nick Ilyin + * Original author: Victor Stanciu + * + * @license Code and contributions have 'MIT License' + * More details: https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt + * + * @link Homepage: http://mobiledetect.net + * GitHub Repo: https://github.com/serbanghita/Mobile-Detect + * Google Code: http://code.google.com/p/php-mobile-detect/ + * README: https://github.com/serbanghita/Mobile-Detect/blob/master/README.md + * HOWTO: https://github.com/serbanghita/Mobile-Detect/wiki/Code-examples + * + * @version 2.8.2 + */ + +class MobileDetect +{ + /** + * Mobile detection type. + * + * @deprecated since version 2.6.9 + */ + const DETECTION_TYPE_MOBILE = 'mobile'; + + /** + * Extended detection type. + * + * @deprecated since version 2.6.9 + */ + const DETECTION_TYPE_EXTENDED = 'extended'; + + /** + * A frequently used regular expression to extract version #s. + * + * @deprecated since version 2.6.9 + */ + const VER = '([\w._\+]+)'; + + /** + * Top-level device. + */ + const MOBILE_GRADE_A = 'A'; + + /** + * Mid-level device. + */ + const MOBILE_GRADE_B = 'B'; + + /** + * Low-level device. + */ + const MOBILE_GRADE_C = 'C'; + + /** + * Stores the version number of the current release. + */ + const VERSION = '2.8.2'; + + /** + * A type for the version() method indicating a string return value. + */ + const VERSION_TYPE_STRING = 'text'; + + /** + * A type for the version() method indicating a float return value. + */ + const VERSION_TYPE_FLOAT = 'float'; + + /** + * The User-Agent HTTP header is stored in here. + * @var string + */ + protected $userAgent = null; + + /** + * HTTP headers in the PHP-flavor. So HTTP_USER_AGENT and SERVER_SOFTWARE. + * @var array + */ + protected $httpHeaders = []; + + /** + * The detection type, using self::DETECTION_TYPE_MOBILE or self::DETECTION_TYPE_EXTENDED. + * + * @deprecated since version 2.6.9 + * + * @var string + */ + protected $detectionType = self::DETECTION_TYPE_MOBILE; + + /** + * HTTP headers that trigger the 'isMobile' detection + * to be true. + * + * @var array + */ + protected static $mobileHeaders = [ + + 'HTTP_ACCEPT' => ['matches' => [// Opera Mini; @reference: http://dev.opera.com/articles/view/opera-binary-markup-language/ + 'application/x-obml2d', // BlackBerry devices. + 'application/vnd.rim.html', 'text/vnd.wap.wml', 'application/vnd.wap.xhtml+xml']], 'HTTP_X_WAP_PROFILE' => null, 'HTTP_X_WAP_CLIENTID' => null, 'HTTP_WAP_CONNECTION' => null, 'HTTP_PROFILE' => null, // Reported by Opera on Nokia devices (eg. C3). + 'HTTP_X_OPERAMINI_PHONE_UA' => null, 'HTTP_X_NOKIA_GATEWAY_ID' => null, 'HTTP_X_ORANGE_ID' => null, 'HTTP_X_VODAFONE_3GPDPCONTEXT' => null, 'HTTP_X_HUAWEI_USERID' => null, // Reported by Windows Smartphones. + 'HTTP_UA_OS' => null, // Reported by Verizon, Vodafone proxy system. + 'HTTP_X_MOBILE_GATEWAY' => null, // Seend this on HTC Sensation. @ref: SensationXE_Beats_Z715e. + 'HTTP_X_ATT_DEVICEID' => null, // Seen this on a HTC. + 'HTTP_UA_CPU' => ['matches' => ['ARM']],]; + + /** + * List of mobile devices (phones). + * + * @var array + */ + protected static $phoneDevices = ['iPhone' => '\biPhone.*Mobile|\biPod', // |\biTunes + 'BlackBerry' => 'BlackBerry|\bBB10\b|rim[0-9]+', 'HTC' => 'HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\bEVO\b|T-Mobile G1|Z520m', 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile', // @todo: Is 'Dell Streak' a tablet or a phone? ;) + 'Dell' => 'Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\b001DL\b|\b101DL\b|\bGS01\b', 'Motorola' => 'Motorola|DROIDX|DROID BIONIC|\bDroid\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925', 'Samsung' => 'Samsung|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E', 'LG' => '\bLG\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802)', 'Sony' => 'SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i', 'Asus' => 'Asus.*Galaxy|PadFone.*Mobile', // @ref: http://www.micromaxinfo.com/mobiles/smartphones + // Added because the codes might conflict with Acer Tablets. + 'Micromax' => 'Micromax.*\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\b', 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ; @todo - complete the regex. + 'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature', // Just for fun ;) + // @ref: http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA (PANTECH) + // Most of the VEGA devices are legacy. PANTECH seem to be newer devices based on Android. + 'Pantech' => 'PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790', // @ref: http://www.fly-phone.com/devices/smartphones/ ; Included only smartphones. + 'Fly' => 'IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250', 'iMobile' => 'i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)', // Added simvalley mobile just for fun. They have some interesting devices. + // @ref: http://www.simvalley.fr/telephonie---gps-_22_telephonie-mobile_telephones_.html + 'SimValley' => '\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\b', // @Tapatalk is a mobile app; @ref: http://support.tapatalk.com/threads/smf-2-0-2-os-and-browser-detection-plugin-and-tapatalk.15565/#post-79039 + 'GenericPhone' => 'Tapatalk|PDA;|SAGEM|\bmmp\b|pocket|\bpsp\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\bwap\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser']; + + /** + * List of tablet devices. + * + * @var array + */ + protected static $tabletDevices = ['iPad' => 'iPad|iPad.*Mobile', // @todo: check for mobile friendly emails topic. + 'NexusTablet' => 'Android.*Nexus[\s]+(7|10)|^.*Android.*Nexus(?:(?!Mobile).)*$', 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-I9205|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705C|SM-T535|SM-T331', // SCH-P709|SCH-P729|SM-T2558 - Samsung Mega - treat them like a regular phone. + // @reference: http://www.labnol.org/software/kindle-user-agent-string/20378/ + 'Kindle' => 'Kindle|Silk.*Accelerated|Android.*\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE)\b', // Only the Surface tablets with Windows RT are considered mobile. + // @ref: http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx + 'SurfaceTablet' => 'Windows NT [0-9.]+; ARM;', // @ref: http://shopping1.hp.com/is-bin/INTERSHOP.enfinity/WFS/WW-USSMBPublicStore-Site/en_US/-/USD/ViewStandardCatalog-Browse?CatalogCategoryID=JfIQ7EN5lqMAAAEyDcJUDwMT + 'HPTablet' => 'HP Slate 7|HP ElitePad 900|hp-tablet|EliteBook.*Touch', // @note: watch out for PadFone, see #132 + 'AsusTablet' => '^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\bK00F\b|TX201LA', 'BlackBerryTablet' => 'PlayBook|RIM Tablet', 'HTCtablet' => 'HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200', 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617', 'NookTablet' => 'Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2', // @ref: http://www.acer.ro/ac/ro/RO/content/drivers + // @ref: http://www.packardbell.co.uk/pb/en/GB/content/download (Packard Bell is part of Acer) + // @ref: http://us.acer.com/ac/en/US/content/group/tablets + // @note: Can conflict with Micromax and Motorola phones codes. + 'AcerTablet' => 'Android.*; \b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810)\b|W3-810|\bA3-A10\b', // @ref: http://eu.computers.toshiba-europe.com/innovation/family/Tablets/1098744/banner_id/tablet_footerlink/ + // @ref: http://us.toshiba.com/tablets/tablet-finder + // @ref: http://www.toshiba.co.jp/regza/tablet/ + 'ToshibaTablet' => 'Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO', // @ref: http://www.nttdocomo.co.jp/english/service/developer/smart_phone/technical_info/spec/index.html + 'LGTablet' => '\bL-06C|LG-V900|LG-V500|LG-V909\b', 'FujitsuTablet' => 'Android.*\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\b', // Prestigio Tablets http://www.prestigio.com/support + 'PrestigioTablet' => 'PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD', // @ref: http://support.lenovo.com/en_GB/downloads/default.page?# + 'LenovoTablet' => 'IdeaTab|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A1000|A2107|A2109|A1107|B6000|B8000|B8080-F)', // @ref: http://www.yarvik.com/en/matrix/tablets/ + 'YarvikTablet' => 'Android.*\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\b', 'MedionTablet' => 'Android.*\bOYO\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB', 'ArnovaTablet' => 'AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT', // http://www.intenso.de/kategorie_en.php?kategorie=33 + // @todo: http://www.nbhkdz.com/read/b8e64202f92a2df129126bff.html - investigate + 'IntensoTablet' => 'INM8002KP|INM1010FP|INM805ND|Intenso Tab', // IRU.ru Tablets http://www.iru.ru/catalog/soho/planetable/ + 'IRUTablet' => 'M702pro', 'MegafonTablet' => 'MegaFon V9|\bZTE V9\b|Android.*\bMT7A\b', // @ref: http://www.e-boda.ro/tablete-pc.html + 'EbodaTablet' => 'E-Boda (Supreme|Impresspeed|Izzycomm|Essential)', // @ref: http://www.allview.ro/produse/droseries/lista-tablete-pc/ + 'AllViewTablet' => 'Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)', // @reference: http://wiki.archosfans.com/index.php?title=Main_Page + 'ArchosTablet' => '\b(101G9|80G9|A101IT)\b|Qilive 97R|ARCHOS 101G10', // @ref: http://www.ainol.com/plugin.php?identifier=ainol&module=product + 'AinolTablet' => 'NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark', // @todo: inspect http://esupport.sony.com/US/p/select-system.pl?DIRECTOR=DRIVER + // @ref: Readers http://www.atsuhiro-me.net/ebook/sony-reader/sony-reader-web-browser + // @ref: http://www.sony.jp/support/tablet/ + 'SonyTablet' => 'Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551', // @ref: db + http://www.cube-tablet.com/buy-products.html + 'CubeTablet' => 'Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT', // @ref: http://www.cobyusa.com/?p=pcat&pcat_id=3001 + 'CobyTablet' => 'MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010', // @ref: http://www.match.net.cn/products.asp + 'MIDTablet' => 'M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733', // @ref: http://pdadb.net/index.php?m=pdalist&list=SMiT (NoName Chinese Tablets) + // @ref: http://www.imp3.net/14/show.php?itemid=20454 + 'SMiTTablet' => 'Android.*(\bMID\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)', // @ref: http://www.rock-chips.com/index.php?do=prod&pid=2 + 'RockChipTablet' => 'Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A', // @ref: http://www.fly-phone.com/devices/tablets/ ; http://www.fly-phone.com/service/ + 'FlyTablet' => 'IQ310|Fly Vision', // @ref: http://www.bqreaders.com/gb/tablets-prices-sale.html + 'bqTablet' => 'bq.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant)|Maxwell.*Lite|Maxwell.*Plus', // @ref: http://www.huaweidevice.com/worldwide/productFamily.do?method=index&directoryId=5011&treeId=3290 + // @ref: http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index&directoryId=3372&treeId=0&tb=1&type=software (including legacy tablets) + 'HuaweiTablet' => 'MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim', // Nec or Medias Tab + 'NecTablet' => '\bN-06D|\bN-08D', // Pantech Tablets: http://www.pantechusa.com/phones/ + 'PantechTablet' => 'Pantech.*P4100', // Broncho Tablets: http://www.broncho.cn/ (hard to find) + 'BronchoTablet' => 'Broncho.*(N701|N708|N802|a710)', // @ref: http://versusuk.com/support.html + 'VersusTablet' => 'TOUCHPAD.*[78910]|\bTOUCHTAB\b', // @ref: http://www.zync.in/index.php/our-products/tablet-phablets + 'ZyncTablet' => 'z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900', // @ref: http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/ + 'PositivoTablet' => 'TB07STA|TB10STA|TB07FTA|TB10FTA', // @ref: https://www.nabitablet.com/ + 'NabiTablet' => 'Android.*\bNabi', 'KoboTablet' => 'Kobo Touch|\bK080\b|\bVox\b Build|\bArc\b Build', // French Danew Tablets http://www.danew.com/produits-tablette.php + 'DanewTablet' => 'DSlide.*\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\b', // Texet Tablets and Readers http://www.texet.ru/tablet/ + 'TexetTablet' => 'NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE', // @note: Avoid detecting 'PLAYSTATION 3' as mobile. + 'PlaystationTablet' => 'Playstation.*(Portable|Vita)', // @ref: http://www.trekstor.de/surftabs.html + 'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2', // @ref: http://www.pyleaudio.com/Products.aspx?%2fproducts%2fPersonal-Electronics%2fTablets + 'PyleAudioTablet' => '\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\b', // @ref: http://www.advandigital.com/index.php?link=content-product&jns=JP001 + // @Note: because of the short codenames we have to include whitespaces to reduce the possible conflicts. + 'AdvanTablet' => 'Android.* \b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\b ', // @ref: http://www.danytech.com/category/tablet-pc + 'DanyTechTablet' => 'Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1', // @ref: http://www.galapad.net/product.html + 'GalapadTablet' => 'Android.*\bG1\b', // @ref: http://www.micromaxinfo.com/tablet/funbook + 'MicromaxTablet' => 'Funbook|Micromax.*\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\b', // http://www.karbonnmobiles.com/products_tablet.php + 'KarbonnTablet' => 'Android.*\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\b', // @ref: http://www.myallfine.com/Products.asp + 'AllFineTablet' => 'Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide', // @ref: http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr= + 'PROSCANTablet' => '\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\b', // @ref: http://www.yonesnav.com/products/products.php + 'YONESTablet' => 'BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026', // @ref: http://www.cjshowroom.com/eproducts.aspx?classcode=004001001 + // China manufacturer makes tablets for different small brands (eg. http://www.zeepad.net/index.html) + 'ChangJiaTablet' => 'TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503', // @ref: http://www.gloryunion.cn/products.asp + // @ref: http://www.allwinnertech.com/en/apply/mobile.html + // @ref: http://www.ptcl.com.pk/pd_content.php?pd_id=284 (EVOTAB) + // @todo: Softwiner tablets? + // aka. Cute or Cool tablets. Not sure yet, must research to avoid collisions. + 'GUTablet' => 'TX-A1301|TX-M9002|Q702|kf026', // A12R|D75A|D77|D79|R83|A95|A106C|R15|A75|A76|D71|D72|R71|R73|R77|D82|R85|D92|A97|D92|R91|A10F|A77F|W71F|A78F|W78F|W81F|A97F|W91F|W97F|R16G|C72|C73E|K72|K73|R96G + // @ref: http://www.pointofview-online.com/showroom.php?shop_mode=product_listing&category_id=118 + 'PointOfViewTablet' => 'TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10', // @ref: http://www.overmax.pl/pl/katalog-produktow,p8/tablety,c14/ + // @todo: add more tests. + 'OvermaxTablet' => 'OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)', // @ref: http://hclmetablet.com/India/index.php + 'HCLTablet' => 'HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync', // @ref: http://www.edigital.hu/Tablet_es_e-book_olvaso/Tablet-c18385.html + 'DPSTablet' => 'DPS Dream 9|DPS Dual 7', // @ref: http://www.visture.com/index.asp + 'VistureTablet' => 'V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10', // @ref: http://www.mijncresta.nl/tablet + 'CrestaTablet' => 'CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989', // MediaTek - http://www.mediatek.com/_en/01_products/02_proSys.php?cata_sn=1&cata1_sn=1&cata2_sn=309 + 'MediatekTablet' => '\bMT8125|MT8389|MT8135|MT8377\b', // Concorde tab + 'ConcordeTablet' => 'Concorde([ ]+)?Tab|ConCorde ReadMan', // GoClever Tablets - http://www.goclever.com/uk/products,c1/tablet,c5/ + 'GoCleverTablet' => 'GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042', // Modecom Tablets - http://www.modecom.eu/tablets/portal/ + 'ModecomTablet' => 'FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003', // Vonino Tablets - http://www.vonino.eu/tablets + 'VoninoTablet' => '\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\bQ8\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\b', // ECS Tablets - http://www.ecs.com.tw/ECSWebSite/Product/Product_Tablet_List.aspx?CategoryID=14&MenuID=107&childid=M_107&LanID=0 + 'ECSTablet' => 'V07OT2|TM105A|S10OT1|TR10CS1', // Storex Tablets - http://storex.fr/espace_client/support.html + // @note: no need to add all the tablet codes since they are guided by the first regex. + 'StorexTablet' => 'eZee[_\']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab', // Generic Vodafone tablets. + 'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10', // French tablets - Essentiel B http://www.boulanger.fr/tablette_tactile_e-book/tablette_tactile_essentiel_b/cl_68908.htm?multiChoiceToDelete=brand&mc_brand=essentielb + // Aka: http://www.essentielb.fr/ + 'EssentielBTablet' => 'Smart[ \']?TAB[ ]+?[0-9]+|Family[ \']?TAB2', // Ross & Moor - http://ross-moor.ru/ + 'RossMoorTablet' => 'RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711', // i-mobile http://product.i-mobilephone.com/Mobile_Device + 'iMobileTablet' => 'i-mobile i-note', // @ref: http://www.tolino.de/de/vergleichen/ + 'TolinoTablet' => 'tolino tab [0-9.]+|tolino shine', // AudioSonic - a Kmart brand + // http://www.kmart.com.au/webapp/wcs/stores/servlet/Search?langId=-1&storeId=10701&catalogId=10001&categoryId=193001&pageSize=72¤tPage=1&searchCategory=193001%2b4294965664&sortBy=p_MaxPrice%7c1 + 'AudioSonicTablet' => '\bC-22Q|T7-QC|T-17B|T-17P\b', // AMPE Tablets - http://www.ampe.com.my/product-category/tablets/ + // @todo: add them gradually to avoid conflicts. + 'AMPETablet' => 'Android.* A78 ', // Skk Mobile - http://skkmobile.com.ph/product_tablets.php + 'SkkTablet' => 'Android.* (SKYPAD|PHOENIX|CYCLOPS)', // Tecno Mobile (only tablet) - http://www.tecno-mobile.com/index.php/product?filterby=smart&list_order=all&page=1 + 'TecnoTablet' => 'TECNO P9', // JXD (consoles & tablets) - http://jxd.hk/products.asp?selectclassid=009008&clsid=3 + 'JXDTablet' => 'Android.*\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\b', // i-Joy tablets - http://www.i-joy.es/en/cat/products/tablets/ + 'iJoyTablet' => 'Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)', // @ref: http://www.tesco.com/direct/hudl/ + 'Hudl' => 'Hudl HT7S3', // @ref: http://www.telstra.com.au/home-phone/thub-2/ + 'TelstraTablet' => 'T-Hub2', 'GenericTablet' => 'Android.*\b97D\b|Tablet(?!.*PC)|ViewPad7|BNTV250A|MID-WCDMA|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b|rk30sdk|\bEVOTAB\b|M758A|ET904|ALUMIUM10|Smartfren Tab',]; + + /** + * List of mobile Operating Systems. + * + * @var array + */ + protected static $operatingSystems = ['AndroidOS' => 'Android', 'BlackBerryOS' => 'blackberry|\bBB10\b|rim tablet os', 'PalmOS' => 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino', 'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b', // @reference: http://en.wikipedia.org/wiki/Windows_Mobile + 'WindowsMobileOS' => 'Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;', // @reference: http://en.wikipedia.org/wiki/Windows_Phone + // http://wifeng.cn/?r=blog&a=view&id=106 + // http://nicksnettravels.builttoroam.com/post/2011/01/10/Bogus-Windows-Phone-7-User-Agent-String.aspx + 'WindowsPhoneOS' => 'Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7', 'iOS' => '\biPhone.*Mobile|\biPod|\biPad', // http://en.wikipedia.org/wiki/MeeGo + // @todo: research MeeGo in UAs + 'MeeGoOS' => 'MeeGo', // http://en.wikipedia.org/wiki/Maemo + // @todo: research Maemo in UAs + 'MaemoOS' => 'Maemo', 'JavaOS' => 'J2ME/|\bMIDP\b|\bCLDC\b', // '|Java/' produces bug #135 + 'webOS' => 'webOS|hpwOS', 'badaOS' => '\bBada\b', 'BREWOS' => 'BREW',]; + + /** + * List of mobile User Agents. + * + * @var array + */ + protected static $browsers = [// @reference: https://developers.google.com/chrome/mobile/docs/user-agent + 'Chrome' => '\bCrMo\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?', 'Dolfin' => '\bDolfin\b', 'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+|Coast/[0-9.]+', 'Skyfire' => 'Skyfire', 'IE' => 'IEMobile|MSIEMobile', // |Trident/[.0-9]+ + 'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile', 'Bolt' => 'bolt', 'TeaShark' => 'teashark', 'Blazer' => 'Blazer', // @reference: http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3 + 'Safari' => 'Version.*Mobile.*Safari|Safari.*Mobile', // @ref: http://en.wikipedia.org/wiki/Midori_(web_browser) + //'Midori' => 'midori', + 'Tizen' => 'Tizen', 'UCBrowser' => 'UC.*Browser|UCWEB', // @ref: https://github.com/serbanghita/Mobile-Detect/issues/7 + 'DiigoBrowser' => 'DiigoBrowser', // http://www.puffinbrowser.com/index.php + 'Puffin' => 'Puffin', // @ref: http://mercury-browser.com/index.html + 'Mercury' => '\bMercury\b', // @reference: http://en.wikipedia.org/wiki/Minimo + // http://en.wikipedia.org/wiki/Vision_Mobile_Browser + 'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger']; + + /** + * Utilities. + * + * @var array + */ + protected static $utilities = [// Experimental. When a mobile device wants to switch to 'Desktop Mode'. + // @ref: http://scottcate.com/technology/windows-phone-8-ie10-desktop-or-mobile/ + // @ref: https://github.com/serbanghita/Mobile-Detect/issues/57#issuecomment-15024011 + 'DesktopMode' => 'WPDesktop', 'TV' => 'SonyDTV|HbbTV', // experimental + 'WebKit' => '(webkit)[ /]([\w.]+)', 'Bot' => 'Googlebot|DoCoMo|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|facebookexternalhit', 'MobileBot' => 'Googlebot-Mobile|DoCoMo|YahooSeeker/M1A1-R2D2', // @todo: Include JXD consoles. + 'Console' => '\b(Nintendo|Nintendo WiiU|PLAYSTATION|Xbox)\b', 'Watch' => 'SM-V700',]; + + /** + * All possible HTTP headers that represent the + * User-Agent string. + * + * @var array + */ + protected static $uaHttpHeaders = [// The default User-Agent string. + 'HTTP_USER_AGENT', // Header can occur on devices using Opera Mini. + 'HTTP_X_OPERAMINI_PHONE_UA', // Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/ + 'HTTP_X_DEVICE_USER_AGENT', 'HTTP_X_ORIGINAL_USER_AGENT', 'HTTP_X_SKYFIRE_PHONE', 'HTTP_X_BOLT_PHONE_UA', 'HTTP_DEVICE_STOCK_UA', 'HTTP_X_UCBROWSER_DEVICE_UA']; + + /** + * The individual segments that could exist in a User-Agent string. VER refers to the regular + * expression defined in the constant self::VER. + * + * @var array + */ + protected static $properties = [ + + // Build + 'Mobile' => 'Mobile/[VER]', 'Build' => 'Build/[VER]', 'Version' => 'Version/[VER]', 'VendorID' => 'VendorID/[VER]', + + // Devices + 'iPad' => 'iPad.*CPU[a-z ]+[VER]', 'iPhone' => 'iPhone.*CPU[a-z ]+[VER]', 'iPod' => 'iPod.*CPU[a-z ]+[VER]', //'BlackBerry' => array('BlackBerry[VER]', 'BlackBerry [VER];'), + 'Kindle' => 'Kindle/[VER]', + + // Browser + 'Chrome' => ['Chrome/[VER]', 'CriOS/[VER]', 'CrMo/[VER]'], 'Coast' => ['Coast/[VER]'], 'Dolfin' => 'Dolfin/[VER]', // @reference: https://developer.mozilla.org/en-US/docs/User_Agent_Strings_Reference + 'Firefox' => 'Firefox/[VER]', 'Fennec' => 'Fennec/[VER]', // @reference: http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx + 'IE' => ['IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];'], // http://en.wikipedia.org/wiki/NetFront + 'NetFront' => 'NetFront/[VER]', 'NokiaBrowser' => 'NokiaBrowser/[VER]', 'Opera' => [' OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]'], 'Opera Mini' => 'Opera Mini/[VER]', 'Opera Mobi' => 'Version/[VER]', 'UC Browser' => 'UC Browser[VER]', 'MQQBrowser' => 'MQQBrowser/[VER]', 'MicroMessenger' => 'MicroMessenger/[VER]', // @note: Safari 7534.48.3 is actually Version 5.1. + // @note: On BlackBerry the Version is overwriten by the OS. + 'Safari' => ['Version/[VER]', 'Safari/[VER]'], 'Skyfire' => 'Skyfire/[VER]', 'Tizen' => 'Tizen/[VER]', 'Webkit' => 'webkit[ /][VER]', + + // Engine + 'Gecko' => 'Gecko/[VER]', 'Trident' => 'Trident/[VER]', 'Presto' => 'Presto/[VER]', + + // OS + 'iOS' => ' \bOS\b [VER] ', 'Android' => 'Android [VER]', 'BlackBerry' => ['BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'], 'BREW' => 'BREW [VER]', 'Java' => 'Java/[VER]', // @reference: http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/08/29/introducing-the-ie9-on-windows-phone-mango-user-agent-string.aspx + // @reference: http://en.wikipedia.org/wiki/Windows_NT#Releases + 'Windows Phone OS' => ['Windows Phone OS [VER]', 'Windows Phone [VER]'], 'Windows Phone' => 'Windows Phone [VER]', 'Windows CE' => 'Windows CE/[VER]', // http://social.msdn.microsoft.com/Forums/en-US/windowsdeveloperpreviewgeneral/thread/6be392da-4d2f-41b4-8354-8dcee20c85cd + 'Windows NT' => 'Windows NT [VER]', 'Symbian' => ['SymbianOS/[VER]', 'Symbian/[VER]'], 'webOS' => ['webOS/[VER]', 'hpwOS/[VER];'],]; + + /** + * Construct an instance of this class. + * + * @param array $headers Specify the headers as injection. Should be PHP _SERVER flavored. + * If left empty, will use the global _SERVER['HTTP_*'] vars instead. + * @param string $userAgent Inject the User-Agent header. If null, will use HTTP_USER_AGENT + * from the $headers array instead. + */ + public function __construct(array $headers = null, $userAgent = null) + { + $this->setHttpHeaders($headers); + $this->setUserAgent($userAgent); + } + + /** + * Get the current script version. + * This is useful for the demo.php file, + * so people can check on what version they are testing + * for mobile devices. + * + * @return string The version number in semantic version format. + */ + public static function getScriptVersion() + { + return self::VERSION; + } + + /** + * Set the HTTP Headers. Must be PHP-flavored. This method will reset existing headers. + * + * @param array $httpHeaders The headers to set. If null, then using PHP's _SERVER to extract + * the headers. The default null is left for backwards compatibilty. + */ + public function setHttpHeaders($httpHeaders = null) + { + //use global _SERVER if $httpHeaders aren't defined + if (!is_array($httpHeaders) || !count($httpHeaders)) { + $httpHeaders = $_SERVER; + } + + //clear existing headers + $this->httpHeaders = []; + + //Only save HTTP headers. In PHP land, that means only _SERVER vars that + //start with HTTP_. + foreach ($httpHeaders as $key => $value) { + if (substr($key, 0, 5) == 'HTTP_') { + $this->httpHeaders[$key] = $value; + } + } + } + + /** + * Retrieves the HTTP headers. + * + * @return array + */ + public function getHttpHeaders() + { + return $this->httpHeaders; + } + + /** + * Retrieves a particular header. If it doesn't exist, no exception/error is caused. + * Simply null is returned. + * + * @param string $header The name of the header to retrieve. Can be HTTP compliant such as + * "User-Agent" or "X-Device-User-Agent" or can be php-esque with the + * all-caps, HTTP_ prefixed, underscore seperated awesomeness. + * + * @return string|null The value of the header. + */ + public function getHttpHeader($header) + { + //are we using PHP-flavored headers? + if (strpos($header, '_') === false) { + $header = str_replace('-', '_', $header); + $header = strtoupper($header); + } + + //test the alternate, too + $altHeader = 'HTTP_' . $header; + + //Test both the regular and the HTTP_ prefix + if (isset($this->httpHeaders[$header])) { + return $this->httpHeaders[$header]; + } elseif (isset($this->httpHeaders[$altHeader])) { + return $this->httpHeaders[$altHeader]; + } + } + + public function getMobileHeaders() + { + return self::$mobileHeaders; + } + + /** + * Get all possible HTTP headers that + * can contain the User-Agent string. + * + * @return array List of HTTP headers. + */ + public function getUaHttpHeaders() + { + return self::$uaHttpHeaders; + } + + /** + * Set the User-Agent to be used. + * + * @param string $userAgent The user agent string to set. + */ + public function setUserAgent($userAgent = null) + { + if (!empty($userAgent)) { + return $this->userAgent = $userAgent; + } else { + + $this->userAgent = null; + + foreach ($this->getUaHttpHeaders() as $altHeader) { + if (!empty($this->httpHeaders[$altHeader])) { // @todo: should use getHttpHeader(), but it would be slow. (Serban) + $this->userAgent .= $this->httpHeaders[$altHeader] . " "; + } + } + + return $this->userAgent = (!empty($this->userAgent) ? trim($this->userAgent) : null); + + } + } + + /** + * Retrieve the User-Agent. + * + * @return string|null The user agent if it's set. + */ + public function getUserAgent() + { + return $this->userAgent; + } + + /** + * Set the detection type. Must be one of self::DETECTION_TYPE_MOBILE or + * self::DETECTION_TYPE_EXTENDED. Otherwise, nothing is set. + * + * @param string $type The type. Must be a self::DETECTION_TYPE_* constant. The default + * parameter is null which will default to self::DETECTION_TYPE_MOBILE. + * @deprecated since version 2.6.9 + * + */ + public function setDetectionType($type = null) + { + if ($type === null) { + $type = self::DETECTION_TYPE_MOBILE; + } + + if ($type != self::DETECTION_TYPE_MOBILE && $type != self::DETECTION_TYPE_EXTENDED) { + return; + } + + $this->detectionType = $type; + } + + /** + * Retrieve the list of known phone devices. + * + * @return array List of phone devices. + */ + public static function getPhoneDevices() + { + return self::$phoneDevices; + } + + /** + * Retrieve the list of known tablet devices. + * + * @return array List of tablet devices. + */ + public static function getTabletDevices() + { + return self::$tabletDevices; + } + + /** + * Alias for getBrowsers() method. + * + * @return array List of user agents. + */ + public static function getUserAgents() + { + return self::getBrowsers(); + } + + /** + * Retrieve the list of known browsers. Specifically, the user agents. + * + * @return array List of browsers / user agents. + */ + public static function getBrowsers() + { + return self::$browsers; + } + + /** + * Retrieve the list of known utilities. + * + * @return array List of utilities. + */ + public static function getUtilities() + { + return self::$utilities; + } + + /** + * Method gets the mobile detection rules. This method is used for the magic methods $detect->is*(). + * + * @return array All the rules (but not extended). + * @deprecated since version 2.6.9 + * + */ + public static function getMobileDetectionRules() + { + static $rules; + + if (!$rules) { + $rules = array_merge(self::$phoneDevices, self::$tabletDevices, self::$operatingSystems, self::$browsers); + } + + return $rules; + + } + + /** + * Method gets the mobile detection rules + utilities. + * The reason this is separate is because utilities rules + * don't necessary imply mobile. This method is used inside + * the new $detect->is('stuff') method. + * + * @return array All the rules + extended. + * @deprecated since version 2.6.9 + * + */ + public function getMobileDetectionRulesExtended() + { + static $rules; + + if (!$rules) { + // Merge all rules together. + $rules = array_merge(self::$phoneDevices, self::$tabletDevices, self::$operatingSystems, self::$browsers, self::$utilities); + } + + return $rules; + } + + /** + * Retrieve the current set of rules. + * + * @return array + * @deprecated since version 2.6.9 + * + */ + public function getRules() + { + if ($this->detectionType == self::DETECTION_TYPE_EXTENDED) { + return self::getMobileDetectionRulesExtended(); + } else { + return self::getMobileDetectionRules(); + } + } + + /** + * Retrieve the list of mobile operating systems. + * + * @return array The list of mobile operating systems. + */ + public static function getOperatingSystems() + { + return self::$operatingSystems; + } + + /** + * Check the HTTP headers for signs of mobile. + * This is the fastest mobile check possible; it's used + * inside isMobile() method. + * + * @return bool + */ + public function checkHttpHeadersForMobile() + { + + foreach ($this->getMobileHeaders() as $mobileHeader => $matchType) { + if (isset($this->httpHeaders[$mobileHeader])) { + if (is_array($matchType['matches'])) { + foreach ($matchType['matches'] as $_match) { + if (strpos($this->httpHeaders[$mobileHeader], $_match) !== false) { + return true; + } + } + return false; + } else { + return true; + } + } + } + + return false; + + } + + /** + * Magic overloading method. + * + * @method boolean is[...]() + * @param string $name + * @param array $arguments + * @return mixed + * @throws BadMethodCallException when the method doesn't exist and doesn't start with 'is' + */ + public function __call($name, $arguments) + { + //make sure the name starts with 'is', otherwise + if (substr($name, 0, 2) != 'is') { + throw new BadMethodCallException("No such method exists: $name"); + } + + $this->setDetectionType(self::DETECTION_TYPE_MOBILE); + + $key = substr($name, 2); + + return $this->matchUAAgainstKey($key); + } + + /** + * Find a detection rule that matches the current User-agent. + * + * @param null $userAgent deprecated + * @return boolean + */ + protected function matchDetectionRulesAgainstUA($userAgent = null) + { + // Begin general search. + foreach ($this->getRules() as $_regex) { + if (empty($_regex)) { + continue; + } + if ($this->match($_regex, $userAgent)) { + return true; + } + } + + return false; + } + + /** + * Search for a certain key in the rules array. + * If the key is found the try to match the corresponding + * regex agains the User-Agent. + * + * @param string $key + * @param null $userAgent deprecated + * @return mixed + */ + protected function matchUAAgainstKey($key, $userAgent = null) + { + // Make the keys lowercase so we can match: isIphone(), isiPhone(), isiphone(), etc. + $key = strtolower($key); + + //change the keys to lower case + $_rules = array_change_key_case($this->getRules()); + + if (array_key_exists($key, $_rules)) { + if (empty($_rules[$key])) { + return null; + } + + return $this->match($_rules[$key], $userAgent); + } + + return false; + } + + /** + * Check if the device is mobile. + * Returns true if any type of mobile device detected, including special ones + * @param null $userAgent deprecated + * @param null $httpHeaders deprecated + * @return bool + */ + public function isMobile($userAgent = null, $httpHeaders = null) + { + + if ($httpHeaders) { + $this->setHttpHeaders($httpHeaders); + } + + if ($userAgent) { + $this->setUserAgent($userAgent); + } + + $this->setDetectionType(self::DETECTION_TYPE_MOBILE); + + if ($this->checkHttpHeadersForMobile()) { + return true; + } else { + return $this->matchDetectionRulesAgainstUA(); + } + + } + + /** + * Check if the device is a tablet. + * Return true if any type of tablet device is detected. + * + * @param string $userAgent deprecated + * @param array $httpHeaders deprecated + * @return bool + */ + public function isTablet($userAgent = null, $httpHeaders = null) + { + $this->setDetectionType(self::DETECTION_TYPE_MOBILE); + + foreach (self::$tabletDevices as $_regex) { + if ($this->match($_regex, $userAgent)) { + return true; + } + } + + return false; + } + + /** + * This method checks for a certain property in the + * userAgent. + * @param $key + * @param string $userAgent deprecated + * @param string $httpHeaders deprecated + * @return bool|int|null + * @todo: The httpHeaders part is not yet used. + * + */ + public function is($key, $userAgent = null, $httpHeaders = null) + { + // Set the UA and HTTP headers only if needed (eg. batch mode). + if ($httpHeaders) { + $this->setHttpHeaders($httpHeaders); + } + + if ($userAgent) { + $this->setUserAgent($userAgent); + } + + $this->setDetectionType(self::DETECTION_TYPE_EXTENDED); + + return $this->matchUAAgainstKey($key); + } + + /** + * Some detection rules are relative (not standard), + * because of the diversity of devices, vendors and + * their conventions in representing the User-Agent or + * the HTTP headers. + * + * This method will be used to check custom regexes against + * the User-Agent string. + * + * @param $regex + * @param string $userAgent + * @return bool + * + * @todo: search in the HTTP headers too. + */ + public function match($regex, $userAgent = null) + { + // Escape the special character which is the delimiter. + $regex = str_replace('/', '\/', $regex); + + return (bool)preg_match('/' . $regex . '/is', (!empty($userAgent) ? $userAgent : $this->userAgent)); + } + + /** + * Get the properties array. + * + * @return array + */ + public static function getProperties() + { + return self::$properties; + } + + /** + * Prepare the version number. + * + * @param string $ver The string version, like "2.6.21.2152"; + * + * @return float + * @todo Remove the error supression from str_replace() call. + * + */ + public function prepareVersionNo($ver) + { + $ver = str_replace(['_', ' ', '/'], '.', $ver); + $arrVer = explode('.', $ver, 2); + + if (isset($arrVer[1])) { + $arrVer[1] = @str_replace('.', '', $arrVer[1]); // @todo: treat strings versions. + } + + return (float)implode('.', $arrVer); + } + + /** + * Check the version of the given property in the User-Agent. + * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) + * + * @param string $propertyName The name of the property. See self::getProperties() array + * keys for all possible properties. + * @param string $type Either self::VERSION_TYPE_STRING to get a string value or + * self::VERSION_TYPE_FLOAT indicating a float value. This parameter + * is optional and defaults to self::VERSION_TYPE_STRING. Passing an + * invalid parameter will default to the this type as well. + * + * @return string|float The version of the property we are trying to extract. + */ + public function version($propertyName, $type = self::VERSION_TYPE_STRING) + { + if (empty($propertyName)) { + return false; + } + + //set the $type to the default if we don't recognize the type + if ($type != self::VERSION_TYPE_STRING && $type != self::VERSION_TYPE_FLOAT) { + $type = self::VERSION_TYPE_STRING; + } + + $properties = self::getProperties(); + + // Check if the property exists in the properties array. + if (array_key_exists($propertyName, $properties)) { + + // Prepare the pattern to be matched. + // Make sure we always deal with an array (string is converted). + $properties[$propertyName] = (array)$properties[$propertyName]; + + foreach ($properties[$propertyName] as $propertyMatchString) { + + $propertyPattern = str_replace('[VER]', self::VER, $propertyMatchString); + + // Escape the special character which is the delimiter. + $propertyPattern = str_replace('/', '\/', $propertyPattern); + + // Identify and extract the version. + preg_match('/' . $propertyPattern . '/is', $this->userAgent, $match); + + if (!empty($match[1])) { + $version = ($type == self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1]); + + return $version; + } + + } + + } + + return false; + } + + /** + * Retrieve the mobile grading, using self::MOBILE_GRADE_* constants. + * + * @return string One of the self::MOBILE_GRADE_* constants. + */ + public function mobileGrade() + { + $isMobile = $this->isMobile(); + + if (// Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1) + $this->isIOS() && $this->version('iPad', self::VERSION_TYPE_FLOAT) >= 4.3 || $this->isIOS() && $this->version('iPhone', self::VERSION_TYPE_FLOAT) >= 3.1 || $this->isIOS() && $this->version('iPod', self::VERSION_TYPE_FLOAT) >= 3.1 || + + // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5) + // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM + // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices + // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7 + ($this->version('Android', self::VERSION_TYPE_FLOAT) > 2.1 && $this->is('Webkit')) || + + // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800 + $this->version('Windows Phone OS', self::VERSION_TYPE_FLOAT) >= 7.0 || + + // Blackberry 7 - Tested on BlackBerry Torch 9810 + // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670 + $this->is('BlackBerry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 6.0 || // Blackberry Playbook (1.0-2.0) - Tested on PlayBook + $this->match('Playbook.*Tablet') || + + // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0) + ($this->version('webOS', self::VERSION_TYPE_FLOAT) >= 1.4 && $this->match('Palm|Pre|Pixi')) || // Palm WebOS 3.0 - Tested on HP TouchPad + $this->match('hp.*TouchPad') || + + // Firefox Mobile (12 Beta) - Tested on Android 2.3 device + ($this->is('Firefox') && $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 12) || + + // Chrome for Android - Tested on Android 4.0, 4.1 device + ($this->is('Chrome') && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 4.0) || + + // Skyfire 4.1 - Tested on Android 2.3 device + ($this->is('Skyfire') && $this->version('Skyfire', self::VERSION_TYPE_FLOAT) >= 4.1 && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3) || + + // Opera Mobile 11.5-12: Tested on Android 2.3 + ($this->is('Opera') && $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) > 11 && $this->is('AndroidOS')) || + + // Meego 1.2 - Tested on Nokia 950 and N9 + $this->is('MeeGoOS') || + + // Tizen (pre-release) - Tested on early hardware + $this->is('Tizen') || + + // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser + // @todo: more tests here! + $this->is('Dolfin') && $this->version('Bada', self::VERSION_TYPE_FLOAT) >= 2.0 || + + // UC Browser - Tested on Android 2.3 device + (($this->is('UC Browser') || $this->is('Dolfin')) && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3) || + + // Kindle 3 and Fire - Tested on the built-in WebKit browser for each + ($this->match('Kindle Fire') || $this->is('Kindle') && $this->version('Kindle', self::VERSION_TYPE_FLOAT) >= 3.0) || + + // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet + $this->is('AndroidOS') && $this->is('NookTablet') || + + // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7 + $this->version('Chrome', self::VERSION_TYPE_FLOAT) >= 11 && !$isMobile || + + // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7 + $this->version('Safari', self::VERSION_TYPE_FLOAT) >= 5.0 && !$isMobile || + + // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7 + $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 4.0 && !$isMobile || + + // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7 + $this->version('MSIE', self::VERSION_TYPE_FLOAT) >= 7.0 && !$isMobile || + + // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7 + // @reference: http://my.opera.com/community/openweb/idopera/ + $this->version('Opera', self::VERSION_TYPE_FLOAT) >= 10 && !$isMobile + + ) { + return self::MOBILE_GRADE_A; + } + + if ($this->isIOS() && $this->version('iPad', self::VERSION_TYPE_FLOAT) < 4.3 || $this->isIOS() && $this->version('iPhone', self::VERSION_TYPE_FLOAT) < 3.1 || $this->isIOS() && $this->version('iPod', self::VERSION_TYPE_FLOAT) < 3.1 || + + // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770 + $this->is('Blackberry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 5 && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) < 6 || + + //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3 + ($this->version('Opera Mini', self::VERSION_TYPE_FLOAT) >= 5.0 && $this->version('Opera Mini', self::VERSION_TYPE_FLOAT) <= 6.5 && ($this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 || $this->is('iOS'))) || + + // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1) + $this->match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') || + + // @todo: report this (tested on Nokia N71) + $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11 && $this->is('SymbianOS')) { + return self::MOBILE_GRADE_B; + } + + if (// Blackberry 4.x - Tested on the Curve 8330 + $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) < 5.0 || // Windows Mobile - Tested on the HTC Leo (WinMo 5.2) + $this->match('MSIEMobile|Windows CE.*Mobile') || $this->version('Windows Mobile', self::VERSION_TYPE_FLOAT) <= 5.2 + + ) { + return self::MOBILE_GRADE_C; + } + + //All older smartphone platforms and featurephones - Any device that doesn't support media queries + //will receive the basic, C grade experience. + return self::MOBILE_GRADE_C; + } +} diff --git a/_incl_data/class/_cron_.php b/_incl_data/class/Priems.php similarity index 75% rename from _incl_data/class/_cron_.php rename to _incl_data/class/Priems.php index f8915537..e3a8abdc 100644 --- a/_incl_data/class/_cron_.php +++ b/_incl_data/class/Priems.php @@ -3,17 +3,11 @@ use Insallah\Db; use Insallah\Math; -if (!defined('GAME')) { - die(); -} -error_reporting(E_ALL ^ E_NOTICE); -ini_set('display_errors', 'Off'); - /* - доделать добавление приема в $btl->users[]['eff'] после использования, в противном случаи некотрые приемы используются через 1 ход */ -class priems +class Priems { private $btl; private $u; @@ -28,7 +22,7 @@ class priems 'земля' => 4, 'свет' => 5, 'тьма' => 6, - 'серая' => 7 + 'серая' => 7, ]; public $ue = []; private $logColor = [ @@ -44,9 +38,62 @@ class priems { global $btl; $this->btl = $btl; - $this->u = user::start(); + $this->u = User::start(); } + /**@deprecated try to use getDynamicInfo()*/ + private function getdr($s, $v, $d) + { + $i = 0; + while ($i < count($v)) { + if (isset($v[$i])) { + $s = str_replace('{' . $v[$i] . '}', $d[$i], $s); + } + $i++; + } + $s = eval("return (" . $s . ");"); + return floor($s); + } + + /** + * @param $match + * @return false|float + */ + private function getDynamicInfo($match) + { + $tmpl = [ + 'lvl1' => $this->u->info['level'], + 'ts5' => $this->u->stats['s5'], + 'mpAll' => $this->u->stats['mpAll'], + ]; + foreach ($tmpl as $k => $v) { + $match = str_ireplace('{' . $k . '}', $v, $match); + } + $p = $match[2]; + + if (preg_match('/(\d+)(?:\s*)([+\-*\/])(?:\s*)(\d+)/', $match[2], $matches) !== false) { + $operator = $matches[2]; + + switch ($operator) { + case '+': + $p = $matches[1] + $matches[3]; + break; + case '-': + $p = $matches[1] - $matches[3]; + break; + case '*': + $p = $matches[1] * $matches[3]; + break; + case '/': + $p = $matches[1] / $matches[3]; + break; + default: + } + } + return floor($p); + } + + /** Набив Статики * @param int $uid если 0, будет использоваться id противника напротив. * @return void @@ -56,16 +103,20 @@ class priems if ($uid == 0) { $uid = $this->ue['id']; } - $x = Db::getValue('select x from eff_users where uid = ? and `delete` = 0 and v2 = 260 and user_use = ? order by id desc limit 1', - [$uid, $this->u->info['id']]); + $x = Db::getValue( + 'select x from eff_users where uid = ? and `delete` = 0 and v2 = 260 and user_use = ? order by id desc limit 1', + [$uid, $this->u->info['id']] + ); if (empty($x) || $x >= 5) { return; } $x++; $data['add_mg2static_points'] = $x; $data = $this->impStats($data); - Db::sql('update eff_users set x = ?, data = ? where uid = ? and `delete` = 0 and v2 = 260 and user_use = ?', - [$x, $data, $uid, $this->u->info['id']]); + Db::sql( + 'update eff_users set x = ?, data = ? where uid = ? and `delete` = 0 and v2 = 260 and user_use = ?', + [$x, $data, $uid, $this->u->info['id']] + ); } /** отнимаем ману @@ -83,8 +134,10 @@ class priems $btl->stats[$btl->uids[$uid]]['mpNow'] -= $mp; $mpNow = $this->zeromax($btl->stats[$btl->uids[$uid]]['mpNow'], $btl->stats[$btl->uids[$uid]]['mpAll']); if ($mpNow > 0) { - Db::sql('update stats set mpNow = ? where id = ?', - [$btl->stats[$btl->uids[$uid]]['mpNow'], $uid]); + Db::sql( + 'update stats set mpNow = ? where id = ?', + [$btl->stats[$btl->uids[$uid]]['mpNow'], $uid] + ); } return $mpNow > 0; } @@ -127,8 +180,10 @@ class priems { global $btl; $return_main = true; - $ue = Db::getRow('select * from users left join stats on (users.id = stats.id) where users.id = ? and battle = ? and hpNow > 0', - [$eff['uid'], $btl->info['id']]); + $ue = Db::getRow( + 'select * from users left join stats on (users.id = stats.id) where users.id = ? and battle = ? and hpNow > 0', + [$eff['uid'], $btl->info['id']] + ); if (!empty($pr['file'])) { if (file_exists('../../_incl_data/class/priems/' . $pr['file'] . '.php')) { @@ -146,8 +201,8 @@ class priems /** Получает строку data c шаблонной записью типа add_m11=2*{lvl1} и конвертирует в реальную строку. *
    Шаблон:
    lvl1 = $uid[level]
    ts5 = $uid[s5]
    mpAll = $uid[mpAll] - * @param string $pl строка в формате data - * @param int $uid пользователь, параметры которого используются для подставки в шаблон. + * @param string $pl строка в формате data + * @param int $uid пользователь, параметры которого используются для подставки в шаблон. * @return string строка в формате data с развёрнутыми шаблонами. */ public function redate($pl, $uid) @@ -158,11 +213,14 @@ class priems $e = explode('|', $pl); while ($i < count($e)) { $f = explode('=', $e[$i]); - $f[1] = getdr($f[1], [0 => 'lvl1', 1 => 'ts5', 2 => 'mpAll'], [ - 0 => $btl->users[$btl->uids[$uid]]['level'], - 1 => $btl->stats[$btl->uids[$uid]]['s5'], - 2 => $btl->stats[$btl->uids[$uid]]['mpAll'], - ]); +// $f[1] = $this->getdr( +// $f[1], [0 => 'lvl1', 1 => 'ts5', 2 => 'mpAll'], [ +// 0 => $btl->users[$btl->uids[$uid]]['level'], +// 1 => $btl->stats[$btl->uids[$uid]]['s5'], +// 2 => $btl->stats[$btl->uids[$uid]]['mpAll'], +// ] +// ); + $f[1] = $this->getDynamicInfo($f[1]); if ($f[0] != '' && $f[1] != '') { $e[$i] = implode('=', $f); } @@ -173,7 +231,7 @@ class priems return $pl; } - private function cancelEffects($effects_ids, $uid, battleClass $btl) + private function cancelEffects($effects_ids, $uid, Battle $btl) { $arr = explode(',', $effects_ids); if (!is_array($arr) || empty($arr)) { @@ -183,7 +241,9 @@ class priems if ($eid <= 0) { continue; } - $p = Db::getRow('select * from eff_users where uid = ? and v1 = ? and v2 = ? and `delete` = 0', [$uid, 'priem', $eid]); + $p = Db::getRow( + 'select * from eff_users where uid = ? and v1 = ? and v2 = ? and `delete` = 0', [$uid, 'priem', $eid] + ); if (!$p['id']) { continue; } @@ -202,22 +262,22 @@ class priems tp - тип приема */ /** - * @param int $uid на кого кастуем - * @param int $pr id приема + * @param int $uid на кого кастуем + * @param int $pr id приема * @param int|string $data дата, если -1, то добавляем дату3 - * @param int $d2 - * @param $tm - * @param int $h ход - * @param int $uu id юзера который использовал - * @param $max - * @param $bj - * @param $tp - * @param $ch - * @param $rdt - * @param $tr_life_user - * @param $noupdatebtl - * @param $noplus - * @param $pname + * @param int $d2 + * @param $tm + * @param int $h ход + * @param int $uu id юзера который использовал + * @param $max + * @param $bj + * @param $tp + * @param $ch + * @param $rdt + * @param $tr_life_user + * @param $noupdatebtl + * @param $noplus + * @param $pname * @return bool */ public function addPriem( @@ -262,18 +322,24 @@ class priems if ($noplus == 0) { if ($pl['zmu'] == 1) { - $num = Db::getRow('select * from eff_users where bj = ? and user_use = ? and uid = ? and `delete` = 0', - [$bj, $this->u->info['id'], $uid]); + $num = Db::getRow( + 'select * from eff_users where bj = ? and user_use = ? and uid = ? and `delete` = 0', + [$bj, $this->u->info['id'], $uid] + ); } else { - $num = Db::getRow('select * from eff_users where bj = ? and uid = ? and `delete` = 0', - [$bj, $uid]); + $num = Db::getRow( + 'select * from eff_users where bj = ? and uid = ? and `delete` = 0', + [$bj, $uid] + ); } } if (isset($num['id']) && ($num['user_use'] != $this->u->info['id'] && $pl['zmu'] != 2)) { // удаляем эффект - Db::sql('update eff_users set `delete` = unix_timestamp() where id = ?', - [$num['id']]); + Db::sql( + 'update eff_users set `delete` = unix_timestamp() where id = ?', + [$num['id']] + ); $i = 0; while ($i < count($btl->stats[$btl->uids[$uid]]['effects'])) { if ($btl->stats[$btl->uids[$uid]]['effects'][$i]['id'] == $num['id']) { @@ -289,7 +355,9 @@ class priems $image = !empty($pl['img']) ? $pl['img'] : $pl['id']; $name = !empty($pname) ? $pname : $pl['name']; $image .= '.gif'; - Db::sql($q, [floor($tr_life_user), $bj, $uu, $h, $pl['id'], $image, 22, $uid, $name, $data, 0, $tm, 'priem']); + Db::sql( + $q, [floor($tr_life_user), $bj, $uu, $h, $pl['id'], $image, 22, $uid, $name, $data, 0, $tm, 'priem'] + ); $lid = Db::lastInsertId(); if ($lid) { $r = true; @@ -305,11 +373,15 @@ class priems $num['hod'] = $h; if ($data != -1 && $data != '' && $d2 == 2) { $num['data'] .= '|' . $data; - Db::sql('update eff_users set x = x + 1, hod = ?, data = ? where id = ?', - [$h, $num['data'], $num['id']]); + Db::sql( + 'update eff_users set x = x + 1, hod = ?, data = ? where id = ?', + [$h, $num['data'], $num['id']] + ); } else { - Db::sql('update eff_users set x = x + 1, hod = ? where id = ?', - [$h, $num['id']]); + Db::sql( + 'update eff_users set x = x + 1, hod = ? where id = ?', + [$h, $num['id']] + ); } $r = true; } else { @@ -319,8 +391,10 @@ class priems $num['data'] .= '|' . $data; Db::sql("update eff_users set hod = ?, data = ? where id = ?", [$h, $num['data'], $num['id']]); } else { - Db::sql('update eff_users set hod = ? where id = ?', - [$h, $num['id']]); + Db::sql( + 'update eff_users set hod = ? where id = ?', + [$h, $num['id']] + ); } $r = true; } @@ -339,7 +413,7 @@ class priems return $r; } - /** Превращает строку data ('|a=1|b=2|c=3') из БД в массив [a=>1, b=>2, c=>3]. + /** Превращает строку data ('a=1|b=2|c=3') из БД в массив [a=>1, b=>2, c=>3]. * @param $m * @return array */ @@ -349,7 +423,7 @@ class priems return $arr ?: []; } - /** Превращает массив [a=>1, b=>2, c=>3] в строку data ('|a=1|b=2|c=3') для БД. + /** Превращает массив [a=>1, b=>2, c=>3] в строку data ('a=1|b=2|c=3') для БД. * @param array $m * @return string */ @@ -360,7 +434,7 @@ class priems } /** - * @param $data + * @param $data * @param array $values * @return string */ @@ -449,14 +523,21 @@ class priems //получаем массив с приемами противника $miny = 0; //на сколько едениц урон буде меньше (защита приема) $minu = 0; - $sp1 = mysql_query('SELECT `e`.* FROM `eff_users` AS `e` WHERE `e`.`uid` = "' . $uen . '" AND `e`.`id_eff` = "22" AND `e`.`delete` = "0" AND `e`.`v1` = "priem" LIMIT 25'); + $sp1 = mysql_query( + 'SELECT `e`.* FROM `eff_users` AS `e` WHERE `e`.`uid` = "' . $uen . '" AND `e`.`id_eff` = "22" AND `e`.`delete` = "0" AND `e`.`v1` = "priem" LIMIT 25' + ); while ($pl2 = mysql_fetch_assoc($sp1)) { - $pl2['priem'] = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $pl2['v2'] . '" LIMIT 1')); + $pl2['priem'] = mysql_fetch_assoc( + mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $pl2['v2'] . '" LIMIT 1') + ); if (isset($pl2['priem']['id'])) { $dt1 = $this->lookStatsArray($pl2['priem']['date2']); if (isset($dt1['yron_u2'])) { - $minu = getdr($dt1['yron_u2'], [0 => 'lvl1', 1 => 'yr1', 2 => 'ts5', 3 => 'ts6'], - [0 => $btl->users[$btl->uids[$level]], 1 => $hpmin, 2 => 0, 3 => 0]); + + $minu = $this->getdr( + $dt1['yron_u2'], [0 => 'lvl1', 1 => 'yr1', 2 => 'ts5', 3 => 'ts6'], + [0 => $btl->users[$btl->uids[$level]], 1 => $hpmin, 2 => 0, 3 => 0] + ); $miny -= $minu; $hpmin += $minu; $btl->delPriem($pl2, $btl->users[$btl->uids[$uen]]); @@ -469,7 +550,9 @@ class priems //отнимаем НР $btl->users[$btl->uids[$uen]]['hpNow'] = $hp2; $btl->stats[$btl->uids[$uen]]['hpNow'] = $hp2; - mysql_query('UPDATE `stats` SET `hpNow` = ' . $hp2 . ',`tactic7` = ' . $btl->users[$btl->uids[$uen]]['tactic7'] . ' WHERE `id` = "' . $uen . '" LIMIT 1'); + mysql_query( + 'UPDATE `stats` SET `hpNow` = ' . $hp2 . ',`tactic7` = ' . $btl->users[$btl->uids[$uen]]['tactic7'] . ' WHERE `id` = "' . $uen . '" LIMIT 1' + ); //заносим в лог боя $vLog = @@ -526,9 +609,13 @@ class priems if ($rp == 1) { $sx = [0 => '', 1 => 'а']; - $mas1['text'] = '{tm1} Заклинание "' . $pl['name'] . '" восстановило здоровье персонажа {u2}. ' . $hpmin . ' [' . ceil($hp2) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; + $mas1['text'] = '{tm1} Заклинание "' . $pl['name'] . '" восстановило здоровье персонажа {u2}. ' . $hpmin . ' [' . ceil( + $hp2 + ) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; } else { - $mas1['text'] = '{tm1} {u1} {1x16x0} заклинание "' . $pl['name'] . '" и восстановил здоровье персонажа {u2} магией ' . $nmz[0] . '. ' . $hpmin . ' [' . ceil($hp2) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; + $mas1['text'] = '{tm1} {u1} {1x16x0} заклинание "' . $pl['name'] . '" и восстановил здоровье персонажа {u2} магией ' . $nmz[0] . '. ' . $hpmin . ' [' . ceil( + $hp2 + ) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; } $btl->add_log($mas1); $pz[(int)$id] = 1; @@ -571,15 +658,15 @@ class priems /** * Новая функция магического заклинания с приёма. * Работает с числовыми приёмами в папке [priem]. - * @param int $attackerId кто использует приём - * @param int $defenderId на кого использует приём - * @param float $damage базовый урон приёма - * @param string $damageType тип урона (стихия?) приходит строкой, и конвертируется функцией. - * @param bool $hasCritical флаг, что приём МОЖЕТ критовать + * @param int $attackerId кто использует приём + * @param int $defenderId на кого использует приём + * @param float $damage базовый урон приёма + * @param string $damageType тип урона (стихия?) приходит строкой, и конвертируется функцией. + * @param bool $hasCritical флаг, что приём МОЖЕТ критовать * @return array [0|damage] int урон, [1|crit] bool был ли крит, [2|miss] bool был ли промах, [3|miss_type] int тип промаха (всегда = 2). * @author Insallah */ - public function magicAttack(battleClass $btl, $attackerId, $defenderId, $damage, $damageType, $hasCritical = false) + public function magicAttack(Battle $btl, $attackerId, $defenderId, $damage, $damageType, $hasCritical = false) { // Не так паршиво как прошлая, но всё ещё паршиво. Теперь хоть что-то понять можно. $dmgRuNames = [ @@ -636,8 +723,10 @@ class priems if ($isGarantCrit) { $isCritical = true; - Db::sql('delete from eff_users where uid = ? and `delete` = 0 and data like ?', - [$attackerId, '%add_acestar%']); + Db::sql( + 'delete from eff_users where uid = ? and `delete` = 0 and data like ?', + [$attackerId, '%add_acestar%'] + ); unset($q); } @@ -719,29 +808,29 @@ class priems { global $btl; $cof_mag = [ - 0 => 250, - 1 => 250, - 2 => 250, - 3 => 250, - 4 => 250, - 5 => 250, - 6 => 250, - 7 => 250, - 8 => 250, - 9 => 300, - 10 => 360, - 11 => 475, - 12 => 520, - 13 => 625, - 14 => 750, - 15 => 895, - 16 => 1075, - 17 => 1290, - 18 => 1550, - 19 => 1860, - 20 => 2230, - 21 => 2675, - ]; + 0 => 250, + 1 => 250, + 2 => 250, + 3 => 250, + 4 => 250, + 5 => 250, + 6 => 250, + 7 => 250, + 8 => 250, + 9 => 300, + 10 => 360, + 11 => 475, + 12 => 520, + 13 => 625, + 14 => 750, + 15 => 895, + 16 => 1075, + 17 => 1290, + 18 => 1550, + 19 => 1860, + 20 => 2230, + 21 => 2675, + ]; $r = $yron; // @@ -884,8 +973,10 @@ class priems } if ($fiz == 0) { //магический урон - $hpmin = $this->testPower($btl->stats[$btl->uids[$usu]], $btl->stats[$btl->uids[$uen]], $hpmin, $tmp, - 2); + $hpmin = $this->testPower( + $btl->stats[$btl->uids[$usu]], $btl->stats[$btl->uids[$uen]], $hpmin, $tmp, + 2 + ); } else { //физический урон $wAp = $btl->stats[$btl->uids[$usu]]['pa' . $tmp . '']; @@ -894,12 +985,16 @@ class priems $wAp -= $btl->stats[$btl->uids[$uen]]['antm10'] * 1.75; $hpmin += ceil((0.01 + $hpmin / 100) * (0.01 + 0.98 * $wAp)) - 1; - $hpmin -= round($hpmin / 100 * (35 * ($btl->stats[$btl->uids[$uen]]['za'] + $btl->stats[$btl->uids[$uen]]['za' . $tmp]) / 1200)); + $hpmin -= round( + $hpmin / 100 * (35 * ($btl->stats[$btl->uids[$uen]]['za'] + $btl->stats[$btl->uids[$uen]]['za' . $tmp]) / 1200) + ); $hpmin = round($hpmin); if (isset($btl->stats[$btl->uids[$uen]]['zaproc']) || isset($btl->stats[$btl->uids[$uen]]['za' . $fiz . 'proc'])) //защита от урона (призрачки) { - $hpmin = floor($hpmin / 100 * (100 - $btl->stats[$btl->uids[$uen]]['zaproc'] - $btl->stats[$btl->uids[$uen]]['za' . $fiz . 'proc'])); + $hpmin = floor( + $hpmin / 100 * (100 - $btl->stats[$btl->uids[$uen]]['zaproc'] - $btl->stats[$btl->uids[$uen]]['za' . $fiz . 'proc']) + ); if ($hpmin < 0) { $hpmin = 0; } @@ -936,14 +1031,20 @@ class priems /* проверяем приемы защиты */ //получаем массив с приемами противника $miny = 0; //на сколько едениц урон буде меньше (защита приема) - $sp1 = mysql_query('SELECT `e`.* FROM `eff_users` AS `e` WHERE `e`.`uid` = "' . $uen . '" AND `e`.`id_eff` = "22" AND `e`.`delete` = "0" AND `e`.`v1` = "priem" LIMIT 25'); + $sp1 = mysql_query( + 'SELECT `e`.* FROM `eff_users` AS `e` WHERE `e`.`uid` = "' . $uen . '" AND `e`.`id_eff` = "22" AND `e`.`delete` = "0" AND `e`.`v1` = "priem" LIMIT 25' + ); while ($pl2 = mysql_fetch_assoc($sp1)) { - $pl2['priem'] = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $pl2['v2'] . '" LIMIT 1')); + $pl2['priem'] = mysql_fetch_assoc( + mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $pl2['v2'] . '" LIMIT 1') + ); if (isset($pl2['priem']['id'])) { $dt1 = $this->lookStatsArray($pl2['priem']['date2']); if (isset($dt1['yron_u2'])) { - $minu = getdr($dt1['yron_u2'], [0 => 'lvl1', 1 => 'yr1', 2 => 'ts5', 3 => 'ts6'], - [0 => $btl->users[$btl->uids[$level]], 1 => $hpmin, 2 => 1, 3 => 0]); + $minu = $this->getdr( + $dt1['yron_u2'], [0 => 'lvl1', 1 => 'yr1', 2 => 'ts5', 3 => 'ts6'], + [0 => $btl->users[$btl->uids[$level]], 1 => $hpmin, 2 => 1, 3 => 0] + ); $miny -= $minu; $hpmin += $minu; if (isset($dt1['rzEndMg']) && $dt1['rzEndMg'] == 1) { @@ -961,7 +1062,9 @@ class priems if ($btl->stats[$btl->uids[$usu]]['yrnhealmpprocmg' . $tmp] > 0 && $fiz == 0) { //Часть урона восставнавливает ману - $btl->stats[$btl->uids[$usu]]['mpNow'] += round($hpmin / 100 * $btl->stats[$btl->uids[$usu]]['yrnhealmpprocmg' . $tmp]); + $btl->stats[$btl->uids[$usu]]['mpNow'] += round( + $hpmin / 100 * $btl->stats[$btl->uids[$usu]]['yrnhealmpprocmg' . $tmp] + ); //if($btl->stats[$btl->uids[$usu]]['mpNow'] > $btl->stats[$btl->uids[$usu]]['mpAll']) { //$btl->stats[$btl->uids[$usu]]['mpNow'] = $btl->stats[$btl->uids[$usu]]['mpAll']; //} @@ -996,7 +1099,9 @@ class priems $btl->users[$btl->uids[$eff['user_use']]]['hpNow'] = $btl->stats[$btl->uids[$eff['user_use']]]['hpNow']; - mysql_query('UPDATE `stats` SET `hpNow` = "' . $btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] . '" WHERE `id` = "' . $eff['user_use'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `stats` SET `hpNow` = "' . $btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] . '" WHERE `id` = "' . $eff['user_use'] . '" LIMIT 1' + ); } else { //хил на конкретное число @@ -1022,10 +1127,13 @@ class priems //$at[2][$i]['ttravm']='получил Тяжелую травму.'; $btl->addTravm($btl->users[$btl->uids[$uen]]['id'], 3, $btl->users[$btl->uids[$eff['user_use']]]['level']); } - $upd = mysql_query('UPDATE `stats` SET `hpNow` = ' . $hp2 . ',`last_hp` = "' . $btl->stats[$btl->uids[$uen]]['last_hp'] . '" WHERE `id` = "' . $uen . '" LIMIT 1'); + $upd = mysql_query( + 'UPDATE `stats` SET `hpNow` = ' . $hp2 . ',`last_hp` = "' . $btl->stats[$btl->uids[$uen]]['last_hp'] . '" WHERE `id` = "' . $uen . '" LIMIT 1' + ); //заносим в лог боя - $vLog = 'time1=' . time() . '||s1=' . $btl->users[$btl->uids[$usu]]['sex'] . '||t1=' . $btl->users[$btl->uids[$usu]]['team'] . '||login1=' . $btl->users[$btl->uids[$usu]]['login'] . '||s2=' . $btl->users[$btl->uids[$uen]]['sex'] . '||t2=' . $btl->users[$btl->uids[$uen]]['team'] . '||login2=' . $btl->users[$btl->uids[$uen]]['login'] . ''; + $vLog = 'time1=' . time( + ) . '||s1=' . $btl->users[$btl->uids[$usu]]['sex'] . '||t1=' . $btl->users[$btl->uids[$usu]]['team'] . '||login1=' . $btl->users[$btl->uids[$usu]]['login'] . '||s2=' . $btl->users[$btl->uids[$uen]]['sex'] . '||t2=' . $btl->users[$btl->uids[$uen]]['team'] . '||login2=' . $btl->users[$btl->uids[$uen]]['login'] . ''; $mas1 = [ 'time' => time(), 'battle' => $btl->info['id'], @@ -1045,23 +1153,25 @@ class priems if ($k == 1) { $hpminkrit = $hpmin; } - $btl->addNewStat([ - 'battle' => $this->u->info['battle'], - 'uid1' => $this->u->info['id'], - 'uid2' => $uen, - 'time' => time(), - 'type' => 0, - 'a' => '10000', - 'b' => 0, - 'type_a' => 1, - 'type_b' => 0, - 'ma' => 1, - 'mb' => 1, - 'yrn' => $hpmin, - 'yrn_krit' => $hpminkrit, - 'tm1' => $this->u->info['team'], - 'tm2' => $btl->users[$btl->uid[$uen]]['team'], - ]); + $btl->addNewStat( + [ + 'battle' => $this->u->info['battle'], + 'uid1' => $this->u->info['id'], + 'uid2' => $uen, + 'time' => time(), + 'type' => 0, + 'a' => '10000', + 'b' => 0, + 'type_a' => 1, + 'type_b' => 0, + 'ma' => 1, + 'mb' => 1, + 'yrn' => $hpmin, + 'yrn_krit' => $hpminkrit, + 'tm1' => $this->u->info['team'], + 'tm2' => $btl->users[$btl->uid[$uen]]['team'], + ] + ); $btl->takeExp($this->u->info['id'], $hpmin, $usu, $uen); @@ -1125,12 +1235,18 @@ class priems $tco = '008000'; } $sx = [0 => '', 1 => 'а']; - $mas1['text'] = '{tm1} {u2} утратил' . $sx[$btl->users[$btl->uids[$uen]]['sex']] . ' здоровье от "' . $pl['name'] . '". ' . $hpmin . ' [' . ceil($hp2) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; + $mas1['text'] = '{tm1} {u2} утратил' . $sx[$btl->users[$btl->uids[$uen]]['sex']] . ' здоровье от "' . $pl['name'] . '". ' . $hpmin . ' [' . ceil( + $hp2 + ) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; } else { if ($fiz == 1) { - $mas1['text'] = '{tm1} {u1} {1x16x0} прием "' . $pl['name'] . '" и поразил {u2}. ' . $hpmin . ' [' . ceil($hp2) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; + $mas1['text'] = '{tm1} {u1} {1x16x0} прием "' . $pl['name'] . '" и поразил {u2}. ' . $hpmin . ' [' . ceil( + $hp2 + ) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; } else { - $mas1['text'] = '{tm1} {u1} {1x16x0} заклинание "' . $pl['name'] . '" и поразил магией ' . $nmz[0] . ' {u2}. ' . $hpmin . ' [' . ceil($hp2) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; + $mas1['text'] = '{tm1} {u1} {1x16x0} заклинание "' . $pl['name'] . '" и поразил магией ' . $nmz[0] . ' {u2}. ' . $hpmin . ' [' . ceil( + $hp2 + ) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; } } $btl->add_log($mas1); @@ -1144,11 +1260,14 @@ class priems if ( $this->u->info['admin'] > 0 || $this->u->info['nadmin'] > 0 || - $this->u->info['id'] > 0) - { + $this->u->info['id'] > 0) { $r = 1; } else { - $tst = $this->u->testAction('`uid` = "' . $this->u->info['id'] . '" AND `time` < ' . time() . ' AND `vars` = "read" AND `vals` = "' . $id . '" LIMIT 1', 1); + $tst = $this->u->testAction( + '`uid` = "' . $this->u->info['id'] . '" AND `time` < ' . time( + ) . ' AND `vars` = "read" AND `vals` = "' . $id . '" LIMIT 1', + 1 + ); if (isset($tst['id'])) { $r = 1; } @@ -1173,8 +1292,10 @@ class priems !in_array($plid, [35, 63, 64, 65, 66, 85, 86, 87, 88, 89, 90, 104, 105, 106, 107, 134, 135, 136, 137]) ) //Атака в темную 90,89,88,87,86,85,35 { - $this->addPriem($this->u->info['id'], '344', 'add_m11=-' . round($this->u->stats['m11'] * 75 / 100), 1, 77, 1, - $this->u->stats['id'], 3, 'тьма', 0, 0, 1); //ТУТ понижение урона при уроне через персонажа + $this->addPriem( + $this->u->info['id'], '344', 'add_m11=-' . round($this->u->stats['m11'] * 75 / 100), 1, 77, 1, + $this->u->stats['id'], 3, 'тьма', 0, 0, 1 + ); //ТУТ понижение урона при уроне через персонажа } } return $r; @@ -1191,10 +1312,16 @@ class priems { global $u, $c, $code, $btl, $ue; if ($id == 100500 && $this->u->info['animal'] > 0) { - $use_lst = $this->u->testAction('`uid` = "' . $this->u->info['id'] . '" AND `vars` = "animal_use' . $btl->info['id'] . '" LIMIT 1', - 1); + $use_lst = $this->u->testAction( + '`uid` = "' . $this->u->info['id'] . '" AND `vars` = "animal_use' . $btl->info['id'] . '" LIMIT 1', + 1 + ); if (!isset($use_lst['id'])) { - $a = mysql_fetch_assoc(mysql_query('SELECT * FROM `users_animal` WHERE `uid` = "' . $this->u->info['id'] . '" AND `id` = "' . $this->u->info['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); + $a = mysql_fetch_assoc( + mysql_query( + 'SELECT * FROM `users_animal` WHERE `uid` = "' . $this->u->info['id'] . '" AND `id` = "' . $this->u->info['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1' + ) + ); if ($this->u->stats['hpNow'] < 1) { echo 'Вы не можете выпустить зверя, вы потеряли все НР'; } elseif (isset($a['id']) && $a['eda'] < 1) { @@ -1210,7 +1337,11 @@ class priems 6 => 'Свин', 7 => 'Дракон', ]; - $id = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `test_bot` WHERE `login` = "' . $tp[$a['type']] . ' [' . $a['level'] . ']" LIMIT 1')); + $id = mysql_fetch_assoc( + mysql_query( + 'SELECT `id` FROM `test_bot` WHERE `login` = "' . $tp[$a['type']] . ' [' . $a['level'] . ']" LIMIT 1' + ) + ); if (isset($id['id']) && $btl->info['type'] != 500) { $b = $this->u->addNewbot($id['id'], null, null); if ($b > 0 && $b != false) { @@ -1219,7 +1350,8 @@ class priems $a['eda'] = 0; } - $vLog = 'time1=' . time() . '||s1=' . $this->u->info['sex'] . '||t1=' . $this->u->info['team'] . '||login1=' . $this->u->info['login'] . ''; + $vLog = 'time1=' . time( + ) . '||s1=' . $this->u->info['sex'] . '||t1=' . $this->u->info['team'] . '||login1=' . $this->u->info['login'] . ''; $mas1 = [ 'time' => time(), 'battle' => $btl->info['id'], @@ -1236,9 +1368,15 @@ class priems $mas1['text'] = "{tm1} {u1} выпустил$sex зверя "" . $a['name'] . '"'; $btl->add_log($mas1); - mysql_query('UPDATE `users` SET `login` = "' . $a['name'] . ' (зверь ' . $this->u->info['login'] . ')",`obraz` = "' . $a['obraz'] . '.gif",`battle` = "' . $btl->info['id'] . '" WHERE `id` = "' . $b['id'] . '" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team` = "' . $this->u->info['team'] . '" WHERE `id` = "' . $b['id'] . '" LIMIT 1'); - mysql_query('UPDATE `users_animal` SET `eda` = "' . $a['eda'] . '" WHERE `id` = "' . $a['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `users` SET `login` = "' . $a['name'] . ' (зверь ' . $this->u->info['login'] . ')",`obraz` = "' . $a['obraz'] . '.gif",`battle` = "' . $btl->info['id'] . '" WHERE `id` = "' . $b['id'] . '" LIMIT 1' + ); + mysql_query( + 'UPDATE `stats` SET `team` = "' . $this->u->info['team'] . '" WHERE `id` = "' . $b['id'] . '" LIMIT 1' + ); + mysql_query( + 'UPDATE `users_animal` SET `eda` = "' . $a['eda'] . '" WHERE `id` = "' . $a['id'] . '" LIMIT 1' + ); $this->u->addAction(time(), 'animal_use' . $btl->info['id'], $a['level']); } else { echo 'Не удалось выпустить зверя...'; @@ -1259,7 +1397,11 @@ class priems $p = explode('|', $this->u->info['priems']); $pz = explode('|', $this->u->info['priems_z']); if ($p[(int)$id] > 0 && $pz[(int)$id] <= 0 && $this->u->info['hpNow'] >= 1) { - $pl = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `level`<=' . $this->u->info['level'] . ' AND `id` = ' . $p[(int)$id])); + $pl = mysql_fetch_assoc( + mysql_query( + 'SELECT * FROM `priems` WHERE `level`<=' . $this->u->info['level'] . ' AND `id` = ' . $p[(int)$id] + ) + ); if (isset($pl['id']) && $pl['activ'] != 1) { if ($pl['activ'] == 0) { unset($pl); @@ -1275,7 +1417,9 @@ class priems $pl['useon_user'] = $this->u->info['enemy']; if (isset($_POST['useon']) && $_POST['useon'] != '' && $_POST['useon'] != 'none') { $_POST['useon'] = iconv('UTF-8', 'windows-1251', $_POST['useon']); - $this->ue = mysql_fetch_assoc(mysql_query('SELECT + $this->ue = mysql_fetch_assoc( + mysql_query( + 'SELECT `u`.`id`,`u`.`login`,`u`.`login2`,`u`.`online`,`u`.`admin`,`u`.`city`,`u`.`cityreg`,`u`.`align`,`u`.`clan`, `u`.`level`,`u`.`money`,`u`.`money3`,`u`.`money4`,`u`.`battle`,`u`.`sex`,`u`.`obraz`,`u`.`win`,`u`.`win_t`, @@ -1298,9 +1442,13 @@ class priems `u`.`battle`="' . $btl->info['id'] . '" AND `st`.`hpNow` > 0 ) - ) ORDER BY `u`.`id` DESC LIMIT 1')); + ) ORDER BY `u`.`id` DESC LIMIT 1' + ) + ); if (isset($this->ue['id']) && $this->ue['inUser'] > 0) { - $this->ue = mysql_fetch_assoc(mysql_query('SELECT + $this->ue = mysql_fetch_assoc( + mysql_query( + 'SELECT `u`.`id`,`u`.`login`,`u`.`login2`,`u`.`online`,`u`.`admin`,`u`.`city`,`u`.`cityreg`,`u`.`align`,`u`.`clan`, `u`.`level`,`u`.`money`,`u`.`money3`,`u`.`money4`,`u`.`battle`,`u`.`sex`,`u`.`obraz`,`u`.`win`,`u`.`win_t`, @@ -1314,7 +1462,9 @@ class priems WHERE `u`.`battle`="' . $btl->info['id'] . '" AND `st`.`hpNow` > 0) AND - `u`.`id` = "' . $this->ue['inUser'] . '" ORDER BY `u`.`id` ASC LIMIT 1')); + `u`.`id` = "' . $this->ue['inUser'] . '" ORDER BY `u`.`id` ASC LIMIT 1' + ) + ); } if (!isset($this->ue['id']) && $pl['trUser'] > 0) { $notr++; @@ -1334,7 +1484,11 @@ class priems } } else { - $ga = mysql_fetch_assoc(mysql_query('SELECT * FROM `battle_act` WHERE `battle` = "' . $btl->info['id'] . '" AND `uid1` = "' . $this->u->info['id'] . '" AND `uid2` = "' . $this->u->info['enemy'] . '" LIMIT 1')); + $ga = mysql_fetch_assoc( + mysql_query( + 'SELECT * FROM `battle_act` WHERE `battle` = "' . $btl->info['id'] . '" AND `uid1` = "' . $this->u->info['id'] . '" AND `uid2` = "' . $this->u->info['enemy'] . '" LIMIT 1' + ) + ); if (($this->u->info['enemy'] == 0 || isset($ga['id'])) && ($pl['tr_hod'] > 0 || $pl['trUser'] > 0)) { $notr++; } @@ -1347,17 +1501,25 @@ class priems } if ($notr == 0) { - mysql_query('UPDATE `stats` SET `last_pr` = "' . $pl['id'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `stats` SET `last_pr` = "' . $pl['id'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1' + ); //Приемы на персонажах if ($this->ue['id'] > 0) { $btl->priemsRazmen([$this->u->info['id'], $this->ue['id']], 'fast'); - mysql_query('UPDATE `eff_users` SET `mark` = 1 WHERE `uid` = "' . $this->ue['id'] . '" AND `delete` = 0'); + mysql_query( + 'UPDATE `eff_users` SET `mark` = 1 WHERE `uid` = "' . $this->ue['id'] . '" AND `delete` = 0' + ); } else { $btl->priemsRazmen([$this->u->info['id'], $this->u->info['enemy']], 'fast'); - mysql_query('UPDATE `eff_users` SET `mark` = 1 WHERE `uid` = "' . $this->u->info['enemy'] . '" AND `delete` = 0'); + mysql_query( + 'UPDATE `eff_users` SET `mark` = 1 WHERE `uid` = "' . $this->u->info['enemy'] . '" AND `delete` = 0' + ); } - mysql_query('UPDATE `eff_users` SET `mark` = 1 WHERE `uid` = "' . $this->u->info['id'] . '" AND `delete` = 0'); + mysql_query( + 'UPDATE `eff_users` SET `mark` = 1 WHERE `uid` = "' . $this->u->info['id'] . '" AND `delete` = 0' + ); if (file_exists('../../_incl_data/class/priem/' . $pl['id'] . '.php')) { require('../../_incl_data/class/priem/' . $pl['id'] . '.php'); @@ -1386,12 +1548,24 @@ class priems while ($i < count($e)) { if ($e[$i] > 0) { if ($e[$i] == 258) { - $nem = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $this->u->info['id'] . '" AND `v1` = "priem" AND `v2` = "' . $e[$i] . '" AND `delete` = "0" AND `mark` = 1 LIMIT 1')); + $nem = mysql_fetch_assoc( + mysql_query( + 'SELECT * FROM `eff_users` WHERE `uid` = "' . $this->u->info['id'] . '" AND `v1` = "priem" AND `v2` = "' . $e[$i] . '" AND `delete` = "0" AND `mark` = 1 LIMIT 1' + ) + ); } else { - $nem = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $this->ue['id'] . '" AND `v1` = "priem" AND `v2` = "' . $e[$i] . '" AND `delete` = "0" AND `mark` = 1 LIMIT 1')); + $nem = mysql_fetch_assoc( + mysql_query( + 'SELECT * FROM `eff_users` WHERE `uid` = "' . $this->ue['id'] . '" AND `v1` = "priem" AND `v2` = "' . $e[$i] . '" AND `delete` = "0" AND `mark` = 1 LIMIT 1' + ) + ); } if (isset($nem['id'])) { - $nem['priem'] = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $e[$i] . '" LIMIT 1')); + $nem['priem'] = mysql_fetch_assoc( + mysql_query( + 'SELECT * FROM `priems` WHERE `id` = "' . $e[$i] . '" LIMIT 1' + ) + ); if (isset($nem['id'])) { $btl->delPriem($nem, $btl->users[$btl->uids[$this->ue['id']]], 500); } @@ -1448,18 +1622,28 @@ class priems if ($this->u->stats['magic_cast'] > 0) { $this->u->info['notrhod'] = $this->u->stats['magic_cast']; } - mysql_query('UPDATE `users` SET `notrhod` = "' . $this->u->info['notrhod'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `users` SET `notrhod` = "' . $this->u->info['notrhod'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1' + ); } if ($this->u->info['notrhod'] > 0) { if ($pl['tr_hod'] > 0) { $this->u->info['notrhod']--; - mysql_query('UPDATE `users` SET `notrhod` = "' . $this->u->info['notrhod'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `users` SET `notrhod` = "' . $this->u->info['notrhod'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1' + ); } } else { - $a1 = mysql_fetch_assoc(mysql_query('SELECT * FROM `battle_act` WHERE `battle` = "' . $btl->info['id'] . '" AND `uid2` = "' . $this->u->info['id'] . '" AND `uid1` = "' . $this->u->info['enemy'] . '" LIMIT 1')); + $a1 = mysql_fetch_assoc( + mysql_query( + 'SELECT * FROM `battle_act` WHERE `battle` = "' . $btl->info['id'] . '" AND `uid2` = "' . $this->u->info['id'] . '" AND `uid1` = "' . $this->u->info['enemy'] . '" LIMIT 1' + ) + ); if (isset($a1['id'])) { //противник ударил, пишем что игрок 2 пропустил ход - mysql_query('UPDATE `battle_act` SET `out2` = "1",`tpo2` = "2" WHERE `id` = "' . $a1['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `battle_act` SET `out2` = "1",`tpo2` = "2" WHERE `id` = "' . $a1['id'] . '" LIMIT 1' + ); $a1['out2'] = 1; $a1['tpo2'] = 2; $btl->atacks[$a1['id']] = $a1; @@ -1467,7 +1651,10 @@ class priems $btl->startAtack($a1['id']); } else { //бьем противника с пропуском хода - mysql_query('INSERT INTO `battle_act` (`battle`,`uid1`,`uid2`,`time`,`out1`,`type`,`tpo1`) VALUES ("' . $btl->info['id'] . '","' . $this->u->info['id'] . '","' . $this->u->info['enemy'] . '","' . time() . '","1","1","2")'); + mysql_query( + 'INSERT INTO `battle_act` (`battle`,`uid1`,`uid2`,`time`,`out1`,`type`,`tpo1`) VALUES ("' . $btl->info['id'] . '","' . $this->u->info['id'] . '","' . $this->u->info['enemy'] . '","' . time( + ) . '","1","1","2")' + ); } } } @@ -1510,30 +1697,32 @@ class priems $uid = $this->ue['id']; } if (isset($j['onlyOne'])) { - $mpr = Db::getRow('select * from eff_users where v2 = ? and uid = ? and `delete` = 0 and mark = 1', - [$pl['id'], $uid]); + $mpr = Db::getRow( + 'select * from eff_users where v2 = ? and uid = ? and `delete` = 0 and mark = 1', + [$pl['id'], $uid] + ); //$mpr = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `v2` = "' . $pl['id'] . '" AND `uid` = "' . $uid . '" AND `delete` = "0" AND `mark` = 1 LIMIT 1')); } -// if ($pl['cancel_eff2'] != '') { -// $i = 0; -// $e = explode(',', $pl['cancel_eff2']); -// while ($i < count($e)) { -// if ($e[$i] > 0) { -// $nem = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $uid . '" AND `v1` = "priem" AND `v2` = "' . $e[$i] . '" AND `delete` = "0" AND `mark` = 1 LIMIT 1')); -// if (isset($nem['id'])) { -// $nem['priem'] = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $e[$i] . '" LIMIT 1')); -// if (isset($nem['id'])) { -// $btl->delPriem($nem, $btl->users[$btl->uids[$uid]], 2); -// if ($nem['id'] == $mpr['id']) { -// unset($mpr); -// } -// } -// } -// } -// $i++; -// } -// } + // if ($pl['cancel_eff2'] != '') { + // $i = 0; + // $e = explode(',', $pl['cancel_eff2']); + // while ($i < count($e)) { + // if ($e[$i] > 0) { + // $nem = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $uid . '" AND `v1` = "priem" AND `v2` = "' . $e[$i] . '" AND `delete` = "0" AND `mark` = 1 LIMIT 1')); + // if (isset($nem['id'])) { + // $nem['priem'] = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $e[$i] . '" LIMIT 1')); + // if (isset($nem['id'])) { + // $btl->delPriem($nem, $btl->users[$btl->uids[$uid]], 2); + // if ($nem['id'] == $mpr['id']) { + // unset($mpr); + // } + // } + // } + // } + // $i++; + // } + // } if (!empty($pl['cancel_eff2'])) { $this->cancelEffects($pl['cancel_eff2'], $uid, $btl); @@ -1571,15 +1760,21 @@ class priems } if ($pl['id'] == 239) //Вывод приемов которые не моментальные как бы { - $btl->priemAddLogFast($uid, 0, $pl['name'], - '{tm' . $this->u->info['team'] . '} ' . $btl->addlt(1, 17, $btl->users[$btl->uids[$uid]]['sex'], - null) . '', - 1, time()); + $btl->priemAddLogFast( + $uid, 0, $pl['name'], + '{tm' . $this->u->info['team'] . '} ' . $btl->addlt( + 1, 17, $btl->users[$btl->uids[$uid]]['sex'], + null + ) . '', + 1, time() + ); } - + $uu = $pl['id'] === 260 ? '' : $this->u->info['id']; - Db::sql('insert into eff_users (hod, v1, v2, img2, id_eff, uid, name, data, overType, timeUse, user_use) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', - [$hd1, 'priem', $pl['id'], $pl['img'] . '.gif', 22, $uid, $pl['name'], $data, 0, $tm, $uu]); + Db::sql( + 'insert into eff_users (hod, v1, v2, img2, id_eff, uid, name, data, overType, timeUse, user_use) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', + [$hd1, 'priem', $pl['id'], $pl['img'] . '.gif', 22, $uid, $pl['name'], $data, 0, $tm, $uu] + ); unset($hd1, $uu); //отнимаем тактики @@ -1620,7 +1815,9 @@ class priems if ($j['refHod'] == 1) { $mpr['hod'] = $pl['limit']; } - $upd = mysql_query('UPDATE `eff_users` SET `hod` = "' . $mpr['hod'] . '",`data` = "' . $j1 . '",`x` = `x`+1 WHERE `id` = "' . $mpr['id'] . '" LIMIT 1'); + $upd = mysql_query( + 'UPDATE `eff_users` SET `hod` = "' . $mpr['hod'] . '",`data` = "' . $j1 . '",`x` = `x`+1 WHERE `id` = "' . $mpr['id'] . '" LIMIT 1' + ); if ($upd) { //отнимаем тактики $this->mintr($pl); @@ -1696,7 +1893,9 @@ class priems while ($i < count($pe)) { if ($pl['sbr'] == 0) { //все блокируем - $psp = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . ((int)$pe[$i]) . '" LIMIT 1')); + $psp = mysql_fetch_assoc( + mysql_query('SELECT * FROM `priems` WHERE `id` = "' . ((int)$pe[$i]) . '" LIMIT 1') + ); } else { //Только текущую школу магии $imgnm = ''; @@ -1707,7 +1906,11 @@ class priems $imgnm = $nm[0] . '%'; } //только данной школы - $psp = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . ((int)$pe[$i]) . '" AND `img` LIKE "' . $imgnm . '" LIMIT 1')); + $psp = mysql_fetch_assoc( + mysql_query( + 'SELECT * FROM `priems` WHERE `id` = "' . ((int)$pe[$i]) . '" AND `img` LIKE "' . $imgnm . '" LIMIT 1' + ) + ); } if ($pl['noprid'] == 0 && isset($psp['id']) && $psp['tr_hod'] == 0 && $psp['type_pr'] == 1 && $psp['noprid'] == 0) { if ($pl['actprid2'] > 0) { @@ -1790,7 +1993,9 @@ class priems } } $this->u->info['mpNow'] = $btl->users[$btl->uids[$this->u->info['id']]]['mpNow']; - mysql_query('UPDATE `stats` SET `mpNow` = "' . $this->u->info['mpNow'] . '",`priems_z` = "' . $pz . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `stats` SET `mpNow` = "' . $this->u->info['mpNow'] . '",`priems_z` = "' . $pz . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1' + ); } public function reuns($id) @@ -1801,7 +2006,11 @@ class priems //снимаем прием $p[(int)$id] = 0; $p = implode('|', $p); - mysql_query('UPDATE `stats` SET `priems` = "' . mysql_real_escape_string($p) . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `stats` SET `priems` = "' . mysql_real_escape_string( + $p + ) . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1' + ); $this->u->info['priems'] = $p; } } @@ -1813,7 +2022,11 @@ class priems public function uns($id) { global $u, $c, $code; - $pl = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `level`<="' . $this->u->info['level'] . '" AND `activ` > "0" AND `id` = "' . $id . '" LIMIT 1')); + $pl = mysql_fetch_assoc( + mysql_query( + 'SELECT * FROM `priems` WHERE `level`<="' . $this->u->info['level'] . '" AND `activ` > "0" AND `id` = "' . $id . '" LIMIT 1' + ) + ); if (!isset($pl['id']) || $this->testpriem($pl, 1) != 0) { return; } @@ -1839,7 +2052,9 @@ class priems //одеваем прием $p[$non] = $pl['id']; $p = implode('|', $p); - $upd = mysql_query('UPDATE `stats` SET `priems` = "' . $p . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + $upd = mysql_query( + 'UPDATE `stats` SET `priems` = "' . $p . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1' + ); if ($upd) { $this->u->info['priems'] = $p; } @@ -1859,16 +2074,20 @@ class priems $pr = ''; while ($i < $this->u->info['priemslot']) { if ($p[$i] > 0) { - $pl = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `level`<="' . $this->u->info['level'] . '" AND `activ` > "0" AND `id` = "' . mysql_real_escape_string($p[$i]) . '" LIMIT 1')); + $pl = mysql_fetch_assoc( + mysql_query( + 'SELECT * FROM `priems` WHERE `level`<="' . $this->u->info['level'] . '" AND `activ` > "0" AND `id` = "' . mysql_real_escape_string( + $p[$i] + ) . '" LIMIT 1' + ) + ); $lvar = $this->priemInfo($pl, $t, $i); $pz = $lvar[1]; $lvar = $lvar[0]; if ($t == 1) { if (isset($_GET['inv'])) { - //$cl = 'href="main.php?skills=1&rz=4"'; $cl = 'href="javascript:void(0)" onclick="location.href=\'main.php?all=' . ((int)$_GET['all']) . '&skills=1&rz=4&p_raz=all\'"'; } else { - //$cl = 'href="main.php?skills=1&rz=4&unuse_priem='.$i.'&rnd='.$code.'"'; $cl = 'href="javascript:void(0)" onclick="location.href=\'main.php?all=' . ((int)$_GET['all']) . '&skills=1&unuse_priem=' . $i . '&rz=4&p_raz=\' + p_raz"'; } } else { @@ -1909,26 +2128,26 @@ class priems $cl2 = ''; $cli2 = ''; if ((($pz[$i] > 0 || $notr > 0) && $t == 2) || (isset($this->u->stats['nopriems']) && $pl['nosh'] == 0) || $this->u->stats['notuse_last_pr'] == $pl['id']) { - //$cl2 = 'filter: alpha(opacity=15); -moz-opacity: 0.15; -khtml-opacity: 0.15; opacity: 0.15;'; $cli2 = ' class="nopriemuse" '; } $pr .= ''; } else { - //if($t==1) - //{ + if (isset($_GET['inv'])) { $pr .= ''; } else { $pr .= ''; } - //} + } $i++; } if ($this->u->info['animal'] > 0 && $t == 2) { - $use_lst = $this->u->testAction('`uid` = "' . $this->u->info['id'] . '" AND `vars` = "animal_use' . $btl->info['id'] . '" LIMIT 1', - 1); + $use_lst = $this->u->testAction( + '`uid` = "' . $this->u->info['id'] . '" AND `vars` = "animal_use' . $btl->info['id'] . '" LIMIT 1', + 1 + ); if (!isset($use_lst['id'])) { $cl2 = ''; $pr .= ''; @@ -1953,15 +2172,21 @@ class priems $notr = 0; if ($t == 2 && $pl['id'] == 181) { - $imun = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $this->u->info['enemy'] . '" and `v2`="191" and `delete`="0" LIMIT 1')); + $imun = mysql_fetch_assoc( + mysql_query( + 'SELECT * FROM `eff_users` WHERE `uid` = "' . $this->u->info['enemy'] . '" and `v2`="191" and `delete`="0" LIMIT 1' + ) + ); if ($imun) { $notr++; } } if (isset($btl->stats[$btl->uids[$this->u->info['id']]]['nousepriem']) && $btl->stats[$btl->uids[$this->u->info['id']]]['nousepriem'] > 0 && $pl['nosh'] == 0) { - if ($btl->stats[$btl->uids[$this->u->info['id']]]['noshock_voda'] > 0 && substr($pl['img'], 0, - 10) == 'wis_water_') { + if ($btl->stats[$btl->uids[$this->u->info['id']]]['noshock_voda'] > 0 && substr( + $pl['img'], 0, + 10 + ) == 'wis_water_') { //вода } else { $notr++; @@ -1987,8 +2212,10 @@ class priems if ($pl['xuse'] > 0) { - $xu = $this->u->testAction('`vars` = "use_priem_' . $btl->info['id'] . '_' . $this->u->info['id'] . '" AND `vals` = "' . $pl['id'] . '" LIMIT ' . $pl['xuse'] . '', - 2); + $xu = $this->u->testAction( + '`vars` = "use_priem_' . $btl->info['id'] . '_' . $this->u->info['id'] . '" AND `vals` = "' . $pl['id'] . '" LIMIT ' . $pl['xuse'] . '', + 2 + ); if ($xu[0] >= $pl['xuse']) { $notr++; } @@ -2021,14 +2248,22 @@ class priems if (isset($d2['onlyOne']) || isset($d2['onlyOneX1'])) { if (isset($d2['onlyOneX1'])) { if ($d2['onlyOneX1'] == 1) { - $pru = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $this->u->info['id'] . '" AND `v2` = "' . $pl['id'] . '" AND `delete` = "0" AND `x` >= 1 LIMIT 1')); + $pru = mysql_fetch_assoc( + mysql_query( + 'SELECT * FROM `eff_users` WHERE `uid` = "' . $this->u->info['id'] . '" AND `v2` = "' . $pl['id'] . '" AND `delete` = "0" AND `x` >= 1 LIMIT 1' + ) + ); if (isset($pru['id']) && $pru['x'] >= $d2['onlyOne']) { $notr++; } } } elseif (isset($d2['onlyOne'])) { if ($d2['onlyOne'] > 1) { - $pru = mysql_fetch_assoc(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $this->u->info['id'] . '" AND `v2` = "' . $pl['id'] . '" AND `delete` = "0" AND `x` > 1 LIMIT 1')); + $pru = mysql_fetch_assoc( + mysql_query( + 'SELECT * FROM `eff_users` WHERE `uid` = "' . $this->u->info['id'] . '" AND `v2` = "' . $pl['id'] . '" AND `delete` = "0" AND `x` > 1 LIMIT 1' + ) + ); if (isset($pru['id']) && $pru['x'] >= $d2['onlyOne']) { $notr++; } @@ -2058,7 +2293,11 @@ class priems if (isset($tr['tr_type_itm1'])) { //требует наличие предмета определенного типа - $itmt = mysql_fetch_assoc(mysql_query('SELECT `u`.`id` FROM `items_users` AS `u` LEFT JOIN `items_main` AS `m` ON `m`.`id` = `u`.`item_id` WHERE `m`.`type` = "' . $tr['tr_type_itm1'] . '" AND `u`.`inOdet` > 0 AND `u`.`uid` = "' . $this->u->info['id'] . '" AND `u`.`delete` = "0" LIMIT 1')); + $itmt = mysql_fetch_assoc( + mysql_query( + 'SELECT `u`.`id` FROM `items_users` AS `u` LEFT JOIN `items_main` AS `m` ON `m`.`id` = `u`.`item_id` WHERE `m`.`type` = "' . $tr['tr_type_itm1'] . '" AND `u`.`inOdet` > 0 AND `u`.`uid` = "' . $this->u->info['id'] . '" AND `u`.`delete` = "0" LIMIT 1' + ) + ); if (!isset($itmt['id'])) { $notr++; } @@ -2066,7 +2305,9 @@ class priems if (isset($tr['tr_mpNow'])) { if (isset($btl->stats[$btl->uids[$this->u->info['id']]])) { - if ($btl->stats[$btl->uids[$this->u->info['id']]]['mpNow'] < round($tr['tr_mpNow'] / 100 * (100 - $btl->stats[$btl->uids[$this->u->info['id']]]['min_use_mp']))) { + if ($btl->stats[$btl->uids[$this->u->info['id']]]['mpNow'] < round( + $tr['tr_mpNow'] / 100 * (100 - $btl->stats[$btl->uids[$this->u->info['id']]]['min_use_mp']) + )) { $notr++; } } elseif ($this->u->info['mpNow'] < $tr['tr_mpNow']) { @@ -2082,7 +2323,11 @@ class priems } } elseif ($pl['trUser'] == 2 && $o > 0) { //требует чтобы пользователь с кем-то разменивался (при ожидании не пропадает, но не используется) - $ga = mysql_fetch_assoc(mysql_query('SELECT * FROM `battle_act` WHERE `battle` = "' . $btl->info['id'] . '" AND `uid1` = "' . $this->u->info['id'] . '" AND `uid2` = "' . $btl->users[$btl->uids[$this->u->info['id']]]['enemy'] . '" LIMIT 1')); + $ga = mysql_fetch_assoc( + mysql_query( + 'SELECT * FROM `battle_act` WHERE `battle` = "' . $btl->info['id'] . '" AND `uid1` = "' . $this->u->info['id'] . '" AND `uid2` = "' . $btl->users[$btl->uids[$this->u->info['id']]]['enemy'] . '" LIMIT 1' + ) + ); if (isset($ga['id'])) { $notr++; } @@ -2122,8 +2367,10 @@ class priems $nm = [1 => 'hit', 2 => 'krit', 3 => 'counter', 4 => 'block', 5 => 'parry', 6 => 'hp', 7 => 'spirit']; while ($j <= 6) { if ($pl['tt' . $j] > 0) { - $lvar .= ' ' . round($pl['tt' . $j], - 2) . '   '; + $lvar .= ' ' . round( + $pl['tt' . $j], + 2 + ) . '   '; } $j++; } @@ -2157,12 +2404,10 @@ class priems } else { $lvar .= '
    '; } - $pl['info'] = preg_replace("!(\#)(.*?)(\#)!ise", - "getdr('\\2',array(0=>'lvl1',1=>'ts5',2=>'mpAll'),array(0=>'" . $this->u->info['level'] . "',1=>'" . $this->u->stats['s5'] . "',2=>'" . $this->u->stats['mpAll'] . "'))", - $pl['info']); + + $pl['info'] = preg_replace_callback("!(#)(.*?)(#)!is", [$this, 'getDynamicInfo'], $pl['info']); $lvar .= $pl['info']; - $lvar = [0 => $lvar, 1 => $pz]; - return $lvar; + return [0 => $lvar, 1 => $pz]; } //Мощность / подавление / сопротивление и т.д. @@ -2283,7 +2528,9 @@ class priems if (isset($_GET['all'])) { $lvlfe = 21; } - $sp = mysql_query('SELECT * FROM `priems` WHERE `level`<="' . $lvlfe . '" AND `activ` > "0" ORDER BY `img`,`level` ASC'); + $sp = mysql_query( + 'SELECT * FROM `priems` WHERE `level`<="' . $lvlfe . '" AND `activ` > "0" ORDER BY `img`,`level` ASC' + ); $this->u->info['lvl'] = $this->u->info['level']; $lvar = ''; while ($pl = mysql_fetch_assoc($sp)) { @@ -2292,10 +2539,6 @@ class priems $lvar = $this->priemInfo($pl, 1); $lvar = $lvar[0]; $cl = ''; - $a1 = ''; - $a2 = ''; - - //$cl = 'href="javascript:void(0)" onclick="location.href=\'main.php?skills=1&unuse_priem='.$i.'&rz=4&p_raz=\' + p_raz"'; $a1 = ''; $a2 = ''; @@ -2334,13 +2577,13 @@ class priems /** Приём: Вспышка. * Файлы: 34, 67, 68, 69. - * @param $level - * @param battleClass $btl - * @param $id + * @param $level + * @param Battle $btl + * @param $id * передаётся через pruse() в номерной файл и вызывается оттуда. * @return void */ - private function fireFlash($level, battleClass $btl, $id) + private function fireFlash($level, Battle $btl, $id) { if (empty($this->ue) || $this->ue['hpNow'] <= 0 || $btl->users[$this->ue['id']]['team'] == $this->u->info['team']) { return; @@ -2348,14 +2591,20 @@ class priems $baseDamage = [8 => 40, 9 => 45, 10 => 50, 11 => 60]; $pvr = []; - $magicTargetTier = Db::getValue('select x from eff_users where uid = ? and v2 = 26 and `delete` = 0', - [$this->ue['id']]); + $magicTargetTier = Db::getValue( + 'select x from eff_users where uid = ? and v2 = 26 and `delete` = 0', + [$this->ue['id']] + ); $leveledDamage = $baseDamage[$level] + 40 / 100 * (5 * $magicTargetTier); - list($damage, $isCrit, $isMiss) = $this->magicAttack($btl, $this->u->info['id'], $this->ue['id'], $leveledDamage, self::FIRE, 1); + list($damage, $isCrit, $isMiss) = $this->magicAttack( + $btl, $this->u->info['id'], $this->ue['id'], $leveledDamage, self::FIRE, 1 + ); //Используем проверку на урон приемов - $damage = $btl->testYronPriem($this->u->info['id'], $this->ue['id'], 21, $damage, 5, - true); + $damage = $btl->testYronPriem( + $this->u->info['id'], $this->ue['id'], 21, $damage, 5, + true + ); $btl->priemYronSave($this->u->info['id'], $this->ue['id'], $damage, 0); $this->ue['hpNow'] -= $damage; @@ -2379,25 +2628,27 @@ class priems $this->u->info['id'], $this->ue['id'], "Вспышка [$level]", - '{tm1}' . sprintf(" %s %s [%d/%d]", + '{tm1}' . sprintf( + " %s %s [%d/%d]", $btl->addlt(1, 19, $this->u->info['sex'], null), $pvr['color'], $isMiss ? '--' : -$damage, (int)$this->ue['hpNow'], (int)$this->ue['hpAll'] ), - $btl->hodID + 1); + $btl->hodID + 1 + ); } /** Приём: Цель {стихия} * Файлы: 25, 26, 27, 28. - * @param $element - * @param $pl - * @param $id - * @param battleClass $btl + * @param $element + * @param $pl + * @param $id + * @param Battle $btl * @return bool (bool) достигнут ли лимит по стаку заклинаний. */ - private function magicTarget($element, $pl, $id, battleClass $btl) + private function magicTarget($element, $pl, $id, Battle $btl) { $data = [ self::WATER => [25, 'воды'], @@ -2409,8 +2660,10 @@ class priems return false; } - $stacked = Db::getRow('select id, x from eff_users where uid = ? and v2 = ? and `delete` = 0', - [$this->ue['id'], $data[$element][0]]); + $stacked = Db::getRow( + 'select id, x from eff_users where uid = ? and v2 = ? and `delete` = 0', + [$this->ue['id'], $data[$element][0]] + ); $stackNumStr = $stacked['x'] > 0 ? $stacked['x'] + 1 : ''; if ($stacked['x'] >= 5) { echo "На пероснаже достигнуто максиальное количество целей"; @@ -2420,8 +2673,10 @@ class priems // Наброс эффекта от приёма. $this->addEffPr($pl, $id); - $dataStr = $stacked['x'] > 0 ? Db::getValue('select data from eff_users where id = ?', - [$stacked['id']]) : $pl['date3']; + $dataStr = $stacked['x'] > 0 ? Db::getValue( + 'select data from eff_users where id = ?', + [$stacked['id']] + ) : $pl['date3']; // Костыль. Будет работать, пока приём изменяет ОДИН параметр. $effect = "Защита от магии {$data[$element][1]}: " . current($this->lookStatsArray($dataStr)); @@ -2439,14 +2694,17 @@ class priems $this->u->info['id'], $this->ue['id'], "$name", - '{tm1}' . sprintf(" %s. (%s)", - $btl->addlt(1, 19, $this->u->info['sex'], null), $effect), - $btl->hodID); + '{tm1}' . sprintf( + " %s. (%s)", + $btl->addlt(1, 19, $this->u->info['sex'], null), $effect + ), + $btl->hodID + ); return false; } - public function devouringFlame($id, $uid, $j_id, battleClass $btl) + public function devouringFlame($id, $uid, $j_id, Battle $btl) { $a = 0; $u1 = 0; @@ -2477,60 +2735,114 @@ class priems $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'], $u1, 12, $pvr['hp'], 7, true, false, 1); + $pvr['hp'] = $btl->testYronPriem( + $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'], $u1, 12, $pvr['hp'], 7, true, false, 1 + ); $pvr['hpNow'] -= $pvr['hp']; $btl->priemYronSave($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'], $u1, $pvr['hp'], 0); - if ($pvr['hpNow'] > $pvr['hpAll']) { - $pvr['hpNow'] = $pvr['hpAll']; - } elseif ($pvr['hpNow'] < 0) { - $pvr['hpNow'] = 0; - } + $pvr['hpNow'] = $this->zeromax($pvr['hpNow'], $pvr['hpAll']); $btl->stats[$btl->uids[$u1]]['hpNow'] = $pvr['hpNow']; - //mysql_query('UPDATE `stats` SET `hpNow` = ' . $btl->stats[$btl->uids[$u1]]['hpNow'] . ' WHERE `id` = ' . $u1); - Db::sql('update stats set hpNow = ? where id = ?', [$btl->stats[$btl->uids[$u1]]['hpNow'], $this->ue['id']]); + Db::sql('update stats set hpNow = ? where id = ?', [$btl->stats[$btl->uids[$u1]]['hpNow'], $u1]); $color = $this->logColor[self::FIRE]; $prv['text'] = '{u2} утратил здоровье от "{pr}" '; if ($pvr['promah_type'] == 2) { $pvr['hp'] = '-'; } - $prv['text'] .= sprintf("%s [%d/%d]", $color, -$pvr['hp'], $pvr['hpNow'], $pvr['hpAll']); + $prv['text'] .= sprintf( + "%s [%d/%d]", $color, -$pvr['hp'], $pvr['hpNow'], $pvr['hpAll'] + ); - $btl->priemAddLog($id, 1, 2, $u2, $u1, "$pName", $prv['text'], ($btl->hodID)); + $btl->priemAddLog( + $id, 1, 2, $u2, $u1, "$pName", $prv['text'], ($btl->hodID) + ); } /** Пожирающее пламя. Первичный каст на противника, на котором нет эффекта. * Кастуется на 5 ходов. Считает сколько урона будет наноситься следующие 5 ходов. * Конечный damage после множителей делится на 5 и пишется в БД (atgm=). * Файлы: 33, 56, 57, 58, 59, 60. - * @param $id - * @param array $pl массив значений из БД priems. - - * @param battleClass $btl + * @param $id + * @param array $pl массив значений из БД priems. + * @param Battle $btl * @return void */ - private function devouringFlameInit($id, array $pl, battleClass $btl) + private function devouringFlameInit($id, array $pl, Battle $btl) { - echo $pl['level']; - $baseDamage = [6 => 53, 7 => 63, 8 => 77, 9 => 91, 10 => 110, 11 => 133, ]; - list($damage, , $isMiss) = $this->magicAttack($btl, $this->u->info['id'], $this->ue['id'], $baseDamage[$pl['level']], self::FIRE); + $baseDamage = [6 => 53, 7 => 63, 8 => 77, 9 => 91, 10 => 110, 11 => 133,]; + list($damage, , $isMiss) = $this->magicAttack( + $btl, $this->u->info['id'], $this->ue['id'], $baseDamage[$pl['level']], self::FIRE + ); if ($isMiss || $damage <= 0) { return; } $color = $this->logColor[self::FIRE]; $logText = '{tm1}' . $btl->addlt(1, 19, $btl->users[$btl->uids[$this->u->info['id']]]['sex'], null) . '.'; - $btl->priemAddLog($id, 1, 2, $this->u->info['id'], $this->ue['id'], "{$pl['name']}", $logText, $btl->hodID + 1); + $btl->priemAddLog( + $id, 1, 2, $this->u->info['id'], $this->ue['id'], "{$pl['name']}", + $logText, $btl->hodID + 1 + ); $data = $this->impStats(['atgm' => max(floor($damage / 5), 1)]); - $this->addPriem($this->ue['id'], $pl['id'], $data, 0, 77, 5, $this->u->info['id'], 1, 'пожирающеепламя', 0, 0, 1); + $this->addPriem( + $this->ue['id'], $pl['id'], $data, 0, 77, 5, $this->u->info['id'], 1, 'пожирающеепламя', 0, 0, 1 + ); } + + /** Кристаллизация. Отнимает от максимального стата (кроме выносливости) 20 на 3 хода. + * Если есть одинаковые статы из них выбирается случайный. + * Файл:267, приём 268. Понимай как хочешь. + * @param $id + * @param array $pl + * @param Battle $btl + * @return void + */ + private function crystalize($id, array $pl, Battle $btl) + { + $q = 'select stats as data from stats where id = ? + union all select stats as data from test_bot where id = ? + union all select data from eff_users where `delete` = 0 and uid = ? + union all select data from items_users where inOdet > 0 and `delete` = 0 and uid = ?'; + $datas = Db::getColumn($q, array_fill(0, 3, $this->ue['id'])); + $stats = array_fill_keys(['s1', 's2', 's3', 's5', 's6'], 0); + foreach ($datas as $data) { + $data = $this->lookStatsArray($data); + print_r($data); + foreach (array_keys($stats) as $stat) { + if (isset($data[$stat])) { + $stats[$stat] += $data[$stat]; + } + if (isset($data['add_' . $stat])) { + $stats[$stat] += $data['add_' . $stat]; + } + } + } + $maxValue = max($stats); + $maxKeys = []; + + foreach ($stats as $k => $v) { + if ($maxValue == $v) { + $maxKeys[] = $k; + } + } + shuffle($maxKeys); + $datastr = "|add_{$maxKeys[0]}=-20"; + $debuffstr = "Замороженная " . mb_strtolower($this->u->is[$maxKeys[0]]); + + $color = $this->logColor[self::WATER]; + $logText = '{tm1}' . $btl->addlt(1, 19, $btl->users[$btl->uids[$this->u->info['id']]]['sex'], null) . '.'; + $btl->priemAddLog( + $id, 1, 2, $this->u->info['id'], $this->ue['id'], + "{$pl['name']}: $debuffstr", $logText, $btl->hodID + 1 + ); + + $this->addPriem($this->ue['id'], 268, $datastr, 2, 77, 3, $this->u->info['id'], 3, 0, 0, 1); + } + } - -$priem = new priems(); - diff --git a/_incl_data/class/PriemsMain.php b/_incl_data/class/PriemsMain.php deleted file mode 100644 index 3843c79c..00000000 --- a/_incl_data/class/PriemsMain.php +++ /dev/null @@ -1,14 +0,0 @@ - [1, '01', 'Январь', 'Январьский'], 2 => [2, '02', 'Февраль', 'Февральский'], @@ -23,8 +18,8 @@ class season 11 => [11, '11', 'Ноябрь', 'Ноябрьский'], 12 => [12, '12', 'Декабрь', 'Декабрьский'], ]; - - public static $date = [], $m = []; + public static $date = []; + public static $m = []; public static function data($val) { @@ -33,5 +28,4 @@ class season self::$m = []; } } - } diff --git a/_incl_data/class/Telegram.php b/_incl_data/class/Telegram.php new file mode 100644 index 00000000..e9e301f9 --- /dev/null +++ b/_incl_data/class/Telegram.php @@ -0,0 +1,170 @@ +readGood(' . $id . ',"https://img.new-combats.com/i/misc/read.gif"); nobtext(' . $id . ');'; + } + } + } + + public function lockMsg($id, $uid) + { + $msg = mysql_fetch_array(mysql_query('SELECT * FROM `telegram` WHERE `id`="' . $id . '" AND `uid`="' . $uid . '" LIMIT 1 FOR UPDATE')); + if (isset($msg['id'])) { + $lock = [0 => 1, 1 => 0]; + mysql_query('START TRANSACTION'); + $upd = mysql_query('UPDATE `telegram` SET `read`="1",`lock`="' . $lock[$msg['lock']] . '" WHERE `id` = "' . $id . '" AND `uid`="' . $uid . '" LIMIT 1'); + mysql_query('COMMIT'); + if ($upd) { + if ($lock[$msg['lock']] == 1) { + echo ''; + } else { + echo ''; + } + } + } + } + + public function deleteMsgAll($uid, $pg) + { + mysql_query('START TRANSACTION'); + $upd = mysql_query('UPDATE `telegram` SET `delete`="1" WHERE `uid`="' . $uid . '" AND `read`="1" AND `lock`="0" AND `delete`="0"'); + mysql_query('COMMIT'); + if ($upd) { + echo ''; + } + } + + public function deleteMsg($id, $uid, $pg) + { + $msg = mysql_fetch_array(mysql_query('SELECT * FROM `telegram` WHERE `id`="' . $id . '" AND `uid`="' . $uid . '" LIMIT 1 FOR UPDATE')); + if (isset($msg['id'])) { + mysql_query('START TRANSACTION'); + $upd = mysql_query('UPDATE `telegram` SET `delete`="1" WHERE `id` = "' . $id . '" AND `uid`="' . $uid . '" LIMIT 1'); + mysql_query('COMMIT'); + if ($upd && $msg['delete'] == 0 && $msg['lock'] == 0) { + echo ''; + } + } + } + + private function addMsgTable($id, $from, $fromType, $ttl, $time, $lock, $read, $pg) + { + $i1 = ''; + if ($read == 1) { + $i1 = ''; + } + + if ($lock == 1) { + $i1 = ''; + } + + if ($fromType == 1) { + $from = '' . $from . ''; + } elseif ($read == 0) { + $from = '' . $from . ''; + } + + echo ' + + + + + + + + +
    ' . $i1 . '
    ' . $from . '' . substr($ttl, 0, 30) . '...' . date('d.m.y H:i', $time) . '
    + '; + } + + public function seeMsg($uid, $page, $maxPages) + { + $page = ceil($page); + echo ' + + + + + + + + + +
    От когоЗаголовок сообщенияКогда
    Блокировка сообщений
    Удалить все прочитанные сообщения
    '; + + $i = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `telegram` WHERE `uid`="' . $uid . '" AND `delete`="0"')); + $pg = ceil($i[0] / $maxPages); + if ($page < 0) { + $page = 0; + } elseif ($page > $pg) { + $page = $pg; + } + + if ($i[0] > 0) { + $sp = mysql_query('SELECT * FROM `telegram` WHERE `uid`="' . $uid . '" AND `delete`="0" ORDER BY `id` DESC LIMIT ' . (($page - 1) * $maxPages) . ' , ' . $maxPages . ''); + while ($pl = mysql_fetch_array($sp)) { + $this->addMsgTable($pl['id'], $pl['from'], $pl['fromType'], $pl['text'], $pl['time'], $pl['lock'], $pl['read'], $page); + } + } + + if ($i[0] == 0) { + echo '
    Сообщений нет
    '; + } elseif ($i[0] > $maxPages) { + $pages = ''; + $i = 1; + while ($i <= $pg) { + $cls = ''; + if ($page == $i) { + $cls = 'style="color:#6f0000; font-size:14px;"'; + } + $pages .= ' ' . $i . ''; + $i++; + } + echo ' + + + + + + + + +
    Страницы: ' . $pages . '
    '; + } + } + + public function __clone() + { + trigger_error('Дублирование не допускается.', E_USER_ERROR); + } +} diff --git a/_incl_data/class/Tournir.php b/_incl_data/class/Tournir.php new file mode 100644 index 00000000..f336d27f --- /dev/null +++ b/_incl_data/class/Tournir.php @@ -0,0 +1,491 @@ + 'Выжить любой ценой', 1 => 'Каждый сам за себя', 2 => 'Захват ключа',]; + + public function __construct() + { + $this->u = User::start(); + $this->start(); + $this->locationSee(); + } + + private function start() + { + $this->info = mysql_fetch_array(mysql_query('SELECT * FROM `turnirs` WHERE `id` = "' . $this->u->info['inTurnirnew'] . '" LIMIT 1')); + $this->user = mysql_fetch_array(mysql_query('SELECT * FROM `users_turnirs` WHERE `turnir` = "' . $this->u->info['inTurnirnew'] . '" AND `bot` = "' . $this->u->info['id'] . '" LIMIT 1')); + } + + private function startTurnir() + { + $row = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `win` = "0" AND `lose` = "0" AND `nich` = "0"')); + if ($row[0] <= 0 || $this->info['status'] == 3) { + if ($this->info['status'] == 3) { + $this->finishTurnir(); + } + } else { + mysql_query('UPDATE `turnirs` SET `status` = "3" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + //Создание поединка + mysql_query('INSERT INTO `battle` (`city`,`time_start`,`timeout`,`type`,`turnir`) VALUES ("' . $this->u->info['city'] . '","' . time() . '","60","1","' . $this->info['id'] . '")'); + $uri = mysql_insert_id(); + //Закидываем персонажей в поединок + mysql_query('UPDATE `users` SET `battle` = "' . $uri . '" WHERE `inUser` = "0" AND `inTurnirnew` = "' . $this->info['id'] . '"'); + //Обозначаем завершение турнира при выходе + die('Перейтиде в раздел "поединки"...'); + } + } + + private function finishTurnir() + { + $this->info = mysql_fetch_array(mysql_query('SELECT * FROM `turnirs` WHERE `id` = "' . $this->u->info['inTurnirnew'] . '" LIMIT 1')); + if ($this->info['status'] == 3) { + $win = ''; + $lose = ''; + $sp = mysql_query('SELECT * FROM `users_turnirs` WHERE `turnir` = "' . $this->info['id'] . '" ORDER BY `points` DESC'); + while ($pl = mysql_fetch_array($sp)) { + mysql_query('DELETE FROM `users_turnirs` WHERE `turnir` = "' . $this->info['id'] . '"'); + $inf = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $pl['uid'] . '" LIMIT 1')); + $bot = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $pl['bot'] . '" LIMIT 1')); + if (isset($inf['id'], $bot['id'])) { + //выдаем призы и т.д + mysql_query('DELETE FROM `users` WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `stats` WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $bot['id'] . '" LIMIT 1000'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $bot['id'] . '" LIMIT 1000'); + } + + if ($pl['team'] == $this->info['winner'] && $this->info['winner'] != 0) { + + $inf['add_expn'] = 3000; + + $inf['add_expp'] = [0, 1, 5, 10, 15, 25, 35, 70, 100, 150, 200, 300, 500, 700, 1000]; + + //получаем опыт (с 0 по 12 лвл) + $inf['add_expn'] = [10, 30, 55, 62, 92, 180, 350, 1350, 4500, 7000, 21000, 30000, 35000]; + $inf['add_expn'] = $inf['add_expn'][$inf['level']]; + + mysql_query('UPDATE `users` SET `win` = `win` + 1,`win_t` = `win_t` + 1 WHERE `id` = "' . $inf['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `exp` = `exp` + ' . $inf['add_expn'] . ' WHERE `id` = "' . $inf['id'] . '" LIMIT 1'); + $win .= '' . $inf['login'] . ', '; + + $r = 'Турнир завершен. Вы являетесь победителем турнира, получено опыта: ' . $inf['add_expn'] . '.'; + + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','" . $inf['room'] . "','','" . $inf['login'] . "','" . $r . "','" . time() . "','6','0')"); + } elseif ($pl['team'] != $this->info['winner'] && $this->info['winner'] != 0) { + mysql_query('UPDATE `users` SET `lose` = `lose` + 1,`lose_t` = `lose_t` + 1 WHERE `id` = "' . $inf['id'] . '" LIMIT 1'); + + $lose .= '' . $inf['login'] . ', '; + + } else { + mysql_query('UPDATE `users` SET `nich` = `nich` + 1 WHERE `id` = "' . $inf['id'] . '" LIMIT 1'); + } + mysql_query('DELETE FROM `users_turnirs` WHERE `uid` = "' . $inf['id'] . '" LIMIT 1'); + } + mysql_query('UPDATE `users` SET `inUser` = "0",`inTurnirnew` = "0" WHERE `inTurnirnew` = "' . $this->info['id'] . '" LIMIT ' . $this->info['users_in']); + mysql_query('UPDATE `turnirs` SET `chat` = 4 , `winner` = -1,`users_in` = 0,`status` = 0,`winner` = -1,`step` = 0,`time` = "' . (time() + $this->info['time2']) . '",`count` = `count` + 1 WHERE `id` = ' . $this->info['id'] . ' LIMIT 1'); + + if ($win != '') { + $win = rtrim($win, ', '); + $lose = rtrim($lose, ', '); + $win = 'Победители турнира: ' . $win . '. Проигравшая сторона: ' . $lose . '. Следующий турнир начнется через ' . $this->u->timeOut($this->info['time2']) . ' (' . date('d.m.Y H:i', (time() + $this->info['time2'])) . ').'; + } else { + $win = 'Победители турнира отсутствует. Следующий турнир начнется через ' . $this->u->timeOut($this->info['time2']) . ' (' . date('d.m.Y H:i', (time() + $this->info['time2'])) . ').'; + } + $r = 'Турнир завершен. ' . $win; + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','','','','" . $r . "','" . time() . "','6','0')"); + } + } + + private function locationSee() + { + $r = ''; + $tm1 = ''; + $tm2 = ''; + $noitm = [869 => 1, 1246 => 1, 155 => 1, 1245 => 1, 678 => 1]; + + //получение комплекта + if ($this->info['step'] != 3 && $this->info['step'] != 0 && isset($_GET['gocomplect']) && $this->user['points'] < 2) { + $aso = explode(',', $this->user['items']); + $ast = explode('-', $_GET['gocomplect']); + $asg = []; + $asj = []; + $asgp = []; + + $i = 0; + while ($i < count($aso)) { + if ($aso[$i] > 0) { + $asg[$aso[$i]] = true; + } + $i++; + } + + $i = 0; + $j = 0; + $noitm = 0; + $addi = 1; + while ($i < count($ast)) { + if ($ast[$i] > 0) { + if (!$asg[$ast[$i]]) { + $noitm++; + } + $itm = mysql_fetch_array(mysql_query('SELECT `id`,`inSlot`,`price1` FROM `items_main` WHERE `id` = "' . mysql_real_escape_string($ast[$i]) . '" LIMIT 1')); + if (isset($itm['id'])) { + $itm2 = mysql_fetch_array(mysql_query('SELECT `iid`,`price_1` FROM `items_shop` WHERE `item_id` = "' . mysql_real_escape_string($ast[$i]) . '" AND `kolvo` > 0 LIMIT 1')); + if ($itm2['price_1'] > $itm['price1']) { + $itm['price1'] = $itm2['price_1']; + } + if ($itm['inSlot'] == 3 || $itm['inSlot'] == 10) { + $asg[$itm['inSlot']][count($asg[$itm['inSlot']])] = $itm['id']; + $asgp[$itm['inSlot']][count($asgp[$itm['inSlot']])] = $itm['price1']; + } else { + $asg[$itm['inSlot']] = $itm['id']; + $asp[$itm['inSlot']] = $itm['price1']; + } + $j++; + } + } + $i++; + } + + if ($noitm > 0) { + echo 'Использование багов карается законом!'; + $addi = 0; + } elseif (count($asg[3]) > 2) { + echo 'Вы выбрали слишком много предметов, выберите только два оружия и один щит'; + $addi = 0; + } elseif (count($asg[10]) > 3) { + echo 'Вы выбрали слишком много предметов, выберите только три кольца'; + $addi = 0; + } elseif ($j > 16) { + echo 'Вы выбрали слишком много предметов'; + $addi = 0; + } elseif ($j < 1) { + echo 'Выберите хотя бы один предмет'; + $addi = 0; + } + + if ($addi == 1) { + + $i = 0; + while ($i <= 17) { + if ($i == 10) { + if ($asg[$i][0] > 0) { + $this->u->addItem($asg[$i][0], $this->u->info['id']); + $this->user['points'] += 1 + round($asgp[$i][0]); + } + if ($asg[$i][1] > 0) { + $this->u->addItem($asg[$i][1], $this->u->info['id']); + $this->user['points'] += 1 + round($asgp[$i][1]); + } + if ($asg[$i][2] > 0) { + $this->u->addItem($asg[$i][2], $this->u->info['id']); + $this->user['points'] += 1 + round($asgp[$i][2]); + } + } elseif ($i == 3) { + if ($asg[$i][0] > 0) { + $this->u->addItem($asg[$i][0], $this->u->info['id']); + $this->user['points'] += 1 + round($asgp[$i][0]); + } + if ($asg[$i][1] > 0) { + $this->u->addItem($asg[$i][1], $this->u->info['id']); + $this->user['points'] += 1 + round($asgp[$i][1]); + } + } elseif ($asg[$i] > 0) { + $this->u->addItem($asg[$i], $this->u->info['id']); + $this->user['points'] += 1 + round($asgp[$i]); + } + $i++; + } + + mysql_query('UPDATE `users_turnirs` SET `points` = "' . $this->user['points'] . '",`items` = "0" WHERE `bot` = "' . $this->u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `ability` = "100",`skills` = "10" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `level` = "12" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `turnirs` SET `step` = "0" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + + $this->info['step'] = 0; + $this->info['items'] = '0'; + } + } + + if ($this->info['step'] == 3) { + $this->finishTurnir(); + } elseif ($this->info['step'] == 0) { + //распределяем команды + $po = [0, 0]; + $sp = mysql_query('SELECT * FROM `users_turnirs` WHERE `turnir` = "' . $this->info['id'] . '" AND `points` > 3 ORDER BY `points` DESC LIMIT ' . $this->info['users_in']); + $tmr = rand(1, 2); + if ($tmr == 1) { + $tmr = [2, 1]; + } else { + $tmr = [1, 2]; + } + while ($pl = mysql_fetch_array($sp)) { + $inf = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $pl['uid'] . '" LIMIT 1')); + $bot = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $pl['bot'] . '" LIMIT 1')); + if (isset($inf['id'], $bot['id'])) { + if ($po[1] == $po[2]) { + $tm = rand(1, 2); + } elseif ($po[1] > $po[2]) { + $tm = 2; + } else { + $tm = 1; + } + //$tm = $tmr[$tm]; + $bot['team'] = $tm; + $po[$bot['team']] += $pl['points']; + mysql_query('UPDATE `stats` SET `team` = "' . $bot['team'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users_turnirs` SET `team` = "' . $bot['team'] . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + } + mysql_query('UPDATE `turnirs` SET `step` = "1" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); + } + + $sp = mysql_query('SELECT * FROM `users_turnirs` WHERE `turnir` = "' . $this->info['id'] . '" LIMIT ' . $this->info['users_in']); + $po = [0, 0]; + while ($pl = mysql_fetch_array($sp)) { + $inf = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $pl['uid'] . '" LIMIT 1')); + $bot = mysql_fetch_array(mysql_query('SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON `u`.`id` = `st`.`id` WHERE `u`.`id` = "' . $pl['bot'] . '" LIMIT 1')); + if (isset($inf['id'], $bot['id'])) { + $po[$bot['team']] += $pl['points']; + //${'tm'.$bot['team']} .= ''.$bot['login'].' ['.$bot['level'].']
    '; + ${'tm' . $bot['team']} .= $this->u->microLogin($bot, 2) . '
    '; + } + } + $r .= ''; + $r .= '

    «' . $this->name[$this->info['type']] . '»


    Начало турнира через ' . $this->u->timeOut($this->info['time'] - time()) . '! '; + + if (isset($_GET['hpregenNowTurnir']) && ($this->u->stats['hpNow'] < $this->u->stats['hpAll'] || $this->u->stats['mpNow'] < $this->u->stats['mpAll'])) { + mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->u->stats['hpAll'] . '",`mpNow` = "' . $this->u->stats['mpAll'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); + } + + if ($this->user['points'] < 3) { + //Еще не получили обмундирование + if ($this->user['points'] < 2) { + $r .= ''; + } else { + $r .= ' '; + } + } else { + $r .= 'Вы участвуете в турнире!'; + $r .= '   '; + } + + $r .= '
    '; + if ($this->user['points'] < 3 && $this->user['items'] != '0') { + $r .= '
    '; + if ($this->user['items'] == '') { + //Выдаем предметы для выбора + $ai = ''; + + $sp = mysql_query('SELECT `a`.*,`b`.* FROM `items_shop` AS `a` LEFT JOIN `items_main` AS `b` ON (`a`.`item_id` = `b`.`id`) WHERE `a`.`sid` = 1 AND + (`a`.`r` != 5 AND `a`.`r` != 9 AND `a`.`r` <= 18 AND `a`.`kolvo` > 0 AND `cantBuy` = 0 AND `a`.`level` < 9 AND `b`.`level` < 9) AND + `b`.`class` != 6'); + while ($pl = mysql_fetch_array($sp)) { + if (!isset($noitm[$pl['item_id']])) { + $aso[$pl['inslot']][count($aso[$pl['inslot']])] = $pl; + } + } + + $j = 1; + $com = []; + while ($j <= 5) { + $i = 0; + while ($i <= 17) { + if ($i == 3) { + // + $com[$i] = $aso[$i][rand(0, count($aso[$i]) - 1)]; + } elseif ($i == 14) { + //правая рука + $com[$i] = $aso[$i][rand(0, count($aso[$i]) - 1)]; + } else { + //обмундирование + $com[$i] = $aso[$i][rand(0, count($aso[$i]) - 1)]; + if ($i == 10) { + $ai .= $com[$i]['id'] . ','; + $com[$i] = $aso[$i][rand(0, count($aso[$i]) - 1)]; + $ai .= $com[$i]['id'] . ','; + //$com[$i] = $aso[$i][rand(0,count($aso[$i])-1)]; + //$ai .= $com[$i]['id'].','; + } + } + if ($com[$i]['id'] > 0 && $i != 10) { + $ai .= $com[$i]['id'] . ','; + } + $i++; + } + $j++; + } + unset($com); + + $ai .= '0'; + $this->user['items'] = $ai; + mysql_query('UPDATE `users_turnirs` SET `items` = "' . $ai . '" WHERE `id` = "' . $this->user['id'] . '" LIMIT 1'); + } + + //Выводим предметы чтобы надеть их + $ai = explode(',', $this->user['items']); + $i = 0; + $ia = []; + while ($i < count($ai)) { + if ($ai[$i] > 0) { + $pli = mysql_fetch_array(mysql_query('SELECT `id`,`inSlot`,`name`,`type`,`img`,`level` FROM `items_main` WHERE `id` = "' . $ai[$i] . '" LIMIT 1')); + $ia[$pli['inSlot']][count($ia[$pli['inSlot']])] = $pli; + unset($pli); + } + $i++; + } + unset($ai); + + $r .= 'Выберите предметы для турнира:
    '; + ?> + + + 0) { + $j = 0; + while ($j < count($ia[$i])) { + $r .= ''; + $j++; + } + $r .= '
    '; + } + $i++; + } + + } + $r .= '
    '; + $r .= ' + + + + + + + + +
    Команда 1Команда 2
    ' . rtrim($tm1, ', ') . '' . rtrim($tm2, ', ') . '
    '; + + if (($this->info['time'] - time() < 0) && $this->info['step'] == 1) { + //начинаем турнир + $this->startTurnir(); + } + echo $r; + } +} diff --git a/_incl_data/class/__user.php b/_incl_data/class/User.php similarity index 98% rename from _incl_data/class/__user.php rename to _incl_data/class/User.php index a990e51c..618d20f2 100644 --- a/_incl_data/class/__user.php +++ b/_incl_data/class/User.php @@ -2,26 +2,7 @@ use Insallah\Db; -if (!defined('GAME')) { - die(); -} -ignore_user_abort(true); - -function getdr($s, $v, $d) -{ - global $u; - $i = 0; - while ($i < count($v)) { - if (isset($v[$i])) { - $s = str_replace('{' . $v[$i] . '}', $d[$i], $s); - } - $i++; - } - $s = eval("return (" . $s . ");"); - return floor($s); -} - -class user +class User { private static $flag_one; public $pokol = 2; //Акктуальное поколение предметов @@ -52,70 +33,13 @@ class user $city_name2 = ['emeraldscity' => 'Emeraldscity', 'abandonedplain' => 'Abandonedplain', 'capitalcity' => 'Capitalcity', 'angelscity' => 'Angelscity', 'newcapitalcity' => 'Newcapitalcity', 'demonscity' => 'Demonscity', 'fallenearth' => 'FallenEarth', 'dreamscity' => 'Dreams City', 'suncity' => 'Sun City', 'devilscity' => 'Devils City'], $stats, $info, $map, $mapUsers, $is = [ - 'acestar' => 'Следующий каст будет критическим', 'spasenie' => 'Спасение после смерти', - 'more_awards' => 'Повышеная награда %', 'exp' => 'Получаемый опыт (%)', 'align_bs' => 'Служитель закона', - 'nopryh' => 'Прямое поподание', - 'puti' => 'Запрет перемещения', - 'align' => 'Склонность', - 'hpAll' => 'Уровень жизни (HP)', - 'mpAll' => 'Уровень маны (МP)', - 'enAll' => 'Уровень энергии', - 'sex' => 'Пол', - 'lvl' => 'Уровень', - 's1' => 'Сила', 's2' => 'Ловкость', 's3' => 'Интуиция', 's4' => 'Выносливость', - 's5' => 'Интеллект', 's6' => 'Мудрость', 's7' => 'Духовность', 's8' => 'Воля', - 's9' => 'Свобода духа', 's10' => 'Божественность', 's11' => 'Энергия', - 'm1' => 'Мф. критического удара (%)', 'm2' => 'Мф. против критического удара (%)', - 'm3' => 'Мф. мощности крит. удара (%)', 'm21' => 'Мф. абс. попадания (%)', 'm4' => 'Мф. увертывания (%)', - 'm5' => 'Мф. против увертывания (%)', 'm6' => 'Мф. контрудара (%)', 'm7' => 'Мф. парирования (%)', - 'm8' => 'Мф. блока щитом (%)', 'm9' => 'Мф. удара сквозь броню (%)', 'm14' => 'Мф. абс. критического удара (%)', - 'm15' => 'Мф. абс. увертывания (%)', 'm16' => 'Мф. абс. парирования (%)', 'm17' => 'Мф. абс. контрудара (%)', - 'm18' => 'Мф. абс. блока щитом (%)', 'm19' => 'Мф. абс. магический промах (%)', 'm20' => 'Мф. удача (%)', - 'a1' => 'Мастерство владения ножами, кинжалами', 'a2' => 'Мастерство владения топорами, секирами', - 'a3' => 'Мастерство владения дубинами, молотами', 'a4' => 'Мастерство владения мечами', - 'a5' => 'Мастерство владения магическими посохами', 'a6' => 'Мастерство владения луками', - 'a7' => 'Мастерство владения арбалетами', 'aall' => 'Мастерство владения оружием', - 'mall' => 'Мастерство владения магией стихий', 'm2all' => 'Мастерство владения магией', - 'mg1' => 'Мастерство владения магией огня', 'mg2' => 'Мастерство владения магией воздуха', - 'mg3' => 'Мастерство владения магией воды', 'mg4' => 'Мастерство владения магией земли', - 'mg5' => 'Мастерство владения магией Света', 'mg6' => 'Мастерство владения магией Тьмы', - 'mg7' => 'Мастерство владения серой магией', 'tj' => 'Тяжелая броня', 'lh' => 'Легкая броня', - 'minAtack' => 'Минимальный урон', 'maxAtack' => 'Максимальный урон', 'm10' => 'Мф. мощности урона', - 'm11' => 'Мф. мощности магии стихий', 'm11a' => 'Мф. мощности магии', 'pa1' => 'Мф. мощности колющего урона', - 'pa2' => 'Мф. мощности рубящего урона', 'pa3' => 'Мф. мощности дробящего урона', 'pa4' => 'Мф. мощности режущего урона', - 'pm1' => 'Мф. мощности магии огня', 'pm2' => 'Мф. мощности магии воздуха', 'pm3' => 'Мф. мощности магии воды', - 'pm4' => 'Мф. мощности магии земли', 'pm5' => 'Мф. мощности магии Света', 'pm6' => 'Мф. мощности магии Тьмы', - 'pm7' => 'Мф. мощности серой магии', 'za' => 'Защита от урона', 'zm' => 'Защита от магии стихий', - 'zma' => 'Защита от магии', 'za1' => 'Защита от колющего урона', 'za2' => 'Защита от рубящего урона', - 'za3' => 'Защита от дробящего урона', 'za4' => 'Защита от режущего урона', 'zm1' => 'Защита от магии огня', - 'zm2' => 'Защита от магии воздуха', 'zm3' => 'Защита от магии воды', 'zm4' => 'Защита от магии земли', - 'zm5' => 'Защита от магии Света', 'zm6' => 'Защита от магии Тьмы', 'zm7' => 'Защита от серой магии', - 'magic_cast' => 'Дополнительный каст за ход', 'pza' => 'Понижение защиты от урона', 'pzm' => 'Понижение защиты от магии', - 'pza1' => 'Понижение защиты от колющего урона', 'min_heal_proc' => 'Эффект лечения (%)', 'notravma' => 'Защита от травм', - 'yron_min' => 'Минимальный урон', 'yron_max' => 'Максимальный урон', 'zaproc' => 'Блокировка Физического Урона (%)', - 'zmproc' => 'Блокировка Магического Урона (%)', 'zm2proc' => 'Защита от магии Воздуха (%)', - 'pza2' => 'Понижение защиты от рубящего урона', 'pza3' => 'Понижение защиты от дробящего урона', - 'pza4' => 'Понижение защиты от режущего урона', 'pzm1' => 'Понижение защиты от магии огня', - 'pzm2' => 'Понижение защиты от магии воздуха', 'pzm3' => 'Понижение защиты от магии воды', - 'pzm4' => 'Понижение защиты от магии земли', 'pzm5' => 'Понижение защиты от магии Света', - 'pzm6' => 'Понижение защиты от магии Тьмы', 'pzm7' => 'Понижение защиты от серой магии', - 'speedhp' => 'Регенерация здоровья (%)', 'speedmp' => 'Регенерация маны (%)', 'tya1' => 'Колющие атаки', - 'tya2' => 'Рубящие атаки', 'tya3' => 'Дробящие атаки', 'tya4' => 'Режущие атаки', 'tym1' => 'Огненные атаки', - 'mg2static_points' => 'Уровень заряда (Воздух)', 'tym2' => 'Электрические атаки', 'tym3' => 'Ледяные атаки', - 'tym4' => 'Земляные атаки', 'hpProc' => 'Уровень жизни (%)', 'mpProc' => 'Уровень маны (%)', 'tym5' => 'Атаки Света', - 'tym6' => 'Атаки Тьмы', 'tym7' => 'Серые атаки', 'min_use_mp' => 'Уменьшает расход маны', 'pog' => 'Поглощение урона', - 'pog2' => 'Поглощение урона', 'pog2p' => 'Процент поглощение урона', 'pog2mp' => 'Цена поглощение урона', - 'maxves' => 'Увеличивает рюкзак', 'bonusexp' => 'Увеличивает получаемый опыт', 'speeden' => 'Регенерация энергии (%)', - 'antm3' => 'Мф. против мощности крита', 'repair_z' => 'Бесплатное извлечение заточек', - 'repair_r' => 'Бесплатное извлечение рун', - 'yza' => 'Уязвимость физическому урона (%)', 'yzm' => 'Уязвимость магии стихий (%)', 'yzma' => 'Уязвимость магии (%)', - 'yza1' => 'Уязвимость колющему урона (%)', 'yza2' => 'Уязвимость рубящему урона (%)', 'yza3' => 'Уязвимость дробящему урона (%)', - 'yza4' => 'Уязвимость режущему урона (%)', 'yzm1' => 'Уязвимость магии огня (%)', 'yzm2' => 'Уязвимость магии воздуха (%)', - 'yzm3' => 'Уязвимость магии воды (%)', 'yzm4' => 'Уязвимость магии земли (%)', 'yzm5' => 'Уязвимость магии (%)', - 'yzm6' => 'Уязвимость магии (%)', 'yzm7' => 'Уязвимость магии (%)', 'rep' => 'Репутация Рыцаря', - 'repair_discount' => 'Скидка на ремонт вещей', 'hpVinos' => 'Бонус жизни', 'bronze' => 'Bronze Premium Account', - 'silvers' => 'Silver Premium Account', 'gold' => 'Благодать Ангела', - 'speed_dungeon' => 'Скорость передвижения по подземельям', 'zona' => 'Дополнительная зона атаки' + 'acestar' => 'Следующий каст будет критическим', 'spasenie' => 'Спасение после смерти', 'more_awards' => 'Повышеная награда %', 'exp' => 'Получаемый опыт (%)', 'align_bs' => 'Служитель закона', + 'nopryh' => 'Прямое поподание', 'puti' => 'Запрет перемещения', 'align' => 'Склонность', 'hpAll' => 'Уровень жизни (HP)', 'mpAll' => 'Уровень маны (МP)', 'enAll' => 'Уровень энергии', 'sex' => 'Пол', 'lvl' => 'Уровень', 's1' => 'Сила', 's2' => 'Ловкость', 's3' => 'Интуиция', 's4' => 'Выносливость', 's5' => 'Интеллект', 's6' => 'Мудрость', 's7' => 'Духовность', 's8' => 'Воля', 's9' => 'Свобода духа', 's10' => 'Божественность', 's11' => 'Энергия', 'm1' => 'Мф. критического удара (%)', 'm2' => 'Мф. против критического удара (%)', 'm3' => 'Мф. мощности крит. удара (%)', 'm21' => 'Мф. абс. попадания (%)', 'm4' => 'Мф. увертывания (%)', 'm5' => 'Мф. против увертывания (%)', 'm6' => 'Мф. контрудара (%)', 'm7' => 'Мф. парирования (%)', 'm8' => 'Мф. блока щитом (%)', 'm9' => 'Мф. удара сквозь броню (%)', 'm14' => 'Мф. абс. критического удара (%)', 'm15' => 'Мф. абс. увертывания (%)', 'm16' => 'Мф. абс. парирования (%)', 'm17' => 'Мф. абс. контрудара (%)', 'm18' => 'Мф. абс. блока щитом (%)', 'm19' => 'Мф. абс. магический промах (%)', 'm20' => 'Мф. удача (%)', 'a1' => 'Мастерство владения ножами, кинжалами', 'a2' => 'Мастерство владения топорами, секирами', 'a3' => 'Мастерство владения дубинами, молотами', 'a4' => 'Мастерство владения мечами', 'a5' => 'Мастерство владения магическими посохами', 'a6' => 'Мастерство владения луками', 'a7' => 'Мастерство владения арбалетами', 'aall' => 'Мастерство владения оружием', 'mall' => 'Мастерство владения магией стихий', 'm2all' => 'Мастерство владения магией', 'mg1' => 'Мастерство владения магией огня', 'mg2' => 'Мастерство владения магией воздуха', 'mg3' => 'Мастерство владения магией воды', 'mg4' => 'Мастерство владения магией земли', 'mg5' => 'Мастерство владения магией Света', 'mg6' => 'Мастерство владения магией Тьмы', 'mg7' => 'Мастерство владения серой магией', 'tj' => 'Тяжелая броня', 'lh' => 'Легкая броня', 'minAtack' => 'Минимальный урон', 'maxAtack' => 'Максимальный урон', 'm10' => 'Мф. мощности урона', 'm11' => 'Мф. мощности магии стихий', 'm11a' => 'Мф. мощности магии', 'pa1' => 'Мф. мощности колющего урона', 'pa2' => 'Мф. мощности рубящего урона', 'pa3' => 'Мф. мощности дробящего урона', 'pa4' => 'Мф. мощности режущего урона', 'pm1' => 'Мф. мощности магии огня', 'pm2' => 'Мф. мощности магии воздуха', 'pm3' => 'Мф. мощности магии воды', 'pm4' => 'Мф. мощности магии земли', 'pm5' => 'Мф. мощности магии Света', 'pm6' => 'Мф. мощности магии Тьмы', 'pm7' => 'Мф. мощности серой магии', 'za' => 'Защита от урона', 'zm' => 'Защита от магии стихий', 'zma' => 'Защита от магии', 'za1' => 'Защита от колющего урона', 'za2' => 'Защита от рубящего урона', 'za3' => 'Защита от дробящего урона', 'za4' => 'Защита от режущего урона', 'zm1' => 'Защита от магии огня', 'zm2' => 'Защита от магии воздуха', 'zm3' => 'Защита от магии воды', 'zm4' => 'Защита от магии земли', 'zm5' => 'Защита от магии Света', 'zm6' => 'Защита от магии Тьмы', 'zm7' => 'Защита от серой магии', 'magic_cast' => 'Дополнительный каст за ход', 'pza' => 'Понижение защиты от урона', 'pzm' => 'Понижение защиты от магии', 'pza1' => 'Понижение защиты от колющего урона', 'min_heal_proc' => 'Эффект лечения (%)', 'notravma' => 'Защита от травм', 'yron_min' => 'Минимальный урон', 'yron_max' => 'Максимальный урон', 'zaproc' => 'Блокировка Физического Урона (%)', 'zmproc' => 'Блокировка Магического Урона (%)', 'zm2proc' => 'Защита от магии Воздуха (%)', 'pza2' => 'Понижение защиты от рубящего урона', 'pza3' => 'Понижение защиты от дробящего урона', 'pza4' => 'Понижение защиты от режущего урона', 'pzm1' => 'Понижение защиты от магии огня', 'pzm2' => 'Понижение защиты от магии воздуха', 'pzm3' => 'Понижение защиты от магии воды', 'pzm4' => 'Понижение защиты от магии земли', 'pzm5' => 'Понижение защиты от магии Света', 'pzm6' => 'Понижение защиты от магии Тьмы', 'pzm7' => 'Понижение защиты от серой магии', 'speedhp' => 'Регенерация здоровья (%)', 'speedmp' => 'Регенерация маны (%)', 'tya1' => 'Колющие атаки', 'tya2' => 'Рубящие атаки', 'tya3' => 'Дробящие атаки', 'tya4' => 'Режущие атаки', 'tym1' => 'Огненные атаки', 'mg2static_points' => 'Уровень заряда (Воздух)', 'tym2' => 'Электрические атаки', 'tym3' => 'Ледяные атаки', 'tym4' => 'Земляные атаки', 'hpProc' => 'Уровень жизни (%)', 'mpProc' => 'Уровень маны (%)', 'tym5' => 'Атаки Света', 'tym6' => 'Атаки Тьмы', 'tym7' => 'Серые атаки', 'min_use_mp' => 'Уменьшает расход маны', 'pog' => 'Поглощение урона', 'pog2' => 'Поглощение урона', 'pog2p' => 'Процент поглощение урона', 'pog2mp' => 'Цена поглощение урона', 'maxves' => 'Увеличивает рюкзак', 'bonusexp' => 'Увеличивает получаемый опыт', 'speeden' => 'Регенерация энергии (%)', + 'antm3' => 'Мф. против мощности крита', 'repair_z' => 'Бесплатное извлечение заточек', 'repair_r' => 'Бесплатное извлечение рун', + 'yza' => 'Уязвимость физическому урона (%)', 'yzm' => 'Уязвимость магии стихий (%)', 'yzma' => 'Уязвимость магии (%)' + , 'yza1' => 'Уязвимость колющему урона (%)', 'yza2' => 'Уязвимость рубящему урона (%)', 'yza3' => 'Уязвимость дробящему урона (%)', 'yza4' => 'Уязвимость режущему урона (%)' + , 'yzm1' => 'Уязвимость магии огня (%)', 'yzm2' => 'Уязвимость магии воздуха (%)', 'yzm3' => 'Уязвимость магии воды (%)', 'yzm4' => 'Уязвимость магии земли (%)', 'yzm5' => 'Уязвимость магии (%)', 'yzm6' => 'Уязвимость магии (%)', 'yzm7' => 'Уязвимость магии (%)', 'rep' => 'Репутация Рыцаря' + , 'repair_discount' => 'Скидка на ремонт вещей', 'hpVinos' => 'Бонус жизни', 'bronze' => 'Bronze Premium Account', 'silvers' => 'Silver Premium Account', 'gold' => 'Благодать Ангела', 'speed_dungeon' => 'Скорость передвижения по подземельям', 'zona' => 'Дополнительная зона атаки' ]; public $items = [ 'tr' => ['sex', 'align', 'lvl', 's1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', 's10', 's11', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'mg1', 'mg2', 'mg3', 'mg4', 'mg5', 'mg6', 'mg7', 'mall', 'm2all', 'aall', 'rep', 'align_bs'], @@ -126,6 +50,7 @@ class user 'sv' => ['pza', 'pza1', 'pza2', 'pza3', 'pza4', 'pzm', 'pzm1', 'pzm2', 'pzm3', 'pzm4', 'pzm5', 'pzm6', 'pzm7', 'notravma', 'min_zonb', 'min_zona', 'nokrit', 'pog', 'min_use_mp', 'za1proc', 'za2proc', 'za3proc', 'za4proc', 'zaproc', 'zmproc', 'zm1proc', 'zm2proc', 'zm3proc', 'zm4proc', 'shopSale', 'shopSaleEkr', 's1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', 's10', 's11', 'aall', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'm2all', 'mall', 'mg1', 'mg2', 'mg3', 'mg4', 'mg5', 'mg6', 'mg7', 'hpAll', 'mpAll', 'enAll', 'm1', 'm2', 'm3', 'm4', 'm5', 'm6', 'm7', 'm8', 'm9', 'm14', 'm15', 'm16', 'm17', 'm18', 'm19', 'm20', 'm21', 'pa1', 'pa2', 'pa3', 'pa4', 'pm1', 'pm2', 'pm3', 'pm4', 'pm5', 'pm6', 'pm7', 'min_use_mp', 'za', 'za1', 'za2', 'za3', 'za4', 'zma', 'zm', 'zm1', 'zm2', 'zm3', 'zm4', 'zm5', 'zm6', 'zm7', 'mib1', 'mab1', 'mib2', 'mab2', 'mib3', 'mab3', 'mib4', 'mab4', 'speedhp', 'speedmp', 'm10', 'm11', 'zona', 'zonb', 'maxves', 'minAtack', 'maxAtack', 'speeden'] ]; + /**@deprecated do nothing*/ public function sys_add($uid, $time, $type, $text, $data, $time_see) { } @@ -396,19 +321,19 @@ class user } return $e; } - + /**@deprecated do nothing*/ public function add_buf($id, $tp, $uid = null, $mod = null) { } - + /**@deprecated do nothing*/ public function del_buf($id, $uid = null, $mod = null) { } - + /**@deprecated do nothing*/ public function see_buf($id, $uid = null, $mod = null) { } - + /**@deprecated do nothing*/ public function sys_see($type) { } @@ -660,7 +585,7 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` $sss = ceil($st['s4'] * 1.5); } elseif ($item['type'] == 21) { //режущий - $sss = ceil($st['s3'] * 1); + $sss = ceil($st['s3'] * 0.75); } else { //без профильного урона $sss = ceil($st['s1'] * 0.1); @@ -6961,8 +6886,21 @@ LIMIT 1')); public function lookStats($m) { - $arr = json_decode(str_replace(['=', '|'], ['":', ',"'], '{"' . $m . '}'), true); - return $arr ?: []; + $ist = []; + $di = explode('|', $m); + $i = 0; + $de = false; + while ($i < count($di)) { + $de = explode('=', $di[$i]); + if (isset($de[0], $de[1])) { + if (!isset($ist[$de[0]])) { + $ist[$de[0]] = 0; + } + $ist[$de[0]] = $de[1]; + } + $i++; + } + return $ist; } public function testItems($uid, $sn, $dt) @@ -9549,7 +9487,7 @@ LIMIT 1')); if (!isset($st['zm'])) { $st['zm'] = 0; } - $st['zm'] += $st['s4'] * 1.0; + $st['zm'] += $st['s4'] * 0.0; if (!isset($st['zaproc'])) { //Тут зм 'zaproc'=>'Защита от урона (%)','zmproc'=>'Защита от магии стихий (%) $st['zaproc'] = 0; @@ -9566,7 +9504,7 @@ LIMIT 1')); if (!isset($st['antm3'])) { $st['antm3'] = 0; } - $st['antm3'] += $st['s2'] * 0.5; + $st['antm3'] += $st['s5'] * 0.5; if (!isset($st['m10'])) { @@ -10768,5 +10706,3 @@ LIMIT 1')); } } - -$u = user::start(); diff --git a/_incl_data/class/UserRegister.php b/_incl_data/class/UserRegister.php new file mode 100644 index 00000000..56b8eda8 --- /dev/null +++ b/_incl_data/class/UserRegister.php @@ -0,0 +1,28 @@ + array(0 => 'смеется',1 => 'посмеялся над [*%l*]'), - 'fingal' => array(0 => 'трет фингал',1 => 'щупает фингал у [*%l*]'), - 'eek' => array(0 => 'ошарашен',1 => 'ошарашен действиями [*%l*]'), - 'smoke' => array(0 => 'закуривает',1 => 'предлагает [*%l*] пойти покурить'), - 'hi' => array(0 => 'приветствует всех вокруг',1 => 'приветствует [*%l*]'), - 'bye' => array(0 => 'прощается со всеми и уходит',1 => 'прощается с [*%l*]'), - 'king' => array(0 => 'коронует себя :-)',1 => 'объявляет [*%l*] своим королем!'), - 'king2' => array(0 => 'коронует себя :-)',1 => 'объявляет [*%l*] своей королевой!'), - 'boks2' => array(0 => 'вызывает всех на поединок',1 => 'предлагает [*%l*] дружеский матч'), - 'boks' => array(0 => 'обещает побить любого, кто примет вызов!',1 => 'намекает [*%l*] на поединок'), - 'gent' => array(0 => 'предлагает считать себя благородным сэром',1 => 'считает [*%l*] джельтельменом'), - 'lady' => array(0 => 'предлагает считать себя благородной леди',1 => 'считает, что [*%l*] настоящая Леди'), - 'tongue' => array(0 => 'показывает окружающим язык',1 => 'показывает язык [*%l*]'), - 'smil' => array(0 => 'болтает без умолку',1 => 'считает, что [*%l*] говорит откровенную ерунду!'), - 'ponder' => array(0 => 'кое-что усиленно обдумывает',1 => 'обещает обмозговать предложение [*%l*]'), - 'bow' => array(0 => 'сохраняя достоинство, кивает окружающим',1 => 'сохраняя достоинство кивает [*%l*]'), - 'angel' => array(0 => 'считает себя Ангелом',1 => 'считает [*%l*] своим Ангелом'), - 'angel2' => array(0 => 'грезит об Ангелах',1 => 'думает что [*%l*] Ангел'), - 'hello' => array(0 => 'желает здравствовать окружающим',1 => 'желает здравствовать [*%l*]'), - 'dont' => array(0 => 'рекомендует окружающим не делать этого',1 => 'рекомендует [*%l*] не делать этого'), - 'idea' => array(0 => 'озарен свежей идеей!',1 => 'предлагает [*%l*] обсудить пару идей'), - 'mol' => array(0 => 'преклоняется перед окружающими',1 => 'преклоняется перед [*%l*]'), - 'super' => array(0 => 'считает, что мир хорош, все дамы - Леди, а Солнце - шар дающий свет!',1 => 'фанатеет от [*%l*]'), - 'beer' => array(0 => 'вспоминает про припрятаный в заначке эликсир...',1 => 'готов поделиться с [*%l*] припрятанным эликсиром!'), - 'drink' => array(0 => 'считает, что пора пить различные эликсиры',1 => 'предлагает [*%l*] пойти пропустить по стаканчику эликсира'), - 'baby' => array(0 => 'изображает малыша',1 => ' считает, что [*%l*] еще мал и неопытен для обоснованной критики'), - 'tongue2' => array(0 => ' показывает всяким врединам язык',1 => 'показывает [*%l*] язык, проявляя недовольство'), - 'sword' => array(0 => 'готов сразиться в честном поединке',1 => 'вызывает [*%l*] на честный поединок!'), - 'agree' => array(0 => 'пожимает руку собеседникам',1 => 'пожимает руку [*%l*]'), - 'loveya' => array(0 => 'преисполнен чувства любви',1 => 'преисполнен чувства любви к [*%l*]'), - 'kiss' => array(0 => 'целует всех',1 => 'целует [*%l*]'), - 'kiss2' => array(0 => 'хочет нежно поцеловать кого-то...',1 => 'нежно целует [*%l*]'), - 'kiss3' => array(0 => 'кое-кого целует...',1 => 'нежно целует [*%l*]'), - 'kiss4' => array(0 => 'кое-кого целует...',1 => 'хочет уединиться с [*%l*] и целоваться...'), - 'rose' => array(0 => 'хочет кому-то подарить розу, но стесняется...',1 => 'дарит [*%l*] ароматную розу...'), - 'love' => array(0 => 'думает только о любви...',1 => 'думает, что [loginfrom] + [*%l*]= любовь!'), - 'love2' => array(0 => 'мечтает о свадьбе...',1 => 'мечтает о свадьбе с [*%l*]'), - 'confused' => array(0 => 'в недоумении...',1 => 'недоумевает от [*%l*]'), - 'yes' => array(0 => 'кивает в знак согласия',1 => 'кивает [*%l*] в знак согласия'), - 'no' => array(0 => 'мотает головой в знак протеста',1 => 'мотает головой [*%l*] в знак протеста'), - 'shuffle' => array(0 => 'в смущении от таких обстоятельств',1 => 'в смущении от [*%l*]'), - 'nono' => array(0 => 'выражает категорическое несогласие!',1 => 'выражает категорическое несогласение с [*%l*]'), - 'maniac' => array(0 => 'знает точно наперед - сегодня кто-нибудь умрет...',1 => 'считает, что [*%l*] пора бы уже стать жертвой маньяка...'), - 'privet' => array(0 => 'почтительно приветствует окружающих',1 => 'почтительно приветствует [*%l*]'), - 'ok' => array(0 => 'считает, что это замечательная идея',1 => 'считает, что [*%l*] движется в правильном направлении'), - 'ninja' => array(0 => 'угрожает окружающим тайным мастерством!',1 => 'угрожает [*%l*] мастерством древних'), - 'pif' => array(0 => 'ищет подходящую мишень',1 => 'думает, что сложно промахнуться по [*%l*]'), - 'smash' => array(0 => 'собирается крушить и ломать',1 => 'хочет сломать пару-тройку костей у [*%l*]'), - 'alien' => array(0 => 'считает, что мир захватили мутанты!',1 => ' считает, что [*%l*] еще тот мутант!'), - 'pirate' => array(0 => 'подумывает, кого бы ограбить!...',1 => 'считает, что лучшей жертвы чем [*%l*], не найти!'), - 'gun' => array(0 => 'хочет повысить кое-кому уровень железа в организме... :gun:',1 => 'считает, что у [*%l*] маловато железа в организме! :gun:'), - 'trup' => array(0 => 'падает замертво',1 => 'считает, что [*%l*], живет слишком долго, и пора бы это исправить!'), - 'mdr' => array(0 => 'считает, что у него есть отличный способ решения разногласий... :mdr:',1 => 'предлагает [*%l*] культурно отдохнуть :mdr:'), - 'sneeze' => array(0 => 'громко чихает',1 => 'чихает на [*%l*], обрызгивая его слюнями с ног до головы!'), - 'mad' => array(0 => 'просто в бешенстве!!!',1 => 'в бешенстве от [*%l*]!!!'), - 'friday' => array(0 => 'культурно отдыхает...',1 => 'предлагает [*%l*] культурно отдохнуть'), - 'cry' => array(0 => 'безудержно рыдает',1 => 'рыдает на плече у [*%l*]'), - 'grust' => array(0 => 'грустит...',1 => 'грустит о [*%l*]'), - 'rupor' => array(0 => 'пытается докричаться до окружающих',1 => 'пытается докричаться до [*%l*]'), - 'fie' => array(0 => 'умоляет: НЕТ, только не ЭТО!!!',1 => 'умоляет [*%l*] о пощаде!'), - 'nnn' => array(0 => 'ничего не видит, не слышит, и никому не скажет...',1 => 'ничего не видел, не слышал и не помнит о [*%l*]'), - 'row' => array(0 => 'находится в бешенстве и ищет с кем бы пообщаться...',1 => 'собирается выяснить отношения с [*%l*]'), - 'red' => array(0 => 'смущаясь краснеет...',1 => 'краснеет от [*%l*]'), - 'lick' => array(0 => 'облизнулся, в предвкушении',1 => 'облизывается при виде [*%l*]'), - 'help' => array(0 => 'нуждается в срочной помощи!',1 => 'просит помощи у [*%l*]'), - 'wink' => array(0 => 'подмигивает окружающим',1 => 'подмигивает [*%l*]'), - 'jeer' => array(0 => 'посмеивается над ситуацией...',1 => 'посмеивается над [*%l*]'), - 'tease' => array(0 => 'дразнится',1 => 'дразнит [*%l*]'), - 'nunu' => array(0 => 'недоволен окружающими...',1 => 'недоволен [*%l*]'), - 'inv' => array(0 => 'хочет найти свои зубы...',1 => 'жалуется [*%l*] на трудности жизни инвалида...'), - 'duel' => array(0 => 'собирается проткнуть кое-кого...',1 => 'вызывает [*%l*] на дуэль!'), - 'susel' => array(0 => 'Напевая: "эээххх ухнеееемм, да ещеее ууухнеем.." высматривает в толпе подходящий пондер...',1 => 'предлагает [*%l*] отхватить прямо по пондеру!'), - 'nun' => array(0 => 'угрожает окружающим палочками для риса',1 => 'показывает [*%l*] как надо пользоваться палочками для риса'), - 'kruger' => array(0 => 'ненавязчиво объясняет окружающим кого тут надо бояться :kruger:',1 => 'демонстрирует [*%l*] нестриженные когти'), - 'flowers' => array(0 => 'учится выхватывать букет Ромашек-21 из-за спины одним движением',1 => 'целует [*%l*] и дарит букет ромашек'), - 'horse' => array(0 => 'патрулирует границы Бойцовского Клуба',1 => 'предлагает [*%l*] порубать всех врагов в капусту! :horse:'), - 'hug' => array(0 => 'готов обнять всех в комнате!',1 => 'крепко обнимает [*%l*]'), - 'str' => array(0 => 'в ужасе покрывается ледяным потом!',1 => 'в ужасе прячется от [*%l*]'), - 'alch' => array(0 => 'напоминает окружающим о вечных ценностях :alch:',1 => 'предлагает [*%l*] приобщиться к вечным ценностям :alch:'), - 'pal' => array(0 => ' напоминает, что из под робы выпирает крест, а не что-то там! :-)',1 => 'требует от [*%l*] предъявить документы в развернутом виде!'), - 'mag' => array(0 => 'читает заклинания. Вслух. По слогам.',1 => 'произносит страшное колдунство на [*%l*]'), - 'sniper' => array(0 => 'изображает из себя Вильгельма Теля',1 => 'предлагает [*%l*] поиграть в Вильгельма Теля'), - 'fuck' => array(0 => 'повторяет позы камасутры',1 => 'предлагает [*%l*] повторить позы камасутры вместе'), - 'rotate' => array(0 => 'катается от смеха по полу',1 => 'катается по полу от смеха над [*%l*]') - ); - - public function expworld($txt,$vl) - { - $words = explode(' ',$txt); $j = 0; $i = -1; - while($i < count($words)) - { - $i++; - if(isset($words[$i])) - { - if(strlen($words[$i]) > $vl){ $words[$i] = substr($words[$i],0,$vl).' '.substr($words[$i],$vl); $i = 0; $j++; $txt = implode(' ', $words); $words = explode(' ',$txt); } - } - } - $txt = implode(' ',$words); - return $txt; - } - - public function str_count($str,$col) - { - if (strlen($str) > $col) - { - $str = substr($str,0,$col); - } - return ($str); - } - - public function smileText($text,$tol,$room,$city) - { - $retxt = ''; $j = 0; - $txt = str_replace('/','⁄',$text).' '; - - if(preg_match("/⁄(.*?) /", $txt, $retxt)) - { - if(isset($this->smilesWorld[$retxt[1]])) - { - if($tol == '') - { - $tol = str_replace('⁄'.$retxt[1].' ','',$txt); - $tol = trim($tol,' '); - } - if($tol == '') - { - $txt = ''.$this->smilesWorld[$retxt[1]][0].''; - }else{ - $mbl = mysql_fetch_array(mysql_query('SELECT `online`,`id`,`login`,`room`,`city` FROM `users` WHERE `room`="'.$room.'" AND `online` > '.(time()-520).' AND `city` = "'.$city.'" AND `login`="'.mysql_real_escape_string($tol).'" LIMIT 1')); - if(isset($mbl['id'])) - { - $txt = ''.$this->smilesWorld[$retxt[1]][1].''; - $txt = str_replace('[*%l*]','[login:'.$tol.']',$txt); - }else{ - $txt = 'USER IS FALSE'; - } - } - $j = 1; - } - } - - if($j == 1) - { - $text = $txt; - }else{ - $text = false; - } - - return $text; - } - - public function send($color,$room,$city,$from,$to,$text,$time,$type,$toChat,$spam,$sound,$new = 0) - { - //mysql_query('LOCK TABLES chat WRITE'); - - mysql_query("INSERT INTO `chat` (`new`,`sound`,`color`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`spam`) VALUES ('".$new."','".$sound."','".$color."','".$city."','".$room."','".$from."','".$to."','".$text."','".$time."','".$type."','".$toChat."','".$spam."')"); - - //mysql_query('UNLOCK TABLES'); - - $msg_id = mysql_insert_id(); - return $msg_id; - } - - public function jsmsg($id,$time,$to,$from,$type,$ch,$e,$see,$js = 0,$cl = '#000000',$typeTime = NULL) - { - $tm = date('H:i',$time); - if($typeTime==1) - { - $tm = date('d.m.Y H:i',$time); - } - $rt = 'top.addMessage(\''.$id.'\',\''.$tm.'\',\''.$to.' \',\''.$from.'\',\''.$type.'\',\''.$ch.'\'," '.$e.' ",\''.$see.'\',\''.$cl.'\');'; - if($js==1) - { - $rt = ''; - } - return $rt; - } -} -$chat = new Chat(); -?> \ No newline at end of file diff --git a/_incl_data/class/__db_connect.php b/_incl_data/class/__db_connect.php index cfdf0366..d2eb0076 100644 --- a/_incl_data/class/__db_connect.php +++ b/_incl_data/class/__db_connect.php @@ -1,28 +1,38 @@ 'localhost', // server + 'd' => 'newcom1_abk', // database + 'u' => 'newcom1_abk', // user + 'p' => '4nWYsIM[c?}P' // password +]; +$dsn = 'mysql:host=' . $db['s'] . ';dbname=' . $db['d']; + +if (function_exists('date_default_timezone_set')) { + date_default_timezone_set('Europe/Moscow'); } -$dbgo = mysql_pconnect('localhost','newcom1_abk','4nWYsIM[c?}P'); -mysql_select_db('newcom1_abk',$dbgo); +$dbgo = mysql_pconnect($db['s'], $db['u'], $db['p']); +mysql_select_db($db['d'], $dbgo); mysql_query('SET NAMES cp1251'); -if(!function_exists('GetRealIp')) { - function GetRealIpTest(){ - if (!empty($_SERVER['HTTP_CLIENT_IP'])) - return $_SERVER['HTTP_CLIENT_IP']; - else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) - return $_SERVER['HTTP_X_FORWARDED_FOR']; - return $_SERVER['REMOTE_ADDR']; - } - $ipban = GetRealIpTest(); -}else{ - $ipban = GetRealIp(); +if (!function_exists('GetRealIp')) { + function GetRealIpTest() + { + if (!empty($_SERVER['HTTP_CLIENT_IP'])) { + return $_SERVER['HTTP_CLIENT_IP']; + } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { + return $_SERVER['HTTP_X_FORWARDED_FOR']; + } + return $_SERVER['REMOTE_ADDR']; + } + + $ipban = GetRealIpTest(); +} else { + $ipban = GetRealIp(); } -$pdo = new PDO('mysql:host=localhost;dbname=newcom1_abk', 'newcom1_abk', '4nWYsIM[c?}P'); \ No newline at end of file +$pdo = new PDO($dsn, $db['u'], $db['p'], [PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES cp1251"]); \ No newline at end of file diff --git a/_incl_data/class/__dungeon.php b/_incl_data/class/__dungeon.php deleted file mode 100644 index 87d254dc..00000000 --- a/_incl_data/class/__dungeon.php +++ /dev/null @@ -1,1956 +0,0 @@ - array() //карта - ) ,$id_dng,$cord = array('x' => 0),$sg = array(1 => array(1=>1,2=>2,3=>3,4=>4),2 => array(1=>2,2=>3,3=>4,4=>1),3 => array(1=>3,2=>4,3=>1,4=>2),4 => array(1=>4,2=>1,3=>2,4=>3)); - public function start() - { - global $u,$c,$code; - $this->info = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_now` WHERE `id` = "'.$u->info['dnow'].'" LIMIT 1')); - $this->id_dng = $this->info['id2']; - $this->gs = $u->info['s']; - if($this->gs<1 || $this->gs>4) - { - $this->gs = 1; - } - - - if($this->info['bsid']>0) - { - $this->bs = mysql_fetch_assoc(mysql_query('SELECT * FROM `bs_turnirs` WHERE `city` = "'.$u->info['city'].'" AND `id` = "'.$this->info['bsid'].'" AND `time_start` = "'.$this->info['time_start'].'" LIMIT 1')); - if(isset($this->bs['id'])) - { - //Если БС закончена - /*if($this->bs['users']-$this->bs['users_finish'] < 2) - { - $u->bsfinish($this->bs,false,NULL); - }*/ - } - } - - - - if(isset($_GET['itm_luck']) && $this->info['bsid'] == 0) { - $this->itm_luck((int)$_GET['itm_luck']); - }elseif(isset($_GET['itm_unluck']) && $this->info['bsid'] == 0) { - $this->itm_unluck((int)$_GET['itm_unluck']); - }elseif(isset($_GET['atack'])){ - $this->atack((int)$_GET['atack']); - }elseif(isset($_GET['take'])){ - $this->takeinv((int)$_GET['take']); - }elseif(isset($_GET['take_obj'])){ - $this->takeit((int)$_GET['take_obj']); - }elseif(isset($_GET['look'])){ - if((int)$_GET['look']==1){ - if($this->gs==1) - { - $this->gs = 2; - }elseif($this->gs==2) - { - $this->gs = 3; - }elseif($this->gs==3) - { - $this->gs = 4; - }elseif($this->gs==4) - { - $this->gs = 1; - } - }elseif((int)$_GET['look']==2) - { - if($this->gs==1) - { - $this->gs = 4; - }elseif($this->gs==2) - { - $this->gs = 1; - }elseif($this->gs==3) - { - $this->gs = 2; - }elseif($this->gs==4) - { - $this->gs = 3; - } - } - mysql_query('UPDATE `stats` SET `s` = "'.((int)$this->gs).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->info['s'] = $this->gs; - }elseif(isset($_GET['go'])) - { - //перемещение - $this->testGo((int)$_GET['go']); - } - - /* генерируем вид персонажа (только карта) - $this->gs = 1; //смотрим прямо - 2; //смотрим лево - 3; //смотрим вниз - 4; //смотрим право - ( ( ( `y` >= '.$u->info['y'].' && `y` <= '.($u->info['y']+4).' ) && ( `x` >= '.($u->info['x']-1).' && `x` <= '.($u->info['x']+1).' ) ) || ( (`x` = '.($u->info['x']+2).' || `x` = '.($u->info['x']-2).') && ( `y` = '.($u->info['y']+3).' || `y` = '.($u->info['y']+4).' ) ) ) - */ - - $whr = array( - 1 => ' ((`x` <= '.($u->info['x']+2).' && `x` >= '.($u->info['x']-2).') && (`y` >= '.$u->info['y'].' && `y` <= '.($u->info['y']+4).')) ', //прямо - 3 => ' ((`x` <= '.($u->info['x']+2).' && `x` >= '.($u->info['x']-2).') && (`y` <= '.$u->info['y'].' && `y` >= '.($u->info['y']-4).')) ', //вниз - 2 => ' ((`x` <= '.$u->info['x'].' && `x` >= '.($u->info['x']-4).') && (`y` <= '.($u->info['y']+2).' && `y` >= '.($u->info['y']-2).')) ', //лево - 4 => ' ((`x` >= '.$u->info['x'].' && `x` <= '.($u->info['x']+4).') && (`y` <= '.($u->info['y']+2).' && `y` >= '.($u->info['y']-2).')) ' //право - ); - - $i = 1; - $sp = mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "'.$this->id_dng.'" AND '.$whr[$this->gs].' ORDER BY `y` ASC , `x` ASC LIMIT 25'); - while($pl = mysql_fetch_assoc($sp)) - { - $this->map[0][$pl['y'].'_'.$pl['x']] = $pl; - $i++; - } - $this->map['good'] = $i; //целых клеток - $this->map[1] = $this->genMatix(); - $this->lookDungeon(); - } - - public function pickitem($obj,$itm,$for, $data = '',$dn_delete = false, $chat = 0) { - global $u; - $itm = mysql_fetch_assoc(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "'.$itm.'" LIMIT 1')); - if( isset($itm['id']) ) { - $tou = 0; //какому юзеру предназначено - /* выделяем случайного юзера из команды */ - $itmnm = mysql_fetch_assoc(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "'.$itmz[0].'" LIMIT 1')); - $itmnm = $itmnm['name']; - $asex = ''; - if( $u->info['sex'] == 1 ) { - $asex = 'а'; - } - - if($for > 0 ) { - $tou = $for; - $rtxt = ''.$u->info['login'].' обнаружил'.$asex.' предмет "'.$itm['name'].'" в "'.$obj['name'].'"'; - }else{ - $rtxt = ''.$u->info['login'].' обнаружил'.$asex.' предмет "'.$itm['name'].'" в "'.$obj['name'].'", и вы решили разыграть его'; - } - if($dn_delete == true) { $dn_delete = 1; } else { $dn_delete = 0; } - if($chat == 0) { - mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('".$u->info['dnow']."','".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1','1')"); - } - $ins = mysql_query('INSERT INTO `dungeon_items` (`dn_delete`,`data`,`dn`,`user`,`item_id`,`time`,`x`,`y`) VALUES ( - "'.$dn_delete.'", - "'.mysql_real_escape_string($data).'", - "'.$u->info['dnow'].'", - "'.$tou.'", - "'.$itm['id'].'", - "'.time().'", - "'.$u->info['x'].'", - "'.$u->info['y'].'")'); - return $ins; - } - } -public function n_lead($who, $lead) { - global $u, $c, $code; - - $to = mysql_fetch_assoc(mysql_query('SELECT `u`.`id`, `u`.`login`, `st`.`id`, `st`.`dnow` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`login` = "'.mysql_real_escape_string($who).'" LIMIT 1')); - - if($this->info['uid'] != $lead) { - $this->error = 'Вы не лидер...'; - } elseif(!isset($to['id'])) { - $this->error = 'Персонаж не найден...'; - } elseif($to['id'] == $this->info['uid']) { - $this->error = 'Вы и так лидер...'; - } elseif($to['dnow'] != $this->info['id']) { - $this->error = 'Персонаж не найден в вашей команде...'; - } else { - mysql_query('UPDATE `dungeon_now` SET `uid` = "'.$to['id'].'" WHERE `id` = "'.$this->info['id'].'" LIMIT 1'); - if($u->info['sex'] == 0) { - $this->sys_chat(''.$u->info['login'].' передал лидерство в группе персонажу '.$to['login'].''); - } else { - $this->sys_chat(''.$u->info['login'].' передала лидерство в группе персонажу '.$to['login'].''); - } - //header('Location: main.php'); - die(''); - } - } - - public function go_to_hell($who, $lead) { - global $u, $c, $code; - - $to = mysql_fetch_assoc(mysql_query('SELECT `u`.`id`, `u`.`login`, `st`.`id`, `st`.`dnow` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`login` = "'.mysql_real_escape_string($who).'" LIMIT 1')); - - if($this->info['uid'] != $lead) { - $this->error = 'Вы не лидер...'; - } elseif(!isset($to['id'])) { - $this->error = 'Персонаж не найден...'; - } elseif($to['id'] == $this->info['uid']) { - $this->error = 'Лидера нельзя выгнать...'; - } elseif($to['dnow'] != $this->info['id']) { - $this->error = 'Персонаж не найден в вашей команде...'; - } else { - - $rb = 321; // Магический портал - if($u->info['room']==304){ - $rb = 209; // Вход в ледяную пещеру - }elseif($u->info['room']==396){ - $rb = 395; // Канализация (Ангелс) - }elseif($u->info['room']==398){ - $rb = 321; // Все пещеры - }elseif($d->info['id2']==3){ - $rb = 293; // Вход в Катакомбы - }elseif($d->info['id2']==1){ - $rb = 188; // Вход в Канализацию - }elseif($d->info['id2']==13){ - $rb = 275; // Гора Легиона - }elseif($d->info['id2']==12){ - $rb = 372; // Вход в Пещеру Тысячи Проклятий - }elseif($d->info['id2']==444){ - $rb = 321; // Вход в пещеру инкв - }elseif($d->info['id2']==31){ - $rb = 321; // Вход в пещеру инкв - }elseif($d->info['id2']==101){ - $rb = 321; // Вход в Бездну - - } - - $sp = mysql_query('SELECT * FROM `dungeon_now` WHERE `time_finish` = "0" LIMIT 50'); - while($pl = mysql_fetch_assoc($sp)) { - $cn = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `stats` WHERE `dnow` = "'.$pl['id'].'" LIMIT 1')); - if(!isset($cn['id'])) { - mysql_query('DELETE FROM `dungeon_bots` WHERE `dn` = "'.$pl['id'].'" AND `for_dn` = "0"'); - mysql_query('DELETE FROM `dungeon_obj` WHERE `dn` = "'.$pl['id'].'" AND `for_dn` = "0"'); - mysql_query('DELETE FROM `dungeon_items` WHERE `dn` = "'.$pl['id'].'" AND `for_dn` = "0"'); - mysql_query('DELETE FROM `dungeon_bots` WHERE `dn` = "'.$pl['id'].'" AND `for_dn` = "0"'); - mysql_query('DELETE FROM `dungeon_actions` WHERE `dn` = "'.$pl['id'].'"'); - mysql_query('UPDATE `dungeon_now` SET `time_finish` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - } - - $city = mysql_fetch_assoc(mysql_query('SELECT `id`, `city` FROM `room` WHERE `id` = "'.$rb.'" LIMIT 1')); - mysql_query('UPDATE `stats` SET `dnow` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `room` = "'.$rb.'", `city`="'.$city['city'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - //удаляем все предметы которые пропадают после выхода из пещеры - mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `dn_delete` = "1" LIMIT 1000'); - - mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND (`item_id` = "1189" OR `item_id` = "4447" OR `item_id` = "1174") LIMIT 1000'); - - if($u->info['sex'] == 0) { - $this->sys_chat(''.$u->info['login'].' выгнал из похода персонажа '.$to['login'].''); - } else { - $this->sys_chat(''.$u->info['login'].' выгнала из похода персонажа '.$to['login'].''); - } - header('Location: /main.php'); - } - } - public function usersDng($laba = false) - { - global $u,$c; - $r = ''; - $stt = array(); - if( $laba == false ) { - $sp = mysql_query('SELECT `u`.`id`,`st`.`id` FROM `stats` AS `u` LEFT JOIN `users` AS `st` ON (`st`.`id` = `u`.`id`) WHERE `u`.`dnow` = "'.$this->info['id'].'" LIMIT 10'); - }else{ - $sp = mysql_query('SELECT `u`.`id` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`st`.`id` = `u`.`id`) WHERE `u`.`room` = 370 AND `st`.`dnow` = "'.$laba.'" AND `st`.`bot` = 0 LIMIT 6'); - } - while($pl = mysql_fetch_assoc($sp)) - { - $stt = $u->getStats($pl['id'],0); - if($stt['mpAll']>0) - { - $pm = $stt['mpNow']/$stt['mpAll']*100; - } - $ph = $stt['hpNow']/$stt['hpAll']*100; - $r .= ' - -
      '.$u->microLogin($pl['id'],1).'   '.floor($stt['hpNow']).'/'.$stt['hpAll'].' -
    -
    -
    -'; -if($stt['mpAll']>0) -{ - $r .= '
    '.floor($stt['mpNow']).'/'.$stt['mpAll'].'
    -
    -
    -
    '; -} -$r .= '
    '; -if( $this->info['uid'] == $pl['id'] ) { - $r .= ''; -} -if($this->info['uid'] == $u->info['id'] && $pl['id'] == $u->info['id'] && $d->info['id2'] != 15) { - $r .= ' '; - $r .= ' '; - } -$r .= '

    '; -$r .= ''; - } - unset($stt,$ph,$pm); - return $r; - } - - public function atack($id) { - global $u,$c,$code; - $bot = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_bots` WHERE `id2` = "'.$id.'" AND `for_dn` = "0" AND `dn` = "'.$this->info['id'].'" AND `delete` = "0" LIMIT 1')); - if(isset($bot['id2'])){ - if( ($u->info['x'] != $bot['x'] || $bot['y'] != $u->info['y']) && $this->testLike($u->info['x'],$u->info['y'],$bot['x'],$bot['y']) == 1 ){ - //Создаем подеинок - $tbtl = mysql_fetch_assoc(mysql_query('SELECT * FROM `battle` WHERE `dn_id` = "'.$this->info['id'].'" AND `team_win` = "-1" AND `x` = "'.$bot['x'].'" AND `y` = "'.$bot['y'].'" LIMIT 1')); - if(isset($tbtl['id'])) { - //вступаем в поединок - mysql_query('UPDATE `users` SET `battle` = "'.$tbtl['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - /*#$this->error = 'Нападаем ... '; // */ - //header('location: main.php'); - die(''); - } else { - $btl_id = 0; - //$expB = -77.77; - $expB = 0; - $btl = array( - 'players'=>'', - 'timeout'=>120, - 'type'=>0, - 'invis'=>0, - 'noinc'=>0, - 'travmChance'=>0, - 'typeBattle'=>0, - 'addExp'=>$expB, - 'money'=>0 - ); - - $ins = mysql_query('INSERT INTO `battle` (`dungeon`,`dn_id`,`x`,`y`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( - "'.$this->info['id2'].'", - "'.$this->info['id'].'", - "'.$bot['x'].'", - "'.$bot['y'].'", - "'.$u->info['city'].'", - "'.time().'", - "'.$btl['players'].'", - "'.$btl['timeout'].'", - "'.$btl['type'].'", - "'.$btl['invis'].'", - "'.$btl['noinc'].'", - "'.$btl['travmChance'].'", - "'.$btl['typeBattle'].'", - "'.$btl['addExp'].'", - "'.$btl['money'].'")'); - $btl_id = mysql_insert_id(); - - if($btl_id>0) { - //Добавляем ботов - $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "0" AND `dn` = "'.$this->info['id'].'" AND `x` = "'.$bot['x'].'" AND `y` = "'.$bot['y'].'" AND `delete` = "0" LIMIT 1001'); - $j = 0; $logins_bot = array(); - while($pl = mysql_fetch_assoc($sp)){ - $jui = 1; - mysql_query('UPDATE `dungeon_bots` SET `inBattle` = "'.$btl_id.'" WHERE `id2` = "'.$pl['id2'].'" LIMIT 1'); - while($jui<=$pl['colvo']){ - $k = $u->addNewbot($pl['id_bot'],NULL,NULL,$logins_bot); - $logins_bot = $k['logins_bot']; - if($k!=false){ - $upd = mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'" WHERE `id` = "'.$k['id'].'" LIMIT 1'); - if($upd){ - $upd = mysql_query('UPDATE `stats` SET `x`="'.$bot['x'].'",`y`="'.$bot['y'].'",`team` = "2" WHERE `id` = "'.$k['id'].'" LIMIT 1'); - if($upd){ - $j++; - } - } - } - $jui++; - } - } - unset($logins_bot); - if($j>0){ - mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - /*#$this->error = 'Нападаем ...';// */ - // - //header('location: main.php'); - die(''); - }else{ - $this->error = 'Не удалось напасть, ошибка обьекта нападения ...'; - } - }else{ - $this->error = 'Не удалось создать поединок ...'; - } - } - }else{ - $this->error = 'Не удалось напасть ...'; - } - } else { - if(isset($this->bs['id']) || $this->info['id2'] == 15) { - $bot = mysql_fetch_assoc(mysql_query('SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id` = "'.mysql_real_escape_string($id).'" LIMIT 1')); - if(($u->info['x']!=$bot['x'] || $bot['y']!=$u->info['y']) && $this->testLike($u->info['x'],$u->info['y'],$bot['x'],$bot['y'])==1){ - //Создаем подеинок - $tbtl = mysql_fetch_assoc(mysql_query('SELECT * FROM `battle` WHERE `dn_id` = "'.$this->info['id'].'" AND `team_win` = "-1" AND `x` = "'.$bot['x'].'" AND `y` = "'.$bot['y'].'" LIMIT 1')); - //die('Нападения временно запрещены. ['.$tbtl['id'].'] 5-10 мин.'); - if(isset($tbtl['id'])){ - //вступаем в поединок - $lstm = mysql_fetch_assoc(mysql_query('SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle`="'.$tbtl['id'].'" ORDER BY `st`.`team` DESC LIMIT 1')); - mysql_query('UPDATE `users` SET `battle` = "'.$tbtl['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $nextteam = $lstm['team']+1; - mysql_query('UPDATE `stats` SET `team` = "'.$nextteam.'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `x` = "'.$bot['x'].'", `y` = "'.$bot['y'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - if( $this->info['bsid'] > 0 ) { - - $me_real = mysql_fetch_assoc(mysql_query('SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "'.$u->info['id'].'" AND `login` = "'.$u->info['login'].'" LIMIT 1')); - $usr_real = mysql_fetch_assoc(mysql_query('SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "'.$bot['id'].'" AND `login` = "'.$bot['login'].'" LIMIT 1')); - mysql_query('UPDATE `stats` SET `tactic7`= 20.000 WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - //Заносим в лог БС - if( $u->info['sex'] == 0 ) { - $text = '{u1} вмешался в поединок напав на {u2} »»'; - }else{ - $text = '{u1} вмешалася в поединок напав на {u2} »»'; - } - if( isset($usr_real['id'])) { - $usrreal = ''; - if( $usr_real['align'] > 0 ) { - $usrreal .= ''; - } - if( $usr_real['clan'] > 0 ) { - $usrreal .= ''; - } - $usrreal .= ''.$usr_real['login'].'['.$usr_real['level'].']'; - }else{ - $mereal = 'Невидимка[??]'; - } - if( isset($me_real['id']) ) { - $mereal = ''; - if( $me_real['align'] > 0 ) { - $mereal .= ''; - } - if( $me_real['clan'] > 0 ) { - $mereal .= ''; - } - $mereal .= ''.$me_real['login'].'['.$me_real['level'].']'; - }else{ - $mereal = 'Невидимка[??]'; - } - $text = str_replace('{u1}',$mereal,$text); - $text = str_replace('{u2}',$usrreal,$text); - //Добавляем в лог БС - mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( - "1", "'.mysql_real_escape_string($text).'", "'.time().'", "'.$this->bs['id'].'", "'.$this->bs['count'].'", "'.$this->bs['city'].'", - "'.round($this->bs['money']*0.85,2).'","'.$i.'" - )'); - // - } - // - $this->error = 'Нападаем ... '; - }else{ - $btl_id = 0; - //$expB = -77.77; - if($this->info['id2'] == 1) { - $expB = 200; - } - $btl = array( - 'players'=>'', - 'timeout'=>40, - 'type'=>0, - 'invis'=>0, - 'noinc'=>0, - 'travmChance'=>0, - 'typeBattle'=>0, - 'addExp'=>$expB, - 'money'=>0, - 'inTurnir' => 0 - ); - - if( $this->info['bsid'] > 0 ) { - $btl['inTurnir'] = $this->info['bsid']; - } - - $ins = mysql_query('INSERT INTO `battle` (`inTurnir`,`dungeon`,`dn_id`,`x`,`y`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( - "'.$btl['inTurnir'].'", - "'.$this->info['id2'].'", - "'.$this->info['id'].'", - "'.$bot['x'].'", - "'.$bot['y'].'", - "'.$u->info['city'].'", - "'.time().'", - "'.$btl['players'].'", - "'.$btl['timeout'].'", - "'.$btl['type'].'", - "'.$btl['invis'].'", - "'.$btl['noinc'].'", - "'.$btl['travmChance'].'", - "'.$btl['typeBattle'].'", - "'.$btl['addExp'].'", - "'.$btl['money'].'")'); - $btl_id = mysql_insert_id(); - mysql_query('UPDATE `stats` SET `x` = "'.$bot['x'].'", `y` = "'.$bot['y'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `x` = "'.$bot['x'].'", `y` = "'.$bot['y'].'" WHERE `id` = "'.$bot['id'].'" LIMIT 1'); - - if($btl_id>0) - { - //Добавляем ботов - mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - - mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'" WHERE `id` = "'.$bot['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team` = "2" WHERE `id` = "'.$bot['id'].'" LIMIT 1'); - - if($u->stats['hpNow'] < 1) { - $u->stats['hpNow'] = 1; - mysql_query('UPDATE `stats` SET `hpNow` = "1" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `lose` = `lose` + 1 WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - - if($bot['hpNow'] < 1) { - $bot['hpNow'] = 1; - mysql_query('UPDATE `stats` SET `hpNow` = "1" WHERE `id` = "'.$bot['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `lose` = `lose` + 1 WHERE `id` = "'.$bot['id'].'" LIMIT 1'); - } - - if( $this->info['bsid'] > 0 ) { - - $me_real = mysql_fetch_assoc(mysql_query('SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "'.$u->info['id'].'" AND `login` = "'.$u->info['login'].'" LIMIT 1')); - $usr_real = mysql_fetch_assoc(mysql_query('SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "'.$bot['id'].'" AND `login` = "'.$bot['login'].'" LIMIT 1')); - - //Заносим в лог БС - if( $u->info['sex'] == 0 ) { - $text = '{u1} напал на {u2} завязался бой »»'; - }else{ - $text = '{u1} напала на {u2} завязался бой »»'; - } - if( isset($usr_real['id'])) { - $usrreal = ''; - if( $usr_real['align'] > 0 ) { - $usrreal .= ''; - } - if( $usr_real['clan'] > 0 ) { - $usrreal .= ''; - } - $usrreal .= ''.$usr_real['login'].'['.$usr_real['level'].']'; - }else{ - $mereal = 'Невидимка[??]'; - } - if( isset($me_real['id']) ) { - $mereal = ''; - if( $me_real['align'] > 0 ) { - $mereal .= ''; - } - if( $me_real['clan'] > 0 ) { - $mereal .= ''; - } - $mereal .= ''.$me_real['login'].'['.$me_real['level'].']'; - }else{ - $mereal = 'Невидимка[??]'; - } - $text = str_replace('{u1}',$mereal,$text); - $text = str_replace('{u2}',$usrreal,$text); - //Добавляем в лог БС - mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( - "1", "'.mysql_real_escape_string($text).'", "'.time().'", "'.$this->bs['id'].'", "'.$this->bs['count'].'", "'.$this->bs['city'].'", - "'.round($this->bs['money']*0.85,2).'","'.$i.'" - )'); - // - } - - $this->error = 'Нападаем ... '; - }else{ - $this->error = 'Не удалось создать поединок ...'; - } - } - }else{ - $this->error = 'Не удалось напасть ...'; - } - }else{ - $this->error = 'Не удалось напасть, слишком далеко (id'.$id.') ...'; - } - } - } - - public function testDie() { - global $u,$c,$code; - $dies = mysql_fetch_assoc(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "'.$u->info['id'].'" AND `dn` = "'.$u->info['dnow'].'" AND `vars` = "die" LIMIT 1')); - $dies = $dies[0]; - - - if( $u->stats['hpNow'] < 1 || $dies > 2 ) { - if( $dies < 2 ) { - mysql_query('INSERT INTO `dungeon_actions` (`dn`,`uid`,`x`,`y`,`time`,`vars`,`vals`) VALUES ( - "'.$u->info['dnow'].'","'.$u->info['id'].'","'.$u->info['x'].'","'.$u->info['y'].'","'.time().'","die","" - )'); - //21:50 Ярополк трагически погиб и находится в комнате "Этаж 2 - Водосток" - $dnow = mysql_fetch_assoc(mysql_query('SELECT id2 FROM `dungeon_now` WHERE `id` = "'.$u->info['dnow'].'" LIMIT 1')); - $room = mysql_fetch_assoc(mysql_query('SELECT name FROM `dungeon_map_info` WHERE `x` = "'.$u->info['res_x'].'" AND `y` = "'.$u->info['res_y'].'" AND `id_dng` = "'.$dnow['id2'].'" LIMIT 1')); - - if( $u->info['sex'] == 0 ) { - $this->sys_chat(''.$u->info['login'].' трагически погиб и находится в комнате "'.$room['name'].'"'); - }else{ - $this->sys_chat(''.$u->info['login'].' трагически погибла и находится в комнате "'.$room['name'].'"'); - } - mysql_query('UPDATE `stats` SET `hpNow` = "1",`x` = "'.$u->info['res_x'].'",`y` = "'.$u->info['res_y'].'",`s` = "'.$u->info['res_s'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - //header('location: main.php'); - die(''); - }else{ - mysql_query('INSERT INTO `dungeon_actions` (`dn`,`uid`,`x`,`y`,`time`,`vars`,`vals`) VALUES ( - "'.$u->info['dnow'].'","'.$u->info['id'].'","'.$u->info['x'].'","'.$u->info['y'].'","'.time().'","die","" - )'); - //21:50 Ярополк трагически погиб и находится в комнате "Этаж 2 - Водосток" - if( $u->info['sex'] == 0 ) { - $this->sys_chat(''.$u->info['login'].' трагически погиб без права на воскрешение'); - }else{ - $this->sys_chat(''.$u->info['login'].' трагически погибла без права на воскрешение'); - } - $_GET['exitd'] = true; - } - } - } - - //Предметы для БС - public $itbs = array( - 0 => 558, - 1 => 722, - 2 => 718, - 3 => 700, - 4 => 291, - 5 => 545, - 6 => 533, - 7 => 536, - 8 => 628, - 9 => 710, - 10 => 654, - 11 => 684, - 12 => 689, - 13 => 552, - 14 => 552, - 15 => 716, - 16 => 320, - 17 => 290, - 18 => 543, - 19 => 528, - 20 => 540, - 21 => 627, - 22 => 709, - 23 => 653, - 24 => 681, - 25 => 687, - 26 => 523, - 27 => 523, - 28 => 712, - 29 => 1151, - 30 => 544, - 31 => 541, - 32 => 525, - 33 => 539, - 34 => 633, - 35 => 707, - 36 => 647, - 37 => 680, - 38 => 685, - 39 => 567, - 40 => 717, - 41 => 706, - 42 => 527, - 43 => 537, - 44 => 626, - 45 => 708, - 46 => 723, - 47 => 651, - 48 => 683, - 49 => 686, - 50 => 2862, - 51 => 2863, - 52 => 2864 - ); - public function sys_chat($rtxt) { - global $u; - mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('".$u->info['dnow']."','".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1','1')"); - } - - public function takeit($id) { - global $u,$c,$code,$magic; - $obj = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_obj` WHERE `id` = "'.$id.'" AND `for_dn` = "0" AND `dn` = "'.$this->info['id'].'" LIMIT 1')); - if(isset($obj['id'])) { - $tbot = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_bots` WHERE `x` = "'.$obj['x'].'" AND `y` = "'.$obj['y'].'" AND `dn` = "'.$this->info['id'].'" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1')); - - - $i = 0; - # Создаем МАССИВ { $act_sl['save_pos'] = "save_pos" }или { $act_sl['port'] = "10:20" } - $act_sl = array(); - $act_sm = explode('|',$obj['action']); - while( $i < count($act_sm) ) { - $s = explode(':',$act_sm[$i]); - if(isset($s[1]) && $s[1] !='' ){ - $act_sl[$s[0]] = $s[1]; - } else { - $act_sl[$s[0]] = $s[0]; - } - $i++; - } - - if( isset($tbot['id2']) ) { - $this->error = 'Не удалось, что-то или кто-то мешает ...'; - } elseif($this->testLike($u->info['x'],$u->info['y'],$obj['x'],$obj['y'])!=1) { - $this->error = 'Не удалось, слишком далеко ...!'; - } else { - $a = explode('|',$obj['action']); - $r = ''; - $i = 0; - while( $i < count($a) ) { - $s = explode(':',$a[$i]); - - if( $s[0] == 'kill_bot' ) { - //Требуется убить ботов - $t = explode(',',$s[1]); - $tr_gd = 0; - - //Проверяем кого нужно убить и убили-ли - $j = 1; $jn = 0; - while($j < count($t)) { - $itm = explode('.',$t[$j]); - //[0] - x , [1] - y - $bot_itm = mysql_fetch_assoc(mysql_query('SELECT `u`.`id2`,`st`.`login` FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE `u`.`dn` = "'.$u->info['dnow'].'" AND `u`.`x` = "'.$itm[0].'" AND `u`.`y` = "'.$itm[1].'" AND `u`.`delete` = "0" LIMIT 10')); - if(isset($bot_itm['id2'])){ - $jn++; - } - $j++; - } - - if($jn == 0) { - $tr_gd = 1; - } - - unset($itm,$bot_itm,$jn); - if($tr_gd == 0) { - if($t[0]=='0'){ - $r .= 'Не удалось, что-то или кто-то мешает ...'; - }else{ - $r .= $t[0]; - } - $i = count($a); - } - }elseif($s[0]=='kill_bot_d') { - //Требуется убить ботов (все боты нападают , если что-то не так ) - $t = explode(',',$s[1]); - $tr_gd = 0; - - //Проверяем кого нужно убить и убили-ли - $j = 1; $jn = 0; - $tuz = mysql_fetch_assoc(mysql_query('SELECT `x`,`y`,`id`,`hpNow` FROM `stats` WHERE `dnow` = "'.$this->info['id'].'" AND ( (`x` = '.($pl['x']+1).' AND `y` = '.($pl['y']).') OR (`x` = '.($pl['x']-1).' AND `y` = '.($pl['y']).') OR (`x` = '.($pl['x']).' AND `y` = '.($pl['y']+1).') OR (`x` = '.($pl['x']).' AND `y` = '.($pl['y']-1).') ) LIMIT 1')); - while($j < count($t)) { - $itm = explode('.',$t[$j]); - //[0] - x , [1] - y - $bot_itm_sp = mysql_query('SELECT `u`.*,`st`.* FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE `u`.`dn` = "'.$u->info['dnow'].'" AND `u`.`x` = "'.$itm[0].'" AND `u`.`y` = "'.$itm[1].'" AND `u`.`delete` = "0" LIMIT 50'); - while( $bot_itm = mysql_fetch_assoc($bot_itm_sp) ) { - $jn++; - $this->botAtack($bot_itm,$u->info,1); - } - $j++; - } - - if($jn == 0) { - $tr_gd = 1; - } - - unset($itm,$bot_itm,$jn); - if($tr_gd == 0) { - if($t[0]=='0'){ - $r .= 'Не удалось, что-то или кто-то мешает ...'; - }else{ - $r .= $t[0]; - } - $r .= ' Монстры начали атаковать вас!'; - $i = count($a); - } - }elseif($s[0]=='ditm') { - //требует предмет для действия - $j = 0; - $t = explode(',',$s[1]); - $tr_gd = 1; - while($j" (x'.$itm[1].') был утрачен...
    '; - $j++; - } - }elseif($s[0]=='tritm') { - //требует предмет для действия - $j = 0; - $t = explode(',',$s[1]); - $j = 0; - $tr_gd = 1; - while($j" (x'.$itm[1].')
    '; - } - $j++; - } - if(rand(0,10000)>$itm[2]*100) { - $tr_gd = 0; - $r .= 'Странно, но ничего не произошло...
    '; - } - if($tr_gd == 1) { - //все отлично - }else{ - $i = count($a); - } - } elseif($s[0] == 'repl_ptp') { - require_once('dnaction/_dungeon_replace.php'); - die(); - //header('Location: ../../modules_data/location/_dungeon_replace.php'); - }elseif($s[0]=='add_eff') { - //Кастуем эффект - $t = explode(',',$s[1]); - $j = 0; - while($jtestAction('`vars` = "add_eff_'.$this->info['id'].'_'.$obj['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT '.(1+(int)$itm[2]).'',2); //кол-во прошлых попыток - $ch = $ch[0]; - $ch2 = $u->testAction(' `vars` = "add_eff_'.$this->info['id'].'_'.$obj['id'].'" LIMIT '.(1+(int)$itm[4]).'',2); //кол-во прошлых попыток (все юзеры) - $ch2 = $ch2[0]; - if(($ch2 < $itm[4] || $itm[4]==0) && $ch < $itm[2]) { - if($itm[1]*100 >= rand(0,10000)) { - //удачно - $eff_d = mysql_fetch_assoc(mysql_query('SELECT `id2`,`mname` FROM `eff_main` WHERE `id2` = "'.$itm[0].'" LIMIT 1')); - if(isset($eff_d['id2'])) { - //добавляем эффект - $us = $magic->add_eff($u->info['id'],$itm[0],1); - if($us[0]==1) { - $r .= '
    На Вас наложили заклятие "'.$eff_d['mname'].'".
    '; - }else{ - $r .= '
    Что-то пошло не так... Ощущается чье-то присутствие...
    '; - } - }else{ - $r .= '
    Что-то пошло не так... Слышен чей-то вой...
    '; - } - unset($eff_d,$us); - }else{ - //не удачно - $r .= '
    Не удалось...
    '; - } - $u->addAction(time(),'add_eff_'.$this->info['id'].'_'.$obj['id'],$u->info['city']); - }else{ - //уже нельзя юзать - $r .= '
    Что-то пошло не так...
    '; - } - - unset($ch,$ch2); - $j++; - } - }elseif($s[0]=='mfast') { - //Добавляем баф //Ловушки и бафы - $j = 0; - $t = explode(',',$s[1]); - while($jtestAction('`vars` = "bafit_'.$this->info['id'].'_'.$obj['id'].'" LIMIT '.(1+(int)$itm[2]).'',2); //кол-во прошлых попыток - $ch = $ch[0]; - if($ch<$itm[3]) - { - if($itm[2]*1000>=rand(1,100000)) - { - if($itm[0] == 'hpNow') { - $mm = explode('r',$itm[1]); - if($mm[1]!=0) { - $itm[1] = rand($mm[0],$mm[1]); - } - if($itm[1]<0) { - $r .= '
    Вы попали в ловушку... Здоровье: '.$itm[1].' HP
    '; - }elseif($itm[1]>0){ - $r .= '
    Вы прикоснулись к магии... Здоровье: +'.$itm[1].' HP
    '; - } - $u->info['hpNow'] += $itm[1]; - if($u->info['hpNow']<1) { - $r .= '
    Вы перемещены в точку возрождения...
    '; - mysql_query('UPDATE `stats` SET `hpNow` = "'.$u->info['hpNow'].'",`x` = "'.$u->info['res_x'].'",`y` = "'.$u->info['res_y'].'",`s` = "'.$u->info['res_s'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - }else{ - mysql_query('UPDATE `stats` SET `hpNow` = "'.$u->info['hpNow'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - } - } - $u->addAction(time(),'bafit_'.$this->info['id'].'_'.$obj['id'],$u->info['city']); - } - //записываем попытку - $j++; - } - }elseif($s[0]=='save_pos') { - if( isset($act_sl['port']) ) { - $itm = explode('=',$act_sl['port']); - $obj['x'] = $itm[0]; - $obj['y'] = $itm[1]; - } - #$r .= 'Позиция сохранена. Теперь после смерти вы оживете здесь.'; - mysql_query('UPDATE `stats` SET `res_x` = "'.$obj['x'].'",`res_y` = "'.$obj['y'].'",`res_s` = "'.$u->info['s'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - }elseif($s[0]=='look_text') { - $itm = explode('=',$s[1]); - $r .= $itm[rand(0,count($itm)-1)]; - }elseif($s[0]=='save_pos_xy'){ - $itm = explode('=',$s[1]); - $u->info['res_x'] = $itm[0]; - $u->info['res_y'] = $itm[1]; - $upd = mysql_query('UPDATE `stats` SET `res_x` = "'.$u->info['x'].'",`res_y` = "'.$u->info['y'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if($upd){ - $r .= 'Вы куда-то переместились... на этот раз удачно...
    '; - }else{ - $r .= 'Что-то здесь не так ...'; - } - }elseif($s[0]=='port'){ - //телепортирует пользователя - $itm = explode('=',$s[1]); - $u->info['x'] = $itm[0]; - $u->info['y'] = $itm[1]; - $upd = mysql_query('UPDATE `stats` SET - `x` = "'.$u->info['x'].'",`y` = "'.$u->info['y'].'" - WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if($upd) - { - $r .= 'Вы куда-то переместились... на этот раз удачно...
    '; - }else{ - $r .= 'Что-то здесь не так ...'; - } - } elseif($s[0] == 'save_port') { - $itm = explode('=', $s[1]); - $u->info['res_x'] = $itm[0]; - $u->info['res_y'] = $itm[1]; - $upd = mysql_query('UPDATE `stats` SET `res_x` = "'.$u->info['res_x'].'", `res_y` = "'.$u->info['res_y'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } elseif($s[0]=='itm') - { - //Добавляем предмет - $j = 0; - $t = explode(',',$s[1]); - while($jtestAction('`uid` = "'.$u->info['id'].'" AND `vars` = "takeit_'.$this->info['id'].'_'.$obj['id'].'" LIMIT '.(1+(int)$itm[2]).'',2); //кол-во прошлых попыток - $ch = $ch[0]; - if($ch>=$itm[2]) - { - //закончились попытки - $r = 'ничего не произошло...
    '; - }else{ - if($itm[1]*1000>=rand(1,100000)) - { - - //Случайный предмет (Башня смерти) - if($itm[0] == 'random1') { - $itm[0] = $this->itbs[rand(0,count($this->itbs))]; - } - - //удачная попытка - $it = mysql_fetch_assoc(mysql_query('SELECT * FROM `items_main` WHERE `id`="'.((int)$itm[0]).'" LIMIT 1')); - if(isset($it['id'])) - { - $r .= 'Вы обнаружили предмет "'.$it['name'].'".
    '; - $this->addItem(array('uid'=>$u->info['id'],'iid'=>$it['id'],'time'=>time(),'x'=>$u->info['x'],'y'=>$u->info['y'],'bid'=>0,'del'=>(int)$itm[4])); - } - }else{ - //неудачная попытка - $r .= 'Вы ничего не нашли ...
    '; - } - $u->addAction(time(),'takeit_'.$this->info['id'].'_'.$obj['id'],$u->info['city']); - } - //записываем попытку - $j++; - } - }elseif($s[0]=='itm1') - { - //Добавляем предмет , только 1 предмет из всех и все юзеры могут тоже - $nj = 0; - $t = explode(',',$s[1]); - $j = rand(0,count($t)); - if($nj == 0) { - $itm = explode('=',$t[$j]); - $ch = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "takeit_'.$this->info['id'].'_'.$obj['id'].'" LIMIT '.(1+(int)$itm[2]).'',2); //кол-во прошлых попыток - $ch = $ch[0]; - if($ch>=$itm[2]) - { - //закончились попытки - $r .= 'Странно, но ничего не произошло...
    '; - }else{ - if($itm[1]*1000>=rand(1,100000)) - { - - //Случайный предмет (Башня смерти) - if($itm[0] == 'random1') { - $itm[0] = $this->itbs[rand(0,count($this->itbs))]; - } - - //удачная попытка - $it = mysql_fetch_assoc(mysql_query('SELECT * FROM `items_main` WHERE `id`="'.((int)$itm[0]).'" LIMIT 1')); - if(isset($it['id'])) - { - $r .= 'Вы обнаружили предмет "'.$it['name'].'".
    '; - $u->addAction(time(),'takeit_'.$this->info['id'].'_'.$obj['id'],$u->info['city']); - $this->addItem(array('uid'=>$u->info['id'],'iid'=>$it['id'],'time'=>time(),'x'=>$u->info['x'],'y'=>$u->info['y'],'bid'=>0,'del'=>(int)$itm[4])); - $nj++; - } - }else{ - //неудачная попытка - $u->addAction(time(),'takeit_'.$this->info['id'].'_'.$obj['id'],$u->info['city']); - $r .= 'Вы ничего не нашли ...
    '; - } - } - } - }elseif($s[0]=='itm2') - { - //Добавляем предмет , только 1 предмет из всех и только 1 юзер может поднять - $nj = 0; - $t = explode(',',$s[1]); - $j = rand(0,count($t)-1); - if($nj == 0) { - $itm = explode('=',$t[$j]); - $ch = $u->testAction('`vars` = "takeit_'.$this->info['id'].'_'.$obj['id'].'" LIMIT '.(1+(int)$itm[2]).'',2); //кол-во прошлых попыток - $ch = $ch[0]; - if($ch>=$itm[2]) - { - //закончились попытки - $r .= 'Ничего не произошло...
    '; - }else{ - if($itm[1]*1000>=rand(1,100000)) - { - - //Случайный предмет (Башня смерти) - if($itm[0] == 'random1') { - $itm[0] = $this->itbs[rand(0,count($this->itbs))]; - } - - //удачная попытка - $it = mysql_fetch_assoc(mysql_query('SELECT * FROM `items_main` WHERE `id`="'.((int)$itm[0]).'" LIMIT 1')); - if(isset($it['id'])) - { - $r .= 'Вы обнаружили предмет "'.$it['name'].'".
    '; - $u->addAction(time(),'takeit_'.$this->info['id'].'_'.$obj['id'],$u->info['city']); - $this->addItem(array('uid'=>$u->info['id'],'iid'=>$it['id'],'time'=>time(),'x'=>$u->info['x'],'y'=>$u->info['y'],'bid'=>0,'del'=>(int)$itm[4])); - $nj++; - } - }else{ - //неудачная попытка - $u->addAction(time(),'takeit_'.$this->info['id'].'_'.$obj['id'],$u->info['city']); - $r .= 'Вы ничего не нашли ...
    '; - } - } - } - }elseif($s[0]=='fileact') { - require('dnaction/'.$s[1].'.php'); - } - $i++; - } - $r = rtrim($r,'\'); - if($r=='') - { - $r = 'В этот раз не удалось найти что-либо еще'; - } - $this->error = $r; - } - }else{ - $this->error = 'Предмет не найден ...'; - } - } - - public function addItem($i) - { - //добавляем предмет в пещеру (возможно выпал из бота или из сундука) - $ins = mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`,`bot`,`del`) VALUES ("'.$this->info['id'].'","'.$i['uid'].'","'.$i['iid'].'","'.$i['time'].'","'.$i['x'].'","'.$i['y'].'","'.$i['bid'].'","'.((int)$i['del']).'")'); - return $ins; - } - - public function takeinv($id) - { - global $u,$c,$code; - $obj = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_items` WHERE `id` = "'.$id.'" AND `for_dn` = "0" AND `dn` = "'.$this->info['id'].'" LIMIT 1')); - if(isset($obj['id'])) - { - $this->test_luck($id); - $fxv = array( - 'luck_count' => mysql_fetch_assoc(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$this->info['id'].'" AND `vars` = "luck_itm'.mysql_real_escape_string($id).'" LIMIT 1')), - 'user_count' => mysql_fetch_assoc(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `dnow` = "'.$this->info['id'].'" LIMIT 1')) - ); - if($obj['user'] == 0 && $fxv['user_count'][0] > $fxv['luck_count'][0] && $fxv['user_count'][0] > 1 && $this->info['bsid'] == 0 ) { - $this->error = 'Вы не можете сейчас поднять этот предмет, дождитесь завершения розыгрыша. Осталось '.$u->timeOut($obj['time']-time()+300); - }elseif($u->info['x']!=$obj['x'] || $obj['y']!=$u->info['y']) - { - $this->error = 'Предмет не найден ...'; - }else{ - if($obj['take']>0) - { - $this->error = 'Кто-то опередил вас ...'; - }else{ - if($obj['user']>0 && $obj['user']!=$u->info['id'] && $obj['time']>time()-300) - { - $uo = mysql_fetch_assoc(mysql_query('SELECT `id`,`login`,`sex` FROM `users` WHERE `id` = "'.$obj['user'].'" LIMIT 1')); - } - if(isset($uo['id'])) - { - $this->error = 'Предмет предназначен для "'.$uo['login'].'". Вы сможете забрать этот предмет, если '; - if($uo['sex']==1) - { - $this->error .= 'она '; - }else{ - $this->error .= 'он '; - } - $this->error .= ' не поднимет его в течении '.ceil(5-(time()-$obj['time'])/60).' мин.'; - unset($uo); - }else{ - $upd = mysql_query('UPDATE `dungeon_items` SET `take` = "'.$u->info['id'].'" WHERE `id` = "'.$obj['id'].'" LIMIT 1'); - if($upd){ - $it = mysql_fetch_assoc(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$obj['item_id'].'" LIMIT 1')); - if(isset($it['id'])){ - $data = '|noremont=1|frompisher='.$this->info['id2']; - if($it['ts']!=0){ - $data .= '|sudba='.$u->info['login']; - } - if($obj['data'] != '') { - $data .= $obj['data']; - } - $data = str_replace('|sudba=-1','|sudba='.$u->info['login'].'',$data); - - $idl = $u->addItem($obj['item_id'],$u->info['id'],$data,$obj); - if( $obj['del'] > 0 ) { - mysql_query('UPDATE `items_users` SET `dn_delete` = 1 WHERE `id` = "'.$idl.'" LIMIT 1'); - } - unset($idl); - - if($this->info['bsid'] == 0) { - $rtxt = ''.$u->info['login'].' поднял предмет "'.$it['name'].'"'; - if( $obj['quest'] > 0 ) { - $rtxt .= ' (Квест)'; - } - mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('".$u->info['dnow']."','".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1','1')"); - } - - $this->error = 'Вы подняли "'.$it['name'].'"'; - }else{ - $this->error = 'Не удалось найти предмет ...'; - } - }else{ - $this->error = 'Не удалось добавить предмет в инвентарь ...'; - } - } - } - } - } - } - - - //Розыгрыш предмета - public function test_luck($id) { - global $u; - $fxv = array( - 'itm' => mysql_fetch_assoc(mysql_query('SELECT `im`.*,`ish`.* FROM `dungeon_items` AS `ish` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `ish`.`item_id`) WHERE `ish`.`dn` = "'.$this->info['id'].'" AND `ish`.`id` = "'.mysql_real_escape_string($id).'" AND `ish`.`take` = "0" AND `ish`.`delete` = "0" AND `ish`.`x` = "'.$u->info['x'].'" AND `ish`.`y` = "'.$u->info['y'].'" LIMIT 1')), - 'luck_count' => mysql_fetch_assoc(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$this->info['id'].'" AND `vars` = "luck_itm'.mysql_real_escape_string($id).'" LIMIT 1')), - 'user_count' => mysql_fetch_assoc(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `dnow` = "'.$this->info['id'].'" LIMIT 1')) - ); - $fxv['luck_count'] = $fxv['luck_count'][0]; - $fxv['user_count'] = $fxv['user_count'][0]; - - if( $fxv['itm']['user'] > 0 ) { - - }elseif( $fxv['luck_count'] >= $fxv['user_count'] || $fxv['itm']['time']+300 < time() ) { - $fxv['sp'] = mysql_query('SELECT * FROM `dungeon_actions` WHERE `dn` = "'.$this->info['id'].'" AND `vars` = "luck_itm'.mysql_real_escape_string($id).'" ORDER BY `vals` DESC LIMIT '.$fxv['luck_count'].''); - $fxv['winner'] = array(); - $fxv['win_val'] = 0; - unset($fxv['pl'],$fxv['sp']); - if( count($fxv['winner']) > 1 ) { - //Розыгрыш еще раз между победителями - $this->error .= '
    Розыгрыш завершен!
    '; - }elseif(count($fxv['winner']) == 1) { - $fxv['user_win'] = mysql_fetch_assoc(mysql_query('SELECT `id`,`login`,`sex` FROM `users` WHERE `id` = "'.$fxv['winner'][0].'" LIMIT 1')); - $fxv['text'] = ''.$fxv['user_win']['login'].' выигрывает в споре за предмет "'.$fxv['itm']['name'].'"'; - $this->sys_chat($fxv['text']); - mysql_query('UPDATE `dungeon_items` SET `time` = "'.time().'",`user` = "'.$fxv['user_win']['id'].'" WHERE `id` = "'.$fxv['itm']['id'].'" LIMIT 1'); - $this->error .= '
    Розыгрыш завершен! Победитель '.$fxv['user_win']['login'].'!
    '; - } - }else{ - $this->error .= '
    У остальных участников осталось '.$u->timeOut($fxv['itm']['time']+300-time()).' мин. до конца розыгрыша
    '; - } - unset($fxv); - } - - public function itm_luck($id) { - global $u; - $fxv = array( - 'itm' => mysql_fetch_assoc(mysql_query('SELECT `im`.*,`ish`.* FROM `dungeon_items` AS `ish` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `ish`.`item_id`) WHERE `ish`.`dn` = "'.$this->info['id'].'" AND `ish`.`id` = "'.mysql_real_escape_string($id).'" AND `ish`.`take` = "0" AND `ish`.`delete` = "0" AND `ish`.`x` = "'.$u->info['x'].'" AND `ish`.`y` = "'.$u->info['y'].'" LIMIT 1')), - 'luck' => mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_actions` WHERE `uid` = "'.$u->info['id'].'" AND `dn` = "'.$this->info['id'].'" AND `vars` = "luck_itm'.mysql_real_escape_string($id).'" LIMIT 1')), - 'luck2' => mysql_fetch_assoc(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `uid` = "'.$u->info['id'].'" AND `dn` = "'.$this->info['id'].'" AND `vars` = "luck_itm'.mysql_real_escape_string($id).'" LIMIT 1')) - ); - if( $u->stats['silver'] >= 3 ) { //дополнительный бросок - $fxv['luck2'][0]--; - } - if( $fxv['itm']['user'] > 0 ) { - $this->error = 'Розыгрыш предмет уже завершился...'; - }elseif( !isset($fxv['itm']['id']) ) { - $this->error .= '
    Предмет не найден
    '; - }elseif( $fxv['luck2'][0] > 0 ) { - $this->error .= '
    Вы уже учавствуете в розыгрыше "'.$fxv['itm']['name'].'", ожидаем других участников еще '.$u->timeOut($fxv['itm']['time']-time()+300).'
    '; - }else{ - $luck_users = mysql_fetch_assoc(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "'.$u->info['id'].'" AND `dn` = "'.$this->info['id'].'" AND `vars` = "luck_itm'.mysql_real_escape_string($id).'" LIMIT 1')); - $luck_users = $luck_users[0]; - if( $luck_users < 1 ) { - mysql_query('UPDATE `dungeon_items` SET `time` = "'.time().'" WHERE `id` = "'.$fxv['itm']['id'].'" LIMIT 1'); - } - $rndl = rand(1,100); - mysql_query('INSERT INTO `dungeon_actions` (`uid`,`dn`,`x`,`y`,`time`,`vars`,`vals`) VALUES ( - "'.$u->info['id'].'","'.$u->info['dnow'].'","'.$u->info['x'].'","'.$u->info['y'].'","'.time().'", - "luck_itm'.mysql_real_escape_string($id).'","'.$rndl.'" - )'); - if( $u->info['sex'] == 0 ) { - $fxv['text'] = ''.$u->info['login'].' выбросил *'.$rndl.'* в споре за предмет "'.$fxv['itm']['name'].'"'; - }else{ - $fxv['text'] = ''.$u->info['login'].' выбросила *'.$rndl.'* в споре за предмет "'.$fxv['itm']['name'].'"'; - } - $this->sys_chat($fxv['text']); - $this->error .= '
    Вы выбросили '.$rndl.' в споре за "'.$fxv['itm']['name'].'"
    '; - } - $this->test_luck($id); - unset($fxv); - } - - public function itm_unluck($id) { - global $u; - $fxv = array( - 'itm' => mysql_fetch_assoc(mysql_query('SELECT `im`.*,`ish`.* FROM `dungeon_items` AS `ish` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `ish`.`item_id`) WHERE `ish`.`dn` = "'.$this->info['id'].'" AND `ish`.`id` = "'.mysql_real_escape_string($id).'" AND `ish`.`take` = "0" AND `ish`.`delete` = "0" AND `ish`.`x` = "'.$u->info['x'].'" AND `ish`.`y` = "'.$u->info['y'].'" LIMIT 1')), - 'luck' => mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_actions` WHERE `uid` = "'.$u->info['id'].'" AND `dn` = "'.$this->info['id'].'" AND `vars` = "luck_itm'.mysql_real_escape_string($id).'" LIMIT 1')) - ); - if( $fxv['itm']['user'] > 0 ) { - $this->error = 'Розыгрыш предмет уже завершился...'; - }elseif( !isset($fxv['itm']['id']) ) { - $this->error .= '
    Предмет не найден
    '; - }elseif( isset($fxv['luck']['id']) ) { - if( $fxv['luck']['vals'] == 0 ) { - $this->error .= '
    Вы уже отказались от участия в розыгрыше "'.$fxv['itm']['name'].'"
    '; - }else{ - $this->error .= '
    Вы уже учавствуете в розыгрыше "'.$fxv['itm']['name'].'", ожидаем других участников еще '.$u->timeOut($fxv['itm']['time']-time()+300).'
    '; - } - }else{ - $luck_users = mysql_fetch_assoc(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "'.$u->info['id'].'" AND `dn` = "'.$this->info['id'].'" AND `vars` = "luck_itm'.mysql_real_escape_string($id).'" LIMIT 1')); - $luck_users = $luck_users[0]; - if( $luck_users < 1 ) { - mysql_query('UPDATE `dungeon_items` SET `time` = "'.time().'" WHERE `id` = "'.$fxv['itm']['id'].'" LIMIT 1'); - } - if( $u->info['sex'] == 0 ) { - $fxv['text'] = ''.$u->info['login'].' отказался от спора за предмет "'.$fxv['itm']['name'].'"'; - }else{ - $fxv['text'] = ''.$u->info['login'].' отказалась от спора за предмет "'.$fxv['itm']['name'].'"'; - } - $this->sys_chat($fxv['text']); - mysql_query('INSERT INTO `dungeon_actions` (`uid`,`dn`,`x`,`y`,`time`,`vars`,`vals`) VALUES ( - "'.$u->info['id'].'","'.$u->info['dnow'].'","'.$u->info['x'].'","'.$u->info['y'].'","'.time().'", - "luck_itm'.mysql_real_escape_string($id).'","0" - )'); - $this->error .= '
    Вы отказались от участия в розыгрыше "'.$fxv['itm']['name'].'"
    '; - } - unset($fxv); - } - - public function itemsMap() - { - global $u,$c,$code; - $r = ''; - $live_users = mysql_fetch_assoc(mysql_query('SELECT COUNT(`id`) FROM `stats` WHERE `dnow` = "'.$this->info['id'].'" LIMIT 1')); - $live_users = $live_users[0]; - $sp = mysql_query('SELECT `im`.*,`ish`.* FROM `dungeon_items` AS `ish` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `ish`.`item_id`) WHERE `ish`.`dn` = "'.$this->info['id'].'" AND `ish`.`take` = "0" AND `ish`.`delete` = "0" AND ( `ish`.`onlyfor` = "0" OR `ish`.`onlyfor` = "'.$u->info['id'].'" ) AND `ish`.`x` = "'.$u->info['x'].'" AND `ish`.`y` = "'.$u->info['y'].'" LIMIT 100'); - while($pl = mysql_fetch_assoc($sp)) - { - $action = 'main.php?take='.$pl['id'].''; $tk = 0; - $luck_users = mysql_fetch_assoc(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "'.$u->info['id'].'" AND `dn` = "'.$this->info['id'].'" AND `vars` = "luck_itm'.mysql_real_escape_string($pl['id']).'" LIMIT 1')); - $luck_users = $luck_users[0]; - if( $pl['user'] == 0 && $live_users > 1 && ( $pl['time']+300 > time() || $luck_users < 1 ) ) { - $fxv = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_actions` WHERE `uid` = "'.$u->info['id'].'" AND `dn` = "'.$this->info['id'].'" AND `vars` = "luck_itm'.$pl['id'].'" LIMIT 1')); - if( !isset($fxv['id']) ) { - //Розыгрыш - if( $this->info['bsid'] == 0 ) { - $action = 'javascript: top.fartgame(\''.$pl['id'].'\',\''.$pl['img'].'\',\''.$pl['name'].'\',1,\'\');'; - $tk = 1; - } - }else{ - //$action = 'javascript:alert(\'Вы уже учавствуете в розыгрыше данного предмета\');'; - } - } - //href="'.$action.'" - if($tk == 0) { - $r .= ''; - } elseif($tk == 1) { - $r .= ''; - } - } - if($r!='') - { - $r = '

    В комнате разбросаны вещи:

    '.$r; //
    Подобрать все
    - } - return $r; - } - - public function testLike($x1,$y1,$x2,$y2) - { - //из $x1,$y1 в $x2,$y2 - //доступна-ли эта клетка для действий - $r = 0; - $c1 = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "'.$x1.'" AND `y` = "'.$y1.'" AND `id_dng` = "'.$this->info['id2'].'" LIMIT 1')); - $c2 = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "'.$x2.'" AND `y` = "'.$y2.'" AND `id_dng` = "'.$this->info['id2'].'" LIMIT 1')); - if(isset($c1['id']) && isset($c2['id'])) - { - if($x1==$x2 && $y1==$y2) - { - $r = 1; - }elseif($x1==$x2-1 && $c1['go_1']==1) //право - { - $r = 1; - }elseif($x1==$x2+1 && $c1['go_2']==1) //лево - { - $r = 1; - }elseif($y1==$y2-1 && $c1['go_3']==1) //верх - { - $r = 1; - }elseif($y1==$y2+1 && $c1['go_4']==1) //низ - { - $r = 1; - } - } - return $r; - } - - public function genObjects() { - global $u,$c,$code; - ////i:{id,name,mapPoint,action,img,type}, - //'count':1,0:{0:1234,1:'Сундук',2:5,3:'',4:'test.gif',5:0,6:position,7:width,8:heigh,9:left,10:top}, - //psition 0 - по центру , 1- сверху, 2- слева, 3- снизу, 4- справа - $r = ''; - $whr = array( - 1 => ' (((`u`.`x` <= '.($u->info['x']+2).' && `u`.`x` >= '.($u->info['x']-2).') && (`u`.`y` >= '.($u->info['y']+1).' && `u`.`y` <= '.($u->info['y']+4).')) OR (`u`.`y` = '.$u->info['y'].' && `u`.`x` = '.$u->info['x'].')) ', //прямо - 3 => ' (((`u`.`x` <= '.($u->info['x']+2).' && `u`.`x` >= '.($u->info['x']-2).') && (`u`.`y` <= '.($u->info['y']-1).' && `u`.`y` >= '.($u->info['y']-4).')) OR (`u`.`y` = '.$u->info['y'].' && `u`.`x` = '.$u->info['x'].')) ', //вниз - 2 => ' (((`u`.`x` <= '.($u->info['x']-1).' && `u`.`x` >= '.($u->info['x']-4).') && (`u`.`y` <= '.($u->info['y']+2).' && `u`.`y` >= '.($u->info['y']-2).'))OR (`u`.`y` = '.$u->info['y'].' && `u`.`x` = '.$u->info['x'].')) ', //лево - 4 => ' (((`u`.`x` >= '.($u->info['x']+1).' && `u`.`x` <= '.($u->info['x']+4).') && (`u`.`y` <= '.($u->info['y']+2).' && `u`.`y` >= '.($u->info['y']-2).')) OR (`u`.`y` = '.$u->info['y'].' && `u`.`x` = '.$u->info['x'].')) ' //право - ); - $sp = mysql_query('SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "'.$u->info['dnow'].'" AND `u`.`for_dn` = "0" AND ((`u`.`s` = "0" OR `u`.`s` = "'.$this->gs.'") OR `u`.`s2` = "'.$this->gs.'") AND '.$whr[$this->gs].' LIMIT 150'); - $i = 0; $pos = array(); - while( $pl = mysql_fetch_assoc($sp) ) { - if($pl['fix_x_y'] == 0 || - ($pl['fix_x_y'] == 1 && $pl['x'] == $u->info['x']) || - ($pl['fix_x_y'] == 2 && $pl['y'] == $u->info['y']) || - ($pl['fix_x_y'] == 3 && $pl['x'] == $u->info['x'] && $pl['y'] == $u->info['y'])) { - if(($pl['os1']==0 && $pl['os2']==0 && $pl['os3']==0 && $pl['os4']==0) || ($this->cord[$pl['y'].'_'.$pl['x']] == $pl['os1'] || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os2'] || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os3'] || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os4'])) { - $i++; if(!isset($pos[$this->cord[$pl['y'].'_'.$pl['x']]])){ $pos[$this->cord[$pl['y'].'_'.$pl['x']]] = 0; } $pos[$this->cord[$pl['y'].'_'.$pl['x']]]++; - $r .= ','.($i-1).':{0:'.$pl['id'].',1:\''.$pl['name'].'\',2:'.(0+$this->cord[$pl['y'].'_'.$pl['x']]).',3:\'action\',4:\''.$pl['img'].'\',5:'.$pl['type'].',6:0,7:'.$pl['w'].',8:'.$pl['h'].',9:'.$pl['left'].',10:'.$pl['top'].',11:'.$pl['date'].'}'; - }elseif( $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os1']-1 || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os2']-1 || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os3']-1 || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os4']-1 ) { - $dt2 = explode(',',ltrim(rtrim($pl['date'],'\}'),'\{')); - $da = array(); - $is = 0; - while($is < count($dt2)) { - $dt2[$is] = explode(':',$dt2[$is]); - $da[$dt2[$is][0]] = $dt2[$is][1]; - $is++; - } - if(isset($da['use'])) unset($da['use']); // Справа - if(isset($da['rl2']))$da['rl2'] = -round((int)$da['rl2'] * 1.55); // Слева - if(isset($da['rl3']))$da['rl3'] = round((int)$da['rl3'] +160); - if(isset($da['rl4']))$da['rl4'] = round((int)$da['rl4'] -120); - $pl['date'] = str_replace('"', '', json_encode($da)); - - - $i++; if(!isset($pos[$this->cord[$pl['y'].'_'.$pl['x']]])){ $pos[$this->cord[$pl['y'].'_'.$pl['x']]] = 0; } $pos[$this->cord[$pl['y'].'_'.$pl['x']]]++; - $r .= ','.($i-1).':{0:'.$pl['id'].',1:\''.$pl['name'].'\',2:'.(0+$this->cord[$pl['y'].'_'.$pl['x']]).',3:\'\',4:\''.$pl['img'].'\',5:'.$pl['type'].',6:0,7:'.$pl['w'].',8:'.$pl['h'].',9:'.$pl['left'].',10:'.$pl['top'].',11:'.$pl['date'].'}'; - } else if( $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os1']+1 || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os2']+1 || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os3']+1 || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os4']+1 ) { - - $dt2 = explode(',',ltrim(rtrim($pl['date'],'\}'),'\{')); - $da = array(); - $is = 0; - while($is < count($dt2)) { - $dt2[$is] = explode(':',$dt2[$is]); - $da[$dt2[$is][0]] = $dt2[$is][1]; - $is++; - } - if(isset($da['use'])) unset($da['use']); // Справа - if(isset($da['rl2']))$da['rl2'] = 355-round((int)$da['rl2'] * 0.30); // Справа - if(isset($da['rl3']))$da['rl3'] = round((int)$da['rl3'] -160); - if(isset($da['rl4']))$da['rl4'] = round((int)$da['rl4'] +120); - $pl['date'] = str_replace('"', '', json_encode($da)); - $i++; if(!isset($pos[$this->cord[$pl['y'].'_'.$pl['x']]])){ $pos[$this->cord[$pl['y'].'_'.$pl['x']]] = 0; } $pos[$this->cord[$pl['y'].'_'.$pl['x']]]++; - $r .= ','.($i-1).':{0:'.$pl['id'].',1:\''.$pl['name'].'\',2:'.(0+$this->cord[$pl['y'].'_'.$pl['x']]).',3:\'\',4:\''.$pl['img'].'\',5:'.$pl['type'].',6:0,7:'.$pl['w'].',8:'.$pl['h'].',9:'.$pl['left'].',10:'.$pl['top'].',11:'.$pl['date'].'}'; - } - } - } - $r = 'count:'.$i.$r; - return $r; - } - - public function botAtack($bot,$uid,$bs) { - global $u,$c,$code; - $user = mysql_fetch_assoc(mysql_query('SELECT `id`,`battle` FROM `users` WHERE `id` = "'.$uid['id'].'" LIMIT 1')); - - if($user['battle']>0){ - $btli = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "'.$user['battle'].'" AND `team_win` = "-1" LIMIT 1')); - } - - if( !isset($btli['id']) ) { //Создаем поединок - $btl_id = 0; - $expB = 0; - $btl = array('players'=>'', 'timeout'=>120, 'type'=>0, 'invis'=>0, 'noinc'=>0, 'travmChance'=>0, 'typeBattle'=>0, 'addExp'=>$expB, 'money'=>0 ); - - $ins = mysql_query('INSERT INTO `battle` (`dungeon`,`dn_id`,`x`,`y`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ("'.$this->info['id2'].'", "'.$this->info['id'].'", "'.$bot['x'].'", "'.$bot['y'].'", "'.$u->info['city'].'", "'.time().'", "'.$btl['players'].'", "'.$btl['timeout'].'", "'.$btl['type'].'", "'.$btl['invis'].'", "'.$btl['noinc'].'", "'.$btl['travmChance'].'", "'.$btl['typeBattle'].'", "'.$btl['addExp'].'", "'.$btl['money'].'")'); - - $btl_id = mysql_insert_id(); - - if( $btl_id > 0 ) { //Добавляем ботов - $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "0" AND `delete` = "0" AND `dn` = "'.$this->info['id'].'" AND `id2` = "'.$bot['id2'].'" LIMIT 1'); // Только тот, который напал и жив ли он? - $j = 0; - $logins_bot = array(); - while($pl = mysql_fetch_assoc($sp)) { - mysql_query('UPDATE `dungeon_bots` SET `inBattle` = "'.$btl_id.'" WHERE `id2` = "'.$bot['id2'].'" LIMIT 1'); - $jui = 1; - while($jui<=$pl['colvo']) { - $k = $u->addNewbot($pl['id_bot'],NULL,NULL,$logins_bot); - $logins_bot = $k['logins_bot']; - if( $k!=false ) { - $upd = mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'" WHERE `id` = "'.$k['id'].'" LIMIT 1'); - if($upd) { - $upd = mysql_query('UPDATE `stats` SET `team` = "2" WHERE `id` = "'.$k['id'].'" LIMIT 1'); - if($upd) { - $j++; - } - } - } - $jui++; - } - } - unset($logins_bot); - if( $j>0 ) { - mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'" WHERE `id` = "'.$user['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "'.$user['id'].'" LIMIT 1'); - } - } - } else { - $btl_id = $btli['id']; - //Добавляем ботов - $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "0" AND `delete` = "0" AND `dn` = "'.$this->info['id'].'" AND `id2` = "'.$bot['id2'].'" LIMIT 1'); - $j = 0; $logins_bot = array(); - $logins_bot_text =array(); - $logins_bot_vars =array('time1='.time().''); - while( $pl = mysql_fetch_assoc($sp) ) { - mysql_query('UPDATE `dungeon_bots` SET `inBattle` = "'.$btl_id.'" WHERE `id2` = "'.$bot['id2'].'" LIMIT 1'); - $jui = 1; - while($jui<=$pl['colvo']){ - $k = $u->addNewbot($pl['id_bot'],NULL,NULL,$logins_bot); - $logins_bot = $k['logins_bot']; - $logins_bot_text[] = ' '.$k['login'].''; - if($k!=false){ - $upd = mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'" WHERE `id` = "'.$k['id'].'" LIMIT 1'); - if($upd){ - $upd = mysql_query('UPDATE `stats` SET `team` = "2" WHERE `id` = "'.$k['id'].'" LIMIT 1'); - if($upd){ - $j++; - } - } - } - $jui++; - } - if( $j>0 ){ - $logins_bot_text = '{tm1} В поединок вмешались: '.implode(', ',$logins_bot_text).'.'; - $logins_bot_vars = implode('||',$logins_bot_vars); - $battle_log = mysql_fetch_assoc(mysql_query('SELECT * FROM `battle_logs` WHERE `battle`='.$btl_id.' ORDER BY `id_hod` DESC LIMIT 1')); - if($battle_log['id_hod']>0){ - mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("'.time().'","'.$btl_id.'","'.($battle_log['id_hod']+1).'","'.$logins_bot_text.'","'.$logins_bot_vars.'","","","","",1)'); - } - } - } - unset($logins_bot); - if( $j > 0 ) { - mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'" WHERE `id` = "'.$user['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "'.$user['id'].'" LIMIT 1'); - } - } - } - - public function genUsers() { - global $u,$c,$code; - ////i:{id,login,mapPoint,sex,obraz,type,users_p}, - //'count':1,0:{0:1015,1:'Test1',2:5,3:0,4:'1',5:'user',6:1}, - $r = ''; - $whr = array( - 1 => ' ((`u`.`x` <= '.($u->info['x']+2).' && `u`.`x` >= '.($u->info['x']-2).') && (`u`.`y` >= '.$u->info['y'].' && `u`.`y` <= '.($u->info['y']+4).')) ', //прямо - 3 => ' ((`u`.`x` <= '.($u->info['x']+2).' && `u`.`x` >= '.($u->info['x']-2).') && (`u`.`y` <= '.$u->info['y'].' && `u`.`y` >= '.($u->info['y']-4).')) ', //вниз - 2 => ' ((`u`.`x` <= '.$u->info['x'].' && `u`.`x` >= '.($u->info['x']-4).') && (`u`.`y` <= '.($u->info['y']+2).' && `u`.`y` >= '.($u->info['y']-2).')) ', //лево - 4 => ' ((`u`.`x` >= '.$u->info['x'].' && `u`.`x` <= '.($u->info['x']+4).') && (`u`.`y` <= '.($u->info['y']+2).' && `u`.`y` >= '.($u->info['y']-2).')) ' //право - ); - // - $tmsu = mysql_fetch_assoc(mysql_query('SELECT * FROM `katok_now` WHERE `clone` = "'.$u->info['id'].'" LIMIT 1')); - // - $sp = mysql_query('SELECT `u`.*,`st`.* FROM `stats` AS `u` LEFT JOIN `users` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`dnow` = "'.$u->info['dnow'].'" AND '.$whr[$this->gs].' AND `u`.`id` != "'.$u->info['id'].'" LIMIT 100'); - $i = 0; $pos = array(); - while($pl = mysql_fetch_assoc($sp)){ - $i++; if(!isset($pos[$this->cord[$pl['y'].'_'.$pl['x']]])){ $pos[$this->cord[$pl['y'].'_'.$pl['x']]] = 0; } $pos[$this->cord[$pl['y'].'_'.$pl['x']]]++; - $noat = 0; - if( $this->info['bsid'] > 0 ) { - $noat = 1; - } - if( $this->info['id2'] == 15 ) { - //Хоккей - $r .= ','.($i-1).':{8:'.$noat.',0:'.$pl['id'].',1:\''.$pl['login'].'\',2:'.(0+$this->cord[$pl['y'].'_'.$pl['x']]).',3:'.$pl['sex'].',4:\''.str_replace('.gif','',$pl['obraz']).'\',5:\'user\',6:'.$pos[$this->cord[$pl['y'].'_'.$pl['x']]].''; - // - $tms = mysql_fetch_assoc(mysql_query('SELECT * FROM `katok_now` WHERE `clone` = "'.$pl['id'].'" LIMIT 1')); - if($tms['team'] == $tmsu['team']) { - $r .= ',9:1'; - }else{ - $r .= ',9:2'; - } - $r .= ''; - // - $r .= '}'; - }else{ - $r .= ','.($i-1).':{9:0,8:'.$noat.',0:'.$pl['id'].',1:\''.$pl['login'].'\',2:'.(0+$this->cord[$pl['y'].'_'.$pl['x']]).',3:'.$pl['sex'].',4:\''.str_replace('.gif','',$pl['obraz']).'\',5:\'user\',6:'.$pos[$this->cord[$pl['y'].'_'.$pl['x']]].'}'; - } - } - - //отображаем ботов - // - //$sp = mysql_query('SELECT `u`.*,`st`.* FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE `u`.`dn` = "'.$u->info['dnow'].'" AND `u`.`atack` = "0" AND `u`.`delete` = "0" AND `u`.`inBattle` = "0" AND `u`.`go_bot` > 0 ORDER BY `u`.`go_bot` ASC LIMIT 35'); - - // Выбираем Ботов в подземельи, которые Не в бою, Живые, и не дальше чем -\+30 по X и -\+35 по Y (дабы не гонять всех ботов, меньше выборка). - - $sp = mysql_query('SELECT `db`.*, `tb`.* FROM `dungeon_bots` AS `db` LEFT JOIN `test_bot` AS `tb` ON (`db`.`id_bot` = `tb`.`id`) LEFT JOIN `stats` as `st` ON (`st`.`dnow` = `db`.`dn`) WHERE `db`.`dn` = "'.$u->info['dnow'].'" AND `db`.`x` > `st`.`x`-30 AND `db`.`x` < `st`.`x`+30 AND `db`.`y` > `st`.`y`-35 AND `db`.`y` < `st`.`y`+35 AND `db`.`atack` = "0" AND `db`.`delete` = "0" AND `db`.`inBattle` = "0" AND `db`.`go_bot` > 0 GROUP BY `db`.`id2` ORDER BY `db`.`go_bot` ASC LIMIT 100'); - while($pl = mysql_fetch_assoc($sp)){ - //перемещение бота, каждые 3-10 сек. - if( $pl['go_bot'] > 0 && $pl['go_bot'] <= time() ) { - $tgx = rand(-1,1); - $tgy = rand(-1,1); - if($tgx!=0 && $tgy!=0) { - if(rand(0,1)==1){ - $tgy = 0; - }else{ - $tgx = 0; - } - } - $vlb = $this->testLike($pl['x'],$pl['y'],$pl['x']+$tgx,$pl['y']+$tgy); - //Кто-то рядом - $tuz = mysql_fetch_assoc(mysql_query('SELECT `x`,`y`,`id`,`hpNow` FROM `stats` WHERE `dnow` = "'.$this->info['id'].'" AND ( (`x` = '.($pl['x']+1).' AND `y` = '.($pl['y']).') OR (`x` = '.($pl['x']-1).' AND `y` = '.($pl['y']).') OR (`x` = '.($pl['x']).' AND `y` = '.($pl['y']+1).') OR (`x` = '.($pl['x']).' AND `y` = '.($pl['y']-1).') ) LIMIT 1')); - - if(isset($tuz['id']) && $this->testLike($pl['x'],$pl['y'],$tuz['x'],$tuz['y'])==1){ - $tuz['x']=$pl['x']; - $tuz['y']=$pl['y']; - mysql_query('UPDATE `stats` SET `x` = "'.$tuz['x'].'" , `y` = "'.$tuz['y'].'" WHERE `id` = "'.$tuz['id'].'" LIMIT 1'); - $this->botAtack($pl,$tuz,1);//Тут - $sps = mysql_query('SELECT `db`.*, `tb`.* FROM `dungeon_bots` AS `db` LEFT JOIN `test_bot` AS `tb` ON (`db`.`id_bot` = `tb`.`id`) LEFT JOIN `stats` as `st` ON (`st`.`dnow` = `db`.`dn`) WHERE `db`.`dn` = "'.$u->info['dnow'].'" AND `db`.`x` ="'.$tuz['x'].'" AND `db`.`y` ="'.$tuz['y'].'" AND `db`.`atack` = "0" AND `db`.`delete` = "0" AND `db`.`inBattle` = "0" GROUP BY `db`.`id2` ORDER BY `db`.`go_bot` ASC LIMIT 50'); - while($pll = mysql_fetch_assoc($sps)){ - $this->botAtack($pll,$tuz,1); - } - - }elseif($vlb == 1){ // Передвижение ботов. - $pl['go_bot'] = time()+10+rand(1,5); - $pl['x'] += $tgx; - $pl['y'] += $tgy; - mysql_query('UPDATE `dungeon_bots` SET `x` = "'.$pl['x'].'",`y` = "'.$pl['y'].'",`go_bot` = "'.$pl['go_bot'].'" WHERE `id2` = "'.$pl['id2'].'" LIMIT 1'); - } - unset($tgx,$tgy,$vlb,$tuz); - } - } - - $sp = mysql_query('SELECT `u`.*,`st`.* FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE `u`.`dn` = "'.$u->info['dnow'].'" AND '.$whr[$this->gs].' AND `u`.`delete` = "0" LIMIT 50'); - while($pl = mysql_fetch_assoc($sp)){ - $i++; if(!isset($pos[$this->cord[$pl['y'].'_'.$pl['x']]])){ $pos[$this->cord[$pl['y'].'_'.$pl['x']]] = 0; } $pos[$this->cord[$pl['y'].'_'.$pl['x']]]++; - $dlg = 0; - if($pl['dialog']>0){ - $dlg = $pl['dialog']; - } - $noat = 1; - if( $pl['noatack'] == 1 && $this->info['bsid'] == 0 ) { - $noat = 0; - } - $r .= ','.($i-1).':{9:0,0:'.$pl['id2'].',1:\''.$pl['login'].'\',2:'.(0+$this->cord[$pl['y'].'_'.$pl['x']]).',3:'.$pl['sex'].',4:\''.str_replace('.gif','',$pl['obraz']).'\',5:\'bot\',6:'.$pos[$this->cord[$pl['y'].'_'.$pl['x']]].',7:'.$dlg.',8:'.$noat.'}'; - } - - $r = 'count:'.$i.$r; - //$wd = $this->cord['2_0']; - return $r; - } - - public function testGo($id) - { - global $u,$c,$code; - $go = 0; - if($id==1) - { - //вперед - $go = $this->sg[$this->gs][1]; - }elseif($id==2) - { - //назад - $go = $this->sg[$this->gs][3]; - }elseif($id==3) - { - //на право - $go = $this->sg[$this->gs][4]; - }elseif($id==4) - { - //на лево - $go = $this->sg[$this->gs][2]; - } - $thp = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "'.$u->info['x'].'" AND `y` = "'.$u->info['y'].'" AND `id_dng` = "'.$this->info['id2'].'" LIMIT 1')); - $ng = array( - 4=>1, - 2=>2, - 1=>3, - 3=>4 - ); - if(isset($thp['id']) && $thp['go_'.$ng[$go]]==0) - { - $go = 0; - } - $tgo = array(0=>0,1=>0); - if($go==1) - { - $tgo[1] += 1; - }elseif($go==2) - { - $tgo[0] -= 1; - }elseif($go==3) - { - $tgo[1] -= 1; - }elseif($go==4) - { - $tgo[0] += 1; - } - - $tbot = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_bots` WHERE `x` = "'.($u->info['x']+(int)$tgo[0]).'" AND `y` = "'.($u->info['y']+(int)$tgo[1]).'" AND `dn` = "'.$this->info['id'].'" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1')); - if(isset($tbot['id2']) && $u->info['admin']==0) - { - $go = 0; - } - - $tmap = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "'.$u->info['x'].'" AND `y` = "'.$u->info['y'].'" AND `id_dng` = "'.$this->info['id2'].'" LIMIT 1')); - //наличие предмета - if($tmap['tr_items']!='') - { - $ti = explode(',',$tmap['tr_items']); - $i = 0; $trnit = ''; - while($i0 && $ti2[1]>0) - { - $num_rows = mysql_num_rows(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inShop` = "0" AND `item_id` = "'.((int)$ti2[0]).'" LIMIT '.((int)$ti2[1]).'')); - if($num_rows < (int)$ti2[1]) - { - $tgo = $ti2[2]; - if($tgo!='0000') - { - if($tgo[$ng[$go]-1]==1) - { - $go = 0; - $trm = mysql_fetch_assoc(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.((int)$ti2[0]).'" LIMIT 1')); - $trnit .= '"'.$trm['name'].'", '; - } - } - } - } - $i++; - } - if($trnit!='') - { - $trnit = rtrim($trnit,', '); - $this->error = 'У вас нет подходящего предмета. Требуется '.$trnit; - } - } - - $tmGo = $u->info['timeGo']-time(); //сколько секунд осталось - if($tmGo>0) - { - $go = 0; - $this->error = 'Не так быстро...'; - } - - if($u->aves['now']>=$u->aves['max']) - { - $go = 0; - $this->error = 'Вы не можете перемещаться, рюкзак переполнен ...'; - } - - if($go>0) - { - if($go==1) - { - $u->info['y'] += 1; - }elseif($go==2) - { - $u->info['x'] -= 1; - }elseif($go==3) - { - $u->info['y'] -= 1; - }elseif($go==4) - { - $u->info['x'] += 1; - } - if( $u->stats['speed_dungeon'] > 0 ) { - $tmap['timeGO'] = round($tmap['timeGO']/100*(100-$u->stats['speed_dungeon'])); - if( $tmap['timeGO'] < 2 ) { - $tmap['timeGO'] = 1; - } - } - $u->info['timeGo'] = time()+$tmap['timeGO']; - $u->info['timeGoL'] = time(); - $tmap0 = mysql_fetch_assoc(mysql_query('SELECT `id`,`teleport` FROM `dungeon_map` WHERE `id_dng` = "'.$tmap['id_dng'].'" AND `x` = "'.$u->info['x'].'" AND `y` = "'.$u->info['y'].'" LIMIT 1')); - if( $tmap0['teleport'] > 0 ){ - $tmap1 = mysql_fetch_assoc(mysql_query('SELECT `id`,`x`,`y` FROM `dungeon_map` WHERE `id` = "'.$tmap0['teleport'].'" LIMIT 1')); - if( isset($tmap1['id']) ) { - $u->info['x'] = $tmap1['x']; - $u->info['y'] = $tmap1['y']; - $this->error = 'Вы переместились в другую комнату...'; - } - } - $upd = mysql_query('UPDATE `stats` SET `x` = "'.$u->info['x'].'",`y` = "'.$u->info['y'].'",`timeGo` = "'.$u->info['timeGo'].'",`timeGoL` = "'.$u->info['timeGoL'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - unset($id); - } - } - - public function testGone($id) - { - global $u,$c,$code; - $go = 0; - if($id==1) - { - //вперед - $go = $this->sg[$this->gs][1]; - }elseif($id==2) - { - //назад - $go = $this->sg[$this->gs][3]; - }elseif($id==3) - { - //на право - $go = $this->sg[$this->gs][4]; - }elseif($id==4) - { - //на лево - $go = $this->sg[$this->gs][2]; - } - $thp = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "'.$u->info['x'].'" AND `y` = "'.$u->info['y'].'" AND `id_dng` = "'.$this->info['id2'].'" LIMIT 1')); - $ng = array( - 4=>1, - 2=>2, - 1=>3, - 3=>4 - ); - if(isset($thp['id']) && $thp['go_'.$ng[$go]]==0) - { - $go = 0; - } - $tgo = array(0=>0,1=>0); - if($go==1) - { - $tgo[1] += 1; - }elseif($go==2) - { - $tgo[0] -= 1; - }elseif($go==3) - { - $tgo[1] -= 1; - }elseif($go==4) - { - $tgo[0] += 1; - } - - $tbot = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_bots` WHERE `x` = "'.($u->info['x']+(int)$tgo[0]).'" AND `y` = "'.($u->info['y']+(int)$tgo[1]).'" AND `dn` = "'.$this->info['id'].'" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1')); - if(isset($tbot['id2']) && $u->info['admin']==0) - { - $go = 0; - } - - $tmap = mysql_fetch_assoc(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "'.$u->info['x'].'" AND `y` = "'.$u->info['y'].'" AND `id_dng` = "'.$this->info['id2'].'" LIMIT 1')); - //наличие предмета - /* - if($tmap['tr_items']!='') - { - $ti = explode(',',$tmap['tr_items']); - $i = 0; $trnit = ''; - while($i0 && $ti2[1]>0) - { - $num_rows = mysql_num_rows(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inShop` = "0" AND `item_id` = "'.((int)$ti2[0]).'" LIMIT '.((int)$ti2[1]).'')); - if($num_rows < (int)$ti2[1]) - { - $tgo = $ti2[2]; - if($tgo!='0000') - { - if($tgo[$ng[$go]-1]==1) - { - $go = 0; - } - } - } - } - $i++; - } - } - */ - - return $go; - } - - public function testSt($id,$s) - { - $r = 0; - //заменяем отображение стен в зависимости от угла обзора - $s = $this->sg[$this->gs][$s]; - if(isset($this->map[1][$id]['id'])) - { - $r = $this->map[1][$id]['st'][($s-1)]; - } - return $r; - } - - public function lookDungeon() - { - global $u,$c,$code,$pd; - /* Генерируем изображение карты */ - /* LEVEL 1 */ - - // Исправления от 29/10/2014 относительно D5, 2 этаж, ПТП. Покрутиться и все гуд. и от 22/11/2014 для обратных стен. Если стена к нам задницей, мы её не видим. - if($this->testSt(2,4)>0 /* || $this->testSt(3,2)>0 */){ $pd[28] = 1; } - if(/*$this->testSt(1,4)>0 ||*/ $this->testSt(2,2)>0){ $pd[27] = 1; } - if($this->testSt(2,1)>0 /*|| $this->testSt(5,3)>0*/){ $pd[26] = 1; } - if($this->testSt(3,1)>0/* || $this->testSt(6,3)>0*/){ $pd[25] = 1; } - if($this->testSt(1,1)>0 /*|| $this->testSt(4,3)>0*/){ $pd[24] = 1; } - /* LEVEL 2 */ - if($this->testSt(5,4)>0 /*|| $this->testSt(6,2)>0*/){ $pd[23] = 1; } - if(/*$this->testSt(4,4)>0 || */$this->testSt(5,2)>0){ $pd[22] = 1; } - if($this->testSt(5,1)>0 /*|| $this->testSt(8,3)>0*/){ $pd[21] = 1; } - if($this->testSt(6,1)>0 /*|| $this->testSt(7,3)>0*/){ $pd[20] = 1; } - if($this->testSt(4,1)>0/* || $this->testSt(9,3)>0*/){ $pd[19] = 1; } - - /* LEVEL 3 */ - if($this->testSt(8,4)>0 /*|| $this->testSt(7,2)>0*/){ $pd[18] = 1; } - if(/*$this->testSt(9,4)>0 || */$this->testSt(8,2)>0){ $pd[17] = 1; } - if($this->testSt(8,1)>0 /* || $this->testSt(12,3)>0*/){ $pd[16] = 1; } - if($this->testSt(7,1)>0 /* || $this->testSt(13,3)>0*/){ $pd[15] = 1; } - if($this->testSt(9,1)>0 /*|| $this->testSt(11,3)>0*/){ $pd[14] = 1; } - - /* LEVEL 4 */ - - if($this->testSt(12,4)>0 || $this->testSt(13,2)>0){ $pd[13] = 1; } - if($this->testSt(12,2)>0 || $this->testSt(11,4)>0){ $pd[12] = 1; } - if($this->testSt(13,1)>0 || $this->testSt(17,3)>0){ $pd[11] = 1; } //8 - if($this->testSt(11,1)>0 || $this->testSt(16,3)>0){ $pd[10] = 1; } //7 - if($this->testSt(12,1)>0/* || $this->testSt(15,3)>0*/){ $pd[9] = 1; } - if($this->testSt(14,1)>0 || $this->testSt(18,3)>0){ $pd[6] = 1; } //2 - if($this->testSt(10,1)>0 || $this->testSt(19,3)>0){ $pd[5] = 1; } //1 - if($this->testSt(16,4)>0 || $this->testSt(15,2)>0){ $pd[4] = 1; } - if($this->testSt(15,4)>0 || $this->testSt(17,2)>0){ $pd[3] = 1; } - - /* Генерируем предметы на карте */ - - /* Генерируем персонажей и ботов на карте */ - - } - - public function getMatrix($y,$x) - { - global $u; - $this->cord['x']++; - $this->cord[($u->info['y']+$y).'_'.($u->info['x']+$x)] = $this->cord['x']; - return $this->map[0][($u->info['y']+$y).'_'.($u->info['x']+$x)]; - } - - public function genMatix() - { - $r = array(); - if($this->gs == 1) - { - //1; //смотрим прямо - $r[1] = $this->getMatrix(0,-1); # слева от меня - $r[2] = $this->getMatrix(0,0); # подомной - $r[3] = $this->getMatrix(0,1); # справа от меня - $r[4] = $this->getMatrix(1,-1); # слева +1 вперед - $r[5] = $this->getMatrix(1,0); # передомной +1 - $r[6] = $this->getMatrix(1,1); # справа +1 вперед - $r[7] = $this->getMatrix(2,1); # справа +2 вперед - $r[8] = $this->getMatrix(2,0); # передомной +2 - $r[9] = $this->getMatrix(2,-1); # слева +2 вперед - $r[10] = $this->getMatrix(3,-2); # слева через одну, +3 вперед - $r[11] = $this->getMatrix(3,-1); # слева +3 вперед - $r[12] = $this->getMatrix(3,0); # передомной +3 - $r[13] = $this->getMatrix(3,1); # справа +3 вперед - $r[14] = $this->getMatrix(3,2); # справа через одну, +3 вперед - $r[15] = $this->getMatrix(4,0); # передомной +4 - $r[16] = $this->getMatrix(4,-1); # слева +4 вперед - $r[17] = $this->getMatrix(4,1); # справа +4 вперед - $r[18] = $this->getMatrix(4,2); # справа через одну, +4 вперед - $r[19] = $this->getMatrix(4,-2); # слева через одну, +4 вперед - - }elseif($this->gs == 2) - { - //2; //смотрим лево - $r[1] = $this->getMatrix(-1,0); - $r[2] = $this->getMatrix(0,0); - $r[3] = $this->getMatrix(1,0); - $r[4] = $this->getMatrix(-1,-1); - $r[5] = $this->getMatrix(0,-1); - $r[6] = $this->getMatrix(1,-1); - $r[7] = $this->getMatrix(1,-2); - $r[8] = $this->getMatrix(0,-2); - $r[9] = $this->getMatrix(-1,-2); - $r[10] = $this->getMatrix(-2,-3); - $r[11] = $this->getMatrix(-1,-3); - $r[12] = $this->getMatrix(0,-3); - $r[13] = $this->getMatrix(1,-3); - $r[14] = $this->getMatrix(2,-3); - $r[15] = $this->getMatrix(0,-4); - $r[16] = $this->getMatrix(-1,-4); - $r[17] = $this->getMatrix(1,-4); - $r[18] = $this->getMatrix(2,-4); - $r[19] = $this->getMatrix(-2,-4); - }elseif($this->gs == 3) - { - //3; //смотрим вниз - $r[1] = $this->getMatrix(0,1); - $r[2] = $this->getMatrix(0,0); - $r[3] = $this->getMatrix(0,-1); - $r[4] = $this->getMatrix(-1,1); - $r[5] = $this->getMatrix(-1,0); - $r[6] = $this->getMatrix(-1,-1); - $r[7] = $this->getMatrix(-2,-1); - $r[8] = $this->getMatrix(-2,0); - $r[9] = $this->getMatrix(-2,1); - $r[10] = $this->getMatrix(-3,2); - $r[11] = $this->getMatrix(-3,1); - $r[12] = $this->getMatrix(-3,0); - $r[13] = $this->getMatrix(-3,-1); - $r[14] = $this->getMatrix(-3,-2); - $r[15] = $this->getMatrix(-4,0); - $r[16] = $this->getMatrix(-4,1); - $r[17] = $this->getMatrix(-4,-1); - $r[18] = $this->getMatrix(-4,-2); - $r[19] = $this->getMatrix(-4,2); - }elseif($this->gs == 4) - { - //4; //смотрим право - $r[1] = $this->getMatrix(1,0); - $r[2] = $this->getMatrix(0,0); - $r[3] = $this->getMatrix(-1,0); - $r[4] = $this->getMatrix(1,1); - $r[5] = $this->getMatrix(0,1); - $r[6] = $this->getMatrix(-1,1); - $r[7] = $this->getMatrix(-1,2); - $r[8] = $this->getMatrix(0,2); - $r[9] = $this->getMatrix(1,2); - $r[10] = $this->getMatrix(2,3); - $r[11] = $this->getMatrix(1,3); - $r[12] = $this->getMatrix(0,3); - $r[13] = $this->getMatrix(-1,3); - $r[14] = $this->getMatrix(-2,3); - $r[15] = $this->getMatrix(0,4); - $r[16] = $this->getMatrix(1,4); - $r[17] = $this->getMatrix(-1,4); - $r[18] = $this->getMatrix(-2,4); - $r[19] = $this->getMatrix(2,4); - } - return $r; - } -} - -$d = new dungeon; -$d->start(); -?> \ No newline at end of file diff --git a/_incl_data/class/__reg.php b/_incl_data/class/__reg.php deleted file mode 100644 index 254dc037..00000000 --- a/_incl_data/class/__reg.php +++ /dev/null @@ -1,405 +0,0 @@ -"'.(time()-60*60*1).'" AND `ipreg` = "'.mysql_real_escape_string(IP).'" LIMIT 1')); - if(isset($_COOKIE['reg_capitalcity']) || (int)$_COOKIE['reg_capitalcity']>time() || isset($lr['id'])) - { - $error .= 'Недавно с вашего IP уже регистрировался персонаж. С одного IP адреса разрешена регистрация персонажей не чаще, чем раз в час. Попробуйте позже.
    '; $_POST['step'] = 1; - } - - if($error=='') - { - - $reg_bonus = false; - /*if(isset($_POST['register_code'])) - { - $cd = mysql_fetch_array(mysql_query('SELECT * FROM `register_code` WHERE `code` = "'.mysql_real_escape_string($_POST['register_code']).'" AND `time_finish` = "0" AND `use` = "0" LIMIT 1')); - if(isset($cd['id']) && $cd['use']==0) - { - $reg_bonus = true; - $upd = mysql_query('UPDATE `register_code` SET `use` = "'.$reg['id'].'",`time_start`="'.time().'" WHERE `id` = "'.$cd['id'].'" LIMIT 1'); - if($upd && $reg['id']>0) - { - $uz = mysql_fetch_array(mysql_query('SELECT `id`,`login` FROM `users` WHERE `id` = "'.mysql_real_escape_string($cd['uid']).'" LIMIT 1')); - if(!isset($uz['id'])) - { - $uz['login'] = 'Невидимка'; - } - $error .= 'Вы успешно активировали приглашение от '.$uz['login'].'. Теперь вы можете зарегистрироваться. Код действует только на эту регистрацию.
    '; - mysql_query("UPDATE `items_users` SET `data`='info=Код приглашения: ".$cd['code']."
    При утери приглашения регистрация по данному коду будет запрещена.
    Кто-то регестрируется по вашему приглашению. Дата: ".date('d.n.Y H:i',time())."
    ' WHERE `secret_id` = '".$cd['code']."' LIMIT 1"); - $cd['use'] = $reg['id']; - - if($cd['time_create']1) - { - //Запрещенные логины - $nologin = array(0=>'ангел',1=>'angel',2=>'администрация',3=>'administration',4=>'Комментатор',5=>'Мироздатель',6=>'Мусорщик',7=>'Падальщик',8=>'Повелитель',9=>'Архивариус',10=>'Пересмешник',11=>'Волынщик',12=>'Лорд Разрушитель',13=>'Милосердие',14=>'Справедливость',15=>'Искушение',16=>'Вознесение'); - $blacklist = "!@#$%^&*()\+Ёё|/'`\""; - $sr = '_-йцукенгшщзхъфывапролджэячсмитьбюё1234567890'; - $i = 0; - while($imystr($reg_d[0]))) - { - $error .= 'Выберите, пожалуйста, другой ник.
    '; $_POST['step'] = 1; $i = count($nologin); - } - $i++; - } - $reg_d[0] = str_replace(' ',' ',$reg_d[0]); - //Логин от 4 до 20 символов - if(strlen($reg_d[0])>20) - { - $error .= 'Логин должен содержать не более 20 символов.
    '; $_POST['step'] = 1; - } - if(strlen($reg_d[0])<4) - { - $error .= 'Логин должен содержать не менее 4 символов.
    '; $_POST['step'] = 1; - } - //Один алфавит - $er = $this->en_ru($reg_d[0]); - if($er==true) - { - $error .= 'В логине разрешено использовать только буквы одного алфавита русского или английского. Нельзя смешивать.
    '; $_POST['step'] = 1; - } - //Запрещенный символы - if(strpos($sr,$reg_d[0])) - { - $error .= 'Логин содержит запрещенные символы.
    '; $_POST['step'] = 1; - } - //Персонажи в базе - $log = mysql_fetch_array(mysql_query('SELECT `id` from `users` where `login`="'.mysql_real_escape_string($reg_d[0]).'" LIMIT 1')); - $log2 = mysql_fetch_array(mysql_query('SELECT `id` from `lastNames` where `login`="'.mysql_real_escape_string($reg_d[0]).'" LIMIT 1')); - if(isset($log['id']) || isset($log2['id'])) - { - $error .= 'Логин '.$reg_d[0].' уже занят, выберите другой.
    '; $_POST['step'] = 1; - } - //Разделители - if(substr_count($reg_d[0],' ')+substr_count($reg_d[0],'-')+substr_count($reg_d[0],'_')>2) - { - $error .= 'Не более двух разделителей одновременно (пробел, тире, нижнее подчеркивание).
    '; $_POST['step'] = 1; - } - $reg_d[0] = trim($reg_d[0],' '); - - - if($_POST['step']!=1) - { - $stp = 2; $noup = 0; - } - } - if($_POST['step']>2) - { - //проверяем пароль - if(strlen($reg_d[1])<6 || strlen($reg_d[1])>30) - { - $error .= 'Длина пароля не может быть меньше 6 символов или более 30 символов.
    '; $_POST['step'] = 2; - } - if($reg_d[1]!=$reg_d[2]) - { - $error .= 'В анкете пароль нужно ввести дважды, для проверки. Во второй раз вы его ввели неверно, будьте внимательнее.
    '; $_POST['step'] = 2; - } - if(preg_match('/'.$reg_d[0].'/i',$reg_d[1])) - { - $error .= 'Пароль содержит элементы логина.
    '; $_POST['step'] = 2; - } - if($_POST['step']!=2) - { - $stp = 3; $noup = 0; - } - } - if($_POST['step']>3) - { - //проверяем e-mail - if(strlen($reg_d[3])<6 || strlen($reg_d[3])>50) - { - $error .= 'E-mail не может быть короче 6-х символов и длинее 50-ти.
    '; $_POST['step'] = 3; - } - - if(!preg_match('#^[a-z0-9.!\#$%&\'*+-/=?^_`{|}~]+@([0-9.]+|([^\s]+\.+[a-z]{2,6}))$#si', $reg_d[3])) - { - $error .= 'Вы указали явно ошибочный E-mail.
    '; $_POST['step'] = 3; - } - - $reg_d[4] = $chat->str_count($reg_d[4],30); - $reg_d[5] = $chat->str_count($reg_d[5],30); - - if($_POST['step']!=3) - { - $stp = 4; $noup = 0; - } - } - if($_POST['step']>4) - { - //Имя, Пол, Город, Девиз и т.д. - $er = $this->en_ru($reg_d[6]); - if($er==true || strlen($reg_d[6])<2) - { - $error .= 'Укажите ваше реальное имя!
    '; $_POST['step'] = 4; - } - - $reg_d[6] = $chat->str_count($reg_d[6],90); - $reg_d[7] = round($reg_d[7]); - $reg_d[8] = round($reg_d[8]); - $reg_d[9] = round($reg_d[9]); - - if($reg_d[7]<1 || $reg_d[7]>31 || $reg_d[8]<1 || $reg_d[8]>12 || $reg_d[9]<1920 || $reg_d[9]>2006) - { - $error .= 'Ошибка в написании дня рождения.
    '; $_POST['step'] = 4; - } - - if($reg_d[15]!=0 && $reg_d[15]!=1) - { - $error .= 'Вы указали не верный пол.
    '; $_POST['step'] = 4; - } - - if($reg_d[14]!='Black' && $reg_d[14]!='Blue' && $reg_d[14]!='Fuchsia' && $reg_d[14]!='Gray' && $reg_d[14]!='Green' && $reg_d[14]!='Maroon' && $reg_d[14]!='Navy' && $reg_d[14]!='Olive' && $reg_d[14]!='Purple' && $reg_d[14]!='Teal' && $reg_d[14]!='Orange' && $reg_d[14]!='Chocolate' && $reg_d[14]!='DarkKhaki' && $reg_d[14]!='SandyBrown') - { - $error .= 'Вы указали не верный цвет сообщения в чате.
    '; $_POST['step'] = 4; - } - - if($_POST['step']!=4) - { - $stp = 5; $noup = 0; - } - } - if($_POST['step']>5) - { - //Соглашение с законами - if(!isset($_POST['law_'.$reg['id']]) || $_POST['law_'.$reg['id']]!='on') - { - $error .= 'Извините, без принятия правил нашего клуба, вы не можете зарегистрировать свой персонаж.
    '; $_POST['step'] = 5; - } - - if(!isset($_POST['law2_'.$reg['id']]) || $_POST['law2_'.$reg['id']]!='on') - { - $error .= 'Извините, без принятия Соглашения о предоставлении сервиса игры '.$c['title'].', вы не можете зарегистрировать персонаж.
    '; $_POST['step'] = 5; - } - - if($_POST['code']!=$_SESSION['code'] || $_SESSION['code']<100 || $_POST['code']=='') - { - $error .= 'Ошибка введения кода.
    '; $_POST['step'] = 5; - } - - if($_POST['step']!=5) - { - //завершение регистрации и редирект в игру - - if($filter->spamFiltr($reg_d[13])!=0) - { - $reg_d[13] = ''; - } - if($filter->spamFiltr($reg_d[10])!=0) - { - $reg_d[10] = ''; - } - if($filter->spamFiltr($reg_d[6])!=0) - { - $reg_d[6] = ''; - } - - /*$mbid = mysql_fetch_array(mysql_query('select min(t1.id + 1) -from users t1 -where t1.id + 1 not in (select id from users where id > 9999) AND t1.id > 9998')); - //$mbid1 = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `id` = "'.$mbid[0].'" LIMIT 1')); - //$mbid2 = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `id` = "'.$mbid[0].'" LIMIT 1')); - //if(isset($mbid1['id']) && isset($mbid2['id'])) { - */ - $mbid = 'NULL'; - /*}else{ - /* чистим возможные данные */ - /*if($mbid [0]> 0) { - mysql_query('DELETE FROM `items_users` WHERE `uid` = "'.$mbid[0].'" LIMIT 1'); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.$mbid[0].'" LIMIT 1'); - mysql_query('DELETE FROM `bank` WHERE `uid` = "'.$mbid[0].'" LIMIT 1'); - mysql_query('DELETE FROM `users_delo` WHERE `uid` = "'.$mbid[0].'" LIMIT 1'); - mysql_query('DELETE FROM `actions` WHERE `uid` = "'.$mbid[0].'" LIMIT 1'); - } - $mbid = $mbid[0]; - }*/ - - if($_COOKIE['b4n'] == '1') { - setcookie('b4n','2',time()+60*60*24*3); - $reg['referal'] = 'btl4.net'; - }elseif(isset($_COOKIE['hstreger'])) { - $reg['referal'] = $_COOKIE['hstreger']; - } - - $ins = mysql_query("INSERT INTO `users` (`activ`,`fnq`,`host_reg`,`room`,`login`,`pass`,`ipreg`,`ip`,`city`,`cityreg`,`a1`,`q1`,`mail`,`name`,`bithday`,`sex`,`city_real`,`icq`,`icq_hide`,`deviz`,`chatColor`,`timereg`) VALUES ( - '0', - '0', - '".mysql_real_escape_string($reg['referal'])."', - '0', - '".$reg_d[0]."', - '".md5($reg_d[1])."', - '".IP."', - '".IP."', - 'capitalcity', - 'capitalcity', - '".$reg_d[4]."', - '".$reg_d[5]."', - '".$reg_d[3]."', - '".$reg_d[6]."', - '".$reg_d[7].".".$reg_d[8].".".$reg_d[9]."', - '".$reg_d[15]."', - '".$reg_d[10]."', - '".$reg_d[11]."', - '".$reg_d[12]."', - '".$reg_d[13]."', - '".$reg_d[14]."', - '".time()."')"); - if($ins) - { - $uid = mysql_insert_id(); - - $refer = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`banned`,`admin`,`level` FROM `users` WHERE `id` = "'.mysql_real_escape_string($reg['referal']).'" LIMIT 1')); - if(isset($refer['id'])) { - mysql_query("INSERT INTO `items_users` (`gift`,`uid`,`item_id`,`data`,`iznosMAX`,`geniration`,`maidin`,`time_create`) VALUES ('".$refer['login']."','".$uid."','3199','noodet=1|items_in_file=sunduk_new|var_id=1|open=1|noremont=1|nodelete=1|nosale=1',1,2,'capitalcity',".time().")"); - $text = 'Вы стали воспитанником игрока "'.$refer['login'].'"! В инвентаре (раздел -прочее-) вы найдете вспомогательные предметы.'; - mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('capitalcity','0','','".$reg_d[0]."','".$text."','".time()."','11','0')"); - } - - mysql_query("INSERT INTO `online` (`uid`,`timeStart`) VALUES ('".$uid."','".time()."')"); - mysql_query("INSERT INTO `stats` (`id`,`stats`) VALUES ('".$uid."','s1=3|s2=3|s3=3|s4=3|rinv=40|m9=5|m6=10')"); - //Добавляем предметы - mysql_query("INSERT INTO `items_users` (`gift`,`uid`,`item_id`,`data`,`iznosMAX`,`geniration`,`maidin`,`time_create`) VALUES ('Мироздатель','".$uid."','1','add_hpAll=3',10,2,'capitalcity',".time().")"); - mysql_query("INSERT INTO `items_users` (`gift`,`uid`,`item_id`,`data`,`iznosMAX`,`geniration`,`maidin`,`time_create`) VALUES ('Мусорщик','".$uid."','73','add_mib3=1|add_mab3=1|add_mib4=1|add_mab4=1',20,2,'capitalcity',".time().")"); - mysql_query("INSERT INTO `items_users` (`uid`,`item_id`,`data`,`iznosMAX`,`geniration`,`maidin`,`time_create`) VALUES ('".$uid."','724','moment=1|sudba=".mysql_real_escape_string($reg_d[0])."|moment_hp=100|nohaos=1|musor=2|noremont=1',100,2,'capitalcity',".time().")"); - mysql_query("INSERT INTO `items_users` (`uid`,`item_id`,`data`,`iznosMAX`,`geniration`,`maidin`,`time_create`) VALUES ('".$uid."','865','tr_lvl=1|sudba=".mysql_real_escape_string($reg_d[0])."|useOnLogin=1|musor=1|noremont=1',50,2,'capitalcity',".time().")"); - mysql_query("INSERT INTO `items_users` (`uid`,`item_id`,`data`,`iznosMAX`,`geniration`,`maidin`,`time_create`) VALUES ('".$uid."','4014','sudba=".mysql_real_escape_string($reg_d[0])."|noremont=1|usefromfile=1|musor=1|nodelete=1|nosale=1|expUpg=300000',1,2,'capitalcity',".time().")"); - - /* - $text = 'Администрация проекта: Желаем приятного общения, великих побед и незабываемых впечатлений в нашей с вами игре! :-)'; - mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('capitalcity','0','','".$reg_d[0]."','".$text."','".time()."','11','0')"); - $text = 'Вы получили предмет [img[items/pot_cureHP100_20.gif]][1] "Зелье Жизни", он находится в инвентаре, в разделе "эликсиры"'; - mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('capitalcity','0','','".$reg_d[0]."','".$text."','".time()."','11','0')"); - $text = 'Вы получили предмет [img[items/pal_button8.gif]][1] "Нападение", он находится в инвентаре, в разделе "заклятия"'; - mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('capitalcity','0','','".$reg_d[0]."','".$text."','".time()."','11','0')"); - $text = 'Вы получили предмет [img[items/qsvit_hran.gif]][1] "Свиток Обучения", он находится в инвентаре, в разделе "заклятия". Использовав данный свиток Вы получите +300.000 ед. опыта'; - mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('capitalcity','0','','".$reg_d[0]."','".$text."','".time()."','11','0')"); - */ - - if(isset($_COOKIE['login']) || isset($_COOKIE['pass'])) - { - setcookie('login','',time()-60*60*24,'',$c['host']); - setcookie('pass','',time()-60*60*24,'',$c['host']); - } - setcookie('login',$reg_d[0],time()+60*60*24*7,'',$c['host']); - setcookie('pass',md5($reg_d[1]),time()+60*60*24*7,'',$c['host']); - setcookie('auth',md5($reg_d[1].'AUTH'.IP),time()+60*60*24*365,'',$c['host']); - setcookie('reg_capitalcity',true,time()+60*60,'',$c['host']); - $chat->send('',1,'capitalcity','','','Вас приветствует новичок: [login:'.$reg_d[0].']',time(),12,1,0,0); - mysql_query("UPDATE `users` SET `online`='".time()."' WHERE `uid` = '".$uid."' LIMIT 1"); - mysql_query("UPDATE `register_code` SET `reg_id`='".$uid."',`time_finish`='".time()."' WHERE `id` = '".$cd['id']."' LIMIT 1"); - mysql_query("UPDATE `items_users` SET `delete`='".time()."' WHERE `secret_id` = '".$cd['code']."' LIMIT 1"); - mysql_query('DELETE FROM `register` WHERE `id` = "'.$reg['id'].'" LIMIT 1'); - header('location: /bk'); - die('Регистарция прошла успешно...'); - }else{ - $error .= 'Ошибка регистрации. Попробуйте позже...
    '; - } - } - } - } - return $stp; - } -} - -$r = new register; -?> \ No newline at end of file diff --git a/_incl_data/class/__telegram.php b/_incl_data/class/__telegram.php deleted file mode 100644 index d40c5202..00000000 --- a/_incl_data/class/__telegram.php +++ /dev/null @@ -1,197 +0,0 @@ -readGood('.$id.',"https://img.new-combats.com/i/misc/read.gif"); nobtext('.$id.');'; - } - } - } - - public function lockMsg($id,$uid) - { - $msg = mysql_fetch_array(mysql_query('SELECT * FROM `telegram` WHERE `id`="'.$id.'" AND `uid`="'.$uid.'" LIMIT 1 FOR UPDATE')); - if(isset($msg['id'])) - { - $lock = array(0=>1,1=>0); - mysql_query('START TRANSACTION'); - $upd = mysql_query('UPDATE `telegram` SET `read`="1",`lock`="'.$lock[$msg['lock']].'" WHERE `id` = "'.$id.'" AND `uid`="'.$uid.'" LIMIT 1'); - mysql_query('COMMIT'); - if($upd) - { - if($lock[$msg['lock']]==1) - { - echo ''; - }else{ - echo ''; - } - } - } - } - - public function deleteMsgAll($uid,$pg) - { - mysql_query('START TRANSACTION'); - $upd = mysql_query('UPDATE `telegram` SET `delete`="1" WHERE `uid`="'.$uid.'" AND `read`="1" AND `lock`="0" AND `delete`="0"'); - mysql_query('COMMIT'); - if($upd) - { - echo ''; - } - } - - public function deleteMsg($id,$uid,$pg) - { - $msg = mysql_fetch_array(mysql_query('SELECT * FROM `telegram` WHERE `id`="'.$id.'" AND `uid`="'.$uid.'" LIMIT 1 FOR UPDATE')); - if(isset($msg['id'])) - { - mysql_query('START TRANSACTION'); - $upd = mysql_query('UPDATE `telegram` SET `delete`="1" WHERE `id` = "'.$id.'" AND `uid`="'.$uid.'" LIMIT 1'); - mysql_query('COMMIT'); - if($upd && $msg['delete']==0 && $msg['lock']==0) - { - echo ''; - } - } - } - - private function addMsgTable($id,$from,$fromType,$ttl,$time,$lock,$read,$pg) - { - $i1 = ''; - if($read==1) - { - $i1 = ''; - } - - if($lock==1) - { - $i1 = ''; - } - - if($fromType==1) - { - $from = ''.$from.''; - }elseif($read==0) - { - $from = ''.$from.''; - } - - echo ' - - - - - - - - -
    '.$i1.'
    '.$from.''.substr($ttl,0,30).'...'.date('d.m.y H:i',$time).'
    - '; - } - - public function seeMsg($uid,$page,$maxPages) - { - $page = ceil($page); - echo ' - - - - - - - - - -
    От когоЗаголовок сообщенияКогда
    Блокировка сообщений
    Удалить все прочитанные сообщения
    '; - - $i = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `telegram` WHERE `uid`="'.$uid.'" AND `delete`="0"')); - $pg = ceil($i[0]/$maxPages); - if($page<0) - { - $page = 0; - }elseif($page>$pg) - { - $page = $pg; - } - - if($i[0]>0) - { - $sp = mysql_query('SELECT * FROM `telegram` WHERE `uid`="'.$uid.'" AND `delete`="0" ORDER BY `id` DESC LIMIT '.(($page-1)*$maxPages).' , '.$maxPages.''); - while($pl = mysql_fetch_array($sp)) - { - $this->addMsgTable($pl['id'],$pl['from'],$pl['fromType'],$pl['text'],$pl['time'],$pl['lock'],$pl['read'],$page); - } - } - - if($i[0]==0) - { - echo '
    Сообщений нет
    '; - }elseif($i[0]>$maxPages){ - $pages = ''; - $i = 1; - while($i<=$pg) - { - $cls = ''; - if($page==$i) - { - $cls = 'style="color:#6f0000; font-size:14px;"'; - } - $pages .= ' '.$i.''; - $i++; - } - echo ' - - - - - - - - -
    Страницы: '.$pages.'
    '; - } - } - - public function __clone() - { - trigger_error('Дублирование не допускается.', E_USER_ERROR); - } -} - -?> \ No newline at end of file diff --git a/_incl_data/class/__turnir.php b/_incl_data/class/__turnir.php deleted file mode 100644 index 36b8c8b0..00000000 --- a/_incl_data/class/__turnir.php +++ /dev/null @@ -1,539 +0,0 @@ - 'Выжить любой ценой', - 1 => 'Каждый сам за себя', - 2 => 'Захват ключа' - ); - - public function start() { - global $c,$u; - $this->info = mysql_fetch_array(mysql_query('SELECT * FROM `turnirs` WHERE `id` = "'.$u->info['inTurnirnew'].'" LIMIT 1')); - $this->user = mysql_fetch_array(mysql_query('SELECT * FROM `users_turnirs` WHERE `turnir` = "'.$u->info['inTurnirnew'].'" AND `bot` = "'.$u->info['id'].'" LIMIT 1')); - } - - public function startTurnir() { - global $c,$u; - $row = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `win` = "0" AND `lose` = "0" AND `nich` = "0"')); - if($row[0] > 0 && $this->info['status'] != 3) { - mysql_query('UPDATE `turnirs` SET `status` = "3" WHERE `id` = "'.$this->info['id'].'" LIMIT 1'); - //Создание поединка - mysql_query('INSERT INTO `battle` (`city`,`time_start`,`timeout`,`type`,`turnir`) VALUES ("'.$u->info['city'].'","'.time().'","60","1","'.$this->info['id'].'")'); - $uri = mysql_insert_id(); - //Закидываем персонажей в поединок - mysql_query('UPDATE `users` SET `battle` = "'.$uri.'" WHERE `inUser` = "0" AND `inTurnirnew` = "'.$this->info['id'].'"'); - //Обозначаем завершение турнира при выходе - die('Перейтиде в раздел "поединки"...'); - }else{ - if($this->info['status'] == 3) { - $this->finishTurnir(); - } - } - } - - public function finishTurnir() { - global $c,$u; - $this->info = mysql_fetch_array(mysql_query('SELECT * FROM `turnirs` WHERE `id` = "'.$u->info['inTurnirnew'].'" LIMIT 1')); - //mysql_query('UPDATE `users` SET `inUser` = 0, `inTurnirnew` = 0 WHERE `inTurnirnew` = '.$this->info['id'].' AND `inUser` > 0 LIMIT '.$this->info['users_in']); - if($this->info['status'] == 3) { - $win = ''; - $lose = ''; - $sp = mysql_query('SELECT * FROM `users_turnirs` WHERE `turnir` = "'.$this->info['id'].'" ORDER BY `points` DESC'); - while($pl = mysql_fetch_array($sp)) { - mysql_query('DELETE FROM `users_turnirs` WHERE `turnir` = "'.$this->info['id'].'"'); - $inf = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$pl['uid'].'" LIMIT 1')); - $bot = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$pl['bot'].'" LIMIT 1')); - if(isset($inf['id'],$bot['id'])) { - //выдаем призы и т.д - mysql_query('DELETE FROM `users` WHERE `id` = "'.$bot['id'].'" LIMIT 1'); - mysql_query('DELETE FROM `stats` WHERE `id` = "'.$bot['id'].'" LIMIT 1'); - mysql_query('DELETE FROM `items_users` WHERE `uid` = "'.$bot['id'].'" LIMIT 1000'); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.$bot['id'].'" LIMIT 1000'); - } - - if($pl['team'] == $this->info['winner'] && $this->info['winner'] != 0) { - - $inf['add_expn'] = 3000; - - $inf['add_expp'] = array( - 0, - 1, - 5, - 10, - 15, - 25, - 35, - 70, - 100, - 150, - 200, - 300, - 500, - 700, - 1000 - ); - - //$inf['add_expn'] = floor($inf['add_expn']/100*$inf['add_expp'][$inf['level']]); - //$inf['add_expn'] = floor($inf['add_expn']/100*$inf['add_expp'][7]); - //получаем опыт (с 0 по 12 лвл) - $inf['add_expn'] = array( 10 , 30 , 55 , 62 , 92 , 180 , 350 , 1350 , 4500 , 7000 , 21000 , 30000 , 35000 ); - $inf['add_expn'] = $inf['add_expn'][$inf['level']]; - - mysql_query('UPDATE `users` SET `win` = `win` + 1,`win_t` = `win_t` + 1 WHERE `id` = "'.$inf['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `exp` = `exp` + '.$inf['add_expn'].' WHERE `id` = "'.$inf['id'].'" LIMIT 1'); - $win .= ''.$inf['login'].', '; - - $r = 'Турнир завершен. Вы являетесь победителем турнира, получено опыта: '.$inf['add_expn'].'.'; - - /*if( $this->info['users_in'] >= 10 ) { - $r .= ' В турнире собралось 10 или более человек: Чек на 1 екр. добавлен к Вам в инвентарь.'; - $u->addItem(4393,$inf['id'],''); - }*/ - - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','".$inf['room']."','','".$inf['login']."','".$r."','".time()."','6','0')"); - }elseif($pl['team'] != $this->info['winner'] && $this->info['winner'] != 0) { - mysql_query('UPDATE `users` SET `lose` = `lose` + 1,`lose_t` = `lose_t` + 1 WHERE `id` = "'.$inf['id'].'" LIMIT 1'); - - $lose .= ''.$inf['login'].', '; - - }else{ - mysql_query('UPDATE `users` SET `nich` = `nich` + 1 WHERE `id` = "'.$inf['id'].'" LIMIT 1'); - } - mysql_query('DELETE FROM `users_turnirs` WHERE `uid` = "'.$inf['id'].'" LIMIT 1'); - } - mysql_query('UPDATE `users` SET `inUser` = "0",`inTurnirnew` = "0" WHERE `inTurnirnew` = "'.$this->info['id'].'" LIMIT '.$this->info['users_in']); - mysql_query('UPDATE `turnirs` SET `chat` = 4 , `winner` = -1,`users_in` = 0,`status` = 0,`winner` = -1,`step` = 0,`time` = "'.(time()+$this->info['time2']).'",`count` = `count` + 1 WHERE `id` = '.$this->info['id'].' LIMIT 1'); - - if($win != '') { - $win = rtrim($win,', '); - $lose = rtrim($lose,', '); - $win = 'Победители турнира: '.$win.'. Проигравшая сторона: '.$lose.'. Следующий турнир начнется через '.$u->timeOut($this->info['time2']).' ('.date('d.m.Y H:i',(time()+$this->info['time2'])).').'; - }else{ - $win = 'Победители турнира отсутствует. Следующий турнир начнется через '.$u->timeOut($this->info['time2']).' ('.date('d.m.Y H:i',(time()+$this->info['time2'])).').'; - } - $r = 'Турнир завершен. '.$win; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','','','','".$r."','".time()."','6','0')"); - } - } - - public function locationSee() { - global $c,$u; - - $r = ''; - - $tm1 = ''; - - $tm2 = ''; - - $noitm = array( - 869 => 1, - 1246 => 1, - 155 => 1, - 1245 => 1, - 678 => 1 - ); - - if($this->info['step'] != 3 && $this->info['step'] != 0) { - //получение комплекта - if(isset($_GET['gocomplect']) && $this->user['points'] < 2) { - $aso = explode(',',$this->user['items']); - $ast = explode('-',$_GET['gocomplect']); - $asg = array(); - $asj = array(); - $asgp = array(); - - $i = 0; - while($i < count($aso)) { - if($aso[$i] > 0) { - $asg[$aso[$i]] = true; - } - $i++; - } - - $i = 0; $j = 0; $noitm = 0; - $addi = 1; - while($i < count($ast)) { - if($ast[$i] > 0) { - if($asg[$ast[$i]] != true) { - $noitm++; - } - $itm = mysql_fetch_array(mysql_query('SELECT `id`,`inSlot`,`price1` FROM `items_main` WHERE `id` = "'.mysql_real_escape_string($ast[$i]).'" LIMIT 1')); - if(isset($itm['id'])) { - $itm2 = mysql_fetch_array(mysql_query('SELECT `iid`,`price_1` FROM `items_shop` WHERE `item_id` = "'.mysql_real_escape_string($ast[$i]).'" AND `kolvo` > 0 LIMIT 1')); - if($itm2['price_1'] > $itm['price1']) { - $itm['price1'] = $itm2['price_1']; - } - if($itm['inSlot'] == 3) { - $asg[$itm['inSlot']][count($asg[$itm['inSlot']])] = $itm['id']; - $asgp[$itm['inSlot']][count($asgp[$itm['inSlot']])] = $itm['price1']; - $j++; - }elseif($itm['inSlot'] == 10) { - $asg[$itm['inSlot']][count($asg[$itm['inSlot']])] = $itm['id']; - $asgp[$itm['inSlot']][count($asgp[$itm['inSlot']])] = $itm['price1']; - $j++; - }else{ - $asg[$itm['inSlot']] = $itm['id']; - $asp[$itm['inSlot']] = $itm['price1']; - $j++; - } - } - } - $i++; - } - - if($noitm > 0) { - echo 'Использование багов карается законом!'; - $addi = 0; - }elseif(count($asg[3]) > 2) { - echo 'Вы выбрали слишком много предметов, выберите только два оружия и один щит'; - $addi = 0; - }elseif(count($asg[10]) > 3) { - echo 'Вы выбрали слишком много предметов, выберите только три кольца'; - $addi = 0; - }elseif($j > 16) { - echo 'Вы выбрали слишком много предметов'; - $addi = 0; - }elseif($j < 1) { - echo 'Выберите хотя бы один предмет'; - $addi = 0; - } - - //$addi = 0; - - if($addi == 1) { - - $i = 0; - while($i <= 17) { - if($i == 10) { - if($asg[$i][0] > 0) { - $u->addItem($asg[$i][0],$u->info['id']); - $this->user['points'] += 1+round($asgp[$i][0]); - } - if($asg[$i][1] > 0) { - $u->addItem($asg[$i][1],$u->info['id']); - $this->user['points'] += 1+round($asgp[$i][1]); - } - if($asg[$i][2] > 0) { - $u->addItem($asg[$i][2],$u->info['id']); - $this->user['points'] += 1+round($asgp[$i][2]); - } - }elseif($i == 3) { - if($asg[$i][0] > 0) { - $u->addItem($asg[$i][0],$u->info['id']); - $this->user['points'] += 1+round($asgp[$i][0]); - } - if($asg[$i][1] > 0) { - $u->addItem($asg[$i][1],$u->info['id']); - $this->user['points'] += 1+round($asgp[$i][1]); - } - }elseif($asg[$i] > 0) { - $u->addItem($asg[$i],$u->info['id']); - $this->user['points'] += 1+round($asgp[$i]); - } - $i++; - } - - mysql_query('UPDATE `users_turnirs` SET `points` = "'.$this->user['points'].'",`items` = "0" WHERE `bot` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `ability` = "100",`skills` = "10" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `level` = "12" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `turnirs` SET `step` = "0" WHERE `id` = "'.$this->info['id'].'" LIMIT 1'); - - $this->info['step'] = 0; - $this->info['items'] = '0'; - } - } - } - - if($this->info['step'] == 3) { - $this->finishTurnir(); - }elseif($this->info['step'] == 0) { - //распределяем команды - $po = array(0,0); - $sp = mysql_query('SELECT * FROM `users_turnirs` WHERE `turnir` = "'.$this->info['id'].'" AND `points` > 3 ORDER BY `points` DESC LIMIT '.$this->info['users_in']); - $tmr = rand(1,2); - if($tmr == 1) { - $tmr = array(2,1); - }else{ - $tmr = array(1,2); - } - while($pl = mysql_fetch_array($sp)) { - $inf = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$pl['uid'].'" LIMIT 1')); - $bot = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$pl['bot'].'" LIMIT 1')); - if(isset($inf['id'],$bot['id'])) { - if($po[1] == $po[2]) { - $tm = rand(1,2); - }elseif($po[1] > $po[2]) { - $tm = 2; - }else{ - $tm = 1; - } - //$tm = $tmr[$tm]; - $bot['team'] = $tm; - $po[$bot['team']] += $pl['points']; - mysql_query('UPDATE `stats` SET `team` = "'.$bot['team'].'" WHERE `id` = "'.$bot['id'].'" LIMIT 1'); - mysql_query('UPDATE `users_turnirs` SET `team` = "'.$bot['team'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - } - mysql_query('UPDATE `turnirs` SET `step` = "1" WHERE `id` = "'.$this->info['id'].'" LIMIT 1'); - } - - $sp = mysql_query('SELECT * FROM `users_turnirs` WHERE `turnir` = "'.$this->info['id'].'" LIMIT '.$this->info['users_in']); - $po = array(0,0); - while($pl = mysql_fetch_array($sp)) { - $inf = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$pl['uid'].'" LIMIT 1')); - $bot = mysql_fetch_array(mysql_query('SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON `u`.`id` = `st`.`id` WHERE `u`.`id` = "'.$pl['bot'].'" LIMIT 1')); - if(isset($inf['id'],$bot['id'])) { - $po[$bot['team']] += $pl['points']; - //${'tm'.$bot['team']} .= ''.$bot['login'].' ['.$bot['level'].']
    '; - ${'tm'.$bot['team']} .= $u->microLogin($bot,2).'
    '; - } - } - $r .= ''; - $r .= '

    «'.$this->name[$this->info['type']].'»


    Начало турнира через '.$u->timeOut($this->info['time'] - time()).'! '; - - if(isset($_GET['hpregenNowTurnir'])) { - if($u->stats['hpNow'] < $u->stats['hpAll'] || $u->stats['mpNow'] < $u->stats['mpAll']) { - mysql_query('UPDATE `stats` SET `hpNow` = "'.$u->stats['hpAll'].'",`mpNow` = "'.$u->stats['mpAll'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - } - - if($this->user['points'] < 3) { - //Еще не получили обмундирование - if($this->user['points'] < 2) { - $r .= ''; - }else{ - $r .= ' '; - } - }else{ - $r .= 'Вы участвуете в турнире!'; - $r .= '   '; - } - - $r .= '
    '; - if($this->user['points'] < 3) { - if($this->user['items'] != '0') { - $r .= '
    '; - if($this->user['items'] == '') { - //Выдаем предметы для выбора - $ai = ''; - - $sp = mysql_query('SELECT `a`.*,`b`.* FROM `items_shop` AS `a` LEFT JOIN `items_main` AS `b` ON (`a`.`item_id` = `b`.`id`) WHERE `a`.`sid` = 1 AND - (`a`.`r` != 5 AND `a`.`r` != 9 AND `a`.`r` <= 18 AND `a`.`kolvo` > 0 AND `cantBuy` = 0 AND `a`.`level` < 9 AND `b`.`level` < 9) AND - `b`.`class` != 6'); - while($pl = mysql_fetch_array($sp)) { - if(!isset($noitm[$pl['item_id']])) { - $aso[$pl['inslot']][count($aso[$pl['inslot']])] = $pl; - } - } - - $j = 1; - $com = array(); - while($j <= 5) { - $i = 0; - while($i <= 17) { - if($i == 3) { - // - $com[$i] = $aso[$i][rand(0,count($aso[$i])-1)]; - }elseif($i == 14) { - //правая рука - $com[$i] = $aso[$i][rand(0,count($aso[$i])-1)]; - }else{ - //обмундирование - $com[$i] = $aso[$i][rand(0,count($aso[$i])-1)]; - if($i == 10) { - $ai .= $com[$i]['id'].','; - $com[$i] = $aso[$i][rand(0,count($aso[$i])-1)]; - $ai .= $com[$i]['id'].','; - //$com[$i] = $aso[$i][rand(0,count($aso[$i])-1)]; - //$ai .= $com[$i]['id'].','; - } - } - if($com[$i]['id'] > 0 && $i != 10) { - $ai .= $com[$i]['id'].','; - } - $i++; - } - $j++; - } - unset($com); - - $ai .= '0'; - $this->user['items'] = $ai; - mysql_query('UPDATE `users_turnirs` SET `items` = "'.$ai.'" WHERE `id` = "'.$this->user['id'].'" LIMIT 1'); - } - - //Выводим предметы чтобы надеть их - $ai = explode(',',$this->user['items']); - $i = 0; $ia = array(); - while($i < count($ai)) { - if($ai[$i] > 0) { - $pli = mysql_fetch_array(mysql_query('SELECT `id`,`inSlot`,`name`,`type`,`img`,`level` FROM `items_main` WHERE `id` = "'.$ai[$i].'" LIMIT 1')); - $ia[$pli['inSlot']][count($ia[$pli['inSlot']])] = $pli; - unset($pli); - } - $i++; - } - unset($ai); - - $r .= 'Выберите предметы для турнира:
    '; - ?> - - - 0) { - $j = 0; - while($j < count($ia[$i])) { - $r .= ''; - $j++; - } - $r .= '
    '; - } - $i++; - } - - } - - } - $r .= '
    '; - //$r .= 'Команда №1: '.rtrim($tm1,', '); - //$r .= '
    Команда №2: '.rtrim($tm2,', '); - - $r .= ' - - - - - - - - -
    Команда 1Команда 2
    '.rtrim($tm1,', ').''.rtrim($tm2,', ').'
    '; - - - if( ($this->info['time'] - time() < 0) && $this->info['step'] == 1) { - //начинаем турнир - $this->startTurnir(); - } - - echo $r; - } - -} -$tur = new turnir; -$tur->start(); -?> \ No newline at end of file diff --git a/_incl_data/class/bot.logic.php b/_incl_data/class/bot.logic.php deleted file mode 100644 index 2ef37642..00000000 --- a/_incl_data/class/bot.logic.php +++ /dev/null @@ -1,1339 +0,0 @@ - - array( - 'timeout' => 30 - ) - )); - $val = file_get_contents('https://new-combats.com/jx/battle/refresh_bot.php?uid='.$id['id'].'&cron_core='.md5($id['id'].'_brfCOreW@!_'.$id['pass']).'&pass='.$id['pass'].'&'.$txt,false,$ctx); - echo '['.$val.']
    '; - unset( $val ); - } - } - - static function battle_priems() { - - //используем приемы в бою - if(self::$st['hpNow'] > 0 && self::$bot['battle'] > 0) { - - $pr = explode('|',self::$bot['priems']); - $rz = explode('|',self::$bot['priems_z']); - $i = 0; - while($i < count($pr)) { - if($pr[$i] > 0) { - self::$pr[$pr[$i]] = $rz[$i]; - } - $i++; - } - $i = 0; - while($i < count($pr)) { - if($rz[$i] < 1 && $pr[$i] > 0) { - //Можно использовать прием, подключаем логику - botPriemLogic::start( $i, $pr[$i] ); - } - $i++; - } - self::$pr = false; - - } - - } - - static function clear_bot() { - - //Очистка бота, обнуляем его до [0], удаляем эффекты, предметы и т.д, а текущему ставим логин delete - - //Удаляем сообщения в чате - mysql_query('DELETE FROM `chat` WHERE `to` = "'.self::$bot['login'].'"'); - //Удаляем шмотки и эффекты - mysql_query('DELETE FROM `items_users` WHERE `uid` = "'.self::$bot['id'].'"'); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.self::$bot['id'].'"'); - - //Удаляем статы и поле в юзерс - mysql_query('DELETE FROM `users` WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - mysql_query('DELETE FROM `stats` WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - mysql_query('DELETE FROM `online` WHERE `uid` = "'.self::$bot['id'].'" LIMIT 1'); - mysql_query('DELETE FROM `actions` WHERE `uid` = "'.self::$bot['id'].'" LIMIT 1'); - //Добавляем статы и юзерс - //mysql_query('UPDATE `users` SET `login` = "delete",`login2` = `login` WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - //self::createNewBot(self::$bot['login'],self::$bot['sex']); - /* - $ins = mysql_query("INSERT INTO `users` (`fnq`,`id`,`host_reg`,`room`,`login`,`pass`,`ipreg`,`ip`,`city`,`cityreg`,`a1`,`q1`,`mail`,`name`,`bithday`,`sex`,`city_real`,`icq`,`icq_hide`,`deviz`,`chatColor`,`timereg`) VALUES ( - '0', - ".self::$bot['id'].", - '0', - '0', - '".self::$bot['login']."', - '".self::$bot['pass']."', - '0', - '".self::$bot['ip']."', - 'capitalcity', - 'capitalcity', - '0', - '0', - '".self::$bot['mail']."', - '".self::$bot['name']."', - '".self::$bot['bithday']."', - '".self::$bot['sex']."', - '".self::$bot['city_real']."', - '0', - '1', - '".self::$bot['deviz']."', - '".self::$bot['chatColor']."', - '".time()."')"); - if($ins) { - $uid = self::$bot['id']; - mysql_query("INSERT INTO `online` (`uid`,`timeStart`) VALUES ('".$uid."','".time()."')"); - mysql_query("INSERT INTO `stats` (`id`,`stats`) VALUES ('".$uid."','s1=3|s2=3|s3=3|s4=3|rinv=40|m9=5|m6=10')"); - } - */ - } - - static function inuser_go_main( $id , $txt = '' ) { - if(isset($id['id'])) { - $ctx = stream_context_create(array('https'=> - array( - 'timeout' => 1 - ) - )); - file_get_contents('https://new-combats.com/main_bot.php?uid='.$id['id'].'&cron_core='.md5($id['id'].'_brfCOreW@!_'.$id['pass']).'&pass='.$id['pass'].'&'.$txt,false,$ctx); - } - } - - static function inuser_go_zv( $id , $txt = '' ) { - if(isset($id['id'])) { - $ctx = stream_context_create(array('https'=> - array( - 'timeout' => 1 - ) - )); - file_get_contents('https://new-combats.com/main_bot.php?zayvka=1&r=4&uid='.$id['id'].'&cron_core='.md5($id['id'].'_brfCOreW@!_'.$id['pass']).'&pass='.$id['pass'].'&'.$txt,false,$ctx); - } - } - - //ПРоверка на файтрум - static function test_fr( $id , $city = 'capitalcity' ) { - $r = true; - if( $city == 'capitalcity' ) { - if( $id != 0 && $id != 2 && $id != 4 && $id != 5 && $id != 7 && $id != 377 ) { - $r = false; - } - } - return $r; - } - - //Действия бота вне боя - static function actions() { - - global $u; - - if( self::$bot['battle'] == 0 && self::$bot['zv'] == 0 && self::$bot['pass'] == 'saintlucia' ) { - - //Можно: сменить фулл, перейти в другую комнату, входить наймом, делать бафы - - //Переходим в другую комнату - if( true == false && self::$bot['a1'] != 0 && self::$bot['a1'] != self::$bot['room'] ) { - - self::_loc( self::$bot['a1'] ); - - }else{ - - self::update('a1',0); - - //CAPITAL - if( self::$bot['city'] == 'capitalcity' ) { - - - if( self::test_fr(self::$bot['room']) == false ) { - - if( self::$bot['exp'] > 400000 && self::$bot['level'] == 8 ) { - self::$bot['exp'] = 400000; - mysql_query('UPDATE `stats` SET `exp` = "400000" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - }elseif( self::$bot['exp'] > 3500000 && self::$bot['level'] == 9 ) { - self::$bot['exp'] = 3500000; - mysql_query('UPDATE `stats` SET `exp` = "3500000" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - } - - //Действие в комнате - //Магазин - if( self::$bot['room'] == 10 ) { - - //Покупаем кристалл вечности - if( self::$bot['level'] == 5 && self::$bot['exp'] >= 12499) { - $cr = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `item_id` = "1204" AND `uid` = "'.self::$bot['id'].'" AND `delete` = "0" LIMIT 1')); - if( !isset($cr['id']) ) { - //Покупаем кристалл - $u->addItem(1204,self::$bot['id']); - } - } - - } - - //Переходим в комнату для сражений - self::_loc( self::_loc_zv() ); - - }else{ - - //Стоим на месте, бо сражается )) - - - } - - } - //CAPITAL - - } - - //Если бот уже набрал опыт для перехода на 6-ой - if( self::$bot['level'] == 5 && self::$bot['exp'] >= 12499 ) { - $cr = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `item_id` = "1204" AND `uid` = "'.self::$bot['id'].'" AND `delete` = "0" LIMIT 1')); - if( !isset($cr['id']) ) { - self::update('a1',10); - } - } - - //Похоже что боту пора сменить комплект )) - if( self::$bot['clss'] == 0 ) { - - //Выбираем новый класс и шмотки :) - - //Меняем класс - self::$bot['clss'] = rand( 1, 4 ); - - $x = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `a_bot_tree` WHERE `level` = "'.(self::$bot['level']).'" ')); - - if( $x[0] > 0 ) { - - if( $x[0] > 1 ) { - - $x = rand( 1 , $x[0] ); - //выбираем 1 из нескольких - $da = array('ASC','DESC','DESC','ASC'); - $da = $da[rand(0,5)]; - $com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` = "'.(self::$bot['level']).'" ORDER BY `id` '.$da.' LIMIT '.($x-1).',1')); - }else{ - $com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` = "'.(self::$bot['level']).'" LIMIT 1')); - } - - if(!isset($com['id'])) { - - $com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` < "'.(self::$bot['level']).'" ORDER BY `id` DESC LIMIT 1')); - - } - - if(isset($com['id'])) { - - mysql_query('UPDATE `users` SET `clss` = "'.self::$bot['clss'].'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - - /* Забираем старые шмотки и эффекты */ - mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `gift` = "" AND `item_id` != "1204" AND `uid` = "'.self::$bot['id'].'" AND `delete` = "0"'); - mysql_query('UPDATE `items_users` SET `iznosNOW` = "0" WHERE `uid` = "'.self::$bot['id'].'" AND `delete` = "0"'); - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `uid` = "'.self::$bot['id'].'" AND `delete` = "0"'); - - /* Обновляем статы и приемы */ - - if($com['pr'] == '') { - $i = 1; - while( $i <= 18 ) { - $com['pr'] .= $com['p'.$i].'|'; - $i++; - } - $com['pr'] .= '0'; - } - - mysql_query('UPDATE `stats` SET `stats` = "'.$com['stats'].'",`priems` = "'.$com['pr'].'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - - /* Выдаем новые предметы и эффекты */ - /* - $e = explode(',',$com['eff']); - $i = 0; - while($i < count($e)) { - if( $e[$i] > 0 ) { - //Кастуем эффект на персонажа без срока годности - - } - $i++; - } - */ - - $i = 1; - while($i <= 20) { - if($com['e'.$i] > 0) { - //Выдаем и надеваем предмет - //$it = $u->addItem($com['e'.$i],self::$bot['id']); - $eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "'.$com['e'.$i].'" LIMIT 1')); - mysql_query('INSERT INTO `eff_users` (`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`,`no_Ace`) VALUES ("'.$eff['oneType'].'","'.$eff['id2'].'","'.self::$bot['id'].'","'.$eff['mname'].'","'.(time()+9640000).'","'.$eff['mdata'].'","'.$eff['noAce'].'")'); - } - $i++; - } - - $i = 1; - while($i <= 20) { - if($com['w'.$i] > 0) { - //Выдаем и надеваем предмет - $it = $u->addItem($com['w'.$i],self::$bot['id']); - $eff1 = mysql_fetch_array(mysql_query('SELECT * FROM `items_shop` WHERE `item_id` = "'.$com['w'.$i].'" LIMIT 1')); - if($it > 0) { - mysql_query('UPDATE `items_users` SET `inOdet` = "'.$i.'",`delete` = "0", `1price` = "'.$eff1['price_1'].'" WHERE `uid` = "'.self::$bot['id'].'" AND `id` = "'.$it.'" LIMIT 1'); - }else{ - - } - } - $i++; - } - - - - } - - }else{ - //жопа, нет комплектов! ходим в старом - } - - } - - //если бот уже 1-ый уровень, а сидит в новичках :) кидаем его в залы - if( self::$bot['city'] == 'capitalcity' ) { - - if( self::$bot['level'] < 2 && self::$bot['room'] == 0 && self::$bot['a1'] == 0) { - - self::_loc( self::_loc_zv() ); - - }else{ - - //Если куда-то нужно - переходим - - if( self::$bot['a1'] > 0 ) { - - //Топаем в эту комнату - - - } - - } - - } - // - - - - /* ЗАВЕРШЕНИЕ ДЕЙСТВИЙ ВНЕ БОЯ */ - - } - - } - - public $bot_last_action = array(); - - //Включаем логику бота - static function start( $id ) { - if(!isset($bot_last_action[$id])) { - global $u; - $bot_last_action[$id]++; - self::$bot = mysql_fetch_array(mysql_query('SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON `st`.`id` = `u`.`id` WHERE `u`.`id` = "'.mysql_real_escape_string( $id ).'" AND `u`.`banned` = "0" LIMIT 1')); - - if( isset( self::$bot['id'] ) ) { - - //self::e(self::$bot['id'].'<<['.$bot_last_action[$id].']'); - - self::$st = $u->getStats( self::$bot, 0 ); - - //Заходим ботом в онлайн - self::_online(); - - if( self::$bot['battle'] > 0) { - - //Действия бота в поединке - self::$btl = mysql_fetch_array( mysql_query('SELECT * FROM `battle` WHERE `id` = "'.mysql_real_escape_string(self::$bot['battle']).'" AND `team_win` = "-1" LIMIT 1') ); - if( isset( self::$btl['id'] ) ) { - - $go_bot = false; - $go_txt = ''; - - $a1 = mysql_fetch_array(mysql_query('SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE `battle` = "'.self::$btl['id'].'" AND `uid1` = "'.self::$bot['id'].'" ORDER BY `time` ASC LIMIT 1')); - - //Проверяем возможность использования приемов и делаем список что использовать - //используем приемы - self::battle_priems(); - - if( isset( $a1['id'] ) ) { - - //Бот сделал удар, но никто не ответил, проверяем таймаут и если что заходим - if( $a1['time'] + self::$btl['timeout'] < time() ) { - $go_bot = true; - } - - } - - - /*$a2_sp = mysql_query('SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE `battle` = "'.self::$btl['id'].'" AND `uid2` = "'.self::$bot['id'].'" ORDER BY `time` ASC LIMIT 5'); - - while( $a2 = mysql_fetch_array( $a2_sp ) ) { - - //Бота ударили - делаем ответный удар и заходим - if( $a2['time'] + self::$btl['timeout'] < time() ) { - //Заходим на персонажа - $go_bot = true; - }else{ - mysql_query('UPDATE `stats` SET `enemy` = "'.$a2['uid1'].'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - $go_bot = true; - $a = array( - 0 => rand(1,5), - 1 => rand(1,5), - 2 => rand(1,5), - 3 => rand(1,5), - 4 => rand(1,5) - ); - $a = $a[0].'_'.$a[1].'_'.$a[2].'_'.$a[3].'_'.$a[4]; - $b = rand(1,5); - $go_txt .= '&atack='.$a.'&block='.$b.''; - } - - }*/ - - //ТУТ test - $a2 = mysql_fetch_array(mysql_query('SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE `battle` = "'.self::$btl['id'].'" AND `uid2` = "'.self::$bot['id'].'" ORDER BY `time` ASC LIMIT 1')); - if(isset($a2['uid1'])) - { - mysql_query('UPDATE `stats` SET `enemy` = "'.$a2['uid1'].'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - } - $a3 = mysql_fetch_array(mysql_query('SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE `battle` = "'.self::$btl['id'].'" AND `uid2` = "'.self::$bot['id'].'" ORDER BY `time` ASC LIMIT 1')); - if(isset($a3['uid2'])) - { - mysql_query('UPDATE `stats` SET `enemy` = "'.$a3['uid2'].'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - } - //Размен с противником - - - $a1 = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_act` WHERE `battle` = "'.self::$btl['id'].'" AND `uid1` = "'.self::$bot['id'].'" AND `uid2` = "'.self::$bot['enemy'].'" LIMIT 1')); - self::$enemy = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "'.self::$bot['enemy'].'" LIMIT 1')); - /*if( !isset( $a1['id'] ) && self::$bot['hpNow'] >0 && self::$enemy['hpNow'] >0) { - $go_bot = true; - $a = array( - 0 => rand(1,5), - 1 => rand(1,5), - 2 => rand(1,5), - 3 => rand(1,5), - 4 => rand(1,5) - ); - $a = $a[0].'_'.$a[1].'_'.$a[2].'_'.$a[3].'_'.$a[4]; - $b = rand(1,5); - $go_txt .= '&atack='.$a.'&block='.$b.''; - } - - - unset($a1,$a2_sp,$a2); - //Заходим на персонажа - if( $go_bot == true ) { - self::inuser_go_btl( self::$bot , $go_txt ); - }*/ - - }else{ - - //Заходим на персонажа - self::inuser_go_btl( self::$bot ); - - //Поединок уже завершился, выкидываем из боя - self::$bot['battle'] = 0; - mysql_query( 'UPDATE `users` SET `battle` = "'.self::$bot['battle'].'" WHERE `id` = "'.mysql_real_escape_string(self::$bot['id']).'" LIMIT 1 ' ); - } - - }else{ - - //Действия бота вне поединка - if( self::$bot['timeMain'] < time() ) { - - mysql_query('UPDATE `chat` SET `time` = "'.time().'" WHERE `to` = "'.self::$bot['login'].'" AND `time` = "-1"'); - - //Действие возможно произвести - if( self::$bot['ipreg'] == 1 || self::$bot['ipreg'] == 2 || self::$bot['ipreg'] == 4 ) { - //Принимаем только хаоты - self::$bot['ipreg'] = 3; - } - if( self::$bot['ipreg'] == 5 ) { - //Подаем только хаоты - self::$bot['ipreg'] = 7; - } - // - if( self::$bot['ipreg'] == 0 || self::test_fr(self::$bot['room']) == false ) { - - /*if( self::$bot['exp'] > 0 && self::$bot['exp'] < 30000 ) { - $u->addItem(1204,self::$bot['id']); - mysql_query('UPDATE `stats` SET `exp` = "270000" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - }*/ - - //Удаляем травму и ослабу - //mysql_query('UPDATE `eff_users` SET `timeUse` = "'.(time()-86400*3).'" WHERE `uid` = "'.self::$bot['id'].'" AND `id_eff` = "4" LIMIT 100'); - - //Обновляем эффекты - $com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` = "'.(self::$bot['level']).'" LIMIT 1')); - if(isset($com['id'])) { - $eft = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `uid` = "'.self::$bot['id'].'" AND `delete` = "0" LIMIT 1')); - if(!isset($eft['id'])) { - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `uid` = "'.self::$bot['id'].'" AND `delete` = "0"'); - $i = 1; - while($i <= 20) { - if($com['e'.$i] > 0) { - //Выдаем и надеваем предмет - //$it = $u->addItem($com['e'.$i],self::$bot['id']); - $eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "'.$com['e'.$i].'" LIMIT 1')); - mysql_query('INSERT INTO `eff_users` (`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`,`no_Ace`) VALUES ("'.$eff['oneType'].'","'.$eff['id2'].'","'.self::$bot['id'].'","'.$eff['mname'].'","'.(time()+86400*7).'","'.$eff['mdata'].'","'.$eff['noAce'].'")'); - } - $i++; - } - } - } - - if( self::$bot['level'] >= 13 && self::$bot['clan'] == 0 && self::$bot['align'] == 0 ) { - //обнуляем бота - self::clear_bot(); - } - - //Только-что из поединка, хиляется - if( self::test_fr(self::$bot['room']) == false ) { - - //В какой-то локации, видимо что-то делаем - - }elseif( self::$st['hpNow'] >= self::$st['hpAll'] ) { - echo 1; - //Приступаем к активной деятельности :) - mysql_query('UPDATE `stats` SET `zv`= "0",`team`= "0",`hpNow` = "'.self::$st['hpNow'].'",`mpNow` = "'.self::$st['mpNow'].'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `ipreg` = "'.self::new_action().'",`mod_zvanie` = "Стажер" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - - }else{ - - if(self::$bot['mod_zvanie'] == 'Стажер100500') { - //Надеваем комплект + обновляем эффекты - mysql_query('UPDATE `eff_users` SET `timeUse` = "'.( time() + 7200 ) .'" WHERE `uid` = "'.self::$bot['id'].'" AND `delete` = "0" AND `v1` != "priem" LIMIT 12'); - mysql_query('UPDATE `items_users` SET `inOdet` = "0" WHERE `uid` = "'.self::$bot['id'].'" AND `inOdet` > 0 AND `delete` = "0"'); - $sp = mysql_query('SELECT `u`.`id`,`st`.`inslot`,`st`.`2too` FROM `items_users` AS `u` LEFT JOIN `items_main` AS `st` ON `st`.`id` = `u`.`item_id` WHERE `u`.`inOdet` = 0 AND `st`.`inslot` > 0 AND `st`.`inSlot` <= 20'); - $in = array(); - while($pl = mysql_fetch_array($sp)) { - $od = $pl['inslot']; - - if($od == 10 && $in[10] > 0) { - if($in[11] > 0) { - if($in[12] == 0) { - $od = 12; - } - }else{ - $od = 11; - } - } - - if($od == 3 && $in[3] > 0 && $pl['2too'] > 0) { - if( $in[14] > 0 ) { - mysql_query('UPDATE `items_users` SET `inOdet` = "0" WHERE `uid` = "'.self::$bot['id'].'" AND `inOdet` = "14" AND `delete` = "0" LIMIT 1'); - $in[14] = 0; - } - $od = 14; - } - - if( $in[$od] == 0 ) { - $in[$od] = $pl['id']; - mysql_query('UPDATE `items_users` SET `inOdet` = "'.$od.'" WHERE `id` = "'.$pl['id'].'" AND `uid` = "'.self::$bot['id'].'" LIMIT 1'); - } - } - mysql_query('UPDATE `items_users` SET `mod_zvanie` = "Cтaжер" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - } - - //Хиляемся дальше - if( self::$bot['regHP'] == 0 || self::$bot['regMP'] == 0 ) { - mysql_query('UPDATE `stats` SET `regHP` = "'.time().'", `regMP` = "'.time().'",`hpNow` = "'.self::$st['hpNow'].'",`mpNow` = "'.self::$st['mpNow'].'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - } - - $reg = $u->regen( self::$bot['id'] , self::$st , 0 ); - } - - self::actions(); - - self::update( 'timeMain', self::rnd() ); - - }elseif( self::$bot['ipreg'] == 1 ) { - - //Принять заявку на бой (физ.) - if( self::$bot['zv'] == 0 ) { - - //Выделяем подходящую заявку в физ. поединке - $rz = 2; - $zv = 0; - $nozv = 0; - - if( self::$bot['level'] == 0 ) { - $rz = 1; - } - - $zv = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `city` = "'.self::$bot['city'].'" AND `otk` < "'.rand( 2, 6 ).'" AND `time` < "'.( time() - rand( 15, 25 ) ).'" AND `bcs` < "'.time().'" AND `start` = "0" AND `razdel` = "'.$rz.'" AND `cancel` = "0" AND `time` > "'.( time() - 1111).'" AND `money3` = 0 ORDER BY `time` DESC LIMIT 1')); - - if( isset( $zv['id'] ) ) { - - $uz1 = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="'.$zv['id'].'" AND `st`.`team`="1" LIMIT 1')); - $uz2 = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="'.$zv['id'].'" AND `st`.`team`="2" LIMIT 1')); - - if( isset( $uz1['id'] ) && !isset( $uz2['id'] ) ) { - - $uz1st = $u->getStats($uz1,0); - - if( $uz1st['reting'] <= floor(self::$st['reting']*1.27) ) { - - //Принимаем заявку - $sa = ''; - if( self::$bot['sex'] == 2 ) { - $sa = 'а'; - } - - $text = ' [login:'.self::$bot['login'].'] принял'.$sa.' вашу заявку на бой.[reflesh_main_zv_priem:'.self::$bot['id'].']'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$uz1['city']."','','','".$uz1['login']."','".$text."','".time()."','6','0')"); - mysql_query('UPDATE `stats` SET `zv` = "'.$zv['id'].'",`team` = "2" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `ipreg` = "8",`timeMain` = "'.self::rnd().'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - - }else{ - $nozv = 1; - } - - unset ($uz1st); - - }else{ - $nozv = 1; - } - }else{ - $nozv = 1; - } - - if( $nozv == 1 ) { - - if( self::$bot['timeMain'] < time() - rand(1,3)*60 ) { - mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "'.self::rnd().'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - } - - } - - unset($rz); - } - - - }elseif( self::$bot['ipreg'] == 2 ) { - - //Принять заявку на бой (груп.) - self::bot_group_haot_zv( 6 ); - }elseif( self::$bot['ipreg'] == 3 ) { - - //Принять заявку на бой (хаот.) - self::bot_group_haot_zv( 7 ); - }elseif( self::$bot['ipreg'] == 4 ) { - - //Принять заявку на бой (турнир.) - self::e(''.self::$bot['login'].', я хочу принять турнир...'); - }elseif( self::$bot['ipreg'] == 5 ) { - - //Подать заявку (физ.) - if( self::$bot['zv'] == 0 ) { - - $rz = 2; - if( self::$bot['level'] == 0 ) { - $rz = 1; - } - - $ins = mysql_query('INSERT INTO `zayvki` (`bot1`,`bot2`,`time`,`city`,`creator`,`type`,`time_start`,`timeout`,`min_lvl_1`,`min_lvl_2`,`max_lvl_1`,`max_lvl_2`,`tm1max`,`tm2max`,`travmaChance`,`invise`,`razdel`,`comment`,`money`,`withUser`,`tm1`,`tm2`) VALUES ( - "0", - "0", - "'.time().'", - "'.self::$bot['city'].'", - "'.self::$bot['id'].'", - "0", - "0", - "300", - "0", - "21", - "0", - "21", - "1", - "1", - "0", - "0", - "'.$rz.'", - "", - "", - "","'.( 0 + self::$bot['reting'] ).'","0")'); - $zid = mysql_insert_id(); - mysql_query('UPDATE `stats` SET `zv` = "'.$zid.'", `team` = "1" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `ipreg` = "8",`timeMain` = "'.self::rnd().'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - } - - }elseif( self::$bot['ipreg'] == 6 || self::$bot['ipreg'] == 7 ) { - - self::bot_group_haot_zv( self::$bot['ipreg'] ); - - //Подать заявку (груп.) или хаотов - //$test_zv = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `creator` = '.self::$bot['id'].' AND `cancel` = 0 AND `start` = 0 LIMIT 1')); - - //self::e('SELECT * FROM `zayvki` WHERE `creator` = '.self::$bot['id'].' AND `cancel` = 0 AND `start` = 0 LIMIT 1'); - - if( self::$bot['zv'] == 0 ) { - - $rz = 4; - - if( self::$bot['ipreg'] == 7 ) { - $rz = 5; - } - - $rz = 5; - - $zv_c = array( - - 'time_start' => ( 60 * 5 ), - 'tm1' => rand( 2, 6 ), - 'tm2' => rand( 2, 6 ), - 'l1min' => 0, - 'l1max' => 21, - 'l2min' => 0, - 'l2max' => 21, - 'timeout' => ( 60 * rand( 1, 3 ) ) - - ); - - if( self::$bot['ipreg'] == 7 ) { - $zv_c['tm1'] = 99; - } - - $zv_c['tm2'] = $zv_c['tm1']; - $zv_c['l1min'] = self::$bot['level']; - $zv_c['l1max'] = self::$bot['level']; - - if($zv_c['l1min'] < 2) { - $zv_c['l1min'] = 2; - } - if($zv_c['l1max'] >21) { - $zv_c['l1max'] = 21; - } - - $zv_c['l2min'] = $zv_c['l1min']; - $zv_c['l2max'] = $zv_c['l1max']; - /* - $ins = mysql_query('INSERT INTO `zayvki` (`bot1`,`bot2`,`time`,`city`,`creator`,`type`,`time_start`,`timeout`,`min_lvl_1`,`min_lvl_2`,`max_lvl_1`,`max_lvl_2`,`tm1max`,`tm2max`,`travmaChance`,`invise`,`razdel`,`comment`,`money`,`withUser`,`tm1`,`tm2`,`maxplayers`) VALUES ( - "0", - "0", - "'.time().'", - "'.self::$bot['city'].'", - "'.self::$bot['id'].'", - "0", - "'.$zv_c['time_start'].'", - "'.$zv_c['timeout'].'", - "'.$zv_c['l1min'].'", - "'.$zv_c['l1max'].'", - "'.$zv_c['l2min'].'", - "'.$zv_c['l2max'].'", - "'.$zv_c['tm1'].'", - "'.$zv_c['tm2'].'", - "0", - "0", - "'.$rz.'", - "", - "", - "","'.( 0 + self::$bot['reting'] ).'","0", - "12")'); - $zid = mysql_insert_id(); - mysql_query('UPDATE `stats` SET `zv` = "'.$zid.'", `team` = "1" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `ipreg` = "8",`timeMain` = "'.self::rnd().'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - */ - } - - }elseif( self::$bot['ipreg'] == 8 ) { - - //Ожидание начала поединка - if( self::$bot['zv'] == 0 ) { - - //Поединок не удалось начать - mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "'.self::rnd().'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - }else{ - $zv = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `id` = "'.self::$bot['zv'].'" AND `cancel` = "0" AND `start` = "0" LIMIT 1')); - - if( !isset( $zv['id'] ) ) { - - //Обнуляем действия - mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "'.self::rnd().'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - - }elseif($zv['razdel'] == 4 || $zv['razdel'] == 5) { - - //хаот или группа - if( $zv['time_start'] + $zv['time'] <= time() ) { - - self::inuser_go_zv( self::$bot ); - } - - }else{ - //физ - if( $zv['creator'] == self::$bot['id'] ) { - - $uz2 = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="'.$zv['id'].'" AND `st`.`team`="2" LIMIT 1')); - if( isset( $uz2['id'] ) ) { - //Заявку кто-то принял, реагируем! :) - $pr = -1; - - $uz2st = $u->getStats($uz2,0); - - //btl-cof - if( $uz2st['reting'] > floor(self::$st['reting']*1.27)) { - - //Отказываем, в 95% случаев, противник слишком силен - if( rand( 0, 100 ) > 95 ) { - //отправляем бота на избиение :D - $pr = 1; - }else{ - //отказ - $pr = 0; - } - - }else{ - $pr = 1; - } - - //Можно принять заявку - //$pr = 0; - - if( $pr == 1 ) { - - //Прием заявки - //создаем поединок с ботом - $expB = 0; - $btl = array('players'=>'','timeout'=>$zv['timeout'],'type'=>$zv['type'],'invis'=>$zv['invis'],'noinc'=>0,'travmChance'=>0,'typeBattle'=>0,'addExp'=>$expB,'money'=>0); - $ins = mysql_query('INSERT INTO `battle` (`time_over`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`,`team_win`) VALUES ( - "0", - "'.self::$bot['city'].'", - "'.time().'", - "'.$btl['players'].'", - "'.$btl['timeout'].'", - "'.$btl['type'].'", - "'.$btl['invis'].'", - "'.$btl['noinc'].'", - "'.$btl['travmChance'].'", - "'.$btl['typeBattle'].'", - "'.$btl['addExp'].'", - "'.$btl['money'].'", - "-1")'); - if($ins) - { - $btl_id = mysql_insert_id(); - //обновляем данные о поединке - mysql_query('UPDATE `users` SET `battle`="'.$btl_id.'" WHERE `id` = "'.$uz2['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `battle`="'.$btl_id.'",`ipreg` = "0" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `zv` = "0",`team`="1" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `zv` = "0",`team`="2" WHERE `id` = "'.$uz2['id'].'" LIMIT 1'); - - //Если бой кулачный, то снимаем вещи - if($btl['type']==1) - { - mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "'.self::$bot['id'].'" AND `inOdet`!=0'); - mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "'.$uz2['id'].'" AND `inOdet`!=0'); - } - - mysql_query('UPDATE `zayvki` SET `start` = "'.time().'",`btl_id` = "'.$btl_id.'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); - - //обновляем заявку, что бой начался - self::$bot['battle'] = $btl_id; - - //Отправляем сообщение в чат всем бойцам - mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('".$u->info['city']."','".$u->info['room']."','".$uz2['login']."','".time()."','11','0','117')"); - } - - }elseif( $pr == 0 ) { - - //Отказ - $sa = ''; - if( self::$bot['sex'] == 2 ) { - $sa = 'а'; - } - $text = ' [login:'.self::$bot['login'].'] отказал'.$sa.' вам в поединке.'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$uz2['city']."','','','".$uz2['login']."','".$text."','".time()."','6','0')"); - mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "1" WHERE `id` = "'.$uz2['id'].'" LIMIT 1'); - mysql_query('UPDATE `zayvki` SET `otk` = ( `otk` + 1 ),`bcs` = "'.( time() + rand( 30, rand( 60, 180 ) ) ).'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); - }else{ - //Чего-то ждем... - } - - }else{ - - //Заявку никто не принял, возможно стоит отменить заявку вообще! - if( self::$bot['timeMain'] < time() - 30 - rand((7 / $zv['otk'] ), (3*49 / $zv['otk'] )) ) { - - mysql_query('UPDATE `stats` SET `zv` = "0" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "'.self::rnd().'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - mysql_query('UPDATE `zayvki` SET `cancel` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); - - } - - } - - } - - } - - //Бот уже слишком долго ждет ответа игрока, отказываемся от заявки - if( self::$bot['timeMain'] < time() - rand((30 / $zv['otk'] ), (135 / $zv['otk'] )) && $zv['creator'] != self::$bot['id'] && ( $zv['razdel'] == 1 || $zv['razdel'] == 2 ) ) { - - $uz1 = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="'.$zv['id'].'" AND `st`.`team`="1" LIMIT 1')); - if( isset( $uz1['id'] ) ) { - - $sa = ''; - if( self::$bot['sex'] == 2 ) { - $sa = 'а'; - } - - $text = ' [login:'.self::$bot['login'].'] отозвал'.$sa.' свой запрос на бой.'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$uz1['city']."','','','".$uz1['login']."','".$text."','".time()."','6','0')"); - } - - mysql_query('UPDATE `zayvki` SET `otk` = ( `otk` + 1 ),`bcs` = "'.( time() + rand( 30, rand( 60, 180 ) ) ).'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "1" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `ipreg` = "1",`timeMain` = "'.self::rnd().'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - } - - } - - }elseif( self::$bot['ipreg'] == 9 ) { - - //Подать заявку (хаот.) - - }elseif( self::$bot['ipreg'] == 10 ) { - - //Свободные характеристики или умения - - }elseif( self::$bot['ipreg'] == 11 ) { - - //Меняем комплект - - }elseif( self::$bot['ipreg'] == 12 ) { - - //Получили новый уровень - - }elseif( self::$bot['ipreg'] == 13 ) { - - //Помочь персонажу в бою - - }elseif( self::$bot['ipreg'] == 14 ) { - - //Вылечить персонажа от травм - - }elseif( self::$bot['ipreg'] == 15 ) { - - //Сделать каст персонажу (Сокрушение, Холодный разум, Защита от магии, Защита от оружия) - - }elseif( self::$bot['ipreg'] == 16 ) { - - //Выпить эликсиры - - }else{ - self::update('ipreg',0); - } - - } - - } - - return true; - - }else{ - - return false; - - } - } - } - - static function team_zv_cf( $zv , $tm ) { - $r = mysql_fetch_array(mysql_query('SELECT SUM(`btl_cof`) FROM `stats` WHERE `zv` = "'.$zv['id'].'" AND `team` = "'.$tm.'" LIMIT 1')); - $r = 0+round($r[0]); - return $r; - } - - static function new_action() { - - $r = rand( 1 , 7 ); - - if( self::$bot['level'] < 2 ) { - if( $r == 2 || $r == 3 || $r == 6 || $r == 7 || $r == 8 ) { - if( rand(0,1) == 1 ) { - $r = 1; //принимаем физ - }elseif( rand(0,1) == 0 ){ - $r = 4; //принимаем турнир - }else{ - $r = 5; //подаем физ - } - } - }elseif( self::$bot['level'] == 0 ) { - if( rand(0,1) == 1 ) { - $r = 1; //принимаем физ - }else{ - $r = 5; //подаем физ - } - }else{ - //Доступны любые заявки - - } - - if( $r == 4 ) { - $r = 1; - } - - return $r; - - } - - - /*/ - Базовые функции обучения бота - /*/ - //Бот ищет заявку в группы или хаот для своего уровня и подходящую ему - static function bot_group_haot_zv( $id ) { - - if($id == 6) { - //группы - $rz = 4; - }elseif($id == 7) { - //хаоты - $rz = 5; - } - - // - $rz = 5; - // - - - $sp = mysql_query('SELECT * FROM `zayvki` WHERE `razdel` = "'.$rz.'" AND `cancel` = "0" AND `start` = "0" AND `invise` = "0" AND `money3` = 0 AND ( - ( `min_lvl_1` <= '.self::$bot['level'].' AND `max_lvl_1` >= '.self::$bot['level'].' ) OR ( `min_lvl_2` <= '.self::$bot['level'].' AND `max_lvl_2` >= '.self::$bot['level'].' ) - )'); - - $pr = 0; - - while($pl = mysql_fetch_array( $sp )) { - - if( $pr == 0 ) { - - $go = 1; - $tm = array(0,0,0); - - if( $rz == 4 ) { - - $tm1c = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "'.$pl['id'].'" AND `team` = "1" LIMIT 1')); - $tm2c = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "'.$pl['id'].'" AND `team` = "2" LIMIT 1')); - - if($tm1c[0] < $pl['tm1max']) { - if( $pl['min_lvl_1'] <= self::$bot['level'] && $pl['max_lvl_1'] >= self::$bot['level']) { - $tm[1] = 1; - } - } - - if($tm2c[0] < $pl['tm2max']) { - if( $pl['min_lvl_1'] <= self::$bot['level'] && $pl['max_lvl_1'] >= self::$bot['level']) { - $tm[2] = 1; - } - } - - $atm = 1; - $tmr = 0; - if( $tm[1] == 1 && $tm[2] == 0 ) { - $tmr = 1; - }elseif( $tm[1] == 0 && $tm[2] == 1 ) { - $tmr = 2; - }else{ - $tmr = rand(1,2); - } - - if($tmr > 0) { - if($tmr == 1) { - $atm = 2; - } - - - //Логика приема заявки - if( self::team_zv_cf($pl,$atm) > ( self::team_zv_cf($pl,$tmr) + self::$st['reting'] )*1.67 || ($zv['tm2max'] < $zv['tm1max']/2) || ($zv['tm1max'] < $zv['tm2max']/2) ) { - //self::e(self::$bot['login'].', я очкую '.$pl['id'].' , '.self::team_zv_cf($pl,$atm).' VS '.(self::team_zv_cf($pl,$tm) + self::$st['reting'] ).' ...'); - if(rand(0,100) < 90) { - $go = 0; - } - } - } - - }elseif( $rz == 5 ) { - /* - if( $pl['min_lvl_1'] <= self::$bot['level'] && $pl['max_lvl_1'] >= self::$bot['level']) { - $tm[1] = 1; - } - */ - //Только 8-ки - /*if( self::$bot['level'] <= 8 ) { - if( $pl['min_lvl_1'] <= 8 && $pl['max_lvl_1'] <= 8) { - $tm[1] = 1; - } - }else{*/ - if( $pl['min_lvl_1'] == self::$bot['level'] && $pl['max_lvl_1'] == self::$bot['level'] ) { - $tm[1] = 1; - } - $col_p = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "'.$pl['id'].'"')); - $cols = $col_p[0]; - if( $cols >= $pl['maxplayers'] ) { - $go = 0; - } - //} - } - - - if($go == 1 && ( $tm[1] != 0 || $tm[2] != 0 )) { - - if( $tm[1] == 1 && $tm[2] == 0 ) { - $tm = 1; - }elseif( $tm[1] == 0 && $tm[2] == 1 ) { - $tm = 2; - }else{ - $tm = rand(1,2); - } - - if( $rz == 5 ) { - $tm = 1; - } - - //self::e(self::$bot['login'].', принял участие в заявке #'.$pl['id'].', за команду №'.$tm.' '); - - if( $rz == 5 ) { - /* считаем баланс */ - if($pl['tm1'] > $pl['tm2']) - { - $tm = 2; - }elseif($z['tm1']<$z['tm2']) - { - $tm = 1; - }else{ - $tm = rand(1,2); - } - - $tm = rand(1,2); - - if($pl['invise']==0) - { - $nxtID = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "'.$pl['id'].'"')); - $nxtID = $nxtID[0]; - //$u->info['login2'] = 'Боец ('.($nxtID+1).')'; - self::$bot['login2'] = ''; - }else{ - self::$bot['login2'] = ''; - } - - $blnc = 100*self::$bot['level']+self::$st['reting']; - - $pl['tm'.$tm] += $blnc; - - mysql_query('UPDATE `zayvki` SET `tm1` = "'.$pl['tm1'].'", `tm2` = "'.$pl['tm2'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - - } - - if( $tm > 0 || $rz == 5 ) { - - //Принимаем участие в заявке - mysql_query('UPDATE `stats` SET `zv` = "'.$pl['id'].'",`team` = "'.$tm.'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `login2` = "'.self::$bot['login2'].'",`ipreg` = "8" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - self::$bot['zv'] = $pl['id']; - $pr = $pl['id']; - - } - - } //if - - } // while - - } - - } - - //Добавляем нового бота - static function createNewBot($login,$sex) { - if($sex != 1) { - $sex = 0; - }else{ - $se = 1; - } - - $r = array( - 'name' => '_', - 'city_real' => '', - 'deviz' => '', - 'chatColor' => 'Black' - ); - - $ins = mysql_query("INSERT INTO `users` (`fnq`,`host_reg`,`room`,`login`,`pass`,`ipreg`,`ip`,`city`,`cityreg`,`name`,`sex`,`city_real`,`deviz`,`chatColor`,`timereg`) VALUES ( - '0', - 'real_bot_user', - '0', - '".mysql_real_escape_string($login)."', - '".md5('regnxt#$%^а0.'.time())."', - '127.0.0.1', - '127.0.0.1', - 'capitalcity', - 'capitalcity', - '".$r['name']."', - '".mysql_real_escape_string($sex)."', - '".$r['city_real']."', - '".$r['deviz']."', - '".$r['chatColor']."', - '".time()."')"); - if($ins){ - $uid = mysql_insert_id(); - mysql_query("INSERT INTO `online` (`uid`,`timeStart`) VALUES ('".$uid."','".time()."')"); - mysql_query("INSERT INTO `stats` (`id`,`stats`) VALUES ('".$uid."','s1=3|s2=3|s3=3|s4=3|rinv=40|m9=5|m6=10')"); - mysql_query("UPDATE `users` SET `online`='".time()."' WHERE `uid` = '".$uid."' LIMIT 1"); - } - - } - - //Бот находится в онлайне - static function _online() { - if( self::$bot['online'] < time() - 60 ) { - //уровень/апп - if( self::$bot['battle'] == 0 && self::$bot['zv'] == 0) { - self::_level(); - } - self::update( 'online', time() ); - //self::$bot['online'] = time(); - //mysql_query( 'UPDATE `users` SET `online` = "'.self::$bot['online'].'" WHERE `id` = "'.mysql_real_escape_string(self::$bot['id']).'" LIMIT 1 ' ); - - } - } - - //Бот меняет локацию - static function _loc_A( $a, $b ) { - $r = $b; - - return $r; - } - - static function _loc_zv() { - - if( rand(0,100) < 5 ) { - - $r = 1; - - }else{ - - $r = rand(1,4); - - } - - if( $r == 4 ) { - - //будуар - if( self::$bot['sex'] != 1 ) { - $r = rand(1,3); - } - - } - - if( self::$bot['city'] == 'capitalcity' ) { - if($r == 4) { - //будуар - $r = 7; - }elseif( $r == 3 ) { - //ЗВ 3 - $r = 5; - }elseif( $r == 2 ) { - //ЗВ 2 - $r = 2; - }else{ - //ЗВ 1 - $r = 4; - } - - if( self::$bot['level'] == 0 ) { - //Новички - $r = 0; - } - - } - - return $r; - } - - static function _loc( $id ) { - - if( $id == self::$bot['room'] ) { - - //ничего, уже пришли - self::update('a1',0); - - }else{ - - //Прокладываем маршрут из текущей комнаты - $rid_next = self::_loc_A(self::$bot['room'],$id); - if( $rid_next > 0 ) { - //Идем туда - //$rid_next = 377; - mysql_query('UPDATE `users` SET `room` = "'.$rid_next.'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - return true; - }else{ - //Невозможно дойти туда - return false; - } - - } - - } - - //Бот получил уровень, либо апп - static function _level() { - global $u; - $lvl = mysql_fetch_array(mysql_query('SELECT `upLevel`,`nextLevel`,`exp`,`money`,`money_bonus1`,`money_bonus2`,`ability`,`skills`,`nskills`,`sskills`,`expBtlMax`,`hpRegen`,`mpRegen`,`money2` FROM `levels` WHERE `upLevel`="'.(self::$bot['upLevel']+1).'" LIMIT 1')); - if( isset($lvl['upLevel']) ) { - - if( self::$bot['level'] <= 5 && self::$bot['exp'] >= 12499 ) { - $cr = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `item_id` = "1204" AND `uid` = "'.self::$bot['id'].'" AND `delete` = "0" LIMIT 1')); - if( !isset($cr['id']) ) { - $u->addItem(1204,self::$bot['id']); - self::$bot['exp'] = 12500; - } - } - //self::$bot['exp'] = 300000; - if($lvl['exp'] <= self::$bot['exp']) { - //mysql_query('UPDATE `stats` SET `exp` = "300000" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - //self::e('test'); - //Получаем уровень - self::inuser_go_main( self::$bot ); - mysql_query('UPDATE `users` SET `clss` = "0" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - - } - - }else{ - self::e(self::$bot['login']); - } - - } - - //Вспомогательные функции - static function e( $t ) { - - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #'.date('d.m.Y').' %'.date('H:i:s').' (Критическая ошибка): '.mysql_real_escape_string($t).'","capitalcity", - "LEL","6","1","-1")'); - - } - - static function rnd() { - return time() + rand(3,14) + rand(0,14) + rand(7,21); - } - - static function update( $n, $v, $t = 'users' ) { - self::$bot[$n] = $v; - mysql_query('UPDATE `'.$t.'` SET `'.$n.'` = "'.self::$bot[$n].'" WHERE `id` = "'.self::$bot['id'].'" LIMIT 1'); - } - -} -?> \ No newline at end of file diff --git a/_incl_data/class/bot.priem.php b/_incl_data/class/bot.priem.php deleted file mode 100644 index 058ccb5d..00000000 --- a/_incl_data/class/bot.priem.php +++ /dev/null @@ -1,516 +0,0 @@ -= 175 && $id <= 179 ) { self::priem175( $i ); } - - //********************************* - } - return true; - - } - - static function usePriem($id,$on = NULL) { - - //if(self::$p['id'] > 7 && self::$p['id'] < 11) { - //botLogic::e(botLogic::$bot['login'].', использую прием "'.self::$p['name'].'" , battle: Link'); - //} - - $go_txt = '&usepriem='.$id; - if( $on != '') { - $on = str_replace(' ','%20',$on); - $go_txt .= '&useon='.$on; - } - botLogic::inuser_go_btl( botLogic::$bot , $go_txt ); - } - //Ставка на опережение - static function priem220( $i ) { - $su = true; - //Логика использования приема - if(rand(0,100) >= 30) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - //Разгадать тактику - static function priem217( $i ) { - $su = true; - //Логика использования приема - if(rand(0,100) >= 30) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - //Обреченность - static function priem204( $i ) { - $su = true; - //Логика использования приема - if(rand(0,100) >= 30) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - - //Выжить - static function priem232( $i ) { - $su = true; - //Логика использования приема - if(self::hp() > 30 || rand(0,100) >= 50) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - //Жажда крови - static function priem188( $i ) { - $su = true; - //Логика использования приема - if(rand(0,100) >= 30) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - //Шок удар - static function priem235( $i ) { - $su = true; - //Логика использования приема - if(rand(0,100) >= 50) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - //Хлебнуть крови - static function priem240( $i ) { - $su = true; - //Логика использования приема - //if(botLogic::$st['tactic2'] < 7 || botLogic::$st['tactic4'] < 3 || self::hp() > 70) { - if(self::hp() > 70) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - //Силовое поле - static function priem175( $i ) { - $su = true; - //Логика использования приема - /*if(botLogic::$st['hpNow'] >= botLogic::$st['hpAll']) { - $su = false; - }elseif(botLogic::$st['hpNow'] < 5) { - $su = false; - }elseif(rand(0,100) >= 50) { - $su = false; - }*/ - - if($su == true) { - self::usePriem( $i ); - } - } - - //Прикрыться - static function priem1( $i ) { - $su = true; - if(rand(0,100) >= 50) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - - //Вломить - static function priem2( $i ) { - $su = true; - //Логика использования приема - if(rand(0,100) >= 50) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - - //Собрать зубы - static function priem3( $i ) { - $su = true; - //Логика использования приема - /*if(botLogic::$st['hpNow'] >= botLogic::$st['hpAll']) { - $su = false; - }elseif(botLogic::$st['hpNow'] < 10) { - $su = false; - }elseif(isset(botLogic::$pr[1]) && botLogic::$pr[1] < 1) { - $su = false; - }*/ - if(self::hp() > 70 || rand(0,100) >= 50) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - - //Воля к победе - static function priem6( $i ) { - $su = true; - //Логика использования приема - if(self::hp() > 40 || rand(0,100) >= 50) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - - //Танец ветра - static function priem8( $i ) { - $su = true; - //Логика использования приема - if(rand(0,100) >= 30) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - //Танец лезвий - static function priem48( $i ) { - $su = true; - //Логика использования приема - if(rand(0,100) >= 70) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - - //Дикая удача - static function priem9( $i ) { - $su = true; - //Логика использования приема - if(rand(0,100) >= 30) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - //Слепая удача - static function priem47( $i ) { - $su = true; - //Логика использования приема - if(rand(0,100) >= 50) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - - //Предвиденье - static function priem10( $i ) { - $su = true; - //Логика использования приема - if(rand(0,100) >= 30) { - $su = false; - } - if($su == true) { - self::usePriem( $i ); - } - } - //Второе дыхание - static function priem49( $i ) { - $su = true; - //Логика использования приема - if(rand(0,100) >= 80 || self::hp() > 60) { - $su = false; - } - if($su == true) { - self::usePriem( $i ); - } - } - - //Рывок - static function priem223( $i ) { - $su = true; - //Логика использования приема - if(self::hp() > 50 || rand(0,100) >= 50) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - - //Удачный удар - static function priem11( $i ) { - $su = true; - //Логика использования приема - //if(isset(botLogic::$pr[6]) && botLogic::$st['tactic7'] > 0 && self::hp() < 66 && botLogic::$st['tactic1'] < 14) { - if(rand(0,100) >= 30){ - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - //Стойкость - static function priem13( $i ) { - $su = true; - //Логика использования приема - if(rand(0,100) >= 50){ - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - //Ярость - static function priem14( $i ) { - $su = true; - //Логика использования приема - if(rand(0,100) >= 50){ - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - - //Сильный удар - static function priem4( $i ) { - $su = true; - //Логика использования приема - /*if(isset(botLogic::$pr[6]) && botLogic::$st['tactic7'] > 0 && self::hp() < 66 && botLogic::$st['tactic1'] < 14) { - $su = false; - }elseif((isset(botLogic::$pr[11]) || isset(botLogic::$pr[6])) && rand(0,100) <= 75) {*/ - if(rand(0,100) >= 60){ - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - - //Утереть пот - static function priem5( $i ) { - $su = true; - //Логика использования приема - if(self::hp() > 95) { - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - - - //Агрессивная защита - static function priem211( $i ) { - $su = true; - //Логика использования приема - - //if( rand(0,100) >= 80 || (isset(botLogic::$pr[7]) && botLogic::$pr[7] < 1) || (isset(botLogic::$pr[45]) && botLogic::$pr[45] < 1) || self::hp() > 80 ) { - if( rand(0,100) >= 80){ - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - - - - //Полная защита - static function priem45( $i ) { - $su = true; - //Логика использования приема - - //if( rand(0,100) >= 60 || (isset(botLogic::$pr[7]) && botLogic::$pr[7] < 1) || (isset(botLogic::$pr[211]) && botLogic::$pr[211] < 1) || self::hp() > 80 ) { - if( rand(0,100) >= 50){ - $su = false; - } - - if($su == true) { - self::usePriem( $i ); - } - } - - - //Активная защита - static function priem7( $i ) { - //if (rand(0,100) >= 50){$su = true;}else{$su = false;} - - $su = true; - //Логика использования приема - /* Если есть абсолютная защита (агрессивную) и её возможно исопльзовать, а так-же НР менее 70% */ - //if( rand(0,100) >= 50 || (isset(botLogic::$pr[45]) && botLogic::$pr[45] < 1) || (isset(botLogic::$pr[211]) && botLogic::$pr[211] < 1) || self::hp() > 80 ) { - if(rand(0,100) >= 30) { - - $su = false; - - } - if($su == true) { - self::usePriem( $i ); - } - } - - - - - static function hp() { - $p = round((botLogic::$st['hpNow']/botLogic::$st['hpAll']*100),2); - return $p; - } - - //Тест на возможность использования - static function testpriem($pl) { - global $u; - $notr = 0; - - $tr = $u->lookStats($pl['tr']); - $d2 = $u->lookStats($pl['date2']); - - $x = 1; - while( $x <= 7 ) { - if(botLogic::$bot['tactic'.$x] < $pl['tt'.$x] && $x!=7 && $pl['tt'.$x] > 0) { - $notr++; - }elseif($x==7) { - if($pl['tt'.$x]>0 && botLogic::$bot['tactic'.$x]<=0) { - $notr++; - } - } - $x++; - } - - if($pl['xuse']>0) { - $xu = $u->testAction('`vars` = "use_priem_'.botLogic::$bot['battle'].'_'.botLogic::$bot['id'].'" AND `vals` = "'.$pl['id'].'" LIMIT '.$pl['xuse'].'',2); - if($xu[0] >= $pl['xuse']) { - $notr++; - } - } - - $x = 0; - $t = $u->items['tr']; - while($x < count($t)) - { - $n = $t[$x]; - if(isset($tr['tr_'.$n])) - { - if($n=='lvl') - { - if($tr['tr_'.$n] > botLogic::$bot['level']) - { - $notr++; - } - }elseif($tr['tr_'.$n] > botLogic::$st[$n]) - { - $notr++; - } - } - $x++; - } - - if(isset($tr['tr_mpNow'])) - { - if(botLogic::$st['mpNow'] < $tr['tr_mpNow']) - { - $notr++; - } - } - - if($pl['trUser']==1) - { - //требует чтобы пользователь с кем-то разменивался (при ожидании прием гаснит) - $ga = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_act` WHERE `battle` = "'.botLogic::$bot['battle'].'" AND `uid1` = "'.botLogic::$bot['id'].'" AND `uid2` = "'.botLogic::$bot['enemy'].'" LIMIT 1')); - if(isset($ga['id'])) - { - $notr++; - } - } - - //Если прием уже использовали - if(botLogic::$st['prsu'][$pl['id']]>0) { - $notr++; - } - - return $notr; - } - -} -?> \ No newline at end of file diff --git a/_incl_data/class/dialog.class.php b/_incl_data/class/dialog.class.php deleted file mode 100644 index 4e34c5c1..00000000 --- a/_incl_data/class/dialog.class.php +++ /dev/null @@ -1,1501 +0,0 @@ -0,1=>0); - $i = floor($x/$j); - $r = array(0=>$i,1=>$x-($i*$j)); - return $r; - } - - public function objLevel($t,$l) - { - $i = 1; - $r = 0; - while($i<=$l) - { - if(isset($t[$i])) - { - $r = $t[$i]; - } - $i++; - } - return $r; - } - - public function start($id) - { - global $u,$q,$c,$d,$code; - $this->info = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_dialog` WHERE `id` = "'.mysql_real_escape_string((int)$id).'" LIMIT 1')); - if(isset($this->info['id'])) - { - $pg = 1; - $go = 1; - $txt = ''; - //Переход по страницам - if(isset($_GET['act'])) - { - $ta = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_dlg` WHERE `type` = "0" AND `id` = "'.mysql_real_escape_string((int)$_GET['act']).'" AND `id_dg` = "'.$this->info['id'].'" LIMIT 1')); - if(isset($ta['id'])) - { - $ta['action'] = $this->ltr($ta['action']); - $act = explode('|',$ta['action']); - $go1 = 1; - $needRep = array(); - if($ta['tr'] != '') { - $i = 0; - $x = explode('|',$ta['tr']); - while($i < count($x)) { - //Требования - $k = explode('=',$x[$i]); - if($k[0]=='data') { - $date = explode('-',$k[1]); - $dd1 = $date[0]; - $mm1 = $date[1]; - $dd2 = $date[2]; - $mm2 = $date[3]; - $date1 = strtotime($dd1.'-'.$mm1.'-'.date('Y')); - $date2 = strtotime($dd2.'-'.$mm2.'-'.date('Y')); - - if( $date1 > time() || $date2 < time() ) { - $go1 = 'delete'; - $i = count($x); - } - - }elseif($k[0]=='diact') { - //Действия - //user_id # all # all # lukaqst1 # -1 - if($this->quest_act($k[1])==false) { - $go1 = 'delete'; - $i = count($x); - } - }elseif($k[0]=='quest_end') { - //Квест можно выполнять несколько раз в текущей пещере - $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars` = "start_quest'.$k[1].'" ORDER BY `id` DESC LIMIT 1')); - if(isset($qlst['id']) && $qlst['vals'] != 'win' && $qlst['vals'] != 'end' && $qlst['vals'] != 'bad') { - $go1 = 0; - $txt .= '
    Что-то не так, Вы уже взяли данное задание...'; - $pg = $ta['page']; - } - }elseif($k[0]=='quest_only_one') { - //Квест можно выполнять только один раз - $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars` = "start_quest'.$k[1].'" ORDER BY `id` DESC LIMIT 1')); - if(isset($qlst['id']) && ($qlst['vals'] == 'win' || $qlst['vals'] == 'bad')) { - $go1 = 0; - $txt .= '
    Что-то не так, Вы уже выполняли данное задание...'; - $pg = $ta['page']; - } - }elseif($k[0]=='quest_now') { - //Квест должен быть взят - $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars` = "start_quest'.$k[1].'" ORDER BY `id` DESC LIMIT 1')); - if(isset($qlst['id']) && $qlst['vals'] != 'win' && $qlst['vals'] != 'end' && $qlst['vals'] != 'bad'){}else{ - $go1 = 0; - $txt .= '
    Что-то не так, требуется взять задание...'; - $pg = $ta['page']; - } - }elseif($k[0]=='tr_itm') { - //Квест требует предмет - $qlst = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "'.$k[1].'" AND `inOdet` = 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); - if($qlst[0] < $k[2]){ - $go1 = 0; - $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "'.$k[1].'" LIMIT 1')); - if(isset($itmqs['id'])) { - $txt .= '
    Требуется предмет "'.$itmqs['name'].'" (x'.$k[2].').'; - } - $pg = $ta['page']; - } - }elseif($k[0]=='tr_itmodet') { - //Квест требует предмет - $k[1] = str_replace(',','" OR `item_id` = "',$k[1]); - $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND (`item_id` = "'.$k[1].'") AND `inOdet` > 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); - if(!isset($qlst['id'])){ - $go1 = 0; - $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "'.$k[1].'" LIMIT 1')); - if(isset($itmqs['id'])) { - $txt .= '
    Требуется предмет "'.$itmqs['name'].'".'; - } - $pg = $ta['page']; - } - }elseif($k[0]=='tr_noitmodet') { - //Квест требует предмет - $k[1] = str_replace(',','" OR `item_id` = "',$k[1]); - $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND (`item_id` = "'.$k[1].'") AND `inOdet` > 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); - if(isset($qlst['id'])){ - $go1 = 0; - $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "'.$k[1].'" LIMIT 1')); - if(isset($itmqs['id'])) { - $txt .= '
    У вас уже есть требуемый предмет "'.$itmqs['name'].'".'; - } - $pg = $ta['page']; - } - }elseif($k[0]=='tr_noitm') { - //Квест требует предмет - $k[1] = str_replace(',','" OR `item_id` = "',$k[1]); - $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND (`item_id` = "'.$k[1].'") AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); - if(isset($qlst['id'])){ - $go1 = 0; - $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "'.$k[1].'" LIMIT 1')); - if(isset($itmqs['id'])) { - $txt .= '
    У вас уже есть требуемый предмет "'.$itmqs['name'].'".'; - } - $pg = $ta['page']; - } - }elseif($k[0]=='del_itm') { - //Квест удаляет предмет - $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "'.$k[1].'" AND `inOdet` = 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); - if(isset($qlst['id'])){ - $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "'.$k[1].'" LIMIT 1')); - if(isset($itmqs['id'])) { - if(mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `id` = "'.$qlst['id'].'" LIMIT 1')) { - $txt .= '
    Вы отдали "'.$itmqs['name'].'"'; - } - } - $pg = $ta['page']; - } - } elseif( $k[0] == 'needRep' ) { - // разговор требует репутации в пещере. - $temp = explode(',', $k[1]); - $needRep = array('city' => $temp[0], 'rep' => (int)$temp[1]); - if( isset($needRep) ) { # Проверяем репутацию. - if($u->rep['rep'.$needRep['city']] < $needRep['rep'] ) { - $swapActStatus = 0; - $go1 = 0; - $txt = 'Я тебя раньше здесь не видел, уходи прочь негодник!'; - $pg = $ta['page']; - } - } - } - $i++; - } - } - if(isset($act[1]) && $go1 == 1){ - $act1 = explode('=',$act[1]); - $act0 = explode('=',$act[0]); - if( $act0[0] == 'fileqst' ) { - if(file_exists('_incl_data/class/quest/'.htmlspecialchars($act0[1]).'.php')) { - require_once('_incl_data/class/quest/'.htmlspecialchars($act0[1]).'.php'); - }else{ - $txt .= '
    Квест не найден в списках NPS...'; - } - $pg = $act[1]; - }elseif( $act[0]=='dialog_act_update') { - $act33 = $this->dialog_act_update($act[2]); - if( $act33[0] == false ) { - if( $act33[1] == '' ) { - $txt .= '
    Что-то пошло не так...'; - }else{ - $txt .= '
    '.$act33[1].''; - } - }else{ - $txt .= '
    '.$act33[1].''; - } - $pg = $act[1]; - }elseif( $act[0]=='quest_act' ) { - $txt .= '
    Вы получили новое задание.'; - mysql_query('INSERT INTO `dialog_act` ( - `uid`,`city`,`time`,`var`,`val`,`btl_bot`,`itms`,`now`,`max`,`info` - ) VALUES ( - "'.$u->info['id'].'","'.$u->info['city'].'","'.time().'","'.mysql_real_escape_string($act1[0]).'","'.mysql_real_escape_string($act1[1]).'" - ,"'.mysql_real_escape_string($act1[3]).'","'.mysql_real_escape_string($act1[4]).'","'.mysql_real_escape_string($act1[5]).'","'.mysql_real_escape_string($act1[6]).'","'.mysql_real_escape_string($act1[7]).'" - )'); - $pg = $act1[2]; - if( $act1[8] != 0 ) { - //Выдаем предмет для квеста - $itmb = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$act1[8].'" LIMIT 1')); - if(isset($itmb['id'])) { - $u->addItem($act1[8],$u->info['id'],'|nodelete=1'); - $txt .= '
    Вы получили предмет "'.$itmb['name'].'"'; - } - } - }elseif( $act[0]=='buyitm' ) { - $itmb = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$act1[0].'" LIMIT 1')); - if(isset($itmb['id'])) { - if( $u->info['money'] < $act1[1] ) { - $txt .= '
    Вам не хватает денег для покупки "'.$itmb['name'].'", требуется '.$act1[1].' кр.'; - }else{ - $act1dt = ''; - $txt .= '
    Вы успешно приобрели "'.$itmb['name'].'"'; - if($act1[1] > 0) { - $txt .= ' за '.$act1[1].' кр.'; - $u->info['money'] -= $act1[1]; - mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - if($act1[2] > 0) { - $txt .= ' за '.$act1[2].' екр.'; - } - if( $act1[3] > 0 ) { - $txt .= ' на срок '.$u->timeOut($act1[3]).''; - $act1dt .= '|srok='.$act1[3].''; - } - $txt .= ''; - - $u->addItem($itmb['id'],$u->info['id'],$act1dt); - $pg = $act1[4]; - } - }else{ - $txt .= '
    Неудалось приобрести предмет...'; - $pg = 1; - } - }elseif( $act1[0]=='quest' ) { - $pg = $act1[1]; - $act2 = explode('=',$act[1]); - if($act2[0] > 0 && $q->testGood($act2[0])==1) { - //выдаем квест - if($act2[1]!='0') { - //Выдача предмета - $ic1 = 0; - $act21 = explode(',',$act2[1]); - while($ic1 < count($act21)) { - $act3 = explode('-',$act21[$ic1]); - $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "'.$act3[0].'" LIMIT 1')); - if(isset($itmqs['id'])) { - if($act3[2] > 1) { - //несколько - $txt .= '
    Вы получили предмет "'.$itmqs['name'].'" (x'.$act3[2].' шт.).'; - }else{ - //один - $txt .= '
    Вы получили квестовый предмет "'.$itmqs['name'].'".'; - } - $ic2 = 1; - while($ic2 <= $act3[2]) { - $u->addItem($itmqs['id'],$u->info['id'],'|quest_item=1',array('del'=>$act3[3])); - $ic2++; - } - } - $ic1++; - } - } - $q->startq($act2[0]); - $txt .= '
    '.$u->error.'.'; - $u->error = ''; - } else { - $txt .= '
    Не удалось получить задание, не соответствуют условия получения...'; - } - } elseif($act[0]=='go' && $go1 == 1) { - $pg = $act[1]; - } elseif($act[0]=='atackbot' && $go1 == 1) { - //Нападение на монстра - if( round((int)$act[1]) > 0 ) { - $btl_id = 0; - //$expB = -77.77; - $expB = 0; - $btl = array( - 'players'=>'', - 'timeout'=>180, - 'type'=>0, - 'invis'=>0, - 'noinc'=>0, - 'travmChance'=>0, - 'typeBattle'=>0, - 'addExp'=>$expB, - 'money'=>0 - ); - - $ins = mysql_query('INSERT INTO `battle` (`dungeon`,`dn_id`,`x`,`y`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( - "'.$d->info['id2'].'", - "'.$d->info['id'].'", - "'.$u->info['x'].'", - "'.$u->info['y'].'", - "'.$u->info['city'].'", - "'.time().'", - "'.$btl['players'].'", - "'.$btl['timeout'].'", - "'.$btl['type'].'", - "'.$btl['invis'].'", - "'.$btl['noinc'].'", - "'.$btl['travmChance'].'", - "'.$btl['typeBattle'].'", - "'.$btl['addExp'].'", - "'.$btl['money'].'")'); - $btl_id = mysql_insert_id(); - - if($btl_id > 0) { - //Добавляем ботов - $k = $u->addNewbot(round((int)$act[1]),NULL,NULL,array()); - mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'" WHERE `id` = "'.$k['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `x`="'.$u->info['x'].'",`y`="'.$u->info['y'].'",`team` = "2" WHERE `id` = "'.$k['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - - } - header('location: main.php'); - }else{ - echo 'Поединок почему-то не начался...'; - } - die(); - } elseif($act[0]=='goroom' && $go1 == 1) { - $u->info['room'] = $act[1]; - mysql_query('UPDATE `users` SET `room` = "'.$u->info['room'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - header('location: main.php'); - die(); - } elseif($act[0]=='transfer2' && $go1 == 1) { - //Обменник тыквоголового - $txt = ''; - - $xtik = 0; //Требуется тыкв - - if( $act[1] == 1 && true == false ) { - $txt .= 'Обмен 1...'; - $xtik = 10; - $itik = 4465; - - }elseif( $act[1] == 2 ) { - $txt .= 'Обмен 2...'; - $xtik = 15; - $itik = 2143; - - }elseif( $act[1] == 3 ) { - $txt .= 'Обмен 3...'; - $xtik = 15; - $itik = 2144; - - }elseif( $act[1] == 4 && true == false ) { - $txt .= 'Обмен 4...'; - $xtik = 6; - //арт воина - $itik = -1; - - }elseif( $act[1] == 5 && true == false ) { - $txt .= 'Обмен 5...'; - $xtik = 6; - //арт мага - $itik = -2; - - }elseif( $act[1] == 6 ) { - $txt .= 'Обмен 6...'; - $xtik = 50; - //значок 1 - $itik = -3; - - }elseif( $act[1] == 7 ) { - $txt .= 'Обмен 7...'; - $xtik = 70; - //значок 2 - $itik = -4; - - }else{ - $txt .= 'Тыквоголовый не меняет этот хлам...'; - } - - $txt = 'Обменник начнет свою работу 3 ноября'; - - $itms = array(); - $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "4504" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 100'); - while($pl = mysql_fetch_array($sp)) { - $itms[$pl['item_id']]++; - } - - $t = $this->trnObj($itms[4504],$xtik); - if($t[0] > 0) { - // $t[0] - сколько предметов награды даем, $cn[$i]['add'][0] - item_id предмета награды - //удаляем ингридиенты - - $gdtik = 1; - - if( $gdtik == 1 ) { - $upd = mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "4504" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" ORDER BY `inGroup` ASC LIMIT '.$xtik.''); - //echo 'UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "4504" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT '.$t[0].''; - if($upd) { - if( $itik > 0 ) { - //Выдаем предметы - $u->addItem($itik,$u->info['id'],'|nosale=1|srok='.(7*86400).'',NULL,1); - $itm_nm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "'.$itik.'" LIMIT 1')); - $txt = 'Вы получили предмет "'.$itm_nm['name'].'"'; - }else{ - //Что-то уникальное - if( $itik == -1 ) { - //Артефакт воин - $arts_1 = array(); - $arts_lvl = $u->info['level']; - if( $arts_lvl < 4 ) { - $arts_lvl = 4; - }elseif( $arts_lvl > 10 ) { - $arts_lvl = 10; - } - $sp1 = mysql_query('SELECT `items_id` FROM `items_main_data` WHERE `data` LIKE "%|art=%" AND `data` LIKE "%tr_lvl='.$arts_lvl.'%" AND `data` NOT LIKE "%|tr_s5=%" AND `data` NOT LIKE "%|add_s6=%" AND `data` NOT LIKE "%|tr_s6=%"'); - while( $pl1 = mysql_fetch_array($sp1) ) { - $arts_1[] = $pl1['items_id']; - } - $arts_1 = $arts_1[rand(0,count($arts_1)-1)]; - if( $arts_1 > 0 ) { - $u->addItem($arts_1,$u->info['id'],'|sroknext=1|nosale=1|sleep_moroz=1|srok='.(86400/2).'',NULL,100); - } - $itm_nm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "'.$arts_1.'" LIMIT 1')); - - $txt = 'Вы получили артефакт для воина "'.$itm_nm['name'].'" на срок 12 часов.'; - }elseif( $itik == -2 ) { - //Артефакт мага - $arts_1 = array(); - $arts_lvl = $u->info['level']; - if( $arts_lvl < 4 ) { - $arts_lvl = 4; - }elseif( $arts_lvl > 10 ) { - $arts_lvl = 10; - } - $sp1 = mysql_query('SELECT `items_id` FROM `items_main_data` WHERE `data` LIKE "%|art=%" AND `data` LIKE "%tr_lvl='.$arts_lvl.'%" AND ( `data` LIKE "%|tr_s6=%" OR `data` LIKE "%|add_s6=%")'); - while( $pl1 = mysql_fetch_array($sp1) ) { - $arts_1[] = $pl1['items_id']; - } - $arts_1 = $arts_1[rand(0,count($arts_1)-1)]; - if( $arts_1 > 0 ) { - $u->addItem($arts_1,$u->info['id'],'|sroknext=1|nosale=1|sleep_moroz=1|srok='.(86400/2).'',NULL,100); - } - $itm_nm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "'.$arts_1.'" LIMIT 1')); - - $txt = 'Вы получили артефакт для мага "'.$itm_nm['name'].'" на срок 12 часов.'; - }elseif( $itik == -3 ) { - //Значок +1 - mysql_query('DELETE FROM `users_ico` WHERE `uid` = "'.$u->info['id'].'" AND (`img` = "helloween_2014m1.gif" OR `img` = "helloween_2014m2.gif")'); - mysql_query('INSERT INTO `users_ico` (`uid`,`time`,`text`,`img`,`endTime`,`bonus`,`type`,`x`) VALUES ( - "'.$u->info['id'].'", - "'.time().'", - "Хэллоуин`'.date('Y').'
    Обыкновенный собиратель тыкв!", - "helloween_2014m1.gif", - "'.(time()+86400*365).'", - "add_m10=15|add_m11=15", - "1", - "1" - )'); - $txt = 'Вы получили значок "Хэллоуин`'.date('Y').' Обыкновенный"'; - }elseif( $itik == -4 ) { - //Значок +5 - mysql_query('DELETE FROM `users_ico` WHERE `uid` = "'.$u->info['id'].'" AND (`img` = "helloween_2014m1.gif" OR `img` = "helloween_2014m2.gif")'); - mysql_query('INSERT INTO `users_ico` (`uid`,`time`,`text`,`img`,`endTime`,`bonus`,`type`,`x`) VALUES ( - "'.$u->info['id'].'", - "'.time().'", - "Хэллоуин`'.date('Y').'
    Лучший собиратель тыкв!", - "helloween_2014m2.gif", - "'.(time()+86400*365).'", - "add_m10=15|add_m11=15", - "1", - "1" - )'); - $txt = 'Вы получили значок "Хэллоуин`'.date('Y').' Лучший"'; - } - } - } - }else{ - $txt = 'Неудалось совершить обмен...'; - } - }else{ - $txt = 'Недостаточно тыкв для обмена...'; - } - - if($txt!=''){ - $txt = '
    '.$txt.''; - } - $pg = 3; - } elseif($act[0]=='transfer1' && $go1 == 1) { - //Меняем гайки и прочий мусор из канализации на жетоны - //ИХ больше у тебя нету... Неси еще, Луке нужно больше ИХ! - $pg = $act[1]; $itms = array(); - $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND (`item_id` = "1002" OR `item_id` = "1003" OR `item_id` = "1004" OR `item_id` = "1005" OR (`item_id` >= "1009" AND`item_id` <= "1014")) AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 250'); - while($pl = mysql_fetch_array($sp)) { - $itms[$pl['item_id']]++; - } - //Предметы - $cn = array( - 0 => 3, //кол-во классификаций - 1 => array( - //гайка - 1 => array('n'=>'Гайка',0=>1002,1=>3,7=>9,8=>15), - //болт - 2 => array('n'=>'Болт',0=>1003,1=>1,7=>3,8=>5), - //вентиль - 3 => array('n'=>'Вентиль',0=>1005,1=>(1/3),7=>1,8=>2), - 'add' => array(0=>1006,1=>'Жетон') //предмет вознаграждения, бронзовый жетон - ), //бронза - 2 => array( - //гайка - 1 => array('n'=>'Чистая гайка',0=>1009,1=>3,7=>9,8=>15), - //болт - 2 => array('n'=>'Длинный Болт',0=>1010,1=>1,7=>3,8=>5), - //вентиль - 3 => array('n'=>'Чистый вентиль',0=>1011,1=>(1/3),7=>1,8=>2), - 'add' => array(0=>1007,1=>'Серебряный жетон') //предмет вознаграждения, бронзовый жетон - ), //серебро - 3 => array( - //гайка - 1 => array('n'=>'Гайка с Резьбой',0=>1012,1=>3,7=>9,8=>15), - //болт - 2 => array('n'=>'Нужный болт',0=>1013,1=>1,7=>3,8=>5), - //вентиль - 3 => array('n'=>'Рабочий вентиль',0=>1014,1=>(1/3),7=>1,8=>2), - 'add' => array(0=>1008,1=>'Золотой жетон') //предмет вознаграждения, бронзовый жетон - ) //золото - ); - - $i = 1; - while($i<=$cn[0]) - { - $j = 1; - while($jtrnObj($itms[$cn[$i][$j][0]],$this->objLevel($cn[$i][$j],$u->info['level'])); - if($t[0]>0) - { - // $t[0] - сколько предметов награды даем, $cn[$i]['add'][0] - item_id предмета награды - //удаляем ингридиенты - $upd = mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "'.$cn[$i][$j][0].'" AND `delete` = "0" AND `inOdet` = "0" AND `inShop` = "0" LIMIT '.($t[0]*$this->objLevel($cn[$i][$j],$u->info['level'])).''); - if($upd) - { - $data = '|frompisher='.$d->info['id2']; - $e = 1; - while($e<=$t[0]) - { - $u->addItem($cn[$i]['add'][0],$u->info['id'],$data); - $e++; - } - $txt .= $cn[$i][$j]['n'].' x'.($t[0]*$this->objLevel($cn[$i][$j],$u->info['level'])).' = '.$cn[$i]['add'][1].' x'.$t[0].'
    '; - }else{ - $txt .= 'Не удалось обменять предмет "'.$cn[$i][$j]['n'].'", что-то не так ...
    '; - } - } - $j++; - } - $i++; - } - - if($txt!='') { - $txt = '
    '.$txt.''; - } - } elseif($act[0]=='transfer3' && $go1 == 1) { - //ИХ больше у тебя нету... Неси еще, Луке нужно больше ИХ! - //Серебро на золото, 3 к 1 - $pg = $act[1]; $itms = array(); - $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "1007" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 250'); - while($pl = mysql_fetch_array($sp)) { - $itms[$pl['item_id']]++; - } - //Предметы - $cn = array( - 0 => 1, //кол-во классификаций - 1 => array( - //гайка - 1 => array('n'=>'Серебряный жетон',0=>1007,1=>3,7=>3,8=>3), - 'add' => array(0=>1008,1=>'Золотой жетон') //предмет вознаграждения, бронзовый жетон - ) - ); - - $i = 1; - while($i<=$cn[0]) - { - $j = 1; - while($jtrnObj($itms[$cn[$i][$j][0]],$this->objLevel($cn[$i][$j],$u->info['level'])); - if($t[0]>0) - { - // $t[0] - сколько предметов награды даем, $cn[$i]['add'][0] - item_id предмета награды - //удаляем ингридиенты - $upd = mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "'.$cn[$i][$j][0].'" AND `delete` = "0" AND `inOdet` = "0" AND `inShop` = "0" LIMIT '.($t[0]*$this->objLevel($cn[$i][$j],$u->info['level'])).''); - if($upd) - { - $data = '|frompisher='.$d->info['id2']; - $e = 1; - while($e<=$t[0]) - { - $u->addItem($cn[$i]['add'][0],$u->info['id'],$data); - $e++; - } - $txt .= $cn[$i][$j]['n'].' x'.($t[0]*$this->objLevel($cn[$i][$j],$u->info['level'])).' = '.$cn[$i]['add'][1].' x'.$t[0].'
    '; - }else{ - $txt .= 'Не удалось обменять предмет "'.$cn[$i][$j]['n'].'", что-то не так ...
    '; - } - } - $j++; - } - $i++; - } - - if($txt!='') { - $txt = '
    '.$txt.''; - } - } elseif($act[0]=='transfer4' && $go1 == 1) { - //ИХ больше у тебя нету... Неси еще, мне нужно больше ИХ! - //Засоры к золоту, 20 к 1 - $pg = $act[1]; $itms = array(); - $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "4728" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 250'); - while($pl = mysql_fetch_array($sp)) { - $itms[$pl['item_id']]++; - } - //Предметы - $cn = array( - 0 => 1, //кол-во классификаций - 1 => array( - //гайка - 1 => array('n'=>'Засоры',0=>4728,1=>20,7=>20,8=>20), - 'add' => array(0=>1008,1=>'Золотой жетон') //предмет вознаграждения, бронзовый жетон - ) - ); - - $i = 1; - while($i<=$cn[0]) - { - $j = 1; - while($jtrnObj($itms[$cn[$i][$j][0]],$this->objLevel($cn[$i][$j],$u->info['level'])); - if($t[0]>0) - { - // $t[0] - сколько предметов награды даем, $cn[$i]['add'][0] - item_id предмета награды - //удаляем ингридиенты - $upd = mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "'.$cn[$i][$j][0].'" AND `delete` = "0" AND `inOdet` = "0" AND `inShop` = "0" LIMIT '.($t[0]*$this->objLevel($cn[$i][$j],$u->info['level'])).''); - if($upd) - { - $data = '|frompisher='.$d->info['id2']; - $e = 1; - while($e<=$t[0]) - { - $u->addItem($cn[$i]['add'][0],$u->info['id'],$data); - $e++; - } - $txt .= $cn[$i][$j]['n'].' x'.($t[0]*$this->objLevel($cn[$i][$j],$u->info['level'])).' = '.$cn[$i]['add'][1].' x'.$t[0].'
    '; - }else{ - $txt .= 'Не удалось обменять предмет "'.$cn[$i][$j]['n'].'", что-то не так ...
    '; - } - } - $j++; - } - $i++; - } - - if( $txt == '' ) { - $txt = 'Необходимо минимум 20 засоров для обмена.'; - } - - if($txt!='') { - $txt = '
    '.$txt.''; - } - }elseif($act[0]=='transferSpells30' && $go1 == 1) { - - //2553 2554 - - $keypr1 = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `item_id` = "2553" LIMIT 1')); - $keypr2 = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `item_id` = "2554" LIMIT 1')); - - $txt = ''; - - if(isset($keypr1['id'],$keypr2['id'])) { - mysql_query('DELETE FROM `items_users` WHERE `id` = "'.$keypr1['id'].'" OR `id` = "'.$keypr2['id'].'" LIMIT 2'); - $data = '|frompisher='.$d->info['id2']; - $u->addItem(2555,$u->info['id'],$data); - $txt = 'Вы успешно получили "Пирамидальный ключ"'; - } - - if( $txt == '' ) { - $txt = 'Необходимо принести два разных осколка...'; - } - - if($txt!='') { - $txt = '
    '.$txt.''; - } - - }elseif($act[0]=='transferSpells31' && $go1 == 1) { - - $pg = $act[1]; $itms = array(); - $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND (`item_id` = "2560" OR `item_id` = "2564" OR `item_id` = "2568" OR `item_id` = "2572" OR `item_id` = "2576") AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 250'); - while($pl = mysql_fetch_array($sp)) { - $itms[$pl['item_id']]++; - } - - $keypr = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `item_id` = "2555" LIMIT 1')); - if(!isset($keypr['id'])) { - $itms = array(); - $txt = 'Необходим "Пирамидальный ключ", у вас его нет...'; - } - - //Предметы - $cn = array( - 0 => 5, //кол-во классификаций - 1 => array( - 1 => array('n'=>'Зачаровать Украшение [0]',0=>2560,8=>3,'add'=>array(2561,'Зачаровать Украшение [1]')), - 2 => array('n'=>'Зачаровать Оружие [0]',0=>2564,8=>3,'add'=>array(2565,'Зачаровать Оружие [1]')), - 3 => array('n'=>'Зачаровать Броню [0]',0=>2568,8=>3,'add'=>array(2569,'Зачаровать Броню [1]')), - 4 => array('n'=>'Зачаровать Перчатки [0]',0=>2572,8=>3,'add'=>array(2573,'Зачаровать Перчатки [1]')), - 5 => array('n'=>'Зачаровать Шлем [0]',0=>2576,8=>3,'add'=>array(2577,'Зачаровать Шлем [1]')) - ) - ); - - $i = 1; - while($i<=$cn[0]) - { - $j = 1; - while($j<=$cn[0]) - { - $t = $cn[$i][$j]; - $t = $this->trnObj($itms[$cn[$i][$j][0]],$this->objLevel($cn[$i][$j],8)); - if($t[0]>0) - { - $upd = mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "'.$cn[$i][$j][0].'" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT '.($t[0]*$this->objLevel($cn[$i][$j],$u->info['level'])).''); - if($upd) - { - $data = '|frompisher='.$d->info['id2']; - $e = 1; - while($e<=$t[0]) - { - $u->addItem($cn[$i][$j]['add'][0],$u->info['id'],$data); - $e++; - } - mysql_query('DELETE FROM `items_users` WHERE `id` = "'.$keypr['id'].'" LIMIT 1'); - $txt .= $cn[$i][$j]['n'].' x'.($t[0]*$this->objLevel($cn[$i][$j],$u->info['level'])).' = '.$cn[$i][$j]['add'][1].' x'.$t[0].'
    '; - }else{ - $txt .= 'Не удалось обменять предмет "'.$cn[$i][$j]['n'].'", что-то не так ...
    '; - } - $i = $cn[0]; - $j = count($cn[$i][$j]); - } - $j++; - } - $i++; - } - - if( $txt == '' ) { - $txt = 'У вас не хватило необходимых предметов...'; - } - - if($txt!='') { - $txt = '
    '.$txt.''; - } - - }elseif($act[0]=='transferSpells32' && $go1 == 1) { - - $pg = $act[1]; $itms = array(); - $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND (`item_id` = "2561" OR `item_id` = "2565" OR `item_id` = "2569" OR `item_id` = "2573" OR `item_id` = "2577") AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 250'); - while($pl = mysql_fetch_array($sp)) { - $itms[$pl['item_id']]++; - } - - $keypr = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `item_id` = "2555" LIMIT 1')); - if(!isset($keypr['id'])) { - $itms = array(); - $txt = 'Необходим "Пирамидальный ключ", у вас его нет...'; - } - - //Предметы - $cn = array( - 0 => 5, //кол-во классификаций - 1 => array( - 1 => array('n'=>'Зачаровать Украшение [1]',0=>2561,8=>3,'add'=>array(2562,'Зачаровать Украшение [2]')), - 2 => array('n'=>'Зачаровать Оружие [1]',0=>2565,8=>3,'add'=>array(2566,'Зачаровать Оружие [2]')), - 3 => array('n'=>'Зачаровать Броню [1]',0=>2569,8=>3,'add'=>array(2570,'Зачаровать Броню [2]')), - 4 => array('n'=>'Зачаровать Перчатки [0]',0=>2573,8=>3,'add'=>array(2574,'Зачаровать Перчатки [2]')), - 5 => array('n'=>'Зачаровать Шлем [1]',0=>2577,8=>3,'add'=>array(2578,'Зачаровать Шлем [2]')) - ) - ); - - $i = 1; - while($i<=$cn[0]) - { - $j = 1; - while($j<=$cn[0]) - { - - $t = $cn[$i][$j]; - $t = $this->trnObj($itms[$cn[$i][$j][0]],$this->objLevel($cn[$i][$j],8)); - if($t[0]>0) - { - $upd = mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "'.$cn[$i][$j][0].'" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT '.($t[0]*$this->objLevel($cn[$i][$j],$u->info['level'])).''); - if($upd) - { - $data = '|frompisher='.$d->info['id2']; - $e = 1; - while($e<=$t[0]) - { - $u->addItem($cn[$i][$j]['add'][0],$u->info['id'],$data); - $e++; - } - mysql_query('DELETE FROM `items_users` WHERE `id` = "'.$keypr['id'].'" LIMIT 1'); - $txt .= $cn[$i][$j]['n'].' x'.($t[0]*$this->objLevel($cn[$i][$j],$u->info['level'])).' = '.$cn[$i][$j]['add'][1].' x'.$t[0].'
    '; - }else{ - $txt .= 'Не удалось обменять предмет "'.$cn[$i][$j]['n'].'", что-то не так ...
    '; - } - $i = $cn[0]; - $j = count($cn[$i][$j]); - } - $j++; - } - $i++; - } - - if( $txt == '' ) { - $txt = 'У вас не хватило необходимых предметов...'; - } - - if($txt!='') { - $txt = '
    '.$txt.''; - } - - }elseif($act[0]=='transferSpells33' && $go1 == 1) { - - $pg = $act[1]; $itms = array(); - $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND (`item_id` = "2562" OR `item_id` = "2566" OR `item_id` = "2570" OR `item_id` = "2574" OR `item_id` = "2578") AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 250'); - while($pl = mysql_fetch_array($sp)) { - $itms[$pl['item_id']]++; - } - - $keypr = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `item_id` = "2555" LIMIT 1')); - if(!isset($keypr['id'])) { - $itms = array(); - $txt = 'Необходим "Пирамидальный ключ", у вас его нет...'; - } - - //Предметы - $cn = array( - 0 => 5, //кол-во классификаций - 1 => array( - 1 => array('n'=>'Зачаровать Украшение [0]',0=>2562,8=>3,'add'=>array(2563,'Зачаровать Украшение [3]')), - 2 => array('n'=>'Зачаровать Оружие [0]',0=>2566,8=>3,'add'=>array(2567,'Зачаровать Оружие [3]')), - 3 => array('n'=>'Зачаровать Броню [0]',0=>2570,8=>3,'add'=>array(2571,'Зачаровать Броню [3]')), - 4 => array('n'=>'Зачаровать Перчатки [0]',0=>2574,8=>3,'add'=>array(2575,'Зачаровать Перчатки [3]')), - 5 => array('n'=>'Зачаровать Шлем [0]',0=>2578,8=>3,'add'=>array(2579,'Зачаровать Шлем [3]')) - ) - ); - - $i = 1; - while($i<=$cn[0]) - { - $j = 1; - while($j<=$cn[0]) - { - - $t = $cn[$i][$j]; - $t = $this->trnObj($itms[$cn[$i][$j][0]],$this->objLevel($cn[$i][$j],8)); - if($t[0]>0) - { - $upd = mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "'.$cn[$i][$j][0].'" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT '.($t[0]*$this->objLevel($cn[$i][$j],$u->info['level'])).''); - if($upd) - { - $data = '|frompisher='.$d->info['id2']; - $e = 1; - while($e<=$t[0]) - { - $u->addItem($cn[$i][$j]['add'][0],$u->info['id'],$data); - $e++; - } - $txt .= $cn[$i][$j]['n'].' x'.($t[0]*$this->objLevel($cn[$i][$j],$u->info['level'])).' = '.$cn[$i][$j]['add'][1].' x'.$t[0].'
    '; - mysql_query('DELETE FROM `items_users` WHERE `id` = "'.$keypr['id'].'" LIMIT 1'); - }else{ - $txt .= 'Не удалось обменять предмет "'.$cn[$i][$j]['n'].'", что-то не так ...
    '; - } - $i = $cn[0]; - $j = count($cn[$i][$j]); - } - $j++; - } - $i++; - } - - if( $txt == '' ) { - $txt = 'У вас не хватило необходимых предметов...'; - } - - if($txt!='') { - $txt = '
    '.$txt.''; - } - - }elseif( $act[0] == 'GoHrumpShop' && $go1 == 1) { //отправляемся в магазин Рульфа Хрумпта (пещеры мглы) - mysql_query('UPDATE `stats` SET `x` = "6",`y` = "73" WHERE `id` = "'.$u->info['id'].'" AND `dnow` = "'.$u->info['dnow'].'" LIMIT 1'); - header('location: main.php'); - die(); - }elseif( $act[0] == 'swapItem' && $go1 == 1) { - $txt = ''; - $swapItem = $act[1]; - $swapError = $act[2]; - $swapTrue = $act[3]; - # Обмениваем предметы у Забытого (Мастерская Забытых) - if( !isset($swapActStatus) ) $swapActStatus = 1; # Все окей, проблем нет! - $swapAct = array(); # Собираем данные об обмене. - $temp = explode ("\\", $swapItem); - foreach ( $temp as $t ) { - $t = explode('=', $t); - if( $t[0] == 'tr' ) { // Нужны для обмена - $temp2 = explode(',', $t[1]); $tr_items = array(); - foreach( $temp2 as $t2 ) { - $temp3 = explode('x', $t2); - if( !isset($temp3[1]) ) $temp3[1] = 1; // Если количество не задано, задаем 1ед. - if( isset($temp3[2]) && $temp3[2]=='del' ) $temp3[2] = true; else $temp3[2]=false; // Удаляем даже при неудачной попытке совершить обмен! - $tr_items[] = array('item_id' => $temp3[0], 'colvo' => (int)$temp3[1], 'delete' => $temp3[2]); - } - $swapAct['tr'] = $tr_items; - - } elseif( $t[0] == 'needQuest' ){ // Если нужен какой-то квест для приобретения. - - } elseif( $t[0] == 'needRep' ){ // Если нужна репутация в подземельи - $temp2 = explode(',', $t[1]); $need_rep = array(); - $need_rep[] = array('city' => $temp2[0], 'rep' => (int)$temp2[1]); - - $swapAct['need_rep'] = $need_rep; - - } elseif( $t[0] == 'add' ){ // Какие предметы даем. - $temp2 = explode(',', $t[1]); $add_items = array(); - foreach($temp2 as $t2) { - $temp3 = explode('x', $t2); - if( !isset($temp3[1]) ) $temp3[1] = 1; // Если количество не задано, задаем 1ед. - $add_items[] = array('item_id' => $temp3[0], 'colvo' => (int)$temp3[1]); - } - $swapAct['add'] = $add_items; - } elseif( $t[0] == 'uses' ){ // Если нужна репутация в подземельи - $swapAct['uses'] = $t[1]; - } - } // Цикл обработки данных разговора. - unset($temp,$temp2,$temp3,$t2,$tr_items,$add_items); - - if( $swapActStatus == 0 ) { - $txt = 'Я тебя раньше здесь не видел, уходи прочь негодник!'; - $pg = $swapError; - } elseif ( isset($swapAct['need_rep']) ) { # Проверяем репутацию. - foreach($swapAct['need_rep'] as $rep) { # Если несколько репутаций - if($u->rep['rep'.$rep['city']] < $rep['rep'] ) { - $swapActStatus = 0; - $txt = 'Я тебя раньше здесь не видел, уходи прочь негодник!'; - $pg = $swapError; - } - } - } - - if( isset($swapAct['uses']) ) { # Проверяем количество раз использований. - #$swapAct['uses'] = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `room` = "'.$u->info['room'].'" AND `vals` = "masteryUses'.$u->info['dnow'].'" ORDER BY `id` DESC LIMIT '.$swapAct['uses'] .'')); - if( isset($swapAct['uses']['id']) ) { - $swapActStatus = 0; - $txt = 'Кто-то уже побывал здесь и испортил кузницу, ничего не получится...'; - $pg = 0; - } - } - - if( isset($swapAct['tr']) AND $swapActStatus == 1 ) { # Проверяем необходимые предметы. - foreach($swapAct['tr'] as $item) { # Если несколько предметов. - $item_info = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$item['item_id'].'" LIMIT 1')); - if( isset($item_info['id']) ) { - $query = mysql_query('SELECT * FROM `items_users` WHERE `item_id` = "'.$item['item_id'].'" AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inShop` = "0" AND `inOdet` = "0" LIMIT '.$item['colvo'].''); - $j=0; - while( $t = mysql_fetch_array($query) ) { - $j++; - } - if( $j < $item['colvo'] ) { - $txt .= 'У вас недостаточно предметов "'.$item_info['name'].'"! ('.$item['item_id'].')
    '; - $swapActStatus = 3; - $pg = $swapError; - } elseif( $swapActStatus != 3) { - $swapActStatus = 2; - } - } - } - } - - if( isset($swapAct['tr']) AND $swapActStatus == 3 ) { # Забираем предметы del==true. - $mess = 'Израсходованы ресурсы: '; - $qsw = 0; - foreach($swapAct['tr'] as $item) { # Если несколько предметов. - if ( $item['delete'] == true ){ - $query = mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `item_id` = "'.$item['item_id'].'" AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inShop` = "0" AND `inOdet` = "0" ORDER BY inGroup DESC LIMIT '.$item['colvo'].''); - if($query){ - $item_info = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$item['item_id'].'" LIMIT 1')); - if( $qsw > 0 ) $mess .=', '; - $mess .= '"'.$item_info['name'].'"'; - if( $item['colvo'] > 1 ) $mess .= '('.$item['item_id'].'шт)'; - $qsw++; - } - } - } - $mess .= '.
    '; - if( $qsw > 0 ) $txt .= $mess; - } elseif( isset($swapAct['tr']) AND $swapActStatus == 2 ) { # Забираем предметы все. - $mess = 'Израсходованы ресурсы: '; - $qsw = 0; - foreach($swapAct['tr'] as $item) { - $query = mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `item_id` = "'.$item['item_id'].'" AND `uid` = "'.$u->info['id'].'" AND (`delete` = "0" OR `delete` = "1000") AND `inShop` = "0" AND `inOdet` = "0" ORDER BY inGroup DESC LIMIT '.$item['colvo'].''); - if($query) { - $item_info = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$item['item_id'].'" LIMIT 1')); - if( $qsw > 0 ) $mess .=', '; - $mess .= '"'.$item_info['name'].'"'; - if( $item['colvo'] > 1 ) $mess .= '('.$item['item_id'].'шт)'; - $qsw++; - } - } - $mess .= '.
    '; - if( $qsw > 0 ) $txt .= $mess; - } - - if( isset($swapAct['add']) AND $swapActStatus == 2 ) { # Выдаем предметы. - foreach($swapAct['add'] as $item) { - $qsw = 0; - while($qsw < $item['colvo']) { - $txt .= '
    Вы получили предмет'; - $u->addItem($item['item_id'],$u->info['id']); - $qsw++; - } - } - - mysql_query('INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`,`vals`) VALUES ("'.$u->info['id'].'","'.time().'","'.$u->info['city'].'","'.$u->info['room'].'", "","'.mysql_real_escape_string($_SERVER['HTTP_X_REAL_IP']).'", "masteryUses'.$u->info['dnow'].'")'); - $pg = $swapTrue; - } - if( $txt != '' ) { - $txt = '
    '.$txt.''; - } - } - } - } - } - - if($this->info['tr_room']!=0 && $this->info['tr_room']!=$u->info['room']) - { - $go = 0; - } - - if($this->info['tr_dn']!=0) { - //требует пещеру - global $d; - if($this->info['tr_dn']!=$d->info['id2']) - { - $go = 0; - }elseif($this->info['x']!=0 || $this->info['y']!=0) - { - if($d->testLike($u->info['x'],$u->info['y'],$this->info['x'],$this->info['y'])!=1) - { - $go = 0; - } - //если бот погиб - $dbot = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_bots` WHERE `dn` = "'.$u->info['dnow'].'" AND `x` = "'.$this->info['x'].'" AND `y` = "'.$this->info['y'].'" LIMIT 1')); - if(!isset($dbot['id2'])) - { - $go = 0; - } - } - } - - if($go==1) { - //dlg_nps:=:3=7 - //квест (с наградой) - $qs_sp = mysql_query('SELECT `id`,`act_date` FROM `quests` WHERE `act_date` LIKE "%dlg_nps:=:'.$this->info['id'].'='.$pg.'=1=e%" LIMIT 1'); - while($qs_pl = mysql_fetch_array($qs_sp)) { - $q->endq($qs_pl['id'],'win'); - $gsex = explode('=e'.$this->info['id'].$pg.'=',$qs_pl['act_date']); - if($gsex[1] > 0) { - //выдаем добавочный квест - $q->startq($gsex[1]); - $txt .= '
    Задание изменилось'; - } - } - - //квест (без наградой) - $qs_sp = mysql_query('SELECT `id`,`act_date` FROM `quests` WHERE `act_date` LIKE "%dlg_nps:=:'.$this->info['id'].'='.$pg.'=0=e%" LIMIT 1'); - while($qs_pl = mysql_fetch_array($qs_sp)) { - $q->endq($qs_pl['id'],'end'); - $gsex = explode('=e'.$this->info['id'].$pg.'=',$qs_pl['act_date']); - if($gsex[1] > 0) { - //выдаем добавочный квест $gsex[1] - $q->startq($gsex[1]); - $txt .= '
    Задание изменилось'; - } - } - - $this->title = $this->info['text']; - $this->youInfo = $u->getInfoPers($u->info['id'],1); - $this->youInfo = $this->youInfo[0]; - $this->botInfo = $this->infoBot($this->info['bot_id']); - //Диалог - $qpl = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_dlg` WHERE `type` = "1" AND `qid` = "0" AND `id_dg` = "'.$this->info['id'].'" AND `page` = "'.((int)$pg).'" LIMIT 1')); - if( !isset($qpl['id']) ) { - if($txt == '' ){ - $qpl['text'] = 'Диалог не найден ...'; - } else { - $qpl['text'] = $txt.' (уйти)'; - $txt = ''; - } - } else { - $this->pg = $qpl['id']; - } - - if( $u->info['admin'] > 0 ) { - if( isset($_GET['add_new_qid']) ) { - mysql_query('INSERT INTO `dungeon_dlg` (`type`,`qid`,`id_dg`,`text`) VALUES ("0","'.$qpl['id'].'","'.$this->info['id'].'","Новый вариант ответа")'); - } - } - - //Варианты ответа - $a = ''; - $sp = mysql_query('SELECT * FROM `dungeon_dlg` WHERE `type` = "0" AND `qid` = "'.$qpl['id'].'" AND `id_dg` = "'.$this->info['id'].'" ORDER BY `sort` DESC LIMIT 25'); - while($pl = mysql_fetch_array($sp)) - { - $pl['action'] = $this->ltr($pl['action']); - $act = explode('|',$pl['action']); - if(isset($act[1])) - { - $pl['action'] = 'main.php?talk='.$this->info['id'].'&act='.$pl['id'].'&rnd='.$code; - } - $go1 = ''; - if($pl['tr'] != '') { - $i = 0; - $x = explode('|',$pl['tr']); - while($i < count($x)) { - //Требования - $k = explode('=',$x[$i]); - if($k[0]=='data') { - $date = explode('-',$k[1]); - $dd1 = $date[0]; - $mm1 = $date[1]; - $dd2 = $date[2]; - $mm2 = $date[3]; - $date1 = strtotime($dd1.'-'.$mm1.'-'.date('Y')); - $date2 = strtotime($dd2.'-'.$mm2.'-'.date('Y')); - - if( $date1 > time() || $date2 < time() ) { - $go1 = 'delete'; - $i = count($x); - } - - }elseif($k[0]=='diact') { - //Действия - //user_id # all # all # lukaqst1 # -1 - if($this->quest_act($k[1])==false) { - $go1 = 'delete'; - $i = count($x); - } - - }elseif($k[0]=='quest_end') { - //Квест можно выполнять несколько раз в текущей пещере - $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars` = "start_quest'.$k[1].'" ORDER BY `id` DESC LIMIT 1')); - if(isset($qlst['id']) && $qlst['vals'] != 'win' && $qlst['vals'] != 'end' && $qlst['vals'] != 'bad') { - //$go1 .= "Вы уже взяли данное задание\n"; - $go1 = 'delete'; - $i = count($x); - } - }elseif($k[0]=='quest_only_one') { - //Квест можно выполнять только один раз - $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars` = "start_quest'.$k[1].'" ORDER BY `id` DESC LIMIT 1')); - if(isset($qlst['id']) && ($qlst['vals'] == 'win' || $qlst['vals'] == 'bad')) { - //$go1 .= "Вы уже взяли данное задание\n"; - $go1 = 'delete'; - $i = count($x); - } - }elseif($k[0]=='quest_now') { - //Квест должен быть взят - $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars` = "start_quest'.$k[1].'" ORDER BY `id` DESC LIMIT 1')); - if(isset($qlst['id']) && $qlst['vals'] != 'win' && $qlst['vals'] != 'end' && $qlst['vals'] != 'bad'){}else{ - $go1 = 'delete'; - $i = count($x); - } - }elseif($k[0]=='tr_itm') { - //Квест требует предмет - $qlst = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "'.$k[1].'" AND `inOdet` = 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); - if($qlst[0] < $k[2]){ - $go1 = 'delete'; - $i = count($x); - } - }elseif($k[0]=='tr_itmodet') { - //Квест требует предмет - $k[1] = str_replace(',','" OR `item_id` = "',$k[1]); - $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND (`item_id` = "'.$k[1].'") AND `inOdet` > 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); - if(!isset($qlst['id'])){ - $go1 = 'delete'; - $i = count($x); - } - }elseif($k[0]=='tr_noitmodet') { - //Квест требует предмет - $k[1] = str_replace(',','" OR `item_id` = "',$k[1]); - $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND (`item_id` = "'.$k[1].'") AND `inTransfer` = 0 AND `inOdet` > 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); - if(isset($qlst['id'])){ - $go1 = 'delete'; - $i = count($x); - } - }elseif($k[0]=='tr_noitm') { - //Квест требует предмет - $k[1] = str_replace(',','" OR `item_id` = "',$k[1]); - $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND (`item_id` = "'.$k[1].'") AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); - if(isset($qlst['id'])){ - $go1 = 'delete'; - $i = count($x); - } - } - $i++; - } - } - if($u->info['admin'] > 0) { - $a .= '(ред.)   '; - } - if($go1 == '') { - $a .= '• '.$pl['text'].'
    '; - }elseif($go1 == 'delete') { - if( $u->info['admin'] > 0 ) { - $a .= '• '.$pl['text'].'
    '; - } - }else{ - $a .= ''.$pl['text'].' [?]
    '; - } - } - - - if($u->info['admin'] > 0) { - $a .= 'Добавить вариант ответа'; - } - - $this->dText = $qpl['text'].'
    '.$txt; - $this->aText = $a; - }else{ - $this->aText = '
    Диалог не доступен, вернуться назад
    '; - } - }else{ - $this->aText = '
    Диалог не найден, вернуться назад
    '.((int)$id).'
    '; - } - } - - public function dialog_act_update($data) { - global $u; - $r = array(false,''); - $x = explode('#',$data); - $i = 0; - while( $i < count($x) ) { - $k = explode('=',$x[$i]); - $var = $k[0]; - $val = $k[1]; - if( $var == 'take_item' ) { - //Забираем предмет - $itms = array(); - $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "'.mysql_real_escape_string($val).'" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 100'); - while($pl = mysql_fetch_array($sp)) { - $itms[$pl['item_id']]++; - } - - if($itms[$val] >= $k[2]) { - //$u->deleteItemID($val,$u->info['id'],$k[2]); - - mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `item_id` = "'.mysql_real_escape_string($val).'" AND `uid` = "'.$u->info['id'].'" AND `inShop` = 0 AND `inTransfer` = 0 AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = 0 LIMIT '.round($k[2])); - }else{ - $i = count($x); - $r[0] = false; - $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$val.'" LIMIT 1')); - $r[1] = 'У вас нет нужного предмета! Требуется "'.$itm['name'].'"'; - if( $k[2] > 1 ) { - $r[1] .= ' ('.$k[2].' шт.)'; - } - } - // - }elseif( $var == 'add_item' ) { - $data_itm = '|frompisher=1'; - $i1 = 0; - while( $i1 < $k[2] ) { - if( $val == 4797 ) { - //Повестка - if( $u->info['level'] >= 4 && $u->info['level'] <= 7 ) { - $val = 4797; - }elseif( $u->info['level'] >= 8 && $u->info['level'] <= 9 ) { - $val = 4798; - }else{ - $val = 4799; - } - } - $u->addItem($val,$u->info['id'],$data_itm); - $i1++; - } - }elseif( $var == 'up' ) { - $tqst = mysql_fetch_array(mysql_query('SELECT * FROM `dialog_act` WHERE `uid` = "'.$u->info['id'].'" AND `var` = "'.mysql_real_escape_string($val).'" ORDER BY `id` DESC LIMIT 1')); - if(!isset($tqst['id'])) { - mysql_query('INSERT INTO `dialog_act` ( - `uid`,`city`,`time`,`var`,`val` - ) VALUES ( - "'.$u->info['id'].'","'.$u->info['city'].'","'.time().'","'.mysql_real_escape_string($val).'","'.mysql_real_escape_string($k[2]).'" - )'); - }else{ - mysql_query('UPDATE `dialog_act` SET `val` = "'.mysql_real_escape_string($k[2]).'" WHERE `uid` = "'.$u->info['id'].'" AND `var` = "'.mysql_real_escape_string($val).'" ORDER BY `id` DESC LIMIT 1'); - } - }elseif( $var == 'finish' ) { - $r[0] = true; - $r[1] = $val; - } - $i++; - } - return $r; - } - - public function quest_act($data) { - global $u; - // - $r = true; - // - $f = explode('#',$data); - $ql = mysql_fetch_array(mysql_query('SELECT * FROM `dialog_act` WHERE `var` = "'.mysql_real_escape_string($f[3]).'" AND `uid` = "'.$u->info['id'].'" ORDER BY `id` DESC LIMIT 1')); - if(isset($ql['id'])) { - //user_id # all # all # lukaqst1 # -1 - if( $f[0] == 'user_id' ) { - $f[0] = $u->info['id']; - } - // - if( $f[0] != $ql['uid'] && $f[0] != 'all' ) { - $r = false; - }elseif( $f[1] != $ql['city'] && $f[1] != 'all' ) { - $r = false; - }elseif( $f[2] != $ql['time'] && $f[2] != 'all' ) { - $r = false; - }elseif( $f[3] != $ql['var'] && $f[3] != 'all' ) { - $r = false; - }elseif( $f[4] == -1 ) { - //Не должен взять задание - $r = false; - }elseif( $f[4] != $ql['val'] ) { - $r = false; - }elseif( $f[5] == 1 && $ql['now'] < $ql['max'] ) { - $r = false; - } - }else{ - if( $f[4] != -1 ) { - $r = false; - } - } - // - return $r; - } - - public function ltr($v) - { - - return $v; - } - - public function infoBot($id) - { - global $c,$code; - $r = ''; - $bot = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `id` = "'.((int)$id).'" LIMIT 1')); - if(isset($bot['id'])) - { - //Характеристики от предметов и их изображение - $witm = array(); - $witm[1] = ''; - $witm[2] = ''; - $witm[3] = ''; - $witm[4] = ''; - $witm[7] = ''; - $witm[8] = ''; - $witm[9] = ''; - $witm[10] = ''; - $witm[11] = ''; - $witm[12] = ''; - $witm[13] = ''; - $witm[14] = ''; - $witm[16] = ''; - $witm[17] = ''; - //40-52 слот под магию - $witm[53] = ''; - $witm[54] = ''; - $witm[55] = ''; - $witm[56] = ''; - $witm[57] = ''; - $witm[58] = ''; - - $pb = ''; - $hpmp = '?? '; - $eff = ''; - $anml = ''; - $oi = ''; - $msl = ''; - $witmg = ''; - - if( $bot['level'] < 0 ) { - $bot['level'] = '??'; - } - - $r = '
    '.$bot['login'].' ['.$bot['level'].']
    -
    -
    '.$pb.'
    - - - - - - -
    - - - - - - - - - - - - - - - - -
    '.$witm[1].'
    '.$witm[2].'
    '.$witm[3].'
    '.$witm[4].'
    '.$witm[7].'
    -
    - - - - - - - - - - -
    - - '.$hpmp.' - -
    -
    - -
    -
    '.$eff.'
    '.$anml.' -
    -
    '.$msl.'
    -
    - - - - - - - - - - - - - - - - - - - - - - -
    '.$witm[8].'
    '.$witm[9].'
    - - - - - -
    '.$witm[10].''.$witm[11].''.$witm[12].'
    '.$witm[13].'
    '.$witm[14].'
    '.$witm[16].'
    '.$witm[17].'
    -
    '.$witmg.' -
    '; - }else{ - $r = 'No information'; - } - return $r; - } -} - -$dialog = new dialog; -?> \ No newline at end of file diff --git a/_incl_data/class/magic/Elemental/Fire.php b/_incl_data/class/magic/Elemental/Fire.php index 8483dd29..179e79b0 100644 --- a/_incl_data/class/magic/Elemental/Fire.php +++ b/_incl_data/class/magic/Elemental/Fire.php @@ -2,7 +2,7 @@ namespace Magic\Elemental; -use battleClass; +use Battle; use Insallah\Math; class Fire @@ -11,7 +11,7 @@ class Fire private $color = '#a00'; private $colorCrit = '#f00'; private $colorMiss = '#909090'; - public function __construct(battleClass $btl) + public function __construct(Battle $btl) { $this->btl = $btl; } diff --git a/_incl_data/class/magic/__magic.php b/_incl_data/class/magic/__magic.php index f3c02f4c..8088eb26 100644 --- a/_incl_data/class/magic/__magic.php +++ b/_incl_data/class/magic/__magic.php @@ -4,7 +4,7 @@ if(!defined('GAME')) die(); } -class Magic +class Magic2 { public $youuse = 0; diff --git a/_incl_data/class/mobile.php b/_incl_data/class/mobile.php deleted file mode 100644 index 6492a04c..00000000 --- a/_incl_data/class/mobile.php +++ /dev/null @@ -1,1231 +0,0 @@ -, Nick Ilyin - * Original author: Victor Stanciu - * - * @license Code and contributions have 'MIT License' - * More details: https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt - * - * @link Homepage: http://mobiledetect.net - * GitHub Repo: https://github.com/serbanghita/Mobile-Detect - * Google Code: http://code.google.com/p/php-mobile-detect/ - * README: https://github.com/serbanghita/Mobile-Detect/blob/master/README.md - * HOWTO: https://github.com/serbanghita/Mobile-Detect/wiki/Code-examples - * - * @version 2.8.2 - */ - -class Mobile_Detect -{ - /** - * Mobile detection type. - * - * @deprecated since version 2.6.9 - */ - const DETECTION_TYPE_MOBILE = 'mobile'; - - /** - * Extended detection type. - * - * @deprecated since version 2.6.9 - */ - const DETECTION_TYPE_EXTENDED = 'extended'; - - /** - * A frequently used regular expression to extract version #s. - * - * @deprecated since version 2.6.9 - */ - const VER = '([\w._\+]+)'; - - /** - * Top-level device. - */ - const MOBILE_GRADE_A = 'A'; - - /** - * Mid-level device. - */ - const MOBILE_GRADE_B = 'B'; - - /** - * Low-level device. - */ - const MOBILE_GRADE_C = 'C'; - - /** - * Stores the version number of the current release. - */ - const VERSION = '2.8.2'; - - /** - * A type for the version() method indicating a string return value. - */ - const VERSION_TYPE_STRING = 'text'; - - /** - * A type for the version() method indicating a float return value. - */ - const VERSION_TYPE_FLOAT = 'float'; - - /** - * The User-Agent HTTP header is stored in here. - * @var string - */ - protected $userAgent = null; - - /** - * HTTP headers in the PHP-flavor. So HTTP_USER_AGENT and SERVER_SOFTWARE. - * @var array - */ - protected $httpHeaders = array(); - - /** - * The detection type, using self::DETECTION_TYPE_MOBILE or self::DETECTION_TYPE_EXTENDED. - * - * @deprecated since version 2.6.9 - * - * @var string - */ - protected $detectionType = self::DETECTION_TYPE_MOBILE; - - /** - * HTTP headers that trigger the 'isMobile' detection - * to be true. - * - * @var array - */ - protected static $mobileHeaders = array( - - 'HTTP_ACCEPT' => array('matches' => array( - // Opera Mini; @reference: http://dev.opera.com/articles/view/opera-binary-markup-language/ - 'application/x-obml2d', - // BlackBerry devices. - 'application/vnd.rim.html', - 'text/vnd.wap.wml', - 'application/vnd.wap.xhtml+xml' - )), - 'HTTP_X_WAP_PROFILE' => null, - 'HTTP_X_WAP_CLIENTID' => null, - 'HTTP_WAP_CONNECTION' => null, - 'HTTP_PROFILE' => null, - // Reported by Opera on Nokia devices (eg. C3). - 'HTTP_X_OPERAMINI_PHONE_UA' => null, - 'HTTP_X_NOKIA_GATEWAY_ID' => null, - 'HTTP_X_ORANGE_ID' => null, - 'HTTP_X_VODAFONE_3GPDPCONTEXT' => null, - 'HTTP_X_HUAWEI_USERID' => null, - // Reported by Windows Smartphones. - 'HTTP_UA_OS' => null, - // Reported by Verizon, Vodafone proxy system. - 'HTTP_X_MOBILE_GATEWAY' => null, - // Seend this on HTC Sensation. @ref: SensationXE_Beats_Z715e. - 'HTTP_X_ATT_DEVICEID' => null, - // Seen this on a HTC. - 'HTTP_UA_CPU' => array('matches' => array('ARM')), - ); - - /** - * List of mobile devices (phones). - * - * @var array - */ - protected static $phoneDevices = array( - 'iPhone' => '\biPhone.*Mobile|\biPod', // |\biTunes - 'BlackBerry' => 'BlackBerry|\bBB10\b|rim[0-9]+', - 'HTC' => 'HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\bEVO\b|T-Mobile G1|Z520m', - 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile', - // @todo: Is 'Dell Streak' a tablet or a phone? ;) - 'Dell' => 'Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\b001DL\b|\b101DL\b|\bGS01\b', - 'Motorola' => 'Motorola|DROIDX|DROID BIONIC|\bDroid\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925', - 'Samsung' => 'Samsung|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E', - 'LG' => '\bLG\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802)', - 'Sony' => 'SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i', - 'Asus' => 'Asus.*Galaxy|PadFone.*Mobile', - // @ref: http://www.micromaxinfo.com/mobiles/smartphones - // Added because the codes might conflict with Acer Tablets. - 'Micromax' => 'Micromax.*\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\b', - 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ; @todo - complete the regex. - 'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature', // Just for fun ;) - // @ref: http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA (PANTECH) - // Most of the VEGA devices are legacy. PANTECH seem to be newer devices based on Android. - 'Pantech' => 'PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790', - // @ref: http://www.fly-phone.com/devices/smartphones/ ; Included only smartphones. - 'Fly' => 'IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250', - 'iMobile' => 'i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)', - // Added simvalley mobile just for fun. They have some interesting devices. - // @ref: http://www.simvalley.fr/telephonie---gps-_22_telephonie-mobile_telephones_.html - 'SimValley' => '\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\b', - // @Tapatalk is a mobile app; @ref: http://support.tapatalk.com/threads/smf-2-0-2-os-and-browser-detection-plugin-and-tapatalk.15565/#post-79039 - 'GenericPhone' => 'Tapatalk|PDA;|SAGEM|\bmmp\b|pocket|\bpsp\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\bwap\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser' - ); - - /** - * List of tablet devices. - * - * @var array - */ - protected static $tabletDevices = array( - 'iPad' => 'iPad|iPad.*Mobile', // @todo: check for mobile friendly emails topic. - 'NexusTablet' => 'Android.*Nexus[\s]+(7|10)|^.*Android.*Nexus(?:(?!Mobile).)*$', - 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-I9205|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705C|SM-T535|SM-T331', // SCH-P709|SCH-P729|SM-T2558 - Samsung Mega - treat them like a regular phone. - // @reference: http://www.labnol.org/software/kindle-user-agent-string/20378/ - 'Kindle' => 'Kindle|Silk.*Accelerated|Android.*\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE)\b', - // Only the Surface tablets with Windows RT are considered mobile. - // @ref: http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx - 'SurfaceTablet' => 'Windows NT [0-9.]+; ARM;', - // @ref: http://shopping1.hp.com/is-bin/INTERSHOP.enfinity/WFS/WW-USSMBPublicStore-Site/en_US/-/USD/ViewStandardCatalog-Browse?CatalogCategoryID=JfIQ7EN5lqMAAAEyDcJUDwMT - 'HPTablet' => 'HP Slate 7|HP ElitePad 900|hp-tablet|EliteBook.*Touch', - // @note: watch out for PadFone, see #132 - 'AsusTablet' => '^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\bK00F\b|TX201LA', - 'BlackBerryTablet' => 'PlayBook|RIM Tablet', - 'HTCtablet' => 'HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200', - 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617', - 'NookTablet' => 'Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2', - // @ref: http://www.acer.ro/ac/ro/RO/content/drivers - // @ref: http://www.packardbell.co.uk/pb/en/GB/content/download (Packard Bell is part of Acer) - // @ref: http://us.acer.com/ac/en/US/content/group/tablets - // @note: Can conflict with Micromax and Motorola phones codes. - 'AcerTablet' => 'Android.*; \b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810)\b|W3-810|\bA3-A10\b', - // @ref: http://eu.computers.toshiba-europe.com/innovation/family/Tablets/1098744/banner_id/tablet_footerlink/ - // @ref: http://us.toshiba.com/tablets/tablet-finder - // @ref: http://www.toshiba.co.jp/regza/tablet/ - 'ToshibaTablet' => 'Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO', - // @ref: http://www.nttdocomo.co.jp/english/service/developer/smart_phone/technical_info/spec/index.html - 'LGTablet' => '\bL-06C|LG-V900|LG-V500|LG-V909\b', - 'FujitsuTablet' => 'Android.*\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\b', - // Prestigio Tablets http://www.prestigio.com/support - 'PrestigioTablet' => 'PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD', - // @ref: http://support.lenovo.com/en_GB/downloads/default.page?# - 'LenovoTablet' => 'IdeaTab|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A1000|A2107|A2109|A1107|B6000|B8000|B8080-F)', - // @ref: http://www.yarvik.com/en/matrix/tablets/ - 'YarvikTablet' => 'Android.*\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\b', - 'MedionTablet' => 'Android.*\bOYO\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB', - 'ArnovaTablet' => 'AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT', - // http://www.intenso.de/kategorie_en.php?kategorie=33 - // @todo: http://www.nbhkdz.com/read/b8e64202f92a2df129126bff.html - investigate - 'IntensoTablet' => 'INM8002KP|INM1010FP|INM805ND|Intenso Tab', - // IRU.ru Tablets http://www.iru.ru/catalog/soho/planetable/ - 'IRUTablet' => 'M702pro', - 'MegafonTablet' => 'MegaFon V9|\bZTE V9\b|Android.*\bMT7A\b', - // @ref: http://www.e-boda.ro/tablete-pc.html - 'EbodaTablet' => 'E-Boda (Supreme|Impresspeed|Izzycomm|Essential)', - // @ref: http://www.allview.ro/produse/droseries/lista-tablete-pc/ - 'AllViewTablet' => 'Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)', - // @reference: http://wiki.archosfans.com/index.php?title=Main_Page - 'ArchosTablet' => '\b(101G9|80G9|A101IT)\b|Qilive 97R|ARCHOS 101G10', - // @ref: http://www.ainol.com/plugin.php?identifier=ainol&module=product - 'AinolTablet' => 'NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark', - // @todo: inspect http://esupport.sony.com/US/p/select-system.pl?DIRECTOR=DRIVER - // @ref: Readers http://www.atsuhiro-me.net/ebook/sony-reader/sony-reader-web-browser - // @ref: http://www.sony.jp/support/tablet/ - 'SonyTablet' => 'Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551', - // @ref: db + http://www.cube-tablet.com/buy-products.html - 'CubeTablet' => 'Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT', - // @ref: http://www.cobyusa.com/?p=pcat&pcat_id=3001 - 'CobyTablet' => 'MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010', - // @ref: http://www.match.net.cn/products.asp - 'MIDTablet' => 'M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733', - // @ref: http://pdadb.net/index.php?m=pdalist&list=SMiT (NoName Chinese Tablets) - // @ref: http://www.imp3.net/14/show.php?itemid=20454 - 'SMiTTablet' => 'Android.*(\bMID\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)', - // @ref: http://www.rock-chips.com/index.php?do=prod&pid=2 - 'RockChipTablet' => 'Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A', - // @ref: http://www.fly-phone.com/devices/tablets/ ; http://www.fly-phone.com/service/ - 'FlyTablet' => 'IQ310|Fly Vision', - // @ref: http://www.bqreaders.com/gb/tablets-prices-sale.html - 'bqTablet' => 'bq.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant)|Maxwell.*Lite|Maxwell.*Plus', - // @ref: http://www.huaweidevice.com/worldwide/productFamily.do?method=index&directoryId=5011&treeId=3290 - // @ref: http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index&directoryId=3372&treeId=0&tb=1&type=software (including legacy tablets) - 'HuaweiTablet' => 'MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim', - // Nec or Medias Tab - 'NecTablet' => '\bN-06D|\bN-08D', - // Pantech Tablets: http://www.pantechusa.com/phones/ - 'PantechTablet' => 'Pantech.*P4100', - // Broncho Tablets: http://www.broncho.cn/ (hard to find) - 'BronchoTablet' => 'Broncho.*(N701|N708|N802|a710)', - // @ref: http://versusuk.com/support.html - 'VersusTablet' => 'TOUCHPAD.*[78910]|\bTOUCHTAB\b', - // @ref: http://www.zync.in/index.php/our-products/tablet-phablets - 'ZyncTablet' => 'z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900', - // @ref: http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/ - 'PositivoTablet' => 'TB07STA|TB10STA|TB07FTA|TB10FTA', - // @ref: https://www.nabitablet.com/ - 'NabiTablet' => 'Android.*\bNabi', - 'KoboTablet' => 'Kobo Touch|\bK080\b|\bVox\b Build|\bArc\b Build', - // French Danew Tablets http://www.danew.com/produits-tablette.php - 'DanewTablet' => 'DSlide.*\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\b', - // Texet Tablets and Readers http://www.texet.ru/tablet/ - 'TexetTablet' => 'NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE', - // @note: Avoid detecting 'PLAYSTATION 3' as mobile. - 'PlaystationTablet' => 'Playstation.*(Portable|Vita)', - // @ref: http://www.trekstor.de/surftabs.html - 'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2', - // @ref: http://www.pyleaudio.com/Products.aspx?%2fproducts%2fPersonal-Electronics%2fTablets - 'PyleAudioTablet' => '\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\b', - // @ref: http://www.advandigital.com/index.php?link=content-product&jns=JP001 - // @Note: because of the short codenames we have to include whitespaces to reduce the possible conflicts. - 'AdvanTablet' => 'Android.* \b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\b ', - // @ref: http://www.danytech.com/category/tablet-pc - 'DanyTechTablet' => 'Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1', - // @ref: http://www.galapad.net/product.html - 'GalapadTablet' => 'Android.*\bG1\b', - // @ref: http://www.micromaxinfo.com/tablet/funbook - 'MicromaxTablet' => 'Funbook|Micromax.*\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\b', - // http://www.karbonnmobiles.com/products_tablet.php - 'KarbonnTablet' => 'Android.*\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\b', - // @ref: http://www.myallfine.com/Products.asp - 'AllFineTablet' => 'Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide', - // @ref: http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr= - 'PROSCANTablet' => '\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\b', - // @ref: http://www.yonesnav.com/products/products.php - 'YONESTablet' => 'BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026', - // @ref: http://www.cjshowroom.com/eproducts.aspx?classcode=004001001 - // China manufacturer makes tablets for different small brands (eg. http://www.zeepad.net/index.html) - 'ChangJiaTablet' => 'TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503', - // @ref: http://www.gloryunion.cn/products.asp - // @ref: http://www.allwinnertech.com/en/apply/mobile.html - // @ref: http://www.ptcl.com.pk/pd_content.php?pd_id=284 (EVOTAB) - // @todo: Softwiner tablets? - // aka. Cute or Cool tablets. Not sure yet, must research to avoid collisions. - 'GUTablet' => 'TX-A1301|TX-M9002|Q702|kf026', // A12R|D75A|D77|D79|R83|A95|A106C|R15|A75|A76|D71|D72|R71|R73|R77|D82|R85|D92|A97|D92|R91|A10F|A77F|W71F|A78F|W78F|W81F|A97F|W91F|W97F|R16G|C72|C73E|K72|K73|R96G - // @ref: http://www.pointofview-online.com/showroom.php?shop_mode=product_listing&category_id=118 - 'PointOfViewTablet' => 'TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10', - // @ref: http://www.overmax.pl/pl/katalog-produktow,p8/tablety,c14/ - // @todo: add more tests. - 'OvermaxTablet' => 'OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)', - // @ref: http://hclmetablet.com/India/index.php - 'HCLTablet' => 'HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync', - // @ref: http://www.edigital.hu/Tablet_es_e-book_olvaso/Tablet-c18385.html - 'DPSTablet' => 'DPS Dream 9|DPS Dual 7', - // @ref: http://www.visture.com/index.asp - 'VistureTablet' => 'V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10', - // @ref: http://www.mijncresta.nl/tablet - 'CrestaTablet' => 'CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989', - // MediaTek - http://www.mediatek.com/_en/01_products/02_proSys.php?cata_sn=1&cata1_sn=1&cata2_sn=309 - 'MediatekTablet' => '\bMT8125|MT8389|MT8135|MT8377\b', - // Concorde tab - 'ConcordeTablet' => 'Concorde([ ]+)?Tab|ConCorde ReadMan', - // GoClever Tablets - http://www.goclever.com/uk/products,c1/tablet,c5/ - 'GoCleverTablet' => 'GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042', - // Modecom Tablets - http://www.modecom.eu/tablets/portal/ - 'ModecomTablet' => 'FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003', - // Vonino Tablets - http://www.vonino.eu/tablets - 'VoninoTablet' => '\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\bQ8\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\b', - // ECS Tablets - http://www.ecs.com.tw/ECSWebSite/Product/Product_Tablet_List.aspx?CategoryID=14&MenuID=107&childid=M_107&LanID=0 - 'ECSTablet' => 'V07OT2|TM105A|S10OT1|TR10CS1', - // Storex Tablets - http://storex.fr/espace_client/support.html - // @note: no need to add all the tablet codes since they are guided by the first regex. - 'StorexTablet' => 'eZee[_\']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab', - // Generic Vodafone tablets. - 'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10', - // French tablets - Essentiel B http://www.boulanger.fr/tablette_tactile_e-book/tablette_tactile_essentiel_b/cl_68908.htm?multiChoiceToDelete=brand&mc_brand=essentielb - // Aka: http://www.essentielb.fr/ - 'EssentielBTablet' => 'Smart[ \']?TAB[ ]+?[0-9]+|Family[ \']?TAB2', - // Ross & Moor - http://ross-moor.ru/ - 'RossMoorTablet' => 'RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711', - // i-mobile http://product.i-mobilephone.com/Mobile_Device - 'iMobileTablet' => 'i-mobile i-note', - // @ref: http://www.tolino.de/de/vergleichen/ - 'TolinoTablet' => 'tolino tab [0-9.]+|tolino shine', - // AudioSonic - a Kmart brand - // http://www.kmart.com.au/webapp/wcs/stores/servlet/Search?langId=-1&storeId=10701&catalogId=10001&categoryId=193001&pageSize=72¤tPage=1&searchCategory=193001%2b4294965664&sortBy=p_MaxPrice%7c1 - 'AudioSonicTablet' => '\bC-22Q|T7-QC|T-17B|T-17P\b', - // AMPE Tablets - http://www.ampe.com.my/product-category/tablets/ - // @todo: add them gradually to avoid conflicts. - 'AMPETablet' => 'Android.* A78 ', - // Skk Mobile - http://skkmobile.com.ph/product_tablets.php - 'SkkTablet' => 'Android.* (SKYPAD|PHOENIX|CYCLOPS)', - // Tecno Mobile (only tablet) - http://www.tecno-mobile.com/index.php/product?filterby=smart&list_order=all&page=1 - 'TecnoTablet' => 'TECNO P9', - // JXD (consoles & tablets) - http://jxd.hk/products.asp?selectclassid=009008&clsid=3 - 'JXDTablet' => 'Android.*\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\b', - // i-Joy tablets - http://www.i-joy.es/en/cat/products/tablets/ - 'iJoyTablet' => 'Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)', - // @ref: http://www.tesco.com/direct/hudl/ - 'Hudl' => 'Hudl HT7S3', - // @ref: http://www.telstra.com.au/home-phone/thub-2/ - 'TelstraTablet' => 'T-Hub2', - 'GenericTablet' => 'Android.*\b97D\b|Tablet(?!.*PC)|ViewPad7|BNTV250A|MID-WCDMA|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b|rk30sdk|\bEVOTAB\b|M758A|ET904|ALUMIUM10|Smartfren Tab', - ); - - /** - * List of mobile Operating Systems. - * - * @var array - */ - protected static $operatingSystems = array( - 'AndroidOS' => 'Android', - 'BlackBerryOS' => 'blackberry|\bBB10\b|rim tablet os', - 'PalmOS' => 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino', - 'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b', - // @reference: http://en.wikipedia.org/wiki/Windows_Mobile - 'WindowsMobileOS' => 'Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;', - // @reference: http://en.wikipedia.org/wiki/Windows_Phone - // http://wifeng.cn/?r=blog&a=view&id=106 - // http://nicksnettravels.builttoroam.com/post/2011/01/10/Bogus-Windows-Phone-7-User-Agent-String.aspx - 'WindowsPhoneOS' => 'Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7', - 'iOS' => '\biPhone.*Mobile|\biPod|\biPad', - // http://en.wikipedia.org/wiki/MeeGo - // @todo: research MeeGo in UAs - 'MeeGoOS' => 'MeeGo', - // http://en.wikipedia.org/wiki/Maemo - // @todo: research Maemo in UAs - 'MaemoOS' => 'Maemo', - 'JavaOS' => 'J2ME/|\bMIDP\b|\bCLDC\b', // '|Java/' produces bug #135 - 'webOS' => 'webOS|hpwOS', - 'badaOS' => '\bBada\b', - 'BREWOS' => 'BREW', - ); - - /** - * List of mobile User Agents. - * - * @var array - */ - protected static $browsers = array( - // @reference: https://developers.google.com/chrome/mobile/docs/user-agent - 'Chrome' => '\bCrMo\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?', - 'Dolfin' => '\bDolfin\b', - 'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+|Coast/[0-9.]+', - 'Skyfire' => 'Skyfire', - 'IE' => 'IEMobile|MSIEMobile', // |Trident/[.0-9]+ - 'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile', - 'Bolt' => 'bolt', - 'TeaShark' => 'teashark', - 'Blazer' => 'Blazer', - // @reference: http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3 - 'Safari' => 'Version.*Mobile.*Safari|Safari.*Mobile', - // @ref: http://en.wikipedia.org/wiki/Midori_(web_browser) - //'Midori' => 'midori', - 'Tizen' => 'Tizen', - 'UCBrowser' => 'UC.*Browser|UCWEB', - // @ref: https://github.com/serbanghita/Mobile-Detect/issues/7 - 'DiigoBrowser' => 'DiigoBrowser', - // http://www.puffinbrowser.com/index.php - 'Puffin' => 'Puffin', - // @ref: http://mercury-browser.com/index.html - 'Mercury' => '\bMercury\b', - // @reference: http://en.wikipedia.org/wiki/Minimo - // http://en.wikipedia.org/wiki/Vision_Mobile_Browser - 'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger' - ); - - /** - * Utilities. - * - * @var array - */ - protected static $utilities = array( - // Experimental. When a mobile device wants to switch to 'Desktop Mode'. - // @ref: http://scottcate.com/technology/windows-phone-8-ie10-desktop-or-mobile/ - // @ref: https://github.com/serbanghita/Mobile-Detect/issues/57#issuecomment-15024011 - 'DesktopMode' => 'WPDesktop', - 'TV' => 'SonyDTV|HbbTV', // experimental - 'WebKit' => '(webkit)[ /]([\w.]+)', - 'Bot' => 'Googlebot|DoCoMo|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|facebookexternalhit', - 'MobileBot' => 'Googlebot-Mobile|DoCoMo|YahooSeeker/M1A1-R2D2', - // @todo: Include JXD consoles. - 'Console' => '\b(Nintendo|Nintendo WiiU|PLAYSTATION|Xbox)\b', - 'Watch' => 'SM-V700', - ); - - /** - * All possible HTTP headers that represent the - * User-Agent string. - * - * @var array - */ - protected static $uaHttpHeaders = array( - // The default User-Agent string. - 'HTTP_USER_AGENT', - // Header can occur on devices using Opera Mini. - 'HTTP_X_OPERAMINI_PHONE_UA', - // Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/ - 'HTTP_X_DEVICE_USER_AGENT', - 'HTTP_X_ORIGINAL_USER_AGENT', - 'HTTP_X_SKYFIRE_PHONE', - 'HTTP_X_BOLT_PHONE_UA', - 'HTTP_DEVICE_STOCK_UA', - 'HTTP_X_UCBROWSER_DEVICE_UA' - ); - - /** - * The individual segments that could exist in a User-Agent string. VER refers to the regular - * expression defined in the constant self::VER. - * - * @var array - */ - protected static $properties = array( - - // Build - 'Mobile' => 'Mobile/[VER]', - 'Build' => 'Build/[VER]', - 'Version' => 'Version/[VER]', - 'VendorID' => 'VendorID/[VER]', - - // Devices - 'iPad' => 'iPad.*CPU[a-z ]+[VER]', - 'iPhone' => 'iPhone.*CPU[a-z ]+[VER]', - 'iPod' => 'iPod.*CPU[a-z ]+[VER]', - //'BlackBerry' => array('BlackBerry[VER]', 'BlackBerry [VER];'), - 'Kindle' => 'Kindle/[VER]', - - // Browser - 'Chrome' => array('Chrome/[VER]', 'CriOS/[VER]', 'CrMo/[VER]'), - 'Coast' => array('Coast/[VER]'), - 'Dolfin' => 'Dolfin/[VER]', - // @reference: https://developer.mozilla.org/en-US/docs/User_Agent_Strings_Reference - 'Firefox' => 'Firefox/[VER]', - 'Fennec' => 'Fennec/[VER]', - // @reference: http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx - 'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];'), - // http://en.wikipedia.org/wiki/NetFront - 'NetFront' => 'NetFront/[VER]', - 'NokiaBrowser' => 'NokiaBrowser/[VER]', - 'Opera' => array( ' OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]' ), - 'Opera Mini' => 'Opera Mini/[VER]', - 'Opera Mobi' => 'Version/[VER]', - 'UC Browser' => 'UC Browser[VER]', - 'MQQBrowser' => 'MQQBrowser/[VER]', - 'MicroMessenger' => 'MicroMessenger/[VER]', - // @note: Safari 7534.48.3 is actually Version 5.1. - // @note: On BlackBerry the Version is overwriten by the OS. - 'Safari' => array( 'Version/[VER]', 'Safari/[VER]' ), - 'Skyfire' => 'Skyfire/[VER]', - 'Tizen' => 'Tizen/[VER]', - 'Webkit' => 'webkit[ /][VER]', - - // Engine - 'Gecko' => 'Gecko/[VER]', - 'Trident' => 'Trident/[VER]', - 'Presto' => 'Presto/[VER]', - - // OS - 'iOS' => ' \bOS\b [VER] ', - 'Android' => 'Android [VER]', - 'BlackBerry' => array('BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'), - 'BREW' => 'BREW [VER]', - 'Java' => 'Java/[VER]', - // @reference: http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/08/29/introducing-the-ie9-on-windows-phone-mango-user-agent-string.aspx - // @reference: http://en.wikipedia.org/wiki/Windows_NT#Releases - 'Windows Phone OS' => array( 'Windows Phone OS [VER]', 'Windows Phone [VER]'), - 'Windows Phone' => 'Windows Phone [VER]', - 'Windows CE' => 'Windows CE/[VER]', - // http://social.msdn.microsoft.com/Forums/en-US/windowsdeveloperpreviewgeneral/thread/6be392da-4d2f-41b4-8354-8dcee20c85cd - 'Windows NT' => 'Windows NT [VER]', - 'Symbian' => array('SymbianOS/[VER]', 'Symbian/[VER]'), - 'webOS' => array('webOS/[VER]', 'hpwOS/[VER];'), - ); - - /** - * Construct an instance of this class. - * - * @param array $headers Specify the headers as injection. Should be PHP _SERVER flavored. - * If left empty, will use the global _SERVER['HTTP_*'] vars instead. - * @param string $userAgent Inject the User-Agent header. If null, will use HTTP_USER_AGENT - * from the $headers array instead. - */ - public function __construct( - array $headers = null, - $userAgent = null - ){ - $this->setHttpHeaders($headers); - $this->setUserAgent($userAgent); - } - - /** - * Get the current script version. - * This is useful for the demo.php file, - * so people can check on what version they are testing - * for mobile devices. - * - * @return string The version number in semantic version format. - */ - public static function getScriptVersion() - { - return self::VERSION; - } - - /** - * Set the HTTP Headers. Must be PHP-flavored. This method will reset existing headers. - * - * @param array $httpHeaders The headers to set. If null, then using PHP's _SERVER to extract - * the headers. The default null is left for backwards compatibilty. - */ - public function setHttpHeaders($httpHeaders = null) - { - //use global _SERVER if $httpHeaders aren't defined - if (!is_array($httpHeaders) || !count($httpHeaders)) { - $httpHeaders = $_SERVER; - } - - //clear existing headers - $this->httpHeaders = array(); - - //Only save HTTP headers. In PHP land, that means only _SERVER vars that - //start with HTTP_. - foreach ($httpHeaders as $key => $value) { - if (substr($key,0,5) == 'HTTP_') { - $this->httpHeaders[$key] = $value; - } - } - } - - /** - * Retrieves the HTTP headers. - * - * @return array - */ - public function getHttpHeaders() - { - return $this->httpHeaders; - } - - /** - * Retrieves a particular header. If it doesn't exist, no exception/error is caused. - * Simply null is returned. - * - * @param string $header The name of the header to retrieve. Can be HTTP compliant such as - * "User-Agent" or "X-Device-User-Agent" or can be php-esque with the - * all-caps, HTTP_ prefixed, underscore seperated awesomeness. - * - * @return string|null The value of the header. - */ - public function getHttpHeader($header) - { - //are we using PHP-flavored headers? - if (strpos($header, '_') === false) { - $header = str_replace('-', '_', $header); - $header = strtoupper($header); - } - - //test the alternate, too - $altHeader = 'HTTP_' . $header; - - //Test both the regular and the HTTP_ prefix - if (isset($this->httpHeaders[$header])) { - return $this->httpHeaders[$header]; - } elseif (isset($this->httpHeaders[$altHeader])) { - return $this->httpHeaders[$altHeader]; - } - } - - public function getMobileHeaders() - { - return self::$mobileHeaders; - } - - /** - * Get all possible HTTP headers that - * can contain the User-Agent string. - * - * @return array List of HTTP headers. - */ - public function getUaHttpHeaders() - { - return self::$uaHttpHeaders; - } - - /** - * Set the User-Agent to be used. - * - * @param string $userAgent The user agent string to set. - */ - public function setUserAgent($userAgent = null) - { - if (!empty($userAgent)) { - return $this->userAgent = $userAgent; - } else { - - $this->userAgent = null; - - foreach($this->getUaHttpHeaders() as $altHeader){ - if(!empty($this->httpHeaders[$altHeader])){ // @todo: should use getHttpHeader(), but it would be slow. (Serban) - $this->userAgent .= $this->httpHeaders[$altHeader] . " "; - } - } - - return $this->userAgent = (!empty($this->userAgent) ? trim($this->userAgent) : null); - - } - } - - /** - * Retrieve the User-Agent. - * - * @return string|null The user agent if it's set. - */ - public function getUserAgent() - { - return $this->userAgent; - } - - /** - * Set the detection type. Must be one of self::DETECTION_TYPE_MOBILE or - * self::DETECTION_TYPE_EXTENDED. Otherwise, nothing is set. - * - * @deprecated since version 2.6.9 - * - * @param string $type The type. Must be a self::DETECTION_TYPE_* constant. The default - * parameter is null which will default to self::DETECTION_TYPE_MOBILE. - */ - public function setDetectionType($type = null) - { - if ($type === null) { - $type = self::DETECTION_TYPE_MOBILE; - } - - if ($type != self::DETECTION_TYPE_MOBILE && $type != self::DETECTION_TYPE_EXTENDED) { - return; - } - - $this->detectionType = $type; - } - - /** - * Retrieve the list of known phone devices. - * - * @return array List of phone devices. - */ - public static function getPhoneDevices() - { - return self::$phoneDevices; - } - - /** - * Retrieve the list of known tablet devices. - * - * @return array List of tablet devices. - */ - public static function getTabletDevices() - { - return self::$tabletDevices; - } - - /** - * Alias for getBrowsers() method. - * - * @return array List of user agents. - */ - public static function getUserAgents() - { - return self::getBrowsers(); - } - - /** - * Retrieve the list of known browsers. Specifically, the user agents. - * - * @return array List of browsers / user agents. - */ - public static function getBrowsers() - { - return self::$browsers; - } - - /** - * Retrieve the list of known utilities. - * - * @return array List of utilities. - */ - public static function getUtilities() - { - return self::$utilities; - } - - /** - * Method gets the mobile detection rules. This method is used for the magic methods $detect->is*(). - * - * @deprecated since version 2.6.9 - * - * @return array All the rules (but not extended). - */ - public static function getMobileDetectionRules() - { - static $rules; - - if (!$rules) { - $rules = array_merge( - self::$phoneDevices, - self::$tabletDevices, - self::$operatingSystems, - self::$browsers - ); - } - - return $rules; - - } - - /** - * Method gets the mobile detection rules + utilities. - * The reason this is separate is because utilities rules - * don't necessary imply mobile. This method is used inside - * the new $detect->is('stuff') method. - * - * @deprecated since version 2.6.9 - * - * @return array All the rules + extended. - */ - public function getMobileDetectionRulesExtended() - { - static $rules; - - if (!$rules) { - // Merge all rules together. - $rules = array_merge( - self::$phoneDevices, - self::$tabletDevices, - self::$operatingSystems, - self::$browsers, - self::$utilities - ); - } - - return $rules; - } - - /** - * Retrieve the current set of rules. - * - * @deprecated since version 2.6.9 - * - * @return array - */ - public function getRules() - { - if ($this->detectionType == self::DETECTION_TYPE_EXTENDED) { - return self::getMobileDetectionRulesExtended(); - } else { - return self::getMobileDetectionRules(); - } - } - - /** - * Retrieve the list of mobile operating systems. - * - * @return array The list of mobile operating systems. - */ - public static function getOperatingSystems() - { - return self::$operatingSystems; - } - - /** - * Check the HTTP headers for signs of mobile. - * This is the fastest mobile check possible; it's used - * inside isMobile() method. - * - * @return bool - */ - public function checkHttpHeadersForMobile() - { - - foreach($this->getMobileHeaders() as $mobileHeader => $matchType){ - if( isset($this->httpHeaders[$mobileHeader]) ){ - if( is_array($matchType['matches']) ){ - foreach($matchType['matches'] as $_match){ - if( strpos($this->httpHeaders[$mobileHeader], $_match) !== false ){ - return true; - } - } - return false; - } else { - return true; - } - } - } - - return false; - - } - - /** - * Magic overloading method. - * - * @method boolean is[...]() - * @param string $name - * @param array $arguments - * @return mixed - * @throws BadMethodCallException when the method doesn't exist and doesn't start with 'is' - */ - public function __call($name, $arguments) - { - //make sure the name starts with 'is', otherwise - if (substr($name, 0, 2) != 'is') { - throw new BadMethodCallException("No such method exists: $name"); - } - - $this->setDetectionType(self::DETECTION_TYPE_MOBILE); - - $key = substr($name, 2); - - return $this->matchUAAgainstKey($key); - } - - /** - * Find a detection rule that matches the current User-agent. - * - * @param null $userAgent deprecated - * @return boolean - */ - protected function matchDetectionRulesAgainstUA($userAgent = null) - { - // Begin general search. - foreach ($this->getRules() as $_regex) { - if (empty($_regex)) { - continue; - } - if ($this->match($_regex, $userAgent)) { - return true; - } - } - - return false; - } - - /** - * Search for a certain key in the rules array. - * If the key is found the try to match the corresponding - * regex agains the User-Agent. - * - * @param string $key - * @param null $userAgent deprecated - * @return mixed - */ - protected function matchUAAgainstKey($key, $userAgent = null) - { - // Make the keys lowercase so we can match: isIphone(), isiPhone(), isiphone(), etc. - $key = strtolower($key); - - //change the keys to lower case - $_rules = array_change_key_case($this->getRules()); - - if (array_key_exists($key, $_rules)) { - if (empty($_rules[$key])) { - return null; - } - - return $this->match($_rules[$key], $userAgent); - } - - return false; - } - - /** - * Check if the device is mobile. - * Returns true if any type of mobile device detected, including special ones - * @param null $userAgent deprecated - * @param null $httpHeaders deprecated - * @return bool - */ - public function isMobile($userAgent = null, $httpHeaders = null) - { - - if ($httpHeaders) { - $this->setHttpHeaders($httpHeaders); - } - - if ($userAgent) { - $this->setUserAgent($userAgent); - } - - $this->setDetectionType(self::DETECTION_TYPE_MOBILE); - - if ($this->checkHttpHeadersForMobile()) { - return true; - } else { - return $this->matchDetectionRulesAgainstUA(); - } - - } - - /** - * Check if the device is a tablet. - * Return true if any type of tablet device is detected. - * - * @param string $userAgent deprecated - * @param array $httpHeaders deprecated - * @return bool - */ - public function isTablet($userAgent = null, $httpHeaders = null) - { - $this->setDetectionType(self::DETECTION_TYPE_MOBILE); - - foreach (self::$tabletDevices as $_regex) { - if ($this->match($_regex, $userAgent)) { - return true; - } - } - - return false; - } - - /** - * This method checks for a certain property in the - * userAgent. - * @todo: The httpHeaders part is not yet used. - * - * @param $key - * @param string $userAgent deprecated - * @param string $httpHeaders deprecated - * @return bool|int|null - */ - public function is($key, $userAgent = null, $httpHeaders = null) - { - // Set the UA and HTTP headers only if needed (eg. batch mode). - if ($httpHeaders) { - $this->setHttpHeaders($httpHeaders); - } - - if ($userAgent) { - $this->setUserAgent($userAgent); - } - - $this->setDetectionType(self::DETECTION_TYPE_EXTENDED); - - return $this->matchUAAgainstKey($key); - } - - /** - * Some detection rules are relative (not standard), - * because of the diversity of devices, vendors and - * their conventions in representing the User-Agent or - * the HTTP headers. - * - * This method will be used to check custom regexes against - * the User-Agent string. - * - * @param $regex - * @param string $userAgent - * @return bool - * - * @todo: search in the HTTP headers too. - */ - public function match($regex, $userAgent = null) - { - // Escape the special character which is the delimiter. - $regex = str_replace('/', '\/', $regex); - - return (bool) preg_match('/'.$regex.'/is', (!empty($userAgent) ? $userAgent : $this->userAgent)); - } - - /** - * Get the properties array. - * - * @return array - */ - public static function getProperties() - { - return self::$properties; - } - - /** - * Prepare the version number. - * - * @todo Remove the error supression from str_replace() call. - * - * @param string $ver The string version, like "2.6.21.2152"; - * - * @return float - */ - public function prepareVersionNo($ver) - { - $ver = str_replace(array('_', ' ', '/'), '.', $ver); - $arrVer = explode('.', $ver, 2); - - if (isset($arrVer[1])) { - $arrVer[1] = @str_replace('.', '', $arrVer[1]); // @todo: treat strings versions. - } - - return (float) implode('.', $arrVer); - } - - /** - * Check the version of the given property in the User-Agent. - * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) - * - * @param string $propertyName The name of the property. See self::getProperties() array - * keys for all possible properties. - * @param string $type Either self::VERSION_TYPE_STRING to get a string value or - * self::VERSION_TYPE_FLOAT indicating a float value. This parameter - * is optional and defaults to self::VERSION_TYPE_STRING. Passing an - * invalid parameter will default to the this type as well. - * - * @return string|float The version of the property we are trying to extract. - */ - public function version($propertyName, $type = self::VERSION_TYPE_STRING) - { - if (empty($propertyName)) { - return false; - } - - //set the $type to the default if we don't recognize the type - if ($type != self::VERSION_TYPE_STRING && $type != self::VERSION_TYPE_FLOAT) { - $type = self::VERSION_TYPE_STRING; - } - - $properties = self::getProperties(); - - // Check if the property exists in the properties array. - if (array_key_exists($propertyName, $properties)) { - - // Prepare the pattern to be matched. - // Make sure we always deal with an array (string is converted). - $properties[$propertyName] = (array) $properties[$propertyName]; - - foreach ($properties[$propertyName] as $propertyMatchString) { - - $propertyPattern = str_replace('[VER]', self::VER, $propertyMatchString); - - // Escape the special character which is the delimiter. - $propertyPattern = str_replace('/', '\/', $propertyPattern); - - // Identify and extract the version. - preg_match('/'.$propertyPattern.'/is', $this->userAgent, $match); - - if (!empty($match[1])) { - $version = ( $type == self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1] ); - - return $version; - } - - } - - } - - return false; - } - - /** - * Retrieve the mobile grading, using self::MOBILE_GRADE_* constants. - * - * @return string One of the self::MOBILE_GRADE_* constants. - */ - public function mobileGrade() - { - $isMobile = $this->isMobile(); - - if ( - // Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1) - $this->isIOS() && $this->version('iPad', self::VERSION_TYPE_FLOAT)>=4.3 || - $this->isIOS() && $this->version('iPhone', self::VERSION_TYPE_FLOAT)>=3.1 || - $this->isIOS() && $this->version('iPod', self::VERSION_TYPE_FLOAT)>=3.1 || - - // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5) - // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM - // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices - // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7 - ( $this->version('Android', self::VERSION_TYPE_FLOAT)>2.1 && $this->is('Webkit') ) || - - // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800 - $this->version('Windows Phone OS', self::VERSION_TYPE_FLOAT)>=7.0 || - - // Blackberry 7 - Tested on BlackBerry Torch 9810 - // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670 - $this->is('BlackBerry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)>=6.0 || - // Blackberry Playbook (1.0-2.0) - Tested on PlayBook - $this->match('Playbook.*Tablet') || - - // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0) - ( $this->version('webOS', self::VERSION_TYPE_FLOAT)>=1.4 && $this->match('Palm|Pre|Pixi') ) || - // Palm WebOS 3.0 - Tested on HP TouchPad - $this->match('hp.*TouchPad') || - - // Firefox Mobile (12 Beta) - Tested on Android 2.3 device - ( $this->is('Firefox') && $this->version('Firefox', self::VERSION_TYPE_FLOAT)>=12 ) || - - // Chrome for Android - Tested on Android 4.0, 4.1 device - ( $this->is('Chrome') && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT)>=4.0 ) || - - // Skyfire 4.1 - Tested on Android 2.3 device - ( $this->is('Skyfire') && $this->version('Skyfire', self::VERSION_TYPE_FLOAT)>=4.1 && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT)>=2.3 ) || - - // Opera Mobile 11.5-12: Tested on Android 2.3 - ( $this->is('Opera') && $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT)>11 && $this->is('AndroidOS') ) || - - // Meego 1.2 - Tested on Nokia 950 and N9 - $this->is('MeeGoOS') || - - // Tizen (pre-release) - Tested on early hardware - $this->is('Tizen') || - - // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser - // @todo: more tests here! - $this->is('Dolfin') && $this->version('Bada', self::VERSION_TYPE_FLOAT)>=2.0 || - - // UC Browser - Tested on Android 2.3 device - ( ($this->is('UC Browser') || $this->is('Dolfin')) && $this->version('Android', self::VERSION_TYPE_FLOAT)>=2.3 ) || - - // Kindle 3 and Fire - Tested on the built-in WebKit browser for each - ( $this->match('Kindle Fire') || - $this->is('Kindle') && $this->version('Kindle', self::VERSION_TYPE_FLOAT)>=3.0 ) || - - // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet - $this->is('AndroidOS') && $this->is('NookTablet') || - - // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7 - $this->version('Chrome', self::VERSION_TYPE_FLOAT)>=11 && !$isMobile || - - // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7 - $this->version('Safari', self::VERSION_TYPE_FLOAT)>=5.0 && !$isMobile || - - // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7 - $this->version('Firefox', self::VERSION_TYPE_FLOAT)>=4.0 && !$isMobile || - - // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7 - $this->version('MSIE', self::VERSION_TYPE_FLOAT)>=7.0 && !$isMobile || - - // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7 - // @reference: http://my.opera.com/community/openweb/idopera/ - $this->version('Opera', self::VERSION_TYPE_FLOAT)>=10 && !$isMobile - - ){ - return self::MOBILE_GRADE_A; - } - - if ( - $this->isIOS() && $this->version('iPad', self::VERSION_TYPE_FLOAT)<4.3 || - $this->isIOS() && $this->version('iPhone', self::VERSION_TYPE_FLOAT)<3.1 || - $this->isIOS() && $this->version('iPod', self::VERSION_TYPE_FLOAT)<3.1 || - - // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770 - $this->is('Blackberry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)>=5 && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<6 || - - //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3 - ( $this->version('Opera Mini', self::VERSION_TYPE_FLOAT)>=5.0 && $this->version('Opera Mini', self::VERSION_TYPE_FLOAT)<=6.5 && - ($this->version('Android', self::VERSION_TYPE_FLOAT)>=2.3 || $this->is('iOS')) ) || - - // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1) - $this->match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') || - - // @todo: report this (tested on Nokia N71) - $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT)>=11 && $this->is('SymbianOS') - ){ - return self::MOBILE_GRADE_B; - } - - if ( - // Blackberry 4.x - Tested on the Curve 8330 - $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<5.0 || - // Windows Mobile - Tested on the HTC Leo (WinMo 5.2) - $this->match('MSIEMobile|Windows CE.*Mobile') || $this->version('Windows Mobile', self::VERSION_TYPE_FLOAT)<=5.2 - - ){ - return self::MOBILE_GRADE_C; - } - - //All older smartphone platforms and featurephones - Any device that doesn't support media queries - //will receive the basic, C grade experience. - return self::MOBILE_GRADE_C; - } -} -?> \ No newline at end of file diff --git a/_incl_data/class/pay.php b/_incl_data/class/pay.php deleted file mode 100644 index 554d326e..00000000 --- a/_incl_data/class/pay.php +++ /dev/null @@ -1,243 +0,0 @@ - 'pay_operations', //Таблица в которую заносятся данные - 'db_host' => 'localhost', - 'db_user' => 'newcom1_abk', - 'db_pass' => '4nWYsIM[c?}P', - 'db_base' => 'newcom1_abk', - /* Настройки платежей */ - 'ip_list' => array('127,0,0,1,188.166.34.68,136.243.38.147,136.243.38.149,136.243.38.150,136.243.38.151,136.243.38.189,88.198.88.98'), //Указывать через запятую (Разрешенные IP) - 'key' => 'qtzl0igb', //gamedealer key - 'id' => '65643' //ID проекта - ), - $ip = '', - $BACK = array(); //Результат который возвращаем в конце - - //Кодируем из ЮТФ-8 в Кирилицу - public function in($text) { - return iconv("UTF-8","cp1251",$text); - } - - //Кодируем из Кирилицу в ЮТФ-8 - public function out($text) { - return iconv("cp1251","UTF-8",$text); - } - - //Добавляем данные в базу данных - public function add($type,$value,$money) { - mysql_query('INSERT INTO `'.$this->c['db_name'].'` (`time`,`type`,`ip`,`value`,`money`,`project`) VALUES ("'.time().'","'.mysql_real_escape_string($type).'","'.$_SERVER['HTTP_X_REAL_IP'].'","'.mysql_real_escape_string($value).'","'.mysql_real_escape_string($money).'","'.mysql_real_escape_string($this->id).'")'); - } - - //Подключаемся к базе данных - public function connect_db() { - $db = mysql_connect($this->c['db_host'],$this->c['db_user'],$this->c['db_pass']) or die('Ошибка подключения к MySQL серверу!'); - mysql_select_db($this->c['db_base'],$db) or die('Ошибка подключения к базе данных!'); - mysql_query('SET NAMES cp1251'); - } - - public function output($a,$v = NULL) { - $r = ''; - $i = 0; - while($i < count($a)) { - $rn = ''; - $tb = ''; - if($v != NULL) { - $rn = "\r\n"; - $tb = " "; - } - $r .= $rn.'<'.$a[$i][0].'>'; - if(!is_array($a[$i][1])) { - $rn = ''; - $tb = ''; - $r .= $rn.$tb.($this->out($a[$i][1])); - }else{ - if($i > 0) { - $r .= $rn; - } - $r .= $tb.($this->output($a[$i][1],1)); - } - $r .= $rn.''; - $i++; - } - return $r; - } - - //Генерируем XML-файл - public function backInformation() { - header('Content-Type: text/html/force-download'); - echo ''; - echo $this->output($this->BACK,1); - } - - //Проверка существования персонажа - public function test_accaunt($nick) { - $r = false; - $nick = mysql_fetch_array(mysql_query('SELECT `id` FROM `bank` WHERE `id` = "'.mysql_real_escape_string($nick).'" LIMIT 1')); - if(isset($nick['id'])) { - $r = true; - } - return $r; - } - - //Получает счет в банке по логину - public function getBank($nick) { - $nick = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `login` = "'.mysql_real_escape_string($nick).'" LIMIT 1')); - $nick = mysql_fetch_array(mysql_query('SELECT `id` FROM `bank` WHERE `uid` = "'.mysql_real_escape_string($nick['id']).'" LIMIT 1')); - return $nick['id']; - } - - //Поиск логина - public function bank_user($nick) { - $nick = mysql_fetch_array(mysql_query('SELECT `id`,`uid FROM `bank` WHERE `id` = "'.mysql_real_escape_string($nick).'" LIMIT 1')); - $nick = mysql_fetch_array(mysql_query('SELECT `id`,`login` FROM `users` WHERE `login` = "'.mysql_real_escape_string($nick['uid']).'" LIMIT 1')); - return $nick['login']; - } - - //Начинаем обработку запросов - public function start_session() { - - $this->ip = $_SERVER['HTTP_X_REAL_IP']; - - //Подключаемся к БД - $this->connect_db(); - - //Получаем данные запроса - //$xml = file_get_contents('php://input'); - - //Парсинг XML запроса - if(function_exists('simplexml_load_string')) { - $xml = simplexml_load_string($xml); - }else{ - $this->BACK = array(array('gdanswer',array(array('status','-1'),array('desc','Не удалось произвести обработку запроса')))); - die($this->backInformation()); - } - - $this->id = $xml->projectid; - - if(!in_array($this->ip,$this->c['ip_list'])) { - $this->BACK = array(array('gdanswer',array(array('status','-1'),array('desc','Нет доступа с данного IP')))); - die($this->backInformation()); - } - - //Обработка запросов - if($xml->method == 'check_balance') { - //MD5(method+MD5(gdKey)) - - $sign = md5($xml->method.md5($this->c['key'])); - - if($sign == $xml->sign) { - //Баланс дилера - $balance = 1000000; - $this->BACK = array(array('gdanswer',array(array('status','1'),array('desc','Баланс дилера: '.$balance),array('balance',$balance)))); - $this->add('4','check:'.$xml->nick.':1'.$r,0); - } - - }elseif($xml->method == 'check') { - /* - nick - логин персонажа MD5(nick+method+MD5(gdKey)) */ - - $sign = md5($xml->nick.$xml->method.md5($this->c['key'])); - - if($sign == $xml->sign) { - $xml->nick = $this->in($xml->nick); - if($this->test_accaunt($xml->nick) == true) { - //Персонаж найден и зачисляем ему игровую валюту - $this->BACK = array(array('gdanswer',array(array('status','1'),array('desc','Банковский счет найден')))); - $this->add('3','check:'.$xml->nick.':1'.$r,0); - }else{ - //Персонаж не найден - $this->BACK = array(array('gdanswer',array(array('status','-1'),array('desc','Платеж не обработан. Банковский счет не найден.')))); - $this->add('-1','Персонаж не найден:pay:'.$xml->nick.':0',0); - } - } - }elseif($xml->method == 'pay') { - /* Проводим платеж - nick - логин аккаунта , projectid - id проекта , sign , amount - деньги , payid - id платежа */ - - $sign = md5($xml->nick.$xml->projectid.$xml->amount.$xml->payid.$xml->method.md5($this->c['key'])); - - if($sign == $xml->sign) { - $xml->nick = $this->in($xml->nick); - if($this->test_accaunt($xml->nick) == true) { - //Персонаж найден и зачисляем ему игровую валюту - $bank = $this->test_accaunt($xml->nick); - if($bank > 0) { - mysql_query('UPDATE `bank` SET `money2` = `money2` + '.mysql_real_escape_string($xml->amount).' WHERE `id` = "'.mysql_real_escape_string($xml->nick).'" LIMIT 1'); - $this->BACK = array(array('gdanswer',array(array('status','1'),array('desc','Платеж прошел успешно'),array('id',$this->c['id'])))); - $this->add('2','pay:'.$xml->nick.':'.$xml->projectid.':'.$xml->sign.':'.$xml->amount.':'.$xml->payid.':'.$bank['id'],$xml->amount); - - $user = mysql_fetch_array(mysql_query('SELECT `id`,`uid` FROM `bank` WHERE `id` = "'.mysql_real_escape_string($xml->nick).'" LIMIT 1')); - $user = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`city`,`sex`,`room` FROM `users` WHERE `id` = "'.mysql_real_escape_string($user['uid']).'" LIMIT 1')); - - mysql_query('UPDATE `users` SET `catch` = `catch` + '.mysql_real_escape_string(floor($xml->amount)).' WHERE `id` = "'.mysql_real_escape_string($xml->nick).'" LIMIT 1'); - - $r = ''.date('d.m.Y H:i').' Алхимик Enchanter / Автоматическая оплата сообщает: '; - - if($user['sex'] == 1) { - $r .= 'Уважаемая'; - }else{ - $r .= 'Уважаемый'; - } - - $r .= ' '.$user['login'].', на Ваш банковский счет №'.$bank.' зачислено '.$xml->amount.' Ekr. Благодарим Вас за покупку!'; - - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$user['city']."','".$user['room']."','','".$user['login']."','".$r."','-1','5','0')"); - - }else{ - $this->BACK = array(array('gdanswer',array(array('status','-1'),array('desc','У пользователя отсутствует банк'),array('id',$this->c['id'])))); - $this->add('-1','У персонажа отсутствует банк:pay:'.$xml->nick.':'.$xml->projectid.':'.$xml->sign.':'.$xml->amount.':'.$xml->payid.':'.$bank['id'],$xml->amount); - } - }else{ - //Персонаж не найден - $this->BACK = array(array('gdanswer',array(array('status','-1'),array('desc','Платеж не обработан. Персонаж не найден.')))); - $this->add('-1','Персонаж не найден:pay:'.$xml->nick.':0',0); - } - }else{ - //Ошибка сигнатуры - $this->BACK = array(array('gdanswer',array(array('status','-1'),array('desc','Ошибка сигнатуры')))); - $this->add('-1','Ошибка сигнатуры:pay:'.$xml->nick.':0',0); - } - }elseif($xml->method == 'check_login') { - /* Проверка аккаунта - nick - логин аккаунта , projectid - id проекта , sign */ - $sign = md5($xml->nick.$xml->method.md5($this->c['key'])); - - if($sign == $xml->sign) { - $xml->nick = $this->in($xml->nick); - if($this->test_accaunt($xml->nick) == true) { - //Персонаж найден - $this->BACK = array(array('gdanswer',array(array('status','1'),array('desc','Счет найден'),array('addinfo',$this->bank_user($xml->nick))))); - $this->add('1','check_login:'.$xml->nick.':1'.$r,0); - }else{ - //Персонаж не найден - $this->BACK = array(array('gdanswer',array(array('status','-1'),array('desc','Счет не найден')))); - $this->add('-1','Персонаж не найден:check_login:'.$xml->nick.':0',0); - } - }else{ - //Ошибка сигнатуры - $this->BACK = array(array('gdanswer',array(array('status','-1'),array('desc','Ошибка сигнатуры')))); - $this->add('-1','Ошибка сигнатуры:pay:'.$xml->nick.':0',0); - } - }else{ - $this->BACK = array(array('gdanswer',array(array('status','-1'),array('desc','Неизвестный тип запроса')))); - $this->add('-1','Неизвестный тип запроса:error_method:gamedealer',0); - } - - //Заносим информацию - /* Пример результата запроса - $this->BACK = array( - array('gdanswer',array(array('status',-100),array('desc','Описание запроса'))) - ); - */ - - //Возвращаем результат - $this->backInformation(); - } -} - -$pay = new GameDealerClass; -$pay->start_session(); -?> diff --git a/_incl_data/class/priem/121.php b/_incl_data/class/priem/121.php index c60fc915..6b801fff 100644 --- a/_incl_data/class/priem/121.php +++ b/_incl_data/class/priem/121.php @@ -60,11 +60,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/122.php b/_incl_data/class/priem/122.php index 8d31cdd8..aac70b39 100644 --- a/_incl_data/class/priem/122.php +++ b/_incl_data/class/priem/122.php @@ -60,11 +60,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/123.php b/_incl_data/class/priem/123.php index 146c2263..b9f0296e 100644 --- a/_incl_data/class/priem/123.php +++ b/_incl_data/class/priem/123.php @@ -60,11 +60,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/124.php b/_incl_data/class/priem/124.php index 84875ed0..f18b0b0c 100644 --- a/_incl_data/class/priem/124.php +++ b/_incl_data/class/priem/124.php @@ -60,11 +60,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/125.php b/_incl_data/class/priem/125.php index 37f998da..d6a4baf3 100644 --- a/_incl_data/class/priem/125.php +++ b/_incl_data/class/priem/125.php @@ -60,11 +60,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/21.php b/_incl_data/class/priem/21.php index 4ed87b06..66cce764 100644 --- a/_incl_data/class/priem/21.php +++ b/_incl_data/class/priem/21.php @@ -59,11 +59,9 @@ if( isset($pr_used_this) && isset($pr_moment) && !isset($btl->info['id']) && !is mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - //$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); $pvr['promah_type'] = 0; $pvr['promah'] = false; $pvr['krit'] = false; - //$pvr['hp'] = $pvr['hp'][0]; $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/22.php b/_incl_data/class/priem/22.php index ecd7afa1..d2c542ee 100644 --- a/_incl_data/class/priem/22.php +++ b/_incl_data/class/priem/22.php @@ -57,11 +57,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/23.php b/_incl_data/class/priem/23.php index 698b4f80..87464437 100644 --- a/_incl_data/class/priem/23.php +++ b/_incl_data/class/priem/23.php @@ -57,11 +57,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/243.php b/_incl_data/class/priem/243.php index a66d12c2..0dbf6f04 100644 --- a/_incl_data/class/priem/243.php +++ b/_incl_data/class/priem/243.php @@ -1,5 +1,5 @@ stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['mp'] = floor($pvr['mp']*$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['x']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['mpSee'] = '--'; $pvr['mpNow'] = floor($btl->stats[$btl->uids[$u1]]['mpNow']); $pvr['mpAll'] = $btl->stats[$btl->uids[$u1]]['mpAll']; diff --git a/_incl_data/class/priem/26.php b/_incl_data/class/priem/26.php index b4286d59..141c0e89 100644 --- a/_incl_data/class/priem/26.php +++ b/_incl_data/class/priem/26.php @@ -2,8 +2,8 @@ /** * Прием: Цель {стихия} - * @var $this priems - * @var $btl battleClass + * @var $this Priems + * @var $btl Battle * @var $id * @var $pl */ diff --git a/_incl_data/class/priem/260.php b/_incl_data/class/priem/260.php index 99292215..d2382c6e 100644 --- a/_incl_data/class/priem/260.php +++ b/_incl_data/class/priem/260.php @@ -1,4 +1,4 @@ - 0) { $this->addEffPr($pl, $id); $prv['color2'] = '0af'; - $prv['text'] = $btl->addlt(1, 19, $btl->users[$btl->uids[$u->info['id']]]['sex'], null); + $prv['text'] = $btl->addlt(1, 19, $btl->users[$btl->uids[$this->u->info['id']]]['sex'], null); $prv['text2'] = '{tm1} ' . $prv['text']; $btl->priemAddLog($id, 1, 2, $u->info['id'], $this->ue['id'], 'Статика', diff --git a/_incl_data/class/priem/261.php b/_incl_data/class/priem/261.php index e53d0793..be48da78 100644 --- a/_incl_data/class/priem/261.php +++ b/_incl_data/class/priem/261.php @@ -1,7 +1,7 @@ users[$btl->uids[$this->ue['id']]]['id'].'" AND `v2` = "260" AND `user_use` = "'.$u->info['id'].'" ORDER BY `id` DESC LIMIT 1')); -$pvr['mg'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$btl->users[$btl->uids[$this->ue['id']]]['id'].'" AND `v2` = "260" ORDER BY `id` DESC LIMIT 1')); -if( isset($pvr['mg']['id']) ) { - //Действие при клике - //$pvr['hp'] = floor(144/3*$pvr['mg']['x']); - /*$pvr['hp'] = 1;*/ - // - $pvr['data'] = $this->lookStatsArray($pvr['mg']['data']); - // - /**/ - if( $pvr['data']['add_mg2static_points'][0] < 1 ) { - echo 'Статика не собрала достаточного количества зарядов'; - $cup = true; - }else{ - $prv['text'] = $btl->addlt(1 , 21 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - - //Цвет приемаы - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '006699'; - if(isset($btl->mcolor[$btl->mname['воздух']])) { - $prv['color2'] = $btl->mcolor[$btl->mname['воздух']]; - } - $prv['color'] = '000000'; - if(isset($btl->mncolor[$btl->mname['воздух']])) { - $prv['color'] = $btl->mncolor[$btl->mname['воздух']]; - } - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - //Хиляем ману - $pvr['mp'] = $pvr['data']['add_mg2static_points'][0]*(3*$u->info['level']); - // - $pvr['mpSee'] = ''; - $pvr['mpNow'] = floor($btl->stats[$btl->uids[$u->info['id']]]['mpNow']); - $pvr['mpAll'] = $btl->stats[$btl->uids[$u->info['id']]]['mpAll']; - - $pvr['mpTr'] = $pvr['mpNow'] + $pvr['mp']; - if( $pvr['mpTr'] > $pvr['mpAll'] ) { - $pvr['mp'] = $pvr['mp'] - ( $pvr['mpTr'] - $pvr['mpAll'] ); - } - - $pvr['mpNow'] = floor($pvr['mpNow']+$pvr['mp']); - - if( $pvr['mp'] > 0 ) { - $pvr['mpSee'] = '+' . $pvr['mp']; - }else{ - $pvr['mpSee'] = $pvr['mp']; - } - - if( $pvr['mpSee'] == '' || $pvr['mpSee'] == 0 ) { - $pvr['mpSee'] = '--'; - } - $u->stats['mpNow'] = $pvr['mpNow']; - $u->info['mpNow'] = $pvr['mpNow']; - $btl->stats[$btl->uids[$u->info['id']]]['mpNow'] = $pvr['mpNow']; - $btl->users[$btl->uids[$u->info['id']]]['mpNow'] = $pvr['mpNow']; - mysql_query('UPDATE `stats` SET `mpNow` = "'.$u->stats['mpNow'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - - //Удаляем 1 негативный эффект - $pvr['no'] = ' AND `a`.`v2` != 201'; - - $pvr['sp'] = mysql_query('SELECT `a`.* FROM `eff_users` AS `a` LEFT JOIN `priems` AS `b` ON `b`.`id` = `a`.`v2` WHERE `a`.`uid` = "'.$u->info['id'].'" AND `a`.`delete` = 0 AND `a`.`v1` = "priem" '.$pvr['no'].' AND `b`.`neg` > 0 LIMIT 1'); - $pvr['pl'] = mysql_fetch_array($pvr['sp']); - $pvr['pl']['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "'.$pvr['pl']['v2'].'" LIMIT 1')); - if( isset($pvr['pl']['priem']) ) { - $btl->delPriem($pvr['pl'],$btl->users[$btl->uids[$u->info['id']]],100); - } - - $prv['text2'] = '{tm1} '.$prv['text'].' через {u2}. '.$pvr['mpSee'].' ['.$pvr['mpNow'].'/'.$pvr['mpAll'].'] (мана)'; - - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], - 'Заряд: Собрать', - $prv['text2'], - ($btl->hodID + 1) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($this->ue['id'],$pl['id'],'atgm='.($pvr['hp']/16).'',2,77,4,$u->info['id'],3,'оледенение',0,0,1); - - //Удаляем оледенение - $pvr['mg']['priem']['id'] = $pvr['mg']['id']; - //$btl->delPriem($pvr['mg'],$btl->users[$btl->uids[$this->ue['id']]],2); - - $pvr['edt'] = $u->lookStats($pvr['mg']['data']); - $pvr['edt']['add_zm2proc'] = 0; - $pvr['edt']['add_mg2static_points'] = 0; - $pvr['edt'] = $u->impStats($pvr['edt']); - mysql_query('UPDATE `eff_users` SET `x` = 1, `data` = "'.$pvr['edt'].'" WHERE `id` = "'.$pvr['mg']['id'].'" LIMIT 1'); - - //Отнимаем тактики - //$this->mintr($pl); - } -}else{ - echo 'На персонаже нет Статики (Вашего заклятия)'; - $cup = true; +$pvr['mg'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = ' . $btl->users[$btl->uids[$this->ue['id']]]['id'] . ' AND `v2` = 260 ORDER BY `id` DESC LIMIT 1')); +if (!isset($pvr['mg']['id'])) { + echo 'На персонаже нет Статики'; + $cup = true; +} else { + $pvr['data'] = $this->lookStatsArray($pvr['mg']['data']); + // + /**/ + if ($pvr['data']['add_mg2static_points'] < 1) { + echo 'Статика не собрала достаточного количества зарядов'; + $cup = true; + } else { + $prv['text'] = $btl->addlt(1, 21, $btl->users[$btl->uids[$this->u->info['id']]]['sex'], NULL); + + //Цвет приемаы + $prv['color'] = $this->logColor[$this::AIR]; + + //Хиляем ману + $pvr['mp'] = $pvr['data']['add_mg2static_points'] * (3 * $this->u->info['level']); + // + $pvr['mpSee'] = ''; + $pvr['mpNow'] = floor($btl->stats[$btl->uids[$this->u->info['id']]]['mpNow']); + $pvr['mpAll'] = $btl->stats[$btl->uids[$this->u->info['id']]]['mpAll']; + + $pvr['mpTr'] = $pvr['mpNow'] + $pvr['mp']; + if ($pvr['mpTr'] > $pvr['mpAll']) { + $pvr['mp'] = $pvr['mp'] - ($pvr['mpTr'] - $pvr['mpAll']); + } + + $pvr['mpNow'] = floor($pvr['mpNow'] + $pvr['mp']); + + if ($pvr['mp'] > 0) { + $pvr['mpSee'] = '+' . $pvr['mp']; + } else { + $pvr['mpSee'] = $pvr['mp']; + } + + if (empty($pvr['mpSee'])) { + $pvr['mpSee'] = '--'; + } + $this->u->stats['mpNow'] = $pvr['mpNow']; + $this->u->info['mpNow'] = $pvr['mpNow']; + $btl->stats[$btl->uids[$this->u->info['id']]]['mpNow'] = $pvr['mpNow']; + $btl->users[$btl->uids[$this->u->info['id']]]['mpNow'] = $pvr['mpNow']; + mysql_query('UPDATE `stats` SET `mpNow` = ' . $this->u->stats['mpNow'] . ' WHERE `id` = ' . $this->u->info['id']); + + //Удаляем 1 негативный эффект + $pvr['sp'] = mysql_query('select * from eff_users left join priems on priems.id = v2 where `delete` = 0 and neg > 0 and v1 = \'priem\' and v2 != 201 and uid = ' . $this->u->info['id']); + $pvr['pl'] = mysql_fetch_array($pvr['sp']); + shuffle($pvr['pl']); + $pvr['pl'] = $pvr['pl'][0]; + $pvr['pl']['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = ' . $pvr['pl']['v2'])); + if (isset($pvr['pl']['priem'])) { + $btl->delPriem($pvr['pl'], $btl->users[$btl->uids[$this->u->info['id']]], 100); + } + + $prv['text2'] = '{tm1} ' . $prv['text'] . ' через {u2}. ' . $pvr['mpSee'] . ' [' . $pvr['mpNow'] . '/' . $pvr['mpAll'] . '] (мана)'; + + $btl->priemAddLog($id, 1, 2, $this->u->info['id'], $this->ue['id'], 'Заряд: Собрать', $prv['text2'], ($btl->hodID + 1)); + + $pvr['mg']['priem']['id'] = $pvr['mg']['id']; + $pvr['edt'] = $this->changeStatsData($pvr['mg']['data'], ['add_mg2static_points' => 0]); + mysql_query('UPDATE `eff_users` SET `x` = 1, `data` = "' . $pvr['edt'] . '" WHERE `id` = ' . $pvr['mg']['id']); + } } unset($pvr); -?> \ No newline at end of file diff --git a/_incl_data/class/priem/265.php b/_incl_data/class/priem/265.php index 94efb54c..7cdb477a 100644 --- a/_incl_data/class/priem/265.php +++ b/_incl_data/class/priem/265.php @@ -1,114 +1,74 @@ -glaciationBreak($id, $pl, $btl); + $pvr = array(); -$pvr['mg'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$btl->users[$btl->uids[$this->ue['id']]]['id'].'" AND `bj` = "оледенение" AND `user_use` = "'.$u->info['id'].'" ORDER BY `id` DESC LIMIT 1')); -if( isset($pvr['mg']['id']) ) { - //Действие при клике - //$pvr['hp'] = floor(144/3*$pvr['mg']['x']); - $pvr['hp'] = 1; - // - $pvr['data'] = $this->lookStatsArray($pvr['mg']['data']); - $pvr['di'] = 0; - $pvr['dc'] = count($pvr['data']['atgm']); - $pvr['rd'] = 0; - while( $pvr['di'] < 4 ) { - if( isset($pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]) ) { - if( $pvr['rd'] < 3 ) { - $pvr['hp'] += $pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]; - $pvr['rd']++; - } - } - $pvr['di']++; - } - // - - - //$pvr['hp'] = 444; - $pvr['hp'] = 100; - //$pvr['hp'] += floor($pvr['hp']/100*$u->stats['mg3']);//умелки - //$pvr['hp'] += floor($pvr['hp']/100*($u->stats['s5']*0.15));//Интелект , было 0.33 - // - if( $btl->stats[$btl->uids[$u->info['enemy']]]['hpNow'] < floor($btl->stats[$btl->uids[$this->ue['id']]]['hpAll']/100*33) ) { - //$pvr['hp'] = floor( $pvr['hp'] + ($pvr['hp']/100*(50*$pvr['mg']['x'])) ); - $pvr['hp'] = 80; - } - $pvr['hp'] = $this->magatack( $u->info['id'], $this->ue['id'], $pvr['hp'], 'вода', 1 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0]; - $pvr['hpSee'] = '--'; - $pvr['hpNow'] = floor($btl->stats[$btl->uids[$this->ue['id']]]['hpNow']); - $pvr['hpAll'] = $btl->stats[$btl->uids[$this->ue['id']]]['hpAll']; - - //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $u->info['id'], $this->ue['id'], 21, $pvr['hp'], 7, true ); - - $pvr['hpSee'] = '-'.$pvr['hp']; - $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($u->info['id'],$this->ue['id'],$pvr['hp'],0); - - if( $pvr['hpNow'] > $pvr['hpAll'] ) { - $pvr['hpNow'] = $pvr['hpAll']; - }elseif( $pvr['hpNow'] < 0 ) { - $pvr['hpNow'] = 0; - } - - $btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] = $pvr['hpNow']; - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$this->ue['id']]]['hpNow'].'" WHERE `id` = "'.$this->ue['id'].'" LIMIT 1'); - - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - - //Цвет приема - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '006699'; - if(isset($btl->mcolor[$btl->mname['вода']])) { - $prv['color2'] = $btl->mcolor[$btl->mname['вода']]; - } - $prv['color'] = '000000'; - if(isset($btl->mncolor[$btl->mname['вода']])) { - $prv['color'] = $btl->mncolor[$btl->mname['вода']]; - } - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],3).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - if( $pvr['promah_type'] == 2 ) { - $prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],3).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - } - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $u->info['enemy'], - 'Оледенение: Разбить!', - $prv['text2'], - ($btl->hodID + 1) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - //$this->addPriem($u->info['enemy'],$pl['id'],'atgm='.($pvr['hp']/16).'',2,77,4,$u->info['id'],3,'оледенение',0,0,1); - - //Удаляем оледенение - $pvr['mg']['priem']['id'] = $pvr['mg']['id']; - $btl->delPriem($pvr['mg'],$btl->users[$btl->uids[$this->ue['id']]],2); - - //Отнимаем тактики - $this->mintr($pl); -}else{ - echo 'На персонаже нет оледенения (Вашего заклятия)'; - $cup = true; +$pvr['mg'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $btl->users[$btl->uids[$this->ue['id']]]['id'] . '" AND `bj` = "оледенение" AND `user_use` = "' . $this->u->info['id'] . '" ORDER BY `id` DESC LIMIT 1')); +if (!isset($pvr['mg']['id'])) { + echo 'На персонаже нет оледенения (Вашего заклятия)'; + $cup = true; +} else { + //Действие при клике + $pvr['hp'] = 100; + if ($btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] < floor($btl->stats[$btl->uids[$this->ue['id']]]['hpAll'] * 0.2)) { + $pvr['hp'] *= 1.5; + } + $pvr['hp'] = $this->magatack($this->u->info['id'], $this->ue['id'], $pvr['hp'], 'вода', 1); + $pvr['promah_type'] = $pvr['hp'][3]; + $pvr['promah'] = $pvr['hp'][2]; + $pvr['krit'] = $pvr['hp'][1]; + $pvr['hp'] = $pvr['hp'][0]; + $pvr['hpSee'] = '--'; + $pvr['hpNow'] = floor($btl->stats[$btl->uids[$this->ue['id']]]['hpNow']); + $pvr['hpAll'] = $btl->stats[$btl->uids[$this->ue['id']]]['hpAll']; + + //Используем проверку на урон приемов + $pvr['hp'] = $btl->testYronPriem($this->u->info['id'], $this->ue['id'], 21, $pvr['hp'], 7, true); + + $pvr['hpSee'] = '-' . $pvr['hp']; + $pvr['hpNow'] -= $pvr['hp']; + $btl->priemYronSave($this->u->info['id'], $this->ue['id'], $pvr['hp'], 0); + + if ($pvr['hpNow'] > $pvr['hpAll']) { + $pvr['hpNow'] = $pvr['hpAll']; + } elseif ($pvr['hpNow'] < 0) { + $pvr['hpNow'] = 0; + } + + $btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] = $pvr['hpNow']; + + mysql_query('UPDATE `stats` SET `hpNow` = ' . $pvr['hpNow'] . ' WHERE `id` = ' . $this->ue['id']); + + $prv['text'] = $btl->addlt(1, 19, $btl->users[$btl->uids[$this->u->info['id']]]['sex'], NULL); + + //Цвет приема + if ($pvr['promah']) { + $prv['color'] = $this->logColor['miss']; + } elseif ($pvr['krit']) { + $prv['color'] = $this->logColor['crit']; + } else { + $prv['color'] = $this->logColor[$this::WATER]; + } + $prv['text2'] = '{tm1} ' . $prv['text'] . '. maginfoattack($this->u->info['id'], $this->ue['id'], 3) . '>' . $pvr['hpSee'] . ' [' . $pvr['hpNow'] . '/' . $pvr['hpAll'] . ']'; + if ($pvr['promah_type'] == 2) { + $prv['text'] = $btl->addlt(1, 20, $btl->users[$btl->uids[$this->u->info['id']]]['sex'], NULL); + $prv['text2'] = '{tm1} ' . $prv['text'] . '. maginfoattack($this->u->info['id'], $this->ue['id'], 3) . '>-- [' . $pvr['hpNow'] . '/' . $pvr['hpAll'] . ']'; + } + $btl->priemAddLog($id, 1, 2, $this->u->info['id'], $this->u->info['enemy'], 'Оледенение: Разбить!', $prv['text2'], ($btl->hodID + 1)); + + //Удаляем оледенение + $pvr['mg']['priem']['id'] = $pvr['mg']['id']; + $btl->delPriem($pvr['mg'], $btl->users[$btl->uids[$this->ue['id']]], 2); + + //Отнимаем тактики + $this->mintr($pl); } unset($pvr); -?> \ No newline at end of file diff --git a/_incl_data/class/priem/267.php b/_incl_data/class/priem/267.php index 1455446c..2100fe38 100644 --- a/_incl_data/class/priem/267.php +++ b/_incl_data/class/priem/267.php @@ -1,11 +1,10 @@ -stats[$btl->uids[$this->ue['id']]]['s1']; - if( $pvr['hp'] > 10*$u->info['level'] ) { - $pvr['hp'] = $u->info['level']*10; - } - $pvr['hpSee'] = '--'; - $pvr['hpNow'] = floor($btl->stats[$btl->uids[$this->ue['id']]]['hpNow']); - $pvr['hpAll'] = $btl->stats[$btl->uids[$this->ue['id']]]['hpAll']; - - //Используем проверку на урон приемов - $pvr['hp'] = $btl->testYronPriem( $u->info['id'], $this->ue['id'], 21, $pvr['hp'], 7, true ); - - $pvr['hpSee'] = '-'.$pvr['hp']; - $pvr['hpNow'] -= $pvr['hp']; - $btl->priemYronSave($u->info['id'],$this->ue['id'],$pvr['hp'],0); - - if( $pvr['hpNow'] > $pvr['hpAll'] ) { - $pvr['hpNow'] = $pvr['hpAll']; - }elseif( $pvr['hpNow'] < 0 ) { - $pvr['hpNow'] = 0; - } - - $btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] = $pvr['hpNow']; - - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$this->ue['id']]]['hpNow'].'" WHERE `id` = "'.$this->ue['id'].'" LIMIT 1'); - - $prv['text'] = $btl->addlt(1 , 19 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - - //Цвет приема - if( $pvr['promah'] == false ) { - if( $pvr['krit'] == false ) { - $prv['color2'] = '006699'; - if(isset($btl->mcolor[$btl->mname['вода']])) { - $prv['color2'] = $btl->mcolor[$btl->mname['вода']]; - } - $prv['color'] = '000000'; - if(isset($btl->mncolor[$btl->mname['вода']])) { - $prv['color'] = $btl->mncolor[$btl->mname['вода']]; - } - }else{ - $prv['color2'] = 'FF0000'; - $prv['color'] = 'FF0000'; - } - }else{ - $prv['color2'] = '909090'; - $prv['color'] = '909090'; - } - - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],3).'>'.$pvr['hpSee'].' ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - if( $pvr['promah_type'] == 2 ) { - $prv['text'] = $btl->addlt(1 , 20 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL); - $prv['text2'] = '{tm1} '.$prv['text'].'. maginfoattack($u->info['id'],$this->ue['id'],3).'>-- ['.$pvr['hpNow'].'/'.$pvr['hpAll'].']'; - } - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $this->ue['id'], - 'Кристаллизация', - $prv['text2'], - ($btl->hodID + 1) - ); - - //Добавляем прием - //$this->addEffPr($pl,$id); - $this->addPriem($this->ue['id'],268,'|add_s1=-'.$btl->stats[$btl->uids[$u->info['id']]]['mg3'].'|add_s2=-'.$btl->stats[$btl->uids[$u->info['id']]]['mg3'],2,77,3,$u->info['id'],3,'кристаллизация',0,0,1); - - //Отнимаем тактики - //$this->mintr($pl); + $this->crystalize($id, $pl, $btl); } - -unset($pvr); -?> \ No newline at end of file diff --git a/_incl_data/class/priem/27.php b/_incl_data/class/priem/27.php index d96278c4..a3a88f12 100644 --- a/_incl_data/class/priem/27.php +++ b/_incl_data/class/priem/27.php @@ -2,8 +2,8 @@ /** * Прием: Цель {стихия} - * @var $this priems - * @var $btl battleClass + * @var $this Priems + * @var $btl Battle * @var $id * @var $pl */ diff --git a/_incl_data/class/priem/276.php b/_incl_data/class/priem/276.php index 5343b9d1..7648c744 100644 --- a/_incl_data/class/priem/276.php +++ b/_incl_data/class/priem/276.php @@ -101,11 +101,9 @@ if( isset($pr_momental_this)) { // // - //$priem->addPriem($u1,278,'|add_yzm3=-'.($btl->users[$btl->uids[$u2]]['level']).'',2,77,2,$u2,100,'инейкасание',0,0,1); $pvr['x55'] = mysql_fetch_array(mysql_query('SELECT `id`,`x` FROM `eff_users` WHERE `uid` = "'.$u1.'" AND `v2` = 25 AND `delete` = 0 LIMIT 1')); if( $pvr['x55']['x'] <1 ) { $priem->addPriem($u1,25,-1,2,77,-1,$u2,5,'цельводы',0,0,1); - //$priem->addPriem($u1,25,'|add_zm3=-20',2,77,-1,$u2,100,'цельводы',0,0,1); if( $pvr['used'] == 0 ) { $at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->priemAddLog( '.$id.', '.$b.', '.$a.', '.$u2.', '.$u1.', "Цель Воды", diff --git a/_incl_data/class/priem/277.php b/_incl_data/class/priem/277.php index bfc7832c..75669120 100644 --- a/_incl_data/class/priem/277.php +++ b/_incl_data/class/priem/277.php @@ -145,8 +145,6 @@ if( isset($pr_momental_this)) { }*/ //} // - //$priem->addPriem($u1,279,'|add_yzm3=-'.floor($btl->users[$btl->uids[$u2]]['level']*1.25).'',2,77,2,$u2,100,'инейкасание',0,0,1); - //$priem->addPriem($u1,278,'|add_yzm3=-'.($btl->users[$btl->uids[$u2]]['level']).'',2,77,2,$u2,100,'инейкасание',0,0,1); $pvr['x5'] = mysql_fetch_array(mysql_query('SELECT `id`,`x` FROM `eff_users` WHERE `uid` = "'.$u1.'" AND `v2` = 25 AND `delete` = 0 LIMIT 1')); if( $pvr['x5']['x'] < 5 ) { $priem->addPriem($u1,25,'|add_zm3=-20',2,77,-1,$u2,100,'цельводы',0,0,1); diff --git a/_incl_data/class/priem/28.php b/_incl_data/class/priem/28.php index 05502181..135c9698 100644 --- a/_incl_data/class/priem/28.php +++ b/_incl_data/class/priem/28.php @@ -2,8 +2,8 @@ /** * Прием: Цель {стихия} - * @var $this priems - * @var $btl battleClass + * @var $this Priems + * @var $btl Battle * @var $id * @var $pl */ diff --git a/_incl_data/class/priem/294.php b/_incl_data/class/priem/294.php index e3a1a02d..7ca59d50 100644 --- a/_incl_data/class/priem/294.php +++ b/_incl_data/class/priem/294.php @@ -39,34 +39,12 @@ if( isset($pr_used_this) && isset($pr_moment) ) { if( $pvr['hp'] < 1 ) { $pvr['hp'] = 1; } - // - /* - $pvr['data'] = $priem->lookStatsArray($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data']); - $pvr['di'] = 0; - $pvr['dc'] = count($pvr['data']['atgm']); - $pvr['rd'] = 0; - $pvr['redata'] = ''; - while( $pvr['di'] < 4 ) { - if( isset($pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]) ) { - if( $pvr['rd'] < 3 ) { - $pvr['hp'] += $pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]; - $pvr['redata'] = 'atgm='.$pvr['data']['atgm'][($pvr['dc']-$pvr['di'])].'|'.$pvr['redata']; - $pvr['rd']++; - } - } - $pvr['di']++; - } - */ - // + $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data'] = $pvr['redata']; mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/295.php b/_incl_data/class/priem/295.php index 07ecb25c..395a8381 100644 --- a/_incl_data/class/priem/295.php +++ b/_incl_data/class/priem/295.php @@ -39,34 +39,12 @@ if( isset($pr_used_this) && isset($pr_moment) ) { if( $pvr['hp'] < 1 ) { $pvr['hp'] = 1; } - // - /* - $pvr['data'] = $priem->lookStatsArray($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data']); - $pvr['di'] = 0; - $pvr['dc'] = count($pvr['data']['atgm']); - $pvr['rd'] = 0; - $pvr['redata'] = ''; - while( $pvr['di'] < 4 ) { - if( isset($pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]) ) { - if( $pvr['rd'] < 3 ) { - $pvr['hp'] += $pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]; - $pvr['redata'] = 'atgm='.$pvr['data']['atgm'][($pvr['dc']-$pvr['di'])].'|'.$pvr['redata']; - $pvr['rd']++; - } - } - $pvr['di']++; - } - */ - // + $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data'] = $pvr['redata']; mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/296.php b/_incl_data/class/priem/296.php index 53aa2fe1..6a3989fe 100644 --- a/_incl_data/class/priem/296.php +++ b/_incl_data/class/priem/296.php @@ -39,34 +39,12 @@ if( isset($pr_used_this) && isset($pr_moment) ) { if( $pvr['hp'] < 1 ) { $pvr['hp'] = 1; } - // - /* - $pvr['data'] = $priem->lookStatsArray($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data']); - $pvr['di'] = 0; - $pvr['dc'] = count($pvr['data']['atgm']); - $pvr['rd'] = 0; - $pvr['redata'] = ''; - while( $pvr['di'] < 4 ) { - if( isset($pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]) ) { - if( $pvr['rd'] < 3 ) { - $pvr['hp'] += $pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]; - $pvr['redata'] = 'atgm='.$pvr['data']['atgm'][($pvr['dc']-$pvr['di'])].'|'.$pvr['redata']; - $pvr['rd']++; - } - } - $pvr['di']++; - } - */ - // + $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data'] = $pvr['redata']; mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/299.php b/_incl_data/class/priem/299.php index b62d2a2a..ef3dacf7 100644 --- a/_incl_data/class/priem/299.php +++ b/_incl_data/class/priem/299.php @@ -41,32 +41,12 @@ if( isset($pr_used_this) && isset($pr_moment) ) { $pvr['promah'] = $pvr['hp'][2]; $pvr['krit'] = $pvr['hp'][1]; $pvr['hp'] = $pvr['hp'][0]; - /*// - $pvr['data'] = $priem->lookStatsArray($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data']); - $pvr['di'] = 0; - $pvr['dc'] = count($pvr['data']['atgm']); - $pvr['rd'] = 0; - $pvr['redata'] = ''; - while( $pvr['di'] < 4 ) { - if( isset($pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]) ) { - if( $pvr['rd'] < 3 ) { - $pvr['hp'] += $pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]; - $pvr['redata'] = 'atgm='.$pvr['data']['atgm'][($pvr['dc']-$pvr['di'])].'|'.$pvr['redata']; - $pvr['rd']++; - } - } - $pvr['di']++; - }*/ - // + $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data'] = $pvr['redata']; mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/300.php b/_incl_data/class/priem/300.php index 4d416d0c..d0cfa0a8 100644 --- a/_incl_data/class/priem/300.php +++ b/_incl_data/class/priem/300.php @@ -40,23 +40,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { //действия $pvr['hp'] = rand(15,25); - /*// - $pvr['data'] = $priem->lookStatsArray($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data']); - $pvr['di'] = 0; - $pvr['dc'] = count($pvr['data']['atgm']); - $pvr['rd'] = 0; - $pvr['redata'] = ''; - while( $pvr['di'] < 4 ) { - if( isset($pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]) ) { - if( $pvr['rd'] < 3 ) { - $pvr['hp'] += $pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]; - $pvr['redata'] = 'atgm='.$pvr['data']['atgm'][($pvr['dc']-$pvr['di'])].'|'.$pvr['redata']; - $pvr['rd']++; - } - } - $pvr['di']++; - }*/ - // + $pvr['hp'] = rand(15,25); if( $pvr['ijk'] == 1 ) { $pvr['mgtype'] = 5; @@ -101,11 +85,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/301.php b/_incl_data/class/priem/301.php index 82a4725b..c32fce7d 100644 --- a/_incl_data/class/priem/301.php +++ b/_incl_data/class/priem/301.php @@ -41,32 +41,12 @@ if( isset($pr_used_this) && isset($pr_moment) ) { $pvr['promah'] = $pvr['hp'][2]; $pvr['krit'] = $pvr['hp'][1]; $pvr['hp'] = $pvr['hp'][0]; - /*// - $pvr['data'] = $priem->lookStatsArray($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data']); - $pvr['di'] = 0; - $pvr['dc'] = count($pvr['data']['atgm']); - $pvr['rd'] = 0; - $pvr['redata'] = ''; - while( $pvr['di'] < 4 ) { - if( isset($pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]) ) { - if( $pvr['rd'] < 3 ) { - $pvr['hp'] += $pvr['data']['atgm'][($pvr['dc']-$pvr['di'])]; - $pvr['redata'] = 'atgm='.$pvr['data']['atgm'][($pvr['dc']-$pvr['di'])].'|'.$pvr['redata']; - $pvr['rd']++; - } - } - $pvr['di']++; - }*/ - // + $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data'] = $pvr['redata']; mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/33.php b/_incl_data/class/priem/33.php index e38ab9d8..c80f9771 100644 --- a/_incl_data/class/priem/33.php +++ b/_incl_data/class/priem/33.php @@ -1,17 +1,14 @@ stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/56.php b/_incl_data/class/priem/56.php index 3c7a4312..4a8bddaf 100644 --- a/_incl_data/class/priem/56.php +++ b/_incl_data/class/priem/56.php @@ -1,8 +1,8 @@ stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/71.php b/_incl_data/class/priem/71.php index d93e3cc0..ac0620bc 100644 --- a/_incl_data/class/priem/71.php +++ b/_incl_data/class/priem/71.php @@ -57,11 +57,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/72.php b/_incl_data/class/priem/72.php index 4c5b4ba1..2dbe0d1b 100644 --- a/_incl_data/class/priem/72.php +++ b/_incl_data/class/priem/72.php @@ -59,11 +59,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/73.php b/_incl_data/class/priem/73.php index bbf69211..db0f5f19 100644 --- a/_incl_data/class/priem/73.php +++ b/_incl_data/class/priem/73.php @@ -59,7 +59,6 @@ if( isset($pr_used_this) && isset($pr_moment) && !isset($btl->info['id']) && !is mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - //$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); $pvr['promah_type'] = 0; $pvr['promah'] = false; $pvr['krit'] = false; diff --git a/_incl_data/class/priem/74.php b/_incl_data/class/priem/74.php index 373d1500..e83e8390 100644 --- a/_incl_data/class/priem/74.php +++ b/_incl_data/class/priem/74.php @@ -59,7 +59,6 @@ if( isset($pr_used_this) && isset($pr_moment) && !isset($btl->info['id']) && !is mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - //$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); $pvr['promah_type'] = 0; $pvr['promah'] = false; $pvr['krit'] = false; diff --git a/_incl_data/class/priem/75.php b/_incl_data/class/priem/75.php index d2cfa215..5e48a70c 100644 --- a/_incl_data/class/priem/75.php +++ b/_incl_data/class/priem/75.php @@ -59,7 +59,6 @@ if( isset($pr_used_this) && isset($pr_moment) && !isset($btl->info['id']) && !is mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - //$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); $pvr['promah_type'] = 0; $pvr['promah'] = false; $pvr['krit'] = false; diff --git a/_incl_data/class/priem/77.php b/_incl_data/class/priem/77.php index 3c8e205a..9838fb0d 100644 --- a/_incl_data/class/priem/77.php +++ b/_incl_data/class/priem/77.php @@ -61,7 +61,6 @@ if( isset($pr_used_this) && isset($pr_moment) && !isset($btl->info['id']) && !is mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - //$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); $pvr['promah_type'] = 0; $pvr['promah'] = false; $pvr['krit'] = false; diff --git a/_incl_data/class/priem/78.php b/_incl_data/class/priem/78.php index b941b14d..3c68362f 100644 --- a/_incl_data/class/priem/78.php +++ b/_incl_data/class/priem/78.php @@ -56,7 +56,6 @@ if( isset($pr_used_this) && isset($pr_moment) && !isset($btl->info['id']) && !is mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - //$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); $pvr['promah_type'] = 0; $pvr['promah'] = false; $pvr['krit'] = false; diff --git a/_incl_data/class/priem/79.php b/_incl_data/class/priem/79.php index f849eaca..2fa98418 100644 --- a/_incl_data/class/priem/79.php +++ b/_incl_data/class/priem/79.php @@ -59,7 +59,6 @@ if( isset($pr_used_this) && isset($pr_moment) && !isset($btl->info['id']) && !is mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - //$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); $pvr['promah_type'] = 0; $pvr['promah'] = false; $pvr['krit'] = false; diff --git a/_incl_data/class/priem/81.php b/_incl_data/class/priem/81.php index febc0a7a..2f2d4feb 100644 --- a/_incl_data/class/priem/81.php +++ b/_incl_data/class/priem/81.php @@ -57,11 +57,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/82.php b/_incl_data/class/priem/82.php index a9039d96..f6c76eb7 100644 --- a/_incl_data/class/priem/82.php +++ b/_incl_data/class/priem/82.php @@ -57,11 +57,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/83.php b/_incl_data/class/priem/83.php index e638ff5d..9b4aac10 100644 --- a/_incl_data/class/priem/83.php +++ b/_incl_data/class/priem/83.php @@ -57,11 +57,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priem/84.php b/_incl_data/class/priem/84.php index c54d3f7b..1624515d 100644 --- a/_incl_data/class/priem/84.php +++ b/_incl_data/class/priem/84.php @@ -57,11 +57,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { mysql_query('UPDATE `eff_users` SET `data` = "'.$pvr['redata'].'" WHERE `id` = "'.$btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'].'" LIMIT 1'); // $pvr['hp'] = floor($pvr['hp']); - /*$pvr['hp'] = $priem->magatack( $u2, $u1, $pvr['hp'], 'вода', 0 ); - $pvr['promah_type'] = $pvr['hp'][3]; - $pvr['promah'] = $pvr['hp'][2]; - $pvr['krit'] = $pvr['hp'][1]; - $pvr['hp'] = $pvr['hp'][0];*/ + $pvr['hpSee'] = '--'; $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; diff --git a/_incl_data/class/priems/curse_01.php b/_incl_data/class/priems/curse_01.php index b9b79a87..edfec68e 100644 --- a/_incl_data/class/priems/curse_01.php +++ b/_incl_data/class/priems/curse_01.php @@ -1,52 +1,8 @@ -testPower($this->stats[$this->uids[$uid1]],$this->stats[$this->uids[$uid2]],$hpmin,3,2); - //$hpmin = round($hpmin); - //if($hpmin < 0) { $hpmin = 0; } - //$hp2 = $this->stats[$this->uids[$uid2]]['hpNow']; - // - ////расчет урона стихий - // - //$hp2 -= $hpmin; - //if($hp2<0) - //{ - // $hp2 = 0; - //}elseif($hp2>$this->stats[$this->uids[$uid2]]['hpNow']) - //{ - // $hp2 = $this->stats[$this->uids[$uid2]]['hpNow']; - //} - // - //$this->takeExp($u->info['id'],$hpmin,$uid1,$uid2); - // - ////отнимаем НР - //$this->users[$this->uids[$uid2]]['hpNow'] = $hp2; - //$this->stats[$this->uids[$uid2]]['hpNow'] = $hp2; - //mysql_query('UPDATE `stats` SET `hpNow` = '.$hp2.' WHERE `id` = "'.$uid2.'" LIMIT 1'); - // - ////заносим в лог боя - //$vLog = 'time1='.time().'||s1='.$this->users[$this->uids[$uid1]]['sex'].'||t1='.$this->users[$this->uids[$uid1]]['team'].'||login1='.$this->users[$this->uids[$uid1]]['login'].'||s2='.$this->users[$this->uids[$uid2]]['sex'].'||t2='.$this->users[$this->uids[$uid2]]['team'].'||login2='.$this->users[$this->uids[$uid2]]['login'].''; - //$mas1 = array('time'=>time(),'battle'=>$this->info['id'],'id_hod'=>($this->hodID),'text'=>'','vars'=>$vLog,'zona1'=>'','zonb1'=>'','zona2'=>'','zonb2'=>'','type'=>'1'); - //if($hpmin>0) - //{ - // $hpmin = '-'.$hpmin; - //}else{ - // $hpmin = '--'; - //} - //$mas1['text'] = '{tm1} {u2} получил повреждение от магического предмета "'.$itm['name'].'". '.$hpmin.' ['.ceil($hp2).'/'.$this->stats[$this->uids[$uid2]]['hpAll'].']'; - //$this->add_log($mas1); - } -} - - -?> \ No newline at end of file +*/ \ No newline at end of file diff --git a/_incl_data/class/priems/itm286.end.php b/_incl_data/class/priems/itm286.end.php index f1daadf8..cb1751a7 100644 --- a/_incl_data/class/priems/itm286.end.php +++ b/_incl_data/class/priems/itm286.end.php @@ -12,7 +12,6 @@ if($e['bm_a1']=='itm286' && $end > 0) //наносим урон магическим кольцом $hpmin = rand(5,8); $hpmin += round($this->stats[$this->uids[$uid1]]['mg1']*1.35); - //$hpmin = $priem->testPower($this->stats[$this->uids[$uid1]],$this->stats[$this->uids[$uid2]],$hpmin,1,2); // $hpmin = $priem->magatack($uid1,$uid2,$hpmin,'огонь',false); $hpmin = $hpmin[0]; diff --git a/_incl_data/class/priems/itm347.end.php b/_incl_data/class/priems/itm347.end.php index 2ebfd8b1..8fe085b9 100644 --- a/_incl_data/class/priems/itm347.end.php +++ b/_incl_data/class/priems/itm347.end.php @@ -12,7 +12,6 @@ if($e['bm_a1']=='itm347' && $end > 0) //наносим урон магическим кольцом $hpmin = rand(5,8); $hpmin += round($this->stats[$this->uids[$uid1]]['mg1']*1.35); - //$hpmin = $priem->testPower($this->stats[$this->uids[$uid1]],$this->stats[$this->uids[$uid2]],$hpmin,1,2); // $hpmin = $priem->magatack($uid1,$uid2,$hpmin,'огонь',false); $hpmin = $hpmin[0]; diff --git a/_incl_data/class/priems/moment.php b/_incl_data/class/priems/moment.php index af051ec6..898295b5 100644 --- a/_incl_data/class/priems/moment.php +++ b/_incl_data/class/priems/moment.php @@ -1,9 +1,22 @@ -info['enemy'].'" and `v2`="191" and `delete`="0" LIMIT 1')); //Ошеломить @@ -27,23 +40,6 @@ if($pl['id'] == 189) { $vLog = 'time1='.time().'||s1='.$u->info['sex'].'||t1='.$u->info['team'].'||login1='.$u->info['login'].'||s2='.$btl->users[$btl->uids[$u->info['enemy']]]['sex'].'||t2='.$btl->users[$btl->uids[$u->info['enemy']]]['team'].'||login2='.$btl->users[$btl->uids[$u->info['enemy']]]['login'].''; $mas1 = array('time'=>time(),'battle'=>$btl->info['id'],'id_hod'=>$btl->hodID,'text'=>'','vars'=>$vLog,'zona1'=>'','zonb1'=>'','zona2'=>'','zonb2'=>'','type'=>'1'); - /*$hp = $u->info['level']*2-$u->info['level']; - - if($hp < 0) { - $hp = 0; - }*/ - - /*$btl->users[$btl->uids[$u->info['enemy']]]['hpNow'] -= $hp; - $btl->stats[$btl->uids[$u->info['enemy']]]['hpNow'] -= $hp; - $btl->users[$btl->uids[$u->info['enemy']]]['last_hp'] = -$hp; - mysql_query('UPDATE `stats` SET `hpNow` = "'.$btl->stats[$btl->uids[$u->info['enemy']]]['hpNow'].'",`last_hp` = "'.$btl->users[$btl->uids[$u->info['enemy']]]['last_hp'].'" WHERE `id` = "'.$u->info['enemy'].'" LIMIT 1'); - - if($hp < 1) { - $hp = '--'; - }else{ - $hp = -$hp; - }*/ - $mas1['text'] = '{tm1} {u1} {1x16x0} прием "'.$pl['name'].'" и ошеломил'.$sx.' персонажа {u2} на два хода.'; $pz = $btl->users[$btl->uids[$u->info['enemy']]]['priems_z']; $p_id = $btl->users[$btl->uids[$u->info['enemy']]]['priems']; @@ -318,11 +314,7 @@ if($pl['id'] == 189) { $pr78++; } } - /*if($pr78 > 0) { - $this->stats[$this->uids[$u1['id']]] = $u->getStats($u1['id'],0); - $this->stats[$this->uids[$u2['id']]] = $u->getStats($u2['id'],0); - $this->re_pd['restart'] = true; - }*/ + unset($pr78,$vLog,$mas1,$pl031,$sp031); } }elseif($pl['id']==12) diff --git a/_incl_data/class/quest/dailyquest.php b/_incl_data/class/quest/dailyquest.php index 711498df..90ba70e6 100644 --- a/_incl_data/class/quest/dailyquest.php +++ b/_incl_data/class/quest/dailyquest.php @@ -11,7 +11,7 @@ $txt .= '
    Вы уже получили '; */ - +$txt = isset($txt) ?: ''; $test = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars`= "day_quest" LIMIT 1')); if (!isset($test['id'])) { diff --git a/admin.php b/admin.php deleted file mode 100644 index cf14996a..00000000 --- a/admin.php +++ /dev/null @@ -1,578 +0,0 @@ -addItem(730, $pl['id'], '|nosale=1|notransfer=1|sudba=1|halo1=1'); - //$u->addItem(1167, $pl['id'], '|nosale=1|notransfer=1|sudba=1|halo1=1'); - - $i = 1; - while( $i <= 25 ) { - //$u->addItem(4913, $pl['id'], '|nosale=1|notransfer=1|sudba=1|halo1=1'); - if( $i <= 10 ) { - //$u->addItem(4039, $pl['id'], '|nosale=1|notransfer=1|sudba=1|halo1=1'); - } - //$u->addItem(4690, $pl['id'], '|nosale=1|notransfer=1|sudba=1|halo1=1'); - $i++; - } - - // - /*$sp1 = mysql_query('SELECT `id` FROM `items_main` WHERE `magic_inci` = "tznanie" AND `name` NOT LIKE "%(том%" AND `name` NOT LIKE "%(секретный том%"'); - while( $pl1 = mysql_fetch_array($sp1) ) { - mysql_query('INSERT INTO `actions` ( - `uid`,`time`,`city`,`room`,`vars`,`vals` - ) VALUES ( - "'.$pl['id'].'","'.time().'","capitalcity","213","read","'.$pl1['id'].'" - )'); - }*/ - - } - die(); -} - -include('_incl_data/class/bot.logic.php'); - - -if( $u->info['admin'] > 0 ) { - - - if(isset($_POST['complect_saver'])) { - - $cs = $_POST['complect_saver']; - - $cs = json_decode($cs); - - $v1 = ''; - $v2 = ''; - $eff = '0'; - $csa = $cs->{'lvl'}; - $csm = $cs->{'lvl'}+1; - if($csa > 5) { - $csa = 5; - } - if($csm > 10) { - $csm = 10; - } - - $up_id = 0; - - $sp = mysql_query('SELECT * FROM `levels` ORDER BY `upLevel`'); - $ups = array(); - $all_ups = array(); - $lvl = 0; - while($pl = mysql_fetch_array($sp)) { - $all_ups[$lvl][(0+$ups[$lvl])] = ($pl['upLevel']-1); - $ups[$lvl]++; - if($lvl != $pl['nextLevel']) { - $lvl = $pl['nextLevel']; - }else{ - } - } - - $up_id = $all_ups[$cs->{'lvl'}][$cs->{'up'}]; - - $stats = 's1='.$cs->{'s1'}.'|s2='.$cs->{'s2'}.'|s3='.$cs->{'s3'}.'|s4='.$cs->{'s4'}.'|rinv=40|m9=5|m6=10|a1='.$csa.'|a2='.$csa.'|a3='.$csa.'|a4='.$csa.'|a5='.$csa.'|mg1='.$csm.'|mg2='.$csm.'|mg3='.$csm.'|mg4='.$csm.'|mg5='.$csm.'|mg6='.$csa.'|mg7='.$csa.'|s5='.$cs->{'s5'}.'|s6='.$cs->{'s6'}.'|os1=0|os2=0|os3=0|os4=0|os5=0|os6=0|os7=0|os8=0|os9=0|os10=0|os11=0|s7=0|s8=0|s9=0|s10=0|a6=5|a7=5'; - - $i = 0; - while( $i < 20 ) { - - if( $cs->{'w'.$i} > 0 ) { - $v1 .= ',`w'.$i.'`'; - $v2 .= ',"'.$cs->{'w'.$i}.'"'; - } - - if( $cs->{'s'.$i} > 0 ) { - $v1 .= ',`s'.$i.'`'; - $v2 .= ',"'.$cs->{'s'.$i}.'"'; - } - - if( $cs->{'e'.$i} > 0 ) { - $v1 .= ',`e'.$i.'`'; - $v2 .= ',"'.$cs->{'e'.$i}.'"'; - $eff .= ','.$i; - } - - if( $cs->{'p'.$i} > 0 ) { - $v1 .= ',`p'.$i.'`'; - $v2 .= ',"'.$cs->{'p'.$i}.'"'; - } - - $i++; - } - mysql_query('INSERT INTO `a_bot_tree` (`delete`,`class`,`level`,`up`,`stats`,`eff`,`pr`'.$v1.') VALUES ("1","'.$cs->{'class'}.'","'.$cs->{'lvl'}.'","'.$up_id.'","'.$stats.'","'.$eff.'","'.$pr.'"'.$v2.') '); - - $_GET['good'] = mysql_insert_id(); - //header('location: admin.php?good'); - } - - if(isset($_GET['good'])) { - $error = 'Комлпект был успешно сохранен!

    Номер комплекта: '.$_GET['good']; - die($error); - } - - - /* ПРЕДМЕТЫ */ - $w = array(); - $ws = array( - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 10, - 10, - 13, - 14, - 15, - 16, - 17 - ); - - $i = 1; - while( $i <= 17 ) { - if($i != 14) { - $sp = mysql_query('SELECT `id`,`name`,`img` FROM `items_main` WHERE `inslot` = "'.$ws[$i].'" ORDER BY `type` ASC,`level` ASC'); - while($pl = mysql_fetch_array($sp)) { - $w[$i] .= '['.$pl['id'].',"'.$pl['name'].'","'.$pl['img'].'"],'; - } - $w[$i] = rtrim($w[$i],','); - } - $i++; - } - - $sp = mysql_query('SELECT `id`,`name`,`img` FROM `items_main` WHERE `2too` = "1" OR `inslot` = "14" ORDER BY `type` ASC,`level` ASC'); - while($pl = mysql_fetch_array($sp)) { - $w[14] .= '['.$pl['id'].',"'.$pl['name'].'","'.$pl['img'].'"],'; - } - $w[14] = rtrim($w[14],','); - - - /* ПРИЕМЫ */ - $pr = ''; - - $sp = mysql_query('SELECT `id`,`name`,`img` FROM `priems` ORDER BY `img` ASC'); - while($pl = mysql_fetch_array($sp)) { - $pr .= '['.$pl['id'].',"'.$pl['name'].'","'.$pl['img'].'.gif"],'; - } - $pr = rtrim($pr,','); - - - /* ЭФФЕКТЫ */ - $eff = ''; - - $sp = mysql_query('SELECT `id2`,`mname`,`img` FROM `eff_main` WHERE `type1` != 23 ORDER BY `type1` ASC'); - while($pl = mysql_fetch_array($sp)) { - $eff .= '['.$pl['id2'].',"'.$pl['mname'].'","'.$pl['img'].'"],'; - } - $eff = rtrim($eff,','); - - -?> - - - - - - -Редактор обмундирования персонажей - - - - - - - - - - - - - - -
    -
    - -
    - - - - - - -
    - - - - - - - - - - - - - - - -
    - - - - - - - - - -
    -
     
    - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    - - - - - -
    -

    Эффекты:

    - - - - - - - - - - - - - - - - - -
    -

    Приемы:

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -

    Сохранить комплект в базу

    Статы персонажа (родные):

    -

    - Сила: -
    - Ловкость: -
    - Интуиция: -
    - Выносливость: -
    - Интелект: -
    - Мудрость: - -

    -

    Выберите класс комплекта и апп:

    -

    - Класс: - -
    - Уровень: - -
    - Апп: - -
    -

    - -
    -
    -
    -
    - Предметы для слота: -
    -
    - -
    -
    - - - - \ No newline at end of file diff --git a/balance.php b/balance.php index c1f56317..1e1db0ed 100644 --- a/balance.php +++ b/balance.php @@ -1,319 +1,415 @@ info['admin'] != 1 && !isset($_COOKIE['adminionself']) ) { - die('balance.php'); +$u = User::start(); +if (isset($_GET['connect'])) { + setcookie('adminionself', 'trueself', time() + 86400); + header('location: /balance.php'); + die(); +} elseif ($u->info['admin'] != 1 && !isset($_COOKIE['adminionself'])) { + die('balance.php'); } -if($u->info['admin']<1 && !isset($_COOKIE['adminionself'])) -{ - header('location: https://new-combats.com/'); die(); +if ($u->info['admin'] < 1 && !isset($_COOKIE['adminionself'])) { + header('location: https://new-combats.com/'); + die(); } $noobs = ''; -/* -if(!isset($_GET['noob']) || isset($_POST['money'])) { - $noobs = ' AND `time` < 1443155244 '; -} -*/ +if (isset($_GET['all'])) { + $data = [ -if(isset($_GET['all'])) { - $data = array( - - ); //по дням с самого начала - $sp = mysql_query('SELECT * FROM `balance_money` WHERE `money` > 0'.$noobs.' ORDER BY `id` ASC'); - $max = 0; - // - $starttime = mysql_fetch_array(mysql_query('SELECT `time` FROM `balance_money` ORDER BY `id` ASC LIMIT 1')); - if(isset($starttime['time'])) { - $starttime = $starttime['time']; - }else{ - $starttime = time(); - } - // - while( $pl = mysql_fetch_array($sp) ) { - if($starttime == 0) { - $starttime = $pl['time']-50700; - } - $data[date('d.m.Y',$pl['time'])] += $pl['money']; - if( $max < $pl['money'] ) { - $max = $pl['money']; - } - } - echo ''; - echo ' + echo '
    '; - $i = $starttime; - $j = 0; - $mn = 0; - while( $i <= time() ) { - // - $nl = 0; - if( $data[date('d.m.Y',$i)] == 0 ) { - $nl = 1; - } - if( $mn != date('m',$i) || date('d.m.Y') == date('d.m.Y',$i) ) { - if( $mn != 0 ) { - echo '
    '.$summ.' RUB


    '; - } - $summ = 0; - $mn = date('m',$i); - } - echo ''; - // - $i += 86400; - $sum += round(($data[date('d.m.Y',$i)]),2); - $summ += round(($data[date('d.m.Y',$i)]),2); - $today = round(($data[date('d.m.Y',$i)]),2); - $j++; - } - // - // - // - echo '
     

    Дней: '.$j.' , сумма: '.$sum.' RUB
    Среднее в день: '.round($sum/$j,2).' RUB
    Среднее в месяц: '.round($sum/$j*30,2).' RUB
    За сегодня: '.$today.' RUB'; - die(); + $i = $starttime; + $j = 0; + $mn = 0; + while ($i <= time()) { + // + $nl = 0; + if ($data[date('d.m.Y', $i)] == 0) { + $nl = 1; + } + if ($mn != date('m', $i) || date('d.m.Y') == date('d.m.Y', $i)) { + if ($mn != 0) { + echo '
    ' . $summ . ' RUB

    '; + } + $summ = 0; + $mn = date('m', $i); + } + echo ''; + // + $i += 86400; + $sum += round(($data[date('d.m.Y', $i)]), 2); + $summ += round(($data[date('d.m.Y', $i)]), 2); + $today = round(($data[date('d.m.Y', $i)]), 2); + $j++; + } + // + // + // + echo '
     

    Дней: ' . $j . ' , сумма: ' . $sum . ' RUB
    Среднее в день: ' . round( + $sum / $j, 2 + ) . ' RUB
    Среднее в месяц: ' . round($sum / $j * 30, 2) . ' RUB
    За сегодня: ' . $today . ' RUB'; + die(); } -if(isset($_POST['money'])) -{ - $balance = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `balance_money` WHERE `cancel` = 0'.$noobs.'')); - $balance = $balance[0]+(int)$_POST['money']; - mysql_query('INSERT INTO `balance_money` (`time`,`ip`,`money`,`comment2`,`balance`) VALUES ("'.time().'","'.$u->info['ip'].'","'.((int)$_POST['money']).'","'.mysql_real_escape_string($_POST['text']).'","'.$balance.'")'); -}elseif(isset($_GET['cancel'])) -{ - mysql_query('UPDATE `balance_money` SET `cancel` = "'.$u->info['id'].'" WHERE `id` = "'.((int)$_GET['cancel']).'" LIMIT 1'); -}elseif(isset($_GET['recancel'])) -{ - mysql_query('UPDATE `balance_money` SET `cancel` = "0" WHERE `id` = "'.((int)$_GET['recancel']).'" LIMIT 1'); +if (isset($_POST['money'])) { + $balance = mysql_fetch_array( + mysql_query('SELECT SUM(`money`) FROM `balance_money` WHERE `cancel` = 0' . $noobs . '') + ); + $balance = $balance[0] + (int)$_POST['money']; + mysql_query( + 'INSERT INTO `balance_money` (`time`,`ip`,`money`,`comment2`,`balance`) VALUES ("' . time( + ) . '","' . $u->info['ip'] . '","' . ((int)$_POST['money']) . '","' . mysql_real_escape_string( + $_POST['text'] + ) . '","' . $balance . '")' + ); +} elseif (isset($_GET['cancel'])) { + mysql_query( + 'UPDATE `balance_money` SET `cancel` = "' . $u->info['id'] . '" WHERE `id` = "' . ((int)$_GET['cancel']) . '" LIMIT 1' + ); +} elseif (isset($_GET['recancel'])) { + mysql_query('UPDATE `balance_money` SET `cancel` = "0" WHERE `id` = "' . ((int)$_GET['recancel']) . '" LIMIT 1'); } $mm = date('m'); $yy = date('Y'); -if(isset($_GET['mm'])) -{ - $mm = $_GET['mm'];//strtotime +if (isset($_GET['mm'])) { + $mm = $_GET['mm'];//strtotime } -$mf = array( -'01' => 'January', -'02' => 'February', -'03' => 'March', -'04' => 'April', -'05' => 'May', -'06' => 'June', -'07' => 'July', -'08' => 'August', -'09' => 'September', -'10' => 'October', -'11' => 'November', -'12' => 'December' -); -$mf2 = array( -'12' => 'January', -'01' => 'February', -'02' => 'March', -'03' => 'April', -'04' => 'May', -'05' => 'June', -'06' => 'July', -'07' => 'August', -'08' => 'September', -'09' => 'October', -'10' => 'November', -'11' => 'December' -); -if(!isset($mf[$mm])) -{ - $mm = date('m'); +$mf = [ + '01' => 'January', + '02' => 'February', + '03' => 'March', + '04' => 'April', + '05' => 'May', + '06' => 'June', + '07' => 'July', + '08' => 'August', + '09' => 'September', + '10' => 'October', + '11' => 'November', + '12' => 'December', +]; +$mf2 = [ + '12' => 'January', + '01' => 'February', + '02' => 'March', + '03' => 'April', + '04' => 'May', + '05' => 'June', + '06' => 'July', + '07' => 'August', + '08' => 'September', + '09' => 'October', + '10' => 'November', + '11' => 'December', +]; +if (!isset($mf[$mm])) { + $mm = date('m'); } $yy2 = $yy; -if($mm=='12') -{ - $yy2++; +if ($mm == '12') { + $yy2++; } -$time_start = strtotime("1 ".$mf[$mm]." ".$yy.""); -$time_finish = strtotime("1 ".$mf2[$mm]." ".$yy2.""); +$time_start = strtotime("1 " . $mf[$mm] . " " . $yy . ""); +$time_finish = strtotime("1 " . $mf2[$mm] . " " . $yy2 . ""); -$balance = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `balance_money` WHERE `cancel` = 0'.$noobs.'')); +$balance = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `balance_money` WHERE `cancel` = 0' . $noobs . '')); $balance = $balance[0]; -$plus = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `balance_money` WHERE `cancel` = 0'.$noobs.' AND `time` >= '.$time_start.' AND `time` < '.$time_finish.' AND `cancel` = "0"')); +$plus = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`money`) FROM `balance_money` WHERE `cancel` = 0' . $noobs . ' AND `time` >= ' . $time_start . ' AND `time` < ' . $time_finish . ' AND `cancel` = "0"' + ) +); $plus = $plus[0]; ?> - -Отчетность проекта - - + + Отчетность проекта + + - - - - - - - + + + + + + +
    - Период отчетности: - - , - года. - Доступные средства: - RUB | Прибыль за этот месяц: RUB | Дата генерации отчета: - -
    - = '.$dt.''.$noobs.' AND `time` < '.($dt+86400).'')); - $lim = $lim[0]; - $mst = mysql_fetch_array(mysql_query('SELECT `money`,`balance` FROM `balance_money` WHERE `time` < '.$dt.''.$noobs.' AND `cancel` = "0" ORDER BY `id` DESC LIMIT 1')); $mst = $mst['balance']; - $mft = mysql_fetch_array(mysql_query('SELECT `money`,`balance` FROM `balance_money` WHERE `time` >= '.$dt.''.$noobs.' AND `time` < '.($dt+86400).' AND `cancel` = "0" ORDER BY `id` DESC LIMIT 1')); $mft = $mft['balance']; - ?> - -
    -
    Дата: , Операций за этот день: , средств в начале дня: RUB, средств в конце дня: RUB
    - - = '.$dt.''.$noobs.' AND `time` < '.($dt+86400).' ORDER BY `time` ASC LIMIT '.$lim); - while($pl = mysql_fetch_array($sp)) - { - if($pl['money']>0 && $pl['cancel']==0) - { - ?> - - - - - -
    - - - - - - - -
    RUBОстаток: RUBОткрепить'; }else{ echo 'Прикрепить'; } ?>
    -
    - - - - - -
     
    -
    - - - - - - -
    - - - - - -
     
    -
    - - - - - - - -
    RUBОстаток: RUBОткрепить'; }else{ echo 'Прикрепить'; } ?>
    -
    - - -
    - - -


    -
    -
    - - - - - - - - - - -
    Сумма: - RUB

    Комментарий (500 символов максимум):

    -

    - -

    -
    -
    - - -


    time :: -
    +
    + Период отчетности: + + , + года. + Доступные средства: + RUB | Прибыль за + этот месяц: RUB | Дата + генерации отчета: + +
    +
    + = ' . $dt . '' . $noobs . ' AND `time` < ' . ($dt + 86400) . '' + ) + ); + $lim = $lim[0]; + $mst = mysql_fetch_array( + mysql_query( + 'SELECT `money`,`balance` FROM `balance_money` WHERE `time` < ' . $dt . '' . $noobs . ' AND `cancel` = "0" ORDER BY `id` DESC LIMIT 1' + ) + ); + $mst = $mst['balance']; + $mft = mysql_fetch_array( + mysql_query( + 'SELECT `money`,`balance` FROM `balance_money` WHERE `time` >= ' . $dt . '' . $noobs . ' AND `time` < ' . ($dt + 86400) . ' AND `cancel` = "0" ORDER BY `id` DESC LIMIT 1' + ) + ); + $mft = $mft['balance']; + ?> + +
    +
    Дата: , Операций за этот + день: , средств в начале дня: + RUB, средств в конце дня: RUB +
    + + = ' . $dt . '' . $noobs . ' AND `time` < ' . ($dt + 86400) . ' ORDER BY `time` ASC LIMIT ' . $lim + ); + while ($pl = mysql_fetch_array($sp)) { + if ($pl['money'] > 0 && $pl['cancel'] == 0) { + ?> + + + + + +
    + + + + + + + +
    RUB + Остаток: RUB + Открепить'; + } else { + echo 'Прикрепить'; + } ?>
    +
    + + + + + +
     
    +
    + + + + + + +
    + + + + + +
    +  
    +
    + + + + + + + +
    RUB + Остаток: RUB + Открепить'; + } else { + echo 'Прикрепить'; + } ?>
    +
    + + +
    + + +


    +
    +
    + + + + + + + + + + +
    Сумма: + RUB +

    Комментарий (500 символов максимум):

    +

    + +

    +
    +
    + + +


    time :: +
    diff --git a/bandit.php b/bandit.php index 785c15a1..858ce200 100644 --- a/bandit.php +++ b/bandit.php @@ -1,150 +1,159 @@ room['name']!='Однорукий бандит') -{ - die(); -}else{ - - //Раздаем выйгрыши - - - function get2str($key='', $val='') { - $get = $_GET; - if ( is_array($key) ) { - if ( count($key)>0 ) foreach ( $key as $k=>$v ) $get[$k] = $v; - } else $get[$key] = $val; - if ( count($get)>0 ) { - foreach ( $get as $k=>$v ) if ( empty($v) ) unset($get[$k]); - } - if ( count($get)>0 ) { - foreach ( $get as $k=>$v ) $get[$k] = $k.'='.urlencode($v); - return '?'.implode('&', $get); - } - } - - $r = ''; - - if( isset($_GET['bet']) ) { - $s = 1; - if( $_GET['bet'] == 2 ) { - $s = 2; - }elseif( $_GET['bet'] == 3 ) { - $s = 3; - } - if( $u->bank['money2'] < $s ) { - //Недостаточно денег! - }else{ - //Играем! - $w1 = rand(0,4); - $w2 = rand(0,4); - $w3 = rand(0,4); - // - $win = 0; - $n = 99; - - if( $w1 == 0 && $w2 == 0 && $w3 == 0 ) { - // 50 100 150 - $win = 50; - $n = 0; - }elseif( $w1 == 1 && $w2 == 1 && $w3 == 1 ) { - // 20 40 60 - $win = 20; - $n = 1; - }elseif( $w1 == 2 && $w2 == 2 && $w3 == 2 ) { - // 10 20 30 - $win = 10; - $n = 2; - }elseif( $w1 == 3 && $w2 == 3 && $w3 == 3 ) { - // 4 8 12 - $win = 4; - $n = 3; - }elseif( $w1 == 4 && $w2 == 4 && $w3 == 4 ) { - // 2 4 6 - $win = 2; - $n = 4; - }elseif( $w1 == 4 && $w2 == 4 ) { - // 1 2 3 - $win = 1; - $n = 5; - }elseif( $w1 == 4 && $w3 == 4 ) { - // 1 2 3 - $win = 1; - $n = 5; - }elseif( $w2 == 4 && $w3 == 4 ) { - // 1 2 3 - $win = 1; - $n = 5; - } - - if( ( $n == 5 || $n == 4 || $n == 3 ) && rand(0,100) >= 50 ) { - //Играем! - $w1 = rand(0,2); - $w2 = rand(0,3); - $w3 = rand(0,3); - // - $win = 0; - $n = 99; - - if( $w1 == 0 && $w2 == 0 && $w3 == 0 ) { - // 50 100 150 - $win = 50; - $n = 0; - }elseif( $w1 == 1 && $w2 == 1 && $w3 == 1 ) { - // 20 40 60 - $win = 20; - $n = 1; - }elseif( $w1 == 2 && $w2 == 2 && $w3 == 2 ) { - // 10 20 30 - $win = 10; - $n = 2; - }elseif( $w1 == 3 && $w2 == 3 && $w3 == 3 ) { - // 4 8 12 - $win = 4; - $n = 3; - }elseif( $w1 == 4 && $w2 == 4 && $w3 == 4 ) { - // 2 4 6 - $win = 2; - $n = 4; - }elseif( $w1 == 4 && $w2 == 4 ) { - // 1 2 3 - $win = 1; - $n = 5; - }elseif( $w1 == 4 && $w3 == 4 ) { - // 1 2 3 - $win = 1; - $n = 5; - }elseif( $w2 == 4 && $w3 == 4 ) { - // 1 2 3 - $win = 1; - $n = 5; - } - } - // - $u->bank['money2'] -= $s; - $u->bank['money2'] += $s*$win; - mysql_query('UPDATE `bank` SET `money2` = "'.$u->bank['money2'].'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - // - mysql_query('INSERT INTO `bandit` (`uid`,`time`,`room`,`s`,`wm`,`w`) VALUES ( - "'.$u->info['id'].'","'.time().'","'.$u->info['room'].'","'.$s.'","'.($s*$win).'","'.$w1.$w2.$w3.'" - ) '); - $gid = mysql_insert_id(); - // - if( $win > 0 ) { - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$u->info['city']."','390','','','[Крупье] Игрок ".mysql_real_escape_string($u->info['login'])." выиграл ".($s*$win).".00 екр., ставка: ".$s.".00 екр., игра №".$gid."','".time()."','6','0')"); - } - // - $r .= 'cash='.floor($u->bank['money2']).''; - $r .= '&w1='.$w1.'&w2='.$w2.'&w3='.$w3.'&n='.$n.'&win='.($s*$win).''; - } - }else{ - $r .= 'cash='.floor($u->bank['money2']).''; - } - - echo $r; +if ($u->room['name'] != 'Однорукий бандит') { + die(); } -?> \ No newline at end of file + +//Раздаем выйгрыши + + +function get2str($key = '', $val = '') +{ + $get = $_GET; + if (is_array($key)) { + if (count($key) > 0) { + foreach ($key as $k => $v) { + $get[$k] = $v; + } + } + } else { + $get[$key] = $val; + } + if (count($get) > 0) { + foreach ($get as $k => $v) { + if (empty($v)) { + unset($get[$k]); + } + } + } + if (count($get) > 0) { + foreach ($get as $k => $v) { + $get[$k] = $k . '=' . urlencode($v); + } + return '?' . implode('&', $get); + } +} + +$r = ''; + +if (isset($_GET['bet'])) { + $s = 1; + if ($_GET['bet'] == 2) { + $s = 2; + } elseif ($_GET['bet'] == 3) { + $s = 3; + } + if ($u->bank['money2'] >= $s) { + //Играем! + $w1 = rand(0, 4); + $w2 = rand(0, 4); + $w3 = rand(0, 4); + // + $win = 0; + $n = 99; + + if ($w1 == 0 && $w2 == 0 && $w3 == 0) { + // 50 100 150 + $win = 50; + $n = 0; + } elseif ($w1 == 1 && $w2 == 1 && $w3 == 1) { + // 20 40 60 + $win = 20; + $n = 1; + } elseif ($w1 == 2 && $w2 == 2 && $w3 == 2) { + // 10 20 30 + $win = 10; + $n = 2; + } elseif ($w1 == 3 && $w2 == 3 && $w3 == 3) { + // 4 8 12 + $win = 4; + $n = 3; + } elseif ($w1 == 4 && $w2 == 4 && $w3 == 4) { + // 2 4 6 + $win = 2; + $n = 4; + } elseif ($w1 == 4 && $w2 == 4) { + // 1 2 3 + $win = 1; + $n = 5; + } elseif ($w1 == 4 && $w3 == 4 || $w2 == 4 && $w3 == 4) { + // 1 2 3 + $win = 1; + $n = 5; + } + + if (($n == 5 || $n == 4 || $n == 3) && rand(0, 100) >= 50) { + //Играем! + $w1 = rand(0, 2); + $w2 = rand(0, 3); + $w3 = rand(0, 3); + // + $win = 0; + $n = 99; + + if ($w1 == 0 && $w2 == 0 && $w3 == 0) { + // 50 100 150 + $win = 50; + $n = 0; + } elseif ($w1 == 1 && $w2 == 1 && $w3 == 1) { + // 20 40 60 + $win = 20; + $n = 1; + } elseif ($w1 == 2 && $w2 == 2 && $w3 == 2) { + // 10 20 30 + $win = 10; + $n = 2; + } elseif ($w1 == 3 && $w2 == 3 && $w3 == 3) { + // 4 8 12 + $win = 4; + $n = 3; + } elseif ($w1 == 4 && $w2 == 4 && $w3 == 4) { + // 2 4 6 + $win = 2; + $n = 4; + } elseif ($w1 == 4 && $w2 == 4) { + // 1 2 3 + $win = 1; + $n = 5; + } elseif ($w1 == 4 && $w3 == 4 || $w2 == 4 && $w3 == 4) { + // 1 2 3 + $win = 1; + $n = 5; + } + } + // + $u->bank['money2'] -= $s; + $u->bank['money2'] += $s * $win; + mysql_query( + 'UPDATE `bank` SET `money2` = "' . $u->bank['money2'] . '" WHERE `id` = "' . $u->bank['id'] . '" LIMIT 1' + ); + // + mysql_query( + 'INSERT INTO `bandit` (`uid`,`time`,`room`,`s`,`wm`,`w`) VALUES ( + "' . $u->info['id'] . '","' . time( + ) . '","' . $u->info['room'] . '","' . $s . '","' . ($s * $win) . '","' . $w1 . $w2 . $w3 . '" + ) ' + ); + $gid = mysql_insert_id(); + // + if ($win > 0) { + mysql_query( + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','390','','','[Крупье] Игрок " . mysql_real_escape_string( + $u->info['login'] + ) . " выиграл " . ($s * $win) . ".00 екр., ставка: " . $s . ".00 екр., игра №" . $gid . "','" . time( + ) . "','6','0')" + ); + } + // + $r .= 'cash=' . floor($u->bank['money2']); + $r .= '&w1=' . $w1 . '&w2=' . $w2 . '&w3=' . $w3 . '&n=' . $n . '&win=' . ($s * $win); + } +} else { + $r .= 'cash=' . floor($u->bank['money2']); +} +echo $r; diff --git a/bonuss.php b/bonuss.php index dba4b2fa..f25ab081 100644 --- a/bonuss.php +++ b/bonuss.php @@ -1,46 +1,46 @@ -"; - } +const GAME = true; +require_once('_incl_data/__config.php'); +require_once('_incl_data/class/__db_connect.php'); +$u = User::start(); +$d = new Dungeon; +$d->start(); + +if ($_POST['code'] == $_SESSION['code'] && $_POST['code'] != '') { + echo ""; +} ?> - - - + + +
    - +
    - -
    - + +
    +
    \ No newline at end of file diff --git a/breakchaos.php b/breakchaos.php index a913c7c3..446d5eeb 100644 --- a/breakchaos.php +++ b/breakchaos.php @@ -1,158 +1,133 @@ - -1 -SeDuCeR [12] -243 -47748 -»» - -*/ +$u = User::start(); $r1 = ''; $r2 = ''; $lvl = 8; $lvl_name = 'Любители'; -if( $_GET['level'] == 9 ) { - $lvl = 9; - $lvl_name = 'Бывалые'; -}elseif( $_GET['level'] == 10 ) { - $lvl = 10; - $lvl_name = 'Профессионалы'; -}elseif( $_GET['level'] == 11 ) { - $lvl = 11; - $lvl_name = 'Жители'; +if ($_GET['level'] == 9) { + $lvl = 9; + $lvl_name = 'Бывалые'; +} elseif ($_GET['level'] == 10) { + $lvl = 10; + $lvl_name = 'Профессионалы'; +} elseif ($_GET['level'] == 11) { + $lvl = 11; + $lvl_name = 'Жители'; } $i = 1; $j = 1; -$sp = mysql_query('SELECT `id`,`uid`,`level`,`time` FROM `izlom_rating` WHERE `level` = "' . $lvl . '" GROUP BY `uid` ORDER BY SUM(`obr`) DESC'); -while( $pl = mysql_fetch_array($sp) ) { - // - $ret = mysql_fetch_array(mysql_query('SELECT SUM(`obr`) FROM `izlom_rating` WHERE `uid` = "'.$pl['uid'].'" AND `level` = "'.$pl['level'].'" LIMIT 1')); - $ret = round($ret[0]*(154.97)); - // - $pl2 = mysql_fetch_array(mysql_query('SELECT * FROM `izlom_rating` WHERE `uid` = "'.$pl['uid'].'" AND `level` = "'.$pl['level'].'" ORDER BY `time` DESC LIMIT 1')); - // - $r1 .= ' +$sp = mysql_query( + 'SELECT `id`,`uid`,`level`,`time` FROM `izlom_rating` WHERE `level` = "' . $lvl . '" GROUP BY `uid` ORDER BY SUM(`obr`) DESC' +); +while ($pl = mysql_fetch_array($sp)) { + // + $ret = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`obr`) FROM `izlom_rating` WHERE `uid` = "' . $pl['uid'] . '" AND `level` = "' . $pl['level'] . '" LIMIT 1' + ) + ); + $ret = round($ret[0] * (154.97)); + // + $pl2 = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `izlom_rating` WHERE `uid` = "' . $pl['uid'] . '" AND `level` = "' . $pl['level'] . '" ORDER BY `time` DESC LIMIT 1' + ) + ); + // + $r1 .= ' ' . $i . ' -' . $u->microLogin($pl['uid'],1) . ' +' . $u->microLogin($pl['uid'], 1) . ' ' . $pl2['voln'] . ' -'.$ret.' -»» -'; - // - if( date('d.m.Y') == date('d.m.Y',$pl2['time']) ) { - $r2 .= ' -' . $j . ' -' . $u->microLogin($pl['uid'],1) . ' -' . $pl2['voln'] . ' -'.$ret.' -»» -'; - $j++; - } - $i++; -} - -/*$sp = mysql_query('SELECT * FROM `izlom_rating` WHERE `level` = "' . $lvl . '" GROUP BY `uid` ORDER BY MAX(`time`) DESC'); -while( $pl = mysql_fetch_array($sp) ) { - // - $ret = mysql_fetch_array(mysql_query('SELECT SUM(`obr`) FROM `izlom_rating` WHERE `uid` = "'.$pl['uid'].'" AND `level` = "'.$pl['level'].'" LIMIT 1')); - $ret = round($ret[0]*(154.97)); - // - $r1 .= ' -' . $i . ' -' . $u->microLogin($pl['uid'],1) . ' -' . $pl['voln'] . ' -'.$ret.' -»» -'; - -if( $pl['uid'] == 1000000 ) { - echo date('d.m.Y',$pl['time']).'
    '; -} - if( date('d.m.Y') == date('d.m.Y',$pl['time']) ) { - $r2 .= ' -' . $j . ' -' . $u->microLogin($pl['uid'],1) . ' -' . $pl['voln'] . ' ' . $ret . ' »» '; - $j++; - } - $i++; -}*/ + // + if (date('d.m.Y') == date('d.m.Y', $pl2['time'])) { + $r2 .= ' +' . $j . ' +' . $u->microLogin($pl['uid'], 1) . ' +' . $pl2['voln'] . ' +' . $ret . ' +»» +'; + $j++; + } + $i++; +} + ?> - -Архив: Поединки - + + Архив: Поединки +

    -
    - Излом Хаоса - - - - - - - -
    - -
    - лучшие за месяц
    -
    - - - - - - - - - - - - -
    Место
    Боец
    Последняя волна
    Рейтинг
    Лог боя
    - -
    - -
    Бывалые - лучшие за день
    -
    - - - - - - - - - - - - -
    Место
    Боец
    Последняя волна
    Рейтинг
    Лог боя
    - -
    -
    +
    + Излом Хаоса + + + + + + + +
    +
    + +
    - лучшие за месяц
    +
    + + + + + + + + + + + + +
    Место
    Боец
    Последняя волна
    Рейтинг
    Лог боя
    + +
    +
    +
    + +
    Бывалые - лучшие за день
    +
    + + + + + + + + + + + + +
    Место
    Боец
    Последняя волна
    Рейтинг
    Лог боя
    + +
    +
    +

    \ No newline at end of file diff --git a/buttons.php b/buttons.php index 5d6a6084..9ae547cb 100644 --- a/buttons.php +++ b/buttons.php @@ -1,9 +1,9 @@ Произошла ошибка

    Произошла ошибка:

    ' . $e . '

    Назад


    (c) ' . $c[1] . '

    '); + exit('Произошла ошибка

    Произошла ошибка:

    ' . $e . '

    Назад


    (c) ' . $c[1] . '

    '); } function GetRealIp() @@ -22,9 +22,9 @@ define('IP', GetRealIp()); include_once('_incl_data/__config.php'); include_once('_incl_data/class/__db_connect.php'); -include_once('_incl_data/class/__user.php'); -include_once('_incl_data/class/__filter_class.php'); -include_once('_incl_data/class/__chat_class.php'); +$u = User::start(); +$filter = new Filter(); +$chat = new Chat(); ini_set('max_execution_time', '120'); @@ -47,8 +47,11 @@ if ($u->info['joinIP'] == 1 && $u->info['ip'] != IP) { } if ($u->info['online'] < time() - 60) { - $filter->setOnline($u->info['online'], $u->info['id'], 0); - mysql_query("UPDATE `users` SET `online`='" . time() . "',`timeMain`='" . time() . "' WHERE `id`='" . $u->info['id'] . "' LIMIT 1"); + $filter->setOnline($u->info['online'], $u->info['id']); + mysql_query( + "UPDATE `users` SET `online`='" . time() . "',`timeMain`='" . time( + ) . "' WHERE `id`='" . $u->info['id'] . "' LIMIT 1" + ); } $u->stats = $u->getStats($u->info['id'], 0); @@ -59,743 +62,750 @@ if ($u->info['activ'] > 0) { } ?> - - - - - Бойцовский Клуб Acombats - - - - - - - - - - - + + + + + + + + + + + + + + + + + isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer'); + $_COOKIE['d1c'] = $deviceType; + setcookie('d1c', $deviceType, (time() + 86400)); + } else { + $deviceType = $_COOKIE['d1c']; } - - - - - - - - + if ($deviceType == 'tablet' || $deviceType == 'phone') { + echo ''; + ?> + - - - - isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer'); - $_COOKIE['d1c'] = $deviceType; - setcookie('d1c', $deviceType, (time() + 86400)); - } else { - $deviceType = $_COOKIE['d1c']; - } - - if ($deviceType == 'tablet' || $deviceType == 'phone') { - echo ''; + + + + + - - - - - - - - - - - - -info['bithday'] == '01.01.1800') { - ?> - + + + + info['active'] != '' && $u->info['mail'] == 'No E-mail') { - if ($error != '') { - echo ''; + if ($u->info['bithday'] == '01.01.1800') { + ?> + + + + info['active'] != '' && $u->info['mail'] == 'No E-mail') { + if ($error != '') { + echo ''; + } + ?> + + - - - + -
    - - - -
    -
    -
    +

                          Заявки + на хаотические поединки

    +microLogin($plu['id'],1).','; - } - // - if( $users == '' ) { - $users = 'Поле боя ждет своих героев!'; - }else{ - $users = rtrim($users,','); - } - // - $html .= $i . '. '.date('H:i',$pl['time']).' '; - $html .= ' '; - $html .= ' ('.$users.') ('.$pl['min_lvl_1'].'-'.$pl['max_lvl_1'].') Тип боя: '; - if( $pl['noinc'] > 0 ) { - $html .= ''; - } - if( $pl['fastfight'] > 0 ) { - $html .= ''; - } - if( $pl['arand'] > 0 ) { - $html .= ''; - } - $html .= 'Бой начнется через '.$u->timeOut($pl['time']+$pl['time_start']-time()).', таймаут '.$u->timeOut($pl['timeout']).''; - if( $pl['priz'] > 0 ) { - $html .= '(Героическое Сражение)
    -
    Настройки чата
    -
    - Скорость обновления:
    -
    Сортировка списка онлайн: - По убыванию
    -
    Экономия трафика
    -
    Сообщения с молчанкой + #mini_qsst { + position: absolute; + z-index: 100; + cursor: default; + display: none; + bottom: 10px; + right: 18px; + } + +
    + - - - -
    + +
    +
    +
    +
    Настройки чата
    +
    + Скорость обновления:
    +
    Сортировка списка онлайн: + По убыванию
    +
    Экономия трафика
    +
    Сообщения с молчанкой +
    + + +
    + +
    -
    +
    - - -
    -
    - -
    -
    - -
    - - - - - - - - + + + + + + + +
    - - - - - - -
    - - - - - - - - -
    Знания - Персонаж - Выход -
    -
    -
    - - - - - - - - +
    - - - - - - - - - info['level'] > 9) { ?> + +
    - info['admin'] > 0) { ?> onclick="top.frames['main'].location.href='map.php';" - class="db" src="https://img.new-combats.com/b___.gif" width="30" height="30" - title="Чат"> -   - - - - - - - - -
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + - - - - - - - -
     
    +
    + +
    +
    + + + + + +
    + +
    +
    +
    + + + + + + +
    +
    +
    +
    + +
    + + + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + - - - - - - - - - - - - info['level'] > 7) { ?> - + + + + + + + + - + info['level'] > 7) { ?> + + - info['align'] == 50 || $u->info['align2'] == 50 || $u->info['admin'] == 1) { ?> - - info['align'] >= 1.1 && $u->info['align'] < 2) { ?> - - info['align'] >= 3.01 && $u->info['align'] < 4) { ?> - - info['vip'] > time() || $u->stats['silvers'] > 0 || $u->stats['bronze'] > 0 || $u->stats['gold'] > 0) { ?> - - + info['align'] == 50 || $u->info['align2'] == 50 || $u->info['admin'] == 1) { ?> + + info['align'] >= 1.1 && $u->info['align'] < 2) { ?> + + info['align'] >= 3.01 && $u->info['align'] < 4) { ?> + + info['vip'] > time( + ) || $u->stats['silvers'] > 0 || $u->stats['bronze'] > 0 || $u->stats['gold'] > 0) { ?> + + - + - info['align'] >= 1 && $u->info['align'] < 2) { ?> - - info['align'] >= 3 && $u->info['align'] < 4) { ?> - - info['align'] == 7) { ?> - - info['bukmeker'] == 1 || $u->info['admin'] == 1) { ?> - - info['align'] >= 1 && $u->info['align'] < 2) { ?> + + info['align'] >= 3 && $u->info['align'] < 4) { ?> + + info['align'] == 7) { ?> + + info['bukmeker'] == 1 || $u->info['admin'] == 1) { ?> + + info['clan'] > 0) { ?> - - info['admin'] > 0) { ?> - - - + if ($u->info['clan'] > 0) { ?> + + info['admin'] > 0) { ?> + + + - - - + + + - -
    + info['admin'] > 0) { ?> onclick="top.frames['main'].location.href='map.php';" + class="db" src="https://img.new-combats.com/b___.gif" width="30" height="30" + title="Чат"> +   + + + + + + + + +   - +   + + - - + +
    -
    -
    - +
    +
    +
    + - - + + info['active'] != '' && $u->info['mail'] != 'No E-mail') { + $yes = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `vars` = "user_active_good" LIMIT 1', 1); + $yes2 = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `vars` = "user_active_send" LIMIT 1', 1); + if ($u->info['login'] != '-LEL-') { + mysql_query('UPDATE `stats` SET `active` = \'\' WHERE `id` = ' . $u->info['id'] . ' LIMIT 1'); + } } + ?> + - $button.addEventListener("mouseover", function (event) { - - timeoutClear = setTimeout(() => { - - $div.hidden = false - var $trTop = $button.parentElement.getBoundingClientRect().top - var $tdLeft = document.getElementById("tdDate").offsetLeft - - $div.style.top = `${$trTop - ($button.offsetHeight * 2.1)}px` - $div.style.left = `${($tdLeft - ($div.offsetWidth - $button.offsetWidth)) + 10}px` - - everySecondsUpdate() - - intervalClear = setInterval(() => everySecondsUpdate(), 1000) - }, 550) - }) - - $button.addEventListener("mouseout", function (event) { - $div.hidden = true - clearInterval(intervalClear) - clearTimeout(timeoutClear) - }) - + + + info['active'] != '' && $u->info['mail'] != 'No E-mail') { - $yes = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `vars` = "user_active_good" LIMIT 1', 1); - $yes2 = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `vars` = "user_active_send" LIMIT 1', 1); - if ($u->info['login'] != '-LEL-') { - mysql_query('UPDATE `stats` SET `active` = \'\' WHERE `id` = ' . $u->info['id'] . ' LIMIT 1'); - } -} -?> - - - - - - - +unset($db); \ No newline at end of file diff --git a/cgi-bin/buttons.php b/cgi-bin/buttons.php deleted file mode 100644 index a24d3d9e..00000000 --- a/cgi-bin/buttons.php +++ /dev/null @@ -1,986 +0,0 @@ -Произошла ошибка

    Произошла ошибка:

    '.$e.'

    Назад


    (c) '.$c[1].'

    '); -} - -function GetRealIp() -{ - if (!empty($_SERVER['HTTP_CLIENT_IP'])) - { - $ip=$_SERVER['HTTP_CLIENT_IP']; - } - elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) - { - $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; - } - else - { - $ip=$_SERVER['REMOTE_ADDR']; - } - return $ip; -} -define('IP',GetRealIp()); - -include_once('_incl_data/__config.php'); -include_once('_incl_data/class/__db_connect.php'); -include_once('_incl_data/class/__user.php'); -include_once('_incl_data/class/__filter_class.php'); -include_once('_incl_data/class/__chat_class.php'); - -ini_set( 'max_execution_time', '120' ); - -if(isset($_GET['showcode'])) -{ - include('show_reg_img/security.php'); - die(); -} - -if($u->info['joinIP']==1 && $u->info['ip']!=IP) -{ - er('#Пожалуйста авторизируйтесь с главной страницы'); -}elseif(isset($_GET['exit'])) -{ - setcookie('login','',time()-60*60*24*30,'',$c['host']); - setcookie('pass','',time()-60*60*24*30,'',$c['host']); - setcookie('login','',time()-60*60*24*30); - setcookie('pass','',time()-60*60*24*30); - mysql_query('UPDATE `users` SET `online` = "'.(time()-420).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); //520 - die(''); -}elseif(!isset($u->info['id'])) -{ - - /*setcookie('login','',time()-60*60*24*30,'',$c['host']); - setcookie('pass','',time()-60*60*24*30,'',$c['host']); - setcookie('login','',time()-60*60*24*30); - setcookie('pass','',time()-60*60*24*30);*/ - - er('Возникла проблема с определением id персонажа
    Авторизируйтесь с главной страницы.'); -} - -if($u->info['online'] < time()-60) -{ - $filter->setOnline($u->info['online'],$u->info['id'],0); - mysql_query("UPDATE `users` SET `online`='".time()."',`timeMain`='".time()."' WHERE `id`='".$u->info['id']."' LIMIT 1"); -} - -$u->stats = $u->getStats($u->info['id'],0); - -if($u->info['activ']>0) { - include('activnew.php'); - die(); -} - -?> - - - - -Новый Бойцовский Клуб - - - - - - - - - - - - - - - - - - - - - - - - -info['id'].'" LIMIT 1')); -if(isset($fpi['id'])) { - $i = 0; - $fpv = explode('|',$fpi['data']); - $fph = ''; - while( $i <= 10 ) { - $id = $fpv[$i]; - $id = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `id` = "'.mysql_real_escape_string($id).'" AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); - if(isset($id['id'])) { - //есть итем - $idm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.mysql_real_escape_string($id['item_id']).'" LIMIT 1')); - $idd = mysql_fetch_array(mysql_query('SELECT * FROM `items_main_data` WHERE `items_id` = "'.mysql_real_escape_string($idm['id']).'" LIMIT 1')); - //$po = ; - $fph .= 'top.addfastpanel(\''.$idm['id'].'\',\''.$idm['name'].'\',\''.$idm['type'].'\',\''.$id['1price'].'\',\''.$id['2price'].'\',\''.$u->city_name[$id['maidin']].'\',\''.$idm['img'].'\',\''.$id['item_id'].'\',\''.$idm['iznosNOW'].'\',\''.$idm['iznosMAX'].'\',\'1\',\'1\',\'1\',\'1\');'; - }else{ - //пусто - } - $i++; - } - echo ''; -}*/ -// -if( !isset($_COOKIE['d1c']) ) { - include('_incl_data/class/mobile.php'); - $detect = new Mobile_Detect; - $deviceType = ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer'); - $_COOKIE['d1c'] = $deviceType; - setcookie('d1c',$deviceType,(time()+86400)); -}else{ - $deviceType = $_COOKIE['d1c']; -} - -if( $deviceType == 'tablet' || $deviceType == 'phone' ) { - echo ''; -?> - - - - - - - - - - - - -testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "user_yes" LIMIT 1',1); -if(!isset($yes['id'])) -{ - //Пользовательское соглашение - if(isset($_GET['yes'])) - { - //согласен - $u->addAction(time(),'user_yes',''); - header('location: https://'.$c[$u->info['city']].'/bk'); - die(); - } - /*echo '
    -
    -Наверное Вы удивлены что это за текст?
    Пожалуйста уделите одну минуту Вашего драгоценного времени и прочитайте его:


    -  Добрый день, вечер или даже ночь! Вы наверное играли в Бойцовский Клуб? Да, точно играли, по крайней мере в проекты которые -себя называют "Лучший Клон БК" и т.д., а по факту, простите, это хуйня из под коня. Сейчас много проектов -которые создаются любителями, которые пользуются готовыми движками. Скачать и установить такой сайт -может любой школьник, даже безграмотный! Наш проект не такой! Постоянное развитие, улучшение, экшен, -да и к тому-же уникальность нашего движка не сможет оспорить ни один человек. Надеемся что Вам понравится -наш проект и Вы будете играть здесь до последнего дня проекта!
    -  Соглашаясь с этим текстом Вы отказывается от всего этого дерьма в интернете и вступаете в круг людей которые -за качество и отсутствие однообразия! Вас ждет множество удивительных вещей, в то время как другие потакают некачественному продукту. -

    Я полностью согласен с написанным выше текстом


    Если по каким-либо причинам Вы не согласны, то пожалуйста закройте наш сайт и более не открывайте! Спасибо! ;-) -
    ';*/ -//} -?> - -info['bithday'] == '01.01.1800') { -?> - - - -info['active']!='' && $u->info['mail']=='No E-mail') { - if($error!='') { - echo ''; - } -?> - - - - -
    - - - -
    -
    -
    -
    Настройки чата
    -
    -Скорость обновления:
    -
    Сортировка списка онлайн: -По убыванию
    -
    Экономия трафика
    -
    Сообщения с молчанкой
    - - -
    - - -
    - -
    - - - -
    -
    - -
    -
    - -
    - - - - - - - - - -
    - - - - - -
    - - - - - - - -
    ЗнанияПерсонажВыход
    -
    - - - - -
    -
    - - - - - - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
     
    -
    - -
    -
    - - - - - -
    -
    -
    -
    - - - - - - -
    -
    -
    */ ?> - -
    - -
    - - - -
    -
    -
    - -
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    - info['admin'] > 0 ) { ?> - -
    - -
    -
    -
    -
    - - - - - - - - - info['level']>9){ ?> - - - - - - - - - - - - - info['level']>7){ ?> - - info['level']>=0){ ?> - - - info['align']==50 || $u->info['align2']==50 || $u->info['admin'] == 1) {?> - - info['align']>=1.1 && $u->info['align']<2 ){ ?> - - info['align']>=3.01 && $u->info['align']<4){ ?> - - info['vip']>time() || $u->stats['silvers']>0 || $u->stats['bronze']>0 || $u->stats['gold']>0 ){ ?> - - - - info['level']>= 0){ ?> - - info['align']>=1 && $u->info['align']<2){ ?> - - info['align']>=3 && $u->info['align']<4){ ?> - - info['align']==7) { ?> - - info['bukmeker']==1 || $u->info['admin']==1){ ?> - - info['admin'] > 0 || $u->info['align'] == 50){ ?> - - info['level']>-1){ ?> - - info['clan']>0){ ?> - - info['admin']>0){ ?> - - - - - - - -
    info['admin'] > 0 ) { ?> onclick="top.frames['main'].location.href='map.php';" class="db" src="https://img.new-combats.com/b___.gif" width="30" height="30" title="Чат">  - - - - - - - - -  
    -
    -info['active']!='' && $u->info['mail']!='No E-mail') -{ - $yes = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "user_active_good" LIMIT 1',1); - $yes2 = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "user_active_send" LIMIT 1',1); - if($u->info['login'] != '-LEL-') - { - mysql_query('UPDATE `stats` SET `active` = "" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - - /* - function send_mime_mail($name_from, // имя отправителя - $email_from, // email отправителя - $name_to, // имя получателя - $email_to, // email получателя - $data_charset, // кодировка переданных данных - $send_charset, // кодировка письма - $subject, // тема письма - $body // текст письма - ) - { - $to = mime_header_encode($name_to, $data_charset, $send_charset) - . ' <' . $email_to . '>'; - $subject = mime_header_encode($subject, $data_charset, $send_charset); - $from = mime_header_encode($name_from, $data_charset, $send_charset) - .' <' . $email_from . '>'; - if($data_charset != $send_charset) { - $body = iconv($data_charset, $send_charset, $body); - } - $headers = "From: $from\r\n"; - $headers .= "Content-type: text/plain; charset=$send_charset\r\n"; - - return mail($to, $subject, $body, $headers); - } - - function mime_header_encode($str, $data_charset, $send_charset) { - if($data_charset != $send_charset) { - $str = iconv($data_charset, $send_charset, $str); - } - return '=?' . $send_charset . '?B?' . base64_encode($str) . '?='; - } - - if(!isset($yes2['id'])) - { - //отправляем письмо - echo ''; - //$u->addAction(time(),'user_active_send',$u->info['mail']); - // получатели - send_mime_mail('www.new-combats.com', - 'support@new-combats.com', - ''.$u->info['login'].'', - $u->info['mail'], - 'CP1251', // кодировка, в которой находятся передаваемые строки - 'KOI8-R', // кодировка, в которой будет отправлено письмо - 'Активация персонажа '.$u->info['login'].'', - "Здравствуйте! Мы очень рады новому персонажу в нашем Мире! \r\n Ваш персонаж: ".$u->info['login']." [0] \r\n Ссылка для активации: https://capitalcity.new-combats.com/bk?active=".$u->info['active'].".\r\n\r\nС уважением, Администрация!"); - $u->addAction(time(),'user_active_send',$u->info['mail']); - - }elseif(!isset($yes['id'])) - { - //Пользовательское соглашение - if(isset($_GET['active']) && $u->info['active'] == $_GET['active']) - { - //согласен - $u->addAction(time(),'user_active_good',$u->info['mail']); - mysql_query('UPDATE `stats` SET `active` = "" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - die(''); - } - } - */ -} -?> - - - - \ No newline at end of file diff --git a/clans_inf.php b/clans_inf.php index 67c9a0de..fd86c157 100644 --- a/clans_inf.php +++ b/clans_inf.php @@ -1,29 +1,34 @@ - +$uplogin = explode('&', $_SERVER['QUERY_STRING']); +$uplogin = $uplogin[0]; +$uplogin = preg_replace('/%20/', " ", $uplogin); +if (!isset($_GET['id'])) { + $_GET['id'] = 0; +} +if (!isset($upLogin)) { + $upLogin = ''; +} +$utf8Login = ''; +$utf8Login2 = ''; +$utf8Login = iconv("utf-8", "windows-1251", $uplogin); +if ($uplogin != 'delete' && $utf8Login != 'delete' && $utf8Login2 != 'delete') { + $clan = mysql_fetch_array( + mysql_query( + 'SELECT `u`.* FROM `clan` AS `u` WHERE (`u`.`id`="' . mysql_real_escape_string( + $_GET['id'] + ) . '" OR `u`.`id`="' . mysql_real_escape_string( + $uplogin + ) . '" OR `u`.`name`="' . mysql_real_escape_string($uplogin) . '") LIMIT 1' + ) + ); +} +if (!isset($clan['id'])) { + die( + ' @@ -31,239 +36,323 @@ define('UPPERCASE',1); Произошла ошибка:
    Указанный клан не найден...

    Назад


    -

    (c) '.$c['title'].'

    - '.$c['counters'].' - '); - } - - $xu = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `users` WHERE `real` = 1 AND `clan` = "'.$clan['id'].'" LIMIT 1')); - $xu = 0 + $xu[0]; - $r1 = mysql_fetch_array(mysql_query('SELECT * FROM `aaa_clan_reting_list` WHERE `clan` = "'.$clan['id'].'" AND `date` = "'.date('dmY').'" LIMIT 1')); - $r2 = mysql_fetch_array(mysql_query('SELECT * FROM `aaa_clan_reting_list` WHERE `clan` = "'.$clan['id'].'" AND `date` != "'.date('dmY').'" ORDER BY `id` DESC LIMIT 1')); - - $vid = ''; - if( isset($r2['pos']) ) { - if( $r2['pos'] < $r1['pos'] ) { - $vid = '-'.($r1['pos']-$r2['pos']).''; - }elseif( $r2['pos'] > $r1['pos'] ) { - $vid = '+'.($r2['pos']-$r1['pos']).''; - } - } - - $clan_info = mysql_fetch_array(mysql_query('SELECT * FROM `clan_info` WHERE `id` = "'.$clan['id'].'" LIMIT 1')); - if( $clan_info['info'] == '' ) { - $clan_info['info'] = 'Информация о клане отсутствует.'; - } - - $vid1 = ''; - if( isset($r2['pos']) ) { - if( round($r2['global']/(15678+$r2['level']),3) < round($r1['global']/(15678+$r1['level']),3) ) { - $vid1 = ' +'.(round($r1['global']/(15678+$r1['level']),3) - round($r2['global']/(15678+$r2['level']),3)).''; - }elseif( round($r2['global']/(15678+$r2['level']),3) > round($r1['global']/(15678+$r1['level']),3) ) { - $vid1 = ' -'.(round($r2['global']/(15678+$r2['level']),3) - round($r1['global']/(15678+$r1['level']),3)).''; - } - } - - $vid2 = ''; - if( isset($r2['pos']) ) { - if( $r2['exp_real'] < $r1['exp_real'] ) { - $vid2 = ' +'.($r1['exp_real']-$r2['exp_real']).''; - }elseif( $r2['exp_real'] > $r1['exp_real'] ) { - $vid2 = ' -'.($r2['exp_real']-$r1['exp_real']).''; - } - } - - $vid3 = ''; - if( isset($r2['pos']) ) { - if( $r2['win'] < $r1['win'] ) { - $vid3 = ' +'.($r1['win']-$r2['win']).''; - }elseif( $r2['win'] > $r1['win'] ) { - $vid3 = ' -'.($r2['win']-$r1['win']).''; - } - } - - $vid4 = ''; - if( isset($r2['pos']) ) { - if( $r2['lose'] < $r1['lose'] ) { - $vid4 = ' +'.($r1['lose']-$r2['lose']).''; - }elseif( $r2['lose'] > $r1['lose'] ) { - $vid4 = ' -'.($r2['lose']-$r1['lose']).''; - } - } - - $vid5 = ''; - if( isset($r2['pos']) ) { - if( $r2['nich'] < $r1['nich'] ) { - $vid5 = ' +'.($r1['nich']-$r2['nich']).''; - }elseif( $r2['nich'] > $r1['nich'] ) { - $vid5 = ' -'.($r2['nich']-$r1['nich']).''; - } - } +

    (c) ' . $c['title'] . '

    + ' . $c['counters'] . ' + ' + ); +} + +$xu = mysql_fetch_array( + mysql_query('SELECT COUNT(`id`) FROM `users` WHERE `real` = 1 AND `clan` = "' . $clan['id'] . '" LIMIT 1') +); +$xu = 0 + $xu[0]; +$r1 = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `aaa_clan_reting_list` WHERE `clan` = "' . $clan['id'] . '" AND `date` = "' . date( + 'dmY' + ) . '" LIMIT 1' + ) +); +$r2 = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `aaa_clan_reting_list` WHERE `clan` = "' . $clan['id'] . '" AND `date` != "' . date( + 'dmY' + ) . '" ORDER BY `id` DESC LIMIT 1' + ) +); + +$vid = ''; +if (isset($r2['pos'])) { + if ($r2['pos'] < $r1['pos']) { + $vid = '-' . ($r1['pos'] - $r2['pos']) . ''; + } elseif ($r2['pos'] > $r1['pos']) { + $vid = '+' . ($r2['pos'] - $r1['pos']) . ''; + } +} + +$clan_info = mysql_fetch_array(mysql_query('SELECT * FROM `clan_info` WHERE `id` = "' . $clan['id'] . '" LIMIT 1')); +if ($clan_info['info'] == '') { + $clan_info['info'] = 'Информация о клане отсутствует.'; +} + +$vid1 = ''; +if (isset($r2['pos'])) { + if (round($r2['global'] / (15678 + $r2['level']), 3) < round($r1['global'] / (15678 + $r1['level']), 3)) { + $vid1 = ' +' . (round($r1['global'] / (15678 + $r1['level']), 3) - round( + $r2['global'] / (15678 + $r2['level']), 3 + )) . ''; + } elseif (round($r2['global'] / (15678 + $r2['level']), 3) > round($r1['global'] / (15678 + $r1['level']), 3)) { + $vid1 = ' -' . (round($r2['global'] / (15678 + $r2['level']), 3) - round( + $r1['global'] / (15678 + $r1['level']), 3 + )) . ''; + } +} + +$vid2 = ''; +if (isset($r2['pos'])) { + if ($r2['exp_real'] < $r1['exp_real']) { + $vid2 = ' +' . ($r1['exp_real'] - $r2['exp_real']) . ''; + } elseif ($r2['exp_real'] > $r1['exp_real']) { + $vid2 = ' -' . ($r2['exp_real'] - $r1['exp_real']) . ''; + } +} + +$vid3 = ''; +if (isset($r2['pos'])) { + if ($r2['win'] < $r1['win']) { + $vid3 = ' +' . ($r1['win'] - $r2['win']) . ''; + } elseif ($r2['win'] > $r1['win']) { + $vid3 = ' -' . ($r2['win'] - $r1['win']) . ''; + } +} + +$vid4 = ''; +if (isset($r2['pos'])) { + if ($r2['lose'] < $r1['lose']) { + $vid4 = ' +' . ($r1['lose'] - $r2['lose']) . ''; + } elseif ($r2['lose'] > $r1['lose']) { + $vid4 = ' -' . ($r2['lose'] - $r1['lose']) . ''; + } +} + +$vid5 = ''; +if (isset($r2['pos'])) { + if ($r2['nich'] < $r1['nich']) { + $vid5 = ' +' . ($r1['nich'] - $r2['nich']) . ''; + } elseif ($r2['nich'] > $r1['nich']) { + $vid5 = ' -' . ($r2['nich'] - $r1['nich']) . ''; + } +} + +$timday = strtotime('now 00:00:00'); +$clanw = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(`id`) FROM `battle` WHERE `type` = 250 AND `time_over` > "' . $timday . '" AND ((`team_win`=1 AND `clan1` = "' . $clan['id'] . '") OR (`team_win`=2 AND `clan2` = "' . $clan['id'] . '")) LIMIT 1' + ) +); +$clanw = $clanw[0]; + +$clanl = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(`id`) FROM `battle` WHERE `type` = 250 AND `time_over` > "' . $timday . '" AND ((`team_win`=2 AND `clan1` = "' . $clan['id'] . '") OR (`team_win`=1 AND `clan2` = "' . $clan['id'] . '")) LIMIT 1' + ) +); +$clanl = $clanl[0]; + +$clanwar = mysql_query( + 'SELECT * FROM `clan_wars` WHERE (`clan1`="' . $clan['id'] . '" OR `clan2`="' . $clan['id'] . '") AND `time_finish` > "' . time( + ) . '"' +); +$clwe = ""; +while ($clanwa = mysql_fetch_array($clanwar)) { + if ($clanwa['clan1'] == $clan['id']) { + $clw = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $clanwa['clan2'] . '" LIMIT 1')); + + $clwe .= '' . $clw['name'] . ' '; + } else { + $clw = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $clanwa['clan1'] . '" LIMIT 1')); + $clwe .= '' . $clw['name'] . ' '; + + } +} + - $timday=strtotime('now 00:00:00'); - $clanw = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `battle` WHERE `type` = 250 AND `time_over` > "'.$timday.'" AND ((`team_win`=1 AND `clan1` = "'.$clan['id'].'") OR (`team_win`=2 AND `clan2` = "'.$clan['id'].'")) LIMIT 1')); - $clanw = $clanw[0]; - - $clanl = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `battle` WHERE `type` = 250 AND `time_over` > "'.$timday.'" AND ((`team_win`=2 AND `clan1` = "'.$clan['id'].'") OR (`team_win`=1 AND `clan2` = "'.$clan['id'].'")) LIMIT 1')); - $clanl = $clanl[0]; - - $clanwar = mysql_query('SELECT * FROM `clan_wars` WHERE (`clan1`="'.$clan['id'].'" OR `clan2`="'.$clan['id'].'") AND `time_finish` > "'.time().'"'); - $clwe = ""; - while($clanwa = mysql_fetch_array($clanwar)) - { - if ($clanwa['clan1'] == $clan['id']) - { - $clw = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.$clanwa['clan2'].'" LIMIT 1')); - - $clwe .= ''.$clw['name'].' '; - } - else - { - $clw = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.$clanwa['clan1'].'" LIMIT 1')); - $clwe .= ''.$clw['name'].' '; - - } - } - - - - ?> - -Информация о клане <?=$clan['name']?> - - - - - - - - + + Информация о клане <?= $clan['name'] ?> + + + + + + + +
    - - -
    -

    -

    Позиция:

    -

    Рейтинг:

    -
    - - - - - -
    -
    -
    - Информация о Клане - -
    -
    - Клан сайт: - -
    - -
    - Статистика Клана - - - - - - - - - - - - - - - - - - - - - - - - - - - +
    Рейтинг:
     
    Опыт:
    Позиция:
     
    Статистика персонажей:
    Побед:
    Поражений:
    Ничьих:
     
    Статистика войн:
    Текущие войны:
    Побед:
    Поражений:
     
    Ожидаемый рейтинг:
     
    Дата регистрации:
    + + + +
    +

    +

    Позиция: +

    +

    Рейтинг:

    +
    + + + + +
    +
    +
    + Информация о + Клане + +
    +
    + Клан сайт: + + +
    + +
    + Статистика Клана + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Рейтинг:
     
    Опыт:
    Позиция:
     
    Статистика персонажей:
    Побед:
    Поражений:
    Ничьих:
     
    Статистика войн:
    Текущие войны:
    Побед:
    Поражений:
     
    Ожидаемый рейтинг:
     
    Дата регистрации: +
    +
    +
    +
    +
    +
    + Состав + + '; + } else { + $html .= '
    '; + } + $html .= ' '; + if ($pl['align2'] > 0) { + $html .= ' '; + } + $html .= ' '; + $html .= '' . $pl['login'] . ' [' . $pl['level'] . ']'; + $html .= ' '; + $html .= ' - Глава клана'; + if ($pl['online'] < time() - 520) { + $html .= '  не в игре
    '; + } else { + $html .= '
    '; + } + } + + $html .= '
    '; + + $sp = mysql_query( + 'SELECT * FROM `users` WHERE `clan` = "' . $clan['id'] . '" AND `clan_prava` != "glava" AND `online` > "' . (time( + ) - 520) . '" ORDER BY `login` ASC' + ); + while ($pl = mysql_fetch_array($sp)) { + $html .= '
    '; + $html .= ' '; + if ($pl['align2'] > 0) { + $html .= ' '; + } + $html .= ' '; + $html .= '' . $pl['login'] . ' [' . $pl['level'] . ']'; + $html .= ' '; + $html .= ' - ' . $pl['mod_zvanie'] . ''; + $html .= '
    '; + } + $sp = mysql_query( + 'SELECT * FROM `users` WHERE `clan` = "' . $clan['id'] . '" AND `clan_prava` != "glava" AND `online` <= "' . (time( + ) - 520) . '" ORDER BY `login` ASC' + ); + while ($pl = mysql_fetch_array($sp)) { + $html .= '
    '; + $html .= ' '; + if ($pl['align2'] > 0) { + $html .= ' '; + } + $html .= ' '; + $html .= '' . $pl['login'] . ' [' . $pl['level'] . ']'; + $html .= ' '; + $html .= ' - ' . $pl['mod_zvanie'] . ''; + $html .= '  не в игре
    '; + } + echo $html; + unset($html); + ?> + +
    Всего: + + +
    -
    -
    -
    -
    -
    - Состав - - '; - }else{ - $html .= '
    '; - } - $html .= ' '; - if( $pl['align2'] > 0 ) { - $html .= ' '; - } - $html .= ' '; - $html .= ''.$pl['login'].' ['.$pl['level'].']'; - $html .= ' '; - $html .= ' - Глава клана'; - if( $pl['online'] < time() - 520 ) { - $html .= '  не в игре
    '; - }else{ - $html .= '
    '; - } - } - - $html .= '
    '; - - $sp = mysql_query('SELECT * FROM `users` WHERE `clan` = "'.$clan['id'].'" AND `clan_prava` != "glava" AND `online` > "'.(time()-520).'" ORDER BY `login` ASC'); - while( $pl = mysql_fetch_array($sp) ) { - $html .= '
    '; - $html .= ' '; - if( $pl['align2'] > 0 ) { - $html .= ' '; - } - $html .= ' '; - $html .= ''.$pl['login'].' ['.$pl['level'].']'; - $html .= ' '; - $html .= ' - '.$pl['mod_zvanie'].''; - $html .= '
    '; - } - $sp = mysql_query('SELECT * FROM `users` WHERE `clan` = "'.$clan['id'].'" AND `clan_prava` != "glava" AND `online` <= "'.(time()-520).'" ORDER BY `login` ASC'); - while( $pl = mysql_fetch_array($sp) ) { - $html .= '
    '; - $html .= ' '; - if( $pl['align2'] > 0 ) { - $html .= ' '; - } - $html .= ' '; - $html .= ''.$pl['login'].' ['.$pl['level'].']'; - $html .= ' '; - $html .= ' - '.$pl['mod_zvanie'].''; - $html .= '  не в игре
    '; - } - echo $html; - unset($html); - ?> - -
    Всего: - - -
    diff --git a/cron/battle_dell.php b/cron/battle_dell.php index 1c9147f3..f9ef95a6 100644 --- a/cron/battle_dell.php +++ b/cron/battle_dell.php @@ -1,62 +1,32 @@ "; - if (isset($tbtl['id'])) - { - sleep (2); - } - else - { - mysql_query('UPDATE `users` SET `battle` = 0 WHERE `battle` > 0'); - mysql_query('LOCK TABLES `battle_act` WRITE,`battle_end` WRITE,`battle_last` WRITE,`battle_out` WRITE,`battle_stat` WRITE,`battle_users` WRITE,`battle` WRITE,`battle_logs` WRITE,`battle_logs_save` WRITE,`zayvki` WRITE'); - - mysql_query('TRUNCATE TABLE `battle_act`'); - //mysql_query('OPTIMIZE TABLE `battle_act`'); - - mysql_query('TRUNCATE TABLE `battle_end`'); - //mysql_query('OPTIMIZE TABLE `battle_end`'); - - mysql_query('TRUNCATE TABLE `battle_last`'); - //mysql_query('OPTIMIZE TABLE `battle_last`'); - - mysql_query('TRUNCATE TABLE `battle_out`'); - //mysql_query('OPTIMIZE TABLE `battle_out`'); - - mysql_query('TRUNCATE TABLE `battle_stat`'); - //mysql_query('OPTIMIZE TABLE `battle_stat`'); - - mysql_query('TRUNCATE TABLE `battle_users`'); - //mysql_query('OPTIMIZE TABLE `battle_users`'); - - mysql_query('TRUNCATE TABLE `battle`'); - //mysql_query('OPTIMIZE TABLE `battle`'); +$test = 0; +while ($test == 0) { - - mysql_query('TRUNCATE TABLE `battle_logs`'); - //mysql_query('OPTIMIZE TABLE `battle_logs`'); - - mysql_query('TRUNCATE TABLE `battle_logs_save`'); - //mysql_query('OPTIMIZE TABLE `battle_logs_save`'); - - mysql_query('TRUNCATE TABLE `zayvki`'); - //mysql_query('OPTIMIZE TABLE `zayvki`'); - - mysql_query('UNLOCK TABLES'); - - $test=1; - } + $tbtl = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `team_win`=-1 ORDER BY `id` LIMIT 1')); + echo "Ѓой: "; + echo $tbtl['id'] . "
    "; + if (isset($tbtl['id'])) { + sleep(2); + } else { + mysql_query('UPDATE `users` SET `battle` = 0 WHERE `battle` > 0'); + mysql_query( + 'LOCK TABLES `battle_act` WRITE,`battle_end` WRITE,`battle_last` WRITE,`battle_out` WRITE,`battle_stat` WRITE,`battle_users` WRITE,`battle` WRITE,`battle_logs` WRITE,`battle_logs_save` WRITE,`zayvki` WRITE' + ); + mysql_query('TRUNCATE TABLE `battle_act`'); + mysql_query('TRUNCATE TABLE `battle_end`'); + mysql_query('TRUNCATE TABLE `battle_last`'); + mysql_query('TRUNCATE TABLE `battle_out`'); + mysql_query('TRUNCATE TABLE `battle_stat`'); + mysql_query('TRUNCATE TABLE `battle_users`'); + mysql_query('TRUNCATE TABLE `battle`'); + mysql_query('TRUNCATE TABLE `battle_logs`'); + mysql_query('TRUNCATE TABLE `battle_logs_save`'); + mysql_query('TRUNCATE TABLE `zayvki`'); + mysql_query('UNLOCK TABLES'); - } - -?> + $test = 1; + } +} diff --git a/cron/battle_finish.php b/cron/battle_finish.php index 7f1a5f89..cca13afd 100644 --- a/cron/battle_finish.php +++ b/cron/battle_finish.php @@ -1,10 +1,7 @@ = 8 && $test['count'] < 12) + elseif ($test['count'] < 12) { mysql_query('UPDATE `battle` SET `timeout` = "120" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - elseif ($test['count'] >= 12) - { - mysql_query('UPDATE `battle` SET `timeout` = "180" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); + } else { + mysql_query('UPDATE `battle` SET `timeout` = "180" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); } @@ -47,7 +42,6 @@ while( $pl = mysql_fetch_array($sp) ) { // batle cache mysql_query('DELETE FROM `battle_cache` WHERE `time` < "'.(time()-3600).'"'); -//mysql_query('OPTIMIZE TABLE `battle_cache`'); //вытаскиваем персов из приз хаота если застрЯли (1-5 минут окончание) $sp = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `type` = 33 AND `time_over` < "'.(time()-120).'" AND `time_over` > "'.(time() - 360).'" AND `time_over` != 0 ORDER BY `battle`.`time_over` DESC LIMIT 1')); @@ -83,5 +77,4 @@ while( $pl = mysql_fetch_array($sps)) } //чистим памЯть unset($sp,$sps,$pl,$test); - -?> + diff --git a/cron/battle_save.php b/cron/battle_save.php index 39fbd8c4..681c6d42 100644 --- a/cron/battle_save.php +++ b/cron/battle_save.php @@ -1,9 +1,6 @@ 0'); -?> diff --git a/cron/clear.php b/cron/clear.php index 22096cbf..759aed38 100644 --- a/cron/clear.php +++ b/cron/clear.php @@ -1,9 +1,6 @@ query($q) as $row) { diff --git a/cron/cron_clear.php b/cron/cron_clear.php index 942c23ce..efe1505c 100644 --- a/cron/cron_clear.php +++ b/cron/cron_clear.php @@ -3,7 +3,6 @@ define('GAME',true); setlocale(LC_CTYPE ,"ru_RU.CP1251"); include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); if( isset($_GET['actions']) ) { // @@ -141,7 +140,7 @@ while( $pl = mysql_fetch_array($sp) ) { //5. Очистка монстров $i = 0; -$sp = mysql_query('SELECT * FROM `users` WHERE `real` = 0 ORDER BY `id` ASC LIMIT 100000'); +$sp = mysql_query('SELECT * FROM `users` WHERE `real` = 0 ORDER BY `id` LIMIT 100000'); while( $pl = mysql_fetch_array($sp) ) { $btl = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "'.$pl['battle'].'" LIMIT 1')); $clon = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `inUser` = "'.$pl['id'].'" LIMIT 1')); @@ -159,9 +158,3 @@ mysql_query('DELETE FROM `items_users` WHERE `delete` > `time_create` AND `delet //6. Очистка личного дела mysql_query('DELETE FROM `users_delo` WHERE `time` < "'.(time()-86400*30).'" LIMIT 10000'); - -//echo '
    Очищено ботов\монстров: '.$i.'/'.$x.'
    '; -/*if( $i > 0 ) { - die(''); -}*/ -?> \ No newline at end of file diff --git a/cron/tom_check.php b/cron/tom_check.php index 9f085b90..befdaa7e 100644 --- a/cron/tom_check.php +++ b/cron/tom_check.php @@ -1,52 +1,30 @@ 10'); while( $pl = mysql_fetch_array($sp) ) { $test = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "'.$pl['id'].'" LIMIT 1')); $userst = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$pl['id'].'" LIMIT 1')); - if($test['add_slot']>0) - { - - // echo "ник:".$userst['login']." количество слотов:".$pl['priemslot']." количество добавленных с подземки слотов:".$test['add_slot']."
    "; - - } - $kolvo = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `actions` WHERE `uid` ="'.$pl['id'].'" AND `vars` ="read"')); - + $kolvo = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `actions` WHERE `uid` ="'.$pl['id'].'" AND `vars` ="read"')); $overtop=$pl['priemslot']-10-$test['add_slot']-($kolvo['COUNT(*)']+1); - $overtopkorrect=$pl['priemslot']-10-$test['add_slot']; - - if($overtop>8) - { - $prevish = $overtop -8; - } else {$prevish =0;} - - if ($overtopkorrect>8){$overtopkorrect=8;} - + $prevish = $overtop > 8 ? $overtop - 8 : 0; + if ($overtopkorrect>8){$overtopkorrect=8;} $resultslot= 10 + $test['add_slot'] + $overtopkorrect; if($overtop>0) - { - + { + echo "начало!!! ник:".$userst['login']." количество слотов:".$pl['priemslot']." должно быть:".$resultslot." количество добавленных с подземки слотов:".$test['add_slot']." количество прочитаных книг:".$kolvo['COUNT(*)']." результат:".$overtop." превышение:".$prevish." нужно прочитать:".$overtopkorrect."
    "; - + mysql_query('UPDATE `stats` SET `priemslot` = "'.$resultslot.'" WHERE `id` = "'.$pl['id'].'"'); - // mysql_query('UPDATE `stats` SET `priemslot` = "'.$resultslot.'" WHERE `id` = "'.$pl['id'].'"'); mysql_query('DELETE FROM `actions` WHERE `uid` = "'.$pl['id'].'" AND `vars` = "read" '); - + if($overtopkorrect==5){$overtopkorrect=6;} - - if ($overtopkorrect==1) + + if ($overtopkorrect==1) { mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","1044")'); } @@ -74,43 +52,39 @@ while( $pl = mysql_fetch_array($sp) ) { mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","1045")'); mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","1046")'); mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","1047")'); - - - mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","4811")'); + + + mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","4811")'); } elseif ($overtopkorrect==7) { - + mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","1044")'); mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","1045")'); mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","1046")'); mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","1047")'); - - + + mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","4811")'); mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","4812")'); - + } elseif ($overtopkorrect==8) { - + mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","1044")'); mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","1045")'); mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","1046")'); mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","1047")'); - - + + mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","4811")'); mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","4812")'); mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `vals`) VALUES ("'.$pl['id'].'","'.time().'","capitalcity","10","read","4813")'); } - - - + + + echo "результат!!! ник:".$userst['login']." количество слотов:".$resultslot." количество добавленных с подземки слотов:".$test['add_slot']." количество прочитаных книг:".$overtopkorrect."
    "; } } - - - -?> \ No newline at end of file diff --git a/cron_GoBattle.php b/cron_GoBattle.php index fcdabaef..7cc86a2b 100644 --- a/cron_GoBattle.php +++ b/cron_GoBattle.php @@ -1,61 +1,67 @@ '.$_SERVER['SERVER_ADDR']); +if (getIPblock() != $_SERVER['SERVER_ADDR'] && getIPblock() != '127.0.0.1' && getIPblock() != '' && getIPblock( + ) != '31.131.97.206') { + die(getIPblock() . '
    ' . $_SERVER['SERVER_ADDR']); } -define('GAME',true); +const GAME = true; include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); +$u = User::start(); -function e($t) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #'.date('d.m.Y').' %'.date('H:i:s').' (Критическая ошибка): '.mysql_real_escape_string($t).'","capitalcity","LEL","6","1","-1")'); +$sp = mysql_query( + 'SELECT `u`.*,`s`.*,`u`.`id`,`s`.`id` FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON ( `s`.`id` = `u`.`id` AND `s`.`bot` = 0 ) WHERE `login` = "Crowley"' +); +while ($pl = mysql_fetch_array($sp)) { + if ($pl['inUser'] > 0 && $pl['inTurnir'] > 0) { + $txt = 'Внимание!Все подземелья закрыты, начинается мясорубка!'; + mysql_query( + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $txt . "','" . time( + ) . "','6','0','1')" + ); + } + if ($pl['dnow'] > 0) { + //сохраняем координаты и пещеру в которой был до мясорубки + mysql_query( + 'INSERT INTO `save_dungeon` (`x`,`y`,`dnow`,`time`,`uid`) VALUES ("' . $pl['x'] . '","' . $pl['y'] . '","' . $pl['dnow'] . '","' . time( + ) . '","' . $pl['id'] . '")' + ); + // + mysql_query('UPDATE `stats` SET `dnow` = "0" WHERE `id` = "' . $pl['id'] . '"'); + mysql_query('UPDATE `users` SET `room` = "9",`battle` = "0" WHERE `id` = "' . $pl['id'] . '"'); + //удаляем эффекты и поединки + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $pl['id'] . '" AND `v1` = "priem" AND `delete` = "0"'); + mysql_query('DELETE FROM `battle` WHERE `id` = "' . $pl['battle'] . '"'); + mysql_query('DELETE FROM `battle_act` WHERE `battle` = "' . $pl['battle'] . '"'); + mysql_query( + 'DELETE FROM `battle_actions` WHERE `btl` = "' . $pl['battle'] . '" AND `uid` = "' . $pl['id'] . '"' + ); + mysql_query('DELETE FROM `battle_end` WHERE `battle_id` = "' . $pl['battle'] . '"'); + mysql_query('DELETE FROM `battle_last` WHERE `battle_id` = "' . $pl['battle'] . '"'); + mysql_query('DELETE FROM `battle_logs` WHERE `battle` = "' . $pl['battle'] . '"'); + mysql_query('DELETE FROM `battle_out` WHERE `battle` = "' . $pl['battle'] . '"'); + mysql_query('DELETE FROM `battle_stat` WHERE `battle` = "' . $pl['battle'] . '"'); + mysql_query('DELETE FROM `battle_users` WHERE `battle` = "' . $pl['battle'] . '"'); + } else { + $txt = 'Внимание! Все подземелья закрыты с 22:00 до 00:00! Получаемый опыт на Центральной площади +100%, в Хаотичных поединках, победителей ждет хорошая награда!'; + mysql_query( + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'" . $pl['city'] . "','','','','" . $txt . "','" . time( + ) . "','6','0','1')" + ); + } } - -$sp = mysql_query('SELECT `u`.*,`s`.*,`u`.`id`,`s`.`id` FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON ( `s`.`id` = `u`.`id` AND `s`.`bot` = 0 ) WHERE `login` = "Crowley"'); - while($pl = mysql_fetch_array($sp)) { - if($pl['inUser'] > 0 && $pl['inTurnir'] > 0 ) { - $txt = 'Внимание!Все подземелья закрыты, начинается мясорубка!'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$txt."','".time()."','6','0','1')"); - } - if($pl['dnow'] > 0 ) { - //сохраняем координаты и пещеру в которой был до мясорубки - mysql_query('INSERT INTO `save_dungeon` (`x`,`y`,`dnow`,`time`,`uid`) VALUES ("'.$pl['x'].'","'.$pl['y'].'","'.$pl['dnow'].'","'.time().'","'.$pl['id'].'")'); - // - mysql_query('UPDATE `stats` SET `dnow` = "0" WHERE `id` = "'.$pl['id'].'"'); - mysql_query('UPDATE `users` SET `room` = "9",`battle` = "0" WHERE `id` = "'.$pl['id'].'"'); - //удаляем эффекты и поединки - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.$pl['id'].'" AND `v1` = "priem" AND `delete` = "0"'); - mysql_query('DELETE FROM `battle` WHERE `id` = "'.$pl['battle'].'"'); - mysql_query('DELETE FROM `battle_act` WHERE `battle` = "'.$pl['battle'].'"'); - mysql_query('DELETE FROM `battle_actions` WHERE `btl` = "'.$pl['battle'].'" AND `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `battle_end` WHERE `battle_id` = "'.$pl['battle'].'"'); - mysql_query('DELETE FROM `battle_last` WHERE `battle_id` = "'.$pl['battle'].'"'); - mysql_query('DELETE FROM `battle_logs` WHERE `battle` = "'.$pl['battle'].'"'); - mysql_query('DELETE FROM `battle_out` WHERE `battle` = "'.$pl['battle'].'"'); - mysql_query('DELETE FROM `battle_stat` WHERE `battle` = "'.$pl['battle'].'"'); - mysql_query('DELETE FROM `battle_users` WHERE `battle` = "'.$pl['battle'].'"'); - }else{ - $txt = 'Внимание! Все подземелья закрыты с 22:00 до 00:00! Получаемый опыт на Центральной площади +100%, в Хаотичных поединках, победителей ждет хорошая награда!'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$pl['city']."','','','','".$txt."','".time()."','6','0','1')"); - } -} -?> \ No newline at end of file diff --git a/cron_autozv.php b/cron_autozv.php deleted file mode 100644 index 5a41bfcc..00000000 --- a/cron_autozv.php +++ /dev/null @@ -1,40 +0,0 @@ -'.$_SERVER['SERVER_ADDR']); - } -} - -define('GAME',true); -setlocale(LC_CTYPE ,"ru_RU.CP1251"); -include('_incl_data/__config.php'); -include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); -include('_incl_data/class/__magic.php'); - -//Подаем турнир для 2-3 уровней -$inc = mysql_query('INSERT INTO `zayvki` ( - `comment`,`noatack`,`city`,`creator`,`type`,`time_start`,`timeout`,`min_lvl_1`,`min_lvl_2`,`max_lvl_1`,`max_lvl_2`,`noinc`,`razdel`,`time`,`fastfight`,`maxplayers` -) VALUES - -( "Автозаявка! (Без ЕКР)","1","capitalcity","0","51","300","120","8","8","8","8","1","5","'.time().'","0","30" ), -( "Автозаявка! (Без ЕКР)","1","capitalcity","0","51","300","120","8","8","21","21","1","5","'.time().'","0","30" ) - - -'); - -if($inc) { - echo 'true'; -}else{ - echo 'false'; -} -?> \ No newline at end of file diff --git a/cron_bot_core.php b/cron_bot_core.php index fd499856..534bb1b8 100644 --- a/cron_bot_core.php +++ b/cron_bot_core.php @@ -1,160 +1,139 @@

    Так не пойдет;)

    '); } -/* -if(getIP() != $_SERVER['SERVER_ADDR'] && getIP() != '127.0.0.1' && getIP() != '' && getIP() != '31.131.97.206' && !isset($_GET['robot'])) { - die(getIP().'
    '.$_SERVER['SERVER_ADDR']); -} -*/ + error_reporting(0); ini_set('display_errors', 'Off'); -define('GAME',true); +const GAME = true; -setlocale(LC_CTYPE ,"ru_RU.CP1251"); +setlocale(LC_CTYPE, "ru_RU.CP1251"); include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); -include('_incl_data/class/bot.priem.php'); -include('_incl_data/class/bot.logic.php'); - - -function e($t) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #'.date('d.m.Y').' %'.date('H:i:s').' (Критическая ошибка): '.mysql_real_escape_string($t).'","capitalcity","Арбидол","6","1","-1")'); -} - -function inuser_go_btl($id) { - if(isset($id['id'])) { - echo '[go]'; - echo file_get_contents('https://new-combats.com/jx/battle/refresh.php?uid='.$id['id'].'&cron_core='.md5($id['id'].'_brfCOreW@!_'.$id['pass']).'&pass='.$id['pass']); - } -} - -/*$sp = mysql_query('SELECT `id` FROM `users` WHERE `host_reg` = "real_bot_user" AND `login` != "delete" AND `banned` = "0" ORDER BY `online` DESC LIMIT 300'); -while($pl = mysql_fetch_array($sp)) { - botLogic::start( $pl['id'] ); -}*/ -//$sp = mysql_query('SELECT `u`.* , `s`.* FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `u`.`id` = `s`.`id` WHERE ( /*( `s`.`bot` > 0 AND `u`.`battle` > 0 ) OR*/ `u`.`pass` = "saintlucia" ) ORDER BY `s`.`nextAct` ASC LIMIT 20'); -$ii=0; -while ($ii<6) +function inuser_go_btl($id) { -$count = array( - 0, - 0, - 0, - 0, - 0, - 0 -); -$sp = mysql_query('SELECT `u`.* , `s`.* FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `u`.`id` = `s`.`id` WHERE `u`.`pass` = "saintlucia" OR `u`.`no_ip` = "trupojor" ORDER BY `s`.`nextAct` ASC LIMIT 100'); -$btltest = array(); $btl_ref = array(); -while($pl = mysql_fetch_array($sp)) { - $i++; - if( $pl['zv'] > 0 ) { - $zv = mysql_fetch_array(mysql_query('SELECT `id`,`time`,`razdel` FROM `zayvki` WHERE `id` = "'.$pl['zv'].'" AND `btl_id` = 0 LIMIT 1')); - if(!isset($zv['id']) || $zv['razdel'] != 5 ) { - $pl['zv'] = 0; - mysql_query('UPDATE `stats` SET `zv` = "0" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - } - if( $pl['battle'] == -1 ) { - mysql_query('UPDATE `users` SET `battle` = 0,`ipreg` = 0 WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `zv` = "0" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - $pl['battle'] = 0; - $pl['ipreg'] = 0; - } - if( date('i') == 5 || date('i') == 6 || date('i') == 15 || date('i') == 16 || date('i') == 25 || date('i') == 26 || date('i') == 35 || date('i') == 36 || date('i') == 45 ) { - if( $pl['zv'] == 0 ) { - mysql_query('UPDATE `users` SET `ipreg` = 0 WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - } - - if( (!isset($btltest2[$pl['battle']]) || $btltest2[$pl['battle']] == 0) && $pl['battle'] > 0) { - $btltest2[$pl['battle']]++; - echo '|'.$pl['battle'].'|'.$pl['id'].'|inBATTLE | '; - inuser_go_btl($pl); - echo '{!}'; - } - - if( $pl['zv'] == 0 && ($pl['battle'] == 0 || !isset($btltest[$pl['battle']]) || $btltest[$pl['battle']] < 1)) { - - $btltest[$pl['battle']]++; - - if( $pl['timereg'] == 0 ) { - mysql_query('UPDATE `users` SET `timereg` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - }else{ - mysql_query('UPDATE `users` SET `online` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - - if( $pl['exp'] > 400000 && $pl['level'] == 8 ) { - $pl['exp'] = 400000; - mysql_query('UPDATE `stats` SET `exp` = "400000" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - }elseif( $pl['exp'] > 3500000 && $pl['level'] == 9 ) { - $pl['exp'] = 3500000; - mysql_query('UPDATE `stats` SET `exp` = "3500000" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - }elseif( $pl['exp'] > 48000000 && $pl['level'] == 10 ) { - $pl['exp'] = 48000000; - mysql_query('UPDATE `stats` SET `exp` = "48000000" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - }elseif( $pl['exp'] > 148000000 && $pl['level'] == 11 ) { - $pl['exp'] = 148000000; - mysql_query('UPDATE `stats` SET `exp` = "148000000" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - }elseif( $pl['exp'] > 400000000 && $pl['level'] == 12 ) { - $pl['exp'] = 400000000; - mysql_query('UPDATE `stats` SET `exp` = "400000000" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - - if( $pl['bot'] == 0 ) { - mysql_query('UPDATE `stats` SET `bot` = "2" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - - mysql_query('UPDATE `stats` SET `nextAct` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `online` = "'.time().'",`afk` = "" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - - botLogic::start( $pl['id'] ); - - //botLogic::e( $pl['battle'] .' -> '.$btltest[$pl['battle']] ); - }else{ - if( $pl['timereg'] == 0 ) { - mysql_query('UPDATE `users` SET `timereg` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - }else{ - mysql_query('UPDATE `users` SET `online` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - - if( $pl['exp'] > 400000 && $pl['level'] == 8 ) { - $pl['exp'] = 400000; - mysql_query('UPDATE `stats` SET `exp` = "400000" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - }elseif( $pl['exp'] > 3500000 && $pl['level'] == 9 ) { - $pl['exp'] = 3500000; - mysql_query('UPDATE `stats` SET `exp` = "3500000" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - }elseif( $pl['exp'] > 48000000 && $pl['level'] == 10 ) { - $pl['exp'] = 48000000; - mysql_query('UPDATE `stats` SET `exp` = "48000000" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - }elseif( $pl['exp'] > 148000000 && $pl['level'] == 11 ) { - $pl['exp'] = 148000000; - mysql_query('UPDATE `stats` SET `exp` = "148000000" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - }elseif( $pl['exp'] > 400000000 && $pl['level'] == 12 ) { - $pl['exp'] = 400000000; - mysql_query('UPDATE `stats` SET `exp` = "148000000" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - - if( $pl['bot'] == 0 ) { - mysql_query('UPDATE `stats` SET `bot` = "2" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - mysql_query('UPDATE `stats` SET `nextAct` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `online` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } + if (isset($id['id'])) { + echo '[go]'; + echo file_get_contents( + 'https://new-combats.com/jx/battle/refresh.php?uid=' . $id['id'] . '&cron_core=' . md5( + $id['id'] . '_brfCOreW@!_' . $id['pass'] + ) . '&pass=' . $id['pass'] + ); + } } -$ii++; -echo 'TEST:'.$ii; -unset($btltest, $btl_ref, $btltest2); -sleep(4); +$ii = 0; +while ($ii < 6) { + $count = [0, 0, 0, 0, 0, 0]; + $sp = mysql_query( + 'SELECT `u`.* , `s`.* FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `u`.`id` = `s`.`id` WHERE `u`.`pass` = "saintlucia" OR `u`.`no_ip` = "trupojor" ORDER BY `s`.`nextAct` ASC LIMIT 100' + ); + $btltest = []; + $btl_ref = []; + while ($pl = mysql_fetch_array($sp)) { + $i++; + if ($pl['zv'] > 0) { + $zv = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`time`,`razdel` FROM `zayvki` WHERE `id` = "' . $pl['zv'] . '" AND `btl_id` = 0 LIMIT 1' + ) + ); + if (!isset($zv['id']) || $zv['razdel'] != 5) { + $pl['zv'] = 0; + mysql_query('UPDATE `stats` SET `zv` = "0" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + } + if ($pl['battle'] == -1) { + mysql_query('UPDATE `users` SET `battle` = 0,`ipreg` = 0 WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `zv` = "0" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + $pl['battle'] = 0; + $pl['ipreg'] = 0; + } + if ((date('i') == 5 || date('i') == 6 || date('i') == 15 || date('i') == 16 || date('i') == 25 || date( + 'i' + ) == 26 || date('i') == 35 || date('i') == 36 || date('i') == 45) && $pl['zv'] == 0) { + mysql_query('UPDATE `users` SET `ipreg` = 0 WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + + if ((!isset($btltest2[$pl['battle']]) || $btltest2[$pl['battle']] == 0) && $pl['battle'] > 0) { + $btltest2[$pl['battle']]++; + echo '|' . $pl['battle'] . '|' . $pl['id'] . '|inBATTLE | '; + inuser_go_btl($pl); + echo '{!}'; + } + + if ($pl['zv'] == 0 && ($pl['battle'] == 0 || !isset($btltest[$pl['battle']]) || $btltest[$pl['battle']] < 1)) { + + $btltest[$pl['battle']]++; + + if ($pl['timereg'] == 0) { + mysql_query('UPDATE `users` SET `timereg` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } else { + mysql_query('UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + + if ($pl['exp'] > 400000 && $pl['level'] == 8) { + $pl['exp'] = 400000; + mysql_query('UPDATE `stats` SET `exp` = "400000" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } elseif ($pl['exp'] > 3500000 && $pl['level'] == 9) { + $pl['exp'] = 3500000; + mysql_query('UPDATE `stats` SET `exp` = "3500000" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } elseif ($pl['exp'] > 48000000 && $pl['level'] == 10) { + $pl['exp'] = 48000000; + mysql_query('UPDATE `stats` SET `exp` = "48000000" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } elseif ($pl['exp'] > 148000000 && $pl['level'] == 11) { + $pl['exp'] = 148000000; + mysql_query('UPDATE `stats` SET `exp` = "148000000" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } elseif ($pl['exp'] > 400000000 && $pl['level'] == 12) { + $pl['exp'] = 400000000; + mysql_query('UPDATE `stats` SET `exp` = "400000000" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + + if ($pl['bot'] == 0) { + mysql_query('UPDATE `stats` SET `bot` = "2" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + + mysql_query('UPDATE `stats` SET `nextAct` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `users` SET `online` = "' . time() . '",`afk` = "" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' + ); + + BotLogic::start($pl['id']); + + } else { + if ($pl['timereg'] == 0) { + mysql_query('UPDATE `users` SET `timereg` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } else { + mysql_query('UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + + if ($pl['exp'] > 400000 && $pl['level'] == 8) { + $pl['exp'] = 400000; + mysql_query('UPDATE `stats` SET `exp` = "400000" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } elseif ($pl['exp'] > 3500000 && $pl['level'] == 9) { + $pl['exp'] = 3500000; + mysql_query('UPDATE `stats` SET `exp` = "3500000" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } elseif ($pl['exp'] > 48000000 && $pl['level'] == 10) { + $pl['exp'] = 48000000; + mysql_query('UPDATE `stats` SET `exp` = "48000000" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } elseif ($pl['exp'] > 148000000 && $pl['level'] == 11) { + $pl['exp'] = 148000000; + mysql_query('UPDATE `stats` SET `exp` = "148000000" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } elseif ($pl['exp'] > 400000000 && $pl['level'] == 12) { + $pl['exp'] = 400000000; + mysql_query('UPDATE `stats` SET `exp` = "148000000" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + + if ($pl['bot'] == 0) { + mysql_query('UPDATE `stats` SET `bot` = "2" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + mysql_query('UPDATE `stats` SET `nextAct` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + } + + $ii++; + echo 'TEST:' . $ii; + unset($btltest, $btl_ref, $btltest2); + sleep(4); } -?> diff --git a/cron_bs.php b/cron_bs.php index 71f48971..2d440a51 100644 --- a/cron_bs.php +++ b/cron_bs.php @@ -29,7 +29,6 @@ define('GAME',true); setlocale(LC_CTYPE ,"ru_RU.CP1251"); include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); -//include('_incl_data/class/__user.php'); function send($text) { return mysql_query('INSERT INTO `chat` (`new`,`type`,`to`,`text`,`time`) VALUES (1,6,"Игромир","'.$text.'",'.time().')'); diff --git a/cron_dungeon_getOut.php b/cron_dungeon_getOut.php index f16af60c..a464fc9c 100644 --- a/cron_dungeon_getOut.php +++ b/cron_dungeon_getOut.php @@ -24,9 +24,7 @@ setlocale(LC_CTYPE ,"ru_RU.CP1251"); include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); -//include('_incl_data/class/__user.php'); -//include('_incl_data/class/__dungeon.php'); - + # запуск скрипта. function start() { # Страница создана 0.0000 diff --git a/cron_dungeon_goBots.php b/cron_dungeon_goBots.php index 78e4e4a8..c244d9e0 100644 --- a/cron_dungeon_goBots.php +++ b/cron_dungeon_goBots.php @@ -3,158 +3,169 @@ # перемещения ботов по пещере # а так-же напедения, когда игрок рядом -# Получаем IP -function getIP() { - if(isset($_SERVER['HTTP_X_REAL_IP'])) return $_SERVER['HTTP_X_REAL_IP']; - return $_SERVER['REMOTE_ADDR']; -} - -# Выполняем проверку безопасности. -/*if( $_SERVER['HTTP_CF_CONNECTING_IP'] != $_SERVER['SERVER_ADDR'] && $_SERVER['HTTP_CF_CONNECTING_IP'] != '127.0.0.1' ) { die('Hello pussy!'); } -if(getIP() != $_SERVER['SERVER_ADDR'] && getIP() != '127.0.0.1' && getIP() != '' && getIP() != '5.187.7.71') { - die(getIP().'
    '.$_SERVER['SERVER_ADDR']); -}*/ - -define('GAME', true); -setlocale(LC_CTYPE ,"ru_RU.CP1251"); +const GAME = true; +setlocale(LC_CTYPE, "ru_RU.CP1251"); include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); -//include('_incl_data/class/__dungeon.php'); - -function e($t) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #'.date('d.m.Y').' %'.date('H:i:s').' (Критическая ошибка): '.mysql_real_escape_string($t).'","capitalcity","LEL","6","1","-1")'); -} # Совершаем действие -> Нападение на игрока. -function botAttack ( $bot, $user ){ - if( $user['userBattle'] > 0 ) { - $battleID = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "'.$user['userBattle'].'" AND `team_win` = "-1" LIMIT 1')); - } - if( !isset($battleID['id']) ) { //Создаем поединок - $btl_id = 0; - $expB = 0; - $btl = array('players'=>'', 'timeout'=>180, 'type'=>0, 'invis'=>0, 'noinc'=>0, 'travmChance'=>0, 'typeBattle'=>0, 'addExp'=>$expB, 'money'=>0 ); - - $ins = mysql_query( - 'INSERT INTO `battle` +function botAttack($bot, $user) +{ + if ($user['userBattle'] > 0) { + $battleID = mysql_fetch_array( + mysql_query( + 'SELECT `id` FROM `battle` WHERE `id` = "' . $user['userBattle'] . '" AND `team_win` = "-1" LIMIT 1' + ) + ); + } + if (!isset($battleID['id'])) { //Создаем поединок + $btl_id = 0; + $expB = 0; + $btl = ['players' => '', 'timeout' => 180, 'type' => 0, 'invis' => 0, 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0]; + + $ins = mysql_query( + 'INSERT INTO `battle` (`dungeon`,`dn_id`,`x`,`y`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( - "'.$bot['dn_id'].'", - "'.$bot['this_dn'].'", - "'.$bot['x'].'", - "'.$bot['y'].'", - "'.$bot['userCity'].'", - "'.time().'", - "'.$btl['players'].'", - "'.$btl['timeout'].'", - "'.$btl['type'].'", - "'.$btl['invis'].'", - "'.$btl['noinc'].'", - "'.$btl['travmChance'].'", - "'.$btl['typeBattle'].'", - "'.$btl['addExp'].'", - "'.$btl['money'].'" + "' . $bot['dn_id'] . '", + "' . $bot['this_dn'] . '", + "' . $bot['x'] . '", + "' . $bot['y'] . '", + "' . $bot['userCity'] . '", + "' . time() . '", + "' . $btl['players'] . '", + "' . $btl['timeout'] . '", + "' . $btl['type'] . '", + "' . $btl['invis'] . '", + "' . $btl['noinc'] . '", + "' . $btl['travmChance'] . '", + "' . $btl['typeBattle'] . '", + "' . $btl['addExp'] . '", + "' . $btl['money'] . '" )' - ); - $btl_id = mysql_insert_id(); + ); + $btl_id = mysql_insert_id(); - if( $btl_id > 0 ) { //Добавляем ботов - $j = 0; - $logins_bot = array(); - mysql_query('UPDATE `dungeon_bots` SET `inBattle` = "'.$btl_id.'" WHERE `id2` = "'.$bot['id2'].'" LIMIT 1'); - $jui = 1; - while( $jui <= $bot['colvo'] ) { - $k = botAddBattle( $bot, $logins_bot ); - $logins_bot = $k['logins_bot']; - if( $k != false ) { - $upd = mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'" WHERE `id` = "'.$k['id'].'" LIMIT 1'); - if( $upd ) { - $upd = mysql_query('UPDATE `stats` SET `team` = "2" WHERE `id` = "'.$k['id'].'" LIMIT 1'); - if( $upd ) { - $j++; - } - } - } - $jui++; - } - unset( $logins_bot ); - if( $j > 0 ) { - mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'" WHERE `id` = "'.$user['userId'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "'.$user['userId'].'" LIMIT 1'); - } - } - } else { # Вмешиваемся в поединок. - $j = 0; - $logins_bot = array(); - $logins_bot_text =array(); - $logins_bot_vars =array('time1='.time().''); - $logins_bot_inBattle = mysql_query('SELECT SUBSTRING_INDEX(`login`, " (", 1) as login2, count(`login`) as count, `login` FROM `battle_users` WHERE `battle` = "'.$battleID['id'].'" AND `team`=2 GROUP BY `login2`'); - while($row = mysql_fetch_array($logins_bot_inBattle) ) { - $logins_bot[$row['login2']] = (int)$row['count']; - } - mysql_query('UPDATE `dungeon_bots` SET `inBattle` = "'.$battleID['id'].'" WHERE `id2` = "'.$bot['id2'].'" LIMIT 1'); - $jui = 1; - while( $jui <= $bot['colvo'] ) { - $k = botAddBattle( $bot, $logins_bot ); - $logins_bot = $k['logins_bot']; - - $logins_bot_text[] = ' '.$k['login'].''; - if( $k != false ) { - $upd = mysql_query('UPDATE `users` SET `battle` = "'.$battleID['id'].'" WHERE `id` = "'.$k['id'].'" LIMIT 1'); - if( $upd ) { - $upd = mysql_query('UPDATE `stats` SET `team` = "2" WHERE `id` = "'.$k['id'].'" LIMIT 1'); - if( $upd ) { - $j++; - } - } - } - $jui++; - } - if( $j > 0 ) { - $logins_bot_text = '{tm1} В поединок вмешались: '.implode(', ',$logins_bot_text).'.'; - $logins_bot_vars = implode('||',$logins_bot_vars); - $battle_log = mysql_fetch_array(mysql_query('SELECT * FROM `battle_logs` WHERE `battle`='.$battleID['id'].' ORDER BY `id_hod` DESC LIMIT 1')); - if( $battle_log['id_hod'] > 0 ) { - mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("'.time().'","'.$battleID['id'].'","'.($battle_log['id_hod']+1).'","'.$logins_bot_text.'","'.$logins_bot_vars.'","","","","",1)'); - } - } - unset($logins_bot); - if( $j > 0 ) { - mysql_query('UPDATE `users` SET `battle` = "'.$battleID['id'].'" WHERE `id` = "'.$user['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "'.$user['id'].'" LIMIT 1'); - } - unset($logins_bot_inBattle); - } + if ($btl_id > 0) { //Добавляем ботов + $j = 0; + $logins_bot = []; + mysql_query( + 'UPDATE `dungeon_bots` SET `inBattle` = "' . $btl_id . '" WHERE `id2` = "' . $bot['id2'] . '" LIMIT 1' + ); + $jui = 1; + while ($jui <= $bot['colvo']) { + $k = botAddBattle($bot, $logins_bot); + $logins_bot = $k['logins_bot']; + if ($k != false) { + $upd = mysql_query( + 'UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $k['id'] . '" LIMIT 1' + ); + if ($upd) { + $upd = mysql_query('UPDATE `stats` SET `team` = "2" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); + if ($upd) { + $j++; + } + } + } + $jui++; + } + unset($logins_bot); + if ($j > 0) { + mysql_query( + 'UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $user['userId'] . '" LIMIT 1' + ); + mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $user['userId'] . '" LIMIT 1'); + } + } + } else { # Вмешиваемся в поединок. + $j = 0; + $logins_bot = []; + $logins_bot_text = []; + $logins_bot_vars = ['time1=' . time() . '']; + $logins_bot_inBattle = mysql_query( + 'SELECT SUBSTRING_INDEX(`login`, " (", 1) as login2, count(`login`) as count, `login` FROM `battle_users` WHERE `battle` = "' . $battleID['id'] . '" AND `team`=2 GROUP BY `login2`' + ); + while ($row = mysql_fetch_array($logins_bot_inBattle)) { + $logins_bot[$row['login2']] = (int)$row['count']; + } + mysql_query( + 'UPDATE `dungeon_bots` SET `inBattle` = "' . $battleID['id'] . '" WHERE `id2` = "' . $bot['id2'] . '" LIMIT 1' + ); + $jui = 1; + while ($jui <= $bot['colvo']) { + $k = botAddBattle($bot, $logins_bot); + $logins_bot = $k['logins_bot']; + + $logins_bot_text[] = ' ' . $k['login'] . ''; + if ($k != false) { + $upd = mysql_query( + 'UPDATE `users` SET `battle` = "' . $battleID['id'] . '" WHERE `id` = "' . $k['id'] . '" LIMIT 1' + ); + if ($upd) { + $upd = mysql_query('UPDATE `stats` SET `team` = "2" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); + if ($upd) { + $j++; + } + } + } + $jui++; + } + if ($j > 0) { + $logins_bot_text = '{tm1} В поединок вмешались: ' . implode(', ', $logins_bot_text) . '.'; + $logins_bot_vars = implode('||', $logins_bot_vars); + $battle_log = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `battle_logs` WHERE `battle`=' . $battleID['id'] . ' ORDER BY `id_hod` DESC LIMIT 1' + ) + ); + if ($battle_log['id_hod'] > 0) { + mysql_query( + 'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . time( + ) . '","' . $battleID['id'] . '","' . ($battle_log['id_hod'] + 1) . '","' . $logins_bot_text . '","' . $logins_bot_vars . '","","","","",1)' + ); + } + } + unset($logins_bot); + if ($j > 0) { + mysql_query( + 'UPDATE `users` SET `battle` = "' . $battleID['id'] . '" WHERE `id` = "' . $user['id'] . '" LIMIT 1' + ); + mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $user['id'] . '" LIMIT 1'); + } + unset($logins_bot_inBattle); + } } # Совершаем нападение -> Добавляем Ботов в поединок -function botAddBattle( $bot, $logins_bot ) { - $add_bot = mysql_fetch_array( - mysql_query('SELECT +function botAddBattle($bot, $logins_bot) +{ + $add_bot = mysql_fetch_array( + mysql_query( + 'SELECT `id`, `login`, `stats`, `obraz`, `level`, `sex`, `name`, `deviz`, `hobby`, `type`, `itemsUse`, `priemUse`, `align`, `clan`, `align_zvanie`, `bonus`, `clan_zvanie`, `time_reg`, `city_reg`, `upLevel`, `active`, `expB`, `p_items`, `agressor`, `priems`, `priems_z`, `award` FROM `test_bot` - WHERE `id` = "'.$bot['id_bot'].'" + WHERE `id` = "' . $bot['id_bot'] . '" LIMIT 1' - ) - ); - - if( isset($add_bot['id']) ) { - if( isset($logins_bot[$add_bot['login']]) ) { - $logins_bot[$add_bot['login']]++; - $add_bot['login'] = $add_bot['login'].' ('.$logins_bot[$add_bot['login']].')'; - } else { - $logins_bot[$add_bot['login']] = 1; - } - $ret = true; - if( $add_bot['time_reg'] == 100 ) { - $add_bot['time_reg'] = time(); - } - if( $add_bot['city_reg'] == '{thiscity}' ) { - $add_bot['city_reg'] = $bot['userCity']; - } - $ins1 = mysql_query('INSERT INTO `users` ( + ) + ); + + if (isset($add_bot['id'])) { + if (isset($logins_bot[$add_bot['login']])) { + $logins_bot[$add_bot['login']]++; + $add_bot['login'] = $add_bot['login'] . ' (' . $logins_bot[$add_bot['login']] . ')'; + } else { + $logins_bot[$add_bot['login']] = 1; + } + $ret = true; + if ($add_bot['time_reg'] == 100) { + $add_bot['time_reg'] = time(); + } + if ($add_bot['city_reg'] == '{thiscity}') { + $add_bot['city_reg'] = $bot['userCity']; + } + $ins1 = mysql_query( + 'INSERT INTO `users` ( `align`, `login`, `level`, @@ -169,179 +180,214 @@ function botAddBattle( $bot, $logins_bot ) { `obraz`, `bot_id` ) VALUES ( - "'.$add_bot['align'].'", - "'.$add_bot['login'].'", - "'.$add_bot['level'].'", - "'.md5('bot_pass_'.$add_bot['login'].'_').'", - "'.$bot['userCity'].'", - "'.$add_bot['city_reg'].'", - "'.$add_bot['name'].'", - "'.$add_bot['sex'].'", - "'.$add_bot['deviz'].'", - "'.$add_bot['hobby'].'", - "'.$add_bot['time_reg'].'", - "'.$add_bot['obraz'].'", - "'.$bot['id_bot'].'" - )'); - - # Если бот успешно создан. - if( $ins1 ) { - $uid = mysql_insert_id(); - $ins2 = mysql_query('INSERT INTO `stats` (`id`,`stats`,`hpNow`,`upLevel`,`bot`) VALUES ("'.$uid.'","'.$add_bot['stats'].'","1000000","'.$add_bot['upLevel'].'","1")'); - if( $ins2 ) { - $add_bot['id'] = $uid; - $add_bot['logins_bot'] = $logins_bot; - $ret = $add_bot; - - //Выдаем предметы - //$this->addItem($item_id,$uid); - $iu = explode(',',$add_bot['itemsUse']); - $i = 0; - $w3b = 0; - while($i0) { - $idiu = botAddItem($iu[$i],$add_bot['id'], $bot['userCity']); - $islot = mysql_fetch_array(mysql_query('SELECT `id`,`inslot` FROM `items_main` WHERE `id` = "'.$iu[$i].'" LIMIT 1')); - if( isset($islot['id']) ) { - if( $islot['inslot'] == 3 ) { - if( $w3b == 1 ) { - $islot = 14; - } else { - $islot = 3; - $w3b = 1; - } - } else { - $islot = $islot['inslot']; - } - } else { - $islot = 2000; - } - if( isset($idiu, $islot) ) mysql_query('UPDATE `items_users` SET `inOdet` = "'.$islot.'" WHERE `id` = "'.$idiu.'" LIMIT 1'); - } - $i++; - } - - }else{ - $ret = false; - } - }else{ - $ret = false; - } - return $ret; - } + "' . $add_bot['align'] . '", + "' . $add_bot['login'] . '", + "' . $add_bot['level'] . '", + "' . md5('bot_pass_' . $add_bot['login'] . '_') . '", + "' . $bot['userCity'] . '", + "' . $add_bot['city_reg'] . '", + "' . $add_bot['name'] . '", + "' . $add_bot['sex'] . '", + "' . $add_bot['deviz'] . '", + "' . $add_bot['hobby'] . '", + "' . $add_bot['time_reg'] . '", + "' . $add_bot['obraz'] . '", + "' . $bot['id_bot'] . '" + )' + ); + + # Если бот успешно создан. + if ($ins1) { + $uid = mysql_insert_id(); + $ins2 = mysql_query( + 'INSERT INTO `stats` (`id`,`stats`,`hpNow`,`upLevel`,`bot`) VALUES ("' . $uid . '","' . $add_bot['stats'] . '","1000000","' . $add_bot['upLevel'] . '","1")' + ); + if ($ins2) { + $add_bot['id'] = $uid; + $add_bot['logins_bot'] = $logins_bot; + $ret = $add_bot; + + //Выдаем предметы + //$this->addItem($item_id,$uid); + $iu = explode(',', $add_bot['itemsUse']); + $i = 0; + $w3b = 0; + while ($i < count($iu)) { + if ($iu[$i] > 0) { + $idiu = botAddItem($iu[$i], $add_bot['id'], $bot['userCity']); + $islot = mysql_fetch_array( + mysql_query('SELECT `id`,`inslot` FROM `items_main` WHERE `id` = "' . $iu[$i] . '" LIMIT 1') + ); + if (isset($islot['id'])) { + if ($islot['inslot'] == 3) { + if ($w3b == 1) { + $islot = 14; + } else { + $islot = 3; + $w3b = 1; + } + } else { + $islot = $islot['inslot']; + } + } else { + $islot = 2000; + } + if (isset($idiu, $islot)) { + mysql_query( + 'UPDATE `items_users` SET `inOdet` = "' . $islot . '" WHERE `id` = "' . $idiu . '" LIMIT 1' + ); + } + } + $i++; + } + + } else { + $ret = false; + } + } else { + $ret = false; + } + return $ret; + } } #Выдаем предметы Боту. -function botAddItem($item_id, $bot_uid, $city) { - $i = mysql_fetch_array(mysql_query('SELECT `im`.`id`,`im`.`name`,`im`.`img`,`im`.`type`,`im`.`inslot`,`im`.`2h`,`im`.`2too`,`im`.`iznosMAXi`,`im`.`inRazdel`,`im`.`price1`,`im`.`price2`,`im`.`pricerep`,`im`.`magic_chance`,`im`.`info`,`im`.`massa`,`im`.`level`,`im`.`magic_inci`,`im`.`overTypei`,`im`.`group`,`im`.`group_max`,`im`.`geni`,`im`.`ts`,`im`.`srok`,`im`.`class`,`im`.`class_point`,`im`.`anti_class`,`im`.`anti_class_point`,`im`.`max_text`,`im`.`useInBattle`,`im`.`lbtl`,`im`.`lvl_itm`,`im`.`lvl_exp`,`im`.`lvl_aexp` FROM `items_main` AS `im` WHERE `im`.`id` = "'.mysql_real_escape_string($item_id).'" LIMIT 1')); - if(isset($i['id'])){ - $d = mysql_fetch_array(mysql_query('SELECT `id`,`items_id`,`data` FROM `items_main_data` WHERE `items_id` = "'.$i['id'].'" LIMIT 1')); - //новая дата - $data = $d['data']; - $ins = mysql_query(' +function botAddItem($item_id, $bot_uid, $city) +{ + $i = mysql_fetch_array( + mysql_query( + 'SELECT `im`.`id`,`im`.`name`,`im`.`img`,`im`.`type`,`im`.`inslot`,`im`.`2h`,`im`.`2too`,`im`.`iznosMAXi`,`im`.`inRazdel`,`im`.`price1`,`im`.`price2`,`im`.`pricerep`,`im`.`magic_chance`,`im`.`info`,`im`.`massa`,`im`.`level`,`im`.`magic_inci`,`im`.`overTypei`,`im`.`group`,`im`.`group_max`,`im`.`geni`,`im`.`ts`,`im`.`srok`,`im`.`class`,`im`.`class_point`,`im`.`anti_class`,`im`.`anti_class_point`,`im`.`max_text`,`im`.`useInBattle`,`im`.`lbtl`,`im`.`lvl_itm`,`im`.`lvl_exp`,`im`.`lvl_aexp` FROM `items_main` AS `im` WHERE `im`.`id` = "' . mysql_real_escape_string( + $item_id + ) . '" LIMIT 1' + ) + ); + if (isset($i['id'])) { + $d = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`items_id`,`data` FROM `items_main_data` WHERE `items_id` = "' . $i['id'] . '" LIMIT 1' + ) + ); + //новая дата + $data = $d['data']; + $ins = mysql_query( + ' INSERT INTO `items_users` ( `overType`,`item_id`,`uid`,`data`,`iznosMAX`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`time_create`,`dn_delete` ) VALUES ( - "'.$i['overTypei'].'", - "'.$i['id'].'", - "'.$bot_uid.'", - "'.$data.'", - "'.$i['iznosMAXi'].'", - "'.$i['geni'].'", - "'.$i['magic_inci'].'", - "'.$city.'", - "'.time().'", - "'.time().'", - "'.$i['dn_delete'].'" - )'); + "' . $i['overTypei'] . '", + "' . $i['id'] . '", + "' . $bot_uid . '", + "' . $data . '", + "' . $i['iznosMAXi'] . '", + "' . $i['geni'] . '", + "' . $i['magic_inci'] . '", + "' . $city . '", + "' . time() . '", + "' . time() . '", + "' . $i['dn_delete'] . '" + )' + ); - # Если предмет успешно добавлен в базу данных. - if( $ins ){ - $rt = mysql_insert_id(); - # отключена запись получения предмета в Дело. - } else { - $rt = 0; - } - } - return $rt; + # Если предмет успешно добавлен в базу данных. + if ($ins) { + $rt = mysql_insert_id(); + # отключена запись получения предмета в Дело. + } else { + $rt = 0; + } + } + return $rt; } -function moveBots($direction, $b){ - $toGoX = 0; - $toGoY = 0; - - if( isset($b['noBot']) && $b['noBot'] != '0000' ) { - if( $b['noBot'][0] != '0' ) $b['goTop'] = 0; - if( $b['noBot'][1] != '0' ) $b['goLeft'] = 0; - if( $b['noBot'][2] != '0' ) $b['goBottom'] = 0; - if( $b['noBot'][3] != '0' ) $b['goRight'] = 0; - } - $go = array( - 1 => array ('d'=>(int)$b['goTop'], 'go1'=>(int)$b['goLeft'], 'go2'=>(int)$b['goRight'], 'x' => (int)$b['x'], 'y' => (int)$b['y'], 's' => (int)$b['s']), - 2 => array ('d'=>(int)$b['goLeft'], 'go1'=>(int)$b['goBottom'], 'go2'=>(int)$b['goTop'], 'x' => (int)$b['x'], 'y' => (int)$b['y'], 's' => (int)$b['s']), - 3 => array ('d'=>(int)$b['goBottom'], 'go1'=>(int)$b['goRight'], 'go2'=>(int)$b['goLeft'], 'x' => (int)$b['x'], 'y' => (int)$b['y'], 's' => (int)$b['s']), - 4 => array ('d'=>(int)$b['goRight'], 'go1'=>(int)$b['goTop'], 'go2'=>(int)$b['goBottom'], 'x' => (int)$b['x'], 'y' => (int)$b['y'], 's' => (int)$b['s']) - ); - $dir = array( - 1 => array('moveForward' => array( 'x' => '0', 'y' => '1' ), 'moveBack' => array( 'x' => '0', 'y' => '-1' ),'moveGo1' => array( 'x' => '-1', 'y' => '0' ),'moveGo2' => array( 'x' => '1', 'y' => '0' )), - 2 => array('moveForward' => array( 'x' => '-1', 'y' => '0' ),'moveBack' => array( 'x' => '1', 'y' => '0' ),'moveGo1' => array( 'x' => '0', 'y' => '-1' ),'moveGo2' => array( 'x' => '0', 'y' => '1' )), - 3 => array('moveForward' => array( 'x' => '0', 'y' => '-1' ),'moveBack' => array( 'x' => '0', 'y' => '1' ),'moveGo1' => array( 'x' => '1', 'y' => '0' ),'moveGo2' => array( 'x' => '-1', 'y' => '0' )), - 4 => array('moveForward' => array( 'x' => '1', 'y' => '0' ),'moveBack' => array( 'x' => '-1', 'y' => '0' ),'moveGo1' => array( 'x' => '0', 'y' => '1' ),'moveGo2' => array( 'x' => '0', 'y' => '-1' )) - ); - $go = $go[$direction]; - $dir = $dir[$direction]; - if($go['d'] == 1 ) { - $toGoY = $dir['moveForward']['y']; - $toGoX = $dir['moveForward']['x']; - if(rand(1,100)>66){ - if( $go['go1'] ==1 && $go['go2'] == 0) { - $toGoY = $dir['moveGo1']['y']; - $toGoX = $dir['moveGo1']['x']; - } elseif( $go['go1'] ==0 && $go['go2'] == 1) { - $toGoY = $dir['moveGo2']['y']; - $toGoX = $dir['moveGo2']['x']; - } elseif( $go['go1'] ==1 && $go['go2'] == 1) { - $a = rand(1,2); - $toGoY = $dir['moveGo'.$a]['y']; - $toGoX = $dir['moveGo'.$a]['x']; - } - } elseif(rand(1,100)>96){ - $toGoY = $dir['moveBack']['y']; - $toGoX = $dir['moveBack']['x']; - } - } elseif( $go['d'] == 0 ) { - if( $go['go1'] ==1 && $go['go2'] == 1 ){ - if(rand(0,1) == 1) { - $toGoY = $dir['moveGo1']['y']; - $toGoX = $dir['moveGo1']['x']; - } else { - $toGoY = $dir['moveGo2']['y']; - $toGoX = $dir['moveGo2']['x']; - } - } elseif( $go['go1'] ==1 && $go['go2'] == 0 ) { - $toGoY = $dir['moveGo1']['y']; - $toGoX = $dir['moveGo1']['x']; - } elseif( $go['go1'] ==0 && $go['go2'] == 1 ) { - $toGoY = $dir['moveGo2']['y']; - $toGoX = $dir['moveGo2']['x']; - } elseif( $go['go1'] == 0 && $go['go2'] == 0 ){ - $toGoY = $dir['moveBack']['y']; - $toGoX = $dir['moveBack']['x']; - } - } - unset($dir, $go, $direction, $a); - return array( 'x'=>(int)$toGoX, 'y'=>(int)$toGoY ); + +function moveBots($direction, $b) +{ + $toGoX = 0; + $toGoY = 0; + + if (isset($b['noBot']) && $b['noBot'] != '0000') { + if ($b['noBot'][0] != '0') { + $b['goTop'] = 0; + } + if ($b['noBot'][1] != '0') { + $b['goLeft'] = 0; + } + if ($b['noBot'][2] != '0') { + $b['goBottom'] = 0; + } + if ($b['noBot'][3] != '0') { + $b['goRight'] = 0; + } + } + $go = [ + 1 => ['d' => (int)$b['goTop'], 'go1' => (int)$b['goLeft'], 'go2' => (int)$b['goRight'], 'x' => (int)$b['x'], 'y' => (int)$b['y'], 's' => (int)$b['s']], + 2 => ['d' => (int)$b['goLeft'], 'go1' => (int)$b['goBottom'], 'go2' => (int)$b['goTop'], 'x' => (int)$b['x'], 'y' => (int)$b['y'], 's' => (int)$b['s']], + 3 => ['d' => (int)$b['goBottom'], 'go1' => (int)$b['goRight'], 'go2' => (int)$b['goLeft'], 'x' => (int)$b['x'], 'y' => (int)$b['y'], 's' => (int)$b['s']], + 4 => ['d' => (int)$b['goRight'], 'go1' => (int)$b['goTop'], 'go2' => (int)$b['goBottom'], 'x' => (int)$b['x'], 'y' => (int)$b['y'], 's' => (int)$b['s']], + ]; + $dir = [ + 1 => ['moveForward' => ['x' => '0', 'y' => '1'], 'moveBack' => ['x' => '0', 'y' => '-1'], 'moveGo1' => ['x' => '-1', 'y' => '0'], 'moveGo2' => ['x' => '1', 'y' => '0']], + 2 => ['moveForward' => ['x' => '-1', 'y' => '0'], 'moveBack' => ['x' => '1', 'y' => '0'], 'moveGo1' => ['x' => '0', 'y' => '-1'], 'moveGo2' => ['x' => '0', 'y' => '1']], + 3 => ['moveForward' => ['x' => '0', 'y' => '-1'], 'moveBack' => ['x' => '0', 'y' => '1'], 'moveGo1' => ['x' => '1', 'y' => '0'], 'moveGo2' => ['x' => '-1', 'y' => '0']], + 4 => ['moveForward' => ['x' => '1', 'y' => '0'], 'moveBack' => ['x' => '-1', 'y' => '0'], 'moveGo1' => ['x' => '0', 'y' => '1'], 'moveGo2' => ['x' => '0', 'y' => '-1']], + ]; + $go = $go[$direction]; + $dir = $dir[$direction]; + if ($go['d'] == 1) { + $toGoY = $dir['moveForward']['y']; + $toGoX = $dir['moveForward']['x']; + if (rand(1, 100) > 66) { + if ($go['go1'] == 1 && $go['go2'] == 0) { + $toGoY = $dir['moveGo1']['y']; + $toGoX = $dir['moveGo1']['x']; + } elseif ($go['go1'] == 0 && $go['go2'] == 1) { + $toGoY = $dir['moveGo2']['y']; + $toGoX = $dir['moveGo2']['x']; + } elseif ($go['go1'] == 1 && $go['go2'] == 1) { + $a = rand(1, 2); + $toGoY = $dir['moveGo' . $a]['y']; + $toGoX = $dir['moveGo' . $a]['x']; + } + } elseif (rand(1, 100) > 96) { + $toGoY = $dir['moveBack']['y']; + $toGoX = $dir['moveBack']['x']; + } + } elseif ($go['d'] == 0) { + if ($go['go1'] == 1 && $go['go2'] == 1) { + if (rand(0, 1) == 1) { + $toGoY = $dir['moveGo1']['y']; + $toGoX = $dir['moveGo1']['x']; + } else { + $toGoY = $dir['moveGo2']['y']; + $toGoX = $dir['moveGo2']['x']; + } + } elseif ($go['go1'] == 1 && $go['go2'] == 0) { + $toGoY = $dir['moveGo1']['y']; + $toGoX = $dir['moveGo1']['x']; + } elseif ($go['go1'] == 0 && $go['go2'] == 1) { + $toGoY = $dir['moveGo2']['y']; + $toGoX = $dir['moveGo2']['x']; + } elseif ($go['go1'] == 0 && $go['go2'] == 0) { + $toGoY = $dir['moveBack']['y']; + $toGoX = $dir['moveBack']['x']; + } + } + unset($dir, $go, $direction, $a); + return ['x' => (int)$toGoX, 'y' => (int)$toGoY]; } # запуск скрипта. -function start(){ - # Страница создана 0.0000 - $mtime = microtime();$mtime = explode(" ",$mtime);$tstart = $mtime[1] + $mtime[0]; +function start() +{ + # Страница создана 0.0000 + $mtime = microtime(); + $mtime = explode(" ", $mtime); + $tstart = $mtime[1] + $mtime[0]; - # Выбираем всех ботов. - # В выборку включено: Позиция бота, Направление куда он может идти, Существует ли рядом Игрок, его координаты и в поединке ли он. - $query = mysql_query( - "SELECT + # Выбираем всех ботов. + # В выборку включено: Позиция бота, Направление куда он может идти, Существует ли рядом Игрок, его координаты и в поединке ли он. + $query = mysql_query( + "SELECT `dn`.`id` as `this_dn`, `dn`.`id2` as `dn_id`, `db`.`id2`, `db`.`id_bot`, `tb`.`login` as login, `db`.`colvo`, `db`.`go_bot`, `db`.`x`, `db`.`y`, `db`.`s`, `db`.`atack`, `tb`.`agressor`, `dm`.`go_1` as `goRight`, `dm`.`go_2` as `goLeft`, `dm`.`go_3` as `goTop`, `dm`.`go_4` as `goBottom`, `dm`.`no_bot` as `noBot`, `user_info`.`id` as `userId`, @@ -362,66 +408,73 @@ function start(){ `db`.`atack` = '0' AND `db`.`delete` = '0' AND `db`.`for_dn` = '0' AND - ( ( `db`.`go_bot` > '".(time()-32400)."' AND `db`.`go_bot` < '".(time())."') OR `db`.`go_bot`='1') AND + ( ( `db`.`go_bot` > '" . (time() - 32400) . "' AND `db`.`go_bot` < '" . (time()) . "') OR `db`.`go_bot`='1') AND `db`.`inBattle`='0' GROUP BY `db`.`id2` ORDER BY `db`.`go_bot` ASC" - ); - - while( $bot = mysql_fetch_array( $query ) ) { - if( $bot['go_bot'] > 0 && $bot['go_bot'] <= time() ) { - $sNext = true; - $sTo=$bot['s']; - $xFrom = $bot['x']; # текущие координаты X - $yFrom = $bot['y']; # текущие координаты Y + ); - $return = moveBots($bot['s'],$bot); - $xTo = $bot['x']+$return['x']; - $yTo = $bot['y']+$return['y']; - # Проверяем, имеется ли переход по клетке. - $inSight = 0; - if( isset($bot['id2']) ) { - if($xFrom==$xTo && $yFrom==$yTo) { # Если остаемся на месте. - $inSight = 1; - } elseif( isset($bot['goRight']) && $xFrom == $xTo-1 && $bot['goRight'] == 1 ) { //право - $sTo=4; - $inSight = 1; - } elseif( isset($bot['goLeft']) && $xFrom == $xTo+1 && $bot['goLeft'] == 1 ) { //лево - $sTo=2; - $inSight = 1; - } elseif( isset($bot['goTop']) && $yFrom == $yTo-1 && $bot['goTop'] == 1 ) { //верх - $sTo=1; - $inSight = 1; - } elseif( isset($bot['goBottom']) && $yFrom == $yTo+1 && $bot['goBottom'] == 1 ) { //низ - $sTo=3; - $inSight = 1; - } - } - - if( isset($bot['userId'],$bot['userPosY'],$bot['userPosX']) && $bot['userId'] != '' && $bot['agressor']==1 && ( - ($bot['userPosY']==$bot['y']+1 && $bot['userPosX']==$bot['x']) OR - ($bot['userPosY']==$bot['y']-1 && $bot['userPosX']==$bot['x']) OR - ($bot['userPosY']==$bot['y'] && $bot['userPosX']==$bot['x']-1) OR - ($bot['userPosY']==$bot['y'] && $bot['userPosX']==$bot['x']+1) - ) ) { - bot['userPosY']=$yFrom; $bot['userPosX']=$xFrom; - mysql_query('UPDATE `stats` SET `x` = "'.$xFrom.'" , `y` = "'.$yFrom.'" WHERE `id` = "'.$bot['userId'].'" LIMIT 1'); - botAttack($bot,$bot); - } elseif( isset($bot['userId'],$bot['userPosY'],$bot['userPosX']) && $bot['userId'] != '' && $inSight == 1 && $yTo == $bot['userPosY'] && $xTo == $bot['userPosX'] && $bot['atack']==1) { - botAttack($bot,$bot); - } elseif( $inSight == 1 ) { // Передвижение ботов. - $bot['go_bot'] = time()+rand(7,15); - mysql_query('UPDATE `dungeon_bots` SET `x` = "'.$xTo.'",`y` = "'.$yTo.'", `s` = "'.$sTo.'", `go_bot` = "'.$bot['go_bot'].'" WHERE `id2` = "'.$bot['id2'].'" LIMIT 1 '); - } - unset($xFrom,$yFrom,$xTo,$yTo,$inSight,$sNext,$sTo); - } - unset($bot); - } - unset($query,$bot); - - $mtime = microtime(); - $mtime = explode(" ",$mtime);$mtime = $mtime[1] + $mtime[0];$totaltime = ($mtime - $tstart); - printf ("Страница сгенерирована за %f секунд !", $totaltime); + while ($bot = mysql_fetch_array($query)) { + if ($bot['go_bot'] > 0 && $bot['go_bot'] <= time()) { + $sNext = true; + $sTo = $bot['s']; + $xFrom = $bot['x']; # текущие координаты X + $yFrom = $bot['y']; # текущие координаты Y + + $return = moveBots($bot['s'], $bot); + $xTo = $bot['x'] + $return['x']; + $yTo = $bot['y'] + $return['y']; + # Проверяем, имеется ли переход по клетке. + $inSight = 0; + if (isset($bot['id2'])) { + if ($xFrom == $xTo && $yFrom == $yTo) { # Если остаемся на месте. + $inSight = 1; + } elseif (isset($bot['goRight']) && $xFrom == $xTo - 1 && $bot['goRight'] == 1) { //право + $sTo = 4; + $inSight = 1; + } elseif (isset($bot['goLeft']) && $xFrom == $xTo + 1 && $bot['goLeft'] == 1) { //лево + $sTo = 2; + $inSight = 1; + } elseif (isset($bot['goTop']) && $yFrom == $yTo - 1 && $bot['goTop'] == 1) { //верх + $sTo = 1; + $inSight = 1; + } elseif (isset($bot['goBottom']) && $yFrom == $yTo + 1 && $bot['goBottom'] == 1) { //низ + $sTo = 3; + $inSight = 1; + } + } + + if (isset($bot['userId'], $bot['userPosY'], $bot['userPosX']) && $bot['userId'] != '' && $bot['agressor'] == 1 && ( + ($bot['userPosY'] == $bot['y'] + 1 && $bot['userPosX'] == $bot['x']) or + ($bot['userPosY'] == $bot['y'] - 1 && $bot['userPosX'] == $bot['x']) or + ($bot['userPosY'] == $bot['y'] && $bot['userPosX'] == $bot['x'] - 1) or + ($bot['userPosY'] == $bot['y'] && $bot['userPosX'] == $bot['x'] + 1) + )) { + bot['userPosY'] = $yFrom; + $bot['userPosX'] = $xFrom; + mysql_query( + 'UPDATE `stats` SET `x` = "' . $xFrom . '" , `y` = "' . $yFrom . '" WHERE `id` = "' . $bot['userId'] . '" LIMIT 1' + ); + botAttack($bot, $bot); + } elseif (isset($bot['userId'], $bot['userPosY'], $bot['userPosX']) && $bot['userId'] != '' && $inSight == 1 && $yTo == $bot['userPosY'] && $xTo == $bot['userPosX'] && $bot['atack'] == 1) { + botAttack($bot, $bot); + } elseif ($inSight == 1) { // Передвижение ботов. + $bot['go_bot'] = time() + rand(7, 15); + mysql_query( + 'UPDATE `dungeon_bots` SET `x` = "' . $xTo . '",`y` = "' . $yTo . '", `s` = "' . $sTo . '", `go_bot` = "' . $bot['go_bot'] . '" WHERE `id2` = "' . $bot['id2'] . '" LIMIT 1 ' + ); + } + unset($xFrom, $yFrom, $xTo, $yTo, $inSight, $sNext, $sTo); + } + unset($bot); + } + unset($query, $bot); + + $mtime = microtime(); + $mtime = explode(" ", $mtime); + $mtime = $mtime[1] + $mtime[0]; + $totaltime = ($mtime - $tstart); + printf("Страница сгенерирована за %f секунд !", $totaltime); } # Запускаем выполнение процесса. diff --git a/cron_dungeon_save.php b/cron_dungeon_save.php index a4d99af3..1d7ae9a7 100644 --- a/cron_dungeon_save.php +++ b/cron_dungeon_save.php @@ -1,42 +1,19 @@ '.$_SERVER['SERVER_ADDR']); -}*/ - - -define('GAME',true); +const GAME = true; include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); -function e($t) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #'.date('d.m.Y').' %'.date('H:i:s').' (Критическая ошибка): '.mysql_real_escape_string($t).'","capitalcity","LEL","6","1","-1")'); +$sp = mysql_query( + 'SELECT `u`.*,`s`.*,`u`.`id`,`s`.`id` FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON ( `s`.`id` = `u`.`id` AND `s`.`bot` = 0 ) WHERE `login` = "Crowley"' +); +while ($pl = mysql_fetch_array($sp)) { + $last_dnow = mysql_fetch_array(mysql_query('SELECT * FROM `save_dungeon` WHERE `uid` = "' . $pl['id'] . '"')); + if (isset($last_dnow['id'])) { + mysql_query('UPDATE `users` SET `room` = "405" WHERE `id` = "' . $last_dnow['uid'] . '"'); + mysql_query( + 'UPDATE `stats` SET `dnow` = "' . $last_dnow['dnow'] . '",`x` = "' . $last_dnow['x'] . '",`y` = "' . $last_dnow['y'] . '" WHERE `id` = "' . $last_dnow['uid'] . '"' + ); + } } - -$sp = mysql_query('SELECT `u`.*,`s`.*,`u`.`id`,`s`.`id` FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON ( `s`.`id` = `u`.`id` AND `s`.`bot` = 0 ) WHERE `login` = "Crowley"'); - while($pl = mysql_fetch_array($sp)) { - $last_dnow = mysql_fetch_array(mysql_query('SELECT * FROM `save_dungeon` WHERE `uid` = "'.$pl['id'].'"')); - if(isset($last_dnow['id'])) { - mysql_query('UPDATE `users` SET `room` = "405" WHERE `id` = "'.$last_dnow['uid'].'"'); - mysql_query('UPDATE `stats` SET `dnow` = "'.$last_dnow['dnow'].'",`x` = "'.$last_dnow['x'].'",`y` = "'.$last_dnow['y'].'" WHERE `id` = "'.$last_dnow['uid'].'"'); - } -} -?> \ No newline at end of file diff --git a/cron_killusers.php b/cron_killusers.php index 21708c1d..4aef3587 100644 --- a/cron_killusers.php +++ b/cron_killusers.php @@ -2,196 +2,222 @@ die('Что-то тут не так...'); -function getIP() { - if(isset($_SERVER['HTTP_X_REAL_IP'])) return $_SERVER['HTTP_X_REAL_IP']; - return $_SERVER['REMOTE_ADDR']; +function getIP() +{ + return getIPblock(); } # Получаем IP -function getIPblock() { - if(isset($_SERVER['HTTP_X_REAL_IP'])) return $_SERVER['HTTP_X_REAL_IP']; - return $_SERVER['REMOTE_ADDR']; +function getIPblock() +{ + return isset($_SERVER['HTTP_X_REAL_IP']) ? $_SERVER['HTTP_X_REAL_IP'] : $_SERVER['REMOTE_ADDR']; } # Выполняем проверку безопасности. -if( $_SERVER['HTTP_CF_CONNECTING_IP'] != $_SERVER['SERVER_ADDR'] && $_SERVER['HTTP_CF_CONNECTING_IP'] != '127.0.0.1' ) { die('Hello pussy!'); } -if(getIPblock() != $_SERVER['SERVER_ADDR'] && getIPblock() != '127.0.0.1' && getIPblock() != '' && getIPblock() != '5.187.7.71') { - die(getIPblock().'
    '.$_SERVER['SERVER_ADDR']); +if ($_SERVER['HTTP_CF_CONNECTING_IP'] != $_SERVER['SERVER_ADDR'] && $_SERVER['HTTP_CF_CONNECTING_IP'] != '127.0.0.1') { + die('Hello pussy!'); +} +if (getIPblock() != $_SERVER['SERVER_ADDR'] && getIPblock() != '127.0.0.1' && getIPblock() != '' && getIPblock( + ) != '5.187.7.71') { + die(getIPblock() . '
    ' . $_SERVER['SERVER_ADDR']); } -define('GAME',true); +const GAME = true; include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); -function e($t) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #'.date('d.m.Y').' %'.date('H:i:s').' (Критическая ошибка): '.mysql_real_escape_string($t).'","capitalcity","LEL","6","1","-1")'); +function e($t) +{ + mysql_query( + 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #' . date('d.m.Y') . ' %' . date( + 'H:i:s' + ) . ' (Критическая ошибка): ' . mysql_real_escape_string($t) . '","capitalcity","LEL","6","1","-1")' + ); } -function send_chat($type,$from,$text,$time) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`login`,`to`,`type`,`new`,`time`,`room`) VALUES ("'.mysql_real_escape_string($text).'","capitalcity","'.mysql_real_escape_string($from).'","","'.$type.'","1","'.mysql_real_escape_string($time).'","3")'); +function send_chat($type, $from, $text, $time) +{ + mysql_query( + 'INSERT INTO `chat` (`text`,`city`,`login`,`to`,`type`,`new`,`time`,`room`) VALUES ("' . mysql_real_escape_string( + $text + ) . '","capitalcity","' . mysql_real_escape_string( + $from + ) . '","","' . $type . '","1","' . mysql_real_escape_string($time) . '","3")' + ); } -$kp = array( - 0 => 1, - 1 => 1, - 2 => 3, - 3 => 3, - 4 => 3, - 5 => 7, - 6 => 7, - 7 => 7, - 8 => 90, - 9 => 90, - 10 => 90, - 11 => 90, - 12 => 90, - 13 => 90, - 14 => 90, - 15 => 90, - 16 => 90, - 17 => 90, - 18 => 90, - 19 => 90, - 20 => 90, - 21 => 90 -); +$kp = [ + 0 => 1, + 1 => 1, + 2 => 3, + 3 => 3, + 4 => 3, + 5 => 7, + 6 => 7, + 7 => 7, + 8 => 90, + 9 => 90, + 10 => 90, + 11 => 90, + 12 => 90, + 13 => 90, + 14 => 90, + 15 => 90, + 16 => 90, + 17 => 90, + 18 => 90, + 19 => 90, + 20 => 90, + 21 => 90, +]; -function addUser($userData) { - $query = "INSERT INTO `users_kill` ( ". - mysql_real_escape_string(implode(' , ', array_keys($userData))). - " ) VALUES ( '". - (implode("' , '", $userData)). - "' )"; +function addUser($userData) +{ + $query = "INSERT INTO `users_kill` ( " . + mysql_real_escape_string(implode(' , ', array_keys($userData))) . + " ) VALUES ( '" . + (implode("' , '", $userData)) . + "' )"; - return $query; + return $query; } //Удаляем эффекты и предметы (не нужные) -mysql_query('DELETE FROM `eff_users` WHERE `delete` > "1392211522" AND `delete` < "'.time().'"'); -mysql_query('DELETE FROM `items_users` WHERE `delete` > "1392211522" AND `delete` < "'.time().'"'); +mysql_query('DELETE FROM `eff_users` WHERE `delete` > "1392211522" AND `delete` < "' . time() . '"'); +mysql_query('DELETE FROM `items_users` WHERE `delete` > "1392211522" AND `delete` < "' . time() . '"'); $lvl = 0; -while( $lvl <= 21 ) { - $last_time = round( time() - ( 2 * $kp[$lvl] * 86400 ) ); - $sp = mysql_query('SELECT `u`.*,`s`.*,`u`.`id` AS `id1`,`s`.`id` AS `id2` FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON ( `s`.`id` = `u`.`id` AND `s`.`bot` = 0 ) WHERE `u`.`admin` = 0 AND `u`.`pass` != "" AND `u`.`no_ip` = "" AND `u`.`level` = "'.$lvl.'" AND `align` != 50 AND `u`.`online` < '.$last_time.' LIMIT 1000'); - while($pl = mysql_fetch_array($sp)) { - - if( $pl['id'] < 1 ) { - if( $pl['id1'] > 0 ) { - $pl['id'] = $pl['id1']; - }elseif( $pl['id2'] > 0 ) { - $pl['id'] = $pl['id2']; - } - } - - //Собираем данные сколько ценностей было на персонаже - $pl['bank'] = mysql_fetch_array(mysql_query('SELECT SUM(`money1`),SUM(`money2`) FROM `bank` WHERE `uid` = "'.$pl['id'].'" LIMIT 1')); - $pl['money'] += $pl['bank'][0]; - $pl['money2'] += $pl['bank'][1]; - $sitm = mysql_query('SELECT `id`,`item_id`,`1price`,`2price` FROM `items_users` WHERE (`delete` = 1000 OR `delete` = 0) AND `delete` = "0" AND `data` NOT LIKE "%|frompisher=%" AND `uid` = "'.$pl['id'].'"'); - while($pitm = mysql_fetch_array($sitm)) { - if( $pitm['1price'] != 0 ) { - $pl['money'] += $pitm['1price']; - }elseif( $pitm['2price'] != 0 ) { - $pl['money'] += $pitm['2price']; - }else{ - $pitems = mysql_fetch_array(mysql_query('SELECT `price1`,`price2` FROM `items_main` WHERE `id` = "'.$sitm['item_id'].'" LIMIT 1')); - if( $pitems['price2'] > 0 ) { - $pl['money'] += $pitems['price2']; - }else{ - $pl['money2'] += $pitems['price1']; - } - } - } - if($pl['id'] > 0) { - //Удаляем все данные о персонаже на проекте - mysql_query('DELETE FROM `aaa_znahar` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `actions` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `add_smiles` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `a_com_act` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `a_noob` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `a_system` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `a_vaucher` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `a_vaucher_active` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `bank` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `bank_alh` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `battle_actions` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `battle_cache` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `bid` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `bs_actions` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `bs_zv` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `complects_priem` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `dump` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `dungeon_actions` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `dungeon_now` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `dungeon_zv` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `feerverks` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `fontan` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `fontan_hp` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `friends` WHERE `user` = "'.$pl['id'].'" OR `friend` = "'.$pl['id'].'" OR `enemy` = "'.$pl['id'].'" OR `notinlist` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `house` WHERE `owner` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `items_img` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `items_users` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `izlom_rating` WHERE `uid` = "'.$pl['id'].'"'); - //mysql_query('DELETE FROM `obraz` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `online` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `post` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `reimage` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `rep` WHERE `id` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `repass` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `ruletka_coin` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `save_com` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `stats` WHERE `id` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `telegram` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `transfers` WHERE `uid1` = "'.$pl['id'].'" OR `uid2` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `users` WHERE `id` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `users_animal` WHERE `uid` = "'.$pl['id'].'"'); - //mysql_query('DELETE FROM `users_delo` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `users_ico` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `users_turnirs` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `zayvki` WHERE `uid` = "'.$pl['id'].'"'); - mysql_query('DELETE FROM `_clan` WHERE `uid` = "'.$pl['id'].'"'); - echo '•'.$pl['login'].'
    '; - } - - //Заносим данные в базу - $usrData = array( - '`uid`' => $pl['id'], - '`money1`' => $pl['money'], - '`money2`' => $pl['money2'], - '`money4`' => $pl['money4'], - '`ip`' => $pl['ip'], - '`timereg`' => $pl['timereg'], - '`ipreg`' => $pl['ipreg'], - '`sex`' => $pl['sex'], - '`login`' => $pl['login'], - '`pass`' => $pl['pass'], - '`mail`' => $pl['mail'], - '`level`' => $pl['level'], - '`exp`' => $pl['exp'], - '`online`' => $pl['online'], - '`time_kill`' => time(), - '`align`' => $pl['align'], - '`clan`' => $pl['clan'], - '`banned`' => $pl['banned'], - '`win`' => $pl['win'], - '`lose`' => $pl['lose'], - '`nich`' => $pl['nich'], - '`marry`' => $pl['marry'], - '`send`' => $pl['send'], - '`activ`' => $pl['activ'], - '`name`' => $pl['name'], - '`obraz`' => $pl['obraz'], - '`bithday`' => $pl['bithday'], - '`host_reg`' => $pl['host_reg'] - ); - mysql_query(addUser($usrData)); - } - $lvl++; +while ($lvl <= 21) { + $last_time = round(time() - (2 * $kp[$lvl] * 86400)); + $sp = mysql_query( + 'SELECT `u`.*,`s`.*,`u`.`id` AS `id1`,`s`.`id` AS `id2` FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON ( `s`.`id` = `u`.`id` AND `s`.`bot` = 0 ) WHERE `u`.`admin` = 0 AND `u`.`pass` != "" AND `u`.`no_ip` = "" AND `u`.`level` = "' . $lvl . '" AND `align` != 50 AND `u`.`online` < ' . $last_time . ' LIMIT 1000' + ); + while ($pl = mysql_fetch_array($sp)) { + + if ($pl['id'] < 1) { + if ($pl['id1'] > 0) { + $pl['id'] = $pl['id1']; + } elseif ($pl['id2'] > 0) { + $pl['id'] = $pl['id2']; + } + } + + //Собираем данные сколько ценностей было на персонаже + $pl['bank'] = mysql_fetch_array( + mysql_query('SELECT SUM(`money1`),SUM(`money2`) FROM `bank` WHERE `uid` = "' . $pl['id'] . '" LIMIT 1') + ); + $pl['money'] += $pl['bank'][0]; + $pl['money2'] += $pl['bank'][1]; + $sitm = mysql_query( + 'SELECT `id`,`item_id`,`1price`,`2price` FROM `items_users` WHERE (`delete` = 1000 OR `delete` = 0) AND `delete` = "0" AND `data` NOT LIKE "%|frompisher=%" AND `uid` = "' . $pl['id'] . '"' + ); + while ($pitm = mysql_fetch_array($sitm)) { + if ($pitm['1price'] != 0) { + $pl['money'] += $pitm['1price']; + } elseif ($pitm['2price'] != 0) { + $pl['money'] += $pitm['2price']; + } else { + $pitems = mysql_fetch_array( + mysql_query( + 'SELECT `price1`,`price2` FROM `items_main` WHERE `id` = "' . $sitm['item_id'] . '" LIMIT 1' + ) + ); + if ($pitems['price2'] > 0) { + $pl['money'] += $pitems['price2']; + } else { + $pl['money2'] += $pitems['price1']; + } + } + } + if ($pl['id'] > 0) { + //Удаляем все данные о персонаже на проекте + mysql_query('DELETE FROM `aaa_znahar` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `actions` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `add_smiles` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `a_com_act` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `a_noob` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `a_system` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `a_vaucher` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `a_vaucher_active` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `bank` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `bank_alh` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `battle_actions` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `battle_cache` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `bid` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `bs_actions` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `bs_zv` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `complects_priem` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `dump` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `dungeon_actions` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `dungeon_now` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `dungeon_zv` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `feerverks` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `fontan` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `fontan_hp` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query( + 'DELETE FROM `friends` WHERE `user` = "' . $pl['id'] . '" OR `friend` = "' . $pl['id'] . '" OR `enemy` = "' . $pl['id'] . '" OR `notinlist` = "' . $pl['id'] . '"' + ); + mysql_query('DELETE FROM `house` WHERE `owner` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `items_img` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `izlom_rating` WHERE `uid` = "' . $pl['id'] . '"'); + //mysql_query('DELETE FROM `obraz` WHERE `uid` = "'.$pl['id'].'"'); + mysql_query('DELETE FROM `online` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `post` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `reimage` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `rep` WHERE `id` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `repass` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `ruletka_coin` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `save_com` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `stats` WHERE `id` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `telegram` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `transfers` WHERE `uid1` = "' . $pl['id'] . '" OR `uid2` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `users` WHERE `id` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `users_animal` WHERE `uid` = "' . $pl['id'] . '"'); + //mysql_query('DELETE FROM `users_delo` WHERE `uid` = "'.$pl['id'].'"'); + mysql_query('DELETE FROM `users_ico` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `users_turnirs` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `zayvki` WHERE `uid` = "' . $pl['id'] . '"'); + mysql_query('DELETE FROM `_clan` WHERE `uid` = "' . $pl['id'] . '"'); + echo '•' . $pl['login'] . '
    '; + } + + //Заносим данные в базу + $usrData = [ + '`uid`' => $pl['id'], + '`money1`' => $pl['money'], + '`money2`' => $pl['money2'], + '`money4`' => $pl['money4'], + '`ip`' => $pl['ip'], + '`timereg`' => $pl['timereg'], + '`ipreg`' => $pl['ipreg'], + '`sex`' => $pl['sex'], + '`login`' => $pl['login'], + '`pass`' => $pl['pass'], + '`mail`' => $pl['mail'], + '`level`' => $pl['level'], + '`exp`' => $pl['exp'], + '`online`' => $pl['online'], + '`time_kill`' => time(), + '`align`' => $pl['align'], + '`clan`' => $pl['clan'], + '`banned`' => $pl['banned'], + '`win`' => $pl['win'], + '`lose`' => $pl['lose'], + '`nich`' => $pl['nich'], + '`marry`' => $pl['marry'], + '`send`' => $pl['send'], + '`activ`' => $pl['activ'], + '`name`' => $pl['name'], + '`obraz`' => $pl['obraz'], + '`bithday`' => $pl['bithday'], + '`host_reg`' => $pl['host_reg'], + ]; + mysql_query(addUser($usrData)); + } + $lvl++; } -?> \ No newline at end of file diff --git a/cron_prizhaot.php b/cron_prizhaot.php index cdc4133b..1403ae40 100644 --- a/cron_prizhaot.php +++ b/cron_prizhaot.php @@ -1,39 +1,31 @@ '.$_SERVER['SERVER_ADDR']); - } +if (!isset($_GET['tests']) && getIP() != $_SERVER['SERVER_ADDR'] && getIP() != '127.0.0.1' && getIP( + ) != '51.89.6.100') { + exit(getIP() . '
    ' . $_SERVER['SERVER_ADDR']); } -define('GAME',true); -setlocale(LC_CTYPE ,"ru_RU.CP1251"); -include('_incl_data/__config.php'); +const GAME = true; +setlocale(LC_CTYPE, "ru_RU.CP1251"); include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); -include('_incl_data/class/__magic.php'); - //Подаем турнир (хаот) для 8-11 уровней -$inc = mysql_query('INSERT INTO `zayvki` (`comment`,`arand`,`noatack`,`city`,`creator`,`type`,`time_start`,`timeout`,`min_lvl_1`,`min_lvl_2`,`max_lvl_1`,`max_lvl_2`,`noinc`,`razdel`,`time`,`fastfight`,`priz`,`cancel`,`maxplayers`,`tm1max`,`tm2max`) -VALUES ("Автозаявка!
    Тест прошу не заходить","1","1","capitalcity","0","33","300","180","8","8","12","12","1","5","'.time().'","1","1","0","40","0","0")'); +$inc = $pdo->prepare( + 'insert into zayvki (`comment`,`arand`,`noatack`,`city`,`creator`,`type`,`time_start`,`timeout`,`min_lvl_1`,`min_lvl_2`,`max_lvl_1`,`max_lvl_2`,`noinc`,`razdel`,`time`,`fastfight`,`priz`,`maxplayers`,`tm1max`,`tm2max`) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,unix_timestamp(),?,?,?,?,?)' +)->execute( + [ + "Автозаявка! Тест прошу не заходить", + 1, 1, 'capitalcity', 0, 33, 300, 180, 8, 8, 12, 12, 1, 5, 1, 1, 40, 0, 0, + ] +); -$t='Внимание!!! Героическое Сражение началось.'; -mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("'.$t.'","capitalcity","","6","1","'.time().'")'); +$pdo->prepare('insert into chat (`text`,`type`,`new`,`time`) values (?,?,?,unix_timestamp())') + ->execute( + ["Внимание!!! Героическое Сражение началось.", 6, 1,] + ); - - -if($inc) { - echo 'true'; -}else{ - echo 'false'; -} - -?> \ No newline at end of file +echo $inc ? 'true' : 'false'; diff --git a/cron_psh.php b/cron_psh.php index fe3c2e42..a348dc71 100644 --- a/cron_psh.php +++ b/cron_psh.php @@ -1,80 +1,111 @@ '.$_SERVER['SERVER_ADDR']); +if ($_SERVER['HTTP_CF_CONNECTING_IP'] != $_SERVER['SERVER_ADDR'] && $_SERVER['HTTP_CF_CONNECTING_IP'] != '127.0.0.1') { + die('Hello pussy!'); +} +if (getIPblock() != $_SERVER['SERVER_ADDR'] && getIPblock() != '127.0.0.1' && getIPblock() != '' && getIPblock( + ) != '5.187.7.71') { + die(getIPblock() . '
    ' . $_SERVER['SERVER_ADDR']); } -define('GAME',true); +const GAME = true; -include('_incl_data/__config.php'); -include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); -include('_incl_data/class/__dungeon.php'); +require_once('_incl_data/__config.php'); +require_once('_incl_data/class/__db_connect.php'); +$d = new Dungeon; +$d->start(); -function e($t) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #'.date('d.m.Y').' %'.date('H:i:s').' (Критическая ошибка): '.mysql_real_escape_string($t).'","capitalcity","LEL","6","1","-1")'); -} - -function send_chat($type,$from,$text,$time) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`login`,`to`,`type`,`new`,`time`,`room`) VALUES ("'.mysql_real_escape_string($text).'","capitalcity","'.mysql_real_escape_string($from).'","","'.$type.'","1","'.mysql_real_escape_string($time).'","3")'); +function send_chat($type, $from, $text, $time) +{ + mysql_query( + 'INSERT INTO `chat` (`text`,`city`,`login`,`to`,`type`,`new`,`time`,`room`) VALUES ("' . mysql_real_escape_string( + $text + ) . '","capitalcity","' . mysql_real_escape_string( + $from + ) . '","","' . $type . '","1","' . mysql_real_escape_string($time) . '","3")' + ); } //Розыгрыш предметов $sp = mysql_query('SELECT * FROM `dungeon_items` WHERE `user` = 0 AND `take` = 0'); -while( $pl = mysql_fetch_array($sp) ) { - $fxv = array( - 'itm' => mysql_fetch_array(mysql_query('SELECT `im`.*,`ish`.* FROM `dungeon_items` AS `ish` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `ish`.`item_id`) WHERE `ish`.`id` = "'.mysql_real_escape_string($pl['id']).'" AND `ish`.`take` = "0" AND `ish`.`delete` = "0" LIMIT 1')), - 'luck_count' => mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$pl['dn'].'" AND `vars` = "luck_itm'.mysql_real_escape_string($pl['id']).'" LIMIT 1')), - 'user_count' => mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `dnow` = "'.$pl['dn'].'" LIMIT 1')) - ); - $fxv['luck_count'] = $fxv['luck_count'][0]; - $fxv['user_count'] = $fxv['user_count'][0]; - - if( $fxv['itm']['user'] > 0 || $fxv['luck_count'] < 1 ) { - - }elseif( $fxv['luck_count'] >= $fxv['user_count'] || $fxv['itm']['time']+300 < time() ) { - $fxv['sp'] = mysql_query('SELECT * FROM `dungeon_actions` WHERE `dn` = "'.$pl['dn'].'" AND `vars` = "luck_itm'.mysql_real_escape_string($pl['id']).'" ORDER BY `vals` DESC LIMIT '.$fxv['luck_count']); - $fxv['winner'] = array(); - $fxv['win_val'] = 0; - while( $fxv['pl'] = mysql_fetch_array($fxv['sp']) ) { - if( $fxv['pl']['vals'] > $fxv['win_val'] ) { - //Победитель - unset($fxv['winner']); - $fxv['winner'][] = $fxv['pl']['uid']; - $fxv['win_val'] = $fxv['pl']['vals']; - }elseif( $fxv['pl']['vals'] > 0 && $fxv['pl']['vals'] == $fxv['win_val'] ) { - //ничья - $fxv['winner'][] = $fxv['pl']['uid']; - } - } - unset($fxv['pl'],$fxv['sp']); - if( count($fxv['winner']) > 1 ) { - //Розыгрыш еще раз между победителями - $fxv['text'] = 'test2'; - }elseif(count($fxv['winner']) == 1) { - $fxv['user_win'] = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`sex`,`city`,`room` FROM `users` WHERE `id` = "'.$fxv['winner'][0].'" LIMIT 1')); - $fxv['text'] = ''.$fxv['user_win']['login'].' выигрывает в споре за предмет "'.$fxv['itm']['name'].'"'; - mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('".$pl['dn']."','".$fxv['user_win']['city']."','".$fxv['user_win']['room']."','','','".$fxv['text']."','".time()."','6','0','1','1')"); - mysql_query('UPDATE `dungeon_items` SET `time` = "'.time().'",`user` = "'.$fxv['user_win']['id'].'" WHERE `id` = "'.$fxv['itm']['id'].'" LIMIT 1'); - }else{ - //Любой может подобрать предмет - mysql_query('UPDATE `dungeon_items` SET `user` = "1" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - } - unset($fxv); +while ($pl = mysql_fetch_array($sp)) { + $fxv = ['itm' => mysql_fetch_array( + mysql_query( + 'SELECT `im`.*,`ish`.* FROM `dungeon_items` AS `ish` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `ish`.`item_id`) WHERE `ish`.`id` = "' . mysql_real_escape_string( + $pl['id'] + ) . '" AND `ish`.`take` = "0" AND `ish`.`delete` = "0" LIMIT 1' + ) + ), 'luck_count' => mysql_fetch_array( + mysql_query( + 'SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "' . $pl['dn'] . '" AND `vars` = "luck_itm' . mysql_real_escape_string( + $pl['id'] + ) . '" LIMIT 1' + ) + ), 'user_count' => mysql_fetch_array( + mysql_query('SELECT COUNT(*) FROM `stats` WHERE `dnow` = "' . $pl['dn'] . '" LIMIT 1') + )]; + $fxv['luck_count'] = $fxv['luck_count'][0]; + $fxv['user_count'] = $fxv['user_count'][0]; + + if ($fxv['itm']['user'] <= 0 && $fxv['luck_count'] >= 1 && ($fxv['luck_count'] >= $fxv['user_count'] || $fxv['itm']['time'] + 300 < time( + ))) { + $fxv['sp'] = mysql_query( + 'SELECT * FROM `dungeon_actions` WHERE `dn` = "' . $pl['dn'] . '" AND `vars` = "luck_itm' . mysql_real_escape_string( + $pl['id'] + ) . '" ORDER BY `vals` DESC LIMIT ' . $fxv['luck_count'] + ); + $fxv['winner'] = []; + $fxv['win_val'] = 0; + while ($fxv['pl'] = mysql_fetch_array($fxv['sp'])) { + if ($fxv['pl']['vals'] > $fxv['win_val']) { + //Победитель + unset($fxv['winner']); + $fxv['winner'][] = $fxv['pl']['uid']; + $fxv['win_val'] = $fxv['pl']['vals']; + } elseif ($fxv['pl']['vals'] > 0 && $fxv['pl']['vals'] == $fxv['win_val']) { + //ничья + $fxv['winner'][] = $fxv['pl']['uid']; + } + } + unset($fxv['pl'], $fxv['sp']); + if (count($fxv['winner']) > 1) { + //Розыгрыш еще раз между победителями + $fxv['text'] = 'test2'; + } elseif (count($fxv['winner']) == 1) { + $fxv['user_win'] = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`login`,`sex`,`city`,`room` FROM `users` WHERE `id` = "' . $fxv['winner'][0] . '" LIMIT 1' + ) + ); + $fxv['text'] = '' . $fxv['user_win']['login'] . ' выигрывает в споре за предмет "' . $fxv['itm']['name'] . '"'; + mysql_query( + "INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $pl['dn'] . "','" . $fxv['user_win']['city'] . "','" . $fxv['user_win']['room'] . "','','','" . $fxv['text'] . "','" . time( + ) . "','6','0','1','1')" + ); + mysql_query( + 'UPDATE `dungeon_items` SET `time` = "' . time( + ) . '",`user` = "' . $fxv['user_win']['id'] . '" WHERE `id` = "' . $fxv['itm']['id'] . '" LIMIT 1' + ); + } else { + //Любой может подобрать предмет + mysql_query('UPDATE `dungeon_items` SET `user` = "1" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + } + unset($fxv); } -?> \ No newline at end of file diff --git a/cron_tower.php b/cron_tower.php index d5279675..7703a15e 100644 --- a/cron_tower.php +++ b/cron_tower.php @@ -1,885 +1,1081 @@ -----'.$_SERVER['SERVER_ADDR']); - } -} +if (!isset($_GET['test']) && getIP() != $_SERVER['SERVER_ADDR'] && getIP() != '127.0.0.1' && getIP() != '' && getIP( + ) != '31.131.106.205') { + exit(getIP() . '
    ' . $_SERVER['SERVER_ADDR']); + } -function changeSleep($uid,$sleep_action){ - global $u; - if( $sleep_action == 1 ){ - // - mysql_query('INSERT INTO `sleep` (`uid`,`time`,`sleep`) VALUES ("'.$uid.'","'.time().'","1")'); - // - mysql_query("UPDATE `eff_users` SET `sleeptime`=".time().",`deactiveLast` = ( `deactiveTime` - ".time()." ) WHERE `uid`='".mysql_real_escape_string($uid)."' AND `no_Ace` = 0 AND `delete` = 0"); - mysql_query('UPDATE `items_users` SET `time_sleep` = "'.time().'" WHERE `uid` = "'.$uid.'" AND `delete` < 1001 AND `data` LIKE "%|sleep_moroz=1%"'); - $u->addAction(time(),'sleep',$u->info['city']); - // - } elseif( $sleep_action == 2 ){ - // - mysql_query('INSERT INTO `sleep` (`uid`,`time`,`sleep`) VALUES ("'.$uid.'","'.time().'","2")'); - // - $sp = mysql_query('SELECT * FROM `items_users` WHERE `time_sleep` > 0 AND `uid` = "'.$uid.'" AND `delete` < 1001 AND `data` LIKE "%|sleep_moroz=1%"'); - while( $pl = mysql_fetch_array($sp) ) { - $tm_add = time() - $pl['time_sleep']; - mysql_query('UPDATE `items_users` SET `time_sleep` = "0",`time_create` = "'.($pl['time_create'] + $tm_add).'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - $sp = mysql_query('SELECT `id`,`deactiveTime`,`deactiveLast` FROM `eff_users` WHERE `v1` LIKE "pgb%" AND `delete` = "0" AND `deactiveTime` > 0 AND `uid` = "'.$uid.'" ORDER BY `timeUse` DESC'); - while($pl = mysql_fetch_array($sp)) { - mysql_query("UPDATE `eff_users` SET `deactiveTime` = ".(time()+$pl['deactiveLast'])." WHERE `id`='".$pl['id']."' "); - } - $sp = mysql_query('SELECT `id`,`sleeptime`,`timeUse` FROM `eff_users` WHERE `uid`="'.mysql_real_escape_string($uid).'" AND `no_Ace` = 0 AND `sleeptime` > 0 AND `delete` = 0'); - while($pl = mysql_fetch_array($sp)) { - $timeUsen = time()-($pl['sleeptime']-$pl['timeUse']); - mysql_query("UPDATE `eff_users` SET `timeUse`='".$timeUsen."',`sleeptime`='0' WHERE `id`='".$pl['id']."' "); - } - mysql_query('UPDATE `actions` SET `vars` = "unsleep",`val` = "'.time().'" WHERE `id` = "'.$sleep['id'].'" LIMIT 1'); - } - //$sleep = $u->testAction('`vars` = "sleep" AND `uid` = "'.$uid.'" LIMIT 1', 1); +function changeSleep($uid, $sleep_action) +{ + $u = User::start(); + if ($sleep_action == 1) { + // + mysql_query('INSERT INTO `sleep` (`uid`,`time`,`sleep`) VALUES ("' . $uid . '","' . time() . '","1")'); + // + mysql_query( + "UPDATE `eff_users` SET `sleeptime`=" . time() . ",`deactiveLast` = ( `deactiveTime` - " . time( + ) . " ) WHERE `uid`='" . mysql_real_escape_string($uid) . "' AND `no_Ace` = 0 AND `delete` = 0" + ); + mysql_query( + 'UPDATE `items_users` SET `time_sleep` = "' . time( + ) . '" WHERE `uid` = "' . $uid . '" AND `delete` < 1001 AND `data` LIKE "%|sleep_moroz=1%"' + ); + $u->addAction(time(), 'sleep', $u->info['city']); + // + } elseif ($sleep_action == 2) { + // + mysql_query('INSERT INTO `sleep` (`uid`,`time`,`sleep`) VALUES ("' . $uid . '","' . time() . '","2")'); + // + $sp = mysql_query( + 'SELECT * FROM `items_users` WHERE `time_sleep` > 0 AND `uid` = "' . $uid . '" AND `delete` < 1001 AND `data` LIKE "%|sleep_moroz=1%"' + ); + while ($pl = mysql_fetch_array($sp)) { + $tm_add = time() - $pl['time_sleep']; + mysql_query( + 'UPDATE `items_users` SET `time_sleep` = "0",`time_create` = "' . ($pl['time_create'] + $tm_add) . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' + ); + } + $sp = mysql_query( + 'SELECT `id`,`deactiveTime`,`deactiveLast` FROM `eff_users` WHERE `v1` LIKE "pgb%" AND `delete` = "0" AND `deactiveTime` > 0 AND `uid` = "' . $uid . '" ORDER BY `timeUse` DESC' + ); + while ($pl = mysql_fetch_array($sp)) { + mysql_query( + "UPDATE `eff_users` SET `deactiveTime` = " . (time( + ) + $pl['deactiveLast']) . " WHERE `id`='" . $pl['id'] . "' " + ); + } + $sp = mysql_query( + 'SELECT `id`,`sleeptime`,`timeUse` FROM `eff_users` WHERE `uid`="' . mysql_real_escape_string( + $uid + ) . '" AND `no_Ace` = 0 AND `sleeptime` > 0 AND `delete` = 0' + ); + while ($pl = mysql_fetch_array($sp)) { + $timeUsen = time() - ($pl['sleeptime'] - $pl['timeUse']); + mysql_query( + "UPDATE `eff_users` SET `timeUse`='" . $timeUsen . "',`sleeptime`='0' WHERE `id`='" . $pl['id'] . "' " + ); + } + mysql_query( + 'UPDATE `actions` SET `vars` = "unsleep",`val` = "' . time( + ) . '" WHERE `id` = "' . $sleep['id'] . '" LIMIT 1' + ); + } } //Время рестарта -$cnfg = array( - 'time_restart' => 1, - 'time_puti' => 240 -); +$cnfg = [ + 'time_restart' => 1, + 'time_puti' => 240, +]; echo '#start#'; -define('GAME',true); -setlocale(LC_CTYPE ,"ru_RU.CP1251"); +define('GAME', true); +setlocale(LC_CTYPE, "ru_RU.CP1251"); include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); -include('_incl_data/class/__magic.php'); +$magic = new Magic(); -$itbs = array( - 0 => 558, - 1 => 722, - 2 => 718, - 3 => 700, - 4 => 291, - 5 => 545, - 6 => 533, - 7 => 536, - 8 => 628, - 9 => 710, - 10 => 654, - 11 => 684, - 12 => 689, - 13 => 552, - 14 => 552, - 15 => 716, - 16 => 320, - 17 => 290, - 18 => 543, - 19 => 528, - 20 => 540, - 21 => 627, - 22 => 709, - 23 => 653, - 24 => 681, - 25 => 687, - 26 => 523, - 27 => 523, - 28 => 712, - 29 => 1151, - 30 => 544, - 31 => 541, - 32 => 525, - 33 => 539, - 34 => 633, - 35 => 707, - 36 => 647, - 37 => 680, - 38 => 685, - 39 => 567, - 40 => 717, - 41 => 706, - 42 => 527, - 43 => 537, - 44 => 626, - 45 => 708, - 46 => 723, - 47 => 651, - 48 => 683, - 49 => 297, - 50 => 485, - 51 => 484, - 52 => 686 - ); -function microLogin2($bus) { - $bus['login_BIG'] = ''; - if( $bus['align'] > 0 ) { - $bus['login_BIG'] .= ''; - } - if( $bus['clan'] > 0 ) { - $bus['login_BIG'] .= ''; - } - $bus['login_BIG'] .= ''.$bus['login'].'['.$bus['level'].']'; - return $bus['login_BIG']; +$itbs = [ + 0 => 558, + 1 => 722, + 2 => 718, + 3 => 700, + 4 => 291, + 5 => 545, + 6 => 533, + 7 => 536, + 8 => 628, + 9 => 710, + 10 => 654, + 11 => 684, + 12 => 689, + 13 => 552, + 14 => 552, + 15 => 716, + 16 => 320, + 17 => 290, + 18 => 543, + 19 => 528, + 20 => 540, + 21 => 627, + 22 => 709, + 23 => 653, + 24 => 681, + 25 => 687, + 26 => 523, + 27 => 523, + 28 => 712, + 29 => 1151, + 30 => 544, + 31 => 541, + 32 => 525, + 33 => 539, + 34 => 633, + 35 => 707, + 36 => 647, + 37 => 680, + 38 => 685, + 39 => 567, + 40 => 717, + 41 => 706, + 42 => 527, + 43 => 537, + 44 => 626, + 45 => 708, + 46 => 723, + 47 => 651, + 48 => 683, + 49 => 297, + 50 => 485, + 51 => 484, + 52 => 686, +]; +function microLogin2($bus) +{ + $bus['login_BIG'] = ''; + if ($bus['align'] > 0) { + $bus['login_BIG'] .= ''; + } + if ($bus['clan'] > 0) { + $bus['login_BIG'] .= ''; + } + $bus['login_BIG'] .= '' . $bus['login'] . '[' . $bus['level'] . ']'; + return $bus['login_BIG']; } -function addItem($id,$uid,$md = NULL,$dn = NULL,$mxiznos = NULL) { - $rt = -1; - $i = mysql_fetch_array(mysql_query('SELECT `im`.`id`,`im`.`name`,`im`.`img`,`im`.`type`,`im`.`inslot`,`im`.`2h`,`im`.`2too`,`im`.`iznosMAXi`,`im`.`inRazdel`,`im`.`price1`,`im`.`price2`,`im`.`magic_chance`,`im`.`info`,`im`.`massa`,`im`.`level`,`im`.`magic_inci`,`im`.`overTypei`,`im`.`group`,`im`.`group_max`,`im`.`geni`,`im`.`ts`,`im`.`srok`,`im`.`class`,`im`.`class_point`,`im`.`anti_class`,`im`.`anti_class_point`,`im`.`max_text`,`im`.`useInBattle`,`im`.`lbtl`,`im`.`lvl_itm`,`im`.`lvl_exp`,`im`.`lvl_aexp` FROM `items_main` AS `im` WHERE `im`.`id` = "'.mysql_real_escape_string($id).'" LIMIT 1')); - if(isset($i['id'])) - { - $d = mysql_fetch_array(mysql_query('SELECT `id`,`items_id`,`data` FROM `items_main_data` WHERE `items_id` = "'.$i['id'].'" LIMIT 1')); - //новая дата - $data = $d['data']; - if($i['ts']>0) - { - $ui = mysql_fetch_array(mysql_query('SELECT `id`,`login` FROM `users` WHERE `id` = "'.mysql_real_escape_string($uid).'" LIMIT 1')); - $data .= '|sudba='.$ui['login']; - } - if($md!=NULL) - { - $data .= $md; - } - - - if($dn!=NULL) - { - //предмет с настройками из подземелья - if($dn['del']>0) - { - $i['dn_delete'] = 1; - } - } - if($mxiznos > 0) { - $i['iznosMAXi'] = $mxiznos; - } - $ins = mysql_query('INSERT INTO `items_users` (`overType`,`item_id`,`uid`,`data`,`iznosMAX`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`time_create`,`dn_delete`) VALUES ( - "'.$i['overTypei'].'", - "'.$i['id'].'", - "'.$uid.'", - "'.$data.'", - "'.$i['iznosMAXi'].'", - "'.$i['geni'].'", - "'.$i['magic_inci'].'", +function addItem($id, $uid, $md = null, $dn = null, $mxiznos = null) +{ + $rt = -1; + $i = mysql_fetch_array( + mysql_query( + 'SELECT `im`.`id`,`im`.`name`,`im`.`img`,`im`.`type`,`im`.`inslot`,`im`.`2h`,`im`.`2too`,`im`.`iznosMAXi`,`im`.`inRazdel`,`im`.`price1`,`im`.`price2`,`im`.`magic_chance`,`im`.`info`,`im`.`massa`,`im`.`level`,`im`.`magic_inci`,`im`.`overTypei`,`im`.`group`,`im`.`group_max`,`im`.`geni`,`im`.`ts`,`im`.`srok`,`im`.`class`,`im`.`class_point`,`im`.`anti_class`,`im`.`anti_class_point`,`im`.`max_text`,`im`.`useInBattle`,`im`.`lbtl`,`im`.`lvl_itm`,`im`.`lvl_exp`,`im`.`lvl_aexp` FROM `items_main` AS `im` WHERE `im`.`id` = "' . mysql_real_escape_string( + $id + ) . '" LIMIT 1' + ) + ); + if (isset($i['id'])) { + $d = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`items_id`,`data` FROM `items_main_data` WHERE `items_id` = "' . $i['id'] . '" LIMIT 1' + ) + ); + //новая дата + $data = $d['data']; + if ($i['ts'] > 0) { + $ui = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`login` FROM `users` WHERE `id` = "' . mysql_real_escape_string($uid) . '" LIMIT 1' + ) + ); + $data .= '|sudba=' . $ui['login']; + } + if ($md != null) { + $data .= $md; + } + + + //предмет с настройками из подземелья + if ($dn != null && $dn['del'] > 0) { + $i['dn_delete'] = 1; + } + if ($mxiznos > 0) { + $i['iznosMAXi'] = $mxiznos; + } + $ins = mysql_query( + 'INSERT INTO `items_users` (`overType`,`item_id`,`uid`,`data`,`iznosMAX`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`time_create`,`dn_delete`) VALUES ( + "' . $i['overTypei'] . '", + "' . $i['id'] . '", + "' . $uid . '", + "' . $data . '", + "' . $i['iznosMAXi'] . '", + "' . $i['geni'] . '", + "' . $i['magic_inci'] . '", "capitalcity", - "'.time().'", - "'.time().'", - "'.$i['dn_delete'].'")'); - if($ins) - { - $rt = mysql_insert_id(); - }else{ - $rt = 0; - } - } - return $rt; + "' . time() . '", + "' . time() . '", + "' . $i['dn_delete'] . '")' + ); + if ($ins) { + $rt = mysql_insert_id(); + } else { + $rt = 0; + } + } + return $rt; } -function timeOut($ttm) { - $out = ''; - $time_still = $ttm; - $tmp = floor($time_still/2592000); - $id=0; - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." мес. ";} - $time_still = $time_still-$tmp*2592000; - } - /* - $tmp = floor($time_still/604800); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." нед. ";} - $time_still = $time_still-$tmp*604800; - } - */ - $tmp = floor($time_still/86400); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." дн. ";} - $time_still = $time_still-$tmp*86400; - } - $tmp = floor($time_still/3600); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." ч. ";} - $time_still = $time_still-$tmp*3600; - } - $tmp = floor($time_still/60); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." мин. ";} - } - if($out=='') - { - if($time_still<0) - { - $time_still = 0; - } - $out = $time_still.' сек.'; - } - return $out; +function timeOut($ttm) +{ + $out = ''; + $time_still = $ttm; + $tmp = floor($time_still / 2592000); + $id = 0; + if ($tmp > 0) { + $id++; + if ($id < 3) { + $out .= $tmp . " мес. "; + } + $time_still = $time_still - $tmp * 2592000; + } + $tmp = floor($time_still / 86400); + if ($tmp > 0) { + $id++; + if ($id < 3) { + $out .= $tmp . " дн. "; + } + $time_still = $time_still - $tmp * 86400; + } + $tmp = floor($time_still / 3600); + if ($tmp > 0) { + $id++; + if ($id < 3) { + $out .= $tmp . " ч. "; + } + $time_still = $time_still - $tmp * 3600; + } + $tmp = floor($time_still / 60); + if ($tmp > 0) { + $id++; + if ($id < 3) { + $out .= $tmp . " мин. "; + } + } + if ($out == '') { + if ($time_still < 0) { + $time_still = 0; + } + $out = $time_still . ' сек.'; + } + return $out; } -function e($t) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("'.mysql_real_escape_string($t).'","capitalcity","","6","1","'.time().'")'); +function e($t) +{ + mysql_query( + 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("' . mysql_real_escape_string( + $t + ) . '","capitalcity","","6","1","' . time() . '")' + ); } -function e2($t) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("'.mysql_real_escape_string($t).'","capitalcity","Мусорщик","6","1","-1")'); +function e2($t) +{ + mysql_query( + 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("' . mysql_real_escape_string( + $t + ) . '","capitalcity","Мусорщик","6","1","-1")' + ); } //Персонаж 1 нападает на 2 -function bs_atack($bs,$u1,$u2) { - global $magic; - if( isset($u1['id'],$u2['id']) ) { - $btl_id = $magic->atackUser($u1['id'],$u2['id'],$u2['team'],$u2['battle']); - if( $btl_id > 0 ) { - mysql_query('UPDATE `battle` SET `inTurnir` = "'.$bs['id'].'" WHERE `id` = "'.$btl_id.'" LIMIT 1'); - } - $usr_real = mysql_fetch_array(mysql_query('SELECT `id`,`sex`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `login` = "'.$u2['login'].'" AND `inUser` = "'.$u2['id'].'" LIMIT 1')); - if( !isset($usr_real['id']) ) { - $usr_real = $u2; - } - $me_real = mysql_fetch_array(mysql_query('SELECT `id`,`sex`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "'.$u1['id'].'" AND `login` = "'.$u1['login'].'" LIMIT 1')); - if( !isset($me_real['id']) ) { - $me_real = $u1; - } - /*if( $u2['battle'] > 0 ) { - $u2['battle'] = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "'.$u2['battle'].'" AND `team_win` = "-1" LIMIT 1')); - if( isset($u2['battle']['id']) ) { - $u2['battle'] = $u2['battle']['id']; - }else{ - $u2['battle'] = 0; - } - }*/ - if( $u2['battle'] > 0 ) { - //Заносим в лог БС - if( $u1['sex'] == 0 ) { - $text = '{u1} вмешался в поединок против {u2} »»'; - }else{ - $text = '{u1} вмешалась в поединок против {u2} »»'; - } - }else{ - //Заносим в лог БС - if( $u1['sex'] == 0 ) { - $text = '{u1} напал на {u2} завязался бой »»'; - }else{ - $text = '{u1} напала на {u2} завязался бой »»'; - } - } - if( isset($usr_real['id'])) { - $usrreal = ''; - if( $usr_real['align'] > 0 ) { - $usrreal .= ''; - } - if( $usr_real['clan'] > 0 ) { - $usrreal .= ''; - } - $usrreal .= ''.$usr_real['login'].'['.$usr_real['level'].']'; - }else{ - $mereal = 'Невидимка[??]'; - } - if( isset($me_real['id']) ) { - $mereal = ''; - if( $me_real['align'] > 0 ) { - $mereal .= ''; - } - if( $me_real['clan'] > 0 ) { - $mereal .= ''; - } - $mereal .= ''.$me_real['login'].'['.$me_real['level'].']'; - }else{ - $mereal = 'Невидимка[??]'; - } - $text = str_replace('{u1}',$mereal,$text); - $text = str_replace('{u2}',$usrreal,$text); - //Добавляем в лог БС - mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( - "1", "'.mysql_real_escape_string($text).'", "'.time().'", "'.$bs['id'].'", "'.$bs['count'].'", "'.$bs['city'].'", - "'.round($bs['money']*0.85,2).'","'.$i.'" - )'); - } +function bs_atack($bs, $u1, $u2) +{ + global $magic; + if (isset($u1['id'], $u2['id'])) { + $btl_id = $magic->atackUser($u1['id'], $u2['id'], $u2['team'], $u2['battle']); + if ($btl_id > 0) { + mysql_query('UPDATE `battle` SET `inTurnir` = "' . $bs['id'] . '" WHERE `id` = "' . $btl_id . '" LIMIT 1'); + } + $usr_real = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`sex`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `login` = "' . $u2['login'] . '" AND `inUser` = "' . $u2['id'] . '" LIMIT 1' + ) + ); + if (!isset($usr_real['id'])) { + $usr_real = $u2; + } + $me_real = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`sex`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "' . $u1['id'] . '" AND `login` = "' . $u1['login'] . '" LIMIT 1' + ) + ); + if (!isset($me_real['id'])) { + $me_real = $u1; + } + if ($u2['battle'] > 0) { + //Заносим в лог БС + if ($u1['sex'] == 0) { + $text = '{u1} вмешался в поединок против {u2} »»'; + } else { + $text = '{u1} вмешалась в поединок против {u2} »»'; + } + } else { + //Заносим в лог БС + if ($u1['sex'] == 0) { + $text = '{u1} напал на {u2} завязался бой »»'; + } else { + $text = '{u1} напала на {u2} завязался бой »»'; + } + } + if (isset($usr_real['id'])) { + $usrreal = ''; + if ($usr_real['align'] > 0) { + $usrreal .= ''; + } + if ($usr_real['clan'] > 0) { + $usrreal .= ''; + } + $usrreal .= '' . $usr_real['login'] . '[' . $usr_real['level'] . ']'; + } else { + $mereal = 'Невидимка[??]'; + } + if (isset($me_real['id'])) { + $mereal = ''; + if ($me_real['align'] > 0) { + $mereal .= ''; + } + if ($me_real['clan'] > 0) { + $mereal .= ''; + } + $mereal .= '' . $me_real['login'] . '[' . $me_real['level'] . ']'; + } else { + $mereal = 'Невидимка[??]'; + } + $text = str_replace('{u1}', $mereal, $text); + $text = str_replace('{u2}', $usrreal, $text); + //Добавляем в лог БС + mysql_query( + 'INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( + "1", "' . mysql_real_escape_string($text) . '", "' . time( + ) . '", "' . $bs['id'] . '", "' . $bs['count'] . '", "' . $bs['city'] . '", + "' . round($bs['money'] * 0.85, 2) . '","' . $i . '" + )' + ); + } } //Турнир не состоялся -function nostart($pl) { - global $cnfg; - $r = false; - if( $pl['users'] < 4 ) { - //Недостаточно игроков - $r = true; - $pl['time_start'] = time() + $cnfg['time_restart'] * (60*60); - if( $pl['users'] > 0 ) { - e('Турнир Башни Смерти, для '.$pl['to_lvl'].' уровней в Башне Смерти не начался по причине: Недостаточно участников '.timeOut($pl['time_start']-time()).' ('.date('d.m.Y H:i',$pl['time_start']).')'); - }else{ - //if( timeOut($pl['time_start']-time()) != '44 мин.' ) { - e('Начало турнира Башни Смерти, для '.$pl['to_lvl'].' уровней в Башне Смерти через '.timeOut($pl['time_start']-time()).' ('.date('d.m.Y H:i',$pl['time_start']).'), текущий призовой фонд: 0.00 кр., 1.00 Екр., заявок: 0'); - //} - } - //Возврат вкладов игроков - $sp = mysql_query('SELECT * FROM `bs_zv` WHERE `bsid` = "'.$pl['id'].'" AND `finish` = "0"'); - while( $pu = mysql_fetch_array($sp) ) { - mysql_query('UPDATE `users` SET `money` = `money` + "'.$pu['money'].'" WHERE `id` = "'.$pu['uid'].'" LIMIT 1'); - mysql_query('UPDATE `bs_zv` SET `finish` = "'.time().'" WHERE `id` = "'.$pu['id'].'" LIMIT 1'); - } - //Обновление турнира - mysql_query('UPDATE `bs_turnirs` SET `ch1` = "0",`ch2` = "0", `status` = "0", `money` = "0", `time_start` = "'.$pl['time_start'].'",`users` = "0",`users_finish` = "0" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - return $r; +function nostart($pl) +{ + global $cnfg; + $r = false; + if ($pl['users'] < 4) { + //Недостаточно игроков + $r = true; + $pl['time_start'] = time() + $cnfg['time_restart'] * (60 * 60); + if ($pl['users'] > 0) { + e( + 'Турнир Башни Смерти, для ' . $pl['to_lvl'] . ' уровней в Башне Смерти не начался по причине: Недостаточно участников ' . timeOut( + $pl['time_start'] - time() + ) . ' (' . date('d.m.Y H:i', $pl['time_start']) . ')' + ); + } else { + e( + 'Начало турнира Башни Смерти, для ' . $pl['to_lvl'] . ' уровней в Башне Смерти через ' . timeOut( + $pl['time_start'] - time() + ) . ' (' . date( + 'd.m.Y H:i', $pl['time_start'] + ) . '), текущий призовой фонд: 0.00 кр., 1.00 Екр., заявок: 0' + ); + } + //Возврат вкладов игроков + $sp = mysql_query('SELECT * FROM `bs_zv` WHERE `bsid` = "' . $pl['id'] . '" AND `finish` = "0"'); + while ($pu = mysql_fetch_array($sp)) { + mysql_query( + 'UPDATE `users` SET `money` = `money` + "' . $pu['money'] . '" WHERE `id` = "' . $pu['uid'] . '" LIMIT 1' + ); + mysql_query('UPDATE `bs_zv` SET `finish` = "' . time() . '" WHERE `id` = "' . $pu['id'] . '" LIMIT 1'); + } + //Обновление турнира + mysql_query( + 'UPDATE `bs_turnirs` SET `ch1` = "0",`ch2` = "0", `status` = "0", `money` = "0", `time_start` = "' . $pl['time_start'] . '",`users` = "0",`users_finish` = "0" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' + ); + } + return $r; } //Добавление "архивариуса" -function add_arhiv($pl,$user) { - $return = 0; - mysql_query('INSERT INTO `users` (`login`,`pass`,`level`,`inTurnir`,`sex`,`obraz`,`name`,`online`,`city`,`room`,`align`,`clan`,`cityreg`,`bithday`,`activ`) VALUES ( - "'.$user['login'].'","bstowerbot","'.$user['level'].'","'.$pl['id'].'","'.$user['sex'].'","'.$user['obraz'].'","'.$user['login'].'","'.(time()+60*60*24).'","'.$user['city'].'","'.$user['room'].'","'.$user['align'].'","'.$user['clan'].'","capitalcity","01.02.2003","0" - )'); - $return = mysql_insert_id(); - if( $return > 0 ) { - $ins = mysql_query('INSERT INTO `stats` (`id`,`stats`,`bot`,`x`,`y`,`upLevel`) VALUES ( - "'.$return.'","s1=30|s2=31|s3=33|s4=30|s5=30|s6=1|s7=25|rinv=40|m9=5|m6=10","2","'.$user['x'].'","'.$user['y'].'","98" - )'); - if(!$ins) { - mysql_query('DELETE FROM `users` WHERE `id` = "'.$return.'" LIMIT 1'); - $return = 0; - } - } - return $return; +function add_arhiv($pl, $user) +{ + $return = 0; + mysql_query( + 'INSERT INTO `users` (`login`,`pass`,`level`,`inTurnir`,`sex`,`obraz`,`name`,`online`,`city`,`room`,`align`,`clan`,`cityreg`,`bithday`,`activ`) VALUES ( + "' . $user['login'] . '","bstowerbot","' . $user['level'] . '","' . $pl['id'] . '","' . $user['sex'] . '","' . $user['obraz'] . '","' . $user['login'] . '","' . (time( + ) + 60 * 60 * 24) . '","' . $user['city'] . '","' . $user['room'] . '","' . $user['align'] . '","' . $user['clan'] . '","capitalcity","01.02.2003","0" + )' + ); + $return = mysql_insert_id(); + if ($return > 0) { + $ins = mysql_query( + 'INSERT INTO `stats` (`id`,`stats`,`bot`,`x`,`y`,`upLevel`) VALUES ( + "' . $return . '","s1=30|s2=31|s3=33|s4=30|s5=30|s6=1|s7=25|rinv=40|m9=5|m6=10","2","' . $user['x'] . '","' . $user['y'] . '","98" + )' + ); + if (!$ins) { + mysql_query('DELETE FROM `users` WHERE `id` = "' . $return . '" LIMIT 1'); + $return = 0; + } + } + return $return; } //Завершаем текущий турнир -function backusers($pl) { - $sp = mysql_query('SELECT * FROM `bs_zv` WHERE `bsid` = "'.$pl['id'].'" AND `off` = "0" AND `inBot` > 0'); - while( $pu = mysql_fetch_array($sp) ) { - //Удаление клона - mysql_query('DELETE FROM `users` WHERE `id` = "'.$pu['inBot'].'" LIMIT 1'); - mysql_query('DELETE FROM `stats` WHERE `id` = "'.$pu['inBot'].'" LIMIT 1'); - mysql_query('DELETE FROM `actions` WHERE `uid` = "'.$pu['inBot'].'"'); - mysql_query('DELETE FROM `items_users` WHERE `uid` = "'.$pu['inBot'].'"'); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.$pu['inBot'].'"'); - mysql_query('DELETE FROM `users_delo` WHERE `uid` = "'.$pu['inBot'].'"'); - //Обновление персонажа - mysql_query('UPDATE `users` SET `inUser` = "0" WHERE `id` = "'.$pu['uid'].'" LIMIT 1'); - //Обновляем заявку - mysql_query('UPDATE `bs_zv` SET `off` = "'.time().'" WHERE `id` = "'.$pu['id'].'" LIMIT 1'); - } - //Архивариусы - $sp = mysql_query('SELECT * FROM `users` WHERE `pass` = "bstowerbot" AND `inTurnir` = "'.$pl['id'].'" AND `room` = "362"'); - while( $pu = mysql_fetch_array($sp) ) { - mysql_query('DELETE FROM `users` WHERE `id` = "'.$pu['id'].'" LIMIT 1'); - mysql_query('DELETE FROM `stats` WHERE `id` = "'.$pu['id'].'" LIMIT 1'); - mysql_query('DELETE FROM `actions` WHERE `uid` = "'.$pu['id'].'"'); - mysql_query('DELETE FROM `items_users` WHERE `uid` = "'.$pu['id'].'"'); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.$pu['id'].'"'); - mysql_query('DELETE FROM `users_delo` WHERE `uid` = "'.$pu['id'].'"'); - } - //Удаляем предметы раскиданные по БС - mysql_query('DELETE FROM `bs_items` WHERE `bid` = "'.$pl['id'].'" AND `count` = "'.$pl['count'].'"'); - //Удаляем события в БС - mysql_query('DELETE FROM `bs_actions` WHERE `bid` = "'.$pl['id'].'" AND `count` = "'.$pl['count'].'"'); - //Удаляем ловушки в БС - mysql_query('DELETE FROM `bs_trap` WHERE `bid` = "'.$pl['id'].'" AND `count` = "'.$pl['count'].'"'); +function backusers($pl) +{ + $sp = mysql_query('SELECT * FROM `bs_zv` WHERE `bsid` = "' . $pl['id'] . '" AND `off` = "0" AND `inBot` > 0'); + while ($pu = mysql_fetch_array($sp)) { + //Удаление клона + mysql_query('DELETE FROM `users` WHERE `id` = "' . $pu['inBot'] . '" LIMIT 1'); + mysql_query('DELETE FROM `stats` WHERE `id` = "' . $pu['inBot'] . '" LIMIT 1'); + mysql_query('DELETE FROM `actions` WHERE `uid` = "' . $pu['inBot'] . '"'); + mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $pu['inBot'] . '"'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $pu['inBot'] . '"'); + mysql_query('DELETE FROM `users_delo` WHERE `uid` = "' . $pu['inBot'] . '"'); + //Обновление персонажа + mysql_query('UPDATE `users` SET `inUser` = "0" WHERE `id` = "' . $pu['uid'] . '" LIMIT 1'); + //Обновляем заявку + mysql_query('UPDATE `bs_zv` SET `off` = "' . time() . '" WHERE `id` = "' . $pu['id'] . '" LIMIT 1'); + } + //Архивариусы + $sp = mysql_query( + 'SELECT * FROM `users` WHERE `pass` = "bstowerbot" AND `inTurnir` = "' . $pl['id'] . '" AND `room` = "362"' + ); + while ($pu = mysql_fetch_array($sp)) { + mysql_query('DELETE FROM `users` WHERE `id` = "' . $pu['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `stats` WHERE `id` = "' . $pu['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `actions` WHERE `uid` = "' . $pu['id'] . '"'); + mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $pu['id'] . '"'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $pu['id'] . '"'); + mysql_query('DELETE FROM `users_delo` WHERE `uid` = "' . $pu['id'] . '"'); + } + //Удаляем предметы раскиданные по БС + mysql_query('DELETE FROM `bs_items` WHERE `bid` = "' . $pl['id'] . '" AND `count` = "' . $pl['count'] . '"'); + //Удаляем события в БС + mysql_query('DELETE FROM `bs_actions` WHERE `bid` = "' . $pl['id'] . '" AND `count` = "' . $pl['count'] . '"'); + //Удаляем ловушки в БС + mysql_query('DELETE FROM `bs_trap` WHERE `bid` = "' . $pl['id'] . '" AND `count` = "' . $pl['count'] . '"'); } -$exp2 = array( - 1=>30000, - 2=>300000 -); -$st2s = array( - 7=>array( - 0=>10, - 1=>64, - 2=>8 - ), - 8=>array( - 0=>11, - 1=>78, - 2=>9 - ) -); +$exp2 = [ + 1 => 30000, + 2 => 300000, +]; +$st2s = [ + 7 => [ + 0 => 10, + 1 => 64, + 2 => 8, + ], + 8 => [ + 0 => 11, + 1 => 78, + 2 => 9, + ], +]; $sp = mysql_query('SELECT * FROM `bs_turnirs`'); -while( $pl = mysql_fetch_array($sp) ) { - // - $pl['to_lvl'] = $pl['level']; - if( $pl['level'] != $pl['level_max'] ) { - $pl['to_lvl'] .= '-'.$pl['level_max'].''; - } - $pl['to_lvl'] = 'всех'; - if( $pl['status'] == 1 ) { - // - $tcu = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `inTurnir` = "'.$pl['id'].'" AND `room` = "362"')); - $tcu = $tcu[0]; - // - if( $pl['users'] != $tcu ) { - //Что-то сбилось - $pl['users'] = $tcu; - } - // - //Турнир идет, проверяем живых игроков, либо завершаем через 6 часов - if( $pl['time_start'] < time() - 6*60*60 ) { - //Завершаем турнир по тайму - //Добавляем в лог БС - $text = 'Турнир завершен. Победитель: Отсутствует (Турнир завершился по таймауту). Призовой фонд: '.round($pl['money']*0.85,2).' кр.'; - mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( - "1", "'.mysql_real_escape_string($text).'", "'.time().'", "'.$pl['id'].'", "'.$pl['count'].'", "'.$pl['city'].'", - "'.round($pl['money']*0.85,2).'","'.$i.'" - )'); - // - //Сохраняем статистику - mysql_query('INSERT INTO `bs_statistic` (`bsid`,`count`,`time_start`,`time_finish`,`time_sf`,`type_bs`,`money`,`wlogin`,`wuid`,`walign`,`wclan`) VALUES ( - "'.$pl['id'].'","'.$pl['count'].'","'.$pl['time_start'].'","'.time().'","'.(time()-$pl['time_start']).'","'.$pl['type_btl'].'","'.round($pl['money']*0.85,2).'", +while ($pl = mysql_fetch_array($sp)) { + // + $pl['to_lvl'] = $pl['level']; + if ($pl['level'] != $pl['level_max']) { + $pl['to_lvl'] .= '-' . $pl['level_max'] . ''; + } + $pl['to_lvl'] = 'всех'; + if ($pl['status'] == 1) { + // + $tcu = mysql_fetch_array( + mysql_query('SELECT COUNT(*) FROM `users` WHERE `inTurnir` = "' . $pl['id'] . '" AND `room` = "362"') + ); + $tcu = $tcu[0]; + // + if ($pl['users'] != $tcu) { + //Что-то сбилось + $pl['users'] = $tcu; + } + // + //Турнир идет, проверяем живых игроков, либо завершаем через 6 часов + if ($pl['time_start'] < time() - 6 * 60 * 60) { + //Завершаем турнир по тайму + //Добавляем в лог БС + $text = 'Турнир завершен. Победитель: Отсутствует (Турнир завершился по таймауту). Призовой фонд: ' . round( + $pl['money'] * 0.85, 2 + ) . ' кр.'; + mysql_query( + 'INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( + "1", "' . mysql_real_escape_string($text) . '", "' . time( + ) . '", "' . $pl['id'] . '", "' . $pl['count'] . '", "' . $pl['city'] . '", + "' . round($pl['money'] * 0.85, 2) . '","' . $i . '" + )' + ); + // + //Сохраняем статистику + mysql_query( + 'INSERT INTO `bs_statistic` (`bsid`,`count`,`time_start`,`time_finish`,`time_sf`,`type_bs`,`money`,`wlogin`,`wuid`,`walign`,`wclan`) VALUES ( + "' . $pl['id'] . '","' . $pl['count'] . '","' . $pl['time_start'] . '","' . time() . '","' . (time( + ) - $pl['time_start']) . '","' . $pl['type_btl'] . '","' . round($pl['money'] * 0.85, 2) . '", "2","0","0","0" - )'); - $pl['time_start'] = time() + $cnfg['time_restart'] * (60*60); - e('Турнир для '.$pl['to_lvl'].' уровней в Башне Смерти завершился по таймауту. Начало нового турнира через '.timeOut($pl['time_start']-time()-3600).' ('.date('d.m.Y H:i',$pl['time_start']).')'); - backusers($pl); - $pl['count']++; - mysql_query('UPDATE `bs_turnirs` SET `money` = "0",`count` = "'.$pl['count'].'",`status` = "0",`time_start` = "'.$pl['time_start'].'",`users` = "0",`users_finish` = "0",`ch1` = "0",`arhiv` = "0" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - }else{ - mysql_query('UPDATE `users` SET `online` = "'.(time()+60*60*6).'" WHERE `inTurnir` = "'.$pl['id'].'" OR (`room` >= 362 AND `room` <= 366) LIMIT '.($pl['users']+$pl['arhiv'])); - //Проверяем живых игроков - if( $pl['users'] < 2 ) { - mysql_query('DELEE FROM `users` WHERE `login` LIKE "%(клон%" AND `inTurnir` = "'.$pl['id'].'" AND `room` = "362"'); - if( $pl['users'] == 1 ) { - $pl['usersn'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `inTurnir` = "'.$pl['id'].'" AND `room` = "362" LIMIT 1')); - $pl['usersn'] = $pl['usersn'][0]; - if( $pl['users'] != $pl['usersn'] ) { - //$pl['users'] = $pl['usersn']; - } - } - //Доп. проверка живых - if( $pl['users'] == 1 ) { - //Завершаем турнир, есть 1 победитель - if( $pl['arhiv'] == 0 ) { - //Архивариуса нет, завершаем турнир - $uwin_bot = mysql_fetch_array(mysql_query('SELECT `id`,`money`,`login`,`level`,`align`,`clan` FROM `users` WHERE `inTurnir` = "'.$pl['id'].'" AND `room` = "362" LIMIT 1')); - $swin_bot = mysql_fetch_array(mysql_query('SELECT `id`,`exp` FROM `stats` WHERE `id` = "'.$uwin_bot['id'].'" LIMIT 1')); - $uwin = mysql_fetch_array(mysql_query('SELECT `id`,`money`,`money2`,`login`,`level`,`align`,`clan` FROM `users` WHERE `inUser` = "'.$uwin_bot['id'].'" LIMIT 1')); - $swin = mysql_fetch_array(mysql_query('SELECT `id`,`exp` FROM `stats` WHERE `id` = "'.$uwin['id'].'" LIMIT 1')); - - //Опыт - $swin_bot['exp'] -= 30000; - $swin_bot['exp'] = round($swin_bot['exp']/2); - if( $swin_bot['exp'] < 0 ) { - $swin_bot['exp'] = 0; - } - $swin_bot['exp'] += 1500; - - //Сохраняем статистику - mysql_query('INSERT INTO `bs_statistic` (`bsid`,`count`,`time_start`,`time_finish`,`time_sf`,`type_bs`,`money`,`wlogin`,`wuid`,`walign`,`wclan`,`wlevel`) VALUES ( - "'.$pl['id'].'","'.$pl['count'].'","'.$pl['time_start'].'","'.time().'","'.(time()-$pl['time_start']).'","'.$pl['type_btl'].'","'.round($pl['money']*0.85,2).'", - "'.$uwin['login'].'","'.$uwin['id'].'","'.$uwin['align'].'","'.$uwin['clan'].'","'.$uwin['level'].'" - )'); - $pl['time_start'] = time() + $cnfg['time_restart'] * (60*60); - if( isset($uwin['id']) ) { - mysql_query('UPDATE `users` SET `money` = "'.($uwin['money']+round($pl['money']*0.85,2)).'", `money2` = "'.($uwin['money2']+1).'", `win_bs` = IFNULL(`win_bs`, 0) + 1 WHERE `login` = "'.$uwin['login'].'"'); - mysql_query('UPDATE `stats` SET `exp` = "'.($swin['exp']+$swin_bot['exp']).'" WHERE `id` = "'.$uwin['id'].'" LIMIT 1'); - e('#'.$pl['usersn'].' Турнир для '.$pl['to_lvl'].' уровней в Башне Смерти завершился. Победитель: '.microLogin2($uwin).'. Приз: '.round($pl['money']*0.85,2).' кр. и 1 екр.'.round($swin_bot['exp']).' опыта. Начало нового турнира через '.timeOut($pl['time_start']-time()).' ('.date('d.m.Y H:i',$pl['time_start']).')'); - if(date('w') == 0 || date('w') == 6 || date('w') == 3) { - mysql_query('UPDATE `stats` SET `repexp` = `repexp` + 25 WHERE `id` = "'.$uwin['id'].'" LIMIT 1'); - } - else - { - mysql_query('UPDATE `stats` SET `repexp` = `repexp` + 10 WHERE `id` = "'.$uwin['id'].'" LIMIT 1'); - } - } - //Добавляем в лог БС - $text = 'Турнир завершен. Победитель: '.microLogin2($uwin).'. Приз: '.round($pl['money']*0.85,2).' кр. и 1 екр.'.round($swin_bot['exp']).' опыта.'; - mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( - "1", "'.mysql_real_escape_string($text).'", "'.time().'", "'.$pl['id'].'", "'.$pl['count'].'", "'.$pl['city'].'", - "'.round($pl['money']*0.85,2).'","'.$i.'" - )'); - // - backusers($pl); - $pl['count']++; - mysql_query('UPDATE `bs_turnirs` SET `money` = "0",`count` = "'.$pl['count'].'",`status` = "0",`time_start` = "'.$pl['time_start'].'",`users` = "0",`users_finish` = "0",`ch1` = "0",`arhiv` = "0" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - }else{ - //Ожидаем пока игрок убьет Архивариуса - - } - }else{ - //Сохраняем статистику - mysql_query('INSERT INTO `bs_statistic` (`bsid`,`count`,`time_start`,`time_finish`,`time_sf`,`type_bs`,`money`,`wlogin`,`wuid`,`walign`,`wclan`) VALUES ( - "'.$pl['id'].'","'.$pl['count'].'","'.$pl['time_start'].'","'.time().'","'.(time()-$pl['time_start']).'","'.$pl['type_btl'].'","'.round($pl['money']*0.85,2).'", + )' + ); + $pl['time_start'] = time() + $cnfg['time_restart'] * (60 * 60); + e( + 'Турнир для ' . $pl['to_lvl'] . ' уровней в Башне Смерти завершился по таймауту. Начало нового турнира через ' . timeOut( + $pl['time_start'] - time() - 3600 + ) . ' (' . date('d.m.Y H:i', $pl['time_start']) . ')' + ); + backusers($pl); + $pl['count']++; + mysql_query( + 'UPDATE `bs_turnirs` SET `money` = "0",`count` = "' . $pl['count'] . '",`status` = "0",`time_start` = "' . $pl['time_start'] . '",`users` = "0",`users_finish` = "0",`ch1` = "0",`arhiv` = "0" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' + ); + } else { + mysql_query( + 'UPDATE `users` SET `online` = "' . (time( + ) + 60 * 60 * 6) . '" WHERE `inTurnir` = "' . $pl['id'] . '" OR (`room` >= 362 AND `room` <= 366) LIMIT ' . ($pl['users'] + $pl['arhiv']) + ); + //Проверяем живых игроков + if ($pl['users'] < 2) { + mysql_query( + 'DELEE FROM `users` WHERE `login` LIKE "%(клон%" AND `inTurnir` = "' . $pl['id'] . '" AND `room` = "362"' + ); + if ($pl['users'] == 1) { + $pl['usersn'] = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(*) FROM `users` WHERE `inTurnir` = "' . $pl['id'] . '" AND `room` = "362" LIMIT 1' + ) + ); + $pl['usersn'] = $pl['usersn'][0]; + if ($pl['users'] != $pl['usersn']) { + //$pl['users'] = $pl['usersn']; + } + } + //Доп. проверка живых + if ($pl['users'] == 1) { + //Завершаем турнир, есть 1 победитель + if ($pl['arhiv'] == 0) { + //Архивариуса нет, завершаем турнир + $uwin_bot = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`money`,`login`,`level`,`align`,`clan` FROM `users` WHERE `inTurnir` = "' . $pl['id'] . '" AND `room` = "362" LIMIT 1' + ) + ); + $swin_bot = mysql_fetch_array( + mysql_query('SELECT `id`,`exp` FROM `stats` WHERE `id` = "' . $uwin_bot['id'] . '" LIMIT 1') + ); + $uwin = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`money`,`money2`,`login`,`level`,`align`,`clan` FROM `users` WHERE `inUser` = "' . $uwin_bot['id'] . '" LIMIT 1' + ) + ); + $swin = mysql_fetch_array( + mysql_query('SELECT `id`,`exp` FROM `stats` WHERE `id` = "' . $uwin['id'] . '" LIMIT 1') + ); + + //Опыт + $swin_bot['exp'] -= 30000; + $swin_bot['exp'] = round($swin_bot['exp'] / 2); + if ($swin_bot['exp'] < 0) { + $swin_bot['exp'] = 0; + } + $swin_bot['exp'] += 1500; + + //Сохраняем статистику + mysql_query( + 'INSERT INTO `bs_statistic` (`bsid`,`count`,`time_start`,`time_finish`,`time_sf`,`type_bs`,`money`,`wlogin`,`wuid`,`walign`,`wclan`,`wlevel`) VALUES ( + "' . $pl['id'] . '","' . $pl['count'] . '","' . $pl['time_start'] . '","' . time( + ) . '","' . (time() - $pl['time_start']) . '","' . $pl['type_btl'] . '","' . round( + $pl['money'] * 0.85, 2 + ) . '", + "' . $uwin['login'] . '","' . $uwin['id'] . '","' . $uwin['align'] . '","' . $uwin['clan'] . '","' . $uwin['level'] . '" + )' + ); + $pl['time_start'] = time() + $cnfg['time_restart'] * (60 * 60); + if (isset($uwin['id'])) { + mysql_query( + 'UPDATE `users` SET `money` = "' . ($uwin['money'] + round( + $pl['money'] * 0.85, 2 + )) . '", `money2` = "' . ($uwin['money2'] + 1) . '", `win_bs` = IFNULL(`win_bs`, 0) + 1 WHERE `login` = "' . $uwin['login'] . '"' + ); + mysql_query( + 'UPDATE `stats` SET `exp` = "' . ($swin['exp'] + $swin_bot['exp']) . '" WHERE `id` = "' . $uwin['id'] . '" LIMIT 1' + ); + e( + '#' . $pl['usersn'] . ' Турнир для ' . $pl['to_lvl'] . ' уровней в Башне Смерти завершился. Победитель: ' . microLogin2( + $uwin + ) . '. Приз: ' . round( + $pl['money'] * 0.85, 2 + ) . ' кр. и 1 екр.' . round( + $swin_bot['exp'] + ) . ' опыта. Начало нового турнира через ' . timeOut( + $pl['time_start'] - time() + ) . ' (' . date('d.m.Y H:i', $pl['time_start']) . ')' + ); + if (date('w') == 0 || date('w') == 6 || date('w') == 3) { + mysql_query( + 'UPDATE `stats` SET `repexp` = `repexp` + 25 WHERE `id` = "' . $uwin['id'] . '" LIMIT 1' + ); + } else { + mysql_query( + 'UPDATE `stats` SET `repexp` = `repexp` + 10 WHERE `id` = "' . $uwin['id'] . '" LIMIT 1' + ); + } + } + //Добавляем в лог БС + $text = 'Турнир завершен. Победитель: ' . microLogin2($uwin) . '. Приз: ' . round( + $pl['money'] * 0.85, 2 + ) . ' кр. и 1 екр.' . round($swin_bot['exp']) . ' опыта.'; + mysql_query( + 'INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( + "1", "' . mysql_real_escape_string($text) . '", "' . time( + ) . '", "' . $pl['id'] . '", "' . $pl['count'] . '", "' . $pl['city'] . '", + "' . round($pl['money'] * 0.85, 2) . '","' . $i . '" + )' + ); + // + backusers($pl); + $pl['count']++; + mysql_query( + 'UPDATE `bs_turnirs` SET `money` = "0",`count` = "' . $pl['count'] . '",`status` = "0",`time_start` = "' . $pl['time_start'] . '",`users` = "0",`users_finish` = "0",`ch1` = "0",`arhiv` = "0" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' + ); + } else { + //Ожидаем пока игрок убьет Архивариуса + + } + } else { + //Сохраняем статистику + mysql_query( + 'INSERT INTO `bs_statistic` (`bsid`,`count`,`time_start`,`time_finish`,`time_sf`,`type_bs`,`money`,`wlogin`,`wuid`,`walign`,`wclan`) VALUES ( + "' . $pl['id'] . '","' . $pl['count'] . '","' . $pl['time_start'] . '","' . time( + ) . '","' . (time() - $pl['time_start']) . '","' . $pl['type_btl'] . '","' . round( + $pl['money'] * 0.85, 2 + ) . '", "1","0","0","0" - )'); - //Просто завершаем турнир, ничья - $pl['time_start'] = time() + $cnfg['time_restart'] * (60*60); - //Добавляем в лог БС - $text = 'Турнир завершен. Победитель: Отсутствует (Никто не остался в живых). Призовой фонд: '.round($pl['money']*0.85,2).' кр.'; - mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( - "1", "'.mysql_real_escape_string($text).'", "'.time().'", "'.$pl['id'].'", "'.$pl['count'].'", "'.$pl['city'].'", - "'.round($pl['money']*0.85,2).'","'.$i.'" - )'); - // - backusers($pl); - $pl['count']++; - e('Турнир для '.$pl['to_lvl'].' уровней в Башне Смерти завершился. Победитель: Отсутствует (Никто не остался в живых). Призовой фонд '.round($pl['money']*0.85,2).' кр. Начало нового турнира через '.timeOut($pl['time_start']-time()-3600).' ('.date('d.m.Y H:i',$pl['time_start']).')'); - mysql_query('UPDATE `bs_turnirs` SET `money` = "'.round($pl['money']*0.85,2).'",`count` = "'.$pl['count'].'",`status` = "0",`time_start` = "'.$pl['time_start'].'",`users` = "0",`users_finish` = "0",`ch1` = "0",`arhiv` = "0" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - }else{ - //Все живы - if( $pl['arhiv'] > 0 ) { - $a_sp = mysql_query('SELECT `s`.`timeGo`,`u`.`align`,`u`.`clan`,`u`.`sex`,`u`.`pass`,`u`.`id`,`u`.`level`,`u`.`login`,`u`.`battle`,`s`.`x`,`s`.`y` FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `u`.`pass` = "bstowerbot" AND `u`.`inTurnir` = "'.mysql_real_escape_string($pl['id']).'" AND `u`.`room` = "362" LIMIT 10'); - while( $a_pl = mysql_fetch_array($a_sp) ) { - $xy = mysql_fetch_array(mysql_query('SELECT * FROM `bs_map` WHERE `x` = "'.$a_pl['x'].'" AND `y` = "'.$a_pl['y'].'" LIMIT 1')); - if( isset($xy['id']) ) { - if( $a_pl['battle'] == 0 ) { - //Поднимаем предметы - $sp_itm = mysql_query('SELECT * FROM `bs_items` WHERE `x` = "'.$a_pl['x'].'" AND `y` = "'.$a_pl['y'].'" AND `bid` = "'.$pl['id'].'" AND `count` = "'.$pl['count'].'" LIMIT 20'); - while( $pl_itm = mysql_fetch_array( $sp_itm ) ) { - if( rand(0,100) < 21 ) { - //Поднимаем текущий предмет - $itm_id = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$pl_itm['item_id'].'" LIMIT 1')); - if( isset($itm_id['id']) ) { - $itm_id['odevaem'] = addItem($itm_id['id'],$a_pl['id']); - mysql_query('DELETE FROM `bs_items` WHERE `id` = "'.$pl_itm['id'].'" LIMIT 1'); - if( $itm_id['level'] <= $a_pl['level'] && $itm_id['odevaem'] > 0 ) { - //надеваем - if( $itm_id['inslot'] == 10 ) { - $itm_id['inslot'] = rand(10,12); - } - mysql_query('UPDATE `items_users` SET `inOdet` = "0" WHERE `inOdet` = "'.$itm_id['inslot'].'" AND `uid` = "'.$a_pl['id'].'" LIMIT 1'); - mysql_query('UPDATE `items_users` SET `inOdet` = "'.$itm_id['inslot'].'" WHERE `id` = "'.$itm_id['odevaem'].'" LIMIT 1'); - } - } - } - } - unset($itm_id,$sp_itm,$pl_itm); - //Нападаем/Вмешиваемся в поединок - if( $pl['time_start'] < time() - $cnfg['time_puti'] ) { - $sp_usr = mysql_query('SELECT `u`.`id`,`u`.`battle`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`u`.`sex`,`s`.`team` FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `u`.`id` = `s`.`id` WHERE `s`.`x` = "'.$a_pl['x'].'" AND `u`.`pass` != "'.$a_pl['pass'].'" AND `s`.`y` = "'.$a_pl['y'].'" ORDER BY `s`.`timeGo` ASC LIMIT 5'); - while( $pl_usr = mysql_fetch_array($sp_usr) ) { - if( rand(0,100) < 31 && $a_pl['battle'] == 0 ) { - $pl_usr_real = mysql_fetch_array(mysql_query('SELECT `id`,`sex`,`login`,`level`,`clan`,`align`,`battle` FROM `users` WHERE `inUser` = "'.$pl_usr['id'].'" LIMIT 1')); - if( isset($pl_usr_real['id']) ) { - mysql_query('UPDATE `stats` SET `hpNow` = `hpNow` + 10 WHERE `id` = "'.$a_pl['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `hpNow` = `hpNow` + 10 WHERE `id` = "'.$pl_usr['id'].'" LIMIT 1'); - bs_atack($pl,$a_pl,$pl_usr); - $a_pl['battle'] = 1; - } - } - } - unset($sp_usr,$pl_usr); - - if( $a_pl['battle'] == 0 && rand(0,100) < 71 && $a_pl['timeGo'] < time()) { - //Передвигаемся - $stor = array(); - if( $xy['up'] > 0 ) { - $stor[] = 'up'; - } - if( $xy['down'] > 0 ) { - $stor[] = 'down'; - } - if( $xy['left'] > 0 ) { - $stor[] = 'left'; - } - if( $xy['right'] > 0 ) { - $stor[] = 'right'; - } - $stor = $stor[rand(0,count($stor)-1)]; - if( $stor == 'up' ) { - $stgo = $xy[$stor]; - }elseif( $stor == 'down' ) { - $stgo = $xy[$stor]; - }elseif( $stor == 'left' ) { - $stgo = $xy[$stor]; - }elseif( $stor == 'right' ) { - $stgo = $xy[$stor]; - } - if( $stgo == 1 ) { - if( $stor == 'up' ) { - $a_pl['x']--; - }elseif( $stor == 'down' ) { - $a_pl['x']++; - }elseif( $stor == 'left' ) { - $a_pl['y']--; - }elseif( $stor == 'right' ) { - $a_pl['y']++; - } - }else{ - $stgo = mysql_fetch_array(mysql_query('SELECT * FROM `bs_map` WHERE `id` = "'.$stgo.'" LIMIT 1')); - if( isset($stgo['id']) ) { - $a_pl['x'] = $stgo['x']; - $a_pl['y'] = $stgo['y']; - } - } - mysql_query('UPDATE `stats` SET `x` = "'.$a_pl['x'].'",`y` = "'.$a_pl['y'].'" WHERE `id` = "'.$a_pl['id'].'" LIMIT 1'); - unset($stor,$stgo); - } - } - - }else{ - //Сражаемся - - } - } - } - } - } - } - }elseif( $pl['status'] == 0 && $pl['time_start'] < time() ) { - //Начинаем турнир - if( nostart( $pl ) == false ) { - - //Начинаем турнир! - $spm = mysql_query('SELECT `x`,`y` FROM `bs_map` WHERE `mid` = "'.$pl['type_map'].'"'); - $maps = array( ); - while( $plm = mysql_fetch_array($spm) ) { - $maps[] = array($plm['x'],$plm['y']); - } - $i = 0; $j = 0; $usrlst = array(); - $ubss = ''; - $sp_u = mysql_query('SELECT * FROM `bs_zv` WHERE `finish` = "0" AND `bsid` = "'.$pl['id'].'" ORDER BY `money` DESC LIMIT 12'); - // - //Создаем поход - mysql_query('INSERT INTO `dungeon_now` ( + )' + ); + //Просто завершаем турнир, ничья + $pl['time_start'] = time() + $cnfg['time_restart'] * (60 * 60); + //Добавляем в лог БС + $text = 'Турнир завершен. Победитель: Отсутствует (Никто не остался в живых). Призовой фонд: ' . round( + $pl['money'] * 0.85, 2 + ) . ' кр.'; + mysql_query( + 'INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( + "1", "' . mysql_real_escape_string($text) . '", "' . time( + ) . '", "' . $pl['id'] . '", "' . $pl['count'] . '", "' . $pl['city'] . '", + "' . round($pl['money'] * 0.85, 2) . '","' . $i . '" + )' + ); + // + backusers($pl); + $pl['count']++; + e( + 'Турнир для ' . $pl['to_lvl'] . ' уровней в Башне Смерти завершился. Победитель: Отсутствует (Никто не остался в живых). Призовой фонд ' . round( + $pl['money'] * 0.85, 2 + ) . ' кр. Начало нового турнира через ' . timeOut( + $pl['time_start'] - time() - 3600 + ) . ' (' . date('d.m.Y H:i', $pl['time_start']) . ')' + ); + mysql_query( + 'UPDATE `bs_turnirs` SET `money` = "' . round( + $pl['money'] * 0.85, 2 + ) . '",`count` = "' . $pl['count'] . '",`status` = "0",`time_start` = "' . $pl['time_start'] . '",`users` = "0",`users_finish` = "0",`ch1` = "0",`arhiv` = "0" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' + ); + } + } else { + //Все живы + if ($pl['arhiv'] > 0) { + $a_sp = mysql_query( + 'SELECT `s`.`timeGo`,`u`.`align`,`u`.`clan`,`u`.`sex`,`u`.`pass`,`u`.`id`,`u`.`level`,`u`.`login`,`u`.`battle`,`s`.`x`,`s`.`y` FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `u`.`pass` = "bstowerbot" AND `u`.`inTurnir` = "' . mysql_real_escape_string( + $pl['id'] + ) . '" AND `u`.`room` = "362" LIMIT 10' + ); + while ($a_pl = mysql_fetch_array($a_sp)) { + $xy = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `bs_map` WHERE `x` = "' . $a_pl['x'] . '" AND `y` = "' . $a_pl['y'] . '" LIMIT 1' + ) + ); + if (isset($xy['id'])) { + if ($a_pl['battle'] == 0) { + //Поднимаем предметы + $sp_itm = mysql_query( + 'SELECT * FROM `bs_items` WHERE `x` = "' . $a_pl['x'] . '" AND `y` = "' . $a_pl['y'] . '" AND `bid` = "' . $pl['id'] . '" AND `count` = "' . $pl['count'] . '" LIMIT 20' + ); + while ($pl_itm = mysql_fetch_array($sp_itm)) { + if (rand(0, 100) < 21) { + //Поднимаем текущий предмет + $itm_id = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `items_main` WHERE `id` = "' . $pl_itm['item_id'] . '" LIMIT 1' + ) + ); + if (isset($itm_id['id'])) { + $itm_id['odevaem'] = addItem($itm_id['id'], $a_pl['id']); + mysql_query( + 'DELETE FROM `bs_items` WHERE `id` = "' . $pl_itm['id'] . '" LIMIT 1' + ); + if ($itm_id['level'] <= $a_pl['level'] && $itm_id['odevaem'] > 0) { + //надеваем + if ($itm_id['inslot'] == 10) { + $itm_id['inslot'] = rand(10, 12); + } + mysql_query( + 'UPDATE `items_users` SET `inOdet` = "0" WHERE `inOdet` = "' . $itm_id['inslot'] . '" AND `uid` = "' . $a_pl['id'] . '" LIMIT 1' + ); + mysql_query( + 'UPDATE `items_users` SET `inOdet` = "' . $itm_id['inslot'] . '" WHERE `id` = "' . $itm_id['odevaem'] . '" LIMIT 1' + ); + } + } + } + } + unset($itm_id, $sp_itm, $pl_itm); + //Нападаем/Вмешиваемся в поединок + if ($pl['time_start'] < time() - $cnfg['time_puti']) { + $sp_usr = mysql_query( + 'SELECT `u`.`id`,`u`.`battle`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`u`.`sex`,`s`.`team` FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `u`.`id` = `s`.`id` WHERE `s`.`x` = "' . $a_pl['x'] . '" AND `u`.`pass` != "' . $a_pl['pass'] . '" AND `s`.`y` = "' . $a_pl['y'] . '" ORDER BY `s`.`timeGo` ASC LIMIT 5' + ); + while ($pl_usr = mysql_fetch_array($sp_usr)) { + if (rand(0, 100) < 31 && $a_pl['battle'] == 0) { + $pl_usr_real = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`sex`,`login`,`level`,`clan`,`align`,`battle` FROM `users` WHERE `inUser` = "' . $pl_usr['id'] . '" LIMIT 1' + ) + ); + if (isset($pl_usr_real['id'])) { + mysql_query( + 'UPDATE `stats` SET `hpNow` = `hpNow` + 10 WHERE `id` = "' . $a_pl['id'] . '" LIMIT 1' + ); + mysql_query( + 'UPDATE `stats` SET `hpNow` = `hpNow` + 10 WHERE `id` = "' . $pl_usr['id'] . '" LIMIT 1' + ); + bs_atack($pl, $a_pl, $pl_usr); + $a_pl['battle'] = 1; + } + } + } + unset($sp_usr, $pl_usr); + + if ($a_pl['battle'] == 0 && rand(0, 100) < 71 && $a_pl['timeGo'] < time()) { + //Передвигаемся + $stor = []; + if ($xy['up'] > 0) { + $stor[] = 'up'; + } + if ($xy['down'] > 0) { + $stor[] = 'down'; + } + if ($xy['left'] > 0) { + $stor[] = 'left'; + } + if ($xy['right'] > 0) { + $stor[] = 'right'; + } + $stor = $stor[rand(0, count($stor) - 1)]; + if ($stor == 'up') { + $stgo = $xy[$stor]; + } elseif ($stor == 'down') { + $stgo = $xy[$stor]; + } elseif ($stor == 'left') { + $stgo = $xy[$stor]; + } elseif ($stor == 'right') { + $stgo = $xy[$stor]; + } + if ($stgo == 1) { + if ($stor == 'up') { + $a_pl['x']--; + } elseif ($stor == 'down') { + $a_pl['x']++; + } elseif ($stor == 'left') { + $a_pl['y']--; + } elseif ($stor == 'right') { + $a_pl['y']++; + } + } else { + $stgo = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `bs_map` WHERE `id` = "' . $stgo . '" LIMIT 1' + ) + ); + if (isset($stgo['id'])) { + $a_pl['x'] = $stgo['x']; + $a_pl['y'] = $stgo['y']; + } + } + mysql_query( + 'UPDATE `stats` SET `x` = "' . $a_pl['x'] . '",`y` = "' . $a_pl['y'] . '" WHERE `id` = "' . $a_pl['id'] . '" LIMIT 1' + ); + unset($stor, $stgo); + } + } + + } else { + //Сражаемся + + } + } + } + } + } + } + } elseif ($pl['status'] == 0 && $pl['time_start'] < time()) { + //Начинаем турнир + if (nostart($pl) == false) { + + //Начинаем турнир! + $spm = mysql_query('SELECT `x`,`y` FROM `bs_map` WHERE `mid` = "' . $pl['type_map'] . '"'); + $maps = []; + while ($plm = mysql_fetch_array($spm)) { + $maps[] = [$plm['x'], $plm['y']]; + } + $i = 0; + $j = 0; + $usrlst = []; + $ubss = ''; + $sp_u = mysql_query( + 'SELECT * FROM `bs_zv` WHERE `finish` = "0" AND `bsid` = "' . $pl['id'] . '" ORDER BY `money` DESC LIMIT 12' + ); + // + //Создаем поход + mysql_query( + 'INSERT INTO `dungeon_now` ( `id2` , `name` , `time_start` , `time_finish` , `uid` , `city` , `type` , `bsid` ) VALUES ( - "6" , "Башня Смерти" , "'.$pl['time_start'].'" , "0" , "0" , "'.$pl['city'].'" , "0" , "'.$pl['id'].'" - )'); - $dnew = mysql_insert_id(); - //Добавляем обьекты + "6" , "Башня Смерти" , "' . $pl['time_start'] . '" , "0" , "0" , "' . $pl['city'] . '" , "0" , "' . $pl['id'] . '" + )' + ); + $dnew = mysql_insert_id(); + //Добавляем обьекты $vls32 = ''; $sphj = mysql_query('SELECT * FROM `dungeon_obj` WHERE `for_dn` = "6"'); - while($plhj = mysql_fetch_array($sphj)) - { - $vls32 .= '("'.$dnew.'","'.$plhj['name'].'","'.$plhj['img'].'","'.$plhj['x'].'","'.$plhj['y'].'","'.$plhj['action'].'","'.$plhj['type'].'","'.$plhj['w'].'","'.$plhj['h'].'","'.$plhj['s'].'","'.$plhj['s2'].'","'.$plhj['os1'].'","'.$plhj['os2'].'","'.$plhj['os3'].'","'.$plhj['os4'].'","'.$plhj['type2'].'","'.$plhj['top'].'","'.$plhj['left'].'","'.$plhj['date'].'"),'; + while ($plhj = mysql_fetch_array($sphj)) { + $vls32 .= '("' . $dnew . '","' . $plhj['name'] . '","' . $plhj['img'] . '","' . $plhj['x'] . '","' . $plhj['y'] . '","' . $plhj['action'] . '","' . $plhj['type'] . '","' . $plhj['w'] . '","' . $plhj['h'] . '","' . $plhj['s'] . '","' . $plhj['s2'] . '","' . $plhj['os1'] . '","' . $plhj['os2'] . '","' . $plhj['os3'] . '","' . $plhj['os4'] . '","' . $plhj['type2'] . '","' . $plhj['top'] . '","' . $plhj['left'] . '","' . $plhj['date'] . '"),'; } - $vls32 = rtrim($vls32,','); - if($vls32!='') - { - $ins232 = mysql_query('INSERT INTO `dungeon_obj` (`dn`,`name`,`img`,`x`,`y`,`action`,`type`,`w`,`h`,`s`,`s2`,`os1`,`os2`,`os3`,`os4`,`type2`,`top`,`left`,`date`) VALUES '.$vls32.''); + $vls32 = rtrim($vls32, ','); + if ($vls32 != '') { + $ins232 = mysql_query( + 'INSERT INTO `dungeon_obj` (`dn`,`name`,`img`,`x`,`y`,`action`,`type`,`w`,`h`,`s`,`s2`,`os1`,`os2`,`os3`,`os4`,`type2`,`top`,`left`,`date`) VALUES ' . $vls32 . '' + ); } - unset($vls32,$ins232); - //Добавляем предметы - $map = array(); - $mapsp = mysql_query('SELECT `x`,`y` FROM `dungeon_map` WHERE `id_dng` = 6'); - while( $mappl = mysql_fetch_array($mapsp) ) { - $map[] = array( 'x' => $mappl['x'] , 'y' => $mappl['y'] ); - } - $mapu = $map; - // - $ii1 = 0; - while($ii1 < count($map)) { - //На каждой клетке в среднем 2 предмета - $itbsrnd = $itbs[rand(0,count($itbs)-1)]; - $mp = rand(0,count($map)-1); - // - $x1 = $map[$mp]['x']; - $y1 = $map[$mp]['y']; - // - mysql_query('INSERT INTO `dungeon_items` (`dn`,`item_id`,`time`,`x`,`y`) VALUES ( - "'.$dnew.'","'.$itbsrnd.'","'.(time()-600).'","'.$x1.'","'.$y1.'" - )'); - // - $ii1++; - } - - //Добавляем чеки на кр. и на екр. на карту - $m1 = $maps[rand(0,count($maps)-1)]; - $x1 = round($m1[0]); - $y1 = round($m1[1]); - //$itm1 = array( 4174 , 4175 , 4176 , 4177 , 4178 , 4179 , 4180 ); //Перечисление кр. чеков - $itm1 = array( 4176 , 4177 ); //Перечисление кр. чеков - $itm1 = $itm1[rand(0,count($itm1)-1)]; - if( $itm1 > 0 ) { - // - $mp = rand(0,count($map)-1); - // - $x1 = $map[$mp]['x']; - $y1 = $map[$mp]['y']; - // - mysql_query('INSERT INTO `dungeon_items` (`dn`,`item_id`,`time`,`x`,`y`) VALUES ( - "'.$dnew.'","'.$itm1.'","'.(time()-600).'","'.$x1.'","'.$y1.'" - )'); - // - } - - //Добавляем монстров (Архивариусов) - /*$vls0 = ''; - $zi1 = 0; - $id_bots = array(159,160,161); - while($zi1 < count($id_bots)) { - if(isset($id_bots[$zi1])) { - $mp = rand(0,count($map)-1); - $x1 = $map[$mp]['x']; - $y1 = $map[$mp]['y']; - $vls0 .= '("'.(time()+150).'","'.$dnew.'","'.$id_bots[$zi1].'","1","","'.$x1.'","'.$y1.'","0",""),'; - } - $zi1++; + unset($vls32, $ins232); + //Добавляем предметы + $map = []; + $mapsp = mysql_query('SELECT `x`,`y` FROM `dungeon_map` WHERE `id_dng` = 6'); + while ($mappl = mysql_fetch_array($mapsp)) { + $map[] = ['x' => $mappl['x'], 'y' => $mappl['y']]; + } + $mapu = $map; + // + $ii1 = 0; + while ($ii1 < count($map)) { + //На каждой клетке в среднем 2 предмета + $itbsrnd = $itbs[rand(0, count($itbs) - 1)]; + $mp = rand(0, count($map) - 1); + // + $x1 = $map[$mp]['x']; + $y1 = $map[$mp]['y']; + // + mysql_query( + 'INSERT INTO `dungeon_items` (`dn`,`item_id`,`time`,`x`,`y`) VALUES ( + "' . $dnew . '","' . $itbsrnd . '","' . (time() - 600) . '","' . $x1 . '","' . $y1 . '" + )' + ); + // + $ii1++; } - $vls0 = rtrim($vls0,','); - $ins1 = mysql_query('INSERT INTO `dungeon_bots` (`go_bot`,`dn`,`id_bot`,`colvo`,`items`,`x`,`y`,`dialog`,`atack`) VALUES '.$vls0.''); - */ - // - $newkor = array(); - while( $pl_u = mysql_fetch_array($sp_u) ) { - if( $i < 12 && !isset($usrlst[$pl_u['uid']]) ) { - //Действующие участники - $usrlst[$pl_u['uid']] = true; - $bus = mysql_fetch_array(mysql_query('SELECT `align`,`chatColor`,`molch1`,`molch2`,`id`,`login`,`clan`,`align`,`level`,`sex`,`online`,`room` FROM `users` WHERE `id` = "'.mysql_real_escape_string($pl_u['uid']).'" LIMIT 1')); - if(date('w') == 0 || date('w') == 6 || date('w') == 3) { - mysql_query('UPDATE `stats` SET `repexp` = `repexp` + 5 WHERE `id` = "'.$bus['id'].'" LIMIT 1'); - } - else - { - mysql_query('UPDATE `stats` SET `repexp` = `repexp` + 5 WHERE `id` = "'.$bus['id'].'" LIMIT 1'); - } - //Замораживаем эффекты - //changeSleep($bus['id'],1); - //mysql_query('UPDATE `eff_users` SET `sleeptime` = "'.time().'",`bs` = "1" WHERE `uid` = "'.$bus['id'].'" AND `delete` = "0" AND `no_Ace` = "0"'); - // - - $bus['login_BIG'] = ''; - if( $bus['align'] > 0 ) { - $bus['login_BIG'] .= ''; - } - if( $bus['clan'] > 0 ) { - $bus['login_BIG'] .= ''; - } - $bus['login_BIG'] .= ''.$bus['login'].'['.$bus['level'].']'; - $ubss .= ', '.$bus['login_BIG']; - // - //Вселяем персонажей в ботов - if( $bus['align'] >= 1 && $bus['align'] < 2 ) { - $bus['align'] = 1; - }elseif( $bus['align'] >= 3 && $bus['align'] < 4 ) { - $bus['align'] = 3; - }elseif( $bus['align'] == 7 ) { - $bus['align'] = 7; - }else{ - $bus['align'] = 0; - } - mysql_query('INSERT INTO `users` (`chatColor`,`align`,`inTurnir`,`molch1`,`molch2`,`activ`,`login`,`room`,`name`,`sex`,`level`,`bithday`) VALUES ( - "'.$bus['chatColor'].'","'.$bus['align'].'","'.$pl['id'].'","'.$bus['molch1'].'","'.$bus['molch2'].'","0","'.$bus['login'].'","362","'.$bus['name'].'","'.$bus['sex'].'","'.$pl['level'].'","'.date('d.m.Y').'")'); - // - $inbot = mysql_insert_id(); //айди бота - if( $inbot > 0 ) { - //Бот - // - $mp = rand(0,count($mapu)-1); - - $testxy=0; - $jj=count($newkor); - if ($i == 0) - { - $x1 = $mapu[$mp]['x']; - $y1 = $mapu[$mp]['y']; - $newkor[$i]['x'] = $mapu[$mp]['x']; - $newkor[$i]['y'] = $mapu[$mp]['y']; - } - else - { + //Добавляем чеки на кр. и на екр. на карту + $m1 = $maps[rand(0, count($maps) - 1)]; + $x1 = round($m1[0]); + $y1 = round($m1[1]); + //$itm1 = array( 4174 , 4175 , 4176 , 4177 , 4178 , 4179 , 4180 ); //Перечисление кр. чеков + $itm1 = [4176, 4177]; //Перечисление кр. чеков + $itm1 = $itm1[rand(0, count($itm1) - 1)]; + if ($itm1 > 0) { + // + $mp = rand(0, count($map) - 1); + // + $x1 = $map[$mp]['x']; + $y1 = $map[$mp]['y']; + // + mysql_query( + 'INSERT INTO `dungeon_items` (`dn`,`item_id`,`time`,`x`,`y`) VALUES ( + "' . $dnew . '","' . $itm1 . '","' . (time() - 600) . '","' . $x1 . '","' . $y1 . '" + )' + ); + // + } - while ($testxy<1) - { - $iii=0; - - while ($iii<$jj) - { - if ( ($newkor[$iii]['x'] <= $mapu[$mp]['x'] +3) && ($newkor[$iii]['x'] >= $mapu[$mp]['x'] -3) && ($newkor[$iii]['y'] <= $mapu[$mp]['y'] +3)&& ($newkor[$iii]['y'] >= $mapu[$mp]['y'] -3)) - { - $testxy=1; - } - - $iii++; - } - - if($testxy==1) - { - $mp = rand(0,count($mapu)-1); - $testxy=0; - } - else - { - $testxy=1; - $x1 = $mapu[$mp]['x']; - $y1 = $mapu[$mp]['y']; - $newkor[$i]['x'] = $mapu[$mp]['x']; - $newkor[$i]['y'] = $mapu[$mp]['y']; - } - } - - } - - // - + //Добавляем монстров (Архивариусов) + $newkor = []; + while ($pl_u = mysql_fetch_array($sp_u)) { + if ($i < 12 && !isset($usrlst[$pl_u['uid']])) { + //Действующие участники + $usrlst[$pl_u['uid']] = true; + $bus = mysql_fetch_array( + mysql_query( + 'SELECT `align`,`chatColor`,`molch1`,`molch2`,`id`,`login`,`clan`,`align`,`level`,`sex`,`online`,`room` FROM `users` WHERE `id` = "' . mysql_real_escape_string( + $pl_u['uid'] + ) . '" LIMIT 1' + ) + ); + mysql_query( + 'UPDATE `stats` SET `repexp` = `repexp` + 5 WHERE `id` = "' . $bus['id'] . '" LIMIT 1' + ); - - unset($mapu[$mp]); - // - mysql_query('INSERT INTO `stats` (`timeGo`,`timeGoL`,`upLevel`,`dnow`,`id`,`stats`,`exp`,`ability`,`skills`,`x`,`y`) + $bus['login_BIG'] = ''; + if ($bus['align'] > 0) { + $bus['login_BIG'] .= ''; + } + if ($bus['clan'] > 0) { + $bus['login_BIG'] .= ''; + } + $bus['login_BIG'] .= '' . $bus['login'] . '[' . $bus['level'] . ']'; + $ubss .= ', ' . $bus['login_BIG']; + // + //Вселяем персонажей в ботов + if ($bus['align'] >= 1 && $bus['align'] < 2) { + $bus['align'] = 1; + } elseif ($bus['align'] >= 3 && $bus['align'] < 4) { + $bus['align'] = 3; + } elseif ($bus['align'] == 7) { + $bus['align'] = 7; + } else { + $bus['align'] = 0; + } + mysql_query( + 'INSERT INTO `users` (`chatColor`,`align`,`inTurnir`,`molch1`,`molch2`,`activ`,`login`,`room`,`name`,`sex`,`level`,`bithday`) VALUES ( + "' . $bus['chatColor'] . '","' . $bus['align'] . '","' . $pl['id'] . '","' . $bus['molch1'] . '","' . $bus['molch2'] . '","0","' . $bus['login'] . '","362","' . $bus['name'] . '","' . $bus['sex'] . '","' . $pl['level'] . '","' . date( + 'd.m.Y' + ) . '")' + ); + // + $inbot = mysql_insert_id(); //айди бота + if ($inbot > 0) { + //Бот + // + $mp = rand(0, count($mapu) - 1); + + + $testxy = 0; + $jj = count($newkor); + if ($i == 0) { + $x1 = $mapu[$mp]['x']; + $y1 = $mapu[$mp]['y']; + $newkor[$i]['x'] = $mapu[$mp]['x']; + $newkor[$i]['y'] = $mapu[$mp]['y']; + } else { + + while ($testxy < 1) { + $iii = 0; + + while ($iii < $jj) { + if (($newkor[$iii]['x'] <= $mapu[$mp]['x'] + 3) && ($newkor[$iii]['x'] >= $mapu[$mp]['x'] - 3) && ($newkor[$iii]['y'] <= $mapu[$mp]['y'] + 3) && ($newkor[$iii]['y'] >= $mapu[$mp]['y'] - 3)) { + $testxy = 1; + } + + $iii++; + } + + if ($testxy == 1) { + $mp = rand(0, count($mapu) - 1); + $testxy = 0; + } else { + $testxy = 1; + $x1 = $mapu[$mp]['x']; + $y1 = $mapu[$mp]['y']; + $newkor[$i]['x'] = $mapu[$mp]['x']; + $newkor[$i]['y'] = $mapu[$mp]['y']; + } + } + + } + + // + + + unset($mapu[$mp]); + // + mysql_query( + 'INSERT INTO `stats` (`timeGo`,`timeGoL`,`upLevel`,`dnow`,`id`,`stats`,`exp`,`ability`,`skills`,`x`,`y`) VALUES ( - "'.(time()+$cnfg['time_puti']).'","'.(time()+$cnfg['time_puti']).'","98","'.$dnew.'","'.$inbot.'", - "s1=3|s2=3|s3=3|s4='.$st2s[$pl['level']][0].'|s5=0|s6=0|rinv=40|m9=5|m6=10","'.$exp2[$pl['level']].'", - "'.$st2s[$pl['level']][1].'","'.$st2s[$pl['level']][2].'","'.$x1.'","'.$y1.'" - )'); - mysql_query('UPDATE `users` SET `inUser` = "'.$inbot.'" WHERE `id` = "'.$bus['id'].'" LIMIT 1'); - } - //Добавляем путы - // - mysql_query('INSERT INTO `eff_users` (`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`img2`) VALUES ( - "2","'.$inbot.'","Путы","add_speedhp=30000|add_speedmp=30000|puti='.(time()+$cnfg['time_puti']).'","1","'.(time()+$cnfg['time_puti']).'","chains.gif" - ) '); - // - //Обновляем данные заявки БС - mysql_query('UPDATE `bs_zv` SET `finish` = "'.time().'",`inBot` = "'.$inbot.'" WHERE `id` = "'.$pl_u['id'].'" LIMIT 1'); - // - unset($bus['login_BIG']); - $i++; - } - $j++; - } - unset($sp_u,$pl_u,$bus,$usrlst,$testxy,$iii,$jj); - //Выбираем тип БС - $pl['type_btl'] = 0; - // - $m1 = $maps[rand(0,count($maps)-1)]; - $x1 = round($m1[0]); - $y1 = round($m1[1]); - // - unset($mis,$m1,$x1,$y1,$i2); - // - $ubss = ltrim($ubss,', '); - // - //Обновление статуса Башни Смерти и удаление заявок - mysql_query('UPDATE `bs_turnirs` SET `type_btl` = "'.$pl['type_btl'].'", `status` = "1", `users` = "'.$i.'", `arhiv` = "'.$pl['arhiv'].'", `users_finish` = "0" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - mysql_query('UPDATE `bs_zv` SET `finish` = "'.time().'" WHERE `bsid` = "'.$pl['id'].'" AND `finish` = "0" AND `inBot` = "0"'); - //Добавляем в лог БС - $text = 'Начало турнира. Участники: '.$ubss; - mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( - "1", "'.mysql_real_escape_string($text).'", "'.time().'", "'.$pl['id'].'", "'.$pl['count'].'", "'.$pl['city'].'", - "'.round($pl['money']*0.85,2).'","'.$i.'" - )'); - // - e('Начался турнир , для '.$pl['to_lvl'].' уровней в Башне Смерти. Участники: '.$ubss.'.'); - } - }else{ - //Оповещаем участников о начале турнира за 60 мин., а так-же за 10 мин. - if( $pl['status'] == 0 ) { - if( $pl['ch1'] == 0 && $pl['time_start'] - 60*60 < time()) { - mysql_query('UPDATE `bs_turnirs` SET `ch1` = `ch1` + 1 WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - //e('Начало турнира вечных «5» уровней, для '.$pl['to_lvl'].' уровней в Башне Смерти через '.timeOut($pl['time_start']-time()).' ('.date('d.m.Y H:i',$pl['time_start']).'), текущий призовой фонд: '.round($pl['money']*0.85,2).' кр., заявок: '.$pl['users'].''); - }elseif( $pl['ch1'] == 1 && $pl['time_start'] - 10*60 < time()) { - mysql_query('UPDATE `bs_turnirs` SET `ch1` = `ch1` + 1 WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - e('Начало турнира, для '.$pl['to_lvl'].' уровней в Башне Смерти через '.timeOut($pl['time_start']-time()).' ('.date('d.m.Y H:i',$pl['time_start']).'), текущий призовой фонд: '.round($pl['money']*0.85,2).' кр., 1.00 Екр., заявок: '.$pl['users'].''); - } - } - } + "' . (time() + $cnfg['time_puti']) . '","' . (time( + ) + $cnfg['time_puti']) . '","98","' . $dnew . '","' . $inbot . '", + "s1=3|s2=3|s3=3|s4=' . $st2s[$pl['level']][0] . '|s5=0|s6=0|rinv=40|m9=5|m6=10","' . $exp2[$pl['level']] . '", + "' . $st2s[$pl['level']][1] . '","' . $st2s[$pl['level']][2] . '","' . $x1 . '","' . $y1 . '" + )' + ); + mysql_query( + 'UPDATE `users` SET `inUser` = "' . $inbot . '" WHERE `id` = "' . $bus['id'] . '" LIMIT 1' + ); + } + //Добавляем путы + // + mysql_query( + 'INSERT INTO `eff_users` (`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`img2`) VALUES ( + "2","' . $inbot . '","Путы","add_speedhp=30000|add_speedmp=30000|puti=' . (time( + ) + $cnfg['time_puti']) . '","1","' . (time() + $cnfg['time_puti']) . '","chains.gif" + ) ' + ); + // + //Обновляем данные заявки БС + mysql_query( + 'UPDATE `bs_zv` SET `finish` = "' . time( + ) . '",`inBot` = "' . $inbot . '" WHERE `id` = "' . $pl_u['id'] . '" LIMIT 1' + ); + // + unset($bus['login_BIG']); + $i++; + } + $j++; + } + unset($sp_u, $pl_u, $bus, $usrlst, $testxy, $iii, $jj); + //Выбираем тип БС + $pl['type_btl'] = 0; + // + $m1 = $maps[rand(0, count($maps) - 1)]; + $x1 = round($m1[0]); + $y1 = round($m1[1]); + // + unset($mis, $m1, $x1, $y1, $i2); + // + $ubss = ltrim($ubss, ', '); + // + //Обновление статуса Башни Смерти и удаление заявок + mysql_query( + 'UPDATE `bs_turnirs` SET `type_btl` = "' . $pl['type_btl'] . '", `status` = "1", `users` = "' . $i . '", `arhiv` = "' . $pl['arhiv'] . '", `users_finish` = "0" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' + ); + mysql_query( + 'UPDATE `bs_zv` SET `finish` = "' . time( + ) . '" WHERE `bsid` = "' . $pl['id'] . '" AND `finish` = "0" AND `inBot` = "0"' + ); + //Добавляем в лог БС + $text = 'Начало турнира. Участники: ' . $ubss; + mysql_query( + 'INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( + "1", "' . mysql_real_escape_string($text) . '", "' . time( + ) . '", "' . $pl['id'] . '", "' . $pl['count'] . '", "' . $pl['city'] . '", + "' . round($pl['money'] * 0.85, 2) . '","' . $i . '" + )' + ); + // + e('Начался турнир , для ' . $pl['to_lvl'] . ' уровней в Башне Смерти. Участники: ' . $ubss . '.'); + } + } else { + //Оповещаем участников о начале турнира за 60 мин., а так-же за 10 мин. + if ($pl['status'] == 0) { + if ($pl['ch1'] == 0 && $pl['time_start'] - 60 * 60 < time()) { + mysql_query('UPDATE `bs_turnirs` SET `ch1` = `ch1` + 1 WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + //e('Начало турнира вечных «5» уровней, для '.$pl['to_lvl'].' уровней в Башне Смерти через '.timeOut($pl['time_start']-time()).' ('.date('d.m.Y H:i',$pl['time_start']).'), текущий призовой фонд: '.round($pl['money']*0.85,2).' кр., заявок: '.$pl['users'].''); + } elseif ($pl['ch1'] == 1 && $pl['time_start'] - 10 * 60 < time()) { + mysql_query('UPDATE `bs_turnirs` SET `ch1` = `ch1` + 1 WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + e( + 'Начало турнира, для ' . $pl['to_lvl'] . ' уровней в Башне Смерти через ' . timeOut( + $pl['time_start'] - time() + ) . ' (' . date( + 'd.m.Y H:i', $pl['time_start'] + ) . '), текущий призовой фонд: ' . round( + $pl['money'] * 0.85, 2 + ) . ' кр., 1.00 Екр., заявок: ' . $pl['users'] . '' + ); + } + } + } } echo '#finish#'; -?> \ No newline at end of file diff --git a/cron_turnir.php b/cron_turnir.php index c37520b7..c613ce4e 100644 --- a/cron_turnir.php +++ b/cron_turnir.php @@ -1,97 +1,85 @@ '.$_SERVER['SERVER_ADDR']); - } -} +if (!isset($_GET['test']) && getIP() != $_SERVER['SERVER_ADDR'] && getIP() != '127.0.0.1' && getIP() != '' && getIP( + ) != '31.131.97.206') { + die(getIP() . '
    ' . $_SERVER['SERVER_ADDR']); + } -define('GAME',true); -setlocale(LC_CTYPE ,"ru_RU.CP1251"); +const GAME = true; +setlocale(LC_CTYPE, "ru_RU.CP1251"); include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); -include('_incl_data/class/__magic.php'); +$u = User::start(); // $sp = mysql_query('SELECT * FROM `battle` WHERE `otmorozok` = 1 AND `team_win` = -1 AND `otmorozok_use` = 0'); -while( $pl = mysql_fetch_array($sp) ) { - if( rand( 0 , 100 ) < 11 ) { - // - mysql_query('UPDATE `battle` SET `otmorozok_use` = 1 WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - // - $usr = mysql_fetch_array(mysql_query('SELECT `level`,`city` FROM `users` WHERE `battle` = "'.$pl['id'].'" ORDER BY `level` DESC LIMIT 1')); - $bot = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` LIKE "%Отморозок [%'.$usr['level'].'%]%" LIMIT 1')); - // - $tmr = rand(1,2); - // - $logins_bot = array(); - $bot = $u->addNewbot($bot['id'],NULL,NULL,$logins_bot,NULL); - $otmz = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `login` LIKE "%Отморозок (%" AND `battle` = "'.$pl['id'].'" LIMIT 1')); - // - $otmz[0]++; - // - mysql_query('UPDATE `users` SET `city` = "'.$usr['city'].'",`login` = "Отморозок ('.$otmz[0].')",`battle` = "'.$pl['id'].'" WHERE `id` = "'.$bot['id'].'" LIMIT 1'); - // - mysql_query('UPDATE `stats` SET `team` = "'.$tmr.'" WHERE `id` = "'.$bot['id'].'" LIMIT 1'); - // - $vtvl = '{tm1} {u1} вмешался в поединок. Хо! хо! хо!'; - $last_hod = mysql_fetch_array(mysql_query('SELECT `id_hod` FROM `battle_logs` WHERE `battle` = "'.$pl['id'].'" ORDER BY `id_hod` DESC LIMIT 1')); - $last_hod = $last_hod['id_hod']; - // - $mass = array( - 'time' => time(), - 'battle' => $pl['id'], - 'id_hod' => ($last_hod+1), - 'vars' => '||time1='.time().'||time2=0||s1=0||t1='.$tmr.'||login1=Отморозок ('.$otmz[0].')', - 'type' => 1 - ); - // - $ins = mysql_query('INSERT INTO `battle_logs` ( +while ($pl = mysql_fetch_array($sp)) { + if (rand(0, 100) < 11) { + // + mysql_query('UPDATE `battle` SET `otmorozok_use` = 1 WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + // + $usr = mysql_fetch_array( + mysql_query( + 'SELECT `level`,`city` FROM `users` WHERE `battle` = "' . $pl['id'] . '" ORDER BY `level` DESC LIMIT 1' + ) + ); + $bot = mysql_fetch_array( + mysql_query('SELECT * FROM `test_bot` WHERE `login` LIKE "%Отморозок [%' . $usr['level'] . '%]%" LIMIT 1') + ); + // + $tmr = rand(1, 2); + // + $logins_bot = []; + $bot = $u->addNewbot($bot['id'], null, null, $logins_bot, null); + $otmz = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(*) FROM `users` WHERE `login` LIKE "%Отморозок (%" AND `battle` = "' . $pl['id'] . '" LIMIT 1' + ) + ); + // + $otmz[0]++; + // + mysql_query( + 'UPDATE `users` SET `city` = "' . $usr['city'] . '",`login` = "Отморозок (' . $otmz[0] . ')",`battle` = "' . $pl['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1' + ); + // + mysql_query('UPDATE `stats` SET `team` = "' . $tmr . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); + // + $vtvl = '{tm1} {u1} вмешался в поединок. Хо! хо! хо!'; + $last_hod = mysql_fetch_array( + mysql_query( + 'SELECT `id_hod` FROM `battle_logs` WHERE `battle` = "' . $pl['id'] . '" ORDER BY `id_hod` DESC LIMIT 1' + ) + ); + $last_hod = $last_hod['id_hod']; + // + $mass = [ + 'time' => time(), + 'battle' => $pl['id'], + 'id_hod' => ($last_hod + 1), + 'vars' => '||time1=' . time() . '||time2=0||s1=0||t1=' . $tmr . '||login1=Отморозок (' . $otmz[0] . ')', + 'type' => 1, + ]; + // + $ins = mysql_query( + 'INSERT INTO `battle_logs` ( `time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type` ) VALUES ( - "'.$mass['time'].'", - "'.$mass['battle'].'", - "'.$mass['id_hod'].'", - "'.$vtvl.'", - "'.$mass['vars'].'", + "' . $mass['time'] . '", + "' . $mass['battle'] . '", + "' . $mass['id_hod'] . '", + "' . $vtvl . '", + "' . $mass['vars'] . '", "", "", "", "", - "'.$mass['type'].'" - )'); - } + "' . $mass['type'] . '" + )' + ); + } } -// - -die(); - -//Подаем турнир для 2-3 уровней -$inc = mysql_query('INSERT INTO `zayvki` ( - `arand`,`noatack`,`city`,`creator`,`type`,`time_start`,`timeout`,`min_lvl_1`,`min_lvl_2`,`max_lvl_1`,`max_lvl_2`,`noinc`,`razdel`,`time`,`fastfight`,`priz` -) VALUES ( - "1","1","capitalcity","0","0","300","120","2","2","3","3","1","5","'.time().'","1","1" -), ( - "1","1","capitalcity","0","0","300","120","4","4","6","6","1","5","'.time().'","1","1" -), ( - "1","1","capitalcity","0","0","300","120","7","7","7","7","1","5","'.time().'","1","1" -), ( - "1","1","capitalcity","0","0","300","120","8","8","8","8","1","5","'.time().'","1","1" -), ( - "1","1","capitalcity","0","0","300","120","9","9","9","9","1","5","'.time().'","1","1" -), ( - "1","1","capitalcity","0","0","300","120","10","10","10","10","1","5","'.time().'","1","1" -)'); - -if($inc) { - echo 'true'; -}else{ - echo 'false'; -} -?> \ No newline at end of file diff --git a/cron_vs.php b/cron_vs.php deleted file mode 100644 index cf1c3b39..00000000 --- a/cron_vs.php +++ /dev/null @@ -1,113 +0,0 @@ -'.$_SERVER['SERVER_ADDR']); - } -} - -echo '#start#'; -define('GAME',true); -setlocale(LC_CTYPE ,"ru_RU.CP1251"); -include('_incl_data/__config.php'); -include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); -include('_incl_data/class/__magic.php'); -// -$cfg = array( - 'H' => 17 //время старта по серверу -); -// -function send_chat($type,$from,$text,$time) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`login`,`to`,`type`,`new`,`time`,`room`) VALUES ("'.mysql_real_escape_string($text).'","capitalcity","'.mysql_real_escape_string($from).'","","'.$type.'","1","'.mysql_real_escape_string($time).'","3")'); - echo '[SEND_CHAT]'; -} -// -$bot1 = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "Мусорщик" LIMIT 1')); -$bot2 = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "Мироздатель" LIMIT 1')); -// -$st1 = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "'.$bot1['id'].'" LIMIT 1')); -$st2 = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "'.$bot2['id'].'" LIMIT 1')); -// -$td = mysql_fetch_array(mysql_query('SELECT * FROM `vs_stat` WHERE (`d` = "'.date('d').'" AND `m` = "'.date('m').'" AND `y` = "'.date('Y').'") OR `winner` = -1 ORDER BY `time` ASC LIMIT 1')); -// -if(!isset($td['id'])) { - //Создаем - $ins = mysql_query('INSERT INTO `vs_stat` ( - `time`,`d`,`m`,`y`,`act`,`type`,`uid` - ) VALUES ( - "'.time().'","'.date('d').'","'.date('m').'","'.date('Y').'","1","0","0" - )'); - // - if(!$ins) { - echo '#ERROR_INSERT_DATA#'; - }else{ - $td = mysql_fetch_array(mysql_query('SELECT * FROM `vs_stat` WHERE `d` = "'.date('d').'" AND `m` = "'.date('m').'" AND `y` = "'.date('Y').'" ORDER BY `time` LIMIT 1')); - } - // -} -if(isset($td['id'])) { - // - echo '#type'.$td['type'].'#'; - // - if( $td['type'] == 0 ) { - if( date('H') == $cfg['H'] ) { - send_chat(1,'','Бой бессмертных проходит на Центральной Площади, займите свою сторону в этой битве и получите награду за победу!',time()); - send_chat(1,'','Мусорщик: Что-то у меня душа, в последнее время, не на месте :vamp:',time()); - send_chat(1,'','Мироздатель:Я явился чтобы спасти этот мир :grace:',time()); - // - mysql_query('INSERT INTO `battle` ( - `city`,`time_start`,`timeout`,`type`,`noinc` - ) VALUES ( - "capitalcity","'.time().'","180","180","1" - )'); - // - $btl_id = mysql_insert_id(); - if( $btl_id > 0 ) { - // - mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'",`online` = "'.(time()+3600).'" WHERE `id` = "'.$bot1['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'",`online` = "'.(time()+3600).'" WHERE `id` = "'.$bot2['id'].'" LIMIT 1'); - // - mysql_query('UPDATE `stats` SET `hpNow` = "1000000",`mpNow` = "1000000",`team` = 1 WHERE `id` = "'.$bot1['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `hpNow` = "1000000",`mpNow` = "1000000",`team` = 2 WHERE `id` = "'.$bot2['id'].'" LIMIT 1'); - // - mysql_query('UPDATE `vs_stat` SET `type` = "1",`battle` = "'.$btl_id.'" WHERE `id` = "'.$td['id'].'" LIMIT 1'); - // - } - // - } - }elseif( $td['type'] == 1 ) { - // - $bt = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "'.$bot1['battle'].'" AND `id` = "'.$bot2['battle'].'" LIMIT 1')); - //// - mysql_query('UPDATE `users` SET `online` = "'.(time()+3600).'" WHERE `id` = "'.$bot1['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `online` = "'.(time()+3600).'" WHERE `id` = "'.$bot2['id'].'" LIMIT 1'); - // - if( $st1['bot'] != 2 ) { - mysql_query('UPDATE `stats` SET `bot` = "2" WHERE `id` = "'.$bot1['id'].'" LIMIT 1'); - } - if( $st2['bot'] != 2 ) { - mysql_query('UPDATE `stats` SET `bot` = "2" WHERE `id` = "'.$bot2['id'].'" LIMIT 1'); - } - // - if( $st1['hpNow'] < 1 || $st2['hpNow'] < 1 || $bot1['battle'] == 0 || $bot2['battle'] == 0 ) { - //Завершаем поединок, кто-то победил - - }else{ - //Бой идет, стены гнутся - - } - // - } - // -} -// -// -echo '#finish#'; -?> \ No newline at end of file diff --git a/cron_zv.php b/cron_zv.php index 5e9423c6..c11d7479 100644 --- a/cron_zv.php +++ b/cron_zv.php @@ -1,72 +1,44 @@ '.$_SERVER['SERVER_ADDR']); +if ($_SERVER['HTTP_CF_CONNECTING_IP'] != $_SERVER['SERVER_ADDR'] && $_SERVER['HTTP_CF_CONNECTING_IP'] != '127.0.0.1') { + die('Hello pussy!'); +} +if (getIPblock() != $_SERVER['SERVER_ADDR'] && getIPblock() != '127.0.0.1' && getIPblock() != '' && getIPblock() != '5.187.7.71') { + die(getIPblock() . '
    ' . $_SERVER['SERVER_ADDR']); } - -define('GAME',true); +const GAME = true; include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); -include('_incl_data/class/__zv.php'); +/**@var $pdo PDO */ +$zv = new FightRequest(); -function e($t) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #'.date('d.m.Y').' %'.date('H:i:s').' (Критическая ошибка): '.mysql_real_escape_string($t).'","capitalcity","LEL","6","1","-1")'); +function send_chat($type, $from, $text, $time) +{ + global $pdo; + $pdo->prepare('insert into chat (text, city, login, type, new, time, room) values (?,?,?,?,?,?,?)')->execute([$text, 'capitalcity', $from, $type, 1, $time, 3]); } -function send_chat($type,$from,$text,$time) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`login`,`to`,`type`,`new`,`time`,`room`) VALUES ("'.mysql_real_escape_string($text).'","capitalcity","'.mysql_real_escape_string($from).'","","'.$type.'","1","'.mysql_real_escape_string($time).'","3")'); +function inuser_go_btl($id) +{ + if (isset($id['id'])) { + echo file_get_contents('https://new-combats.com/jx/battle/refresh.php?uid=' . $id['id'] . '&cron_core=' . md5($id['id'] . '_brfCOreW@!_' . $id['pass']) . '&pass=' . $id['pass']); + echo '
    '; + } } -function inuser_go_btl($id) { - if(isset($id['id'])) { - echo file_get_contents('https://new-combats.com/jx/battle/refresh.php?uid='.$id['id'].'&cron_core='.md5($id['id'].'_brfCOreW@!_'.$id['pass']).'&pass='.$id['pass']); - echo '
    '; - } +$sp = $pdo->query('select id, pass from users where battle in (select id from battle where team_win = -1 and time_over = 0 and time_start < unix_timestamp() - 3600 limit 100)'); +foreach ($sp as $pl) { + inuser_go_btl($pl); } -// -$sp = mysql_query('SELECT `id`,`time_start` FROM `battle` WHERE `team_win` = "-1" AND `time_over` = "0" AND `time_start` < "'.(time()-3600).'" LIMIT 100'); -while($pl = mysql_fetch_array($sp)) { - $user1 = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `battle` = "'.$pl['id'].'" LIMIT 1')); - inuser_go_btl($user1); - //sleep(1); -} - -//Проверка боев -/* -$sp = mysql_query('SELECT `id`,`time_start` FROM `battle` WHERE `team_win` = -1'); -while( $pl = mysql_fetch_array($sp) ) { - $test = mysql_fetch_array(mysql_query('SELECT * FROM `battle_logs` WHERE `battle` = "'.$pl['id'].'" ORDER BY `id` DESC LIMIT 1')); - $end = 0; - if(!isset($test['id']) && $pl['time_start'] < time() - 3600 ) { - $end = 1; - }elseif( $test['time'] < time() - 3600 ) { - $end = 1; - } - e($pl['id']); - if( $end == 1 ) { - mysql_query('UPDATE `battle` SET `team_win` = "0" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `battle` = "0" WHERE `battle` = "'.$pl['id'].'" LIMIT 1'); - } -} -*/ - $zv->testCronZv(); -?> diff --git a/dn_editor.php b/dn_editor.php index 3f5779d0..ea9b547b 100644 --- a/dn_editor.php +++ b/dn_editor.php @@ -1,149 +1,164 @@ -Произошла ошибка

    Произошла ошибка:

    '.$e.'

    Назад


    (c) '.$c[1].'

    '); -} - +info['admin'] == 0) { - die(''); +if (!$u->info['admin']) { + die(''); } -if(isset($_GET['id'])) { - $_POST['id'] = (int)$_GET['id']; +if (isset($_GET['id'])) { + $_POST['id'] = (int)$_GET['id']; } -if(isset($_POST['id_dng'])) { - $id = (int)$_POST['id_dng']; - if($id > 0) { - $test_id = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "'.mysql_real_escape_string($id).'" LIMIT 1')); - if(!isset($test_id['id'])) { - unset($test_id); - } - }else{ - $id = 0; - } -}elseif(isset($_POST['id'])) { - $id = (int)$_POST['id']; - if($id > 0) { - $test_id = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "'.mysql_real_escape_string($id).'" LIMIT 1')); - if(!isset($test_id['id'])) { - unset($test_id); - } - }else{ - $id = 0; - } +if (isset($_POST['id_dng'])) { + $id = (int)$_POST['id_dng']; + if ($id > 0) { + $test_id = mysql_fetch_array( + mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "' . mysql_real_escape_string($id) . '" LIMIT 1') + ); + if (!isset($test_id['id'])) { + unset($test_id); + } + } else { + $id = 0; + } +} elseif (isset($_POST['id'])) { + $id = (int)$_POST['id']; + if ($id > 0) { + $test_id = mysql_fetch_array( + mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "' . mysql_real_escape_string($id) . '" LIMIT 1') + ); + if (!isset($test_id['id'])) { + unset($test_id); + } + } else { + $id = 0; + } } - $u->info['psevdo_x'] = 0; - $u->info['psevdo_y'] = 0; - $u->info['psevdo_s'] = 1; - - if(isset($_POST['x'])) { - $u->info['psevdo_x'] = (int)$_POST['x']; - $u->info['psevdo_y'] = (int)$_POST['y']; - $u->info['psevdo_s'] = (int)$_POST['s']; - } - - if(isset($_GET['x'])) { - $u->info['psevdo_x'] = (int)$_GET['x']; - $u->info['psevdo_y'] = (int)$_GET['y']; - $u->info['psevdo_s'] = (int)$_GET['s']; - } - -if(isset($_POST['saveObjPosition'])) { - echo 'START#'; - $_POST['saveObjPosition'] = str_replace('obj_true_','',$_POST['saveObjPosition']); - $_POST['saveObjPosition'] = floor((int)$_POST['saveObjPosition']); - $obj = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_obj` WHERE `id` = "'.mysql_real_escape_string($_POST['saveObjPosition']).'" LIMIT 1')); - if(isset($obj['id'])) { - $cor = array(0,0); - $data = explode(',',ltrim(rtrim($obj['date'],'\}'),'\{')); - $da = array(); - $i = 0; - while($i < count($data)) { - $data[$i] = explode(':',$data[$i]); - $da[$data[$i][0]] = $data[$i][1]; - echo '['.$data[$i][0].' = '.$data[$i][1].']'; - $i++; - } - $obj['top'] = 0; - $obj['left'] = 0; - $rs = (int)$_POST['rz']; - $da['rt'.$rs] = 0+$_POST['objy']; - $da['rl'.$rs] = 0+$_POST['objx']; - - $dak = array_keys($da); - $dav = $da; - $da = ''; - $i = 0; - while($i < count($dak)) { - $da .= $dak[$i].':'.$dav[$dak[$i]].','; - $i++; - } - $da = rtrim($da,','); - $da = '{'.$da.'}'; - $upd = mysql_query('UPDATE `dungeon_obj` SET `top` = "'.mysql_real_escape_string($obj['top']).'", `left` = "'.mysql_real_escape_string($obj['left']).'", `date` = "'.mysql_real_escape_string($da).'" WHERE `id` = "'.$obj['id'].'" LIMIT 1'); - if($upd) { - echo 'Данные успешно сохранены '.$da; - }else{ - echo '#!Ошибка'; - } - }else{ - echo '#Ошибка'; - } - die('#END'); -}elseif(isset($_POST['ore_id'])) { - $id = (int)$_POST['id_dng']; - echo '[START# '; - $_POST['ore_id'] = floor((int)$_POST['ore_id']); - $obj = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_obj` WHERE `id` = "'.mysql_real_escape_string($_POST['ore_id']).'" LIMIT 1')); - $_POST['ore_name'] = iconv("UTF-8", "cp1251",$_POST['ore_name']); - if(isset($obj['id'])) { - mysql_query('UPDATE `dungeon_obj` SET - `name` = "'.mysql_real_escape_string($_POST['ore_name']).'", - `img` = "'.mysql_real_escape_string($_POST['ore_img']).'", - `w` = "'.mysql_real_escape_string($_POST['ore_w']).'", - `h` = "'.mysql_real_escape_string($_POST['ore_h']).'", - `x` = "'.mysql_real_escape_string($_POST['ore_x']).'", - `y` = "'.mysql_real_escape_string($_POST['ore_y']).'", +$u->info['psevdo_x'] = 0; +$u->info['psevdo_y'] = 0; +$u->info['psevdo_s'] = 1; + +if (isset($_POST['x'])) { + $u->info['psevdo_x'] = (int)$_POST['x']; + $u->info['psevdo_y'] = (int)$_POST['y']; + $u->info['psevdo_s'] = (int)$_POST['s']; +} + +if (isset($_GET['x'])) { + $u->info['psevdo_x'] = (int)$_GET['x']; + $u->info['psevdo_y'] = (int)$_GET['y']; + $u->info['psevdo_s'] = (int)$_GET['s']; +} + +if (isset($_POST['saveObjPosition'])) { + echo 'START#'; + $_POST['saveObjPosition'] = str_replace('obj_true_', '', $_POST['saveObjPosition']); + $_POST['saveObjPosition'] = floor((int)$_POST['saveObjPosition']); + $obj = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `dungeon_obj` WHERE `id` = "' . mysql_real_escape_string( + $_POST['saveObjPosition'] + ) . '" LIMIT 1' + ) + ); + if (isset($obj['id'])) { + $cor = [0, 0]; + $data = explode(',', ltrim(rtrim($obj['date'], '\}'), '\{')); + $da = []; + $i = 0; + while ($i < count($data)) { + $data[$i] = explode(':', $data[$i]); + $da[$data[$i][0]] = $data[$i][1]; + echo '[' . $data[$i][0] . ' = ' . $data[$i][1] . ']'; + $i++; + } + $obj['top'] = 0; + $obj['left'] = 0; + $rs = (int)$_POST['rz']; + $da['rt' . $rs] = 0 + $_POST['objy']; + $da['rl' . $rs] = 0 + $_POST['objx']; + + $dak = array_keys($da); + $dav = $da; + $da = ''; + $i = 0; + while ($i < count($dak)) { + $da .= $dak[$i] . ':' . $dav[$dak[$i]] . ','; + $i++; + } + $da = rtrim($da, ','); + $da = '{' . $da . '}'; + $upd = mysql_query( + 'UPDATE `dungeon_obj` SET `top` = "' . mysql_real_escape_string( + $obj['top'] + ) . '", `left` = "' . mysql_real_escape_string($obj['left']) . '", `date` = "' . mysql_real_escape_string( + $da + ) . '" WHERE `id` = "' . $obj['id'] . '" LIMIT 1' + ); + if ($upd) { + echo 'Данные успешно сохранены ' . $da; + } else { + echo '#!Ошибка'; + } + } else { + echo '#Ошибка'; + } + die('#END'); +} elseif (isset($_POST['ore_id'])) { + $id = (int)$_POST['id_dng']; + echo '[START# '; + $_POST['ore_id'] = floor((int)$_POST['ore_id']); + $obj = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `dungeon_obj` WHERE `id` = "' . mysql_real_escape_string($_POST['ore_id']) . '" LIMIT 1' + ) + ); + $_POST['ore_name'] = iconv("UTF-8", "cp1251", $_POST['ore_name']); + if (isset($obj['id'])) { + mysql_query( + 'UPDATE `dungeon_obj` SET + `name` = "' . mysql_real_escape_string($_POST['ore_name']) . '", + `img` = "' . mysql_real_escape_string($_POST['ore_img']) . '", + `w` = "' . mysql_real_escape_string($_POST['ore_w']) . '", + `h` = "' . mysql_real_escape_string($_POST['ore_h']) . '", + `x` = "' . mysql_real_escape_string($_POST['ore_x']) . '", + `y` = "' . mysql_real_escape_string($_POST['ore_y']) . '", - `type2` = "'.mysql_real_escape_string($_POST['ore_type2']).'", - `s` = "'.mysql_real_escape_string($_POST['ore_s']).'", - `s2` = "'.mysql_real_escape_string($_POST['ore_s2']).'", - `os1` = "'.mysql_real_escape_string($_POST['ore_os1']).'", - `os2` = "'.mysql_real_escape_string($_POST['ore_os2']).'", - `os3` = "'.mysql_real_escape_string($_POST['ore_os3']).'", - `os4` = "'.mysql_real_escape_string($_POST['ore_os4']).'", - `fix_x_y` = "'.mysql_real_escape_string($_POST['ore_fix_x_y']).'", + `type2` = "' . mysql_real_escape_string($_POST['ore_type2']) . '", + `s` = "' . mysql_real_escape_string($_POST['ore_s']) . '", + `s2` = "' . mysql_real_escape_string($_POST['ore_s2']) . '", + `os1` = "' . mysql_real_escape_string($_POST['ore_os1']) . '", + `os2` = "' . mysql_real_escape_string($_POST['ore_os2']) . '", + `os3` = "' . mysql_real_escape_string($_POST['ore_os3']) . '", + `os4` = "' . mysql_real_escape_string($_POST['ore_os4']) . '", + `fix_x_y` = "' . mysql_real_escape_string($_POST['ore_fix_x_y']) . '", - `type` = "'.mysql_real_escape_string($_POST['ore_type']).'" WHERE `id` = "'.$obj['id'].'" LIMIT 1 - '); - echo 'Данные сохранены'; - }else{ - //создаем обьект - /* + `type` = "' . mysql_real_escape_string($_POST['ore_type']) . '" WHERE `id` = "' . $obj['id'] . '" LIMIT 1 + ' + ); + echo 'Данные сохранены'; + } else { + //создаем обьект + /* $('#ore_id').val(op[0]); $('#ore_img').val(op[4]); $('#ore_name').val(op[1]); @@ -154,1017 +169,1294 @@ if(isset($_POST['saveObjPosition'])) { $('#ore_w').val(op[7]); $('#ore_h').val(op[8]); */ - if(isset($_POST['ore_img'])) { - echo 'Объект создан'; - if(mysql_query('INSERT INTO `dungeon_obj` (`for_dn`,`name`,`img`,`w`,`h`,`x`,`y`,`type2`,`s`,`s2`,`os1`,`os2`,`os3`,`os4`,`fix_x_y`,`type`,`date`) VALUES ( - "'.mysql_real_escape_string($id).'", - "'.mysql_real_escape_string($_POST['ore_name']).'", - "'.mysql_real_escape_string($_POST['ore_img']).'", - "'.mysql_real_escape_string($_POST['ore_w']).'", - "'.mysql_real_escape_string($_POST['ore_h']).'", - "'.mysql_real_escape_string($_POST['ore_x']).'", - "'.mysql_real_escape_string($_POST['ore_y']).'", - "'.mysql_real_escape_string($_POST['ore_type2']).'", - "'.mysql_real_escape_string($_POST['ore_s']).'", - "'.mysql_real_escape_string($_POST['ore_s2']).'", - "'.mysql_real_escape_string($_POST['ore_os1']).'", - "'.mysql_real_escape_string($_POST['ore_os2']).'", - "'.mysql_real_escape_string($_POST['ore_os3']).'", - "'.mysql_real_escape_string($_POST['ore_os4']).'", - "'.mysql_real_escape_string($_POST['ore_fix_x_y']).'", - "'.mysql_real_escape_string($_POST['ore_type']).'", + if (isset($_POST['ore_img'])) { + echo 'Объект создан'; + if (mysql_query( + 'INSERT INTO `dungeon_obj` (`for_dn`,`name`,`img`,`w`,`h`,`x`,`y`,`type2`,`s`,`s2`,`os1`,`os2`,`os3`,`os4`,`fix_x_y`,`type`,`date`) VALUES ( + "' . mysql_real_escape_string($id) . '", + "' . mysql_real_escape_string($_POST['ore_name']) . '", + "' . mysql_real_escape_string($_POST['ore_img']) . '", + "' . mysql_real_escape_string($_POST['ore_w']) . '", + "' . mysql_real_escape_string($_POST['ore_h']) . '", + "' . mysql_real_escape_string($_POST['ore_x']) . '", + "' . mysql_real_escape_string($_POST['ore_y']) . '", + "' . mysql_real_escape_string($_POST['ore_type2']) . '", + "' . mysql_real_escape_string($_POST['ore_s']) . '", + "' . mysql_real_escape_string($_POST['ore_s2']) . '", + "' . mysql_real_escape_string($_POST['ore_os1']) . '", + "' . mysql_real_escape_string($_POST['ore_os2']) . '", + "' . mysql_real_escape_string($_POST['ore_os3']) . '", + "' . mysql_real_escape_string($_POST['ore_os4']) . '", + "' . mysql_real_escape_string($_POST['ore_fix_x_y']) . '", + "' . mysql_real_escape_string($_POST['ore_type']) . '", "{use:\'takeit\'}" - )')) { - echo '+'; - }else{ - echo '-'; - } - } - } - die(' #END]'); -}elseif(isset($_POST['ore_delete_id'])) { - mysql_query('UPDATE `dungeon_obj` SET `delete` = "'.$u->info['id'].'",`for_dn` = "'.time().'" WHERE `id` = "'.mysql_real_escape_string($_POST['ore_delete_id']).'" LIMIT 1'); - die('[START# Объект удален #END]'); + )' + )) { + echo '+'; + } else { + echo '-'; + } + } + } + die(' #END]'); +} elseif (isset($_POST['ore_delete_id'])) { + mysql_query( + 'UPDATE `dungeon_obj` SET `delete` = "' . $u->info['id'] . '",`for_dn` = "' . time( + ) . '" WHERE `id` = "' . mysql_real_escape_string($_POST['ore_delete_id']) . '" LIMIT 1' + ); + die('[START# Объект удален #END]'); } -if($id > 0) { - //работа с пещерой - $pd = array( - 1 =>0, - 2 =>0, - 3 =>0, - 4 =>0, - 5 =>0, - 6 =>0, - 7 =>0, - 8 =>0, - 9 =>0, //передняя стенка, в 2-х шагах - 10=>0, - 11=>0, - 12=>0, - 13=>0, - 14=>0, - 15=>0, - 16=>0, - 17=>0, - 18=>0, - 19=>0, - 20=>0, - 21=>0, - 22=>0, - 23=>0, - /* Растояние: 1 шаг */ - 24=>0, //стена прямо слева от персонажа (1) - 25=>0, //стена прямо справа от персонажа (1) - 26=>0, //стена прямо перед персонажем (1) - 27=>0, //стена слева от персонажа (1) - 28=>0 //стена справа от персонажа (1) - ); - - include('dn_editor_class.php'); - - $d->point = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "'.$d->info['id2'].'" AND `x` = "'.$u->info['x'].'" AND `y` ="'.$u->info['y'].'" LIMIT 1')); - if(!isset($d->point['id'])) - { - $d->point['css'] = 'css'; - } +if ($id > 0) { + //работа с пещерой + $pd = [ + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 0, + 9 => 0, //передняя стенка, в 2-х шагах + 10 => 0, + 11 => 0, + 12 => 0, + 13 => 0, + 14 => 0, + 15 => 0, + 16 => 0, + 17 => 0, + 18 => 0, + 19 => 0, + 20 => 0, + 21 => 0, + 22 => 0, + 23 => 0, + /* Растояние: 1 шаг */ + 24 => 0, //стена прямо слева от персонажа (1) + 25 => 0, //стена прямо справа от персонажа (1) + 26 => 0, //стена прямо перед персонажем (1) + 27 => 0, //стена слева от персонажа (1) + 28 => 0 //стена справа от персонажа (1) + ]; + + $d = new DungeonEditor(); + $d->start(); + + $d->point = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `dungeon_map` WHERE `id_dng` = "' . $d->info['id2'] . '" AND `x` = "' . $u->info['x'] . '" AND `y` ="' . $u->info['y'] . '" LIMIT 1' + ) + ); + if (!isset($d->point['id'])) { + $d->point['css'] = 'css'; + } } -if(!isset($_GET['look'])) { +if (!isset($_GET['look'])) { ?> - -Визуальный редактор Лабиринтов © new-combats.com + + Визуальный редактор Лабиринтов © new-combats.com - - - - - + + + + + - + -'; }else{ ?> -function genMap(){ - var i = 0, m = false, mz = false; - while(i=1) - { - if(zfloor0[i]!='') - { - document.getElementById('Floor0').innerHTML += zfloor0[i]; - } - i--; - } -} -var dConfig={ - 2:{ - 1:{'top':50,'left':140,'w':80,'h':147}, - 2:{'top':45,'left':87,'w':80,'h':147}, - 3:{'top':45,'left':192,'w':80,'h':147}, - 4:{'top':49,'left':165,'w':80,'h':147}, - 5:{'top':49,'left':105,'w':80,'h':147}, - 6:{'top':53,'left':140,'w':80,'h':147}, - 7:{'top':53,'left':87,'w':80,'h':147}, - 8:{'top':53,'left':190,'w':80,'h':147} - }, - 3:{ - 1:{'top':60,'left':152,'w':53,'h':97}, - 2:{'top':58,'left':110,'w':53,'h':97}, - 3:{'top':58,'left':188,'w':53,'h':97}, - 4:{'top':61,'left':168,'w':53,'h':97}, - 5:{'top':61,'left':128,'w':53,'h':97}, - 6:{'top':62,'left':153,'w':53,'h':97}, - 7:{'top':62,'left':113,'w':53,'h':97}, - 8:{'top':62,'left':193,'w':53,'h':97}}, - 4:{ - 1:{'top':70,'left':158,'w':35,'h':64}, - 2:{'top':68,'left':125,'w':35,'h':64}, - 3:{'top':68,'left':193,'w':35,'h':64}, - 4:{'top':71,'left':173,'w':35,'h':64}, - 5:{'top':71,'left':137,'w':35,'h':64}, - 6:{'top':73,'left':158,'w':35,'h':64}, - 7:{'top':73,'left':129,'w':35,'h':64}, - 8:{'top':73,'left':193,'w':35,'h':64} - } -} -var dConfigObj = { - 1: { - 0: { - 'top':65, - 'left':110, - 'w':1, - 'h':1 - } - } - ,2: { - 0: { - 'top':65, - 'left':110, - 'w':0.65, - 'h':0.65 - } - }, - 3: { - 0: { - 'top':65, - 'left':110, - 'w':0.48, - 'h':0.48 - } - }, - 4: { - 0: { - 'top':65, - 'left':110, - 'w':0.35, - 'h':0.35 - } - } -} -var prob = { - 0: { - 1:1, - 2:0.25, - 3:-0.10, - 4:-0.38 - }, - 1: { - 1:0.90, - 2:0.50, - 3:0.23, - 4:0.05 - } -}; - -function addObj(v,mz,iii){ - var r = ''; - //355*245 window - var rz = 0; //растояние до пользователя - if(v[2]>=1 && v[2]<=3) { rz = 1; } - if(v[2]>=4 && v[2]<=6) { rz = 2; } - if(v[2]>=7 && v[2]<=9) { rz = 3; } - if(v[2]>=10 && v[2]<=14) { rz = 4; } - if(v[2]>=15 && v[2]<=19) { rz = 5; } - if(v[5]==dsee) { rz -= 1; } - if(dConfigObj[rz]!=undefined && dConfigObj[rz][v[6]]!=undefined) { - new_w = v[7]*dConfigObj[rz][v[6]]['w']; - new_h = v[8]*dConfigObj[rz][v[6]]['h']; - new_left = dConfigObj[rz][v[6]]['left']-Math.round((v[7]*prob[0][rz])/4); - new_top = dConfigObj[rz][v[6]]['top']-Math.round((v[8]*prob[1][rz])/4); - if(v[2]==6) { new_left += 195; new_top -= 5; } - if(v[2]==4) { new_left -= 195; new_top -= 5; } - if( v[2]==9) { new_left -= 140; new_top -= 2; } - if( v[2]==7){ new_left += 140; new_top -= 2; } - if( v[2]==13){ new_left += 100; new_top -= 1; } - if( v[2]==11){ new_left -= 100; new_top -= 0; } - if( v[9]!=0){ new_left += Math.round(new_left/(100+(rz-1)*10)*v[9]+rz*0.25); } - if( v[10]!=0){ new_top += Math.round(new_h/2+new_top/(100+(rz-1)*50)*v[10]-rz*3.3); } - if( rz == 4 ){ new_top += 3; } - if( v[11] != 0 ) { - if(v[11]['t'+rz]!=undefined) { new_top += v[11]['t'+rz]; } - if(v[11]['l'+rz]!=undefined) { new_left += v[11]['l'+rz]; } - if(v[11]['w'+rz]!=undefined) { new_w += v[11]['w'+rz]; } - if(v[11]['h'+rz]!=undefined) { new_h += v[11]['h'+rz]; } - if(v[11]['rt'+rz]!=undefined) { new_top = v[11]['rt'+rz]; } - if(v[11]['rl'+rz]!=undefined) { new_left = v[11]['rl'+rz]; } - } - ////i:{0:id,1:name,2:mapPoint,3:action,4:img,5:type}, - if( rz >= 1 && rz <= 2 ) { - actionNow = ''; - if( v[11]['use'] != undefined ) { - if( v[11]['use'] == 'exit' ) { - actionNow = 'alert(\'Выход из подземелья\');'; - } else if( v[11]['use'] == 'takeit' ) { - actionNow = 'location=\'main.php?take_obj='+v[0]+'&rnd='+0.28626200682069150+'\';'; - } - } - zfloor0[rz] = ''+zfloor0[rz]; - } else { - zfloor0[rz] = ''+zfloor0[rz]; - } - r = ''; - } - return r; -} -function addUser(v,mz) { - var r = ''; - var rz = 0; //растояние до пользователя - if(v[2]>=1 && v[2]<=3){ rz = 1; } - if(v[2]>=4 && v[2]<=6){ rz = 2; } - if(v[2]>=7 && v[2]<=9){ rz = 3; } - if(v[2]>=10 && v[2]<=14){ rz = 4; } - if(v[2]>=15 && v[2]<=19){ rz = 5; } - if(dConfig[rz]!=undefined && dConfig[rz][v[6]]!=undefined) { - new_w = dConfig[rz][v[6]]['w']; - new_h = dConfig[rz][v[6]]['h']; - new_left = dConfig[rz][v[6]]['left']; - new_top = dConfig[rz][v[6]]['top']; - if(v[2]==6) { new_left += 215; new_top -= 5; } - if(v[2]==4) { new_left -= 215; new_top -= 5; } - if(v[2]==9) { new_left -= 155; new_top -= 2; } - if(v[2]==7) { new_left += 155; new_top -= 2; } - if(v[2]==13) { new_left += 115; new_top -= 1; } - if(v[2]==11) { new_left -= 115; new_top -= 1; } - if(v[2]>=11 && v[2]<=13) { new_top += 5; } - if(rz>=1 && rz<=2) { - action = ''; - if( v[5]=='bot' || 0 > 0 ) { action = 'dialogMenu('+v[0]+',1,'+v[7]+',0,0,event);'; } - zfloor0[rz] += ''; - } else { - zfloor0[rz] += ''; - } - r = ''; - } - return r; -} -speedLoc = 0; -sLoc1 = 0; -sLoc2 = 0; -tgo = 0; -tgol = 0; -gotoup777 = 0; -gotext777 = ''; -function cancelgoto() { - document.getElementById('gotext777').innerHTML = ''; - gotoup777 = 0; - gotext777 = ''; -} -function goToLoca(id,ttl) { - if(tgo < 1) { - location = 'main.php?go='+id; - }else{ - gotoup777 = id; - gotext777 = ttl; - } -} -function locGoLineDng() -{ - var line = document.getElementById('pline1'); - if(line!=undefined) - { - - prc = 100-Math.floor(tgo/tgol*100); - sLoc1 = 108/100*prc; - if(sLoc1<1) - { - sLoc1 = 1; - } - - if(sLoc1>108) - { - sLoc1 = 108; - } - - line.style.width = sLoc1+'px'; - if(tgo>0) - { - tgo -= 1; - setTimeout('locGoLineDng()',100); - }else{ - if(gotoup777 > 0) { - location = "main.php?go="+gotoup777; - } - } - if(gotoup777 > 0 && gotext777 != '' && document.getElementById('gotext777').innerHTML != 'Вы перейдете '+gotext777+' (отмена)') { - //document.getElementById('gotext777').style.display = 'block'; - document.getElementById('gotext777').innerHTML = 'Вы перейдете '+gotext777+' (отмена)'; - }else if(document.getElementById('gotext777').innerHTML != '' && gotoup777 == 0 && gotext777 == '') { - //document.getElementById('gotext777').style.display = 'none'; - document.getElementById('gotext777').innerHTML = ''; - } - } -} + var obi = { + 'obj': 0, + 'w': 0, + 'h': 0, + 't': 0, + 'l': 0, + 'position': 0, + 'val': 0 + }; + } - + var sel_id = 0, sel_x = 0, sel_y = 0, sel_s = 1; - + $('#dngseemap').html(''); + + if (top.sel_s < 1) { + top.sel_s = 4; + } + + if (top.sel_s > 4) { + top.sel_s = 1; + } + + if (top.sel_id > 0) { + $('#px_' + top.sel_id).css({'background-color': ''}); + $('#px_' + top.sel_id).attr({'className': 'cq'}); + } + + $('#px_' + id).css({'background-color': '#ffd5d5'}); + + top.obi = { + 'obj': 0, + 'w': 0, + 'h': 0, + 't': 0, + 'l': 0, + 'position': 0, + 'val': 0 + }; + + top.sel_id = id; + top.sel_x = x; + top.sel_y = y; + + $('#fm1').attr("src", "dn_editor_bots.php?id_dn=&xx=" + x + "&&yy=" + y + ""); + $.post('dn_editor.php?look=1', {id: , id_p: id, x: x, y: y, s: top.sel_s}, function (data) { + $('#dngseemap').html(data); + }); + } + + function dialogMenu(id, atk, talk, look, take, e) { + var d = document.getElementById('deMenu'); + if (d != undefined) { + if (e == undefined) { + e = window.e; + + } + d.innerHTML = ''; + var t = ''; + if (talk > 0) { + t += 'Диалог
    '; + } + if (atk == 1) { + t += 'Напасть
    '; + } + if (look == 1) { + t += 'Просмотр
    '; + } + if (take == 1) { + t += 'Поднять
    '; + } + d.innerHTML = t + ''; + d.style.display = ''; + if (e.x == undefined) { + e.x = e.clientX; + e.y = e.clientY; + } + d.style.top = e.y + 'px'; + if (e.x > 320) { + d.style.right = (document.body.offsetWidth - e.x) + 'px'; + } else { + d.style.right = (-e.x + 540) + 'px'; + } + } + } + + function exitDem() { + var d = document.getElementById('deMenu'); + if (d != undefined) { + d.innerHTML = ''; + d.style.display = 'none'; + d.style.top = '0px'; + d.style.right = '0px'; + } + } + + 0) { ?> + '; + } if (!isset($_GET['look'])) { + echo 'var'; + }?> objects = {}; + //i:{id,login,mapPoint,sex,obraz,type,users_p}, + users = {}; + objs = {genObjects(); ?>}; + items = {}; + actions = {}; + dsee = gs; ?>; + mapp = { + 1: '0_0f', 2: '0_0f', 3: '0_0f', 4: '1_1f', 5: '1_1f', 6: '1_1f' + , 7: '2_1f', 8: '2_1f', 9: '2_1f' + , 11: '3_1l', 12: '3_1f', 13: '3_1r' + } + zmap = {5: 894, 8: 0, 12: 0} + zfloor0 = {1: '', 2: '', 3: '', 4: '', 5: ''}; + '; + }else{ ?> + function genMap() { + var i = 0, m = false, mz = false; + while (i < users['count']) { + if (users[i] != undefined) { + mz = mapp[users[i][2]]; + if (document.getElementById(mz) != undefined) { + m = document.getElementById(mz); + m.innerHTML = addUser(users[i], mz) + m.innerHTML; + } + } + i++; + } + var i = 0, m = false, mz = false; + while (i < objs['count']) { + if (objs[i] != undefined) { + mz = mapp[objs[i][2]]; + if (objs[i][5] == dsee && (objs[i][2] == 5 || objs[i][2] == 2 || objs[i][2] == 8 || objs[i][2] == 12 || objs[i][2] == 15)) { + mz = mapp[objs[i][2] - 3]; + } + if (document.getElementById(mz) != undefined) { + m = document.getElementById(mz); + m.innerHTML = addObj(objs[i], mz, i) + m.innerHTML; + } + } + i++; + } + var i = 5; + while (i >= 1) { + if (zfloor0[i] != '') { + document.getElementById('Floor0').innerHTML += zfloor0[i]; + } + i--; + } + } + + var dConfig = { + 2: { + 1: {'top': 50, 'left': 140, 'w': 80, 'h': 147}, + 2: {'top': 45, 'left': 87, 'w': 80, 'h': 147}, + 3: {'top': 45, 'left': 192, 'w': 80, 'h': 147}, + 4: {'top': 49, 'left': 165, 'w': 80, 'h': 147}, + 5: {'top': 49, 'left': 105, 'w': 80, 'h': 147}, + 6: {'top': 53, 'left': 140, 'w': 80, 'h': 147}, + 7: {'top': 53, 'left': 87, 'w': 80, 'h': 147}, + 8: {'top': 53, 'left': 190, 'w': 80, 'h': 147} + }, + 3: { + 1: {'top': 60, 'left': 152, 'w': 53, 'h': 97}, + 2: {'top': 58, 'left': 110, 'w': 53, 'h': 97}, + 3: {'top': 58, 'left': 188, 'w': 53, 'h': 97}, + 4: {'top': 61, 'left': 168, 'w': 53, 'h': 97}, + 5: {'top': 61, 'left': 128, 'w': 53, 'h': 97}, + 6: {'top': 62, 'left': 153, 'w': 53, 'h': 97}, + 7: {'top': 62, 'left': 113, 'w': 53, 'h': 97}, + 8: {'top': 62, 'left': 193, 'w': 53, 'h': 97} + }, + 4: { + 1: {'top': 70, 'left': 158, 'w': 35, 'h': 64}, + 2: {'top': 68, 'left': 125, 'w': 35, 'h': 64}, + 3: {'top': 68, 'left': 193, 'w': 35, 'h': 64}, + 4: {'top': 71, 'left': 173, 'w': 35, 'h': 64}, + 5: {'top': 71, 'left': 137, 'w': 35, 'h': 64}, + 6: {'top': 73, 'left': 158, 'w': 35, 'h': 64}, + 7: {'top': 73, 'left': 129, 'w': 35, 'h': 64}, + 8: {'top': 73, 'left': 193, 'w': 35, 'h': 64} + } + } + var dConfigObj = { + 1: { + 0: { + 'top': 65, + 'left': 110, + 'w': 1, + 'h': 1 + } + } + , 2: { + 0: { + 'top': 65, + 'left': 110, + 'w': 0.65, + 'h': 0.65 + } + }, + 3: { + 0: { + 'top': 65, + 'left': 110, + 'w': 0.48, + 'h': 0.48 + } + }, + 4: { + 0: { + 'top': 65, + 'left': 110, + 'w': 0.35, + 'h': 0.35 + } + } + } + var prob = { + 0: { + 1: 1, + 2: 0.25, + 3: -0.10, + 4: -0.38 + }, + 1: { + 1: 0.90, + 2: 0.50, + 3: 0.23, + 4: 0.05 + } + }; + + function addObj(v, mz, iii) { + var r = ''; + //355*245 window + var rz = 0; //растояние до пользователя + if (v[2] >= 1 && v[2] <= 3) { + rz = 1; + } + if (v[2] >= 4 && v[2] <= 6) { + rz = 2; + } + if (v[2] >= 7 && v[2] <= 9) { + rz = 3; + } + if (v[2] >= 10 && v[2] <= 14) { + rz = 4; + } + if (v[2] >= 15 && v[2] <= 19) { + rz = 5; + } + if (v[5] == dsee) { + rz -= 1; + } + if (dConfigObj[rz] != undefined && dConfigObj[rz][v[6]] != undefined) { + new_w = v[7] * dConfigObj[rz][v[6]]['w']; + new_h = v[8] * dConfigObj[rz][v[6]]['h']; + new_left = dConfigObj[rz][v[6]]['left'] - Math.round((v[7] * prob[0][rz]) / 4); + new_top = dConfigObj[rz][v[6]]['top'] - Math.round((v[8] * prob[1][rz]) / 4); + if (v[2] == 6) { + new_left += 195; + new_top -= 5; + } + if (v[2] == 4) { + new_left -= 195; + new_top -= 5; + } + if (v[2] == 9) { + new_left -= 140; + new_top -= 2; + } + if (v[2] == 7) { + new_left += 140; + new_top -= 2; + } + if (v[2] == 13) { + new_left += 100; + new_top -= 1; + } + if (v[2] == 11) { + new_left -= 100; + new_top -= 0; + } + if (v[9] != 0) { + new_left += Math.round(new_left / (100 + (rz - 1) * 10) * v[9] + rz * 0.25); + } + if (v[10] != 0) { + new_top += Math.round(new_h / 2 + new_top / (100 + (rz - 1) * 50) * v[10] - rz * 3.3); + } + if (rz == 4) { + new_top += 3; + } + if (v[11] != 0) { + if (v[11]['t' + rz] != undefined) { + new_top += v[11]['t' + rz]; + } + if (v[11]['l' + rz] != undefined) { + new_left += v[11]['l' + rz]; + } + if (v[11]['w' + rz] != undefined) { + new_w += v[11]['w' + rz]; + } + if (v[11]['h' + rz] != undefined) { + new_h += v[11]['h' + rz]; + } + if (v[11]['rt' + rz] != undefined) { + new_top = v[11]['rt' + rz]; + } + if (v[11]['rl' + rz] != undefined) { + new_left = v[11]['rl' + rz]; + } + } + ////i:{0:id,1:name,2:mapPoint,3:action,4:img,5:type}, + if (rz >= 1 && rz <= 2) { + actionNow = ''; + if (v[11]['use'] != undefined) { + if (v[11]['use'] == 'exit') { + actionNow = 'alert(\'Выход из подземелья\');'; + } else if (v[11]['use'] == 'takeit') { + actionNow = 'location=\'main.php?take_obj=' + v[0] + '&rnd=' + 0.28626200682069150 + '\';'; + } + } + zfloor0[rz] = '' + zfloor0[rz]; + } else { + zfloor0[rz] = '' + zfloor0[rz]; + } + r = ''; + } + return r; + } + + function addUser(v, mz) { + var r = ''; + var rz = 0; //растояние до пользователя + if (v[2] >= 1 && v[2] <= 3) { + rz = 1; + } + if (v[2] >= 4 && v[2] <= 6) { + rz = 2; + } + if (v[2] >= 7 && v[2] <= 9) { + rz = 3; + } + if (v[2] >= 10 && v[2] <= 14) { + rz = 4; + } + if (v[2] >= 15 && v[2] <= 19) { + rz = 5; + } + if (dConfig[rz] != undefined && dConfig[rz][v[6]] != undefined) { + new_w = dConfig[rz][v[6]]['w']; + new_h = dConfig[rz][v[6]]['h']; + new_left = dConfig[rz][v[6]]['left']; + new_top = dConfig[rz][v[6]]['top']; + if (v[2] == 6) { + new_left += 215; + new_top -= 5; + } + if (v[2] == 4) { + new_left -= 215; + new_top -= 5; + } + if (v[2] == 9) { + new_left -= 155; + new_top -= 2; + } + if (v[2] == 7) { + new_left += 155; + new_top -= 2; + } + if (v[2] == 13) { + new_left += 115; + new_top -= 1; + } + if (v[2] == 11) { + new_left -= 115; + new_top -= 1; + } + if (v[2] >= 11 && v[2] <= 13) { + new_top += 5; + } + if (rz >= 1 && rz <= 2) { + action = ''; + if (v[5] == 'bot' || 0 > 0) { + action = 'dialogMenu(' + v[0] + ',1,' + v[7] + ',0,0,event);'; + } + zfloor0[rz] += ''; + } else { + zfloor0[rz] += ''; + } + r = ''; + } + return r; + } + + speedLoc = 0; + sLoc1 = 0; + sLoc2 = 0; + tgo = 0; + tgol = 0; + gotoup777 = 0; + gotext777 = ''; + + function cancelgoto() { + document.getElementById('gotext777').innerHTML = ''; + gotoup777 = 0; + gotext777 = ''; + } + + function goToLoca(id, ttl) { + if (tgo < 1) { + location = 'main.php?go=' + id; + } else { + gotoup777 = id; + gotext777 = ttl; + } + } + + function locGoLineDng() { + var line = document.getElementById('pline1'); + if (line != undefined) { + + prc = 100 - Math.floor(tgo / tgol * 100); + sLoc1 = 108 / 100 * prc; + if (sLoc1 < 1) { + sLoc1 = 1; + } + + if (sLoc1 > 108) { + sLoc1 = 108; + } + + line.style.width = sLoc1 + 'px'; + if (tgo > 0) { + tgo -= 1; + setTimeout('locGoLineDng()', 100); + } else { + if (gotoup777 > 0) { + location = "main.php?go=" + gotoup777; + } + } + if (gotoup777 > 0 && gotext777 != '' && document.getElementById('gotext777').innerHTML != 'Вы перейдете ' + gotext777 + ' (отмена)') { + //document.getElementById('gotext777').style.display = 'block'; + document.getElementById('gotext777').innerHTML = 'Вы перейдете ' + gotext777 + ' (отмена)'; + } else if (document.getElementById('gotext777').innerHTML != '' && gotoup777 == 0 && gotext777 == '') { + //document.getElementById('gotext777').style.display = 'none'; + document.getElementById('gotext777').innerHTML = ''; + } + } + } + + + + + - - - - - - +
    -
    -
    -   Пещера#   - - -
    -
    -
    -
    - - - + - + + - - -
    - - Редактировать ботов - - - -
    - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - info['admin']==0){ ?> -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - -
    +
    +
    +
    +   Пещера#   + + +
    +
    - - -
    - - - +
    + + + + + + +
    + + Редактировать ботов + + + +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + info['admin'] == 0){ ?> +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    + + + + +
    + + + + +
    +



    Пещера не существует
    '; + } else { + //Пещера существует + $min_x = mysql_fetch_array( + mysql_query( + 'SELECT `x` FROM `dungeon_map` WHERE `id_dng` = "' . mysql_real_escape_string( + $id + ) . '" ORDER BY `x` ASC LIMIT 1' + ) + ); + $max_x = mysql_fetch_array( + mysql_query( + 'SELECT `x` FROM `dungeon_map` WHERE `id_dng` = "' . mysql_real_escape_string( + $id + ) . '" ORDER BY `x` DESC LIMIT 1' + ) + ); + $min_y = mysql_fetch_array( + mysql_query( + 'SELECT `y` FROM `dungeon_map` WHERE `id_dng` = "' . mysql_real_escape_string( + $id + ) . '" ORDER BY `y` ASC LIMIT 1' + ) + ); + $max_y = mysql_fetch_array( + mysql_query( + 'SELECT `y` FROM `dungeon_map` WHERE `id_dng` = "' . mysql_real_escape_string( + $id + ) . '" ORDER BY `y` DESC LIMIT 1' + ) + ); + + $min_x = $min_x[0]; + $max_x = $max_x[0]; + $min_y = $min_y[0]; + $max_y = $max_y[0]; + + $map = []; + $stl = []; + + $sp = mysql_query( + 'SELECT * FROM `dungeon_map` WHERE `id_dng` = "' . mysql_real_escape_string( + $id + ) . '" AND `x` >= ' . $min_x . ' AND `x` <= ' . $max_x . ' AND `y` >= ' . $min_y . ' AND `y` <= ' . $max_y . '' + ); + while ($pl = mysql_fetch_array($sp)) { + $style = 'vertical-align:bottom;'; + + if ($pl['st'][2] == 1) { + $style .= 'border-bottom:1px solid #6e6e6e;'; + } else { + $style .= 'padding-bottom:1px;'; + } + if ($pl['st'][1] == 1) { + $style .= 'border-left:1px solid #6e6e6e;'; + } else { + $style .= 'padding-left:1px;'; + } + if ($pl['st'][0] == 1) { + $style .= 'border-top:1px solid #6e6e6e;'; + } else { + $style .= 'padding-top:1px;'; + } + if ($pl['st'][3] == 1) { + $style .= 'border-right:1px solid #6e6e6e;'; + } else { + $style .= 'padding-right:1px;'; + } + + $map[$pl['x']][$pl['y']] = ''; + } + + echo '
    Карта пещеры (X: [' . $min_x . '] - [' . $max_x . '] , Y: [' . $min_y . '] - [' . $max_y . '])


    '; + + $r = ''; + $i = $max_y; + while ($i >= $min_y) { + $j = $min_x; + $r .= ''; + while ($j <= $max_x) { + if (isset($map[$j][$i])) { + $r .= ''; + } else { + $r .= ''; + } + $j++; + } + $r .= ''; + $i--; + } + $r .= '
    ' . $map[$j][$i] . '
    '; + + echo $r; + } + ?> +
    +
    +
    -



    Пещера не существует
    '; - }else{ - //Пещера существует - $min_x = mysql_fetch_array(mysql_query('SELECT `x` FROM `dungeon_map` WHERE `id_dng` = "'.mysql_real_escape_string($id).'" ORDER BY `x` ASC LIMIT 1')); - $max_x = mysql_fetch_array(mysql_query('SELECT `x` FROM `dungeon_map` WHERE `id_dng` = "'.mysql_real_escape_string($id).'" ORDER BY `x` DESC LIMIT 1')); - $min_y = mysql_fetch_array(mysql_query('SELECT `y` FROM `dungeon_map` WHERE `id_dng` = "'.mysql_real_escape_string($id).'" ORDER BY `y` ASC LIMIT 1')); - $max_y = mysql_fetch_array(mysql_query('SELECT `y` FROM `dungeon_map` WHERE `id_dng` = "'.mysql_real_escape_string($id).'" ORDER BY `y` DESC LIMIT 1')); - - $min_x = $min_x[0]; - $max_x = $max_x[0]; - $min_y = $min_y[0]; - $max_y = $max_y[0]; - - $map = array(); - $stl = array(); - - $sp = mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "'.mysql_real_escape_string($id).'" AND `x` >= '.$min_x.' AND `x` <= '.$max_x.' AND `y` >= '.$min_y.' AND `y` <= '.$max_y.''); - while($pl = mysql_fetch_array($sp)) { - $style = 'vertical-align:bottom;'; - - if($pl['st'][2] == 1) { - $style .= 'border-bottom:1px solid #6e6e6e;'; - }else{ - $style .= 'padding-bottom:1px;'; - } - if($pl['st'][1] == 1) { - $style .= 'border-left:1px solid #6e6e6e;'; - }else{ - $style .= 'padding-left:1px;'; - } - if($pl['st'][0] == 1) { - $style .= 'border-top:1px solid #6e6e6e;'; - }else{ - $style .= 'padding-top:1px;'; - } - if($pl['st'][3] == 1) { - $style .= 'border-right:1px solid #6e6e6e;'; - }else{ - $style .= 'padding-right:1px;'; - } - - $map[$pl['x']][$pl['y']] = ''; - } - - echo '
    Карта пещеры (X: ['.$min_x.'] - ['.$max_x.'] , Y: ['.$min_y.'] - ['.$max_y.'])


    '; - - $r = ''; - $i = $max_y; - while($i >= $min_y) { - $j = $min_x; - $r .= ''; - while($j <= $max_x) { - if(isset($map[$j][$i])) { - $r .= ''; - }else{ - $r .= ''; - } - $j++; - } - $r .= ''; - $i--; - } - $r .= '
    '.$map[$j][$i].'
    '; - - echo $r; - } - ?> -
    - -
    - \ No newline at end of file diff --git a/dn_editor_bots.php b/dn_editor_bots.php index 5ba63c44..7d8a93d1 100644 --- a/dn_editor_bots.php +++ b/dn_editor_bots.php @@ -1,91 +1,104 @@ -Произошла ошибка

    Произошла ошибка:

    '.$e.'

    Назад


    (c) '.$c[1].'

    '); -} - +info['admin'] == 0) { - die(''); +if (!$u->info['admin']) { + die(''); } -if(isset($_GET['id_dn'])) { - $_POST['id_dn'] = $_GET['id_dn']; - $_POST['xx'] = $_GET['xx']; - $_POST['yy'] = $_GET['yy']; +if (isset($_GET['id_dn'])) { + $_POST['id_dn'] = $_GET['id_dn']; + $_POST['xx'] = $_GET['xx']; + $_POST['yy'] = $_GET['yy']; } -if( $_POST['new_bot_colvo'] < 1 ) { - $_POST['new_bot_colvo'] = 1; +if ($_POST['new_bot_colvo'] < 1) { + $_POST['new_bot_colvo'] = 1; } ?>
    -id пещеры:
    -x :
    -y :
    - + id пещеры:
    + x :
    + y :
    +
    --------------- Боты -------------:
    - 0 ){ - $bot = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `id` = "'.$pl['id_bot'].'" LIMIT 1')); - echo $i.'.['.$pl['id2'].'] '.$bot['login'].' [id '.$bot['id'].'] , [x'.$pl['colvo'].'] удалить
    '; - } elseif( $pl['bot_group'] != '' ){ - $bots = explode( ',', $pl['bot_group'] ); - $jjj=0; - echo $i.' .['.$pl['id2'].']'; - while( $jjj < count($bots) ){ - $bot = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `id` = "'.$bots[$jjj].'" LIMIT 1')); - if( isset($bot['login']) ) echo ' '.$bot['login'].' [id '.$bot['id'].'], '; - $jjj++; - } - echo ' [x'.$pl['colvo'].'] удалить
    '; - } - $i++; +while ($pl = mysql_fetch_array($sp)) { + if ($pl['id_bot'] > 0) { + $bot = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `id` = "' . $pl['id_bot'] . '" LIMIT 1')); + echo $i . '.[' . $pl['id2'] . '] ' . $bot['login'] . ' [id ' . $bot['id'] . '] , [x' . $pl['colvo'] . '] удалить
    '; + } elseif ($pl['bot_group'] != '') { + $bots = explode(',', $pl['bot_group']); + $jjj = 0; + echo $i . ' .[' . $pl['id2'] . ']'; + while ($jjj < count($bots)) { + $bot = mysql_fetch_array( + mysql_query('SELECT * FROM `test_bot` WHERE `id` = "' . $bots[$jjj] . '" LIMIT 1') + ); + if (isset($bot['login'])) { + echo ' ' . $bot['login'] . ' [id ' . $bot['id'] . '], '; + } + $jjj++; + } + echo ' [x' . $pl['colvo'] . '] удалить
    '; + } + $i++; } echo '
    '; ?>
    -Добавить нового:
    - - - -ID бота:
    -Случайные боты:
    -Количество:
    -Перемещается: (0 - нет, 1 - да)
    - + Добавить нового:
    + + + + ID бота:
    + Случайные боты:
    + Количество:
    + Перемещается: (0 - нет, 1 - да)
    +
    \ No newline at end of file diff --git a/dn_editor_botsAll.php b/dn_editor_botsAll.php index 7f8eb2bd..1a79dcf2 100644 --- a/dn_editor_botsAll.php +++ b/dn_editor_botsAll.php @@ -1,63 +1,53 @@ -Произошла ошибка

    Произошла ошибка:

    '.$e.'

    Назад


    (c) '.$c[1].'

    '); -} - +info['id']) || $u->info['ip'] != IP || $u->info['admin'] == 0) { - die(''); +if (!isset($u->info['id']) || $u->info['ip'] != IP || !$u->info['admin']) { + die(''); } -if(isset($_GET['id_dn'])) { - $_POST['id_dn'] = $_GET['id_dn']; - $_POST['xx'] = $_GET['xx']; - $_POST['yy'] = $_GET['yy']; - $_POST['botlogin'] = $_GET['botlogin']; +if (isset($_GET['id_dn'])) { + $_POST['id_dn'] = $_GET['id_dn']; + $_POST['xx'] = $_GET['xx']; + $_POST['yy'] = $_GET['yy']; + $_POST['botlogin'] = $_GET['botlogin']; } -if( $_POST['new_bot_colvo'] < 1 ) { - $_POST['new_bot_colvo'] = 1; +if ($_POST['new_bot_colvo'] < 1) { + $_POST['new_bot_colvo'] = 1; } ?>
    -id пещеры:
    -botlogin:
    - + id пещеры:
    + botlogin:
    +
    --------------- Боты -------------:
    -[login:'.$bot['login'].']
    [id '.$bot['id'].'] , [stats:'.$bot['stats'].'] '.$bot['obraz'].'&level='.$bot['level'].'
    '; - echo "
    +
    "; - $i++; +while ($pl = mysql_fetch_array($sp)) { + echo "
    +
    "; + $i++; } -?> +?> - \ No newline at end of file diff --git a/dn_editor_bots_itms.php b/dn_editor_bots_itms.php index 03581cd6..168c2b27 100644 --- a/dn_editor_bots_itms.php +++ b/dn_editor_bots_itms.php @@ -1,86 +1,86 @@ -Произошла ошибка

    Произошла ошибка:

    '.$e.'

    Назад


    (c) '.$c[1].'

    '); -} - +info['admin'] == 0) { - die(''); +if (!$u->info['admin']) { + die(''); } ?> -
    -id бота:
    - -
    ---------------- Бот -------------
    - + id бота:
    + + + --------------- Бот -------------
    + -
    -Логин:
    -Образ:
    -Уровень:
    -Пол: (0 - муж. , 1 - жен.)
    -Имя:
    -Агрессия: (0-100%)
    -Опыт (%):
    -Статы:
    - -
    -Предметы (на боте, 2605 - использует приемы. Перечислять чреез запятую id предмета):
    - -
    -Предметы которые падают с бота:
    - -
    - +
    + Логин:
    + Образ:
    + Уровень:
    + Пол: (0 - муж. , 1 - жен.)
    + Имя:
    + Агрессия: (0-100%)
    + Опыт (%):
    + Статы:
    + +
    + Предметы (на боте, 2605 - использует приемы. Перечислять чреез запятую id предмета):
    + +
    + Предметы которые падают с бота:
    + +
    + \ No newline at end of file diff --git a/dn_editor_class.php b/dn_editor_class.php deleted file mode 100644 index b506fd69..00000000 --- a/dn_editor_class.php +++ /dev/null @@ -1,693 +0,0 @@ - array() //карта - ) ,$id_dng,$cord = array('x' => 0),$sg = array(1 => array(1=>1,2=>2,3=>3,4=>4),2 => array(1=>2,2=>3,3=>4,4=>1),3 => array(1=>3,2=>4,3=>1,4=>2),4 => array(1=>4,2=>1,3=>2,4=>3)); - public function start() - { - global $u,$c,$code,$id; - $this->info = array( - 'id2' => $id, - 'id' => 0, - 'name' => 'Редактирование Пещеры', - 'room' => 0, - 'time_start' => time(), - 'time_start' => 0, - 'uid' => 0, - 'type' => 0, - 'bsid' => 0 - ); - - $this->id_dng = $this->info['id2']; - $this->gs = $u->info['psevdo_s']; - if($this->gs<1 || $this->gs>4) - { - $this->gs = 1; - } - - if($this->info['bsid']>0) - { - $this->bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `city` = "'.$u->info['city'].'" AND `id` = "'.$this->info['bsid'].'" AND `time_start` = "'.$this->info['time_start'].'" LIMIT 1')); - if(isset($this->bs['id'])) - { - //Если БС закончена - if($this->bs['users']-$this->bs['users_finish'] < 2) - { - $u->bsfinish($this->bs,false,NULL); - } - } - } - - /* генерируем вид персонажа (только карта) - $this->gs = 1; //смотрим прямо - 2; //смотрим лево - 3; //смотрим вниз - 4; //смотрим право - ( ( ( `y` >= '.$u->info['psevdo_y'].' && `y` <= '.($u->info['psevdo_y']+4).' ) && ( `x` >= '.($u->info['psevdo_x']-1).' && `x` <= '.($u->info['psevdo_x']+1).' ) ) || ( (`x` = '.($u->info['psevdo_x']+2).' || `x` = '.($u->info['psevdo_x']-2).') && ( `y` = '.($u->info['psevdo_y']+3).' || `y` = '.($u->info['psevdo_y']+4).' ) ) ) - */ - - $whr = array( - 1 => ' ((`x` <= '.($u->info['psevdo_x']+2).' && `x` >= '.($u->info['psevdo_x']-2).') && (`y` >= '.$u->info['psevdo_y'].' && `y` <= '.($u->info['psevdo_y']+4).')) ', //прямо - 3 => ' ((`x` <= '.($u->info['psevdo_x']+2).' && `x` >= '.($u->info['psevdo_x']-2).') && (`y` <= '.$u->info['psevdo_y'].' && `y` >= '.($u->info['psevdo_y']-4).')) ', //вниз - 2 => ' ((`x` <= '.$u->info['psevdo_x'].' && `x` >= '.($u->info['psevdo_x']-4).') && (`y` <= '.($u->info['psevdo_y']+2).' && `y` >= '.($u->info['psevdo_y']-2).')) ', //лево - 4 => ' ((`x` >= '.$u->info['psevdo_x'].' && `x` <= '.($u->info['psevdo_x']+4).') && (`y` <= '.($u->info['psevdo_y']+2).' && `y` >= '.($u->info['psevdo_y']-2).')) ' //право - ); - - $i = 1; - $sp = mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "'.$this->id_dng.'" AND '.$whr[$this->gs].' ORDER BY `y` ASC , `x` ASC LIMIT 25'); - while($pl = mysql_fetch_array($sp)) - { - $this->map[0][$pl['y'].'_'.$pl['x']] = $pl; - $i++; - } - $this->map['good'] = $i; //целых клеток - $this->map[1] = $this->genMatix(); - $this->lookDungeon(); - - - } - - public function usersDng() - { - global $u,$c; - $r = ''; - /* отображение ботов (бесполезно в данном редакторе) */ - } - - public function atack($id) - { - global $u,$c,$code; - /* нападение, какое нападение может быть в редакторе? :) На самого себя, со стулом? :) */ - } - - public function takeinv($id) - { - global $u,$c,$code; - /* Это редактор, а не майнкрафт, здесь ничего собирать не нужно :) */ - } - - public function takeit($id) - { - global $u,$c,$code,$magic; - /* В редакторе ничего не падает ;) */ - } - - public function addItem($i) - { - //добавляем предмет в пещеру (возможно выпал из бота или из сундука) - /* А что еще? Пульт к управлению Землей?! */ - } - - public function itemsMap() - { - global $u,$c,$code; - /* Да ничего здесь не падает! Говорю же! */ - } - - public function testLike($x1,$y1,$x2,$y2) - { - //из $x1,$y1 в $x2,$y2 - //доступна-ли эта клетка для действий - $r = 0; - $c1 = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "'.$x1.'" AND `y` = "'.$y1.'" AND `id_dng` = "'.$this->info['id2'].'" LIMIT 1')); - $c2 = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "'.$x2.'" AND `y` = "'.$y2.'" AND `id_dng` = "'.$this->info['id2'].'" LIMIT 1')); - if(isset($c1['id']) && isset($c2['id'])) - { - if($x1==$x2 && $y1==$y2) - { - $r = 1; - }elseif($x1==$x2-1 && $c1['go_1']==1) //право - { - $r = 1; - }elseif($x1==$x2+1 && $c1['go_2']==1) //лево - { - $r = 1; - }elseif($y1==$y2-1 && $c1['go_3']==1) //верх - { - $r = 1; - }elseif($y1==$y2+1 && $c1['go_4']==1) //низ - { - $r = 1; - } - } - return $r; - } - - public function genObjects() { - global $u,$c,$code; - ////i:{id,name,mapPoint,action,img,type}, - //'count':1,0:{0:1234,1:'Сундук',2:5,3:'',4:'test.gif',5:0,6:position,7:width,8:heigh,9:left,10:top}, - //psition 0 - по центру , 1- сверху, 2- слева, 3- снизу, 4- справа - $r = ''; - /* - $whr = array( - 1 => ' ((`u`.`x` <= '.($u->info['psevdo_x']+2).' && `u`.`x` >= '.($u->info['psevdo_x']-2).') && (`u`.`y` >= '.($u->info['psevdo_y']+1).' && `u`.`y` <= '.($u->info['psevdo_y']+4).')) ', //прямо - 3 => ' ((`u`.`x` <= '.($u->info['psevdo_x']+2).' && `u`.`x` >= '.($u->info['psevdo_x']-2).') && (`u`.`y` <= '.($u->info['psevdo_y']-1).' && `u`.`y` >= '.($u->info['psevdo_y']-4).')) ', //вниз - 2 => ' ((`u`.`x` <= '.($u->info['psevdo_x']-1).' && `u`.`x` >= '.($u->info['psevdo_x']-4).') && (`u`.`y` <= '.($u->info['psevdo_y']+2).' && `u`.`y` >= '.($u->info['psevdo_y']-2).')) ', //лево - 4 => ' ((`u`.`x` >= '.($u->info['psevdo_x']+1).' && `u`.`x` <= '.($u->info['psevdo_x']+4).') && (`u`.`y` <= '.($u->info['psevdo_y']+2).' && `u`.`y` >= '.($u->info['psevdo_y']-2).')) ' //право - ); - */ - $whr = array( - 1 => ' (((`u`.`x` <= '.($u->info['psevdo_x']+2).' && `u`.`x` >= '.($u->info['psevdo_x']-2).') && (`u`.`y` >= '.($u->info['psevdo_y']+1).' && `u`.`y` <= '.($u->info['psevdo_y']+4).')) OR (`u`.`y` = '.$u->info['psevdo_y'].' && `u`.`x` = '.$u->info['psevdo_x'].')) ', //прямо - 3 => ' (((`u`.`x` <= '.($u->info['psevdo_x']+2).' && `u`.`x` >= '.($u->info['psevdo_x']-2).') && (`u`.`y` <= '.($u->info['psevdo_y']-1).' && `u`.`y` >= '.($u->info['psevdo_y']-4).')) OR (`u`.`y` = '.$u->info['psevdo_y'].' && `u`.`x` = '.$u->info['psevdo_x'].')) ', //вниз - 2 => ' (((`u`.`x` <= '.($u->info['psevdo_x']-1).' && `u`.`x` >= '.($u->info['psevdo_x']-4).') && (`u`.`y` <= '.($u->info['psevdo_y']+2).' && `u`.`y` >= '.($u->info['psevdo_y']-2).'))OR (`u`.`y` = '.$u->info['psevdo_y'].' && `u`.`x` = '.$u->info['psevdo_x'].')) ', //лево - 4 => ' (((`u`.`x` >= '.($u->info['psevdo_x']+1).' && `u`.`x` <= '.($u->info['psevdo_x']+4).') && (`u`.`y` <= '.($u->info['psevdo_y']+2).' && `u`.`y` >= '.($u->info['psevdo_y']-2).')) OR (`u`.`y` = '.$u->info['psevdo_y'].' && `u`.`x` = '.$u->info['psevdo_x'].')) ' //право - ); - $sp = mysql_query('SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "0" AND `u`.`for_dn` = "'.$this->id_dng.'" AND ((`u`.`s` = "0" OR `u`.`s` = "'.$this->gs.'") OR `u`.`s2` = "'.$this->gs.'") AND '.$whr[$this->gs].' LIMIT 76'); - # die('SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "0" AND `u`.`for_dn` = "'.$this->id_dng.'" AND ((`u`.`s` = "0" OR `u`.`s` = "'.$this->gs.'") OR `u`.`s2` = "'.$this->gs.'") AND '.$whr[$this->gs].' LIMIT 76'); - $i = 0; $pos = array(); - while($pl = mysql_fetch_array($sp)) { - - if($pl['fix_x_y'] == 0 || - ($pl['fix_x_y'] == 1 && $pl['x'] == $u->info['psevdo_x']) || - ($pl['fix_x_y'] == 2 && $pl['y'] == $u->info['psevdo_y']) || - ($pl['fix_x_y'] == 3 && $pl['x'] == $u->info['psevdo_x'] && $pl['y'] == $u->info['psevdo_y'])) { - if( - ( - $pl['os1']== 0 && $pl['os2']==0 && $pl['os3']==0 && $pl['os4']==0 - ) || - ( - $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os1'] || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os2'] - || - $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os3'] || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os4'] - ) - ) { - $i++; if(!isset($pos[$this->cord[$pl['y'].'_'.$pl['x']]])){ $pos[$this->cord[$pl['y'].'_'.$pl['x']]] = 0; } $pos[$this->cord[$pl['y'].'_'.$pl['x']]]++; - $r .= ','.($i-1).':{\'x\':'.$pl['x'].',\'y\':'.$pl['y'].',0:'.$pl['id'].',1:\''.$pl['name'].'\',2:'.(0+$this->cord[$pl['y'].'_'.$pl['x']]).',3:\'action\',4:\''.$pl['img'].'\',5:'.$pl['type'].',6:0,7:'.$pl['w'].',8:'.$pl['h'].',9:'.$pl['left'].',10:'.$pl['top'].',11:'.$pl['date'].',12:'.$pl['type'].',13:'.$pl['type2'].',14:'.$pl['s'].',15:'.$pl['s2'].',16:'.$pl['os1'].',17:'.$pl['os2'].',18:'.$pl['os3'].',19:'.$pl['os4'].',20:'.$pl['fix_x_y'].'}'; - } elseif( $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os1']-1 || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os2']-1 || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os3']-1 || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os4']-1 ) { - $dt2 = explode(',',ltrim(rtrim($pl['date'],'\}'),'\{')); - $da = array(); - $is = 0; - while($is < count($dt2)) { - $dt2[$is] = explode(':',$dt2[$is]); - $da[$dt2[$is][0]] = $dt2[$is][1]; - $is++; - } - #if(isset($da['rl2']))$da['rl2'] = -round((int)$da['rl2'] * 0.70); // Слева - if(isset($da['rl2']))$da['rl2'] = round((int)$da['rl2'] -230); // Слева - if(isset($da['rl3']))$da['rl3'] = round((int)$da['rl3'] +160); - if(isset($da['rl4']))$da['rl4'] = round((int)$da['rl4'] -120); - $pl['date'] = str_replace('"', '', json_encode($da)); - $i++; if(!isset($pos[$this->cord[$pl['y'].'_'.$pl['x']]])){ $pos[$this->cord[$pl['y'].'_'.$pl['x']]] = 0; } $pos[$this->cord[$pl['y'].'_'.$pl['x']]]++; - $r .= ','.($i-1).':{\'x\':'.$pl['x'].',\'y\':'.$pl['y'].',0:'.$pl['id'].',1:\''.$pl['name'].'\',2:'.(0+$this->cord[$pl['y'].'_'.$pl['x']]).',3:\'action\',4:\''.$pl['img'].'\',5:'.$pl['type'].',6:0,7:'.$pl['w'].',8:'.$pl['h'].',9:'.$pl['left'].',10:'.$pl['top'].',11:'.$pl['date'].',12:'.$pl['type'].',13:'.$pl['type2'].',14:'.$pl['s'].',15:'.$pl['s2'].',16:'.$pl['os1'].',17:'.$pl['os2'].',18:'.$pl['os3'].',19:'.$pl['os4'].',20:'.$pl['fix_x_y'].'}'; - } else if( $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os1']+1 || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os2']+1 || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os3']+1 || $this->cord[$pl['y'].'_'.$pl['x']] == $pl['os4']+1 ) { - - $dt2 = explode(',',ltrim(rtrim($pl['date'],'\}'),'\{')); - $da = array(); - $is = 0; - while($is < count($dt2)) { - $dt2[$is] = explode(':',$dt2[$is]); - $da[$dt2[$is][0]] = $dt2[$is][1]; - $is++; - } - #if(isset($da['rl2']))$da['rl2'] = 355-round((int)$da['rl2'] * 0.30); // Справа - if(isset($da['rl2']))$da['rl2'] = round((int)$da['rl2'] +230); // Справа - if(isset($da['rl3']))$da['rl3'] = round((int)$da['rl3'] -160); - if(isset($da['rl4']))$da['rl4'] = round((int)$da['rl4'] +120); - $pl['date'] = str_replace('"', '', json_encode($da)); - $i++; if(!isset($pos[$this->cord[$pl['y'].'_'.$pl['x']]])){ $pos[$this->cord[$pl['y'].'_'.$pl['x']]] = 0; } $pos[$this->cord[$pl['y'].'_'.$pl['x']]]++; - $r .= ','.($i-1).':{\'x\':'.$pl['x'].',\'y\':'.$pl['y'].',0:'.$pl['id'].',1:\''.$pl['name'].'\',2:'.(0+$this->cord[$pl['y'].'_'.$pl['x']]).',3:\'action\',4:\''.$pl['img'].'\',5:'.$pl['type'].',6:0,7:'.$pl['w'].',8:'.$pl['h'].',9:'.$pl['left'].',10:'.$pl['top'].',11:'.$pl['date'].',12:'.$pl['type'].',13:'.$pl['type2'].',14:'.$pl['s'].',15:'.$pl['s2'].',16:'.$pl['os1'].',17:'.$pl['os2'].',18:'.$pl['os3'].',19:'.$pl['os4'].',20:'.$pl['fix_x_y'].'}'; - } - } - } - $r = 'count:'.$i.$r; - return $r; - } - - public function genUsers(){ - global $u,$c,$code; - ////i:{id,login,mapPoint,sex,obraz,type,users_p}, - //'count':1,0:{0:1015,1:'Test1',2:5,3:0,4:'1',5:'user',6:1}, - $r = ''; - $whr = array( - 1 => ' ((`u`.`x` <= '.($u->info['psevdo_x']+2).' && `u`.`x` >= '.($u->info['psevdo_x']-2).') && (`u`.`y` >= '.$u->info['psevdo_y'].' && `u`.`y` <= '.($u->info['psevdo_y']+4).')) ', //прямо - 3 => ' ((`u`.`x` <= '.($u->info['psevdo_x']+2).' && `u`.`x` >= '.($u->info['psevdo_x']-2).') && (`u`.`y` <= '.$u->info['psevdo_y'].' && `u`.`y` >= '.($u->info['psevdo_y']-4).')) ', //вниз - 2 => ' ((`u`.`x` <= '.$u->info['psevdo_x'].' && `u`.`x` >= '.($u->info['psevdo_x']-4).') && (`u`.`y` <= '.($u->info['psevdo_y']+2).' && `u`.`y` >= '.($u->info['psevdo_y']-2).')) ', //лево - 4 => ' ((`u`.`x` >= '.$u->info['psevdo_x'].' && `u`.`x` <= '.($u->info['psevdo_x']+4).') && (`u`.`y` <= '.($u->info['psevdo_y']+2).' && `u`.`y` >= '.($u->info['psevdo_y']-2).')) ' //право - ); - $i = 0; - //отображаем ботов - $sp = mysql_query('SELECT `u`.*,`st`.* FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE '.$whr[$this->gs].' AND `dn` = "0" AND `for_dn` = "'.$this->id_dng.'" AND `u`.`delete` = "0" LIMIT 50'); - while($pl = mysql_fetch_array($sp)){ - $i++; if(!isset($pos[$this->cord[$pl['y'].'_'.$pl['x']]])){ $pos[$this->cord[$pl['y'].'_'.$pl['x']]] = 0; } $pos[$this->cord[$pl['y'].'_'.$pl['x']]]++; - $dlg = 0; - if($pl['dialog']>0){ - $dlg = $pl['dialog']; - } - $r .= ','.($i-1).':{0:'.$pl['id2'].',1:\''.$pl['login'].'\',2:'.(0+$this->cord[$pl['y'].'_'.$pl['x']]).',3:'.$pl['sex'].',4:\''.str_replace('.gif','',$pl['obraz']).'\',5:\'bot\',6:'.$pos[$this->cord[$pl['y'].'_'.$pl['x']]].',7:'.$dlg.'}'; - } - $r = 'count:'.$i.$r; - //$wd = $this->cord['2_0']; - return $r; - } - - public function botAtack($bot,$uid,$bs) { - global $u,$c,$code; - $user = mysql_fetch_array(mysql_query('SELECT `id`,`battle` FROM `users` WHERE `id` = "'.$uid['id'].'" LIMIT 1')); - if($user['battle']>0){ - $btli = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "'.$user['battle'].'" AND `team_win` = "-1" LIMIT 1')); - } - if(!isset($btli['id'])){ - //Создаем поединок - $btl_id = 0; - $expB = 0; - $btl = array( - 'players'=>'', - 'timeout'=>180, - 'type'=>0, - 'invis'=>0, - 'noinc'=>0, - 'travmChance'=>0, - 'typeBattle'=>0, - 'addExp'=>$expB, - 'money'=>0 - ); - - $ins = mysql_query('INSERT INTO `battle` (`dungeon`,`dn_id`,`x`,`y`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( - "'.$this->info['id2'].'", - "'.$this->info['id'].'", - "'.$bot['x'].'", - "'.$bot['y'].'", - "'.$u->info['city'].'", - "'.time().'", - "'.$btl['players'].'", - "'.$btl['timeout'].'", - "'.$btl['type'].'", - "'.$btl['invis'].'", - "'.$btl['noinc'].'", - "'.$btl['travmChance'].'", - "'.$btl['typeBattle'].'", - "'.$btl['addExp'].'", - "'.$btl['money'].'")'); - $btl_id = mysql_insert_id(); - - if($btl_id>0){ - //Добавляем ботов - $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "0" AND `dn` = "'.$this->info['id'].'" AND `x` = "'.$bot['x'].'" AND `y` = "'.$bot['y'].'" LIMIT 50'); - $j = 0; $logins_bot = array(); - while($pl = mysql_fetch_array($sp)){ - mysql_query('UPDATE `dungeon_bots` SET `inBattle` = "'.$btl_id.'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - $jui = 1; - while($jui<=$pl['colvo']){ - $k = $u->addNewbot($pl['id_bot'],NULL,NULL,$logins_bot); - $logins_bot = $k['logins_bot']; - if($k!=false) { - $upd = mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'" WHERE `id` = "'.$k['id'].'" LIMIT 1'); - if($upd){ - $upd = mysql_query('UPDATE `stats` SET `x`="'.$bot['x'].'",`y`="'.$bot['y'].'",`team` = "1" WHERE `id` = "'.$k['id'].'" LIMIT 1'); - if($upd){ - $j++; - } - } - } - $jui++; - } - } - unset($logins_bot); - if($j>0) - { - mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'" WHERE `id` = "'.$user['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team` = "2" WHERE `id` = "'.$user['id'].'" LIMIT 1'); - } - } - }else{ - //Вмешиваемся в поединок - - } - } - - public function testGo($id) - { - global $u,$c,$code; - $go = 0; - if($id==1) - { - //вперед - $go = $this->sg[$this->gs][1]; - }elseif($id==2) - { - //назад - $go = $this->sg[$this->gs][3]; - }elseif($id==3) - { - //на право - $go = $this->sg[$this->gs][4]; - }elseif($id==4) - { - //на лево - $go = $this->sg[$this->gs][2]; - } - $thp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "'.$u->info['psevdo_x'].'" AND `y` = "'.$u->info['psevdo_y'].'" AND `id_dng` = "'.$this->info['id2'].'" LIMIT 1')); - $ng = array( - 4=>1, - 2=>2, - 1=>3, - 3=>4 - ); - if(isset($thp['id']) && $thp['go_'.$ng[$go]]==0) - { - $go = 0; - } - $tgo = array(0=>0,1=>0); - if($go==1) - { - $tgo[1] += 1; - }elseif($go==2) - { - $tgo[0] -= 1; - }elseif($go==3) - { - $tgo[1] -= 1; - }elseif($go==4) - { - $tgo[0] += 1; - } - - $tbot = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_bots` WHERE `x` = "'.($u->info['psevdo_x']+(int)$tgo[0]).'" AND `y` = "'.($u->info['psevdo_y']+(int)$tgo[1]).'" AND `dn` = "'.$this->info['id'].'" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1')); - if(isset($tbot['id2']) && $u->info['admin']==0) - { - $go = 0; - } - - $tmap = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "'.$u->info['psevdo_x'].'" AND `y` = "'.$u->info['psevdo_y'].'" AND `id_dng` = "'.$this->info['id2'].'" LIMIT 1')); - //наличие предмета - if($tmap['tr_items']!='') - { - $ti = explode(',',$tmap['tr_items']); - $i = 0; $trnit = ''; - while($i0 && $ti2[1]>0) - { - $num_rows = mysql_num_rows(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inShop` = "0" AND `item_id` = "'.((int)$ti2[0]).'" LIMIT '.((int)$ti2[1]).'')); - if($num_rows < (int)$ti2[1]) - { - $tgo = $ti2[2]; - if($tgo!='0000') - { - if($tgo[$ng[$go]-1]==1) - { - $go = 0; - $trm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.((int)$ti2[0]).'" LIMIT 1')); - $trnit .= '"'.$trm['name'].'", '; - } - } - } - } - $i++; - } - if($trnit!='') - { - $trnit = rtrim($trnit,', '); - $this->error = 'У вас нет подходящего предмета. Требуется '.$trnit; - } - } - - $tmGo = $u->info['timeGo']-time(); //сколько секунд осталось - if($tmGo>0) - { - $go = 0; - $this->error = 'Не так быстро...'; - } - - if($u->aves['now']>=$u->aves['max']) - { - $go = 0; - $this->error = 'Вы не можете перемещаться, рюкзак переполнен ...'; - } - - if($go>0) - { - if($go==1) - { - $u->info['psevdo_y'] += 1; - }elseif($go==2) - { - $u->info['psevdo_x'] -= 1; - }elseif($go==3) - { - $u->info['psevdo_y'] -= 1; - }elseif($go==4) - { - $u->info['psevdo_x'] += 1; - } - $u->info['timeGo'] = time()+$tmap['timeGO']; - $u->info['timeGoL'] = time(); - $upd = mysql_query('UPDATE `stats` SET `x` = "'.$u->info['psevdo_x'].'",`y` = "'.$u->info['psevdo_y'].'",`timeGo` = "'.$u->info['timeGo'].'",`timeGoL` = "'.$u->info['timeGoL'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - } - - public function testGone($id) - { - global $u,$c,$code; - $go = 0; - if($id==1) - { - //вперед - $go = $this->sg[$this->gs][1]; - }elseif($id==2) - { - //назад - $go = $this->sg[$this->gs][3]; - }elseif($id==3) - { - //на право - $go = $this->sg[$this->gs][4]; - }elseif($id==4) - { - //на лево - $go = $this->sg[$this->gs][2]; - } - $thp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "'.$u->info['psevdo_x'].'" AND `y` = "'.$u->info['psevdo_y'].'" AND `id_dng` = "'.$this->info['id2'].'" LIMIT 1')); - $ng = array( - 4=>1, - 2=>2, - 1=>3, - 3=>4 - ); - if(isset($thp['id']) && $thp['go_'.$ng[$go]]==0) - { - $go = 0; - } - $tgo = array(0=>0,1=>0); - if($go==1) - { - $tgo[1] += 1; - }elseif($go==2) - { - $tgo[0] -= 1; - }elseif($go==3) - { - $tgo[1] -= 1; - }elseif($go==4) - { - $tgo[0] += 1; - } - - $tbot = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_bots` WHERE `x` = "'.($u->info['psevdo_x']+(int)$tgo[0]).'" AND `y` = "'.($u->info['psevdo_y']+(int)$tgo[1]).'" AND `dn` = "'.$this->info['id'].'" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1')); - if(isset($tbot['id2']) && $u->info['admin']==0) - { - $go = 0; - } - - $tmap = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "'.$u->info['psevdo_x'].'" AND `y` = "'.$u->info['psevdo_y'].'" AND `id_dng` = "'.$this->info['id2'].'" LIMIT 1')); - //наличие предмета - /* - if($tmap['tr_items']!='') - { - $ti = explode(',',$tmap['tr_items']); - $i = 0; $trnit = ''; - while($i0 && $ti2[1]>0) - { - $num_rows = mysql_num_rows(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inShop` = "0" AND `item_id` = "'.((int)$ti2[0]).'" LIMIT '.((int)$ti2[1]).'')); - if($num_rows < (int)$ti2[1]) - { - $tgo = $ti2[2]; - if($tgo!='0000') - { - if($tgo[$ng[$go]-1]==1) - { - $go = 0; - } - } - } - } - $i++; - } - } - */ - - return $go; - } - - public function testSt($id,$s) - { - $r = 0; - //заменяем отображение стен в зависимости от угла обзора - $s = $this->sg[$this->gs][$s]; - if(isset($this->map[1][$id]['id'])) - { - $r = $this->map[1][$id]['st'][($s-1)]; - } - return $r; - } - - public function lookDungeon() - { - global $u,$c,$code,$pd; - /* Генерируем изображение карты */ - /* LEVEL 1 */ - if($this->testSt(2,4)>0 || $this->testSt(3,2)>0){ $pd[28] = 1; } - if($this->testSt(1,4)>0 || $this->testSt(2,2)>0){ $pd[27] = 1; } - if($this->testSt(2,1)>0 || $this->testSt(5,3)>0){ $pd[26] = 1; } - if($this->testSt(3,1)>0 || $this->testSt(6,3)>0){ $pd[25] = 1; } - if($this->testSt(1,1)>0 || $this->testSt(4,3)>0){ $pd[24] = 1; } - - /* LEVEL 2 */ - if($this->testSt(5,4)>0 || $this->testSt(6,2)>0){ $pd[23] = 1; } - if($this->testSt(4,4)>0 || $this->testSt(5,2)>0){ $pd[22] = 1; } - if($this->testSt(5,1)>0 || $this->testSt(8,3)>0){ $pd[21] = 1; } - if($this->testSt(6,1)>0 || $this->testSt(7,3)>0){ $pd[20] = 1; } - if($this->testSt(4,1)>0 || $this->testSt(9,3)>0){ $pd[19] = 1; } - - /* LEVEL 3 */ - if($this->testSt(8,4)>0 || $this->testSt(7,2)>0){ $pd[18] = 1; } - if($this->testSt(9,4)>0 || $this->testSt(8,2)>0){ $pd[17] = 1; } - if($this->testSt(8,1)>0 || $this->testSt(12,3)>0){ $pd[16] = 1; } - if($this->testSt(7,1)>0 || $this->testSt(13,3)>0){ $pd[15] = 1; } - if($this->testSt(9,1)>0 || $this->testSt(11,3)>0){ $pd[14] = 1; } - - /* LEVEL 4 */ - if($this->testSt(12,4)>0 || $this->testSt(13,2)>0){ $pd[13] = 1; } - if($this->testSt(12,2)>0 || $this->testSt(11,4)>0){ $pd[12] = 1; } - if($this->testSt(13,1)>0 || $this->testSt(17,3)>0){ $pd[11] = 1; } //8 - if($this->testSt(11,1)>0 || $this->testSt(16,3)>0){ $pd[10] = 1; } //7 - if($this->testSt(12,1)>0 || $this->testSt(15,3)>0){ $pd[9] = 1; } - if($this->testSt(14,1)>0 || $this->testSt(18,3)>0){ $pd[6] = 1; } //2 - if($this->testSt(10,1)>0 || $this->testSt(19,3)>0){ $pd[5] = 1; } //1 - if($this->testSt(16,4)>0 || $this->testSt(15,2)>0){ $pd[4] = 1; } - if($this->testSt(15,4)>0 || $this->testSt(17,2)>0){ $pd[3] = 1; } - - /* Генерируем предметы на карте */ - - /* Генерируем персонажей и ботов на карте */ - - } - - public function getMatrix($y,$x) - { - global $u; - $this->cord['x']++; - $this->cord[($u->info['psevdo_y']+$y).'_'.($u->info['psevdo_x']+$x)] = $this->cord['x']; - return $this->map[0][($u->info['psevdo_y']+$y).'_'.($u->info['psevdo_x']+$x)]; - } - - public function genMatix() - { - $r = array(); - if($this->gs == 1) - { - //1; //смотрим прямо - $r[1] = $this->getMatrix(0,-1); - $r[2] = $this->getMatrix(0,0); - $r[3] = $this->getMatrix(0,1); - $r[4] = $this->getMatrix(1,-1); - $r[5] = $this->getMatrix(1,0); - $r[6] = $this->getMatrix(1,1); - $r[7] = $this->getMatrix(2,1); - $r[8] = $this->getMatrix(2,0); - $r[9] = $this->getMatrix(2,-1); - $r[10] = $this->getMatrix(3,-2); - $r[11] = $this->getMatrix(3,-1); - $r[12] = $this->getMatrix(3,0); - $r[13] = $this->getMatrix(3,1); - $r[14] = $this->getMatrix(3,2); - $r[15] = $this->getMatrix(4,0); - $r[16] = $this->getMatrix(4,-1); - $r[17] = $this->getMatrix(4,1); - $r[18] = $this->getMatrix(4,2); - $r[19] = $this->getMatrix(4,-2); - }elseif($this->gs == 2) - { - //2; //смотрим лево - $r[1] = $this->getMatrix(-1,0); - $r[2] = $this->getMatrix(0,0); - $r[3] = $this->getMatrix(1,0); - $r[4] = $this->getMatrix(-1,-1); - $r[5] = $this->getMatrix(0,-1); - $r[6] = $this->getMatrix(1,-1); - $r[7] = $this->getMatrix(1,-2); - $r[8] = $this->getMatrix(0,-2); - $r[9] = $this->getMatrix(-1,-2); - $r[10] = $this->getMatrix(-2,-3); - $r[11] = $this->getMatrix(-1,-3); - $r[12] = $this->getMatrix(0,-3); - $r[13] = $this->getMatrix(1,-3); - $r[14] = $this->getMatrix(2,-3); - $r[15] = $this->getMatrix(0,-4); - $r[16] = $this->getMatrix(-1,-4); - $r[17] = $this->getMatrix(1,-4); - $r[18] = $this->getMatrix(2,-4); - $r[19] = $this->getMatrix(-2,-4); - }elseif($this->gs == 3) - { - //3; //смотрим вниз - $r[1] = $this->getMatrix(0,1); - $r[2] = $this->getMatrix(0,0); - $r[3] = $this->getMatrix(0,-1); - $r[4] = $this->getMatrix(-1,1); - $r[5] = $this->getMatrix(-1,0); - $r[6] = $this->getMatrix(-1,-1); - $r[7] = $this->getMatrix(-2,-1); - $r[8] = $this->getMatrix(-2,0); - $r[9] = $this->getMatrix(-2,1); - $r[10] = $this->getMatrix(-3,2); - $r[11] = $this->getMatrix(-3,1); - $r[12] = $this->getMatrix(-3,0); - $r[13] = $this->getMatrix(-3,-1); - $r[14] = $this->getMatrix(-3,-2); - $r[15] = $this->getMatrix(-4,0); - $r[16] = $this->getMatrix(-4,1); - $r[17] = $this->getMatrix(-4,-1); - $r[18] = $this->getMatrix(-4,-2); - $r[19] = $this->getMatrix(-4,2); - }elseif($this->gs == 4) - { - //4; //смотрим право - $r[1] = $this->getMatrix(1,0); - $r[2] = $this->getMatrix(0,0); - $r[3] = $this->getMatrix(-1,0); - $r[4] = $this->getMatrix(1,1); - $r[5] = $this->getMatrix(0,1); - $r[6] = $this->getMatrix(-1,1); - $r[7] = $this->getMatrix(-1,2); - $r[8] = $this->getMatrix(0,2); - $r[9] = $this->getMatrix(1,2); - $r[10] = $this->getMatrix(2,3); - $r[11] = $this->getMatrix(1,3); - $r[12] = $this->getMatrix(0,3); - $r[13] = $this->getMatrix(-1,3); - $r[14] = $this->getMatrix(-2,3); - $r[15] = $this->getMatrix(0,4); - $r[16] = $this->getMatrix(1,4); - $r[17] = $this->getMatrix(-1,4); - $r[18] = $this->getMatrix(-2,4); - $r[19] = $this->getMatrix(2,4); - } - return $r; - } -} - -$d = new dungeon; -$d->start(); -?> \ No newline at end of file diff --git a/dncon.php b/dncon.php index 05f059de..f5540c4a 100644 --- a/dncon.php +++ b/dncon.php @@ -1,85 +1,78 @@ -'; - } - }elseif( $_GET['step'] == 2 ) { - $sp = mysql_query('SELECT * FROM `dungeon_obj` WHERE `for_dn` = "'.mysql_real_escape_string($dng).'" ORDER BY `id` ASC'); - while( $pl = mysql_fetch_assoc($sp) ) { - $sql .= array_to_sql('dungeon_obj',$pl,'id','NULL').'
    '; - } - }elseif( $_GET['step'] == 3 ) { - $sm = 200; // смещение ботов - $botadd = array(); - $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "'.mysql_real_escape_string($dng).'" ORDER BY `id2` ASC'); - while( $pl = mysql_fetch_assoc($sp) ) { - $botsel = mysql_fetch_assoc(mysql_query('SELECT * FROM `test_bot` WHERE `id` = "'.$pl['id_bot'].'" LIMIT 1')); - if(isset($botsel['id'])) { - $pl['id_bot'] += $sm; - if(!isset($botadd[$pl['id_bot']])) { - $botadd[$pl['id_bot']] = true; - $sql .= array_to_sql('test_bot',$botsel,'id','"'.$pl['id_bot'].'"').'
    '; - } - $sql .= array_to_sql('dungeon_bots',$pl,'id2','NULL').'
    '; - } - } - }elseif( $_GET['setp'] == 4 ) { - - } - - - echo $sql; - -}else{ - die('Доступ закрыт!'); +if (!isset($_GET['for'])) { + die('Доступ закрыт!'); +} +function array_to_sql($t, $m, $id_name, $id) +{ + $k = array_keys($m); + $a = ''; + $b = ''; + $i = 0; + while ($i < count($k)) { + $a .= ',`' . $k[$i] . '`'; + if ($id && $k[$i] == $id_name) { + $b .= ',' . $id; + } else { + $b .= ',"' . str_replace('"', '"', $m[$k[$i]]) . '"'; + } + $i++; + } + $a = ltrim($a, ','); + $b = ltrim($b, ','); + return 'INSERT INTO `' . $t . '` ( ' . $a . ' ) VALUES ( ' . $b . ' );'; } -?> \ No newline at end of file +$dng = (int)$_GET['dng']; + +$sql = ''; + +$test_bot = []; +$dungeon_bots = []; +$dungeon_items = []; +$dungeon_obj = []; +$dungeon_map = []; +$items_main = []; +$eff_main = []; + +// +if ($_GET['step'] == 1) { + $sp = mysql_query( + 'SELECT * FROM `dungeon_map` WHERE `id_dng` = "' . mysql_real_escape_string( + $dng + ) . '" ORDER BY `x`, `y`' + ); + while ($pl = mysql_fetch_assoc($sp)) { + $sql .= array_to_sql('dungeon_map', $pl, 'id', 'NULL') . '
    '; + } +} elseif ($_GET['step'] == 2) { + $sp = mysql_query( + 'SELECT * FROM `dungeon_obj` WHERE `for_dn` = "' . mysql_real_escape_string($dng) . '" ORDER BY `id` ASC' + ); + while ($pl = mysql_fetch_assoc($sp)) { + $sql .= array_to_sql('dungeon_obj', $pl, 'id', 'NULL') . '
    '; + } +} elseif ($_GET['step'] == 3) { + $sm = 200; // смещение ботов + $botadd = []; + $sp = mysql_query( + 'SELECT * FROM `dungeon_bots` WHERE `for_dn` = "' . mysql_real_escape_string($dng) . '" ORDER BY `id2` ASC' + ); + while ($pl = mysql_fetch_assoc($sp)) { + $botsel = mysql_fetch_assoc( + mysql_query('SELECT * FROM `test_bot` WHERE `id` = "' . $pl['id_bot'] . '" LIMIT 1') + ); + if (isset($botsel['id'])) { + $pl['id_bot'] += $sm; + if (!isset($botadd[$pl['id_bot']])) { + $botadd[$pl['id_bot']] = true; + $sql .= array_to_sql('test_bot', $botsel, 'id', '"' . $pl['id_bot'] . '"') . '
    '; + } + $sql .= array_to_sql('dungeon_bots', $pl, 'id2', 'NULL') . '
    '; + } + } +} +echo $sql; diff --git a/dress.php b/dress.php deleted file mode 100644 index f49a59a5..00000000 --- a/dress.php +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     
    - - - - - - -
    - логин, слоты, приемы, обкасты - - Статы, Умения, Статы за награду, зверь, склонка, образ, клан - - Основные, Модификаторы, Мощность, Защита, Прочее - - Стоимость, дополнительные настройки -
    Описание и благодарности.
    - - \ No newline at end of file diff --git a/editor_shop.php b/editor_shop.php index 0bc9c8d8..a9d7f367 100644 --- a/editor_shop.php +++ b/editor_shop.php @@ -1,12 +1,13 @@ -info['id']) || $u->info['admin'] < 1) { - header('location: /index.php'); - die(); +if (!$u->info['admin']) { + header('location: /index.php'); + die(); } $sid = round((int)$_GET['sid']); @@ -15,129 +16,154 @@ $r = round((int)$_GET['r']); - -Редактор предметов в магазине - - + + Редактор предметов в магазине + + -
    - - - + + + + + + + +

    Магазин: - + + - - - - - - - -

    Магазин: + - Раздел магазина: - -

    -

    ОБНОВИТЬ СТРАНИЦУ
    -
    -

    -
    -
    Добавить предмет (id предмета): в этот раздел.


    - - - - - - -
    -
    - Кол-во:
    - # -
    - -
    -
    - Цена в базе: кр.
    - Цена в базе: екр.
    - Цена в магазине: кр.
    - Цена в магазине: екр.
    -



    -

    -
    + "' . mysql_real_escape_string($_POST['item_add']) . '","1000000000","' . $sid . '","' . $r . '","1" + )' + ); + } + + $sp = mysql_query('SELECT `sid` FROM `items_shop` GROUP BY `sid`'); + while ($pl = mysql_fetch_array($sp)) { + echo ''; + } + ?> + + Раздел магазина: + +

    +

    ОБНОВИТЬ СТРАНИЦУ
    +
    +

    +
    +
    Добавить предмет (id предмета): в этот + раздел.

    +
    +
    + + + + + + +
    +
    + Кол-во:
    + # +
    + +
    +
    + Цена в базе: кр.
    + Цена в базе: екр. +
    + Цена в магазине: кр.
    + Цена в магазине: екр. +
    +



    +
    +
    +
    \ No newline at end of file diff --git a/ekr.bac.php b/ekr.bac.php index 499641da..70a2db59 100644 --- a/ekr.bac.php +++ b/ekr.bac.php @@ -1,1013 +1,1391 @@ -0.13 ЕКР
    . Приятной Вам игры! - - include('_incl_data/__config.php'); - include('_incl_data/class/__db_connect.php'); - include('_incl_data/class/__user.php'); - if(!isset($u->info['id'])) { - header('location: https://new-combats.com/'); - die(); - } - - class upload { - - protected function __construct() { } - - //static $save_path = '/var/www/bk2ru/data/www/new-combats.com/clan_prw/'; - static $save_path = 'clan_prw/'; - static $error = ''; - - static function saveimg($name,$max_mb = 2,$exts = 'jpg|png|jpeg|gif',$cnm = '',$mnw = 0,$mxw = 0,$mnh = 0,$mxh = 0) { - if (isset($_FILES[$name])) { - $f = &$_FILES[$name]; - if(isset($f['tmp_name'])) { - $width = 0; - $height = 0; - list($width, $height) = getimagesize($f['tmp_name']); - } - - if( $mnw != 0 && $mnw > $width ) { - self::$error = 'Минимальная ширина картинки '.$mnw.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; - }elseif( $mxw != 0 && $mxw < $width ) { - self::$error = 'Максимальная ширина картинки '.$mxw.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; - }elseif( $mnh != 0 && $mnh > $height ) { - self::$error = 'Минимальная высота картинки '.$mnh.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; - }elseif( $mxh != 0 && $mxh < $height ) { - self::$error = 'Максимальная высота картинки '.$mxh.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; - }elseif( !is_dir( self::$save_path ) ) { - self::$error = 'Ошибка на стороне сервера!'; - }elseif (($f['size'] <= $max_mb*1024*1024) && ($f['size'] > 0)) { - if ( - (preg_match('/\.('.$exts.')$/i',$f['name'],$ext))&& - (preg_match('/image/i',$f['type'])) - ) { - - $ext[1] = strtolower($ext[1]); - $fn = uniqid('f_',true).'.'.$ext[1]; - $fn2 = uniqid('f_',true).'.gif'; - if( $cnm != '' ) { - $fn = $cnm; - $fn2 = $cnm; - } - if (move_uploaded_file($f['tmp_name'], self::$save_path . $fn)) { - // система изменения размера , требуется Rimage - //Rimage::resize(self::$save_path . $fn, self::$save_path . $fn2); - //@unlink(self::$save_path . $fn); // удаление файла - return array($fn2,$fn,self::$save_path . $fn); - } else { - self::$error = 'Ошибка загрузки файла'; - } - } else { - self::$error = 'Неверный тип файла. Допустимые типы : '.$exts.''; - } - } else { - self::$error = 'Неверный размер файла. Максимальный размер файла '.$max_mb.' МБ'; - } - } else { - self::$error = 'Файл не найден'; - } - return false; - } // end saveimg - - } // end class - - $ball = mysql_fetch_array(mysql_query('SELECT SUM(`ekr`) FROM `pay_operation` WHERE `uid` = "'.$u->info['id'].'" AND `good` > 0 LIMIT 1')); - $ball = 0+$ball[0]; -}else{ - $ball = mysql_fetch_array(mysql_query('SELECT SUM(`ekr`) FROM `pay_operation` WHERE `uid` = "'.$user['id'].'" AND `good` > 0 LIMIT 1')); - $ball = 0+$ball[0]; +0.13 ЕКР
    . Приятной Вам игры! + + include('_incl_data/__config.php'); + include('_incl_data/class/__db_connect.php'); + $u = User::start(); + if (!isset($u->info['id'])) { + header('location: https://new-combats.com/'); + die(); + } + + class upload + { + + protected function __construct() {} + + //static $save_path = '/var/www/bk2ru/data/www/new-combats.com/clan_prw/'; + static $save_path = 'clan_prw/'; + static $error = ''; + + static function saveimg( + $name, $max_mb = 2, $exts = 'jpg|png|jpeg|gif', $cnm = '', $mnw = 0, $mxw = 0, $mnh = 0, $mxh = 0 + ) { + if (isset($_FILES[$name])) { + $f = &$_FILES[$name]; + if (isset($f['tmp_name'])) { + $width = 0; + $height = 0; + list($width, $height) = getimagesize($f['tmp_name']); + } + + if ($mnw != 0 && $mnw > $width) { + self::$error = 'Минимальная ширина картинки ' . $mnw . ' пикселей. (Размер этой картинки ' . $width . 'x' . $height . ')'; + } elseif ($mxw != 0 && $mxw < $width) { + self::$error = 'Максимальная ширина картинки ' . $mxw . ' пикселей. (Размер этой картинки ' . $width . 'x' . $height . ')'; + } elseif ($mnh != 0 && $mnh > $height) { + self::$error = 'Минимальная высота картинки ' . $mnh . ' пикселей. (Размер этой картинки ' . $width . 'x' . $height . ')'; + } elseif ($mxh != 0 && $mxh < $height) { + self::$error = 'Максимальная высота картинки ' . $mxh . ' пикселей. (Размер этой картинки ' . $width . 'x' . $height . ')'; + } elseif (!is_dir(self::$save_path)) { + self::$error = 'Ошибка на стороне сервера!'; + } elseif (($f['size'] <= $max_mb * 1024 * 1024) && ($f['size'] > 0)) { + if ( + (preg_match('/\.(' . $exts . ')$/i', $f['name'], $ext)) && + (preg_match('/image/i', $f['type'])) + ) { + + $ext[1] = strtolower($ext[1]); + $fn = uniqid('f_', true) . '.' . $ext[1]; + $fn2 = uniqid('f_', true) . '.gif'; + if ($cnm != '') { + $fn = $cnm; + $fn2 = $cnm; + } + if (move_uploaded_file($f['tmp_name'], self::$save_path . $fn)) { + // система изменения размера , требуется Rimage + //Rimage::resize(self::$save_path . $fn, self::$save_path . $fn2); + //@unlink(self::$save_path . $fn); // удаление файла + return [$fn2, $fn, self::$save_path . $fn]; + } else { + self::$error = 'Ошибка загрузки файла'; + } + } else { + self::$error = 'Неверный тип файла. Допустимые типы : ' . $exts . ''; + } + } else { + self::$error = 'Неверный размер файла. Максимальный размер файла ' . $max_mb . ' МБ'; + } + } else { + self::$error = 'Файл не найден'; + } + return false; + } // end saveimg + + } // end class + + $ball = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`ekr`) FROM `pay_operation` WHERE `uid` = "' . $u->info['id'] . '" AND `good` > 0 LIMIT 1' + ) + ); + $ball = 0 + $ball[0]; +} else { + $ball = mysql_fetch_array( + mysql_query('SELECT SUM(`ekr`) FROM `pay_operation` WHERE `uid` = "' . $user['id'] . '" AND `good` > 0 LIMIT 1') + ); + $ball = 0 + $ball[0]; } $day1def = 50; //сколько екр. в день можно менять на кр. -$day2def = 1000 * ($u->info['level']-7); //сколько кр. в день можно менять на екр. +$day2def = 1000 * ($u->info['level'] - 7); //сколько кр. в день можно менять на екр. $day1 = $day1def; $day2 = $day2def; -if( $day2 < 0 ) { $day2 = 0; } +if ($day2 < 0) { + $day2 = 0; +} $timetoday = strtotime(date('d.m.Y')); // -$dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен ЕКР на КР" LIMIT 1')); -$dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен КР на ЕКР" LIMIT 1')); +$dc1 = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен ЕКР на КР" LIMIT 1' + ) +); +$dc2 = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен КР на ЕКР" LIMIT 1' + ) +); $dc1 = $dc1[0]; $dc2 = $dc2[0]; -$day1 = round($day1+$dc1,2); -$day2 = round($day2+$dc2,2); +$day1 = round($day1 + $dc1, 2); +$day2 = round($day2 + $dc2, 2); -if($day1 < 0) { $day1 = 0; } -if($day2 < 0) { $day2 = 0; } +if ($day1 < 0) { + $day1 = 0; +} +if ($day2 < 0) { + $day2 = 0; +} $b1 = 0; //бонус накопительный $bt = mysql_fetch_array(mysql_query('SELECT * FROM `bank_table` ORDER BY `time` DESC LIMIT 1')); -$bns = array( - array( 0 , 0 , 0 ), - array( 10 , 1 , 0 ), - array( 50 , 2 , 0 ), - array( 100 , 3 , 0 ), - array( 200 , 4 , 0 ), - array( 300 , 5 , 0 ), - array( 400 , 6 , 0 ), - array( 500 , 7 , 0 ), - array( 600 , 8 , 0 ), - array( 700 , 9 , 0 ), - array( 800 , 10 , 0 ), - array( 900 , 11 , 0 ), - array( 1000 , 13 , 1 ), - array( 1100 , 15 , 2 ), - array( 1200 , 17 , 3 ), - array( 1300 , 19 , 4 ), - array( 1500 , 21 , 5 ), - array( 1700 , 23 , 6 ), - array( 2000 , 25 , 7 ), - array( 2500 , 27 , 8 ), - array( 3000 , 30 , 9 ) -); +$bns = [ + [0, 0, 0], + [10, 1, 0], + [50, 2, 0], + [100, 3, 0], + [200, 4, 0], + [300, 5, 0], + [400, 6, 0], + [500, 7, 0], + [600, 8, 0], + [700, 9, 0], + [800, 10, 0], + [900, 11, 0], + [1000, 13, 1], + [1100, 15, 2], + [1200, 17, 3], + [1300, 19, 4], + [1500, 21, 5], + [1700, 23, 6], + [2000, 25, 7], + [2500, 27, 8], + [3000, 30, 9], +]; -$bns2 = array( - array(0,0), - array(10,10), - array(20,10), - array(30,10), - array(40,10), - array(50,10), - array(60,10), - array(70,10), - array(80,10), - array(90,10), - array(100,20) -); +$bns2 = [ + [0, 0], + [10, 10], + [20, 10], + [30, 10], + [40, 10], + [50, 10], + [60, 10], + [70, 10], + [80, 10], + [90, 10], + [100, 20], +]; $i = 0; -while( $i < count($bns) ) { - if( isset($bns[$i][0]) && $ball > $bns[$i][0] ) { - $b1 = $i; - } - $i++; +while ($i < count($bns)) { + if (isset($bns[$i][0]) && $ball > $bns[$i][0]) { + $b1 = $i; + } + $i++; } -if( isset($backdoor) ) { - $i = 0; - while( $i < count($bns2) ) { - if( isset($bns2[$i][0]) && $pay['ekr'] >= $bns2[$i][0] ) { - $b2 = $i; - } - $i++; - } +if (isset($backdoor)) { + $i = 0; + while ($i < count($bns2)) { + if (isset($bns2[$i][0]) && $pay['ekr'] >= $bns2[$i][0]) { + $b2 = $i; + } + $i++; + } } -if(!isset($backdoor)) { - - if(isset($_POST['do']) && $_POST['do'] == 'newShadow') { - $o = mysql_fetch_array(mysql_query('SELECT * FROM `_obraz` WHERE `uid` = "'.$u->info['id'].'" AND `good` = 0 AND `cancel` = 0 AND `img` = "'.mysql_real_escape_string($_POST['ffinput']).'" LIMIT 1')); - if(!isset($o['id'])) { - $u->error = 'Данный образ не найден! Возможно он уже был подтвержден!'; - }elseif( $o['price'] > $u->info['money2'] ) { - $u->error = 'На счету недостаточно ЕКР'; - }else{ - // - $u->info['money2'] -= $o['price']; - mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - mysql_query('UPDATE `_obraz` SET `good` = "'.time().'" WHERE `id` = "'.$o['id'].'" LIMIT 1'); - if( $o['type'] == 1 || $o['type'] == 2 ) { - //Личный или Клановый - copy('clan_prw/'.$o['img'],'./img.new-combats.com/i/obraz/'.$o['sex'].'/buy'.$o['id'].'.gif'); - }elseif( $o['type'] == 3 ) { - //Питомец - copy('clan_prw/'.$o['img'],'./img.new-combats.com/pet/buy'.$o['id'].'.gif'); - }elseif( $o['type'] == 5 ) { - //Питомец - copy('clan_prw/'.$o['img'],'./img.new-combats.com/i/smile/s'.$o['id'].'.gif'); - } - // - if( $_POST['ffsex'] == 1 ) { - $o['sex'] = 1; - }elseif( $_POST['ffsex'] == 0 ) { - $o['sex'] = 0; - } - // - if( $o['clan'] > 0 ) { - $o['uid1'] = 0; - }else{ - $o['uid1'] = $o['uid']; - } - // - if( $o['type'] == 1 || $o['type'] == 2 ) { - //Личный и клановый - mysql_query('INSERT INTO `obraz` ( - `sex`,`uid`,`img`,`usr_add`,`clan` - ) VALUES ( - "'.$o['sex'].'","'.$o['uid1'].'","buy'.$o['id'].'.gif","'.$o['uid'].'","'.$o['clan'].'" - )'); - }elseif( $o['type'] == 3 ) { - //Питомца - mysql_query('INSERT INTO `obraz_pet` ( - `uid`,`time`,`img` - ) VALUES ( - "'.$u->info['id'].'","'.time().'","'.mysql_real_escape_string('buy'.$o['id'].'.gif').'" - )'); - }elseif( $o['type'] == 5 ) { - //Смайлик - $u->info['add_smiles'] .= ',s'.$o['id'].''; - $u->info['add_smiles'] = ltrim($u->info['add_smiles'],','); - mysql_query('UPDATE `users` SET `add_smiles` = "'.$u->info['add_smiles'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - // - if( $o['type'] == 1 ) { - $u->error = 'Личный образ успешно установлен! Можете выбрать его в инвентаре, в разделе Образ.'; - }elseif( $o['type'] == 2 ) { - $u->error = 'Клановый образ успешно установлен! Можете выбрать его в инвентаре, в разделе Образ.'; - }elseif( $o['type'] == 3 ) { - $u->error = 'Личный образ питомца успешно установлен! Можете выбрать его в инвентаре, в разделе Звери.'; - }elseif( $o['type'] == 5 ) { - $u->error = 'Личный смайлик успешно установлен! Можете выбрать его в разделе Личные смайлики. Код смайлика :s'.$o['id'].':'; - } - } - }elseif(isset($_FILES['img'])) { - //Личный образ - $ekr = 100; - if( $u->info['money2'] < $ekr ) { - echo '{"err":"На счету недостаточно ЕКР"}'; - }else{ - $obraz = 'f_shadow1_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#shadow1').'.gif'; - // - if($file = upload::saveimg('img',0.5,'gif',$obraz,120,120,220,220)) { - // - //$u->info['money2'] -= $ekr; - //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - mysql_query('INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( - "'.$u->info['id'].'", - "'.time().'", - "'.mysql_real_escape_string($ekr).'", - "0", - "0", - "'.mysql_real_escape_string($obraz).'", - "'.$u->info['sex'].'", - "1", - "0" - ) '); - echo '{"img":"'.$obraz.'"}'; - }else{ - echo '{"err":"'.upload::$error.'"}'; - } - } - die(); - }elseif(isset($_FILES['img5'])) { - //Личный смайлик - $ekr = 10; - $ekr_smile = 10; - if( $u->info['money2'] < $ekr ) { - echo '{"err":"На счету недостаточно ЕКР"}'; - }else{ - $obraz = 'f_smile_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#smile').'.gif'; - // - if($file = upload::saveimg('img5',0.05,'gif',$obraz,15,100,15,50)) { - // - //$u->info['money2'] -= $ekr; - //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - mysql_query('INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( - "'.$u->info['id'].'", - "'.time().'", - "'.mysql_real_escape_string($ekr).'", - "0", - "0", - "'.mysql_real_escape_string($obraz).'", - "0", - "5", - "0" - ) '); - echo '{"img":"'.$obraz.'"}'; - }else{ - echo '{"err":"'.upload::$error.'"}'; - } - } - die(); - }elseif(isset($_FILES['img2'])) { - //Клановый образ - $ekr = 49.99; - if( $u->info['clan'] == 0 ) { - echo '{"err":"Вы должны состоять в клане"}'; - }elseif( $u->info['money2'] < $ekr ) { - echo '{"err":"На счету недостаточно ЕКР"}'; - }else{ - $obraz = 'f_shadow2_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#shadow2').'.gif'; - // - if($file = upload::saveimg('img2',0.3,'gif',$obraz,120,120,220,220)) { - // - //$u->info['money2'] -= $ekr; - //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - mysql_query('INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( - "'.$u->info['id'].'", - "'.time().'", - "'.mysql_real_escape_string($ekr).'", - "0", - "0", - "'.mysql_real_escape_string($obraz).'", - "'.$u->info['sex'].'", - "2", - "'.$u->info['clan'].'" - ) '); - echo '{"img":"'.$obraz.'"}'; - }else{ - echo '{"err":"'.upload::$error.'"}'; - } - } - die(); - }elseif(isset($_FILES['img4'])) { - //Питомец образ - $ekr = 4.99; - if( $u->info['money2'] < $ekr ) { - echo '{"err":"На счету недостаточно ЕКР"}'; - }else{ - $obraz = 'f_shadow3_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#shadow3').'.gif'; - // - if($file = upload::saveimg('img4',0.3,'gif',$obraz,120,120,40,40)) { - // - //$u->info['money2'] -= $ekr; - //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - mysql_query('INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( - "'.$u->info['id'].'", - "'.time().'", - "'.mysql_real_escape_string($ekr).'", - "0", - "0", - "'.mysql_real_escape_string($obraz).'", - "'.$u->info['sex'].'", - "3", - "'.$u->info['clan'].'" - ) '); - echo '{"img":"'.$obraz.'"}'; - }else{ - echo '{"err":"'.upload::$error.'"}'; - } - } - die(); - }elseif(isset($_POST['kr001'])) { - //Обмен екр на кр. - $kr = round($_POST['kr001'],2); - if( $c['crtoecr'] < 0.01 ) { - $u->error = 'Сегодня обменник закрыт.'; - }elseif( $day2 < 0.01 ) { - $u->error = 'Сегодня для вас обмен закрыт, приходите завтра.'; - }elseif( $kr < round($c['crtoecr']/100,2) ) { - $u->error = 'Минимальная сумма обмена '.round($c['crtoecr']/100,2).' КР.'; - }elseif( $kr > $day2 ) { - $u->error = 'Вы можете обменять еще '.$day2.' КР сегодня.'; - }elseif( $kr > $u->info['money']) { - $u->error = 'Недостаточно денег для обмена.'; - }else{ - $ekr = round($kr / $c['crtoecr'],2); - $u->error = 'Вы успешно обменяли '.$kr.' КР на '.$ekr.' ЕКР.'; - // - $u->info['money'] -= $kr; - $u->info['money2'] += $ekr; - // - mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'",`money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `user_operation` ( `uid`,`time`,`money`,`money2`,`type`,`b1`,`b2` ) VALUES ( - "'.$u->info['id'].'","'.time().'","'.round(-$kr,2).'","'.round($ekr,2).'","Обмен КР на ЕКР","'.$u->info['money'].'","'.$u->info['money2'].'" - )'); - } - $dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен ЕКР на КР" LIMIT 1')); - $dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен КР на ЕКР" LIMIT 1')); - $dc1 = $dc1[0]; - $dc2 = $dc2[0]; - $day1 = round($day1def+$dc1,2); - $day2 = round($day2def+$dc2,2); - }elseif(isset($_POST['ekr2'])) { - //Обмен екр на кр. - $ekr = round($_POST['ekr2'],2); - if( $c['ecrtocr']*2.5 < 0.01 ) { - $u->error = 'Сегодня обменник закрыт.'; - }elseif( $day1 < 0.01 ) { - $u->error = 'Сегодня для вас обмен закрыт, приходите завтра.'; - }elseif( $ekr < 0.01 ) { - $u->error = 'Минимальная сумма обмена 0.01 ЕКР.'; - }elseif( $ekr > $day1 ) { - $u->error = 'Вы можете обменять еще '.$day1.' ЕКР сегодня.'; - }elseif( $ekr > $u->info['money2']) { - $u->error = 'Недостаточно денег для обмена.'; - }else{ - $kr = round($ekr * $c['ecrtocr']*2.5,2); - $u->error = 'Вы успешно обменяли '.$ekr.' ЕКР на '.$kr.' КР.'; - // - $u->info['money'] += $kr; - $u->info['money2'] -= $ekr; - // - mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'",`money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `user_operation` ( `uid`,`time`,`money`,`money2`,`type`,`b1`,`b2` ) VALUES ( - "'.$u->info['id'].'","'.time().'","'.round($kr,2).'","'.round(-$ekr,2).'","Обмен ЕКР на КР","'.$u->info['money'].'","'.$u->info['money2'].'" - )'); - } - $dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен ЕКР на КР" LIMIT 1')); - $dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен КР на ЕКР" LIMIT 1')); - $dc1 = $dc1[0]; - $dc2 = $dc2[0]; - $day1 = round($day1def+$dc1,2); - $day2 = round($day2def+$dc2,2); - }elseif(isset($_POST['login'])) { - // - function en_ru($txt) { - $g = false; - $en = preg_match("/^(([0-9a-zA-Z _-])+)$/i", $txt); - $ru = preg_match("/^(([0-9а-яА-Я _-])+)$/i", $txt); - if(($ru && $en) || (!$ru && !$en)) { - $g = true; - } - return $g; - } - // - function testBad($txt) { - $white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёйцукенгшщзхъфывапролджэячсмитьбю'; - $r = false; - $i = 0; - while( $i != -1 ) { - if( isset($txt[$i]) ) { - $g = false; - $j = 0; - while( $j != -1 ) { - if(isset($white[$j])) { - if( $white[$j] == $txt[$i] ) { - $g = true; - } - }else{ - $j = -2; - } - $j++; - } - if( $g == false ) { - $r = true; - } - }else{ - $i = -2; - } - $i++; - } - return $r; - } - - function is_login($login) { - $r = true; - // - $login = htmlspecialchars($login,NULL,'cp1251'); - // - $bad = array( - 'Мусорщик' => 1, - 'Мироздатель' => 1 - ); - // - $login_db = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `login` = "'.mysql_real_escape_string($login).'" LIMIT 1')); - if( isset($login_db['id']) || isset($bad[$login]) ) { - $r = false; - }else{ - $true = true; - // - /* - Логин может содержать от 4 до 16 символов, и состоять только из букв русского ИЛИ английского алфавита, цифр, символов '_', '-' и пробела. - Логин не может начинаться или заканчиваться символами '_', '-' или пробелом. - */ - // - $login = str_replace(' ',' ',$login); - $login = str_replace('%',' ',$login); - $login = str_replace(' ',' ',$login); - // - if( strlen($login) > 16 ) { - $true = false; - }elseif( strlen($login) < 4 ) { - $true = false; - }elseif( strripos($login,' ') == true ) { - $true = false; - }elseif( substr($login,1) == ' ' || substr($login,-1) == ' ' ) { - $true = false; - }elseif( substr($login,1) == '-' || substr($login,-1) == '-' ) { - $true = false; - }elseif( substr($login,1) == '_' || substr($login,-1) == '_' ) { - $true = false; - }elseif( testBad($login) == true ) { - $true = false; - }elseif( en_ru(str_replace('ё','е',str_replace('Ё','Е',$login))) == true ) { - $true = false; - } - // - if( $true == false ) { - $r = false; - }else{ - $r = true; - } - } - return $r; - } - if( $u->info['login'] == $_POST['login'] ) { - $u->error = 'Выберите другой логин...'; - }elseif( $u->info['money2'] < 25 ) { - $u->error = 'Недостаточно средств.'; - }else{ - $login = htmlspecialchars($_POST['login'],NULL,'cp1251'); - if( is_login($login) == true ) { - mysql_query('INSERT INTO `lastnames` ( `uid`,`login`,`newlogin`,`time` ) VALUES ( - "'.$u->info['id'].'","'.$u->info['login'].'","'.mysql_real_escape_string($login).'","'.time().'" - )'); - $u->info['login_last'] = $u->info['login']; - $u->info['login'] = $login; - $u->info['money2'] -= 25; - // - mysql_query("UPDATE `items_users` SET `data` = replace( `data` , 'sudba=".$u->info['login_last']."', 'sudba=".mysql_real_escape_string($u->info['login'])."') WHERE `data` LIKE '%sudba=".mysql_real_escape_string($u->info['login_last'])."%' AND `uid` = '".$u->info['id']."'"); - // - mysql_query('UPDATE `users` SET `login` = "'.mysql_real_escape_string($u->info['login']).'", `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = 'Вы успешно сменили логин на "'.$u->info['login'].'" перезайдите в игру с главной страницы.'; - }else{ - $u->error = 'Выберите другой логин...'; - } - } - }elseif(isset($_GET['buy_ekr'])) { - // - $mrh_login = "65643"; - $mrh_pass1 = "qtzl0igb"; - // - $inv_id = 0; - // - $out_ekr = round($_POST['ekr'],2); - if( $out_ekr < 0) { - // - $out_ekr = 0; - } - $out_summ = round($out_ekr*$bt['cur'],2); - $inv_desc = 'Приобрести '.$out_ekr.' екр., персонаж №'.$u->info['id'].', дилер №'.round((int)$_POST['ref']).''; - // - $shp_item = 0; - // - //Бонус опытовый, первичный и накопительный - $out_ekr0 = $out_ekr; - // - $out_ekr += round($out_ekr0/100*$bns[$b1][1],2); - $i = 0; - while( $i < count($bns2) ) { - if( isset($bns2[$i][0]) && $out_ekr >= $bns2[$i][0] ) { - $b2_2 = $i; - } - $i++; - } - $out_ekr += round($out_ekr0/100*$bns2[$b2_2][1],2); - if($ball == 0) { - $out_ekr += round($out_ekr0/100*20,2); - } - // - //Добавляем в базу - mysql_query('INSERT INTO `pay_operation` ( - `uid`,`bank`,`code`,`ekr`,`time`,`good`,`cur`,`var`,`val`,`ref`,`ref2`,`ip`,`date` - ) VALUES ( - "'.$u->info['id'].'","'.$u->bank['id'].'","'.mysql_real_escape_string((int)$_GET['code']).'","'.mysql_real_escape_string($out_ekr).'", - "'.time().'","0","'.mysql_real_escape_string($cur['cur']).'","buy_ekr","0","'.mysql_real_escape_string($u->info['host_reg']).'", - "'.mysql_real_escape_string((int)$_GET['ref']).'","'.mysql_real_escape_string(IP).'","'.date('Y-m-d H:i:s').'" - )'); - - $shp_item = mysql_insert_id(); - - if($shp_item > 0) { - //ожидаем оплаты - }else{ - die('Ошибка в обработке платежа, обратитесь к Администрации'); - } - if($out_ekr < 1) { - die('Минимальная сумма покупки 1 екр.'); - } - // - // предлагаемая валюта платежа - // default payment e-currency - $in_curr = ""; - - // язык - // language - $culture = "ru"; - - // формирование подписи - // generate signature - - - - - //$crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item"); - $crc = md5($mrh_login.':'.$out_summ.':'.$mrh_pass1.':'.$shp_item); - - // форма оплаты товара - // payment form - $url = 'https://www.free-kassa.ru/merchant/cash.php?'; - $url .= 'm='.$mrh_login.'&'; - $url .= 'oa='.$out_summ.'&'; - $url .= 'InvId='.$inv_id.'&'; - $url .= 'Desc='.$inv_desc.'&'; - $url .= 's='.$crc.'&'; - $url .= 'o='.$shp_item.'&'; - $url .= 'i='.$in_curr.'&'; - $url .= 'lang='.$culture.'&'; - // - header('location: '.$url); - die(); - print "". - "
    ". - "Сумма платежа: ".$out_ekr." Екр. ". - "". - "". - "". - "". - "". - "". - "". - "". - "
    ". - "(Все средства идут на развитие и улучшение игры)". - "
    "; - die(); - } +if (isset($backdoor)) { + return; +} +if (isset($_POST['do']) && $_POST['do'] == 'newShadow') { + $o = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `_obraz` WHERE `uid` = "' . $u->info['id'] . '" AND `good` = 0 AND `cancel` = 0 AND `img` = "' . mysql_real_escape_string( + $_POST['ffinput'] + ) . '" LIMIT 1' + ) + ); + if (!isset($o['id'])) { + $u->error = 'Данный образ не найден! Возможно он уже был подтвержден!'; + } elseif ($o['price'] > $u->info['money2']) { + $u->error = 'На счету недостаточно ЕКР'; + } else { + // + $u->info['money2'] -= $o['price']; + mysql_query( + 'UPDATE `users` SET `money2` = "' . $u->info['money2'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + // + mysql_query('UPDATE `_obraz` SET `good` = "' . time() . '" WHERE `id` = "' . $o['id'] . '" LIMIT 1'); + if ($o['type'] == 1 || $o['type'] == 2) { + //Личный или Клановый + copy('clan_prw/' . $o['img'], './img.new-combats.com/i/obraz/' . $o['sex'] . '/buy' . $o['id'] . '.gif'); + } elseif ($o['type'] == 3) { + //Питомец + copy('clan_prw/' . $o['img'], './img.new-combats.com/pet/buy' . $o['id'] . '.gif'); + } elseif ($o['type'] == 5) { + //Питомец + copy('clan_prw/' . $o['img'], './img.new-combats.com/i/smile/s' . $o['id'] . '.gif'); + } + // + if ($_POST['ffsex'] == 1) { + $o['sex'] = 1; + } elseif ($_POST['ffsex'] == 0) { + $o['sex'] = 0; + } + // + if ($o['clan'] > 0) { + $o['uid1'] = 0; + } else { + $o['uid1'] = $o['uid']; + } + // + if ($o['type'] == 1 || $o['type'] == 2) { + //Личный и клановый + mysql_query( + 'INSERT INTO `obraz` ( + `sex`,`uid`,`img`,`usr_add`,`clan` + ) VALUES ( + "' . $o['sex'] . '","' . $o['uid1'] . '","buy' . $o['id'] . '.gif","' . $o['uid'] . '","' . $o['clan'] . '" + )' + ); + } elseif ($o['type'] == 3) { + //Питомца + mysql_query( + 'INSERT INTO `obraz_pet` ( + `uid`,`time`,`img` + ) VALUES ( + "' . $u->info['id'] . '","' . time() . '","' . mysql_real_escape_string('buy' . $o['id'] . '.gif') . '" + )' + ); + } elseif ($o['type'] == 5) { + //Смайлик + $u->info['add_smiles'] .= ',s' . $o['id'] . ''; + $u->info['add_smiles'] = ltrim($u->info['add_smiles'], ','); + mysql_query( + 'UPDATE `users` SET `add_smiles` = "' . $u->info['add_smiles'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + } + // + if ($o['type'] == 1) { + $u->error = 'Личный образ успешно установлен! Можете выбрать его в инвентаре, в разделе Образ.'; + } elseif ($o['type'] == 2) { + $u->error = 'Клановый образ успешно установлен! Можете выбрать его в инвентаре, в разделе Образ.'; + } elseif ($o['type'] == 3) { + $u->error = 'Личный образ питомца успешно установлен! Можете выбрать его в инвентаре, в разделе Звери.'; + } elseif ($o['type'] == 5) { + $u->error = 'Личный смайлик успешно установлен! Можете выбрать его в разделе Личные смайлики. Код смайлика :s' . $o['id'] . ':'; + } + } +} elseif (isset($_FILES['img'])) { + //Личный образ + $ekr = 100; + if ($u->info['money2'] < $ekr) { + echo '{"err":"На счету недостаточно ЕКР"}'; + } else { + $obraz = 'f_shadow1_' . $u->info['id'] . '-' . md5((time() - rand(0, 1000)) . '#shadow1') . '.gif'; + // + if ($file = upload::saveimg('img', 0.5, 'gif', $obraz, 120, 120, 220, 220)) { + // + //$u->info['money2'] -= $ekr; + //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + // + mysql_query( + 'INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( + "' . $u->info['id'] . '", + "' . time() . '", + "' . mysql_real_escape_string($ekr) . '", + "0", + "0", + "' . mysql_real_escape_string($obraz) . '", + "' . $u->info['sex'] . '", + "1", + "0" + ) ' + ); + echo '{"img":"' . $obraz . '"}'; + } else { + echo '{"err":"' . upload::$error . '"}'; + } + } + die(); +} elseif (isset($_FILES['img5'])) { + //Личный смайлик + $ekr = 10; + $ekr_smile = 10; + if ($u->info['money2'] < $ekr) { + echo '{"err":"На счету недостаточно ЕКР"}'; + } else { + $obraz = 'f_smile_' . $u->info['id'] . '-' . md5((time() - rand(0, 1000)) . '#smile') . '.gif'; + // + if ($file = upload::saveimg('img5', 0.05, 'gif', $obraz, 15, 100, 15, 50)) { + // + //$u->info['money2'] -= $ekr; + //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + // + mysql_query( + 'INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( + "' . $u->info['id'] . '", + "' . time() . '", + "' . mysql_real_escape_string($ekr) . '", + "0", + "0", + "' . mysql_real_escape_string($obraz) . '", + "0", + "5", + "0" + ) ' + ); + echo '{"img":"' . $obraz . '"}'; + } else { + echo '{"err":"' . upload::$error . '"}'; + } + } + die(); +} elseif (isset($_FILES['img2'])) { + //Клановый образ + $ekr = 49.99; + if ($u->info['clan'] == 0) { + echo '{"err":"Вы должны состоять в клане"}'; + } elseif ($u->info['money2'] < $ekr) { + echo '{"err":"На счету недостаточно ЕКР"}'; + } else { + $obraz = 'f_shadow2_' . $u->info['id'] . '-' . md5((time() - rand(0, 1000)) . '#shadow2') . '.gif'; + // + if ($file = upload::saveimg('img2', 0.3, 'gif', $obraz, 120, 120, 220, 220)) { + // + //$u->info['money2'] -= $ekr; + //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + // + mysql_query( + 'INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( + "' . $u->info['id'] . '", + "' . time() . '", + "' . mysql_real_escape_string($ekr) . '", + "0", + "0", + "' . mysql_real_escape_string($obraz) . '", + "' . $u->info['sex'] . '", + "2", + "' . $u->info['clan'] . '" + ) ' + ); + echo '{"img":"' . $obraz . '"}'; + } else { + echo '{"err":"' . upload::$error . '"}'; + } + } + die(); +} elseif (isset($_FILES['img4'])) { + //Питомец образ + $ekr = 4.99; + if ($u->info['money2'] < $ekr) { + echo '{"err":"На счету недостаточно ЕКР"}'; + } else { + $obraz = 'f_shadow3_' . $u->info['id'] . '-' . md5((time() - rand(0, 1000)) . '#shadow3') . '.gif'; + // + if ($file = upload::saveimg('img4', 0.3, 'gif', $obraz, 120, 120, 40, 40)) { + // + //$u->info['money2'] -= $ekr; + //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + // + mysql_query( + 'INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( + "' . $u->info['id'] . '", + "' . time() . '", + "' . mysql_real_escape_string($ekr) . '", + "0", + "0", + "' . mysql_real_escape_string($obraz) . '", + "' . $u->info['sex'] . '", + "3", + "' . $u->info['clan'] . '" + ) ' + ); + echo '{"img":"' . $obraz . '"}'; + } else { + echo '{"err":"' . upload::$error . '"}'; + } + } + die(); +} elseif (isset($_POST['kr001'])) { + //Обмен екр на кр. + $kr = round($_POST['kr001'], 2); + if ($c['crtoecr'] < 0.01) { + $u->error = 'Сегодня обменник закрыт.'; + } elseif ($day2 < 0.01) { + $u->error = 'Сегодня для вас обмен закрыт, приходите завтра.'; + } elseif ($kr < round($c['crtoecr'] / 100, 2)) { + $u->error = 'Минимальная сумма обмена ' . round($c['crtoecr'] / 100, 2) . ' КР.'; + } elseif ($kr > $day2) { + $u->error = 'Вы можете обменять еще ' . $day2 . ' КР сегодня.'; + } elseif ($kr > $u->info['money']) { + $u->error = 'Недостаточно денег для обмена.'; + } else { + $ekr = round($kr / $c['crtoecr'], 2); + $u->error = 'Вы успешно обменяли ' . $kr . ' КР на ' . $ekr . ' ЕКР.'; + // + $u->info['money'] -= $kr; + $u->info['money2'] += $ekr; + // + mysql_query( + 'UPDATE `users` SET `money` = "' . $u->info['money'] . '",`money2` = "' . $u->info['money2'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + mysql_query( + 'INSERT INTO `user_operation` ( `uid`,`time`,`money`,`money2`,`type`,`b1`,`b2` ) VALUES ( + "' . $u->info['id'] . '","' . time() . '","' . round(-$kr, 2) . '","' . round( + $ekr, 2 + ) . '","Обмен КР на ЕКР","' . $u->info['money'] . '","' . $u->info['money2'] . '" + )' + ); + } + $dc1 = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен ЕКР на КР" LIMIT 1' + ) + ); + $dc2 = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен КР на ЕКР" LIMIT 1' + ) + ); + $dc1 = $dc1[0]; + $dc2 = $dc2[0]; + $day1 = round($day1def + $dc1, 2); + $day2 = round($day2def + $dc2, 2); +} elseif (isset($_POST['ekr2'])) { + //Обмен екр на кр. + $ekr = round($_POST['ekr2'], 2); + if ($c['ecrtocr'] * 2.5 < 0.01) { + $u->error = 'Сегодня обменник закрыт.'; + } elseif ($day1 < 0.01) { + $u->error = 'Сегодня для вас обмен закрыт, приходите завтра.'; + } elseif ($ekr < 0.01) { + $u->error = 'Минимальная сумма обмена 0.01 ЕКР.'; + } elseif ($ekr > $day1) { + $u->error = 'Вы можете обменять еще ' . $day1 . ' ЕКР сегодня.'; + } elseif ($ekr > $u->info['money2']) { + $u->error = 'Недостаточно денег для обмена.'; + } else { + $kr = round($ekr * $c['ecrtocr'] * 2.5, 2); + $u->error = 'Вы успешно обменяли ' . $ekr . ' ЕКР на ' . $kr . ' КР.'; + // + $u->info['money'] += $kr; + $u->info['money2'] -= $ekr; + // + mysql_query( + 'UPDATE `users` SET `money` = "' . $u->info['money'] . '",`money2` = "' . $u->info['money2'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + mysql_query( + 'INSERT INTO `user_operation` ( `uid`,`time`,`money`,`money2`,`type`,`b1`,`b2` ) VALUES ( + "' . $u->info['id'] . '","' . time() . '","' . round($kr, 2) . '","' . round( + -$ekr, 2 + ) . '","Обмен ЕКР на КР","' . $u->info['money'] . '","' . $u->info['money2'] . '" + )' + ); + } + $dc1 = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен ЕКР на КР" LIMIT 1' + ) + ); + $dc2 = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен КР на ЕКР" LIMIT 1' + ) + ); + $dc1 = $dc1[0]; + $dc2 = $dc2[0]; + $day1 = round($day1def + $dc1, 2); + $day2 = round($day2def + $dc2, 2); +} elseif (isset($_POST['login'])) { + // + function en_ru($txt) + { + $g = false; + $en = preg_match("/^(([0-9a-zA-Z _-])+)$/i", $txt); + $ru = preg_match("/^(([0-9а-яА-Я _-])+)$/i", $txt); + if (($ru && $en) || (!$ru && !$en)) { + $g = true; + } + return $g; + } + + // + function testBad($txt) + { + $white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёйцукенгшщзхъфывапролджэячсмитьбю'; + $r = false; + $i = 0; + while ($i != -1) { + if (isset($txt[$i])) { + $g = false; + $j = 0; + while ($j != -1) { + if (isset($white[$j])) { + if ($white[$j] == $txt[$i]) { + $g = true; + } + } else { + $j = -2; + } + $j++; + } + if ($g == false) { + $r = true; + } + } else { + $i = -2; + } + $i++; + } + return $r; + } + + function is_login($login) + { + $r = true; + // + $login = htmlspecialchars($login, null, 'cp1251'); + // + $bad = [ + 'Мусорщик' => 1, + 'Мироздатель' => 1, + ]; + // + $login_db = mysql_fetch_array( + mysql_query('SELECT `id` FROM `users` WHERE `login` = "' . mysql_real_escape_string($login) . '" LIMIT 1') + ); + if (isset($login_db['id']) || isset($bad[$login])) { + $r = false; + } else { + $true = true; + // + /* + Логин может содержать от 4 до 16 символов, и состоять только из букв русского ИЛИ английского алфавита, цифр, символов '_', '-' и пробела. + Логин не может начинаться или заканчиваться символами '_', '-' или пробелом. + */ + // + $login = str_replace(' ', ' ', $login); + $login = str_replace('%', ' ', $login); + $login = str_replace(' ', ' ', $login); + // + if (strlen($login) > 16) { + $true = false; + } elseif (strlen($login) < 4) { + $true = false; + } elseif (strripos($login, ' ') == true) { + $true = false; + } elseif (substr($login, 1) == ' ' || substr($login, -1) == ' ') { + $true = false; + } elseif (substr($login, 1) == '-' || substr($login, -1) == '-') { + $true = false; + } elseif (substr($login, 1) == '_' || substr($login, -1) == '_') { + $true = false; + } elseif (testBad($login) == true) { + $true = false; + } elseif (en_ru(str_replace('ё', 'е', str_replace('Ё', 'Е', $login))) == true) { + $true = false; + } + // + if ($true == false) { + $r = false; + } else { + $r = true; + } + } + return $r; + } + + if ($u->info['login'] == $_POST['login']) { + $u->error = 'Выберите другой логин...'; + } elseif ($u->info['money2'] < 25) { + $u->error = 'Недостаточно средств.'; + } else { + $login = htmlspecialchars($_POST['login'], null, 'cp1251'); + if (is_login($login) == true) { + mysql_query( + 'INSERT INTO `lastnames` ( `uid`,`login`,`newlogin`,`time` ) VALUES ( + "' . $u->info['id'] . '","' . $u->info['login'] . '","' . mysql_real_escape_string( + $login + ) . '","' . time() . '" + )' + ); + $u->info['login_last'] = $u->info['login']; + $u->info['login'] = $login; + $u->info['money2'] -= 25; + // + mysql_query( + "UPDATE `items_users` SET `data` = replace( `data` , 'sudba=" . $u->info['login_last'] . "', 'sudba=" . mysql_real_escape_string( + $u->info['login'] + ) . "') WHERE `data` LIKE '%sudba=" . mysql_real_escape_string( + $u->info['login_last'] + ) . "%' AND `uid` = '" . $u->info['id'] . "'" + ); + // + mysql_query( + 'UPDATE `users` SET `login` = "' . mysql_real_escape_string( + $u->info['login'] + ) . '", `money2` = "' . $u->info['money2'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + $u->error = 'Вы успешно сменили логин на "' . $u->info['login'] . '" перезайдите в игру с главной страницы.'; + } else { + $u->error = 'Выберите другой логин...'; + } + } +} elseif (isset($_GET['buy_ekr'])) { + // + $mrh_login = "65643"; + $mrh_pass1 = "qtzl0igb"; + // + $inv_id = 0; + // + $out_ekr = round($_POST['ekr'], 2); + if ($out_ekr < 0) { + // + $out_ekr = 0; + } + $out_summ = round($out_ekr * $bt['cur'], 2); + $inv_desc = 'Приобрести ' . $out_ekr . ' екр., персонаж №' . $u->info['id'] . ', дилер №' . round( + (int)$_POST['ref'] + ) . ''; + // + $shp_item = 0; + // + //Бонус опытовый, первичный и накопительный + $out_ekr0 = $out_ekr; + // + $out_ekr += round($out_ekr0 / 100 * $bns[$b1][1], 2); + $i = 0; + while ($i < count($bns2)) { + if (isset($bns2[$i][0]) && $out_ekr >= $bns2[$i][0]) { + $b2_2 = $i; + } + $i++; + } + $out_ekr += round($out_ekr0 / 100 * $bns2[$b2_2][1], 2); + if ($ball == 0) { + $out_ekr += round($out_ekr0 / 100 * 20, 2); + } + // + //Добавляем в базу + mysql_query( + 'INSERT INTO `pay_operation` ( + `uid`,`bank`,`code`,`ekr`,`time`,`good`,`cur`,`var`,`val`,`ref`,`ref2`,`ip`,`date` + ) VALUES ( + "' . $u->info['id'] . '","' . $u->bank['id'] . '","' . mysql_real_escape_string( + (int)$_GET['code'] + ) . '","' . mysql_real_escape_string($out_ekr) . '", + "' . time() . '","0","' . mysql_real_escape_string( + $cur['cur'] + ) . '","buy_ekr","0","' . mysql_real_escape_string($u->info['host_reg']) . '", + "' . mysql_real_escape_string((int)$_GET['ref']) . '","' . mysql_real_escape_string(IP) . '","' . date( + 'Y-m-d H:i:s' + ) . '" + )' + ); + + $shp_item = mysql_insert_id(); + + if ($shp_item > 0) { + //ожидаем оплаты + } else { + die('Ошибка в обработке платежа, обратитесь к Администрации'); + } + if ($out_ekr < 1) { + die('Минимальная сумма покупки 1 екр.'); + } + // + // предлагаемая валюта платежа + // default payment e-currency + $in_curr = ""; + + // язык + // language + $culture = "ru"; + + // формирование подписи + // generate signature + + + //$crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item"); + $crc = md5($mrh_login . ':' . $out_summ . ':' . $mrh_pass1 . ':' . $shp_item); + + // форма оплаты товара + // payment form + $url = 'https://www.free-kassa.ru/merchant/cash.php?'; + $url .= 'm=' . $mrh_login . '&'; + $url .= 'oa=' . $out_summ . '&'; + $url .= 'InvId=' . $inv_id . '&'; + $url .= 'Desc=' . $inv_desc . '&'; + $url .= 's=' . $crc . '&'; + $url .= 'o=' . $shp_item . '&'; + $url .= 'i=' . $in_curr . '&'; + $url .= 'lang=' . $culture . '&'; + // + header('location: ' . $url); + die(); + print "" . + "
    " . + "Сумма платежа: " . $out_ekr . " Екр. " . + "" . + "" . + "" . + "" . + "" . + "" . + "" . + "" . + "
    " . + "(Все средства идут на развитие и улучшение игры)" . + "
    "; + die(); +} ?> - Покупка ЕвроКредитов - Бойцовский Клуб - - - - - - - + Покупка ЕвроКредитов - Бойцовский Клуб + + + + + + + - + .t { + border: 3px solid black; + border-collapse: collapse; + } + + .t .al { + text-align: left; + } + + .t .vam { + vertical-align: middle; + } + + .t .ac { + text-align: center; + } + + .t .b { + font-weight: bold; + } + + .t .p { + padding: 0px 5px 0px 5px; + } + + .t .btop { + border-top: 3px solid black; + border-collapse: collapse; + } + + .t .bright { + border-right: 3px solid black; + border-collapse: collapse; + } + + .t .bleft { + border-left: 3px solid black; + border-collapse: collapse; + } + + .t .bbottom { + border-bottom: 3px solid black; + border-collapse: collapse; + } + + .t .light { + background: #D6F5D3; + color: green; + font-weight: bold; + } + +
    - - - - - - info['id'])) { ?> -
    Персонаж: '.$u->microLogin($u->info['id'],1).'';?>
    - error != '' ) { - echo '
    '.$u->error.'
    '; - } - ?> - freekassa  - interkassa - - - - +
    + Накопительные бонусы +
    Акция! При первом пополнении баланса,
    Вы получаете дополнительно 20% ЕКР к сумме покупки БЕСПЛАТНО. -
    -
    -
    - Ваш накопительный бонус: % ( ЕКР) -
    + + + + + + + + - Покупка ЕКР - - - Сумма ЕКР:  
    - - - -
     
     
     
    - - + ?> + freekassa  + interkassa + + + + +
    +  
     
      +
    + + + +
    +
    Акция! При первом пополнении баланса,
    Вы получаете дополнительно 20% + ЕКР к сумме покупки БЕСПЛАТНО. +
    +
    +
    +
    + Ваш накопительный бонус: % ( ЕКР) +
    - - - -
    1 ЕКР Рублей
    1 ЕКР Доллара *
    - - * - зависит от текущих курсов валют
    - Доставка игровой валюты производится в автоматическом режиме, сразу же после оплаты! -

    - При оплате могут возникать задержки на пополнение, обычно не более 1 часа. Если по истечению нескольких часов деньги так и не поступили на ваш баланс, то необходимо обратиться в службу поддержки FREE-KASSA. -
    -

    - +
    + Покупка ЕКР - -
    -
    - -
    - Если Вы очень хотели бы положить деньги на игровой счёт, но нет подходящей платёжной системы, обратитесь за помощью к Администратору проекта. -

    -
    -
    +
    + Сумма ЕКР:  
    -
    + + + + + + + + +
    1 ЕКР Рублей
    1 ЕКР Доллара *
    + + * - зависит от текущих курсов валют
    + Доставка игровой валюты производится в автоматическом режиме, сразу же после оплаты! +

    + При оплате могут возникать задержки на пополнение, обычно не более 1 часа. Если по истечению + нескольких часов деньги так и не поступили на ваш баланс, то необходимо обратиться в службу поддержки + FREE-KASSA. +
    +

    + + + +
    +
    + +
    + Если Вы очень хотели бы положить деньги на игровой счёт, но нет подходящей платёжной системы, + обратитесь за помощью к Администратору проекта. +

    +
    + + +
    -
    - Ваш баланс счёта: info['money2']?> ЕКР и info['money']?> КР. -
    +
    +
    + Ваш баланс счёта: info['money2'] ?> ЕКР и info['money'] ?> КР. +
    -
    - Обмен -
    - Обменять ЕКР на КР по курсу 1ЕКР=КР:    
    -
    -
    - Обменять КР на ЕКР по курсу КР=1ЕКР:  
    -
    - -
    + ekre = Math.floor(ekre * 100) / 100; + var ekr4 = ekre.toFixed(2); -
    - Накопительные бонусы - - - - - - - - - - - - -
    ЕКРБонусЕКРБонус
    800 ЕКР10%3 000 ЕКР 30%
    700 ЕКР9%2 500 ЕКР 27%
    600 ЕКР8%2 000 ЕКР 25%
    500 ЕКР7%1 700 ЕКР 23%
    400 ЕКР6%1 500 ЕКР 21%
    300 ЕКР5%1 300 ЕКР 19%
    200 ЕКР4%1 200 ЕКР 17%
    100 ЕКР3%1 100 ЕКР 15%
    50 ЕКР2%1 000 ЕКР 13%
    10 ЕКР1%900 ЕКР11%
    -
    + if (document.getElementById('ekr2').value != ekre) { + document.getElementById('ekr2').value = ekr4; + } + var kre = parseFloat(ekre) * ; -
    - Оптовые бонусы + document.getElementById('calc2').value = 'Обменять ' + ekre + ' ЕКР на ' + kre.toFixed(0) + ' КР'; + } - - - - - -
    Бонус10%10%10%10%10%
    Сумма10 ЕКР20 ЕКР30 ЕКР40 ЕКР50 ЕКР
    Бонус10%10%10%10%20%
    Сумма60 ЕКР70 ЕКР80 ЕКР90 ЕКР100 ЕКР
    -
    + calc22(); + + -
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ЕКРБонусЕКРБонус
    800 ЕКР10%3 000 ЕКР 30%
    700 ЕКР9%2 500 ЕКР 27%
    600 ЕКР8%2 000 ЕКР 25%
    500 ЕКР7%1 700 ЕКР 23%
    400 ЕКР6%1 500 ЕКР 21%
    300 ЕКР5%1 300 ЕКР 19%
    200 ЕКР4%1 200 ЕКР 17%
    100 ЕКР3%1 100 ЕКР 15%
    50 ЕКР2%1 000 ЕКР 13%
    10 ЕКР1%900 ЕКР11%
    + - +
    + Оптовые бонусы -
    Коммерческие услуги
    - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Бонус10%10%10%10%10%
    Сумма10 ЕКР20 ЕКР30 ЕКР40 ЕКР50 ЕКР
    Бонус10%10%10%10%20%
    Сумма60 ЕКР70 ЕКР80 ЕКР90 ЕКР100 ЕКР
    +
    - - - -
    - Покупка личного образа - - Стоимость услуги: 100 ЕКР
    - Требования к персональному образу:
    - GIF-картинка размером 120x220 (ШхВ) и весом до 300 Кб.
    -
    - Выберите картинку: - -
    -
    + + + +
    + Покупка личного образа + + Стоимость услуги: 100 ЕКР
    + Требования к персональному образу:
    + GIF-картинка размером 120x220 (ШхВ) и весом до 300 Кб.
    +
    + Выберите картинку: + -
    -
    + function showImgPreviewPet(img) { + document.getElementById('theLayer').style.visibility = "visible"; + document.getElementById('theLayer').style.left = 300; + document.getElementById('theLayer').style.top = 300; + $('img#ffimg').attr('src', 'https://new-combats.com/clan_prw/' + img); + $('img#ffimg').attr('height', '40'); + //$('#theLayer').attr('height','120'); + document.getElementById('ffinput').value = img; + document.getElementById('ffsex').style.display = 'none'; + document.getElementById('theLayer').style.height = 105; + $('html, body').animate({scrollTop: 0}, 'slow'); + } -
    - Смена имени персонажа - - Стоимость услуги: 25 ЕКР
    - Текущее имя: info['login']?>
    -
    - -
    - -
    - -
    -
    - - + function showImgPreviewSmile(img) { + document.getElementById('theLayer').style.visibility = "visible"; + document.getElementById('theLayer').style.left = 300; + document.getElementById('theLayer').style.top = 300; + $('img#ffimg').attr('src', 'https://new-combats.com/clan_prw/' + img); + $('img#ffimg').attr('width', null); + $('img#ffimg').attr('height', null); + document.getElementById('ffinput').value = img; + document.getElementById('ffsex').style.display = 'none'; + document.getElementById('theLayer').style.height = 105; + $('html, body').animate({scrollTop: 0}, 'slow'); + } -  + $('#imgFile').change(function () { + var fd = new FormData(); + fd.append('type', 'person'); + fd.append('img', $('#imgFile')[0].files[0]); + $.ajax({ + type: 'POST', + url: 'ekr.php', + data: fd, + processData: false, + contentType: false, + dataType: "json", // поменять на json + success: function (data) { + if (data['img'] != undefined) { + document.getElementById('ffsex').style.display = 'none'; + showImgPreview(data['img']) + } else { + alert(data['err']); + } + }, + error: function (data) { + alert('Ошибка AJAX.') + } + }); + }) + +
    + + +
    + Покупка личного смайлика + + Стоимость услуги: ЕКР
    + Требования к смайлику:
    + GIF-картинка размером от 15x15 до 95x21 (ШхВ) и весом до 30 Кб.
    +
    + Выберите картинку: + +
    +
    + +
    + Смена имени персонажа + + Стоимость услуги: 25 ЕКР
    + Текущее имя: info['login'] ?>
    +
    + +
    + +
    + +
    +
    + + + + + +   + - +
    - \ No newline at end of file diff --git a/ekr.php b/ekr.php new file mode 100644 index 00000000..62d8280e --- /dev/null +++ b/ekr.php @@ -0,0 +1,1029 @@ +0.13 ЕКР
    . Приятной Вам игры! + + require_once('_incl_data/__config.php'); + require_once('_incl_data/class/__db_connect.php'); + $u = User::start(); + if(!isset($u->info['id'])) { + header('location: https://new-combats.com/'); + die(); + } + + class upload { + + protected function __construct() { } + + //static $save_path = '/var/www/bk2ru/data/www/new-combats.com/clan_prw/'; + static $save_path = 'clan_prw/'; + static $error = ''; + + static function saveimg($name,$max_mb = 2,$exts = 'jpg|png|jpeg|gif',$cnm = '',$mnw = 0,$mxw = 0,$mnh = 0,$mxh = 0) { + if (isset($_FILES[$name])) { + $f = &$_FILES[$name]; + if(isset($f['tmp_name'])) { + $width = 0; + $height = 0; + list($width, $height) = getimagesize($f['tmp_name']); + } + + if( $mnw != 0 && $mnw > $width ) { + self::$error = 'Минимальная ширина картинки '.$mnw.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; + }elseif( $mxw != 0 && $mxw < $width ) { + self::$error = 'Максимальная ширина картинки '.$mxw.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; + }elseif( $mnh != 0 && $mnh > $height ) { + self::$error = 'Минимальная высота картинки '.$mnh.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; + }elseif( $mxh != 0 && $mxh < $height ) { + self::$error = 'Максимальная высота картинки '.$mxh.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; + }elseif( !is_dir( self::$save_path ) ) { + self::$error = 'Ошибка на стороне сервера!'; + }elseif (($f['size'] <= $max_mb*1024*1024) && ($f['size'] > 0)) { + if ( + (preg_match('/\.('.$exts.')$/i',$f['name'],$ext))&& + (preg_match('/image/i',$f['type'])) + ) { + + $ext[1] = strtolower($ext[1]); + $fn = uniqid('f_',true).'.'.$ext[1]; + $fn2 = uniqid('f_',true).'.gif'; + if( $cnm != '' ) { + $fn = $cnm; + $fn2 = $cnm; + } + if (move_uploaded_file($f['tmp_name'], self::$save_path . $fn)) { + // система изменения размера , требуется Rimage + //Rimage::resize(self::$save_path . $fn, self::$save_path . $fn2); + //@unlink(self::$save_path . $fn); // удаление файла + return array($fn2,$fn,self::$save_path . $fn); + } else { + self::$error = 'Ошибка загрузки файла'; + } + } else { + self::$error = 'Неверный тип файла. Допустимые типы : '.$exts.''; + } + } else { + self::$error = 'Неверный размер файла. Максимальный размер файла '.$max_mb.' МБ'; + } + } else { + self::$error = 'Файл не найден'; + } + return false; + } // end saveimg + + } // end class + + $ball = mysql_fetch_array(mysql_query('SELECT SUM(`ekr`) FROM `pay_operation` WHERE `uid` = "'.$u->info['id'].'" AND `good` > 0 LIMIT 1')); + $ball = 0+$ball[0]; +}else{ + $ball = mysql_fetch_array(mysql_query('SELECT SUM(`ekr`) FROM `pay_operation` WHERE `uid` = "'.$user['id'].'" AND `good` > 0 LIMIT 1')); + $ball = 0+$ball[0]; +} + +$day1def = 50; //сколько екр. в день можно менять на кр. +$day2def = 1000 * ($u->info['level']-7); //сколько кр. в день можно менять на екр. + +$day1 = $day1def; +$day2 = $day2def; + +if( $day2 < 0 ) { $day2 = 0; } + +$timetoday = strtotime(date('d.m.Y')); +// +$dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен ЕКР на КР" LIMIT 1')); +$dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен КР на ЕКР" LIMIT 1')); +$dc1 = $dc1[0]; +$dc2 = $dc2[0]; + +$day1 = round($day1+$dc1,2); +$day2 = round($day2+$dc2,2); + +if($day1 < 0) { $day1 = 0; } +if($day2 < 0) { $day2 = 0; } + + +$b1 = 0; //бонус накопительный + +$bt = mysql_fetch_array(mysql_query('SELECT * FROM `bank_table` ORDER BY `time` DESC LIMIT 1')); + +$bns = array( + array( 0 , 0 , 0 ), + array( 10 , 1 , 0 ), + array( 50 , 2 , 0 ), + array( 100 , 3 , 0 ), + array( 200 , 4 , 0 ), + array( 300 , 5 , 0 ), + array( 400 , 6 , 0 ), + array( 500 , 7 , 0 ), + array( 600 , 8 , 0 ), + array( 700 , 9 , 0 ), + array( 800 , 10 , 0 ), + array( 900 , 11 , 0 ), + array( 1000 , 13 , 1 ), + array( 1100 , 15 , 2 ), + array( 1200 , 17 , 3 ), + array( 1300 , 19 , 4 ), + array( 1500 , 21 , 5 ), + array( 1700 , 23 , 6 ), + array( 2000 , 25 , 7 ), + array( 2500 , 27 , 8 ), + array( 3000 , 30 , 9 ) +); + +$bns2 = array( + array(0,0), + array(10,10), + array(20,10), + array(30,10), + array(40,10), + array(50,10), + array(60,10), + array(70,10), + array(80,10), + array(90,10), + array(100,20) +); + +$i = 0; +while( $i < count($bns) ) { + if( isset($bns[$i][0]) && $ball > $bns[$i][0] ) { + $b1 = $i; + } + $i++; +} + +if( isset($backdoor) ) { + $i = 0; + while( $i < count($bns2) ) { + if( isset($bns2[$i][0]) && $pay['ekr'] >= $bns2[$i][0] ) { + $b2 = $i; + } + $i++; + } +} + +if(!isset($backdoor)) { + + if(isset($_POST['do']) && $_POST['do'] == 'newShadow') { + $o = mysql_fetch_array(mysql_query('SELECT * FROM `_obraz` WHERE `uid` = "'.$u->info['id'].'" AND `good` = 0 AND `cancel` = 0 AND `img` = "'.mysql_real_escape_string($_POST['ffinput']).'" LIMIT 1')); + if(!isset($o['id'])) { + $u->error = 'Данный образ не найден! Возможно он уже был подтвержден!'; + }elseif( $o['price'] > $u->info['money2'] ) { + $u->error = 'На счету недостаточно ЕКР'; + }else{ + // + $u->info['money2'] -= $o['price']; + mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + // + mysql_query('UPDATE `_obraz` SET `good` = "'.time().'" WHERE `id` = "'.$o['id'].'" LIMIT 1'); + if( $o['type'] == 1 || $o['type'] == 2 ) { + //Личный или Клановый + copy('clan_prw/'.$o['img'],'./img.new-combats.com/i/obraz/'.$o['sex'].'/buy'.$o['id'].'.gif'); + }elseif( $o['type'] == 3 ) { + //Питомец + copy('clan_prw/'.$o['img'],'./img.new-combats.com/pet/buy'.$o['id'].'.gif'); + }elseif( $o['type'] == 5 ) { + //Питомец + copy('clan_prw/'.$o['img'],'./img.new-combats.com/i/smile/s'.$o['id'].'.gif'); + } + // + if( $_POST['ffsex'] == 1 ) { + $o['sex'] = 1; + }elseif( $_POST['ffsex'] == 0 ) { + $o['sex'] = 0; + } + // + if( $o['clan'] > 0 ) { + $o['uid1'] = 0; + }else{ + $o['uid1'] = $o['uid']; + } + // + if( $o['type'] == 1 || $o['type'] == 2 ) { + //Личный и клановый + mysql_query('INSERT INTO `obraz` ( + `sex`,`uid`,`img`,`usr_add`,`clan` + ) VALUES ( + "'.$o['sex'].'","'.$o['uid1'].'","buy'.$o['id'].'.gif","'.$o['uid'].'","'.$o['clan'].'" + )'); + }elseif( $o['type'] == 3 ) { + //Питомца + mysql_query('INSERT INTO `obraz_pet` ( + `uid`,`time`,`img` + ) VALUES ( + "'.$u->info['id'].'","'.time().'","'.mysql_real_escape_string('buy'.$o['id'].'.gif').'" + )'); + }elseif( $o['type'] == 5 ) { + //Смайлик + $u->info['add_smiles'] .= ',s'.$o['id'].''; + $u->info['add_smiles'] = ltrim($u->info['add_smiles'],','); + mysql_query('UPDATE `users` SET `add_smiles` = "'.$u->info['add_smiles'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + } + // + if( $o['type'] == 1 ) { + $u->error = 'Личный образ успешно установлен! Можете выбрать его в инвентаре, в разделе Образ.'; + }elseif( $o['type'] == 2 ) { + $u->error = 'Клановый образ успешно установлен! Можете выбрать его в инвентаре, в разделе Образ.'; + }elseif( $o['type'] == 3 ) { + $u->error = 'Личный образ питомца успешно установлен! Можете выбрать его в инвентаре, в разделе Звери.'; + }elseif( $o['type'] == 5 ) { + $u->error = 'Личный смайлик успешно установлен! Можете выбрать его в разделе Личные смайлики. Код смайлика :s'.$o['id'].':'; + } + } + }elseif(isset($_FILES['img'])) { + //Личный образ + $ekr = 100; + if( $u->info['money2'] < $ekr ) { + echo '{"err":"На счету недостаточно ЕКР"}'; + }else{ + $obraz = 'f_shadow1_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#shadow1').'.gif'; + // + if($file = upload::saveimg('img',0.5,'gif',$obraz,120,120,220,220)) { + // + //$u->info['money2'] -= $ekr; + //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + // + mysql_query('INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( + "'.$u->info['id'].'", + "'.time().'", + "'.mysql_real_escape_string($ekr).'", + "0", + "0", + "'.mysql_real_escape_string($obraz).'", + "'.$u->info['sex'].'", + "1", + "0" + ) '); + echo '{"img":"'.$obraz.'"}'; + }else{ + echo '{"err":"'.upload::$error.'"}'; + } + } + die(); + }elseif(isset($_FILES['img5'])) { + //Личный смайлик + $ekr = 10; + $ekr_smile = 10; + if( $u->info['money2'] < $ekr ) { + echo '{"err":"На счету недостаточно ЕКР"}'; + }else{ + $obraz = 'f_smile_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#smile').'.gif'; + // + if($file = upload::saveimg('img5',0.05,'gif',$obraz,15,100,15,50)) { + // + //$u->info['money2'] -= $ekr; + //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + // + mysql_query('INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( + "'.$u->info['id'].'", + "'.time().'", + "'.mysql_real_escape_string($ekr).'", + "0", + "0", + "'.mysql_real_escape_string($obraz).'", + "0", + "5", + "0" + ) '); + echo '{"img":"'.$obraz.'"}'; + }else{ + echo '{"err":"'.upload::$error.'"}'; + } + } + die(); + }elseif(isset($_FILES['img2'])) { + //Клановый образ + $ekr = 49.99; + if( $u->info['clan'] == 0 ) { + echo '{"err":"Вы должны состоять в клане"}'; + }elseif( $u->info['money2'] < $ekr ) { + echo '{"err":"На счету недостаточно ЕКР"}'; + }else{ + $obraz = 'f_shadow2_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#shadow2').'.gif'; + // + if($file = upload::saveimg('img2',0.3,'gif',$obraz,120,120,220,220)) { + // + //$u->info['money2'] -= $ekr; + //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + // + mysql_query('INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( + "'.$u->info['id'].'", + "'.time().'", + "'.mysql_real_escape_string($ekr).'", + "0", + "0", + "'.mysql_real_escape_string($obraz).'", + "'.$u->info['sex'].'", + "2", + "'.$u->info['clan'].'" + ) '); + echo '{"img":"'.$obraz.'"}'; + }else{ + echo '{"err":"'.upload::$error.'"}'; + } + } + die(); + }elseif(isset($_FILES['img4'])) { + //Питомец образ + $ekr = 4.99; + if( $u->info['money2'] < $ekr ) { + echo '{"err":"На счету недостаточно ЕКР"}'; + }else{ + $obraz = 'f_shadow3_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#shadow3').'.gif'; + // + if($file = upload::saveimg('img4',0.3,'gif',$obraz,120,120,40,40)) { + // + //$u->info['money2'] -= $ekr; + //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + // + mysql_query('INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( + "'.$u->info['id'].'", + "'.time().'", + "'.mysql_real_escape_string($ekr).'", + "0", + "0", + "'.mysql_real_escape_string($obraz).'", + "'.$u->info['sex'].'", + "3", + "'.$u->info['clan'].'" + ) '); + echo '{"img":"'.$obraz.'"}'; + }else{ + echo '{"err":"'.upload::$error.'"}'; + } + } + die(); + }elseif(isset($_POST['kr001'])) { + //Обмен екр на кр. + $kr = round($_POST['kr001'],2); + if( $c['crtoecr'] < 0.01 ) { + $u->error = 'Сегодня обменник закрыт.'; + }elseif( $day2 < 0.01 ) { + $u->error = 'Сегодня для вас обмен закрыт, приходите завтра.'; + }elseif( $kr < round($c['crtoecr']/100,2) ) { + $u->error = 'Минимальная сумма обмена '.round($c['crtoecr']/100,2).' КР.'; + }elseif( $kr > $day2 ) { + $u->error = 'Вы можете обменять еще '.$day2.' КР сегодня.'; + }elseif( $kr > $u->info['money']) { + $u->error = 'Недостаточно денег для обмена.'; + }else{ + $ekr = round($kr / $c['crtoecr'],2); + $u->error = 'Вы успешно обменяли '.$kr.' КР на '.$ekr.' ЕКР.'; + // + $u->info['money'] -= $kr; + $u->info['money2'] += $ekr; + // + mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'",`money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + mysql_query('INSERT INTO `user_operation` ( `uid`,`time`,`money`,`money2`,`type`,`b1`,`b2` ) VALUES ( + "'.$u->info['id'].'","'.time().'","'.round(-$kr,2).'","'.round($ekr,2).'","Обмен КР на ЕКР","'.$u->info['money'].'","'.$u->info['money2'].'" + )'); + } + $dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен ЕКР на КР" LIMIT 1')); + $dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен КР на ЕКР" LIMIT 1')); + $dc1 = $dc1[0]; + $dc2 = $dc2[0]; + $day1 = round($day1def+$dc1,2); + $day2 = round($day2def+$dc2,2); + }elseif(isset($_POST['ekr2'])) { + //Обмен екр на кр. + $ekr = round($_POST['ekr2'],2); + if( $c['ecrtocr']*2.5 < 0.01 ) { + $u->error = 'Сегодня обменник закрыт.'; + }elseif( $day1 < 0.01 ) { + $u->error = 'Сегодня для вас обмен закрыт, приходите завтра.'; + }elseif( $ekr < 0.01 ) { + $u->error = 'Минимальная сумма обмена 0.01 ЕКР.'; + }elseif( $ekr > $day1 ) { + $u->error = 'Вы можете обменять еще '.$day1.' ЕКР сегодня.'; + }elseif( $ekr > $u->info['money2']) { + $u->error = 'Недостаточно денег для обмена.'; + }else{ + $kr = round($ekr * $c['ecrtocr']*2.5,2); + $u->error = 'Вы успешно обменяли '.$ekr.' ЕКР на '.$kr.' КР.'; + // + $u->info['money'] += $kr; + $u->info['money2'] -= $ekr; + // + mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'",`money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + mysql_query('INSERT INTO `user_operation` ( `uid`,`time`,`money`,`money2`,`type`,`b1`,`b2` ) VALUES ( + "'.$u->info['id'].'","'.time().'","'.round($kr,2).'","'.round(-$ekr,2).'","Обмен ЕКР на КР","'.$u->info['money'].'","'.$u->info['money2'].'" + )'); + } + $dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен ЕКР на КР" LIMIT 1')); + $dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен КР на ЕКР" LIMIT 1')); + $dc1 = $dc1[0]; + $dc2 = $dc2[0]; + $day1 = round($day1def+$dc1,2); + $day2 = round($day2def+$dc2,2); + }elseif(isset($_POST['login'])) { + // + function en_ru($txt) { + $g = false; + $en = preg_match("/^(([0-9a-zA-Z _-])+)$/i", $txt); + $ru = preg_match("/^(([0-9а-яА-Я _-])+)$/i", $txt); + if(($ru && $en) || (!$ru && !$en)) { + $g = true; + } + return $g; + } + // + function testBad($txt) { + $white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMїЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮїйцукенгшщзхъфывапролджэячсмитьбю'; + $r = false; + $i = 0; + while( $i != -1 ) { + if( isset($txt[$i]) ) { + $g = false; + $j = 0; + while( $j != -1 ) { + if(isset($white[$j])) { + if( $white[$j] == $txt[$i] ) { + $g = true; + } + }else{ + $j = -2; + } + $j++; + } + if( $g == false ) { + $r = true; + } + }else{ + $i = -2; + } + $i++; + } + return $r; + } + + function is_login($login) { + $r = true; + // + $login = htmlspecialchars($login,NULL,'cp1251'); + // + $bad = array( + 'Мусорщик' => 1, + 'Мироздатель' => 1 + ); + // + $login_db = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `login` = "'.mysql_real_escape_string($login).'" LIMIT 1')); + if( isset($login_db['id']) || isset($bad[$login]) ) { + $r = false; + }else{ + $true = true; + // + /* + Логин может содержать от 4 до 16 символов, и состоять только из букв русского ИЛИ английского алфавита, цифр, символов '_', '-' и пробела. + Логин не может начинаться или заканчиваться символами '_', '-' или пробелом. + */ + // + $login = str_replace(' ',' ',$login); + $login = str_replace('%',' ',$login); + $login = str_replace(' ',' ',$login); + // + if( strlen($login) > 16 ) { + $true = false; + }elseif( strlen($login) < 4 ) { + $true = false; + }elseif( strripos($login,' ') == true ) { + $true = false; + }elseif( substr($login,1) == ' ' || substr($login,-1) == ' ' ) { + $true = false; + }elseif( substr($login,1) == '-' || substr($login,-1) == '-' ) { + $true = false; + }elseif( substr($login,1) == '_' || substr($login,-1) == '_' ) { + $true = false; + }elseif( testBad($login) == true ) { + $true = false; + }elseif( en_ru(str_replace('ї','е',str_replace('ї','Е',$login))) == true ) { + $true = false; + } + // + if( $true == false ) { + $r = false; + }else{ + $r = true; + } + } + return $r; + } + if( $u->info['login'] == $_POST['login'] ) { + $u->error = 'Выберите другой логин...'; + }elseif( $u->info['money2'] < 25 ) { + $u->error = 'Недостаточно средств.'; + }else{ + $login = htmlspecialchars($_POST['login'],NULL,'cp1251'); + if( is_login($login) == true ) { + mysql_query('INSERT INTO `lastnames` ( `uid`,`login`,`newlogin`,`time` ) VALUES ( + "'.$u->info['id'].'","'.$u->info['login'].'","'.mysql_real_escape_string($login).'","'.time().'" + )'); + $u->info['login_last'] = $u->info['login']; + $u->info['login'] = $login; + $u->info['money2'] -= 25; + // + mysql_query("UPDATE `items_users` SET `data` = replace( `data` , 'sudba=".$u->info['login_last']."', 'sudba=".mysql_real_escape_string($u->info['login'])."') WHERE `data` LIKE '%sudba=".mysql_real_escape_string($u->info['login_last'])."%' AND `uid` = '".$u->info['id']."'"); + // + mysql_query('UPDATE `users` SET `login` = "'.mysql_real_escape_string($u->info['login']).'", `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + $u->error = 'Вы успешно сменили логин на "'.$u->info['login'].'" перезайдите в игру с главной страницы.'; + }else{ + $u->error = 'Выберите другой логин...'; + } + } + }elseif(isset($_GET['buy_ekr'])) { + // + $mrh_login = "15922";//"65643"; + $mrh_pass1 = "6?ljVLf]RSiBM2F"; + // + $inv_id = 0; + // + $out_ekr = round($_POST['ekr'],2); + if( $out_ekr < 0) { + // + $out_ekr = 0; + } + $out_summ = round($out_ekr*$bt['cur'],2); + $inv_desc = 'Приобрести '.$out_ekr.' екр., персонаж №'.$u->info['id'].', дилер №'.round((int)$_POST['ref']).''; + // + $shp_item = 0; + // + //Бонус опытовый, первичный и накопительный + $out_ekr0 = $out_ekr; + // + $out_ekr += round($out_ekr0/100*$bns[$b1][1],2); + $i = 0; + while( $i < count($bns2) ) { + if( isset($bns2[$i][0]) && $out_ekr >= $bns2[$i][0] ) { + $b2_2 = $i; + } + $i++; + } + $out_ekr += round($out_ekr0/100*$bns2[$b2_2][1],2); + if($ball == 0) { + $out_ekr += round($out_ekr0/100*20,2); + } + // + //Добавляем в базу + mysql_query('INSERT INTO `pay_operation` ( + `uid`,`bank`,`code`,`ekr`,`time`,`good`,`cur`,`var`,`val`,`ref`,`ref2`,`ip`,`date` + ) VALUES ( + "'.$u->info['id'].'","'.$u->bank['id'].'","'.mysql_real_escape_string((int)$_GET['code']).'","'.mysql_real_escape_string($out_ekr).'", + "'.time().'","0","'.mysql_real_escape_string($cur['cur']).'","buy_ekr","0","'.mysql_real_escape_string($u->info['host_reg']).'", + "'.mysql_real_escape_string((int)$_GET['ref']).'","'.mysql_real_escape_string(IP).'","'.date('Y-m-d H:i:s').'" + )'); + + $shp_item = mysql_insert_id(); + + if($shp_item > 0) { + //ожидаем оплаты + }else{ + die('Ошибка в обработке платежа, обратитесь к Администрации'); + } + if($out_ekr < 1) { + die('Минимальная сумма покупки 1 екр.'); + } + // + // предлагаемая валюта платежа + // default payment e-currency + $in_curr = ""; + + // язык + // language + $culture = "ru"; + $currency = "RUB"; + + // формирование подписи + // generate signature + + + + + //$crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item"); + $crc = md5($mrh_login.':'.$out_summ.':'.$mrh_pass1.':'.$currency.':'.$shp_item); //$sign = md5($merchant_id.':'.$order_amount.':'.$secret_word.':'.$currency.':'.$order_id); + + // форма оплаты товара + // payment form + $url = 'https://pay.freekassa.ru/?'; + $url .= 'm='.$mrh_login.'&'; + $url .= 'oa='.$out_summ.'&'; + //$url .= 'InvId='.$inv_id.'&'; + //$url .= 'Desc='.$inv_desc.'&'; + $url .= 'currency='.$currency.'&'; + $url .= 'o='.$shp_item.'&'; + $url .= 's='.$crc; + //$url .= 'i='.$in_curr.'&'; + //$url .= 'lang='.$culture.'&'; + // + + /* +
    + + + + + + + + '> + +
    + */ + header('location: '.$url); + die(); + print "". + "
    ". + "Сумма платежа: ".$out_ekr." Екр. ". + "". + "". + "". + "". + "". + "". + "". + "". + "
    ". + "(Все средства идут на развитие и улучшение игры)". + "
    "; + die(); + } + +?> + + + Покупка ЕвроКредитов - Бойцовский Клуб + + + + + + + + + + + + +
    + + + + + + + info['id'])) { ?> +
    Персонаж: '.$u->microLogin($u->info['id'],1).'';?>
    + error != '' ) { + echo '
    '.$u->error.'
    '; + } + ?> + freekassa  + + + + + + + + + + + + + + + + +
    Акция! При первом пополнении баланса,
    Вы получаете дополнительно 20% ЕКР к сумме покупки БЕСПЛАТНО. +
    +
    +
    + Ваш накопительный бонус: % ( ЕКР) +
    + +
    + Покупка ЕКР + +
    + Сумма ЕКР:  
    + + + +
     
     
     
    + + + + + + +
    1 ЕКР Рублей
    1 ЕКР Доллара *
    + + * - зависит от текущих курсов валют
    + Доставка игровой валюты производится в автоматическом режиме, сразу же после оплаты! +

    + При оплате могут возникать задержки на пополнение, обычно не более 1 часа. Если по истечению нескольких часов деньги так и не поступили на ваш баланс, то необходимо обратиться в службу поддержки FREE-KASSA. +
    +

    +
    + + +
    +
    + +
    + Если Вы очень хотели бы положить деньги на игровой счїт, но нет подходящей платїжной системы, обратитесь за помощью к Администратору проекта. +

    +
    +
    + +
    +
    + Ваш баланс счїта: info['money2']?> ЕКР и info['money']?> КР. +
    + +
    + Обмен +
    + Обменять ЕКР на КР по курсу 1ЕКР=КР:    
    +
    +
    + Обменять КР на ЕКР по курсу КР=1ЕКР:  
    +
    + +
    + +
    + Накопительные бонусы + + + + + + + + + + + + +
    ЕКРБонусЕКРБонус
    800 ЕКР10%3 000 ЕКР 30%
    700 ЕКР9%2 500 ЕКР 27%
    600 ЕКР8%2 000 ЕКР 25%
    500 ЕКР7%1 700 ЕКР 23%
    400 ЕКР6%1 500 ЕКР 21%
    300 ЕКР5%1 300 ЕКР 19%
    200 ЕКР4%1 200 ЕКР 17%
    100 ЕКР3%1 100 ЕКР 15%
    50 ЕКР2%1 000 ЕКР 13%
    10 ЕКР1%900 ЕКР11%
    +
    + +
    + Оптовые бонусы + + + + + + +
    Бонус10%10%10%10%10%
    Сумма10 ЕКР20 ЕКР30 ЕКР40 ЕКР50 ЕКР
    Бонус10%10%10%10%20%
    Сумма60 ЕКР70 ЕКР80 ЕКР90 ЕКР100 ЕКР
    +
    + +
    Коммерческие услуги
    + + + + +
    + Покупка личного образа + + Стоимость услуги: 100 ЕКР
    + Требования к персональному образу:
    + GIF-картинка размером 120x220 (ШхВ) и весом до 300 Кб.
    +
    + Выберите картинку: + +
    +
    + +
    + Покупка личного смайлика + + Стоимость услуги: ЕКР
    + Требования к смайлику:
    + GIF-картинка размером от 15x15 до 95x21 (ШхВ) и весом до 30 Кб.
    +
    + Выберите картинку: + +
    +
    + +
    + Смена имени персонажа + + Стоимость услуги: 25 ЕКР
    + Текущее имя: info['login']?>
    +
    + +
    + +
    + +
    +
    + +
     
    + +
    + + + diff --git a/enter.php b/enter.php index 608a9f82..d8649a86 100644 --- a/enter.php +++ b/enter.php @@ -1,62 +1,51 @@ location = "index.php?error='.$e.'";') - //die('Location: index.php?error='.$e); - die(' + die('
    @@ -64,7 +53,7 @@ function error($e)
    - '.$e.' + ' . $e . '
    @@ -78,99 +67,41 @@ function error($e) function md5m($src) { - - $tar = Array(16); - $res = Array(16); -$src = utf8_encode ($src); - for ($i = 0; $i < strlen($src) || $i < 16; $i++) - { + + $tar = [16]; + $res = [16]; + $src = utf8_encode($src); + for ($i = 0; $i < strlen($src) || $i < 16; $i++) { $res[$i] = ord($src{$i}) ^ $i * 4; - } - for ($i = 0; $i < 4; $i++) - { - for ($j = 0; $j < 4; $j++) - { + } + for ($i = 0; $i < 4; $i++) { + for ($j = 0; $j < 4; $j++) { $tar[$i * 4 + $j] = ($res[$j * 4 + $i] + 256) % 256; - } - } + } + } return ($tar); -} +} + function array2HStr($src) { - $hex = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"); + $hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"]; $res = ""; - for ($i = 0; $i < 16; $i++) - { + for ($i = 0; $i < 16; $i++) { $res = $res . ($hex[$src[$i] >> 4] . $hex[$src[$i] % 16]); - } + } return ($res); } $socauth = false; -/* -if(isset($_GET['vk-auth'])) { - - $client_id = '5145826'; // ID приложения - $client_secret = 'V90yIzlgSglfgrnHw7Ny'; // Защищённый ключ - $redirect_uri = 'https://new-combats.com/enter?vk-auth'; // Адрес сайта - - $url = 'https://oauth.vk.com/authorize'; - - $params = array( - 'client_id' => $client_id, - 'redirect_uri' => $redirect_uri, - 'response_type' => 'code' - ); - - if(isset($_GET['code'])) { - $result = false; - $params = array( - 'client_id' => $client_id, - 'client_secret' => $client_secret, - 'code' => $_GET['code'], - 'redirect_uri' => $redirect_uri - ); - - $token = json_decode(file_get_contents('httpss://oauth.vk.com/access_token' . '?' . urldecode(https_build_query($params))), true); - - if (isset($token['access_token'])) { - $params = array( - 'uids' => $token['user_id'], - 'fields' => 'uid,first_name,last_name,screen_name,sex,bdate,photo_big', - 'access_token' => $token['access_token'] - ); - - $userInfo = json_decode(file_get_contents('httpss://api.vk.com/method/users.get' . '?' . urldecode(https_build_query($params))), true); - if (isset($userInfo['response'][0]['uid'])) { - $userInfo = $userInfo['response'][0]; - $result = true; - } - } - - if(isset($userInfo['uid'])) { - $scl = mysql_fetch_array(mysql_query('SELECT * FROM `mini_actions` WHERE `val` = "vkauth" AND `ok` = "'.mysql_real_escape_string($userInfo['uid']).'" ORDER BY `time` DESC LIMIT 1')); - if(isset($scl['id'])) { - $scl = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$scl['uid'].'" LIMIT 1')); - $_POST['login'] = $scl['login']; - $socauth = true; - }else{ - error('Ваш аккаунт ВКонтакте#'.$userInfo['uid'].' не прикреплен ни к одному из персонажей.'); - } - }else{ - error('Неудалось авторизироваться через социальную сеть ВКонтакте'); - } - } -} -*/ //ReCapthca require_once "./recaptchalib.php"; // ваш секретный ключ $secret = "6Lf3EjsaAAAAALe3zRwxyPGf13ZMWZvCmvad3-jQ"; - + // пустой ответ $response = null; - + // проверка секретного ключа $reCaptcha = new ReCaptcha($secret); @@ -182,332 +113,281 @@ $response = $reCaptcha->verifyResponse( } //ReCapthca -if (1==1)//(($response != null && $response->success=true) || $_POST['code'] != '' || $_GET['code'] != '') -{ - +$u = mysql_fetch_array(mysql_query('SELECT `u`.`pass2`,`u`.`id`,`u`.`auth`,`u`.`login`,`u`.`pass`,`u`.`city`,`u`.`ip`,`u`.`ipreg`,`u`.`online`,`u`.`banned`,`u`.`admin`,`u`.`host_reg`,`u`.`securetime`,`u`.`timereg` FROM `users` AS `u` WHERE `u`.`login`="' . mysql_real_escape_string($_POST['login']) . '" ORDER BY `id` ASC LIMIT 1')); - -$u = mysql_fetch_array(mysql_query('SELECT `u`.`pass2`,`u`.`id`,`u`.`auth`,`u`.`login`,`u`.`pass`,`u`.`city`,`u`.`ip`,`u`.`ipreg`,`u`.`online`,`u`.`banned`,`u`.`admin`,`u`.`host_reg`,`u`.`securetime`,`u`.`timereg` FROM `users` AS `u` WHERE `u`.`login`="'.mysql_real_escape_string($_POST['login']).'" ORDER BY `id` ASC LIMIT 1')); - -$auth = mysql_fetch_array(mysql_query('SELECT * FROM `logs_auth` WHERE `uid` = "'.$u['id'].'" AND `ip` = "'.mysql_real_escape_string(IP).'" LIMIT 1')); -if( $c['securetime'] > 0 && IP != $u['ip'] && IP != $u['ipreg'] && !isset($auth['id']) && $u['securetime'] < $c['securetime'] && $u['timereg'] < $c['securetime'] ) { - error('Вы не можете войти на персонажа "'.$_POST['login'].'".
    Скорее всего вы давно не меняли пароль. Для смены перейдите по ссылке: СМЕНА ПАРОЛЯ

    Вам необходимо сменить пароль для безопасности персонажа, на почту по которой зарегистрирован персонаж придет новый случайно сгенерированный пароль.
    Если у вас нет доступа к E-mail: Зарегистрируйте нового персонажа и обратитесь к Администрации, либо модераторам.'); +$auth = mysql_fetch_array(mysql_query('SELECT * FROM `logs_auth` WHERE `uid` = "' . $u['id'] . '" AND `ip` = "' . mysql_real_escape_string(IP) . '" LIMIT 1')); +if ($c['securetime'] > 0 && IP != $u['ip'] && IP != $u['ipreg'] && !isset($auth['id']) && $u['securetime'] < $c['securetime'] && $u['timereg'] < $c['securetime']) { + error('Вы не можете войти на персонажа "' . $_POST['login'] . '".
    Скорее всего вы давно не меняли пароль. Для смены перейдите по ссылке: СМЕНА ПАРОЛЯ

    Вам необходимо сменить пароль для безопасности персонажа, на почту по которой зарегистрирован персонаж придет новый случайно сгенерированный пароль.
    Если у вас нет доступа к E-mail: Зарегистрируйте нового персонажа и обратитесь к Администрации, либо модераторам.'); } - -/*if($u['host_reg'] == 'new-combats.com' && $u['online'] == 0) { - $_POST['pass'] = md5($_POST['pass']); - if($u['pass'] == md5($_POST['pass'])) { - $u['pass'] = $_POST['pass']; - mysql_query('UPDATE `users` SET `pass` = "'.mysql_real_escape_string($_POST['pass']).'",`online` = "'.time().'" WHERE `id` = "'.mysql_real_escape_string($u['id']).'" LIMIT 1'); - error('Войдите с главной странице еще раз. Пароль был расшифрован.'); - } -}*/ - -if( md5(md5($_POST['pass'])) == $u['pass'] ) { - $_POST['pass'] = md5($_POST['pass']); +if (md5(md5($_POST['pass'])) == $u['pass']) { + $_POST['pass'] = md5($_POST['pass']); } -if(!isset($u['id'])) -{ - error('Логин "'.$_POST['login'].'" не найден в базе.'); -}elseif($u['pass']!=md5($_POST['pass']) && $socauth == false) -{ - error('Неверный пароль к персонажу "'.$_POST['login'].'".'); - mysql_query("INSERT INTO `logs_auth` (`uid`,`ip`,`browser`,`type`,`time`,`depass`) VALUES ('".$u['id']."','".mysql_real_escape_string(IP)."','".mysql_real_escape_string($_SERVER['HTTP_USER_AGENT'])."','3','".time()."','".mysql_real_escape_string($_POST['pass'])."')"); -}elseif($u['banned']>0) -{ - $fm = mysql_fetch_array(mysql_query('SELECT * FROM `users_delo` WHERE `uid` = "'.$u['id'].'" AND `hb`!=0 ORDER BY `id` DESC LIMIT 1')); - if(!isset($fm['id'])) { - $fm['text'] = 'Причина блокировки: Причина пока-что не указана.'; - } - error( - 'Персонаж '.$_POST['login'].' заблокирован.'. - '
    '.$fm['text'].'
    '. - '
    Внимание! Если Вы уверены, что произошла ошибка и Вы ничего не нарушали, перерегистрируйтесь, обьясните ситуацию администрации и ожидайте ответа!'. - '
    Перед тем как писать, ВНИМАТЕЛЬНО ознакомитесь с действующими законами.' - .'

    Если Вы заблокированы правомерно, то у Вас нет шансов на разблокировку вашего игрового персонажа.' - ); -}else{ - - //Второй пароль - if( $u['pass2'] != '' && $u['pass2'] != '0' ) { - $_SESSION['login'] = $_POST['login']; - $_SESSION['pass'] = $_POST['pass']; - $good2 = false; - $koko = ''; - if( md5(array2HStr(md5m($_POST['code']))) == $u['pass2'] ) { - $good2 = true; - unset($_SESSION['login'],$_SESSION['pass']); - }else{ - if (isset($_POST['code'])) - {$koko = 'Неверный второй пароль
    ';}; - setcookie('login','',time()-60*60*24,'',$c['host']); - setcookie('pass','',time()-60*60*24,'',$c['host']); - setcookie('login','',time()-60*60*24); - setcookie('pass','',time()-60*60*24); - } - - if( $koko != '' ) { - $koko = ''.$koko.''; - } - if( $good2 == false ) { -?> - - - - - - - Второй пароль - - -

    Запрос второго пароля к персонажу.

    - -
    -
    -
    - - -
    -
    - - - -
    - - - -
    - - - -
    - - - -
    -
    - - - - + + - -= 13 && (int)date('d') <= 13) { - mysql_query('DELETE FROM `eff_users` WHERE `id_eff` = 365 AND `uid` = "'.$u['id'].'"'); - mysql_query('INSERT INTO `eff_users` ( + function getRandomInt(max) { + return Math.floor(Math.random() * Math.floor(max)); + } + + function keypush(n) { + if (n == 12) { + + if (lenth > 0) { + + dopass = ''; + + lenth = 0; + document.getElementById('pass').setAttribute("src", "i/pin/e" + lenth + ".png"); + } + } else if (n == 11) { + + var $_POST = ; + /*$.ajax({ + url: "https://new-combats.com/enter.php", + type: "POST", + data: { + code: "ab6d4bf6593416306881a9e54260b0af", + login: ""+$_POST['login'], + pass: ""+$_POST['pass'] + }, + success: function (response) { + if (response.successFlag) { + //Replace current location from the history via history API + window.history.replaceState({}, 'foo', '/foo'); + window.location = "url of target location here if you want to send a get request"; + $("#form-id").submit();//if you want to post something up + } + } + }); + + /*$.ajax({ + type: 'post', + url: 'https://new-combats.com/enter.php', + data: "code=ab6d4bf6593416306881a9e54260b0af",//параметры запроса + success: function(data) { + alert($_POST['login']); + } + }); + //window.setTimeout('location.reload()', 1000); + */ + window.location.replace("https://new-combats.com/enter.php?code=" + dopass + "&login=" + $_POST['login'] + "&pass=" + $_POST['pass']); + + } else { + + if (lenth < 8) { + dopass = dopass + '' + n; + lenth++; + document.getElementById('pass').setAttribute("src", "i/pin/e" + lenth + ".png"); + } + + } + + } + + + = 13 && (int)date('d') <= 13) { + mysql_query('DELETE FROM `eff_users` WHERE `id_eff` = 365 AND `uid` = "' . $u['id'] . '"'); + mysql_query('INSERT INTO `eff_users` ( `id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`no_Ace` ) VALUES ( - "365","'.$u['id'].'","День Рождения Клуба","add_speedhp=500|add_speedmp=500|add_speed_dungeon=50|add_repair_discount=1|","47","'.time().'",1 + "365","' . $u['id'] . '","День Рождения Клуба","add_speedhp=500|add_speedmp=500|add_speed_dungeon=50|add_repair_discount=1|","47","' . time() . '",1 )'); - $chat->send('',$u['room'],$u['city'],'',$u['login'],'В честь дня рождения проекта вы получаете эффект "День Рождения Клуба"! (Эффект обновляется каждый раз когда вы заходите на персонажа)',time(),6,0,0,0,1); - } - - if(isset($_COOKIE['ip']) && $_COOKIE['ip']!=IP) - { - mysql_query("INSERT INTO `logs_auth` (`uid`,`ip`,`browser`,`type`,`time`,`depass`) VALUES ('".$u['id']."','".mysql_real_escape_string($_COOKIE['ip'])."','".mysql_real_escape_string($_SERVER['HTTP_USER_AGENT'])."','1','".time()."','".mysql_real_escape_string(md5($_POST['pass']))."')"); - } - - setcookie('login',$_POST['login'],time()+60*60*24*7,'',$c['host']); - setcookie('pass',$u['pass'],time()+60*60*24*7,'',$c['host']); - setcookie('login',$_POST['login'],time()+60*60*24*7); - setcookie('pass',md5($_POST['pass']),time()+60*60*24*7); - setcookie('ip',IP,time()+60*60*24*150,''); - - if($u['online'] < time()-520) { - $sp = mysql_query('SELECT `user` FROM `friends` WHERE `friend` = "'.$u['id'].'"'); - while( $pl = mysql_fetch_array($sp) ) { - $usr = mysql_fetch_array(mysql_query('SELECT `id`,`online`,`login`,`city`,`room` FROM `users` WHERE `id` = "'.$pl['user'].'" LIMIT 1')); - if( isset($usr['id']) && $usr['online'] > time()-600 ) { - $chat->send('',$usr['room'],$usr['city'],'',$usr['login'],'Вас приветствует: '.$u['login'].'.',time(),6,0,0,0,1); - } - } - } - - $apu = ''; + $chat->send('', $u['room'], $u['city'], '', $u['login'], 'В честь дня рождения проекта вы получаете эффект "День Рождения Клуба"! (Эффект обновляется каждый раз когда вы заходите на персонажа)', time(), 6, 0, 0, 0, 1); + } - mysql_query('UPDATE `dump` SET `ver` = "1",`upd` = "2" WHERE `uid` = "'.$u['id'].'"'); + if (isset($_COOKIE['ip']) && $_COOKIE['ip'] != IP) { + mysql_query("INSERT INTO `logs_auth` (`uid`,`ip`,`browser`,`type`,`time`,`depass`) VALUES ('" . $u['id'] . "','" . mysql_real_escape_string($_COOKIE['ip']) . "','" . mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']) . "','1','" . time() . "','" . mysql_real_escape_string(md5($_POST['pass'])) . "')"); + } - if($u['auth'] != md5($u['login'].'AUTH'.IP) || $_COOKIE['auth'] != md5($u['login'].'AUTH'.IP) || $u['auth']=='' || $u['auth']=='0') - { - if($u['auth'] != '' && $u['auth'] != '0' && $u['ip'] != IP) { - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','".$u['login']."','В предыдущий раз этим персонажем заходили с другого компьютера ".date('d.m.Y H:i',$u['online']).". (Предыдущий ip: %".$u['ip'].")','-1','6','0')"); - } - $apu = "`auth` = '".md5($u['login'].'AUTH'.IP)."',"; - setcookie('auth',md5($u['login'].'AUTH'.IP),time()+60*60*24*365,'','new-combats.com'); - } - - if($u['repass'] == 0) { - $ipnew = IP; - }else{ - $ipnew = $u['ip']; - } - + setcookie('login', $_POST['login'], time() + 60 * 60 * 24 * 7, '', $c['host']); + setcookie('pass', $u['pass'], time() + 60 * 60 * 24 * 7, '', $c['host']); + setcookie('login', $_POST['login'], time() + 60 * 60 * 24 * 7); + setcookie('pass', md5($_POST['pass']), time() + 60 * 60 * 24 * 7); + setcookie('ip', IP, time() + 60 * 60 * 24 * 150, ''); - mysql_query("INSERT INTO `logs_auth` (`uid`,`ip`,`browser`,`type`,`time`,`depass`) VALUES ('".$u['id']."','".IP."','".mysql_real_escape_string($_SERVER['HTTP_USER_AGENT'])."','0','".time()."','".mysql_real_escape_string(md5($_POST['pass']))."')"); + if ($u['online'] < time() - 520) { + $sp = mysql_query('SELECT `user` FROM `friends` WHERE `friend` = "' . $u['id'] . '"'); + while ($pl = mysql_fetch_array($sp)) { + $usr = mysql_fetch_array(mysql_query('SELECT `id`,`online`,`login`,`city`,`room` FROM `users` WHERE `id` = "' . $pl['user'] . '" LIMIT 1')); + if (isset($usr['id']) && $usr['online'] > time() - 600) { + $chat->send('', $usr['room'], $usr['city'], '', $usr['login'], 'Вас приветствует: ' . $u['login'] . '.', time(), 6, 0, 0, 0, 1); + } + } + } - mysql_query("UPDATE `users` SET ".$apu."`ip`='".$ipnew."',`dateEnter`='".mysql_real_escape_string($_SERVER['HTTP_USER_AGENT'])."',`online`='".time()."' WHERE `login` = '".mysql_real_escape_string($_POST['login'])."' AND `pass` = '".mysql_real_escape_string(md5($_POST['pass']))."' LIMIT 1"); - - if(isset($_POST['active_code_key'])) { - header('location: /active.php?code='.htmlspecialchars($_POST['active_code_key'],NULL,'cp1251')); - }else{ - header('location: /bk'); - } + $apu = ''; + + mysql_query('UPDATE `dump` SET `ver` = "1",`upd` = "2" WHERE `uid` = "' . $u['id'] . '"'); + + if ($u['auth'] != md5($u['login'] . 'AUTH' . IP) || $_COOKIE['auth'] != md5($u['login'] . 'AUTH' . IP) || $u['auth'] == '' || $u['auth'] == '0') { + if ($u['auth'] != '' && $u['auth'] != '0' && $u['ip'] != IP) { + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','" . $u['login'] . "','В предыдущий раз этим персонажем заходили с другого компьютера " . date('d.m.Y H:i', $u['online']) . ". (Предыдущий ip: %" . $u['ip'] . ")','-1','6','0')"); + } + $apu = "`auth` = '" . md5($u['login'] . 'AUTH' . IP) . "',"; + setcookie('auth', md5($u['login'] . 'AUTH' . IP), time() + 60 * 60 * 24 * 365, '', 'new-combats.com'); + } + + if ($u['repass'] == 0) { + $ipnew = IP; + } else { + $ipnew = $u['ip']; + } + + + mysql_query("INSERT INTO `logs_auth` (`uid`,`ip`,`browser`,`type`,`time`,`depass`) VALUES ('" . $u['id'] . "','" . IP . "','" . mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']) . "','0','" . time() . "','" . mysql_real_escape_string(md5($_POST['pass'])) . "')"); + + mysql_query("UPDATE `users` SET " . $apu . "`ip`='" . $ipnew . "',`dateEnter`='" . mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']) . "',`online`='" . time() . "' WHERE `login` = '" . mysql_real_escape_string($_POST['login']) . "' AND `pass` = '" . mysql_real_escape_string(md5($_POST['pass'])) . "' LIMIT 1"); + + if (isset($_POST['active_code_key'])) { + header('location: /active.php?code=' . htmlspecialchars($_POST['active_code_key'], null, 'cp1251')); + } else { + header('location: /bk'); + } } - } - else - { - error('Не выполнена ReCaptcha!'); - //echo "Не выполнена ReCaptcha!
    "; - - } -?> diff --git a/fastpanel.php b/fastpanel.php deleted file mode 100644 index 8f428ccc..00000000 --- a/fastpanel.php +++ /dev/null @@ -1,53 +0,0 @@ -info['id']) || $u->info['banned']>0) - { - die(json_encode(array('js'=>'top.location="bk?exit='.$code.'";'))); - }elseif($u->info['ip']!=$_SERVER['HTTP_X_REAL_IP']) - { - - } - - if($u->info['activ']>0) { - die('Вам необходимо активировать персонажа.
    Авторизируйтесь с главной страницы.'); - } - - if($u->info['repass'] > 0) { - die(); - } - - if(isset($_GET['items'])) { - $itm = mysql_fetch_array(mysql_query('SELECT * FROM `fastpanel` WHERE `uid` = "'.$u->info['id'].'" LIMIT 1')); - if(!isset($itm['id'])) { - mysql_query('INSERT INTO `fastpanel` (`uid`) VALUES ("'.$u->info['id'].'")'); - } - // - $r = explode('|',$_GET['items']); - $i = 0; $v = ''; - while( $i <= 10 ) { - if(isset($r[$i])) { - $id = round((int)$r[$i]); - $id = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `id` = "'.mysql_real_escape_string($id).'" AND `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); - if(isset($id['id'])) { - $v .= $id['id'].'|'; - }else{ - $v .= '0|'; - } - }else{ - $v .= '0|'; - } - $i++; - } - $v = rtrim($v,'|'); - mysql_query('UPDATE `fastpanel` SET `data` = "'.mysql_real_escape_string($v).'" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - } - -?> \ No newline at end of file diff --git a/fight/take.team.php b/fight/take.team.php index 956dc2be..7f6ae44c 100644 --- a/fight/take.team.php +++ b/fight/take.team.php @@ -1,93 +1,94 @@ -info['id']) && $u->info['battle'] > 0 ) { - // - function json_fix_cyr($json_str) { - $cyr_chars = array ( - '\u0430' => 'а', '\u0410' => 'А', - '\u0431' => 'б', '\u0411' => 'Б', - '\u0432' => 'в', '\u0412' => 'В', - '\u0433' => 'г', '\u0413' => 'Г', - '\u0434' => 'д', '\u0414' => 'Д', - '\u0435' => 'е', '\u0415' => 'Е', - '\u0451' => 'ё', '\u0401' => 'Ё', - '\u0436' => 'ж', '\u0416' => 'Ж', - '\u0437' => 'з', '\u0417' => 'З', - '\u0438' => 'и', '\u0418' => 'И', - '\u0439' => 'й', '\u0419' => 'Й', - '\u043a' => 'к', '\u041a' => 'К', - '\u043b' => 'л', '\u041b' => 'Л', - '\u043c' => 'м', '\u041c' => 'М', - '\u043d' => 'н', '\u041d' => 'Н', - '\u043e' => 'о', '\u041e' => 'О', - '\u043f' => 'п', '\u041f' => 'П', - '\u0440' => 'р', '\u0420' => 'Р', - '\u0441' => 'с', '\u0421' => 'С', - '\u0442' => 'т', '\u0422' => 'Т', - '\u0443' => 'у', '\u0423' => 'У', - '\u0444' => 'ф', '\u0424' => 'Ф', - '\u0445' => 'х', '\u0425' => 'Х', - '\u0446' => 'ц', '\u0426' => 'Ц', - '\u0447' => 'ч', '\u0427' => 'Ч', - '\u0448' => 'ш', '\u0428' => 'Ш', - '\u0449' => 'щ', '\u0429' => 'Щ', - '\u044a' => 'ъ', '\u042a' => 'Ъ', - '\u044b' => 'ы', '\u042b' => 'Ы', - '\u044c' => 'ь', '\u042c' => 'Ь', - '\u044d' => 'э', '\u042d' => 'Э', - '\u044e' => 'ю', '\u042e' => 'Ю', - '\u044f' => 'я', '\u042f' => 'Я', - - '\r' => '', - '\n' => '
    ', - '\t' => '' - ); - foreach ($cyr_chars as $cyr_char_key => $cyr_char) { - $json_str = str_replace($cyr_char_key, $cyr_char, $json_str); - } - return $json_str; - } - // - $r = array(); - $p = array(); - $p['sp'] = mysql_query('SELECT +if ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') { + if (isset($u->info['id']) && $u->info['battle'] > 0) { + // + function json_fix_cyr($json_str) + { + $cyr_chars = [ + '\u0430' => 'а', '\u0410' => 'А', + '\u0431' => 'б', '\u0411' => 'Б', + '\u0432' => 'в', '\u0412' => 'В', + '\u0433' => 'г', '\u0413' => 'Г', + '\u0434' => 'д', '\u0414' => 'Д', + '\u0435' => 'е', '\u0415' => 'Е', + '\u0451' => 'ё', '\u0401' => 'Ё', + '\u0436' => 'ж', '\u0416' => 'Ж', + '\u0437' => 'з', '\u0417' => 'З', + '\u0438' => 'и', '\u0418' => 'И', + '\u0439' => 'й', '\u0419' => 'Й', + '\u043a' => 'к', '\u041a' => 'К', + '\u043b' => 'л', '\u041b' => 'Л', + '\u043c' => 'м', '\u041c' => 'М', + '\u043d' => 'н', '\u041d' => 'Н', + '\u043e' => 'о', '\u041e' => 'О', + '\u043f' => 'п', '\u041f' => 'П', + '\u0440' => 'р', '\u0420' => 'Р', + '\u0441' => 'с', '\u0421' => 'С', + '\u0442' => 'т', '\u0422' => 'Т', + '\u0443' => 'у', '\u0423' => 'У', + '\u0444' => 'ф', '\u0424' => 'Ф', + '\u0445' => 'х', '\u0425' => 'Х', + '\u0446' => 'ц', '\u0426' => 'Ц', + '\u0447' => 'ч', '\u0427' => 'Ч', + '\u0448' => 'ш', '\u0428' => 'Ш', + '\u0449' => 'щ', '\u0429' => 'Щ', + '\u044a' => 'ъ', '\u042a' => 'Ъ', + '\u044b' => 'ы', '\u042b' => 'Ы', + '\u044c' => 'ь', '\u042c' => 'Ь', + '\u044d' => 'э', '\u042d' => 'Э', + '\u044e' => 'ю', '\u042e' => 'Ю', + '\u044f' => 'я', '\u042f' => 'Я', + + '\r' => '', + '\n' => '
    ', + '\t' => '', + ]; + foreach ($cyr_chars as $cyr_char_key => $cyr_char) { + $json_str = str_replace($cyr_char_key, $cyr_char, $json_str); + } + return $json_str; + } + + // + $r = []; + $p = []; + $p['sp'] = mysql_query( + 'SELECT `u`.`id`,`u`.`login`,`u`.`login2`,`u`.`align`,`u`.`level`, `s`.`hpNow`,`s`.`mpNow`,`s`.`team` - FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `u`.`battle` = "'.$u->info['battle'].'" - '); - while( $p['pl'] = mysql_fetch_array($p['sp']) ) { - $p['st'] = $u->getStats($p['pl']['id']); - $r[] = array( - 'id' => $p['pl']['id'], - 'login' => $p['pl']['login'], - 'team' => $p['pl']['team'], - 'hpNow' => $p['pl']['hpNow'], - 'mpNow' => $p['pl']['mpNow'], - 'hpAll' => $p['st']['hpAll'], - 'mpAll' => $p['st']['mpAll'], - 'align' => $p['pl']['align'], - 'clan' => $p['pl']['clan'], - 'level' => $p['pl']['level'] - ); - } - unset($p); - // - echo json_fix_cyr(json_encode($r)); - //echo json_encode($r); - }else{ - echo 'false'; - } + FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `u`.`battle` = "' . $u->info['battle'] . '" + ' + ); + while ($p['pl'] = mysql_fetch_array($p['sp'])) { + $p['st'] = $u->getStats($p['pl']['id']); + $r[] = [ + 'id' => $p['pl']['id'], + 'login' => $p['pl']['login'], + 'team' => $p['pl']['team'], + 'hpNow' => $p['pl']['hpNow'], + 'mpNow' => $p['pl']['mpNow'], + 'hpAll' => $p['st']['hpAll'], + 'mpAll' => $p['st']['mpAll'], + 'align' => $p['pl']['align'], + 'clan' => $p['pl']['clan'], + 'level' => $p['pl']['level'], + ]; + } + unset($p); + echo json_fix_cyr(json_encode($r)); + } else { + echo 'false'; + } } -?> \ No newline at end of file diff --git a/forum_script/_forum.class.php b/forum_script/_forum.class.php index 953db596..7d98b339 100644 --- a/forum_script/_forum.class.php +++ b/forum_script/_forum.class.php @@ -1,813 +1,725 @@ 'Доступ закрыт',1=>'Только чтение',2=>'Разрешено добавлять ответы',3=>'Разрешено создовать топики',4=>'Разрешено добавлять ответы и создавать топики'); + public $mod = 0, $see = [], $lst = [], $gd = [], $menu = '', $pages = '', $r, $user = false, $fm = false, $error, $acs = [0 => 'Доступ закрыт', 1 => 'Только чтение', 2 => 'Разрешено добавлять ответы', 3 => 'Разрешено создовать топики', 4 => 'Разрешено добавлять ответы и создавать топики']; - - public function paginator($t,$pagers=0){ - if(isset($_GET['search'])) { - $where = '( `text` LIKE "%'.mysql_real_escape_string($_GET['search']).'%" OR `title` LIKE "%'.mysql_real_escape_string($_GET['search']).'%" OR `login` LIKE "%'.mysql_real_escape_string($_GET['search']).'%" ) AND `topic` < "0" AND `delete` = "0"' ; - $pre_url='search='.htmlspecialchars($_GET['search'],NULL,'cp1251').'&read='.$pagers.'&'; - $idpaginator=$pagers; - }elseif($pagers!=0){ - $where = '`topic` = "'.$pagers.'" AND `delete` = "0"' ; - $pre_url='read='.$pagers.'&'; - $idpaginator=$pagers; - }elseif($t==1){ - $where = '`topic` < "0" AND `fid` = "'.$this->r.'" AND `delete` = "0"'; - $pre_url='r='.$this->r.'&'; - $idpaginator=$this->r; - }elseif($t==2){ - $where = '`topic` = "'.$this->see['id'].'" AND `delete` = "0"' ; - $pre_url='read='.$this->see['id'].'&'; - $idpaginator=$this->see['id']; - } - $q="SELECT count(*) FROM forum_msg WHERE ".$where; - $res=mysql_query($q); - $row=mysql_fetch_row($res); - $total_rows=$row[0]; - $num_pages=ceil($total_rows/20); - $plist=''; - for($i=1;$i<=$num_pages;$i++) { - if( (!isset($_GET['page']) || round((int)$_GET['page']) < 1) && $i == 1 && ($t!=2 || isset($_GET['read']))) { - $plist.=''.$i.""; - }elseif( ( $_GET['page']!=$i || $pagers!=0 ) ){ - $plist.='
    '.$i.""; - }else{ - $plist.=''.$i.''; - } + + public function paginator($t, $pagers = 0) + { + if (isset($_GET['search'])) { + $where = '( `text` LIKE "%' . mysql_real_escape_string($_GET['search']) . '%" OR `title` LIKE "%' . mysql_real_escape_string($_GET['search']) . '%" OR `login` LIKE "%' . mysql_real_escape_string($_GET['search']) . '%" ) AND `topic` < "0" AND `delete` = "0"'; + $pre_url = 'search=' . htmlspecialchars($_GET['search'], null, 'cp1251') . '&read=' . $pagers . '&'; + $idpaginator = $pagers; + } elseif ($pagers != 0) { + $where = '`topic` = "' . $pagers . '" AND `delete` = "0"'; + $pre_url = 'read=' . $pagers . '&'; + $idpaginator = $pagers; + } elseif ($t == 1) { + $where = '`topic` < "0" AND `fid` = "' . $this->r . '" AND `delete` = "0"'; + $pre_url = 'r=' . $this->r . '&'; + $idpaginator = $this->r; + } elseif ($t == 2) { + $where = '`topic` = "' . $this->see['id'] . '" AND `delete` = "0"'; + $pre_url = 'read=' . $this->see['id'] . '&'; + $idpaginator = $this->see['id']; + } + $q = "SELECT count(*) FROM forum_msg WHERE " . $where; + $res = mysql_query($q); + $row = mysql_fetch_row($res); + $total_rows = $row[0]; + $num_pages = ceil($total_rows / 20); + $plist = ''; + for ($i = 1; $i <= $num_pages; $i++) { + if ((!isset($_GET['page']) || round((int)$_GET['page']) < 1) && $i == 1 && ($t != 2 || isset($_GET['read']))) { + $plist .= '' . $i . ""; + } elseif (($_GET['page'] != $i || $pagers != 0)) { + $plist .= '' . $i . ""; + } else { + $plist .= '' . $i . ''; } - if($plist == '') { - $plist = '1'; - } - return ''.$plist.''; - } - - public function testAnswer($text) { - - $r = str_replace('[/?]','[?]',$text); - $r = explode('[?]',$r); - $i = 1; - $pr_us_all = 0; - while($i != -1) { - if(isset($r[$i])) { - $ra = explode('[:]',$r[$i]); - $j = 0; - if(isset($this->user['id'])) { - $yg = mysql_fetch_array(mysql_query('SELECT * FROM `forum_answers` WHERE `msg_id` = "'.$this->see['id'].'" AND `q_id` = "'.$i.'" AND `uid` = "'.$this->user['id'].'" AND `delete` = "0" LIMIT 1')); - if(!isset($yg['id'],$_GET['q_now'],$_GET['answer_now']) && $_GET['q_now'] == $i) { - $_GET['answer_now'] = round((int)$_GET['answer_now']); - $_GET['q_now'] = round((int)$_GET['q_now']); - if(isset($ra[$_GET['answer_now']])) { - mysql_query('INSERT INTO `forum_answers` (`uid`,`msg_id`,`q_id`,`answer`,`time`,`city`) VALUES - ("'.$this->user['id'].'","'.$this->see['id'].'","'.mysql_real_escape_string($_GET['q_now']).'","'.mysql_real_escape_string($_GET['answer_now']).'", - "'.time().'","'.$this->user['city'].'")'); - die(''); - } - } - } - $pr_all = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `forum_answers` WHERE `msg_id` = "'.$this->see['id'].'" AND `q_id` = "'.$i.'" AND `delete` = "0" LIMIT 1')); - $pr_all = $pr_all[0]; - $pr_us_all += $pr_all; - $pr_lst = 0; - $pr_asw = 0; - while($j != -1) { - if(isset($ra[$j]) && $ra[$j] != '') { - if($j > 0) { - - $prc = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `forum_answers` WHERE `msg_id` = "'.$this->see['id'].'" AND `answer` = "'.$j.'" AND `q_id` = "'.$i.'" AND `delete` = "0" LIMIT 1')); - $prc = 0+$prc[0]; - $pr_asw += $prc; - if( $pr_asw == $pr_all ) { - $prc = 100-$pr_lst; - $pr_lst += $prc; - if($prc > 0) { - $prc = ''.$prc.''; - } - }else{ - $prc = floor($prc/$pr_all*100); - if($prc > 0) { - $pr_lst += $prc; - $prc = ''.$prc.''; - } - } - if(isset($this->user['id'])) { - if(isset($yg['id'])) { - if($yg['answer'] == $j) { - $zm = '• '.$ra[$j].'     -   '.$prc.'%   (Ваш голос)'; - }else{ - $zm = '• '.$ra[$j].'     -   '.$prc.'%'; - } - }else{ - $zm = '• '.$ra[$j].'     -   '.$prc.'%'; - } - }else{ - $zm = '• '.$ra[$j].'     -   '.$prc.'%'; - } - - $text = str_replace('[:]'.$ra[$j],$zm,$text); - }else{ - $zm = '

    '.$ra[$j].'

    '; - $text = str_replace(str_replace('
    ','',$ra[$j]),$zm,$text); - } - }else{ - $j = -2; - } - $j++; - } - $text = str_replace('[?]','',$text); - }else{ - $i = -2; - } - $i++; - } - $text = str_replace('[/?]','


    Всего проголосовало людей '.$pr_us_all.'
    ',$text); - return $text; - } - - public function startForum() - { - //Выделяем пользователя - $ufr = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_COOKIE['login']).'" AND `pass` = "'.mysql_real_escape_string($_COOKIE['pass']).'" AND `banned` = "0" LIMIT 1')); - if(!isset($ufr['id']) || $ufr['banned']>0) - { - unset($u); - }else{ - $ufr['sl'] = ''.$ufr['login'].' ['.$ufr['level'].']'; - $this->user = $ufr; - } - - //Выделяем раздел который просматривает пользователь - if(isset($_GET['read'])) - { - //читаем сообщение - $see = mysql_fetch_array(mysql_query('SELECT * FROM `forum_msg` WHERE `id` = "'.mysql_real_escape_string($_GET['read']).'" AND `delete` = "0" LIMIT 1')); - if(!isset($see['id']) || ($see['fid']==65 && $this->user['admin']==0 && ($this->user['align']<=1 || $this->user['align']>=2)) || ($see['fid']==75 && $this->user['admin']==0 && ($this->user['align']<=3 || $this->user['align']>=4))) - { - $this->r = -2; - $this->error = 'Топик форума не найден.'; - }else{ - $this->r = -1; - $see['goodAdd'] = 1; - if($see['nocom']>0) - { - if($this->user['align']>1 && $this->user['align']<2) - { - if($see['nocom']==2 || $see['nocom']==4) - { - $see['goodAdd'] = 0; - } - } - if($this->user['align']>3 && $this->user['align']<4) - { - if($see['nocom']==2 || $see['nocom']==3) - { - $see['goodAdd'] = 0; - } - } - if($this->user['admin']>0) - { - $see['goodAdd'] = 1; - } - } - $this->see = $see; - $this->fm = mysql_fetch_array(mysql_query('SELECT * FROM `forum_menu` WHERE `id` = "'.mysql_real_escape_string($see['fid']).'" LIMIT 1')); - } - }else{ - if(isset($_GET['r'])) - { - $this->r = (int)$_GET['r']; - }else{ - $this->r = 1; - } - - $fm = mysql_fetch_array(mysql_query('SELECT * FROM `forum_menu` WHERE `id` = "'.mysql_real_escape_string($this->r).'" LIMIT 1')); - if(!isset($fm['id']) || ($fm['id']==65 && $this->user['admin']==0 && ($this->user['align']<=1 || $this->user['align']>=2)) || ($fm['id']==75 && $this->user['admin']==0 && ($this->user['align']<=3 || $this->user['align']>=4)) ) - { - $this->r = -2; - $this->fm = false; - $this->error = 'Раздел форума не найден.'; - }else{ - $this->fm = $fm; - } - } - - $this->genMenu(); - - $this->lst = mysql_fetch_array(mysql_query('SELECT `id`,`time` FROM `forum_msg` WHERE `uid` = "'.$this->user['id'].'" AND `delete` = "0" ORDER BY `time` DESC LIMIT 1')); - - //Проверяем форум на доступность - if($this->gd[$this->fm['id']]==0 && $ufr['admin']==0) - { - //просмотр закрыт - $this->r = -2; - $this->error = 'Вы не можете читать данную конференцию.'; - }elseif($this->fm['only_admin']==1 && $this->user['admin']==0) - { - //просмотр закрыт - $this->r = -2; - $this->error = 'Вы не можете читать данную конференцию.'; - } - } - - public function seeTopic() - { - global $c; - $fd_limit=20; - if(isset($_GET['page'])){ - $start=$_GET['page']*$fd_limit-$fd_limit; - }else{ - $start=0; - //echo 'SELECT * FROM `forum_msg` WHERE `topic` < "0" AND `fid` = "'.$this->r.'" AND `delete` = "0" ORDER BY `id` DESC LIMIT '.$start.','.$fd_limit; - } - if($this->see['fid']==65 && $this->user['admin']==0 && ($this->user['align']<=1 || $this->user['align']>=2)){ - - }elseif($this->see['fid']==75 && $this->user['admin']==0 && ($this->user['align']<=3 || $this->user['align']>=4)){ - - }elseif(isset($this->see['id'])) - { - //Выводим заголовок - echo $this->genuser($this->see['uid'],$this->see['login'],$this->see['level'],$this->see['align'],$this->see['clan'],$this->see['invis'],$this->see['city'],$this->see['cityreg']); - if($this->user['admin']>0 || ($this->user['align'] > 1 && $this->user['align'] < 2) || ($this->user['align'] > 3 && $this->user['align'] < 4)) - { - echo ' 
    '; - if($this->user['admin']>0) { - echo ''; - } - echo ''; - echo ''; - echo '
    '; - } - echo '     ('.date('d.m.Y H:i',$this->see['time']).')
    '; - $this->see['text'] = str_replace("\n", "
    ", $this->see['text']); - $this->see['text'] = $this->testAnswer($this->see['text']); - $this->see['text'] = $this->parse_bb_code($this->see['text']); - /* - if($this->see['id'] ==1608) { - $uslist = ''; $xu1 = 0; - $su1 = mysql_query('SELECT `i`.`uid`,`u`.`login`,`u`.`level`,`u`.`online`,`u`.`clan`,`u`.`align` FROM `items_users` AS `i` LEFT JOIN `users` AS `u` ON `i`.`uid` = `u`.`id` WHERE `i`.`item_id` = "2852" LIMIT 25'); - $usrs = array(); - while($pu1 = mysql_fetch_array($su1)) { - if(!isset($usrs[$pu1['uid']])) { - $xu1++; - $usrs[$pu1['uid']] = $xu1; - $uslist .= $xu1.'. '.$pu1['login'].'['.$pu1['level'].']'; - if($pu1['online']>time()-520) { - $uslist .= ' online'; - } - $uslist .= '
    '; - } - } - $this->see['text'] = str_replace("{users-list}", 'Список участников ['.$xu1.'/25]:
    '.$uslist.'
    ', $this->see['text']); - unset($uslist,$pu1,$su1,$xu1,$usrs); - }*/ - - $rtrn = ''; - $rtrn .= 'see['fixed'] > 0) { - $rtrn .= ' class="fixed_topik"'; - } - - $rtrn .= ' style="margin-left:31px;">'; - - if($this->see['clear']==0){ - $rtrn .= $this->see['text']; - }else{ - if($this->user['admin'] > 0) { - $rtrn .= '
    '.$this->see['text'].'
    '; - } - $rtrn .= '
    Запись была удалена'; - if($this->user['del_admin'] == 0) { - $rtrn .= ', '.$this->see['del_login'].''; - } - $rtrn .= '
    '; - } - - //Записи модераторов и ангелов - $sp1 = mysql_query('SELECT * FROM `forum_msg_mod` WHERE `msg_id` = "'.$this->see['id'].'"'); - while($pl1 = mysql_fetch_array($sp1)) { - $rtrn .= '
    '; - if($pl1['from_admin'] == 1) { - $pl1['login'] = '<Администрация>'; - $pl1['city'] = ''; - $pl1['cityreg'] = ''; - $pl1['clan'] = ''; - $pl1['level'] = '??'; - $pl1['uid'] = 0; - } - $rtrn .= $this->genuser($pl1['uid'],$pl1['login'],$pl1['level'],$pl1['align'],$pl1['clan'],$pl1['invis'],$pl1['city'],$pl1['cityreg']); - $rtrn .= ' ('.date('d.m.y H:i',$pl1['time']).'): '; - $pl1['text'] = str_replace("\n", "
    ", $pl1['text']); - $rtrn .= $this->link_it($pl1['text']).'
    '; - } - - $rtrn .= '
    '; - //Выводим комментарии - $sp = mysql_query('SELECT * FROM `forum_msg` WHERE `topic` = "'.$this->see['id'].'" AND `delete` = "0" ORDER BY `time` ASC LIMIT '.$start.','.$fd_limit ); - while($pl = mysql_fetch_array($sp)) - { - - $rtrn .= $this->genuser($pl['uid'],$pl['login'],$pl['level'],$pl['align'],$pl['clan'],$pl['invis'],$pl['city'],$pl['cityreg']); - if($this->user['admin']>0 || ($this->user['align'] > 1 && $this->user['align'] < 2) || ($this->user['align'] > 3 && $this->user['align'] < 4)) - { - $rtrn .= ' 
    '; - if($this->user['admin']>0) { - $rtrn .= ''; - } - $rtrn .= ''; - $rtrn .= ''; - $rtrn .= '
    '; - } - $rtrn .= '     ('.date('d.m.Y H:i',$pl['time']).')
    '; - $pl['text'] = $this->parse_bb_code($pl['text']); - $pl['text'] = str_replace("\n", "
    ", $pl['text']); - if($pl['clear']==0){ - $rtrn .= '
    '.$pl['text'].'
    '; - }else{ - if($this->user['admin'] > 0) { - $rtrn .= '
    '.$pl['text'].'
    '; - } - $rtrn .= '
    Комментарий удален'; - if($this->user['del_admin'] == 0) { - $rtrn .= ', '.$pl['del_login'].''; - } - $rtrn .= '
    '; - } - - //Записи модераторов и ангелов - $sp1 = mysql_query('SELECT * FROM `forum_msg_mod` WHERE `msg_id` = "'.$pl['id'].'"'); - while($pl1 = mysql_fetch_array($sp1)) { - $rtrn .= '
    '; - if($pl1['from_admin'] == 1) { - $pl1['login'] = '<Администрация>'; - $pl1['city'] = ''; - $pl1['cityreg'] = ''; - $pl1['clan'] = ''; - $pl1['level'] = '??'; - $pl1['uid'] = 0; - } - $rtrn .= $this->genuser($pl1['uid'],$pl1['login'],$pl1['level'],$pl1['align'],$pl1['clan'],$pl1['invis'],$pl1['city'],$pl1['cityreg']); - $rtrn .= ' ('.date('d.m.y H:i',$pl1['time']).'): '; - $pl1['text'] = str_replace("\n", "
    ", $pl1['text']); - $rtrn .= $this->link_it($pl1['text']).'
    '; - } - - $rtrn .= '
    '; - } - echo $rtrn; - - } - } - - public function link_it($text) { - $text= preg_replace("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", "$1$2$3", $text); - $text= preg_replace("/(^|[\n ])([\w]*?)((www|ftp)\.[^ \,\"\t\n\r<]*)/is", "$1$2$3", $text); - $text= preg_replace("/(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+)+)/i", "$1$2@$3", $text); - return($text); - } + } + if ($plist == '') { + $plist = '1'; + } + return '' . $plist . ''; + } - - public function genuser($id,$login,$level,$align,$clan,$invis,$city,$cityreg) - { - global $c,$code; - $ufr = ''; - if($align>0) - { - $u .= ''; - } - if($clan>0) - { - $clan = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.((int)$clan).'" LIMIT 1')); - if(isset($clan['id'])) - { - $u .= ''; - } - } - - if($login == '<Администрация>') - { - $login = 'Администрация'; - } - - $u .= ''.$login.' ['.$level.']'; - - if($city!='') - { - $ufr = '   '.$u; - } - return $u; - } - - public function pravasee() - { - $prava = 1; //можно добавлять и просматривать - if($this->see['fid']==65 && $this->user['admin']==0 && ($this->user['align']<=1 || $this->user['align']>=2)) - { - //топик ОС - $prava = 0; - }elseif($this->see['fid']==75 && $this->user['admin']==0 && ($this->user['align']<=3 || $this->user['align']>=4)) - { - //топик Армады - $prava = 0; - }elseif(isset($this->see['id']) && $this->see['nocom']==3 && $this->user['admin']==0 && ($this->user['align']<=3 || $this->user['align']>=4)) - { - $prava = 0; - }elseif(isset($this->see['id']) && $this->see['nocom']==2 && $this->user['admin']==0 && ($this->user['align']<=1 || $this->user['align']>=2)) - { - $prava = 0; - }elseif(isset($this->see['id']) && $this->see['nocom']==1 && $this->user['admin']==0) - { - $prava = 0; - }elseif($this->user['level']<1) - { - $prava = 0; - }elseif($this->lst['time']>time()-60) - { - $prava = 0; - } - return $prava; - } - - public function admintopmsg($read,$id,$text,$color,$adm) { - - $msg = mysql_fetch_array(mysql_query('SELECT `id` FROM `forum_msg` WHERE `id` = "'.mysql_real_escape_string($id).'" LIMIT 1')); - if(!isset($msg['id'])) { - $this->error = 'Сообщение не найдено'; - }elseif(trim($text,' ')=='' || iconv_strlen(trim($text,' '))<2) - { - $this->error = 'Минимальная длина сообщения должна быть не менее 2-х символов'; - }elseif($this->user['molch2']>time()) - { - $this->error = 'Вы не можете писать сообщения и создавать топики на форуме, на вас наложено заклятие молчания'; - }elseif(isset($this->see['id']) && $this->see['nocom']==3 && $this->user['admin']==0 && ($this->user['align']<=3 || $this->user['align']>=4)) - { - $this->error = 'В этом топике запрещено оставлять ответы'; - }elseif(isset($this->see['id']) && $this->see['nocom']==2 && $this->user['admin']==0 && ($this->user['align']<=1 || $this->user['align']>=2)) - { - $this->error = 'В этом топике запрещено оставлять ответы'; - }elseif(isset($this->see['id']) && $this->see['nocom']==1 && $this->user['admin']==0) - { - $this->error = 'В этом топике запрещено оставлять ответы'; - }elseif($this->user['level'] < 8) - { - $this->error = 'Вы не можете писать сообщения и создавать топики на форуме, это возможно с 8-го уровня'; - }else{ - mysql_query('INSERT INTO `forum_msg_mod` (`uid`,`login`,`align`,`level`,`admin`,`clan`,`time`,`text`,`msg_id`,`delete`,`color`,`city`,`cityreg`,`from_admin`) VALUES - ("'.$this->user['id'].'","'.$this->user['login'].'","'.$this->user['align'].'","'.$this->user['level'].'","'.$this->user['admin'].'","'.$this->user['clan'].'", - "'.time().'","'.mysql_real_escape_string($text).'","'.mysql_real_escape_string($msg['id']).'","0","red","'.$this->user['city'].'","'.$this->user['cityreg'].'", - "'.mysql_real_escape_string(round((int)$adm)).'") '); - if(!isset($this->see['id'])) { - header('location: ?r='.round((int)$_GET['r']).'&page='.round((int)$_GET['page'])); - }else{ - header('location: ?read='.$this->see['id'].'&page='.round((int)$_GET['page'])); - } - } - - } - - public function parse_bb_code($text) { - $text = preg_replace('/\[(\/?)(b|i|u|s)\s*\]/', "<$1$2>", $text); - - $text = preg_replace('/\[code\]/', '
    ', $text);
    -		$text = preg_replace('/\[\/code\]/', '
    ', $text); - - $text = preg_replace('/\[(\/?)quote\]/', "<$1blockquote>", $text); - $text = preg_replace('/\[(\/?)quote(\s*=\s*([\'"]?)([^\'"]+)\3\s*)?\]/', "<$1blockquote>Цитата $4:
    ", $text); - - //$text = preg_replace('/\[url\](?:https:\/\/)?([a-z0-9-.]+\.\w{2,4})\[\/url\]/', "$1", $text); - $text = preg_replace('/\[url=(.+?)\](.+?)\[\/url\]/', "$2", $text); - $text = preg_replace('/\[url\s?=\s?([\'"]?)(?:https:\/\/)?([a-z0-9-.]+\.\w{2,4})\1\](.*?)\[\/url\]/', "$3", $text); - - - $text = preg_replace('/\[img\s*\]([^\]\[]+)\[\/img\]/', "", $text); - $text = preg_replace('/\[img\s*=\s*([\'"]?)([^\'"\]]+)\1\]/', "", $text); - - $text = $this->close_dangling_tags($text); - - return $text; - } - - // $s - строка, в которой необходимо закрыть теги - // $tags - список тегов для закрытия через символ | (b|u|i) - public function close_dangling_tags($html){ - #put all opened tags into an array - preg_match_all("#<([a-z]+)( .*)?(?!/)>#iU",$html,$result); - $openedtags=$result[1]; - - #put all closed tags into an array - preg_match_all("##iU",$html,$result); - $closedtags=$result[1]; - $len_opened = count($openedtags); - # all tags are closed - if(count($closedtags) == $len_opened){ - return $html; - } - - $openedtags = array_reverse($openedtags); - # close tags - for($i=0;$i < $len_opened;$i++) { - if (!in_array($openedtags[$i],$closedtags)){ - if( $openedtags[$i] != 'br' ) { - $html .= ''; - } - } else { - unset($closedtags[array_search($openedtags[$i],$closedtags)]); - } - } - return $html; - } - - public function addnewtop($title,$text,$ico,$time,$login,$uid,$fid,$topic) - { - if(trim($text,' ')=='' || iconv_strlen(trim($text,' '))<5) - { - $this->error = 'Минимальная длина сообщения должна быть не менее 5-ти символов'; - }elseif($this->user['molch2']>time()) - { - $this->error = 'Вы не можете писать сообщения и создавать топики на форуме, на вас наложено заклятие молчания'; - }elseif((trim($title,' ')=='' || iconv_strlen(trim($title,' '))<5) && $topic == -1) - { - $this->error = 'Минимальная длина заголовка должна быть не менее 5-ти символов'; - }elseif(isset($this->see['id']) && $this->see['nocom']==3 && $this->user['admin']==0 && ($this->user['align']<=3 || $this->user['align']>=4)) - { - $this->error = 'В этом топике запрещено оставлять ответы'; - }elseif(isset($this->see['id']) && $this->see['nocom']==2 && $this->user['admin']==0 && ($this->user['align']<=1 || $this->user['align']>=2)) - { - $this->error = 'В этом топике запрещено оставлять ответы'; - }elseif(isset($this->see['id']) && $this->see['nocom']==1 && $this->user['admin']==0) - { - $this->error = 'В этом топике запрещено оставлять ответы'; - }elseif($this->user['level'] < 2) - { - $this->error = 'Общение на форуме доступно с 2-го уровня'; - }elseif($this->gd[$fid]>0 && $this->lst['time']14) - { - $ico = 13; - } - $tl = array(); - if(isset($_POST['adminname']) && $this->user['admin']>0) - { - $tl['login'] = '<Администрация>'; - $tl['level'] = '??'; - $tl['align'] = '0'; - $tl['clan'] = '0'; - $tl['cityreg'] = 'newvillage'; - $tl['city'] = 'questcity'; - $tl['id'] = '0'; - }else{ - $tl['login'] = $this->user['login']; - $tl['level'] = $this->user['level']; - $tl['align'] = $this->user['align']; - $tl['clan'] = $this->user['clan']; - $tl['cityreg'] = $this->user['cityreg']; - $tl['city'] = $this->user['city']; - $tl['id'] = $uid; - } - $lst = mysql_fetch_array(mysql_query('SELECT * FROM `forum_msg` WHERE `topic` = "'.mysql_real_escape_string($topic).'" OR (`topic` = "-1" AND `id` = "'.mysql_real_escape_string($topic).'") ORDER BY `time` DESC LIMIT 1')); - $ins = mysql_query('INSERT INTO `forum_msg` (`cityreg`,`city`,`align`,`clan`,`level`,`login`,`fid`,`title`,`topic`,`ico`,`text`,`time`,`ip`,`uid`) VALUES ("'.mysql_real_escape_string($tl['cityreg']).'","'.mysql_real_escape_string($tl['city']).'","'.mysql_real_escape_string($tl['align']).'","'.mysql_real_escape_string($tl['clan']).'","'.mysql_real_escape_string($tl['level']).'","'.mysql_real_escape_string($tl['login']).'","'.mysql_real_escape_string($fid).'","'.mysql_real_escape_string(htmlspecialchars($title, NULL , 'cp1251')).'","'.mysql_real_escape_string($topic).'","'.mysql_real_escape_string($ico).'","'.mysql_real_escape_string(htmlspecialchars($text, NULL , 'cp1251')).'","'.mysql_real_escape_string($time).'","'.$_SERVER['HTTP_X_REAL_IP'].'","'.$tl['id'].'")'); - if(!$ins) - { - $this->error = 'Ошибка создания топика'; - return false; - }else{ - if($topic != -1) { - //Если автор предыдущего сообщения не текущий юзер - отправляем в чат сообщение о новом ответе - if($lst['uid']+1!=$this->user['id']) { - $fnt = ''.date('d.m.Y H:i').' На форуме опубликован новый ответ в обсуждении, в котором вы принимали участие. Читать далее'; - $ins = ''; $ll = array(); - $sp = mysql_query('SELECT `u`.`city`,`u`.`id`,`u`.`login`,`f`.`uid`,`f`.`login` FROM `forum_msg` AS `f` LEFT JOIN `users` AS `u` ON `f`.`uid` = `u`.`id` WHERE `f`.`delete` = "0" AND (`f`.`topic` = "'.mysql_real_escape_string($topic).'" OR (`f`.`topic` = "-1" AND `f`.`id` = "'.mysql_real_escape_string($topic).'")) LIMIT 1'); - while($pl = mysql_fetch_array($sp)) { - if(!isset($ll[$pl['uid']]) && $pl['uid']!=$this->user['id']) { - $ins .= '("'.$pl['city'].'","1","'.$pl['login'].'","6","-1","'.$fnt.'"),'; - $ll[$pl['uid']] = true; - } - } - unset($ll); - $ins = trim($ins,','); - if($ins!='') { - mysql_query('INSERT INTO `chat` (`city`,`new`,`to`,`type`,`time`,`text`) VALUES '.$ins.''); - } - } - } - $fid = mysql_insert_id(); - $this->lst['time'] = time(); - if(isset($this->see['id'])) { - header('location: ?read='.$this->see['id'].'&page='.round((int)$_GET['page'])); - }else{ - header('location: ?r='.round((int)$_GET['r']).'&page='.round((int)$_GET['page'])); - } - return $fid; - } - }elseif($this->lst['time']>time()-60) - { - $this->error = 'Вы не можете оставлять ответы и создавать топики так быстро'; - }else{ - $this->error = 'Вы не можете оставлять ответы и создавать топики в этой конференции'; - } - } - - public function forumData() - { - $fd_limit = 20; - if(isset($_GET['page'])){ - $start=$_GET['page']*$fd_limit-$fd_limit; - }else{ - $start=0; - //echo 'SELECT * FROM `forum_msg` WHERE `topic` < "0" AND `fid` = "'.$this->r.'" AND `delete` = "0" ORDER BY `id` DESC LIMIT '.$start.','.$fd_limit; - } - global $code,$c,$filter; - //отображаем топики данной конференции - $re = ''; - if(isset($_GET['search'])) { - $sp = mysql_query('SELECT * FROM `forum_msg` WHERE ( `text` LIKE "%'.mysql_real_escape_string($_GET['search']).'%" OR `title` LIKE "%'.mysql_real_escape_string($_GET['search']).'%" OR `login` LIKE "%'.mysql_real_escape_string($_GET['search']).'%" ) AND `topic` < "0" AND `delete` = "0" ORDER BY `id` DESC LIMIT '.$start.','.$fd_limit ); - }else{ - $sp = mysql_query('SELECT * FROM `forum_msg` WHERE `topic` < "0" AND `fid` = "'.$this->r.'" AND `delete` = "0" ORDER BY `fixed` DESC,`id` DESC LIMIT '.$start.','.$fd_limit ); - } - while($pl = mysql_fetch_array($sp)) - { - $lstDT = $pl['time']; - $row = mysql_num_rows(mysql_query('SELECT `id` FROM `forum_msg` WHERE `topic` = "'.$pl['id'].'" AND `delete` = "0"')); - $plist=''.$this->paginator(2,$pl['id']).''; - if($plist!=''){ - $plist=' '.$plist.'';} - - $re .= ' 0) { - $fxd = ' '; - $re .= ' class="fixed_topik"'; - } - $re .= ' style="margin-top:10px;">'; - $re .= '
    '.$fxd.' '.$pl['title'].' '.$plist.'   '.$this->genuser($pl['uid'],$pl['login'],$pl['level'],$pl['align'],$pl['clan'],$pl['invis'],$pl['city'],$pl['cityreg']).'
    '; - $re .= '
    '.date('d.m.Y H:i',$pl['time']).' » '; - if($pl['fid'] == 24) { - $re .= $filter->str_count(str_replace('[?]','Вопрос: ',str_replace('[/?]','',str_replace('[:]',', ',$pl['text']))),250); - }else{ - $re .= $filter->str_count(str_replace('[?]','Вопрос: ',str_replace('[/?]','',str_replace('[:]',', ',$pl['text']))),250); - } - $re .= '
    '; - $re .= '
    Ответов: '.$row.' ... '; - - $pku = mysql_query('SELECT `login`,`invis`,`time` FROM `forum_msg` WHERE `topic` = "'.$pl['id'].'" AND `delete` = 0 ORDER BY `id` DESC LIMIT 10'); - $pkusr = ''; - while($plku = mysql_fetch_array($pku)) { - $pkusr = $plku['login'].', '.$pkusr; - $lstDT = $plku['time']; - } - $pkusr = rtrim($pkusr,', '); - $re .= $pkusr; - unset($pkusr); - - $re .= '     ('.date('d.m.Y H:i',$lstDT).')
    '; - $re .= '
    '; - $re .="\n"; - } - echo $re; - } - - public function history($id,$uid,$act,$text) - { - if($type==1) - { - - } - } - - public function actionSee($id) - { - if($id==1) - { - //удалить топик \ коммент - $up = mysql_query('UPDATE `forum_msg` SET `delete` = "'.time().'",`del_login`="'.$this->user['login'].'" WHERE `id` = "'.$this->see['id'].'" LIMIT 1'); - $this->see['delete'] = time(); - }elseif($id==2) - { - //запретить комментировать - mysql_query('UPDATE `forum_msg` SET `nocom` = "1" WHERE `id` = "'.$this->see['id'].'" LIMIT 1'); - $this->see['nocom'] = 1; - }elseif($id==3) - { - //разрешить комментировать только Ангелам - mysql_query('UPDATE `forum_msg` SET `nocom` = "2" WHERE `id` = "'.$this->see['id'].'" LIMIT 1'); - $this->see['nocom'] = 2; - }elseif($id==4) - { - //разрешить комментировать только паладинам - mysql_query('UPDATE `forum_msg` SET `nocom` = "3" WHERE `id` = "'.$this->see['id'].'" LIMIT 1'); - $this->see['nocom'] = 3; - }elseif($id==5) - { - //разрешить комментировать только тарманам - mysql_query('UPDATE `forum_msg` SET `nocom` = "4" WHERE `id` = "'.$this->see['id'].'" LIMIT 1'); - $this->see['nocom'] = 4; - }elseif($id==6) - { - //разрешить комментировать всем - mysql_query('UPDATE `forum_msg` SET `nocom` = "0" WHERE `id` = "'.$this->see['id'].'" LIMIT 1'); - $this->see['nocom'] = 0; - }elseif($id==9) - { - //разрешить комментировать всем - $rzn = mysql_fetch_array(mysql_query('SELECT * FROM `forum_menu` WHERE `id` = "'.mysql_real_escape_string($_GET['trm']).'" LIMIT 1')); - if(isset($rzn['id'])) { - mysql_query('UPDATE `forum_msg` SET `fid` = "'.mysql_real_escape_string($rzn['id']).'" WHERE `id` = "'.$this->see['id'].'" LIMIT 1'); - } - }elseif($id==7) { - //фиксация топика или сообщения - if( $this->see['fixed'] == 0 ) { - $this->see['fixed'] = time(); - }else{ - $this->see['fixed'] = 0; - } - mysql_query('UPDATE `forum_msg` SET `fixed` = "'.$this->see['fixed'].'" WHERE `id` = "'.$this->see['id'].'" LIMIT 1'); - }elseif($id==8) { - //удаление сообщения - $tpdms = mysql_fetch_array(mysql_query('SELECT `id`,`clear`,`delete` FROM `forum_msg` WHERE `id` = "'.mysql_real_escape_string(round((int)$_GET['delete_msg'])).'" LIMIT 1' )); - if(isset($tpdms['id'])) { - // if(isset($this->see['id'])) { - if( $tpdms['clear'] == 0 ) { - $tpdms['clear'] = time(); - }else{ - $tpdms['delete'] = $this->user['id']; - } - mysql_query('UPDATE `forum_msg` SET `clear` = "'.$tpdms['clear'].'",`delete` = "'.$tpdms['delete'].'",`del_login` = "'.$this->user['login'].'",`del_align` = "'.$this->user['align'].'",`del_clan` = "'.$this->user['clan'].'",`del_admin` = "'.$this->user['admin'].'" WHERE `id` = "'.$tpdms['id'].'" LIMIT 1'); - // } - } - } - if(!isset($this->see['id'])) { - header('location: ?r='.round((int)$_GET['r']).'&page='.round((int)$_GET['page'])); - }else{ - header('location: ?read='.$this->see['id'].'&page='.round((int)$_GET['page'])); - } - } - - public function genRz($pl) - { - global $code; - $rt = ''; - if(isset($pl['id'])) - { - //0 - доступ закрыт, нелья даже читать, 1 - только чтение, 2 - разрешено добавлять ответы, 3 - разрешено создавать топики, 4 - разрешено создавать топики и добавлять ответы - $ico = 4; - if($pl['level']>$this->user['level']) - { - $ico = 1; - } - //проверяем уровень доступа - $this->gd[$pl['id']] = $ico; - $ico = ''; - $rt = ''.$ico.' '.$pl['name'].''; - }else{ - $rt = 'Раздел не найден'; - } - return $rt; - } - - public function genMenu() - { - $m = ''; - - - $sp = mysql_query('SELECT * FROM `forum_menu` WHERE `parent` = "0" ORDER BY `pos` DESC'); - while($pl = mysql_fetch_array($sp)) - { - if( $pl['id'] == 65 && $this->user['admin'] == 0 && ($this->user['align'] <= 1 ||$this->user['align'] >= 2) ) { - - }elseif( $pl['id'] == 75 && $this->user['admin'] == 0 && ($this->user['align'] <= 3 ||$this->user['align'] >= 4) ) { - - }elseif($pl['only_admin']==0 || $this->user['admin']>0) - { - $m .= $this->genRz($pl).'
    '; - if($this->r==$pl['id'] || $this->fm['parent']==$pl['id']) - { - $sp2 = mysql_query('SELECT * FROM `forum_menu` WHERE `parent` = "'.$pl['id'].'" AND `parent2`="0"'); - while($pl2 = mysql_fetch_array($sp2)) - { - $m .= '    '.$this->genRz($pl2).'
    '; - if($this->r==$pl2['id'] || $this->fm['parent2']==$pl2['id']) - { - $sp3 = mysql_query('SELECT * FROM `forum_menu` WHERE `parent2` = "'.$pl2['id'].'"'); - while($pl3 = mysql_fetch_array($sp3)) - { - $m .= '        '.$this->genRz($pl3).'
    '; - } - } - } - } - } - } - - $this->menu = $m; - } + public function testAnswer($text) + { + + $r = str_replace('[/?]', '[?]', $text); + $r = explode('[?]', $r); + $i = 1; + $pr_us_all = 0; + while ($i != -1) { + if (isset($r[$i])) { + $ra = explode('[:]', $r[$i]); + $j = 0; + if (isset($this->user['id'])) { + $yg = mysql_fetch_array(mysql_query('SELECT * FROM `forum_answers` WHERE `msg_id` = "' . $this->see['id'] . '" AND `q_id` = "' . $i . '" AND `uid` = "' . $this->user['id'] . '" AND `delete` = "0" LIMIT 1')); + if (!isset($yg['id'], $_GET['q_now'], $_GET['answer_now']) && $_GET['q_now'] == $i) { + $_GET['answer_now'] = round((int)$_GET['answer_now']); + $_GET['q_now'] = round((int)$_GET['q_now']); + if (isset($ra[$_GET['answer_now']])) { + mysql_query('INSERT INTO `forum_answers` (`uid`,`msg_id`,`q_id`,`answer`,`time`,`city`) VALUES + ("' . $this->user['id'] . '","' . $this->see['id'] . '","' . mysql_real_escape_string($_GET['q_now']) . '","' . mysql_real_escape_string($_GET['answer_now']) . '", + "' . time() . '","' . $this->user['city'] . '")'); + die(''); + } + } + } + $pr_all = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `forum_answers` WHERE `msg_id` = "' . $this->see['id'] . '" AND `q_id` = "' . $i . '" AND `delete` = "0" LIMIT 1')); + $pr_all = $pr_all[0]; + $pr_us_all += $pr_all; + $pr_lst = 0; + $pr_asw = 0; + while ($j != -1) { + if (isset($ra[$j]) && $ra[$j] != '') { + if ($j > 0) { + + $prc = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `forum_answers` WHERE `msg_id` = "' . $this->see['id'] . '" AND `answer` = "' . $j . '" AND `q_id` = "' . $i . '" AND `delete` = "0" LIMIT 1')); + $prc = 0 + $prc[0]; + $pr_asw += $prc; + if ($pr_asw == $pr_all) { + $prc = 100 - $pr_lst; + $pr_lst += $prc; + if ($prc > 0) { + $prc = '' . $prc . ''; + } + } else { + $prc = floor($prc / $pr_all * 100); + if ($prc > 0) { + $pr_lst += $prc; + $prc = '' . $prc . ''; + } + } + if (isset($this->user['id'])) { + if (isset($yg['id'])) { + if ($yg['answer'] == $j) { + $zm = '• ' . $ra[$j] . '     -   ' . $prc . '%   (Ваш голос)'; + } else { + $zm = '• ' . $ra[$j] . '     -   ' . $prc . '%'; + } + } else { + $zm = '• ' . $ra[$j] . '     -   ' . $prc . '%'; + } + } else { + $zm = '• ' . $ra[$j] . '     -   ' . $prc . '%'; + } + + $text = str_replace('[:]' . $ra[$j], $zm, $text); + } else { + $zm = '

    ' . $ra[$j] . '

    '; + $text = str_replace(str_replace('
    ', '', $ra[$j]), $zm, $text); + } + } else { + $j = -2; + } + $j++; + } + $text = str_replace('[?]', '', $text); + } else { + $i = -2; + } + $i++; + } + $text = str_replace('[/?]', '


    Всего проголосовало людей ' . $pr_us_all . '
    ', $text); + return $text; + } + + public function startForum() + { + //Выделяем пользователя + $ufr = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "' . mysql_real_escape_string($_COOKIE['login']) . '" AND `pass` = "' . mysql_real_escape_string($_COOKIE['pass']) . '" AND `banned` = "0" LIMIT 1')); + if (!isset($ufr['id']) || $ufr['banned'] > 0) { + unset($u); + } else { + $ufr['sl'] = '' . $ufr['login'] . ' [' . $ufr['level'] . ']'; + $this->user = $ufr; + } + + //Выделяем раздел который просматривает пользователь + if (isset($_GET['read'])) { + //читаем сообщение + $see = mysql_fetch_array(mysql_query('SELECT * FROM `forum_msg` WHERE `id` = "' . mysql_real_escape_string($_GET['read']) . '" AND `delete` = "0" LIMIT 1')); + if (!isset($see['id']) || ($see['fid'] == 65 && $this->user['admin'] == 0 && ($this->user['align'] <= 1 || $this->user['align'] >= 2)) || ($see['fid'] == 75 && $this->user['admin'] == 0 && ($this->user['align'] <= 3 || $this->user['align'] >= 4))) { + $this->r = -2; + $this->error = 'Топик форума не найден.'; + } else { + $this->r = -1; + $see['goodAdd'] = 1; + if ($see['nocom'] > 0) { + if ($this->user['align'] > 1 && $this->user['align'] < 2) { + if ($see['nocom'] == 2 || $see['nocom'] == 4) { + $see['goodAdd'] = 0; + } + } + if ($this->user['align'] > 3 && $this->user['align'] < 4) { + if ($see['nocom'] == 2 || $see['nocom'] == 3) { + $see['goodAdd'] = 0; + } + } + if ($this->user['admin'] > 0) { + $see['goodAdd'] = 1; + } + } + $this->see = $see; + $this->fm = mysql_fetch_array(mysql_query('SELECT * FROM `forum_menu` WHERE `id` = "' . mysql_real_escape_string($see['fid']) . '" LIMIT 1')); + } + } else { + if (isset($_GET['r'])) { + $this->r = (int)$_GET['r']; + } else { + $this->r = 1; + } + + $fm = mysql_fetch_array(mysql_query('SELECT * FROM `forum_menu` WHERE `id` = "' . mysql_real_escape_string($this->r) . '" LIMIT 1')); + if (!isset($fm['id']) || ($fm['id'] == 65 && $this->user['admin'] == 0 && ($this->user['align'] <= 1 || $this->user['align'] >= 2)) || ($fm['id'] == 75 && $this->user['admin'] == 0 && ($this->user['align'] <= 3 || $this->user['align'] >= 4))) { + $this->r = -2; + $this->fm = false; + $this->error = 'Раздел форума не найден.'; + } else { + $this->fm = $fm; + } + } + + $this->genMenu(); + + $this->lst = mysql_fetch_array(mysql_query('SELECT `id`,`time` FROM `forum_msg` WHERE `uid` = "' . $this->user['id'] . '" AND `delete` = "0" ORDER BY `time` DESC LIMIT 1')); + + //Проверяем форум на доступность + if ($this->gd[$this->fm['id']] == 0 && $ufr['admin'] == 0) { + //просмотр закрыт + $this->r = -2; + $this->error = 'Вы не можете читать данную конференцию.'; + } elseif ($this->fm['only_admin'] == 1 && $this->user['admin'] == 0) { + //просмотр закрыт + $this->r = -2; + $this->error = 'Вы не можете читать данную конференцию.'; + } + } + + public function seeTopic() + { + global $c; + $fd_limit = 20; + if (isset($_GET['page'])) { + $start = $_GET['page'] * $fd_limit - $fd_limit; + } else { + $start = 0; + //echo 'SELECT * FROM `forum_msg` WHERE `topic` < "0" AND `fid` = "'.$this->r.'" AND `delete` = "0" ORDER BY `id` DESC LIMIT '.$start.','.$fd_limit; + } + if ($this->see['fid'] == 65 && $this->user['admin'] == 0 && ($this->user['align'] <= 1 || $this->user['align'] >= 2)) { + + } elseif ($this->see['fid'] == 75 && $this->user['admin'] == 0 && ($this->user['align'] <= 3 || $this->user['align'] >= 4)) { + + } elseif (isset($this->see['id'])) { + //Выводим заголовок + echo $this->genuser($this->see['uid'], $this->see['login'], $this->see['level'], $this->see['align'], $this->see['clan'], $this->see['invis'], $this->see['city'], $this->see['cityreg']); + if ($this->user['admin'] > 0 || ($this->user['align'] > 1 && $this->user['align'] < 2) || ($this->user['align'] > 3 && $this->user['align'] < 4)) { + echo ' 
    '; + if ($this->user['admin'] > 0) { + echo ''; + } + echo ''; + echo ''; + echo '
    '; + } + echo '     (' . date('d.m.Y H:i', $this->see['time']) . ')
    '; + $this->see['text'] = str_replace("\n", "
    ", $this->see['text']); + $this->see['text'] = $this->testAnswer($this->see['text']); + $this->see['text'] = $this->parse_bb_code($this->see['text']); + + $rtrn = ''; + $rtrn .= 'see['fixed'] > 0) { + $rtrn .= ' class="fixed_topik"'; + } + + $rtrn .= ' style="margin-left:31px;">'; + + if ($this->see['clear'] == 0) { + $rtrn .= $this->see['text']; + } else { + if ($this->user['admin'] > 0) { + $rtrn .= '
    ' . $this->see['text'] . '
    '; + } + $rtrn .= '
    Запись была удалена'; + if ($this->user['del_admin'] == 0) { + $rtrn .= ', ' . $this->see['del_login'] . ''; + } + $rtrn .= '
    '; + } + + //Записи модераторов и ангелов + $sp1 = mysql_query('SELECT * FROM `forum_msg_mod` WHERE `msg_id` = "' . $this->see['id'] . '"'); + while ($pl1 = mysql_fetch_array($sp1)) { + $rtrn .= '
    '; + if ($pl1['from_admin'] == 1) { + $pl1['login'] = '<Администрация>'; + $pl1['city'] = ''; + $pl1['cityreg'] = ''; + $pl1['clan'] = ''; + $pl1['level'] = '??'; + $pl1['uid'] = 0; + } + $rtrn .= $this->genuser($pl1['uid'], $pl1['login'], $pl1['level'], $pl1['align'], $pl1['clan'], $pl1['invis'], $pl1['city'], $pl1['cityreg']); + $rtrn .= ' (' . date('d.m.y H:i', $pl1['time']) . '): '; + $pl1['text'] = str_replace("\n", "
    ", $pl1['text']); + $rtrn .= $this->link_it($pl1['text']) . '
    '; + } + + $rtrn .= '
    '; + //Выводим комментарии + $sp = mysql_query('SELECT * FROM `forum_msg` WHERE `topic` = "' . $this->see['id'] . '" AND `delete` = "0" ORDER BY `time` ASC LIMIT ' . $start . ',' . $fd_limit); + while ($pl = mysql_fetch_array($sp)) { + + $rtrn .= $this->genuser($pl['uid'], $pl['login'], $pl['level'], $pl['align'], $pl['clan'], $pl['invis'], $pl['city'], $pl['cityreg']); + if ($this->user['admin'] > 0 || ($this->user['align'] > 1 && $this->user['align'] < 2) || ($this->user['align'] > 3 && $this->user['align'] < 4)) { + $rtrn .= ' 
    '; + if ($this->user['admin'] > 0) { + $rtrn .= ''; + } + $rtrn .= ''; + $rtrn .= ''; + $rtrn .= '
    '; + } + $rtrn .= '     (' . date('d.m.Y H:i', $pl['time']) . ')
    '; + $pl['text'] = $this->parse_bb_code($pl['text']); + $pl['text'] = str_replace("\n", "
    ", $pl['text']); + if ($pl['clear'] == 0) { + $rtrn .= '
    ' . $pl['text'] . '
    '; + } else { + if ($this->user['admin'] > 0) { + $rtrn .= '
    ' . $pl['text'] . '
    '; + } + $rtrn .= '
    Комментарий удален'; + if ($this->user['del_admin'] == 0) { + $rtrn .= ', ' . $pl['del_login'] . ''; + } + $rtrn .= '
    '; + } + + //Записи модераторов и ангелов + $sp1 = mysql_query('SELECT * FROM `forum_msg_mod` WHERE `msg_id` = "' . $pl['id'] . '"'); + while ($pl1 = mysql_fetch_array($sp1)) { + $rtrn .= '
    '; + if ($pl1['from_admin'] == 1) { + $pl1['login'] = '<Администрация>'; + $pl1['city'] = ''; + $pl1['cityreg'] = ''; + $pl1['clan'] = ''; + $pl1['level'] = '??'; + $pl1['uid'] = 0; + } + $rtrn .= $this->genuser($pl1['uid'], $pl1['login'], $pl1['level'], $pl1['align'], $pl1['clan'], $pl1['invis'], $pl1['city'], $pl1['cityreg']); + $rtrn .= ' (' . date('d.m.y H:i', $pl1['time']) . '): '; + $pl1['text'] = str_replace("\n", "
    ", $pl1['text']); + $rtrn .= $this->link_it($pl1['text']) . '
    '; + } + + $rtrn .= '
    '; + } + echo $rtrn; + + } + } + + public function link_it($text) + { + $text = preg_replace("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", "$1$2$3", $text); + $text = preg_replace("/(^|[\n ])([\w]*?)((www|ftp)\.[^ \,\"\t\n\r<]*)/is", "$1$2$3", $text); + $text = preg_replace("/(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+)+)/i", "$1$2@$3", $text); + return ($text); + } + + + public function genuser($id, $login, $level, $align, $clan, $invis, $city, $cityreg) + { + global $c, $code; + $ufr = ''; + if ($align > 0) { + $u .= ''; + } + if ($clan > 0) { + $clan = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "' . ((int)$clan) . '" LIMIT 1')); + if (isset($clan['id'])) { + $u .= ''; + } + } + + if ($login == '<Администрация>') { + $login = 'Администрация'; + } + + $u .= '' . $login . ' [' . $level . ']'; + + if ($city != '') { + $ufr = '   ' . $u; + } + return $u; + } + + private function isAlign1() + { + return $this->user['align'] > 1 && $this->user['align'] < 2; + } + private function isAlign3() + { + return $this->user['align'] > 3 && $this->user['align'] < 4; + } + + public function pravasee() + { + //можно добавлять и просматривать + return ($this->see['fid'] != 65 || $this->user['admin'] != 0 || $this->isAlign1()) && ($this->see['fid'] != 75 || $this->user['admin'] != 0 || $this->isAlign3()) && (!isset($this->see['id']) || $this->see['nocom'] != 3 || $this->user['admin'] != 0 || $this->isAlign3()) && (!isset($this->see['id']) || $this->see['nocom'] != 2 || $this->user['admin'] != 0 || $this->isAlign1()) && (!isset($this->see['id']) || $this->see['nocom'] != 1 || $this->user['admin'] != 0) && $this->user['level'] >= 1 && $this->lst['time'] <= time() - 60; + } + + public function admintopmsg($read, $id, $text, $color, $adm) + { + + $msg = mysql_fetch_array(mysql_query('SELECT `id` FROM `forum_msg` WHERE `id` = "' . mysql_real_escape_string($id) . '" LIMIT 1')); + if (!isset($msg['id'])) { + $this->error = 'Сообщение не найдено'; + } elseif (trim($text, ' ') == '' || iconv_strlen(trim($text, ' ')) < 2) { + $this->error = 'Минимальная длина сообщения должна быть не менее 2-х символов'; + } elseif ($this->user['molch2'] > time()) { + $this->error = 'Вы не можете писать сообщения и создавать топики на форуме, на вас наложено заклятие молчания'; + } elseif (isset($this->see['id']) && $this->see['nocom'] == 3 && $this->user['admin'] == 0 && ($this->user['align'] <= 3 || $this->user['align'] >= 4)) { + $this->error = 'В этом топике запрещено оставлять ответы'; + } elseif (isset($this->see['id']) && $this->see['nocom'] == 2 && $this->user['admin'] == 0 && ($this->user['align'] <= 1 || $this->user['align'] >= 2)) { + $this->error = 'В этом топике запрещено оставлять ответы'; + } elseif (isset($this->see['id']) && $this->see['nocom'] == 1 && $this->user['admin'] == 0) { + $this->error = 'В этом топике запрещено оставлять ответы'; + } elseif ($this->user['level'] < 8) { + $this->error = 'Вы не можете писать сообщения и создавать топики на форуме, это возможно с 8-го уровня'; + } else { + mysql_query('INSERT INTO `forum_msg_mod` (`uid`,`login`,`align`,`level`,`admin`,`clan`,`time`,`text`,`msg_id`,`delete`,`color`,`city`,`cityreg`,`from_admin`) VALUES + ("' . $this->user['id'] . '","' . $this->user['login'] . '","' . $this->user['align'] . '","' . $this->user['level'] . '","' . $this->user['admin'] . '","' . $this->user['clan'] . '", + "' . time() . '","' . mysql_real_escape_string($text) . '","' . mysql_real_escape_string($msg['id']) . '","0","red","' . $this->user['city'] . '","' . $this->user['cityreg'] . '", + "' . mysql_real_escape_string(round((int)$adm)) . '") '); + if (!isset($this->see['id'])) { + header('location: ?r=' . round((int)$_GET['r']) . '&page=' . round((int)$_GET['page'])); + } else { + header('location: ?read=' . $this->see['id'] . '&page=' . round((int)$_GET['page'])); + } + } + + } + + public function parse_bb_code($text) + { + $text = preg_replace('/\[(\/?)(b|i|u|s)\s*\]/', "<$1$2>", $text); + + $text = preg_replace('/\[code\]/', '
    ', $text);
    +        $text = preg_replace('/\[\/code\]/', '
    ', $text); + + $text = preg_replace('/\[(\/?)quote\]/', "<$1blockquote>", $text); + $text = preg_replace('/\[(\/?)quote(\s*=\s*([\'"]?)([^\'"]+)\3\s*)?\]/', "<$1blockquote>Цитата $4:
    ", $text); + + //$text = preg_replace('/\[url\](?:https:\/\/)?([a-z0-9-.]+\.\w{2,4})\[\/url\]/', "$1", $text); + $text = preg_replace('/\[url=(.+?)\](.+?)\[\/url\]/', "$2", $text); + $text = preg_replace('/\[url\s?=\s?([\'"]?)(?:https:\/\/)?([a-z0-9-.]+\.\w{2,4})\1\](.*?)\[\/url\]/', "$3", $text); + + + $text = preg_replace('/\[img\s*\]([^\]\[]+)\[\/img\]/', "", $text); + $text = preg_replace('/\[img\s*=\s*([\'"]?)([^\'"\]]+)\1\]/', "", $text); + + $text = $this->close_dangling_tags($text); + + return $text; + } + + // $s - строка, в которой необходимо закрыть теги + // $tags - список тегов для закрытия через символ | (b|u|i) + public function close_dangling_tags($html) + { + #put all opened tags into an array + preg_match_all("#<([a-z]+)( .*)?(?!/)>#iU", $html, $result); + $openedtags = $result[1]; + + #put all closed tags into an array + preg_match_all("##iU", $html, $result); + $closedtags = $result[1]; + $len_opened = count($openedtags); + # all tags are closed + if (count($closedtags) == $len_opened) { + return $html; + } + + $openedtags = array_reverse($openedtags); + # close tags + for ($i = 0; $i < $len_opened; $i++) { + if (!in_array($openedtags[$i], $closedtags)) { + if ($openedtags[$i] != 'br') { + $html .= ''; + } + } else { + unset($closedtags[array_search($openedtags[$i], $closedtags)]); + } + } + return $html; + } + + public function addnewtop($title, $text, $ico, $time, $login, $uid, $fid, $topic) + { + if (trim($text, ' ') == '' || iconv_strlen(trim($text, ' ')) < 5) { + $this->error = 'Минимальная длина сообщения должна быть не менее 5-ти символов'; + } elseif ($this->user['molch2'] > time()) { + $this->error = 'Вы не можете писать сообщения и создавать топики на форуме, на вас наложено заклятие молчания'; + } elseif ((trim($title, ' ') == '' || iconv_strlen(trim($title, ' ')) < 5) && $topic == -1) { + $this->error = 'Минимальная длина заголовка должна быть не менее 5-ти символов'; + } elseif (isset($this->see['id']) && $this->see['nocom'] == 3 && $this->user['admin'] == 0 && ($this->user['align'] <= 3 || $this->user['align'] >= 4)) { + $this->error = 'В этом топике запрещено оставлять ответы'; + } elseif (isset($this->see['id']) && $this->see['nocom'] == 2 && $this->user['admin'] == 0 && ($this->user['align'] <= 1 || $this->user['align'] >= 2)) { + $this->error = 'В этом топике запрещено оставлять ответы'; + } elseif (isset($this->see['id']) && $this->see['nocom'] == 1 && $this->user['admin'] == 0) { + $this->error = 'В этом топике запрещено оставлять ответы'; + } elseif ($this->user['level'] < 2) { + $this->error = 'Общение на форуме доступно с 2-го уровня'; + } elseif ($this->gd[$fid] > 0 && $this->lst['time'] < time() - 60) { + $ico = (int)$ico; + if ($ico < 1 || $ico > 14) { + $ico = 13; + } + $tl = []; + if (isset($_POST['adminname']) && $this->user['admin'] > 0) { + $tl['login'] = '<Администрация>'; + $tl['level'] = '??'; + $tl['align'] = '0'; + $tl['clan'] = '0'; + $tl['cityreg'] = 'newvillage'; + $tl['city'] = 'questcity'; + $tl['id'] = '0'; + } else { + $tl['login'] = $this->user['login']; + $tl['level'] = $this->user['level']; + $tl['align'] = $this->user['align']; + $tl['clan'] = $this->user['clan']; + $tl['cityreg'] = $this->user['cityreg']; + $tl['city'] = $this->user['city']; + $tl['id'] = $uid; + } + $lst = mysql_fetch_array(mysql_query('SELECT * FROM `forum_msg` WHERE `topic` = "' . mysql_real_escape_string($topic) . '" OR (`topic` = "-1" AND `id` = "' . mysql_real_escape_string($topic) . '") ORDER BY `time` DESC LIMIT 1')); + $ins = mysql_query('INSERT INTO `forum_msg` (`cityreg`,`city`,`align`,`clan`,`level`,`login`,`fid`,`title`,`topic`,`ico`,`text`,`time`,`ip`,`uid`) VALUES ("' . mysql_real_escape_string($tl['cityreg']) . '","' . mysql_real_escape_string($tl['city']) . '","' . mysql_real_escape_string($tl['align']) . '","' . mysql_real_escape_string($tl['clan']) . '","' . mysql_real_escape_string($tl['level']) . '","' . mysql_real_escape_string($tl['login']) . '","' . mysql_real_escape_string($fid) . '","' . mysql_real_escape_string(htmlspecialchars($title, null, 'cp1251')) . '","' . mysql_real_escape_string($topic) . '","' . mysql_real_escape_string($ico) . '","' . mysql_real_escape_string(htmlspecialchars($text, null, 'cp1251')) . '","' . mysql_real_escape_string($time) . '","' . $_SERVER['HTTP_X_REAL_IP'] . '","' . $tl['id'] . '")'); + if (!$ins) { + $this->error = 'Ошибка создания топика'; + return false; + } else { + if ($topic != -1) { + //Если автор предыдущего сообщения не текущий юзер - отправляем в чат сообщение о новом ответе + if ($lst['uid'] + 1 != $this->user['id']) { + $fnt = '' . date('d.m.Y H:i') . ' На форуме опубликован новый ответ в обсуждении, в котором вы принимали участие. Читать далее'; + $ins = ''; + $ll = []; + $sp = mysql_query('SELECT `u`.`city`,`u`.`id`,`u`.`login`,`f`.`uid`,`f`.`login` FROM `forum_msg` AS `f` LEFT JOIN `users` AS `u` ON `f`.`uid` = `u`.`id` WHERE `f`.`delete` = "0" AND (`f`.`topic` = "' . mysql_real_escape_string($topic) . '" OR (`f`.`topic` = "-1" AND `f`.`id` = "' . mysql_real_escape_string($topic) . '")) LIMIT 1'); + while ($pl = mysql_fetch_array($sp)) { + if (!isset($ll[$pl['uid']]) && $pl['uid'] != $this->user['id']) { + $ins .= '("' . $pl['city'] . '","1","' . $pl['login'] . '","6","-1","' . $fnt . '"),'; + $ll[$pl['uid']] = true; + } + } + unset($ll); + $ins = trim($ins, ','); + if ($ins != '') { + mysql_query('INSERT INTO `chat` (`city`,`new`,`to`,`type`,`time`,`text`) VALUES ' . $ins . ''); + } + } + } + $fid = mysql_insert_id(); + $this->lst['time'] = time(); + if (isset($this->see['id'])) { + header('location: ?read=' . $this->see['id'] . '&page=' . round((int)$_GET['page'])); + } else { + header('location: ?r=' . round((int)$_GET['r']) . '&page=' . round((int)$_GET['page'])); + } + return $fid; + } + } elseif ($this->lst['time'] > time() - 60) { + $this->error = 'Вы не можете оставлять ответы и создавать топики так быстро'; + } else { + $this->error = 'Вы не можете оставлять ответы и создавать топики в этой конференции'; + } + } + + public function forumData() + { + $fd_limit = 20; + $start = isset($_GET['page']) ? $_GET['page'] * $fd_limit - $fd_limit : 0; + global $code; + $filter = new Filter(); + //отображаем топики данной конференции + $re = ''; + if (isset($_GET['search'])) { + $sp = mysql_query('SELECT * FROM `forum_msg` WHERE ( `text` LIKE "%' . mysql_real_escape_string($_GET['search']) . '%" OR `title` LIKE "%' . mysql_real_escape_string($_GET['search']) . '%" OR `login` LIKE "%' . mysql_real_escape_string($_GET['search']) . '%" ) AND `topic` < "0" AND `delete` = "0" ORDER BY `id` DESC LIMIT ' . $start . ',' . $fd_limit); + } else { + $sp = mysql_query('SELECT * FROM `forum_msg` WHERE `topic` < "0" AND `fid` = "' . $this->r . '" AND `delete` = "0" ORDER BY `fixed` DESC,`id` DESC LIMIT ' . $start . ',' . $fd_limit); + } + while ($pl = mysql_fetch_array($sp)) { + $lstDT = $pl['time']; + $row = mysql_num_rows(mysql_query('SELECT `id` FROM `forum_msg` WHERE `topic` = "' . $pl['id'] . '" AND `delete` = "0"')); + $plist = '' . $this->paginator(2, $pl['id']) . ''; + if ($plist != '') { + $plist = ' ' . $plist . ''; + } + + $re .= ' 0) { + $fxd = ' '; + $re .= ' class="fixed_topik"'; + } + $re .= ' style="margin-top:10px;">'; + $re .= '
    ' . $fxd . ' ' . $pl['title'] . ' ' . $plist . '   ' . $this->genuser($pl['uid'], $pl['login'], $pl['level'], $pl['align'], $pl['clan'], $pl['invis'], $pl['city'], $pl['cityreg']) . '
    '; + $re .= '
    ' . date('d.m.Y H:i', $pl['time']) . ' » '; + if ($pl['fid'] == 24) { + $re .= $filter->str_count(str_replace('[?]', 'Вопрос: ', str_replace('[/?]', '', str_replace('[:]', ', ', $pl['text']))), 250); + } else { + $re .= $filter->str_count(str_replace('[?]', 'Вопрос: ', str_replace('[/?]', '', str_replace('[:]', ', ', $pl['text']))), 250); + } + $re .= '
    '; + $re .= '
    Ответов: ' . $row . ' ... '; + + $pku = mysql_query('SELECT `login`,`invis`,`time` FROM `forum_msg` WHERE `topic` = "' . $pl['id'] . '" AND `delete` = 0 ORDER BY `id` DESC LIMIT 10'); + $pkusr = ''; + while ($plku = mysql_fetch_array($pku)) { + $pkusr = $plku['login'] . ', ' . $pkusr; + $lstDT = $plku['time']; + } + $pkusr = rtrim($pkusr, ', '); + $re .= $pkusr; + unset($pkusr); + + $re .= '     (' . date('d.m.Y H:i', $lstDT) . ')
    '; + $re .= '
    '; + $re .= "\n"; + } + echo $re; + } + + public function history($id, $uid, $act, $text) + { + if ($type == 1) { + + } + } + + public function actionSee($id) + { + if ($id == 1) { + //удалить топик \ коммент + $up = mysql_query('UPDATE `forum_msg` SET `delete` = "' . time() . '",`del_login`="' . $this->user['login'] . '" WHERE `id` = "' . $this->see['id'] . '" LIMIT 1'); + $this->see['delete'] = time(); + } elseif ($id == 2) { + //запретить комментировать + mysql_query('UPDATE `forum_msg` SET `nocom` = "1" WHERE `id` = "' . $this->see['id'] . '" LIMIT 1'); + $this->see['nocom'] = 1; + } elseif ($id == 3) { + //разрешить комментировать только Ангелам + mysql_query('UPDATE `forum_msg` SET `nocom` = "2" WHERE `id` = "' . $this->see['id'] . '" LIMIT 1'); + $this->see['nocom'] = 2; + } elseif ($id == 4) { + //разрешить комментировать только паладинам + mysql_query('UPDATE `forum_msg` SET `nocom` = "3" WHERE `id` = "' . $this->see['id'] . '" LIMIT 1'); + $this->see['nocom'] = 3; + } elseif ($id == 5) { + //разрешить комментировать только тарманам + mysql_query('UPDATE `forum_msg` SET `nocom` = "4" WHERE `id` = "' . $this->see['id'] . '" LIMIT 1'); + $this->see['nocom'] = 4; + } elseif ($id == 6) { + //разрешить комментировать всем + mysql_query('UPDATE `forum_msg` SET `nocom` = "0" WHERE `id` = "' . $this->see['id'] . '" LIMIT 1'); + $this->see['nocom'] = 0; + } elseif ($id == 9) { + //разрешить комментировать всем + $rzn = mysql_fetch_array(mysql_query('SELECT * FROM `forum_menu` WHERE `id` = "' . mysql_real_escape_string($_GET['trm']) . '" LIMIT 1')); + if (isset($rzn['id'])) { + mysql_query('UPDATE `forum_msg` SET `fid` = "' . mysql_real_escape_string($rzn['id']) . '" WHERE `id` = "' . $this->see['id'] . '" LIMIT 1'); + } + } elseif ($id == 7) { + //фиксация топика или сообщения + if ($this->see['fixed'] == 0) { + $this->see['fixed'] = time(); + } else { + $this->see['fixed'] = 0; + } + mysql_query('UPDATE `forum_msg` SET `fixed` = "' . $this->see['fixed'] . '" WHERE `id` = "' . $this->see['id'] . '" LIMIT 1'); + } elseif ($id == 8) { + //удаление сообщения + $tpdms = mysql_fetch_array(mysql_query('SELECT `id`,`clear`,`delete` FROM `forum_msg` WHERE `id` = "' . mysql_real_escape_string(round((int)$_GET['delete_msg'])) . '" LIMIT 1')); + if (isset($tpdms['id'])) { + // if(isset($this->see['id'])) { + if ($tpdms['clear'] == 0) { + $tpdms['clear'] = time(); + } else { + $tpdms['delete'] = $this->user['id']; + } + mysql_query('UPDATE `forum_msg` SET `clear` = "' . $tpdms['clear'] . '",`delete` = "' . $tpdms['delete'] . '",`del_login` = "' . $this->user['login'] . '",`del_align` = "' . $this->user['align'] . '",`del_clan` = "' . $this->user['clan'] . '",`del_admin` = "' . $this->user['admin'] . '" WHERE `id` = "' . $tpdms['id'] . '" LIMIT 1'); + // } + } + } + if (!isset($this->see['id'])) { + header('location: ?r=' . round((int)$_GET['r']) . '&page=' . round((int)$_GET['page'])); + } else { + header('location: ?read=' . $this->see['id'] . '&page=' . round((int)$_GET['page'])); + } + } + + public function genRz($pl) + { + global $code; + $rt = ''; + if (isset($pl['id'])) { + //0 - доступ закрыт, нелья даже читать, 1 - только чтение, 2 - разрешено добавлять ответы, 3 - разрешено создавать топики, 4 - разрешено создавать топики и добавлять ответы + $ico = 4; + if ($pl['level'] > $this->user['level']) { + $ico = 1; + } + //проверяем уровень доступа + $this->gd[$pl['id']] = $ico; + $ico = ''; + $rt = '' . $ico . ' ' . $pl['name'] . ''; + } else { + $rt = 'Раздел не найден'; + } + return $rt; + } + + public function genMenu() + { + $m = ''; + + + $sp = mysql_query('SELECT * FROM `forum_menu` WHERE `parent` = "0" ORDER BY `pos` DESC'); + while ($pl = mysql_fetch_array($sp)) { + if ($pl['id'] == 65 && $this->user['admin'] == 0 && ($this->user['align'] <= 1 || $this->user['align'] >= 2)) { + + } elseif ($pl['id'] == 75 && $this->user['admin'] == 0 && ($this->user['align'] <= 3 || $this->user['align'] >= 4)) { + + } elseif ($pl['only_admin'] == 0 || $this->user['admin'] > 0) { + $m .= $this->genRz($pl) . '
    '; + if ($this->r == $pl['id'] || $this->fm['parent'] == $pl['id']) { + $sp2 = mysql_query('SELECT * FROM `forum_menu` WHERE `parent` = "' . $pl['id'] . '" AND `parent2`="0"'); + while ($pl2 = mysql_fetch_array($sp2)) { + $m .= '    ' . $this->genRz($pl2) . '
    '; + if ($this->r == $pl2['id'] || $this->fm['parent2'] == $pl2['id']) { + $sp3 = mysql_query('SELECT * FROM `forum_menu` WHERE `parent2` = "' . $pl2['id'] . '"'); + while ($pl3 = mysql_fetch_array($sp3)) { + $m .= '        ' . $this->genRz($pl3) . '
    '; + } + } + } + } + } + } + + $this->menu = $m; + } } $f = new forum; diff --git a/forum_script/index.php b/forum_script/index.php index 5f0b08b9..c10fe8a1 100644 --- a/forum_script/index.php +++ b/forum_script/index.php @@ -1,888 +1,1200 @@ -startForum(); -if(($f->user['align']>1 && $f->user['align']<2) || ($f->user['align']>3 && $f->user['align']<4) || $f->user['admin']>0) -{ - if(isset($_GET['mod_use'])) - { - if(!isset($_COOKIE['mod'])) - { - setcookie('mod',true,time()+60*60*24*30); - $_COOKIE['mod'] = true; - }else{ - setcookie('mod',true,time()-60*60*24*30); - unset($_COOKIE['mod']); - } - }elseif(isset($_GET['mod_use2']) && $f->user['admin']>0) - { - if(!isset($_COOKIE['mod2'])) - { - setcookie('mod2',true,time()+60*60*24*30); - $_COOKIE['mod2'] = true; - }else{ - setcookie('mod2',true,time()-60*60*24*30); - unset($_COOKIE['mod2']); - } - } - - $mod = 'on'; - $mod2 = 'off'; - - if(isset($_COOKIE['mod'])) - { - $mod = 'off'; - $f->mod = 1; - } - if(isset($_COOKIE['mod2']) && $f->user['admin']>0) - { - $mod2 = 'on'; - $f->user['admin'] = 0; - } +if (($f->user['align'] > 1 && $f->user['align'] < 2) || ($f->user['align'] > 3 && $f->user['align'] < 4) || $f->user['admin'] > 0) { + if (isset($_GET['mod_use'])) { + if (!isset($_COOKIE['mod'])) { + setcookie('mod', true, time() + 60 * 60 * 24 * 30); + $_COOKIE['mod'] = true; + } else { + setcookie('mod', true, time() - 60 * 60 * 24 * 30); + unset($_COOKIE['mod']); + } + } elseif (isset($_GET['mod_use2']) && $f->user['admin'] > 0) { + if (!isset($_COOKIE['mod2'])) { + setcookie('mod2', true, time() + 60 * 60 * 24 * 30); + $_COOKIE['mod2'] = true; + } else { + setcookie('mod2', true, time() - 60 * 60 * 24 * 30); + unset($_COOKIE['mod2']); + } + } + + $mod = 'on'; + $mod2 = 'off'; + + if (isset($_COOKIE['mod'])) { + $mod = 'off'; + $f->mod = 1; + } + if (isset($_COOKIE['mod2']) && $f->user['admin'] > 0) { + $mod2 = 'on'; + $f->user['admin'] = 0; + } } -if(isset($f->user['id'])) -{ - if(isset($_POST['add_otv_adm']) && (($f->user['align']>1 && $f->user['align']<2) || ($f->user['align']>3 && $f->user['align']<4) || $f->user['admin']>0)) { - - $f->admintopmsg(round((int)$_GET['read']),round((int)$_POST['add_otv_adm']),$_POST['text2_adm'],'Red',round((int)$_POST['adminname_adm'])); - - }elseif(isset($_POST['add_top'])) - { - //if($f->gd[$f->fm['id']]==3 || $f->gd[$f->fm['id']]==4 || $f->user['admin']>0) - //{ - $add = $f->addnewtop($_POST['title'],$_POST['text'],$_POST['icon'],time(),$f->user['login'],$f->user['id'],$_POST['add_top'],-1); - if($add>0) - { - $fnt = 'На форуме, в разделе "Новости" опубликована новая статья "'.$_POST['title'].'". Читать далее'; - mysql_query('INSERT INTO `chat` (`type`,`time`,`text`) VALUES ("45","'.time().'","'.$fnt.'")'); - } - //} - }elseif(isset($_POST['add_otv'])) - { - $addTo = mysql_fetch_array(mysql_query('SELECT `id`,`time`,`delete`,`fid` FROM `forum_msg` WHERE `id` = "'.mysql_real_escape_string($_POST['add_otv']).'" LIMIT 1')); - if(isset($addTo['id'])) - { - //if($f->gd[$addTo['fid']]==2 || $f->gd[$addTo['fid']]==4 || $f->user['admin']>0) - //{ - $add = $f->addnewtop('',$_POST['text2'],0,time(),$f->user['login'],$f->user['id'],$addTo['fid'],$addTo['id']); - //} - } - } +if (isset($f->user['id'])) { + if (isset($_POST['add_otv_adm']) && (($f->user['align'] > 1 && $f->user['align'] < 2) || ($f->user['align'] > 3 && $f->user['align'] < 4) || $f->user['admin'] > 0)) { + + $f->admintopmsg( + round((int)$_GET['read']), round((int)$_POST['add_otv_adm']), $_POST['text2_adm'], 'Red', + round((int)$_POST['adminname_adm']) + ); + + } elseif (isset($_POST['add_top'])) { + //if($f->gd[$f->fm['id']]==3 || $f->gd[$f->fm['id']]==4 || $f->user['admin']>0) + //{ + $add = $f->addnewtop( + $_POST['title'], $_POST['text'], $_POST['icon'], time(), $f->user['login'], $f->user['id'], + $_POST['add_top'], -1 + ); + if ($add > 0) { + $fnt = 'На форуме, в разделе "Новости" опубликована новая статья "' . $_POST['title'] . '". Читать далее'; + mysql_query('INSERT INTO `chat` (`type`,`time`,`text`) VALUES ("45","' . time() . '","' . $fnt . '")'); + } + //} + } elseif (isset($_POST['add_otv'])) { + $addTo = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`time`,`delete`,`fid` FROM `forum_msg` WHERE `id` = "' . mysql_real_escape_string( + $_POST['add_otv'] + ) . '" LIMIT 1' + ) + ); + if (isset($addTo['id'])) { + //if($f->gd[$addTo['fid']]==2 || $f->gd[$addTo['fid']]==4 || $f->user['admin']>0) + //{ + $add = $f->addnewtop( + '', $_POST['text2'], 0, time(), $f->user['login'], $f->user['id'], $addTo['fid'], $addTo['id'] + ); + //} + } + } } -if(isset($_GET['read']) && $f->mod==1) -{ - - if(isset($_GET['trm']) && (($f->user['align']>1 && $f->user['align']<2) || ($f->user['align']>3 && $f->user['align']<4) || $f->user['admin']>0)) { - $f->actionSee(9); - }elseif(isset($_GET['delete_msg']) && (($f->user['align']>=1.5 && $f->user['align']<2) || ($f->user['align']>=3.05 && $f->user['align']<4) || $f->user['admin']>0)) { - $f->actionSee(8); - }elseif(isset($_GET['delete']) && isset($f->see['id']) && (($f->user['align']>=1.5 && $f->user['align']<2) || ($f->user['align']>=3.05 && $f->user['align']<4) || $f->user['admin']>0)) - { - $f->actionSee(1); - }elseif(isset($_GET['nocomment']) && isset($f->see['id']) && (($f->user['align']>=1.5 && $f->user['align']<2) || ($f->user['align']>=3.05 && $f->user['align']<4) || $f->user['admin']>0)) - { - $f->actionSee(2); - }elseif(isset($_GET['fixed']) && isset($f->see['id']) && (($f->user['align']>=1.5 && $f->user['align']<2) || ($f->user['align']>=3.05 && $f->user['align']<4) || $f->user['admin']>0)) - { - $f->actionSee(7); - }elseif(isset($_GET['onlyadmin']) && isset($f->see['id']) && $f->user['admin']>0) - { - $f->actionSee(3); - }elseif(isset($_GET['onlymoder']) && isset($f->see['id']) && (($f->user['align']>=3.05 && $f->user['align']<4) || ($f->user['admin']>0 && $_GET['onlymoder']==2))) - { - $f->actionSee(5); - }elseif(isset($_GET['onlymoder']) && isset($f->see['id']) && (($f->user['align']>=1.5 && $f->user['align']<2) || ($f->user['admin']>0 && $_GET['onlymoder']==1))) - { - $f->actionSee(4); - }elseif(isset($_GET['onlyall']) && isset($f->see['id']) && (($f->user['align']>=1.5 && $f->user['align']<2) || ($f->user['align']>=3.05 && $f->user['align']<4) || $f->user['admin']>0)) - { - $f->actionSee(6); - } +if (isset($_GET['read']) && $f->mod == 1) { + + if (isset($_GET['trm']) && (($f->user['align'] > 1 && $f->user['align'] < 2) || ($f->user['align'] > 3 && $f->user['align'] < 4) || $f->user['admin'] > 0)) { + $f->actionSee(9); + } elseif (isset($_GET['delete_msg']) && (($f->user['align'] >= 1.5 && $f->user['align'] < 2) || ($f->user['align'] >= 3.05 && $f->user['align'] < 4) || $f->user['admin'] > 0)) { + $f->actionSee(8); + } elseif (isset($_GET['delete']) && isset($f->see['id']) && (($f->user['align'] >= 1.5 && $f->user['align'] < 2) || ($f->user['align'] >= 3.05 && $f->user['align'] < 4) || $f->user['admin'] > 0)) { + $f->actionSee(1); + } elseif (isset($_GET['nocomment']) && isset($f->see['id']) && (($f->user['align'] >= 1.5 && $f->user['align'] < 2) || ($f->user['align'] >= 3.05 && $f->user['align'] < 4) || $f->user['admin'] > 0)) { + $f->actionSee(2); + } elseif (isset($_GET['fixed']) && isset($f->see['id']) && (($f->user['align'] >= 1.5 && $f->user['align'] < 2) || ($f->user['align'] >= 3.05 && $f->user['align'] < 4) || $f->user['admin'] > 0)) { + $f->actionSee(7); + } elseif (isset($_GET['onlyadmin']) && isset($f->see['id']) && $f->user['admin'] > 0) { + $f->actionSee(3); + } elseif (isset($_GET['onlymoder']) && isset($f->see['id']) && (($f->user['align'] >= 3.05 && $f->user['align'] < 4) || ($f->user['admin'] > 0 && $_GET['onlymoder'] == 2))) { + $f->actionSee(5); + } elseif (isset($_GET['onlymoder']) && isset($f->see['id']) && (($f->user['align'] >= 1.5 && $f->user['align'] < 2) || ($f->user['admin'] > 0 && $_GET['onlymoder'] == 1))) { + $f->actionSee(4); + } elseif (isset($_GET['onlyall']) && isset($f->see['id']) && (($f->user['align'] >= 1.5 && $f->user['align'] < 2) || ($f->user['align'] >= 3.05 && $f->user['align'] < 4) || $f->user['admin'] > 0)) { + $f->actionSee(6); + } } -$dost = array(0=>'всем пользователям',1=>'только чтение',2=>'только для Ангелов',3=>'только для Паладинов',4=>'только для Тарманов'); +$dost = [0 => 'всем пользователям', 1 => 'только чтение', 2 => 'только для Ангелов', 3 => 'только для Паладинов', 4 => 'только для Тарманов']; ?> - - -Форум браузерной онлайн игры Новый «Бойцовский клуб» - - - - - - - - + + + Форум браузерной онлайн игры Новый «Бойцовский клуб» + + + + + + + + - - + + //--> +
    -
    -*/ ?> - +
    - - - - - + + -
       - - error) && $f->error!='' && $f->r!=-2) - { - echo ''.$f->error.''; - } - if($f->user['admin']>0 && isset($_GET['aem'])) - { - ?> -
    -

    Вернуться назад

    -
    -
    Данные для редактирования не найдены


    '; - }else{ - $fm = mysql_fetch_array(mysql_query('SELECT * FROM `forum_menu` WHERE `id` = "'.$ed['fid'].'" LIMIT 1')); - echo 'ID: '.$ed['id'].'
    Раздел: '.$fm['name'].'
    '; - } - ?> -
    - - +
    - - - -
    - - - - - - - - - - - - - - - -
    user==false){ echo 'Вы не авторизованы
    Войти на персонажа'; }else{ echo 'Вы вошли как:
    '.$u->microLogin($u->info['id'],1).'

    '; } ?> - user['align']>1 && $f->user['align']<2) || ($f->user['align']>3 && $f->user['align']<4) || $f->user['admin']>0){ echo '
    «Модерирование» ['.$mod.']'; } - if($f->user['admin']>0 || $mod2=='on'){ echo '
    «Администрирование» ['.$mod2.']'; } ?> -
    -
    -
    Конференция
    -
    -
    - menu; ?> -
    -


    - - - - - - - - - - - - - - - - -
    - Результаты поиска по запросу: "'.$word.'". Найдено записей '.$limw.' шт.
    '; ?>
    - - - paginator(1); - ?> - - - -
    Страницы:
    Поиск:
    -
    - forumData(); ?> -
    Страницы:
     
    -
    - r>=1){ - //смотрим разделы - ?> - - - - - + r == -2) { + //МЕГА-выводим ошибку + ?> +
    - - - - - - - - - - - - - - - -
    user==false){ echo 'Вы не авторизованы
    Войти на персонажа'; }else{ echo 'Вы вошли как:
    '.$u->microLogin($u->info['id'],1).'

    '; } ?> - user['align']>1 && $f->user['align']<2) || ($f->user['align']>3 && $f->user['align']<4) || $f->user['admin']>0){ echo '
    «Модерирование» ['.$mod.']'; } - if($f->user['admin']>0 || $mod2=='on'){ echo '
    «Администрирование» ['.$mod2.']'; } ?> -
    -
    -
    Конференция
    -
    -
    - menu; ?> -
    -


    - - - - - - - - - - - - - - - - - - - -
    - Конференция "'.$f->fm['name'].'"

    '.$f->fm['opisan']; ?>
    - - - paginator(1); - ?> - - - -
    Страницы:
    Поиск:
    -
    - forumData(); ?> -
    Страницы:
     
    - user['id'])){ ?> -
    - gd[$f->fm['id']]!=2 && $f->gd[$f->fm['id']]!=4 && $f->user['admin']==0) - { - echo '

    Вы не можете создавать топики в этой конференции

    '; - }elseif($f->lst['time'] -
    - - - - - - - - - - - -

    Добавить свой вопрос в форум

    - Тема сообщения -
    - -
    - -
    - -
    - -
    + + + - -
       + + error) && $f->r != -2? '' . $f->error . '' : ''?> + user['admin'] > 0 && isset($_GET['aem'])) { + ?> +
    +

    Вернуться назад

    +
    +
    Данные для редактирования не найдены


    '; + } else { + $fm = mysql_fetch_array( + mysql_query('SELECT * FROM `forum_menu` WHERE `id` = "' . $ed['fid'] . '" LIMIT 1') + ); + echo 'ID: ' . $ed['id'] . '
    Раздел: ' . $fm['name'] . '
    '; + } + ?> +
    + + - - + + -
    user['admin']>0) - { - echo '

    '; - } - ?> - -   - -   - -   - -   - -   - -   - -
    - -   - -   - -   - -   - -   - -   - -
    - - - + + + + + + + + + + + + + + + + +
    +
    user) { + echo 'Вы не авторизованы
    Войти на персонажа'; + } else { + echo 'Вы вошли как:
    ' . $u->microLogin( + $u->info['id'], 1 + ) . '

    '; + } ?> + user['align'] > 1 && $f->user['align'] < 2) || ($f->user['align'] > 3 && $f->user['align'] < 4) || $f->user['admin'] > 0) { + echo '
    «Модерирование» [' . $mod . ']'; + } + if ($f->user['admin'] > 0 || $mod2 == 'on') { + echo '
    «Администрирование» [' . $mod2 . ']'; + } ?> +
    +
    +
    +
    Конференция
    +
    +
    +
    + menu; ?> +
    +
    + +


    +
    +
    + + + + + + + + + + + + + + + + +
    +
    + Результаты поиска по запросу: "' . $word . '". Найдено записей ' . $limw . ' шт.
    '; ?>
    +
    +
    + + + paginator(1); + ?> + + + +
    +
    Страницы:
    +
    +
    + Поиск: + +
    +
    +
    +
    + forumData(); ?> +
    +
    +
    Страницы:
    +
     
    +
    +
    - -
    Временное ограничение на создание топиков.
    Осталось подождать '.round($f->lst['time']+61-time()).' сек.

    '; } ?> - - -
    -
    - r==-1){ - //оставляем комментарий - ?> - - - - - - - - - - - - - - -
    - - - - - - - - - - - paginator(2); - ?> - - - -
     
    - see['fid'].'" AND `topic` = "-1" AND `delete` = "0" AND `id` > '.$f->see['id'].' ORDER BY `id` ASC LIMIT 1')); - $url2 = mysql_fetch_array(mysql_query('SELECT `id`,`title` FROM `forum_msg` WHERE `fid` = "'.$f->see['fid'].'" AND `topic` = "-1" AND `delete` = "0" AND `id` < '.$f->see['id'].' ORDER BY `id` DESC LIMIT 1')); - - if(isset($url1['id'])) { - $url1 = '« предыдущая ветвь'; - }else{ - $url1 = '« предыдущая ветвь'; - } - if(isset($url2['id'])) { - $url2 = 'следующая ветвь »'; - }else{ - $url2 = 'следующая ветвь »'; - } - - ?> -
     | форум | 
    -
    -
     
    Страницы:
    -

    fm['name']; ?> > see['title']; ?>

    - user['align']>1.5 || $f->user['align']>3.05 || $f->user['admin']>0) && $f->mod == 1){ ?> -
    - Доступ: see['nocom']]; ?>
    -
    user['admin'] > 0) { - $rtn .= ''; - } - } - echo $rtn; - ?> -
    - + + + + +
    + + + + + + + + + + + + + + + + +
    +
    user == false) { + echo 'Вы не авторизованы
    Войти на персонажа'; + } else { + echo 'Вы вошли как:
    ' . $u->microLogin( + $u->info['id'], 1 + ) . '

    '; + } ?> + user['align'] > 1 && $f->user['align'] < 2) || ($f->user['align'] > 3 && $f->user['align'] < 4) || $f->user['admin'] > 0) { + echo '
    «Модерирование» [' . $mod . ']'; + } + if ($f->user['admin'] > 0 || $mod2 == 'on') { + echo '
    «Администрирование» [' . $mod2 . ']'; + } ?> +
    +
    +
    +
    Конференция
    +
    +
    +
    + menu; ?> +
    +
    + +


    +
    +
    + + + + + + + + + + + + + + + + + + + +
    +
    + Конференция "' . $f->fm['name'] . '"

    ' . $f->fm['opisan']; ?>
    +
    +
    + + + paginator(1); + ?> + + + +
    +
    Страницы:
    +
    +
    +
    Поиск:
    +
    +
    +
    +
    + forumData(); ?> +
    +
    +
    Страницы:
    +
     
    + user['id'])) { ?> +
    + gd[$f->fm['id']] != 2 && $f->gd[$f->fm['id']] != 4 && $f->user['admin'] == 0) { + echo '

    Вы не можете создавать топики в этой конференции

    '; + } elseif ($f->lst['time'] < time() - 60) { ?> +
    + + + + + + + + + + + +

    Добавить свой вопрос в + форум

    + Тема сообщения + +
    + +
    + +
    + +
    + +
    + + + + + +
    user['admin'] > 0) { + echo '

    '; + } + ?> + + +   + + +   + + +   + + +   + + +   + + +   + +
    + + +   + + +   + + +   + + +   + + +   + + +   + + +
    + + +
    +
    +
    +
    Временное ограничение на создание топиков.
    Осталось подождать ' . round( + $f->lst['time'] + 61 - time() + ) . ' сек.

    '; + } ?> +
    + +
    +
    +
    see['nocom']==0) - { - if($f->user['admin']>0) - { - ?> - - user['align']>1.5 && $f->user['align']<2) || $f->user['admin']>0) - { - ?> - - user['align']>3.05 && $f->user['align']<4) || $f->user['admin']>0) - { - ?> - - - - - - - -
    seeTopic(); ?>
    Страницы:
    user['id']) || !isset($f->user['id'])){ ?> -
    - see['nocom']>0) - { - echo '

    Обсуждение закрыто

    '; - }elseif($f->see['goodAdd']!=1 || $f->pravasee()!=1) - { - echo '

    Вы не можете оставлять ответы в этом топике.
    Попробуйте через '.round($f->lst['time']+62-time()).' сек.

    '; - }/*elseif($f->gd[$f->see['fid']]!=3 && $f->gd[$f->see['fid']]!=4 && $f->user['admin']==0) + } elseif ($f->r == -1) { + //оставляем комментарий + ?> + + + + + +
    + + + + + + + + + + + + paginator(2); + ?> + + + + + + + + + + + + + + +
     
    +
    + see['fid'] . '" AND `topic` = "-1" AND `delete` = "0" AND `id` > ' . $f->see['id'] . ' ORDER BY `id` ASC LIMIT 1' + ) + ); + $url2 = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`title` FROM `forum_msg` WHERE `fid` = "' . $f->see['fid'] . '" AND `topic` = "-1" AND `delete` = "0" AND `id` < ' . $f->see['id'] . ' ORDER BY `id` DESC LIMIT 1' + ) + ); + + if (isset($url1['id'])) { + $url1 = '« предыдущая ветвь'; + } else { + $url1 = '« предыдущая ветвь'; + } + if (isset($url2['id'])) { + $url2 = 'следующая ветвь »'; + } else { + $url2 = 'следующая ветвь »'; + } + + ?> +
     | форум | 
    +
    +
    +
     
    Страницы:
    +

    fm['name']; ?> > see['title']; ?>

    + user['align'] > 1.5 || $f->user['align'] > 3.05 || $f->user['admin'] > 0) && $f->mod == 1) { ?> +
    + Доступ: see['nocom']]; ?>
    +
    + +
    + +
    seeTopic(); ?>
    Страницы:
    user['id']) || !isset($f->user['id'])) { ?> +
    + see['nocom'] > 0) { + echo '

    Обсуждение закрыто

    '; + } elseif ($f->see['goodAdd'] != 1 || $f->pravasee() != 1) { + echo '

    Вы не можете оставлять ответы в этом топике.
    Попробуйте через ' . round( + $f->lst['time'] + 62 - time() + ) . ' сек.

    '; + }/*elseif($f->gd[$f->see['fid']]!=3 && $f->gd[$f->see['fid']]!=4 && $f->user['admin']==0) { echo '

    Вы не можете оставлять ответы в этом топике

    '; - }*/elseif($f->lst['time'] -
    - - - - - - - - - - - + }*/ elseif ($f->lst['time'] < time() - 60) { ?> + +

    Добавить свой ответ

    -
    - -
    - -
    -
    - - - - -
    user['admin']>0) - { - echo '

    '; - } - ?>
    - -
    + + + + + + + + + + +

    Добавить свой ответ

    + +
    + +
    + +
    +
    + + + + + +
    user['admin'] > 0) { + echo '

    '; + } + ?>
    + +
    +
    +
    +
    Временное ограничение на добавление ответов.

    '; + } ?> +
    +
    +
     
    - -
    Временное ограничение на добавление ответов.

    '; } ?> -
    -
     
    + + + +
    Ошибка: error; ?>
    Вернуться на форум
    + + +
      
    - r==-2){ - //МЕГА-выводим ошибку - ?> - - - - -
    Ошибка: error; ?>
    Вернуться на форум
    - - - -   -   - - +
    \ No newline at end of file diff --git a/head/buttons.php b/head/buttons.php deleted file mode 100644 index 0083285e..00000000 --- a/head/buttons.php +++ /dev/null @@ -1,1114 +0,0 @@ -Произошла ошибка

    Произошла ошибка:

    '.$e.'

    Назад


    (c) '.$c[1].'

    '); -} - -function GetRealIp() -{ - if (!empty($_SERVER['HTTP_CLIENT_IP'])) - { - $ip=$_SERVER['HTTP_CLIENT_IP']; - } - elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) - { - $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; - } - else - { - $ip=$_SERVER['REMOTE_ADDR']; - } - return $ip; -} -define('IP',GetRealIp()); - -include_once('_incl_data/__config.php'); -include_once('_incl_data/class/__db_connect.php'); -include_once('_incl_data/class/__user.php'); -include_once('_incl_data/class/__filter_class.php'); -include_once('_incl_data/class/__chat_class.php'); - -ini_set( 'max_execution_time', '120' ); - -if(isset($_GET['showcode'])) -{ - include('show_reg_img/security.php'); - die(); -} - -if($u->info['joinIP']==1 && $u->info['ip']!=IP) -{ - er('#Пожалуйста авторизируйтесь с главной страницы'); -}elseif(isset($_GET['exit'])) -{ - setcookie('login','',time()-60*60*24*30,'',$c['host']); - setcookie('pass','',time()-60*60*24*30,'',$c['host']); - setcookie('login','',time()-60*60*24*30); - setcookie('pass','',time()-60*60*24*30); - mysql_query('UPDATE `users` SET `online` = "'.(time()-420).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); //520 - die(''); -}elseif(!isset($u->info['id'])) -{ - - /*setcookie('login','',time()-60*60*24*30,'',$c['host']); - setcookie('pass','',time()-60*60*24*30,'',$c['host']); - setcookie('login','',time()-60*60*24*30); - setcookie('pass','',time()-60*60*24*30);*/ - - er('Возникла проблема с определением id персонажа
    Авторизируйтесь с главной страницы.'); -} - -if($u->info['online'] < time()-60) -{ - $filter->setOnline($u->info['online'],$u->info['id'],0); - mysql_query("UPDATE `users` SET `online`='".time()."',`timeMain`='".time()."' WHERE `id`='".$u->info['id']."' LIMIT 1"); -} - -$u->stats = $u->getStats($u->info['id'],0); - -if($u->info['activ']>0) { - include('activnew.php'); - die(); -} - -?> - - - - -Браузерная игра - Новый Бойцовский Клуб - - - - - - - - - - - - - - - - - - - - - - - - -info['id'].'" LIMIT 1')); -if(isset($fpi['id'])) { - $i = 0; - $fpv = explode('|',$fpi['data']); - $fph = ''; - while( $i <= 10 ) { - $id = $fpv[$i]; - $id = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `id` = "'.mysql_real_escape_string($id).'" AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); - if(isset($id['id'])) { - //есть итем - $idm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.mysql_real_escape_string($id['item_id']).'" LIMIT 1')); - $idd = mysql_fetch_array(mysql_query('SELECT * FROM `items_main_data` WHERE `items_id` = "'.mysql_real_escape_string($idm['id']).'" LIMIT 1')); - //$po = ; - $fph .= 'top.addfastpanel(\''.$idm['id'].'\',\''.$idm['name'].'\',\''.$idm['type'].'\',\''.$id['1price'].'\',\''.$id['2price'].'\',\''.$u->city_name[$id['maidin']].'\',\''.$idm['img'].'\',\''.$id['item_id'].'\',\''.$idm['iznosNOW'].'\',\''.$idm['iznosMAX'].'\',\'1\',\'1\',\'1\',\'1\');'; - }else{ - //пусто - } - $i++; - } - echo ''; -}*/ -// -if( !isset($_COOKIE['d1c']) ) { - include('_incl_data/class/mobile.php'); - $detect = new Mobile_Detect; - $deviceType = ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer'); - $_COOKIE['d1c'] = $deviceType; - setcookie('d1c',$deviceType,(time()+86400)); -}else{ - $deviceType = $_COOKIE['d1c']; -} - -if( $deviceType == 'tablet' || $deviceType == 'phone' ) { - echo ''; -?> - - - - - - - - - - - - -testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "user_yes" LIMIT 1',1); -if(!isset($yes['id'])) -{ - //Пользовательское соглашение - if(isset($_GET['yes'])) - { - //согласен - $u->addAction(time(),'user_yes',''); - header('location: https://'.$c[$u->info['city']].'/bk'); - die(); - } - /*echo '
    -
    -Наверное Вы удивлены что это за текст?
    Пожалуйста уделите одну минуту Вашего драгоценного времени и прочитайте его:


    -  Добрый день, вечер или даже ночь! Вы наверное играли в Бойцовский Клуб? Да, точно играли, по крайней мере в проекты которые -себя называют "Лучший Клон БК" и т.д., а по факту, простите, это хуйня из под коня. Сейчас много проектов -которые создаются любителями, которые пользуются готовыми движками. Скачать и установить такой сайт -может любой школьник, даже безграмотный! Наш проект не такой! Постоянное развитие, улучшение, экшен, -да и к тому-же уникальность нашего движка не сможет оспорить ни один человек. Надеемся что Вам понравится -наш проект и Вы будете играть здесь до последнего дня проекта!
    -  Соглашаясь с этим текстом Вы отказывается от всего этого дерьма в интернете и вступаете в круг людей которые -за качество и отсутствие однообразия! Вас ждет множество удивительных вещей, в то время как другие потакают некачественному продукту. -

    Я полностью согласен с написанным выше текстом


    Если по каким-либо причинам Вы не согласны, то пожалуйста закройте наш сайт и более не открывайте! Спасибо! ;-) -
    ';*/ -//} -?> - -info['bithday'] == '01.01.1800') { -?> - - - -info['active']!='' && $u->info['mail']=='No E-mail') { - if($error!='') { - echo ''; - } -?> - - - - -
    - - - -
    -
    -
    -
    Настройки чата
    -
    -Скорость обновления:
    -
    Сортировка списка онлайн: -По убыванию
    -
    Экономия трафика
    -
    Сообщения с молчанкой
    - - -
    - - -
    - -
    - - - -
    -
    - -
    -
    - -
    - - - - - - - - - -
    - - - - - -
    - - - - - - - -
    ЗнанияПерсонажВыход
    -
    - - - - -
    -
    - - - - - - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
     
    -
    - -
    -
    - - - - - -
    -
    -
    -
    - - - - - - -
    -
    -
    */ ?> - -
    - -
    - - - -
    -
    -
    - -
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    - info['admin'] > 0 ) { ?> - -
    - -
    -
    -
    -
    - - - - - - - - - info['level']>9){ ?> - - - - - - - - - - - - - info['level']>7){ ?> - - info['level']>=0){ ?> - - - info['align']==50 || $u->info['align2']==50 || $u->info['admin'] == 1) {?> - - info['align']>=1.1 && $u->info['align']<2 ){ ?> - - info['align']>=3.01 && $u->info['align']<4){ ?> - - info['vip']>time() || $u->stats['silvers']>0 || $u->stats['bronze']>0 || $u->stats['gold']>0 ){ ?> - - - - info['level']>= 0){ ?> - - info['align']>=1 && $u->info['align']<2){ ?> - - info['align']>=3 && $u->info['align']<4){ ?> - - info['align']==7) { ?> - - info['bukmeker']==1 || $u->info['admin']==1){ ?> - - info['admin'] > 0 || $u->info['align'] == 50){ ?> - - info['level']>-1){ ?> - - info['clan']>0){ ?> - - info['admin']>0){ ?> - - - - - - - - - - - - -
    info['admin'] > 0 ) { ?> onclick="top.frames['main'].location.href='map.php';" class="db" src="https://img.new-combats.com/b___.gif" width="30" height="30" title="Чат">  - - - - - - - - -   - -
    -
    - - - - -info['active']!='' && $u->info['mail']!='No E-mail') -{ - $yes = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "user_active_good" LIMIT 1',1); - $yes2 = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "user_active_send" LIMIT 1',1); - if($u->info['login'] != '-LEL-') - { - mysql_query('UPDATE `stats` SET `active` = "" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - - /* - function send_mime_mail($name_from, // имя отправителя - $email_from, // email отправителя - $name_to, // имя получателя - $email_to, // email получателя - $data_charset, // кодировка переданных данных - $send_charset, // кодировка письма - $subject, // тема письма - $body // текст письма - ) - { - $to = mime_header_encode($name_to, $data_charset, $send_charset) - . ' <' . $email_to . '>'; - $subject = mime_header_encode($subject, $data_charset, $send_charset); - $from = mime_header_encode($name_from, $data_charset, $send_charset) - .' <' . $email_from . '>'; - if($data_charset != $send_charset) { - $body = iconv($data_charset, $send_charset, $body); - } - $headers = "From: $from\r\n"; - $headers .= "Content-type: text/plain; charset=$send_charset\r\n"; - - return mail($to, $subject, $body, $headers); - } - - function mime_header_encode($str, $data_charset, $send_charset) { - if($data_charset != $send_charset) { - $str = iconv($data_charset, $send_charset, $str); - } - return '=?' . $send_charset . '?B?' . base64_encode($str) . '?='; - } - - if(!isset($yes2['id'])) - { - //отправляем письмо - echo ''; - //$u->addAction(time(),'user_active_send',$u->info['mail']); - // получатели - send_mime_mail('www.new-combats.com', - 'support@new-combats.com', - ''.$u->info['login'].'', - $u->info['mail'], - 'CP1251', // кодировка, в которой находятся передаваемые строки - 'KOI8-R', // кодировка, в которой будет отправлено письмо - 'Активация персонажа '.$u->info['login'].'', - "Здравствуйте! Мы очень рады новому персонажу в нашем Мире! \r\n Ваш персонаж: ".$u->info['login']." [0] \r\n Ссылка для активации: https://capitalcity.new-combats.com/bk?active=".$u->info['active'].".\r\n\r\nС уважением, Администрация!"); - $u->addAction(time(),'user_active_send',$u->info['mail']); - - }elseif(!isset($yes['id'])) - { - //Пользовательское соглашение - if(isset($_GET['active']) && $u->info['active'] == $_GET['active']) - { - //согласен - $u->addAction(time(),'user_active_good',$u->info['mail']); - mysql_query('UPDATE `stats` SET `active` = "" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - die(''); - } - } - */ -} -?> - - - - \ No newline at end of file diff --git a/hmonitor.php b/hmonitor.php index 6a608e8e..0553dd05 100644 --- a/hmonitor.php +++ b/hmonitor.php @@ -1,194 +1,198 @@ - - + - - - - - -Монитор поединков + + + + + + Монитор поединков -
    Просматривает персонаж: microLogin($u->info['id'],1)?>
    +
    Просматривает персонаж: microLogin($u->info['id'], 1) ?>

    -
    -

                          Заявки на хаотические поединки

    -
    '; - } - $html .= '
    '; +while ($pl = mysql_fetch_array($sp)) { + $i++; + // + $users = ''; + // + $spu = mysql_query('SELECT `id` FROM `stats` WHERE `zv` = "' . $pl['id'] . '"'); + while ($plu = mysql_fetch_array($spu)) { + $users .= $u->microLogin($plu['id'], 1) . ','; + } + // + if ($users == '') { + $users = 'Поле боя ждет своих героев!'; + } else { + $users = rtrim($users, ','); + } + // + $html .= $i . '. ' . date('H:i', $pl['time']) . ' '; + $html .= ' '; + $html .= ' (' . $users . ') (' . $pl['min_lvl_1'] . '-' . $pl['max_lvl_1'] . ') Тип боя: '; + if ($pl['noinc'] > 0) { + $html .= ''; + } + if ($pl['fastfight'] > 0) { + $html .= ''; + } + if ($pl['arand'] > 0) { + $html .= ''; + } + $html .= 'Бой начнется через ' . $u->timeOut( + $pl['time'] + $pl['time_start'] - time() + ) . ', таймаут ' . $u->timeOut($pl['timeout']) . ''; + if ($pl['priz'] > 0) { + $html .= '(Героическое Сражение)
    '; + } + $html .= '
    '; } -if( $html == '' ) { - $html = '
    (Раздел пуст)
    '; +if ($html == '') { + $html = '
    (Раздел пуст)
    '; } -echo $html; $html = ''; +echo $html; +$html = ''; ?>

    Текущие бои

    -microLogin($plu['id'],1).','; - } - // - if( count($usersa) > 0 ) { - $j = 0; - while( $j < count($userst) ) { - if( $users != '' ) { - $users .= '  против  '; - } - $users .= $usersa[$userst[$j]]; - $users = rtrim($users,','); - $j++; - } - // - $i++; - // - - $html .= $i . '. '.date('d.m.Y H:i',$pl['time_start']).' '; - $html .= ' '; - $html .= ' ('.$users.') Тип боя: '; - if( $pl['noinc'] > 0 ) { - $html .= ''; - } - if( $pl['fastfight'] > 0 ) { - $html .= ''; - } - if( $pl['arand'] > 0 ) { - $html .= ''; - } - $html .= ', таймаут '.$u->timeOut($pl['timeout']).''; - if( $pl['priz'] > 0 ) { - $html .= '(Героическое Сражение)
    '; - } - $html .= ' »» '; - $html .= '
    '; - } - // +while ($pl = mysql_fetch_array($sp)) { + // + $users = ''; + $usersa = []; + $userst = []; + // + $spu = mysql_query( + 'SELECT `a`.`id`,`b`.`team` FROM `users` AS `a` LEFT JOIN `stats` AS `b` ON `a`.`id` = `b`.`id` WHERE `a`.`battle` = "' . $pl['id'] . '"' + ); + while ($plu = mysql_fetch_array($spu)) { + if (!isset($usersa[$plu['team']])) { + $userst[] = $plu['team']; + } + $usersa[$plu['team']] .= $u->microLogin($plu['id'], 1) . ','; + } + // + if (count($usersa) > 0) { + $j = 0; + while ($j < count($userst)) { + if ($users != '') { + $users .= '  против  '; + } + $users .= $usersa[$userst[$j]]; + $users = rtrim($users, ','); + $j++; + } + // + $i++; + // + + $html .= $i . '. ' . date('d.m.Y H:i', $pl['time_start']) . ' '; + $html .= ' '; + $html .= ' (' . $users . ') Тип боя: '; + if ($pl['noinc'] > 0) { + $html .= ''; + } + if ($pl['fastfight'] > 0) { + $html .= ''; + } + if ($pl['arand'] > 0) { + $html .= ''; + } + $html .= ', таймаут ' . $u->timeOut($pl['timeout']) . ''; + if ($pl['priz'] > 0) { + $html .= '(Героическое Сражение)
    '; + } + $html .= ' »» '; + $html .= '
    '; + } + // } -if( $html == '' ) { - $html = '
    (Раздел пуст)
    '; +if ($html == '') { + $html = '
    (Раздел пуст)
    '; } -echo $html; $html = ''; +echo $html; +$html = ''; ?>

    Башня смерти

    -city_name[$pl['city']].'" src="https://img.new-combats.com/i/city_ico/'.$pl['city'].'.gif">'; - // - $html .= ' ['.$pl['level'].']'; - if( $pl['status'] == 0 ) { - //Ожидаем начала нового турнира - $html .= ' Начало турнира в "Башне Смерти" : '.date('d.m.Y H:i',$pl['time_start']).' ( Начнется через '.$u->timeOut($pl['time_start']-time()).') Призовой фонд на текущий момент: '.round(($pl['money']/100*85),2).' кр. Всего подано заявок: '.$pl['users'].''; - }else{ - //Уже идет турнир - $users = ''; - $spu = mysql_query('SELECT `id` FROM `users` WHERE `inTurnir` = "'.$pl['id'].'"'); - while( $plu = mysql_fetch_array($spu) ) { - $users .= $u->microLogin($plu['id'],1). ','; - } - $users = rtrim($users,','); - $html .= ' Турнир Башни Смерти уже идет.'; - $html .= ' Участники: '.$users.', Лог турнира: »»'; - } - // - $html .= '
    '; - // +while ($pl = mysql_fetch_array($sp)) { + $i++; + // + $html .= $i . '. '; + // + $html .= ' [' . $pl['level'] . ']'; + if ($pl['status'] == 0) { + //Ожидаем начала нового турнира + $html .= ' Начало турнира в "Башне Смерти" : ' . date( + 'd.m.Y H:i', $pl['time_start'] + ) . ' ( Начнется через ' . $u->timeOut( + $pl['time_start'] - time() + ) . ') Призовой фонд на текущий момент: ' . round( + ($pl['money'] / 100 * 85), 2 + ) . ' кр. Всего подано заявок: ' . $pl['users'] . ''; + } else { + //Уже идет турнир + $users = ''; + $spu = mysql_query('SELECT `id` FROM `users` WHERE `inTurnir` = "' . $pl['id'] . '"'); + while ($plu = mysql_fetch_array($spu)) { + $users .= $u->microLogin($plu['id'], 1) . ','; + } + $users = rtrim($users, ','); + $html .= ' Турнир Башни Смерти уже идет.'; + $html .= ' Участники: ' . $users . ', Лог турнира: »»'; + } + // + $html .= '
    '; + // } -if( $html == '' ) { - $html = '
    (Раздел пуст)
    '; +if ($html == '') { + $html = '
    (Раздел пуст)
    '; } -echo $html; $html = ''; +echo $html; +$html = ''; ?>

    Войны кланов

    -(Раздел пуст)'; +(Раздел пуст)'; } -echo $html; $html = ''; +echo $html; +$html = ''; ?>

    История Великих сражений

    -(Раздел пуст)'; +(Раздел пуст)'; } -echo $html; $html = ''; +echo $html; +$html = ''; ?> -

    Бойцовский Клуб v2.1 © , «www.new-combats.com»™    
    -

    +
    +
    + Бойцовский Клуб v2.1 © , «www.new-combats.com»™    
    +

    -
    - - - - - -
    + diff --git a/inf.php b/inf.php index 4ee7f69f..55118618 100644 --- a/inf.php +++ b/inf.php @@ -1,150 +1,195 @@ 1 && $inf['info_delete'] < time() ) { - $inf['info_delete'] = 0; - mysql_query('UPDATE `users` SET `info_delete` = 0 WHERE `id` = "'.$inf['id'].'" LIMIT 1'); - } - } +if ($uplogin == 'delete' || $utf8Login == 'delete' || $utf8Login2 == 'delete') { + +} else { + $inf = mysql_fetch_array( + mysql_query( + 'SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id`=`st`.`id`) WHERE ((`u`.`login`="' . mysql_real_escape_string( + $_GET['login'] + ) . '" OR `u`.`login`="' . mysql_real_escape_string( + $utf8Login2 + ) . '" OR `u`.`login`="' . mysql_real_escape_string( + $utf8Login + ) . '" OR `u`.`login`="' . mysql_real_escape_string($uplogin) . '") ) LIMIT 1' + ) + ); + if (!isset($inf['id'])) { + $inf = mysql_fetch_array( + mysql_query( + 'SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id`=`st`.`id`) WHERE (`u`.`id`="' . mysql_real_escape_string( + $_GET['id'] + ) . '" OR `u`.`id`="' . mysql_real_escape_string($uplogin) . '") LIMIT 1' + ) + ); + } + if ($inf['login'] == 'delete' || $inf['login'] == 'DELETE') { + unset($inf); + } else { + if ($inf['info_delete'] > 1 && $inf['info_delete'] < time()) { + $inf['info_delete'] = 0; + mysql_query('UPDATE `users` SET `info_delete` = 0 WHERE `id` = "' . $inf['id'] . '" LIMIT 1'); + } + } } -if(!isset($inf['id'])) -{ - unset($inf); -}else{ +if (!isset($inf['id'])) { + unset($inf); +} else { - if(isset($_GET['restartmonster']) && $u->info['admin'] > 0) { - mysql_query('UPDATE `stats` SET `res_x` = 0 WHERE `id` = "'.mysql_real_escape_string($inf['id']).'" LIMIT 1'); - $inf['res_x'] = 0; - } - if($inf['haos']>1) - { - //снимаем хаос - if($inf['haos']info['admin']>0) - { - if(isset($_GET['wipe']) && $u->newAct($_GET['sd4'])==true) - { - $upd = mysql_query('UPDATE `stats` SET `wipe` = "1" WHERE `id` = "'.$inf['id'].'" LIMIT 1'); - if($upd) - { - $uer = 'Сброс характеристик прошел успешно
    '; - }else{ - $uer = 'Ошибка сброса...
    '; - } - } - } - if(($u->info['align']>1 && $u->info['align']<2) || ($u->info['align']>3 && $u->info['align']<4) || $u->info['admin']>0) - { - if(isset($_GET['molchMax']) && $u->newAct($_GET['sd4'])==true) - { - $upd = mysql_query('UPDATE `users` SET `molch3` = "'.$inf['molch1'].'" WHERE `id` = "'.$inf['id'].'" LIMIT 1'); - if($upd) - { - $uer = 'Все прошло успешно...
    '; - }else{ - $uer = 'Ошибка...
    '; - } - } - } + if (isset($_GET['restartmonster']) && $u->info['admin'] > 0) { + mysql_query( + 'UPDATE `stats` SET `res_x` = 0 WHERE `id` = "' . mysql_real_escape_string($inf['id']) . '" LIMIT 1' + ); + $inf['res_x'] = 0; + } + if ($inf['haos'] > 1) { + //снимаем хаос + if ($inf['haos'] < time()) { + $inf['align'] = 0; + mysql_query('UPDATE `users` SET `align` = "0",`haos` = "0" WHERE `id` = "' . $inf['id'] . '" LIMIT 1'); + } + } + if ($u->info['admin'] > 0) { + if (isset($_GET['wipe']) && $u->newAct($_GET['sd4']) == true) { + $upd = mysql_query('UPDATE `stats` SET `wipe` = "1" WHERE `id` = "' . $inf['id'] . '" LIMIT 1'); + if ($upd) { + $uer = 'Сброс характеристик прошел успешно
    '; + } else { + $uer = 'Ошибка сброса...
    '; + } + } + } + if (($u->info['align'] > 1 && $u->info['align'] < 2) || ($u->info['align'] > 3 && $u->info['align'] < 4) || $u->info['admin'] > 0) { + if (isset($_GET['molchMax']) && $u->newAct($_GET['sd4']) == true) { + $upd = mysql_query( + 'UPDATE `users` SET `molch3` = "' . $inf['molch1'] . '" WHERE `id` = "' . $inf['id'] . '" LIMIT 1' + ); + if ($upd) { + $uer = 'Все прошло успешно...
    '; + } else { + $uer = 'Ошибка...
    '; + } + } + } } -if( $inf['room'] == 303 && $u->info['admin'] == 0 ) { - unset($inf); +if ($inf['room'] == 303 && $u->info['admin'] == 0) { + unset($inf); } - -if(!isset($inf['id'])) -{ - die('Ошибка. Персонаж не найден.'); - die(' + +if (!isset($inf['id'])) { + die('Ошибка. Персонаж не найден.'); + die( + ' @@ -152,2112 +197,2537 @@ if(!isset($inf['id'])) Произошла ошибка:
    Указанный персонаж не найден...

    Назад


    -

    © '.$c['title'].'

    - '.$c['counters'].' - '); +

    © ' . $c['title'] . '

    + ' . $c['counters'] . ' + ' + ); } -if($u->info['align'] > 1 && $u->info['align'] < 2) { - -}elseif($u->info['align'] > 3 && $u->info['align'] < 4) { - -}elseif($inf['redirect'] != '0' && $u->info['admin'] == 0 && $u->info['id'] != $inf['id']) { - header('location: '.$inf['redirect']); - die(); +if ($u->info['align'] > 1 && $u->info['align'] < 2) { + +} elseif ($u->info['align'] > 3 && $u->info['align'] < 4) { + +} elseif ($inf['redirect'] != '0' && $u->info['admin'] == 0 && $u->info['id'] != $inf['id']) { + header('location: ' . $inf['redirect']); + die(); } -function zodiak($d,$m,$y) +function zodiak($d, $m, $y) { -$dr = $d; -switch($m) -{ - case '03': - $zodiac_id = 12; - if($dr > 20) $zodiac_id = 1; - break; - case '04': - $zodiac_id = 1; - if($dr > 19) $zodiac_id = 2; - break; - case '05': - $zodiac_id = 2; - if($dr > 20) $zodiac_id = 3; - break; - case '06': - $zodiac_id = 3; - if($dr > 21) $zodiac_id = 4; - break; - case '07': - $zodiac_id = 4; - if($dr > 22) $zodiac_id = 5; - break; - case '08': - $zodiac_id = 5; - if($dr > 22) $zodiac_id = 6; - break; - case '09': - $zodiac_id = 6; - if($dr > 22) $zodiac_id = 7; - break; - case '10': - $zodiac_id = 7; - if($dr > 22) $zodiac_id = 8; - break; - case '11': - $zodiac_id = 8; - if($dr > 21) $zodiac_id = 9; - break; - case '12': - $zodiac_id = 9; - if($dr > 21) $zodiac_id = 10; - break; - case '01': - $zodiac_id = 10; - if($dr > 19) $zodiac_id = 11; - break; - case '02': - $zodiac_id = 11; - if($dr > 18) $zodiac_id = 12; - break; - } - return $zodiac_id; + $dr = $d; + switch ($m) { + case '03': + $zodiac_id = 12; + if ($dr > 20) { + $zodiac_id = 1; + } + break; + case '04': + $zodiac_id = 1; + if ($dr > 19) { + $zodiac_id = 2; + } + break; + case '05': + $zodiac_id = 2; + if ($dr > 20) { + $zodiac_id = 3; + } + break; + case '06': + $zodiac_id = 3; + if ($dr > 21) { + $zodiac_id = 4; + } + break; + case '07': + $zodiac_id = 4; + if ($dr > 22) { + $zodiac_id = 5; + } + break; + case '08': + $zodiac_id = 5; + if ($dr > 22) { + $zodiac_id = 6; + } + break; + case '09': + $zodiac_id = 6; + if ($dr > 22) { + $zodiac_id = 7; + } + break; + case '10': + $zodiac_id = 7; + if ($dr > 22) { + $zodiac_id = 8; + } + break; + case '11': + $zodiac_id = 8; + if ($dr > 21) { + $zodiac_id = 9; + } + break; + case '12': + $zodiac_id = 9; + if ($dr > 21) { + $zodiac_id = 10; + } + break; + case '01': + $zodiac_id = 10; + if ($dr > 19) { + $zodiac_id = 11; + } + break; + case '02': + $zodiac_id = 11; + if ($dr > 18) { + $zodiac_id = 12; + } + break; + } + return $zodiac_id; } + $id_zodiak = null; -$bday = explode('.',$inf['bithday']); -if(isset($bday[0],$bday[1],$bday[2])) -{ -$id_zodiak = zodiak($bday[0],$bday[1],$bday[2]); +$bday = explode('.', $inf['bithday']); +if (isset($bday[0], $bday[1], $bday[2])) { + $id_zodiak = zodiak($bday[0], $bday[1], $bday[2]); } -if($id_zodiak==null) -{ - $id_zodiak = 1; +if ($id_zodiak == null) { + $id_zodiak = 1; } -$name_zodiak = array(1=>'Овен',2=>'Телец',3=>'Близнецы',4=>'Рак',5=>'Лев',6=>'Дева',7=>'Весы',8=>'Скорпион',9=>'Стрелец',10=>'Козерог',11=>'Водолей',12=>'Рыбы'); +$name_zodiak = [1 => 'Овен', 2 => 'Телец', 3 => 'Близнецы', 4 => 'Рак', 5 => 'Лев', 6 => 'Дева', 7 => 'Весы', 8 => 'Скорпион', 9 => 'Стрелец', 10 => 'Козерог', 11 => 'Водолей', 12 => 'Рыбы']; $name_zodiak = $name_zodiak[$id_zodiak]; function statInfo($s) { - global $st,$st2; - $st[$s] = 0+$st[$s]; - $st2[$s] = 0+$st2[$s]; - if($st[$s]!=$st2[$s]) - { - $s1 = '+'; - if($st2[$s]>$st[$s]) - { - $s1 = '-'; - } - -$cl = array( --2=>"#550000", --1=>"#990000", -0 =>"#000000", -33=>"#004000", -34=>"#006000", -35=>"#006100", -36=>"#006200", -37=>"#006300", -38=>"#006400", -39=>"#006500", -40=>"#006600", -41=>"#006700", -42=>"#006800", -43=>"#006900", -44=>"#006A00", -45=>"#006B00", -46=>"#006C00", -47=>"#006D00", -48=>"#006E00", -49=>"#006F00", -50=>"#007000", -51=>"#007100", -52=>"#007100", -53=>"#007200", -54=>"#007300", -55=>"#007400", -56=>"#007500", -57=>"#007600", -58=>"#007700", -59=>"#007800", -60=>"#007900", -61=>"#007A00", -62=>"#007B00", -63=>"#007C00", -64=>"#007D00", -65=>"#007E00", -66=>"#007F00", -67=>"#008000", -68=>"#008100", -69=>"#008200", -70=>"#008300", -71=>"#008400", -72=>"#008500", -73=>"#008600", -74=>"#008700", -75=>"#008700", -76=>"#008800", -77=>"#008900", -78=>"#008A00", -79=>"#008B00", -80=>"#008C00", -81=>"#008D00", -82=>"#008E00", -83=>"#008F00", -84=>"#009000", -85=>"#009100", -86=>"#009200", -87=>"#009300", -88=>"#009400", -89=>"#009500", -90=>"#009600", -91=>"#009700", -92=>"#009800", -93=>"#009900", -94=>"#009A00", -95=>"#009B00", -96=>"#009C00", -97=>"#009D00", -98=>"#009E00", -99=>"#009F00", -100=>"#00A000" -); - - - //$cl = array(0=>'#003C00',1=>'green',2=>'#0DAC0D',3=>'#752415',4=>''); - $si = 4; - if($s1=='-') - { - $si = 0; - } - $t = $st[$s]; - $j = $st[$s]-$st2[$s]; - $t = $t-$j; - if($j>0) - { - if($t==0) - { - $t = 1; - } - if($t==0) - { - $t = 1; - } - $d = $j*100/$t; - if($d<0 && $t+$j>=0) - { - $d = 100; - } - if($d < 33) - { - $si = 0; - }elseif($d > 100) - { - $si = 100; - } - }elseif($j<0) - { - $si = 3; - } - - if($st[$s] <- 0) { - $si = -1; - }elseif($st[$s] <= round($st2[$s])) { - $si = -2; - } - echo ''.$st[$s].' ('.$st2[$s].' '.$s1.' '.abs($st[$s]-$st2[$s]).')'; - }else{ - echo ''.$st[$s].''; - } + global $st, $st2; + $st[$s] = 0 + $st[$s]; + $st2[$s] = 0 + $st2[$s]; + if ($st[$s] != $st2[$s]) { + $s1 = '+'; + if ($st2[$s] > $st[$s]) { + $s1 = '-'; + } + + $cl = [ + -2 => "#550000", + -1 => "#990000", + 0 => "#000000", + 33 => "#004000", + 34 => "#006000", + 35 => "#006100", + 36 => "#006200", + 37 => "#006300", + 38 => "#006400", + 39 => "#006500", + 40 => "#006600", + 41 => "#006700", + 42 => "#006800", + 43 => "#006900", + 44 => "#006A00", + 45 => "#006B00", + 46 => "#006C00", + 47 => "#006D00", + 48 => "#006E00", + 49 => "#006F00", + 50 => "#007000", + 51 => "#007100", + 52 => "#007100", + 53 => "#007200", + 54 => "#007300", + 55 => "#007400", + 56 => "#007500", + 57 => "#007600", + 58 => "#007700", + 59 => "#007800", + 60 => "#007900", + 61 => "#007A00", + 62 => "#007B00", + 63 => "#007C00", + 64 => "#007D00", + 65 => "#007E00", + 66 => "#007F00", + 67 => "#008000", + 68 => "#008100", + 69 => "#008200", + 70 => "#008300", + 71 => "#008400", + 72 => "#008500", + 73 => "#008600", + 74 => "#008700", + 75 => "#008700", + 76 => "#008800", + 77 => "#008900", + 78 => "#008A00", + 79 => "#008B00", + 80 => "#008C00", + 81 => "#008D00", + 82 => "#008E00", + 83 => "#008F00", + 84 => "#009000", + 85 => "#009100", + 86 => "#009200", + 87 => "#009300", + 88 => "#009400", + 89 => "#009500", + 90 => "#009600", + 91 => "#009700", + 92 => "#009800", + 93 => "#009900", + 94 => "#009A00", + 95 => "#009B00", + 96 => "#009C00", + 97 => "#009D00", + 98 => "#009E00", + 99 => "#009F00", + 100 => "#00A000", + ]; + + + //$cl = array(0=>'#003C00',1=>'green',2=>'#0DAC0D',3=>'#752415',4=>''); + $si = 4; + if ($s1 == '-') { + $si = 0; + } + $t = $st[$s]; + $j = $st[$s] - $st2[$s]; + $t = $t - $j; + if ($j > 0) { + if ($t == 0) { + $t = 1; + } + if ($t == 0) { + $t = 1; + } + $d = $j * 100 / $t; + if ($d < 0 && $t + $j >= 0) { + $d = 100; + } + if ($d < 33) { + $si = 0; + } elseif ($d > 100) { + $si = 100; + } + } elseif ($j < 0) { + $si = 3; + } + + if ($st[$s] < -0) { + $si = -1; + } elseif ($st[$s] <= round($st2[$s])) { + $si = -2; + } + echo '' . $st[$s] . ' (' . $st2[$s] . ' ' . $s1 . ' ' . abs( + $st[$s] - $st2[$s] + ) . ')'; + } else { + echo '' . $st[$s] . ''; + } } -$room = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `id`="'.$inf['room'].'" LIMIT 1')); +$room = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `id`="' . $inf['room'] . '" LIMIT 1')); -if($inf['clan']>0) -{ - $pc = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id`="'.$inf['clan'].'" LIMIT 1')); +if ($inf['clan'] > 0) { + $pc = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id`="' . $inf['clan'] . '" LIMIT 1')); } $nopal = false; -if( $u->info['align'] < $inf['align'] && $inf['align'] > 1 && $inf['align'] < 2 && $u->info['admin'] == 0 ) { - $nopal = true; -}elseif( $u->info['admin'] == 0 && $inf['admin'] > 0 ) { - $nopal = true; +if ($u->info['align'] < $inf['align'] && $inf['align'] > 1 && $inf['align'] < 2 && $u->info['admin'] == 0) { + $nopal = true; +} elseif ($u->info['admin'] == 0 && $inf['admin'] > 0) { + $nopal = true; } -if( $u->info['admin'] == 0 ) { - $nopal = true; +if ($u->info['admin'] == 0) { + $nopal = true; } -if( $inf['inTurnir'] > 0 && ($u->info['inTurnir'] == $inf['inTurnir'] || $u->info['admin'] > 0) ) { - $bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "'.$inf['inTurnir'].'" LIMIT 1')); - if( isset($bs['id']) && ( $bs['users'] <= 2 || $bs['type_btl'] == 1 ) ) { - $bs_rm = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `bs_map` WHERE `mid` = "'.$bs['type_map'].'" AND `x` = "'.$inf['x'].'" AND `y` = "'.$inf['y'].'" LIMIT 1')); - if( isset($bs_rm['id']) ) { - $room['name'] .= ' - '.$bs_rm['name']; - } - } +if ($inf['inTurnir'] > 0 && ($u->info['inTurnir'] == $inf['inTurnir'] || $u->info['admin'] > 0)) { + $bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "' . $inf['inTurnir'] . '" LIMIT 1')); + if (isset($bs['id']) && ($bs['users'] <= 2 || $bs['type_btl'] == 1)) { + $bs_rm = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`name` FROM `bs_map` WHERE `mid` = "' . $bs['type_map'] . '" AND `x` = "' . $inf['x'] . '" AND `y` = "' . $inf['y'] . '" LIMIT 1' + ) + ); + if (isset($bs_rm['id'])) { + $room['name'] .= ' - ' . $bs_rm['name']; + } + } } ?> - -Информация о <? echo $inf['login']; ?> - - - - - - - - - - + .pg_btn1 { + background-image: url(https://img.new-combats.com/pg_btn_left.png); + width: 27px; + height: 78px; + cursor: pointer; + display: block; + } + + .pg_btn1:hover { + background-position: -27px; + cursor: pointer; + } + + .pg_btn1:active { + background-position: -55px; + cursor: pointer; + } + + .pg_btn2 { + background-image: url(https://img.new-combats.com/pg_btn_right.png); + background-position: -54px; + width: 27px; + height: 78px; + cursor: pointer; + display: block; + } + + .pg_btn2:hover { + background-position: -27px; + cursor: pointer; + } + + .pg_btn2:active { + background-position: 1px; + cursor: pointer; + } + + progress { + -webkit-appearance: none; + appearance: none; + } + + .prog0 { + width: 10em; + height: 1em; + } + + .prog0::-webkit-progress-bar { + background-color: #eee; + border-radius: 2px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset; + } + + .prog0[value]::-webkit-progress-value { + background-image: -webkit-linear-gradient(-45deg, + transparent 33%, rgba(0, 0, 0, .1) 33%, + rgba(0, 0, 0, .1) 66%, transparent 66%), + -webkit-linear-gradient(top, + rgba(255, 255, 255, .25), + rgba(0, 0, 0, .25)), + -webkit-linear-gradient(left, #09c, #7FFFD4); + + border-radius: 2px; + background-size: 35px 20px, 100% 100%, 100% 100%; + } + + .prog1 { + width: 10em; + height: 1em; + } + + .prog1::-webkit-progress-bar { + background-color: #eee; + border-radius: 2px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset; + } + + .prog1[value]::-webkit-progress-value { + background-image: -webkit-linear-gradient(-45deg, + transparent 33%, rgba(0, 0, 0, .1) 33%, + rgba(0, 0, 0, .1) 66%, transparent 66%), + -webkit-linear-gradient(top, + rgba(255, 255, 255, .25), + rgba(0, 0, 0, .25)), + -webkit-linear-gradient(left, #7FFFD4, #F4A460); + + border-radius: 2px; + background-size: 35px 20px, 100% 100%, 100% 100%; + } + + .prog2 { + width: 10em; + height: 1em; + } + + .prog2::-webkit-progress-bar { + background-color: #eee; + border-radius: 2px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset; + } + + .prog2[value]::-webkit-progress-value { + background-image: -webkit-linear-gradient(-45deg, + transparent 33%, rgba(0, 0, 0, .1) 33%, + rgba(0, 0, 0, .1) 66%, transparent 66%), + -webkit-linear-gradient(top, + rgba(255, 255, 255, .25), + rgba(0, 0, 0, .25)), + -webkit-linear-gradient(left, #F4A460, #FFC0CB); + + border-radius: 2px; + background-size: 35px 20px, 100% 100%, 100% 100%; + } + + .prog3 { + width: 10em; + height: 1em; + } + + .prog3::-webkit-progress-bar { + background-color: #eee; + border-radius: 2px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset; + } + + .prog3[value]::-webkit-progress-value { + background-image: -webkit-linear-gradient(-45deg, + transparent 33%, rgba(0, 0, 0, .1) 33%, + rgba(0, 0, 0, .1) 66%, transparent 66%), + -webkit-linear-gradient(top, + rgba(255, 255, 255, .25), + rgba(0, 0, 0, .25)), + -webkit-linear-gradient(left, #FFC0CB, #FFD700); + + border-radius: 2px; + background-size: 35px 20px, 100% 100%, 100% 100%; + } + + .prog4 { + width: 10em; + height: 1em; + } + + .prog4::-webkit-progress-bar { + background-color: #eee; + border-radius: 2px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset; + } + + .prog4[value]::-webkit-progress-value { + background-image: -webkit-linear-gradient(-45deg, + transparent 33%, rgba(0, 0, 0, .1) 33%, + rgba(0, 0, 0, .1) 66%, transparent 66%), + -webkit-linear-gradient(top, + rgba(255, 255, 255, .25), + rgba(0, 0, 0, .25)), + -webkit-linear-gradient(left, #FFD700, #FF0000); + + border-radius: 2px; + background-size: 35px 20px, 100% 100%, 100% 100%; + } + + .prog5 { + width: 10em; + height: 1em; + } + + .prog5::-webkit-progress-bar { + background-color: #eee; + border-radius: 2px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset; + } + + .prog5[value]::-webkit-progress-value { + background-image: -webkit-linear-gradient(-45deg, + transparent 33%, rgba(0, 0, 0, .1) 33%, + rgba(0, 0, 0, .1) 66%, transparent 66%), + -webkit-linear-gradient(top, + rgba(255, 255, 255, .25), + rgba(0, 0, 0, .25)), + -webkit-linear-gradient(left, #FF0000, #FF0000); + + border-radius: 2px; + background-size: 35px 20px, 100% 100%, 100% 100%; + } + + .dvfirs { + overflow: hidden; + white-space: nowrap; + float: left; + margin-left: 20px; + width: 350px; + text-align: center; + } + + .dvsec { + overflow: hidden; + white-space: nowrap; + float: left; + width: 140px; + } + + .dvtre { + overflow: hidden; + white-space: nowrap; + float: left; + width: 60px; + } + + - + -'.$uer.'
    '; } ?> +' . $uer . '
    '; +} ?> - - -
    - - - + '; + } + echo '

    -
    getStats($inf['id'],1,0,true); $st2 = $st[1]; $st = $st[0]; - - $rgd = $u->regen($inf['id'],$st,1); $us = $u->getInfoPers($inf['id'],1,$st); if( isset($bs['id']) && $bs['type_btl'] == 2 && ($u->info['x'] != $inf['x'] || $u->info['y'] != $inf['y'])) { $us[0] = '








    Информация скрыта,
    Вы в разных комнатах.






    '; } if($us!=false){ echo $us[0]; }else{ echo 'information is lost.'; } ?>
    - -
    - 1, - 1 => 1, - 2 => 3, - 3 => 3, - 4 => 3, - 5 => 7, - 6 => 7, - 7 => 7, - 8 => 14, - 9 => 14, - 10 => 30, - 11 => 30, - 12 => 30, - 13 => 30, - 14 => 30, - 15 => 30, - 16 => 60, - 17 => 60, - 18 => 60, - 19 => 60, - 20 => 60, - 21 => 60 -); +
    + + + - '; - } - echo '

    +
    getStats($inf['id'], 1, 0, true); + $st2 = $st[1]; + $st = $st[0]; -?> - - 0 ) { - if($inf['battle']>0) - { - $btl3 = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = '.$inf['battle'].'')); - if(isset($btl3['id']) && $btl3['time_over']==0) - { - echo '

    Персонаж сейчас в поединке
    '; - } - } - }elseif( $inf['room'] != 303 ) { - echo '
    '; - - - if($inf['online']>time()-520 && $inf['banned']==0 && $inf['invis']!=1 && $inf['invis'] < time()) - { - echo 'Персонаж сейчас находится в клубе.
    "'.$room['name'].'"'; - }else{ - if($inf['admin']==0 || $inf['admin']==2) - { - if($inf['online']==0) - { - $inf['online'] = $inf['timeREG']; - } - echo 'Персонаж не в клубе'; - if(date('Y',$inf['online']) == date('Y')) { - echo ', но был тут:
    '.date('d.m.Y H:i',$inf['online']).''; - $out = ''; - $time_still = time()-$inf['online']; - $tmp = floor($time_still/2592000); - $id=0; - if ($tmp > 0) { - $id++; - if ($id<3) {$out .= $tmp." мес. ";} - $time_still = $time_still-$tmp*2592000; - } - $tmp = floor($time_still/604800); - if ($tmp > 0) { - $id++; - if ($id<3) {$out .= $tmp." нед. ";} - $time_still = $time_still-$tmp*604800; - } - $tmp = floor($time_still/86400); - if ($tmp > 0) { - $id++; - if ($id<3) {$out .= $tmp." дн. ";} - $time_still = $time_still-$tmp*86400; - } - $tmp = floor($time_still/3600); - if ($tmp > 0) { - $id++; - if ($id<3) {$out .= $tmp." ч. ";} - $time_still = $time_still-$tmp*3600; - } - $tmp = floor($time_still/60); - if ($tmp > 0) { - $id++; - if ($id<3) {$out .= $tmp." мин. ";} - } - if($out=='') - { - $out = $time_still.' сек.'; - } - echo '
    ('.$out.' назад)'; - } - }elseif($inf['admin']>0) - { - echo 'Персонаж не в клубе.'; - } - } - if($inf['inUser']>0 AND $inf['id']!=12059 ) - { - echo '
    Персонаж вселился в бота'; - } - if($inf['battle']>0) - { - $btl3 = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = '.$inf['battle'].'')); - if(isset($btl3['id']) && $btl3['time_over']==0) - { - echo '
    Персонаж сейчас в поединке'; - } - } - echo '
    '; - }else{ - if( $inf['res_x']-time() > 0 ) { - echo '
    Появится через '.($u->timeOut(($inf['res_x']-time()))).'
    '; - }else{ - echo '
    Появится в ближайшее время...
    '; - } - } - //Эффект админ - if($u->info['admin'] > 0) { - - if(isset($_GET['cancel_eff'])) { - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.mysql_real_escape_string((int)$_GET['cancel_eff']).'" AND `uid` = "'.$inf['id'].'" LIMIT 1'); - die(''); - } - - function eff_adm($pl) { - global $u; - $r = ''; - if($pl['v1'] != 'priem') { - $eff = mysql_fetch_array(mysql_query('SELECT `id2`,`img`,`actionTime` FROM `eff_main` WHERE `id2` = "'.$pl['id_eff'].'" LIMIT 1')); - $pl['img2'] = $eff['img']; - $pl['name'] .= "\r".'Действует еще '.$u->timeOut($pl['timeUse']-time()+$eff['actionTime']).''; - } - $r .= ''; - return $r; - } - - $eff_adm = ''; - $sp = mysql_query('SELECT `id_eff`,`uid`,`id`,`name`,`img2`,`v1`,`v2`,`timeUse` FROM `eff_users` WHERE `uid` = "'.$inf['id'].'" AND `delete` = "0"'); - while($pl = mysql_fetch_array($sp)) { - $eff_adm .= eff_adm($pl); - } - if($eff_adm != '') { - echo '
    Эффекты на персонаже:
    '.$eff_adm.'
    '; - } - } - if($u->info['admin'] > 0) { - ?> -
    - - -
    -
    Показать модификаторы
    -
    - -
    - + + +
    info['admin'] > 0 ) { - $nodell = mysql_fetch_array(mysql_query('SELECT `id`,`inUser` FROM `users` WHERE `login` = "'.$inf['login'].'" ORDER BY `id` ASC LIMIT 1')); - $sp = mysql_query('SELECT `id`,`level`,`inTurnir`,`room`,`battle`,`inTurnirnew`,`inUser` FROM `users` WHERE `login` = "'.$inf['login'].'" AND `id` != "'.$inf['id'].'"'); - while( $pl = mysql_fetch_array($sp)) { - if( isset($_GET['del_copy']) && $_GET['del_copy'] == $pl['id'] ) { - if( $nodell['inUser'] != $pl['id'] && $pl['id'] != $nodell['id'] ) { - mysql_query('UPDATE `users` SET `login` = "DELETE" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - }else{ - $nolog .= '
    '.$u->microLogin($pl['id'],1); - if( $nodell['inUser'] != $pl['id'] && $pl['id'] != $nodell['id'] ) { - $nolog .= ' (персонажа можно удалить)'; - } - if( $pl['id'] == $nodell['id'] ) { - $nolog .= ' (основной персонаж)'; - } - $nolog .= '
    '; - } - } - if( $nolog != '' ) { - $nolog = 'Копии персонажа:'.$nolog.''; - echo $nolog; - } - - } - ?>
    Сила:
    - Ловкость:
    - Интуиция:
    - Выносливость:
    - 3 || $st['s5']!=0){ ?>Интеллект:
    - 6 || $st['s6']!=0){ ?>Мудрость:
    - 9 || $st['s7']!=0){ ?>Духовность:
    - 11 || $st['s8']!=0){ ?>Воля:
    - 14 || $st['s9']!=0){ ?>Свобода духа:
    - 19 || $st['s10']!=0){ ?>Божественность:
    - 0 ) { ?> - Энергия:
    - - Рейтинг сегодня:
    -
    -
    -
    - info['admin'] > 0 ) { echo 'Уровень:'; }else{ echo 'Уровень:'; } ?>
    - - Побед: '.number_format($inf['win'], 0, ",", " ").''; } ?>
    - Поражений:
    - Ничьих:
    - - - Орден Алхимиков'; if($inf['mod_zvanie']!=''){ echo ' - '.$inf['mod_zvanie']; } echo '
    '; } ?> - Орден Рекламного Развития'; if($inf['mod_zvanie']!=''){ echo ' - '.$inf['mod_zvanie']; } echo '
    '; } ?> - regen($inf['id'], $st, 1); + $us = $u->getInfoPers($inf['id'], 1, $st); + if (isset($bs['id']) && $bs['type_btl'] == 2 && ($u->info['x'] != $inf['x'] || $u->info['y'] != $inf['y'])) { + $us[0] = '








    Информация скрыта,
    Вы в разных комнатах.






    '; + } + if ($us != false) { + echo $us[0]; + } else { + echo 'information is lost.'; + } ?>
    + +
    +
    + + 1, + 1 => 1, + 2 => 3, + 3 => 3, + 4 => 3, + 5 => 7, + 6 => 7, + 7 => 7, + 8 => 14, + 9 => 14, + 10 => 30, + 11 => 30, + 12 => 30, + 13 => 30, + 14 => 30, + 15 => 30, + 16 => 60, + 17 => 60, + 18 => 60, + 19 => 60, + 20 => 60, + 21 => 60, + ]; - if($inf['clan']>0) - { - $pc = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id`="'.$inf['clan'].'" LIMIT 1')); - if(isset($pc['id'])) - { - $pc['img'] = $pc['name_mini'].'.gif'; - if($inf['clan_prava']=='glava') - { - $inf['mod_zvanie'] = '- Глава клана'; - }elseif($inf['mod_zvanie']!='') - { - $inf['mod_zvanie'] = '- '.htmlspecialchars($inf['mod_zvanie'],NULL,'cp1251'); - $inf['mod_zvanie'] = str_replace('<b>','',$inf['mod_zvanie']); - $inf['mod_zvanie'] = str_replace('</b>','',$inf['mod_zvanie']); - $inf['mod_zvanie'] = str_replace('<u>','',$inf['mod_zvanie']); - $inf['mod_zvanie'] = str_replace('</u>','',$inf['mod_zvanie']); - $inf['mod_zvanie'] = str_replace('<i>','',$inf['mod_zvanie']); - $inf['mod_zvanie'] = str_replace('</i>','',$inf['mod_zvanie']); + ?> + + 0) { + if ($inf['battle'] > 0) { + $btl3 = mysql_fetch_array( + mysql_query('SELECT * FROM `battle` WHERE `id` = ' . $inf['battle'] . '') + ); + if (isset($btl3['id']) && $btl3['time_over'] == 0) { + echo '

    Персонаж сейчас в поединке
    '; + } + } + } elseif ($inf['room'] != 303) { + echo '
    '; + + + if ($inf['online'] > time( + ) - 520 && $inf['banned'] == 0 && $inf['invis'] != 1 && $inf['invis'] < time()) { + echo 'Персонаж сейчас находится в клубе.
    "' . $room['name'] . '"'; + } else { + if ($inf['admin'] == 0 || $inf['admin'] == 2) { + if ($inf['online'] == 0) { + $inf['online'] = $inf['timeREG']; + } + echo 'Персонаж не в клубе'; + if (date('Y', $inf['online']) == date('Y')) { + echo ', но был тут:
    ' . date( + 'd.m.Y H:i', $inf['online'] + ) . ''; + $out = ''; + $time_still = time() - $inf['online']; + $tmp = floor($time_still / 2592000); + $id = 0; + if ($tmp > 0) { + $id++; + if ($id < 3) { + $out .= $tmp . " мес. "; + } + $time_still = $time_still - $tmp * 2592000; } - echo 'Клан: '.$pc['name'].' '.$inf['mod_zvanie'].'
    '; + $tmp = floor($time_still / 604800); + if ($tmp > 0) { + $id++; + if ($id < 3) { + $out .= $tmp . " нед. "; + } + $time_still = $time_still - $tmp * 604800; + } + $tmp = floor($time_still / 86400); + if ($tmp > 0) { + $id++; + if ($id < 3) { + $out .= $tmp . " дн. "; + } + $time_still = $time_still - $tmp * 86400; + } + $tmp = floor($time_still / 3600); + if ($tmp > 0) { + $id++; + if ($id < 3) { + $out .= $tmp . " ч. "; + } + $time_still = $time_still - $tmp * 3600; + } + $tmp = floor($time_still / 60); + if ($tmp > 0) { + $id++; + if ($id < 3) { + $out .= $tmp . " мин. "; + } + } + if ($out == '') { + $out = $time_still . ' сек.'; + } + echo '
    (' . $out . ' назад)'; } + } elseif ($inf['admin'] > 0) { + echo 'Персонаж не в клубе.'; } - - if( $inf['admin'] == 0 && ( ($inf['align'] > 1 && $inf['align'] < 2) || ($inf['align'] > 3 && $inf['align'] < 4) ) ) { - echo 'Орден Модераторов
    '; - } - ?> - - '.$u->city_name[$inf['city2']].'
    '; } ?> - День рождения персонажа:
    - time() ) { ?> - Персонаж чист перед законом: до
    - Администратор
    '; - } - if($inf['redirect'] != '0' && ($u->info['admin'] > 0 || $u->info['id'] == $inf['id'])) { - echo 'Редирект: '.htmlspecialchars($inf['redirect']).'
    '; - } - if( $u->info['admin'] > 0 ) { - echo '
    Цена комплекта: '.(0+$st['prckr']).' кр.
    '; - echo 'Цена комплекта: '.(0+$st['preckr']).' eкр.
    '; - echo 'Уровень покупателя: '.(0+$st['pbe']).'
    '; - } - ?> - '.$pl['login'].' ['.$pl['level'].']'; - }else{ - $twk .= ''.$pl['login'].' ['.$pl['level'].']'; - } - } - } - if( $twk != '' ) { - echo 'Другие образы: '.$twk.'
    '; - } - ?> - 0) - { - $names .= '                      '; + } + if ($inf['inUser'] > 0 and $inf['id'] != 12059) { + echo '
    Персонаж вселился в бота'; + } + if ($inf['battle'] > 0) { + $btl3 = mysql_fetch_array( + mysql_query('SELECT * FROM `battle` WHERE `id` = ' . $inf['battle'] . '') + ); + if (isset($btl3['id']) && $btl3['time_over'] == 0) { + echo '
    Персонаж сейчас в поединке'; + } + } + echo '
    '; + } else { + if ($inf['res_x'] - time() > 0) { + echo '
    Появится через ' . ($u->timeOut( + ($inf['res_x'] - time()) + )) . '
    '; + } else { + echo '
    Появится в ближайшее время...
    '; + } + } + //Эффект админ + if ($u->info['admin'] > 0) { + + if (isset($_GET['cancel_eff'])) { + mysql_query( + 'UPDATE `eff_users` SET `delete` = "' . time( + ) . '" WHERE `id` = "' . mysql_real_escape_string( + (int)$_GET['cancel_eff'] + ) . '" AND `uid` = "' . $inf['id'] . '" LIMIT 1' + ); + die(''); + } + + function eff_adm($pl) + { + global $u; + $r = ''; + if ($pl['v1'] != 'priem') { + $eff = mysql_fetch_array( + mysql_query( + 'SELECT `id2`,`img`,`actionTime` FROM `eff_main` WHERE `id2` = "' . $pl['id_eff'] . '" LIMIT 1' + ) + ); + $pl['img2'] = $eff['img']; + $pl['name'] .= "\r" . 'Действует еще ' . $u->timeOut( + $pl['timeUse'] - time() + $eff['actionTime'] + ) . ''; + } + $r .= ''; + return $r; + } + + $eff_adm = ''; + $sp = mysql_query( + 'SELECT `id_eff`,`uid`,`id`,`name`,`img2`,`v1`,`v2`,`timeUse` FROM `eff_users` WHERE `uid` = "' . $inf['id'] . '" AND `delete` = "0"' + ); + while ($pl = mysql_fetch_array($sp)) { + $eff_adm .= eff_adm($pl); + } + if ($eff_adm != '') { + echo '
    Эффекты на персонаже:
    ' . $eff_adm . '
    '; + } + } + if ($u->info['admin'] > 0) { + ?> +
    + + +
    +
    Показать + модификаторы
    +
    + +
    + + - -
    info['admin'] > 0) { + $nodell = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`inUser` FROM `users` WHERE `login` = "' . $inf['login'] . '" ORDER BY `id` ASC LIMIT 1' + ) + ); + $sp = mysql_query( + 'SELECT `id`,`level`,`inTurnir`,`room`,`battle`,`inTurnirnew`,`inUser` FROM `users` WHERE `login` = "' . $inf['login'] . '" AND `id` != "' . $inf['id'] . '"' + ); + while ($pl = mysql_fetch_array($sp)) { + if (isset($_GET['del_copy']) && $_GET['del_copy'] == $pl['id']) { + if ($nodell['inUser'] != $pl['id'] && $pl['id'] != $nodell['id']) { + mysql_query( + 'UPDATE `users` SET `login` = "DELETE" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' + ); + } + } else { + $nolog .= '
    ' . $u->microLogin($pl['id'], 1); + if ($nodell['inUser'] != $pl['id'] && $pl['id'] != $nodell['id']) { + $nolog .= ' (персонажа можно удалить)'; + } + if ($pl['id'] == $nodell['id']) { + $nolog .= ' (основной персонаж)'; + } + $nolog .= '
    '; + } + } + if ($nolog != '') { + $nolog = 'Копии персонажа:' . $nolog . ''; + echo $nolog; + } + } - $algnt = mysql_fetch_array(mysql_query('SELECT * FROM `users_align` WHERE `uid` = "'.$inf['id'].'" AND (`delete` = 0 OR `delete` > "'.time().'") LIMIT 1')); - if(isset($algnt['id'])) { - if($algnt['align'] == 1) { - echo '
    Выбранная сторона: Свет'; - if( $algnt['delete'] > 0 ) { - echo ' (до '.date('d.m.Y H:i',$algnt['delete']).')'; - } - echo '
    '; - }elseif($algnt['align'] == 3) { - echo '
    Выбранная сторона: Тьма'; - if( $algnt['delete'] > 0 ) { - echo ' (до '.date('d.m.Y H:i',$algnt['delete']).')'; - } - echo '
    '; - }elseif($algnt['align'] == 7) { - echo '
    Выбранная сторона: Нейтрал'; - if( $algnt['delete'] > 0 ) { - echo ' (до '.date('d.m.Y H:i',$algnt['delete']).')'; - } - echo '
    '; - } - } - if( $st['silver'] > 0 ) { - echo '
    '; - echo 'Благословление Ангелов: '; - echo '
    '; - } - - if($inf['win_t'] > 0) { ?> -
    - Побед в турнирах:
    - Поражений в турнирах:
    - - - info['align'] == 50 ) { - $bnk = ''; $bmn1 = 0; $bmn2 = 0; - $sp = mysql_query('SELECT * FROM `bank` WHERE `uid` = "'.$inf['id'].'"'); - while($pl = mysql_fetch_array($sp)) { - if($pl['useNow'] > 0) { - $bnk .= '
    '; - }else{ - $bnk .= '
    '; - } - $bnk .= '  • '.$pl['id'].''; - $bnk .= '
    '; - } - if($bnk != '') { - echo '
    Банковские счета:  '.$bnk.'
    '; - } - echo '
    '; - } - ?> -
    -
    - - - '; - } - } - - $sp = mysql_query('SELECT * FROM `users_ico` WHERE `uid` = "'.$inf['id'].'" AND (`endTime` = 0 OR `endTime` > '.time().') LIMIT 100'); - while($pl = mysql_fetch_array($sp)) - { - $stlico = ''; - - if( $pl['type'] == 2 ) { - $stlico .= 'width:37px;height:37xp;padding:2px;'; - } - - if($stlico != '') { - $stlico = 'style="'.$stlico.'"'; - } - $icon = ' '; - - if( $pl['href'] != '#' && $pl['href'] != '' ) { - $ico[$pl['type']] .= ''.$icon.''; - }else{ - $ico[$pl['type']] .= $icon; - } - } - unset($icon); - - - if($inf['vip']==1) { - $ico[1] .= ' '; - } - - //сильвер - if($st['silver']>0) { - $ico[1] .= ' '; - } +
    Сила:
    + Ловкость:
    + Интуиция:
    + Выносливость:
    + 3 || $st['s5'] != 0) { ?> + Интеллект:
    + 6 || $st['s6'] != 0) { ?> + Мудрость:
    + 9 || $st['s7'] != 0) { ?> + Духовность:
    + 11 || $st['s8'] != 0) { ?>Воля:
    + 14 || $st['s9'] != 0) { ?>Свобода + духа:
    + 19 || $st['s10'] != 0) { ?> + Божественность:
    + 0) { ?> + Энергия:
    + + Рейтинг сегодня:
    +
    +
    +
    + info['admin'] > 0) { + echo 'Уровень:'; + } else { + echo 'Уровень:'; + } ?>
    + + Побед: ' . number_format( + $inf['win'], 0, ",", " " + ) . ''; + } ?>
    + Поражений:
    + Ничьих:
    + - $irep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "'.$inf['id'].'" LIMIT 1')); - if(isset($irep['id'])) - { - //Водосток - if($irep['repdreamscity']>9999) - { - $ico[1] .= ''; - }elseif($irep['repdreamscity']>4999) - { - $ico[1] .= ''; - } - elseif($irep['repdreamscity']>999) - { - $ico[1] .= ''; - } - - //Храм знаний - if($irep['rep1']>9999) - { - $ico[1] .= ''; - }elseif($irep['rep1']>999) - { - $ico[1] .= ''; - }elseif($irep['rep1']>99) - { - $ico[1] .= ''; - } - - //Алтарь крови - if($irep['rep2']>99) - { - $ico[1] .= ''; - } - - //Излом хаоса - if($irep['repizlom']>24999) - { - $ico[1] .= ''; - }elseif($irep['repizlom']>9999) - { - $ico[1] .= ''; - }elseif($irep['repizlom']>999) - { - $ico[1] .= ''; - }elseif($irep['repizlom']>99) - { - $ico[1] .= ''; - } - - - //capitalcity - if($irep['repcapitalcity']>24999) - { - $ico[1] .= ''; - }elseif($irep['repcapitalcity']>9999) - { - $ico[1] .= ''; - } - - //angelscity - if($irep['repangelscity']>24999) - { - $ico[1] .= ''; - }elseif($irep['repangelscity']>9999) - { - $ico[1] .= ''; - } - - //demonscity - if($irep['repdemonscity']>24999) - { - $ico[1] .= ''; - }elseif($irep['repdemonscity']>9999) - { - $ico[1] .= ''; - } - - //devilscity - if($irep['repdevilscity']>24999) - { - $ico[1] .= ''; - }elseif($irep['repdevilscity']>9999) - { - $ico[1] .= ''; - } - - //suncity - if($irep['repsuncity']>24999) - { - $ico[1] .= ''; - }elseif($irep['repsuncity']>9999) - { - $ico[1] .= ''; - } - //Гора легиона (сука как она меня заебала) by R - if($irep['repabandonedplain']>9999) - { - $ico[1] .= ''; - }elseif($irep['repabandonedplain']>999) - { - $ico[1] .= ''; - } - - //emeraldscity - if($irep['repemeraldscity']>24999) - { - $ico[1] .= ''; - }elseif($irep['repemeraldscity']>9999) - { - $ico[1] .= ''; - } - - //sandcity - if($irep['repsandcity']>24999) - { - $ico[1] .= ''; - }elseif($irep['repsandcity']>9999) - { - $ico[1] .= ''; - } - - //mooncity - if($irep['repmooncity']>24999) - { - $ico[1] .= ''; - }elseif($irep['repmooncity']>9999) - { - $ico[1] .= ''; - } - if($inf['referals'] >= 3000) // значок за рефов - { - $ico[1] .= ''; - }elseif($inf['referals'] > 1500) - { - $ico[1] .= ''; - }elseif($inf['referals'] > 600) - { - $ico[1] .= ''; - } - } + Орден Алхимиков'; + if ($inf['mod_zvanie'] != '') { + echo ' - ' . $inf['mod_zvanie']; + } + echo '
    '; + } ?> + Орден Рекламного Развития'; + if ($inf['mod_zvanie'] != '') { + echo ' - ' . $inf['mod_zvanie']; + } + echo '
    '; + } ?> + '; - foreach ($ai->getTypes() as $type) { - $tmp_1 = $ai->getInfo($inf['id']); - if (!empty($tmp_1[$type])) { - $ico[3].= '
    '.$tmp_1['name'.$type].'
    Ранг '.$tmp_1['klas'.$type].' :
    '.$tmp_1['name'.$type].'
    '; - } - } + if ($inf['clan'] > 0) { + $pc = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan` WHERE `id`="' . $inf['clan'] . '" LIMIT 1' + ) + ); + if (isset($pc['id'])) { + $pc['img'] = $pc['name_mini'] . '.gif'; + if ($inf['clan_prava'] == 'glava') { + $inf['mod_zvanie'] = '- Глава клана'; + } elseif ($inf['mod_zvanie'] != '') { + $inf['mod_zvanie'] = '- ' . htmlspecialchars( + $inf['mod_zvanie'], null, 'cp1251' + ); + $inf['mod_zvanie'] = str_replace( + '<b>', '', $inf['mod_zvanie'] + ); + $inf['mod_zvanie'] = str_replace( + '</b>', '', $inf['mod_zvanie'] + ); + $inf['mod_zvanie'] = str_replace( + '<u>', '', $inf['mod_zvanie'] + ); + $inf['mod_zvanie'] = str_replace( + '</u>', '', $inf['mod_zvanie'] + ); + $inf['mod_zvanie'] = str_replace( + '<i>', '', $inf['mod_zvanie'] + ); + $inf['mod_zvanie'] = str_replace( + '</i>', '', $inf['mod_zvanie'] + ); + } + echo 'Клан: ' . $pc['name'] . ' ' . $inf['mod_zvanie'] . '
    '; + } + } - $ico[3].='
    '; - } - + if ($inf['admin'] == 0 && (($inf['align'] > 1 && $inf['align'] < 2) || ($inf['align'] > 3 && $inf['align'] < 4))) { + echo 'Орден Модераторов
    '; + } + ?> + + ' . $u->city_name[$inf['city2']] . '
    '; + } ?> + День рождения персонажа:
    + time()) { ?> + Персонаж чист перед законом: до +
    + Администратор
    '; + } + if ($inf['redirect'] != '0' && ($u->info['admin'] > 0 || $u->info['id'] == $inf['id'])) { + echo 'Редирект: ' . htmlspecialchars($inf['redirect']) . '
    '; + } + if ($u->info['admin'] > 0) { + echo '
    Цена комплекта: ' . (0 + $st['prckr']) . ' кр.
    '; + echo 'Цена комплекта: ' . (0 + $st['preckr']) . ' eкр.
    '; + echo 'Уровень покупателя: ' . (0 + $st['pbe']) . '
    '; + } + ?> + ' . $pl['login'] . ' [' . $pl['level'] . ']'; + } else { + $twk .= '' . $pl['login'] . ' [' . $pl['level'] . ']'; + } + } + } + if ($twk != '') { + echo 'Другие образы: ' . $twk . '
    '; + } + ?> + 0) { + $names .= '                      '; + } + $names .= '\'' . $pl['login'] . '\' до ' . date( + 'd.m.Y H:i', $pl['time'] + ) . '
    '; + $i++; + } + if ($names != '') { + echo 'История имен: ' . $names . ''; + } + $algnt = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `users_align` WHERE `uid` = "' . $inf['id'] . '" AND (`delete` = 0 OR `delete` > "' . time( + ) . '") LIMIT 1' + ) + ); + if (isset($algnt['id'])) { + if ($algnt['align'] == 1) { + echo '
    Выбранная сторона: Свет'; + if ($algnt['delete'] > 0) { + echo ' (до ' . date('d.m.Y H:i', $algnt['delete']) . ')'; + } + echo '
    '; + } elseif ($algnt['align'] == 3) { + echo '
    Выбранная сторона: Тьма'; + if ($algnt['delete'] > 0) { + echo ' (до ' . date('d.m.Y H:i', $algnt['delete']) . ')'; + } + echo '
    '; + } elseif ($algnt['align'] == 7) { + echo '
    Выбранная сторона: Нейтрал'; + if ($algnt['delete'] > 0) { + echo ' (до ' . date('d.m.Y H:i', $algnt['delete']) . ')'; + } + echo '
    '; + } + } + if ($st['silver'] > 0) { + echo '
    '; + echo 'Благословление Ангелов: '; + echo '
    '; + } - function timeOut($ttm,$travm=false) - { - if($travm==false){ - $out = ''; - $time_still = $ttm; - $tmp = floor($time_still/2592000); - $id=0; - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." мес. ";} - $time_still = $time_still-$tmp*2592000; - } - $tmp = floor($time_still/604800); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." нед. ";} - $time_still = $time_still-$tmp*604800; - } - $tmp = floor($time_still/86400); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." дн. ";} - $time_still = $time_still-$tmp*86400; - } - $tmp = floor($time_still/3600); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." ч. ";} - $time_still = $time_still-$tmp*3600; - } - $tmp = floor($time_still/60); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." мин. ";} - } - if($out=='') - { - if($time_still<0) - { - $time_still = 0; - } - $out = $time_still.' сек.'; - } - } - return $out; - } - - if( $ico[1] != '' ) { - echo $ico[1]; - } - - echo ''; - if($inf['jail']>time()) - { - echo '
    Персонаж находится в заточении еще '.timeOut($inf['jail']-time()).' '; - } - if(isset($st['puti'])) - { - echo '
    Персонаж не может передвигаться еще '.timeOut($st['puti']-time()).' '; - } - if($inf['molch1']>time()) - { - echo '
    На персонажа наложено заклятие молчания. Будет молчать еще '.timeOut($inf['molch1']-time()).' '; - } - if($inf['molch2']>time()) - { - echo '
    На персонажа наложено заклятие молчания на форуме. Будет молчать еще '.timeOut($inf['molch2']-time()).' '; - } - if($inf['clan_delay']>time()) - { - echo '
    У персонажа запрет на вступление в кланы ещё: '.timeOut($inf['clan_delay']-time()).' '; - } - if($inf['info_delete'] > time() || $inf['info_delete'] == 1) - { - echo '
    На персонажа наложено заклятие обезличивания.'; - if( $inf['info_delete'] > 1 ) { - echo ' Будет обезличен еще '.timeOut($inf['info_delete']-time()).''; - } - } + if ($inf['win_t'] > 0) { + ?> +
    + Побед в турнирах: +
    + Поражений в турнирах:
    + + + info['align'] == 50) { + $bnk = ''; + $bmn1 = 0; + $bmn2 = 0; + $sp = mysql_query('SELECT * FROM `bank` WHERE `uid` = "' . $inf['id'] . '"'); + while ($pl = mysql_fetch_array($sp)) { + if ($pl['useNow'] > 0) { + $bnk .= '
    '; + } else { + $bnk .= '
    '; + } + $bnk .= '  • ' . $pl['id'] . ''; + $bnk .= '
    '; + } + if ($bnk != '') { + echo '
    Банковские счета:  ' . $bnk . '
    '; + } + echo '
    '; + } + ?> +
    +
    + + + У персонажа - "'.$pl['name'].'" еще '.$u->timeOut($pl['timeUse']-time()+$pl['timeAce']); - } - - //Персонаж ослаблен из-за смерти в бою, еще 4 мин. 24 сек. - if($inf['level']>=4) - { - $nn = 0; - while($nn Персонаж ослаблен из-за смерти в бою, еще '.timeOut($st['effects'][$nn]['timeUse']+$st['effects'][$nn]['timeAce']+$osl['actionTime']-time()).' '; - $nn = count($st['effects'])+1; - } - $nn++; - } - } - - echo ''; + $ico = []; - if( $ico[3] != '' ) { - echo '
    Достижения персонажа:
    '.$ico[3].'
    '; - } + if ($inf['marry'] != 0) { + $marry = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`login` FROM `users` WHERE `id` = "' . $inf['marry'] . '" LIMIT 1' + ) + ); + if (isset($marry['id'])) { + $mrtxt = ''; + if ($inf['sex'] == 0) { + $mrtxt = 'Женат на'; + } else { + $mrtxt = 'Замужем за'; + } + $ico[1] .= ''; + } + } - unset($ico); - - if( - ( - $inf['align']>=2 && - $inf['align'] < 3 && - ( - $inf['haos']>time() || - $inf['haos']==1 - ) - ) || - $inf['banned']>0 || - $inf['jail']>time()) - { - $to = ''; - if($inf['align']>=2 && $inf['align'] < 3 && ($inf['haos']>time() || $inf['haos']==1)) - { - $to = 'хаос'; - } - if($inf['banned']>0) - { - if($to='') - { - $to = 'блок'; - }else{ - $to = $to.'/блок'; - } - } - $fm = mysql_fetch_array(mysql_query('SELECT `id`,`hb`,`text` FROM `users_delo` WHERE `uid` = "'.$inf['id'].'" AND `hb`!=0 ORDER BY `id` DESC LIMIT 1')); - echo '
    '; - if(isset($fm['id'])) - { - $from = 'паладинов'; - if($fm['hb']==2) - { - $from = 'Ангелов'; - }elseif($fm['hb']==3) - { - $from = 'тарманов'; - } - echo 'Сообщение от модераторов:
    '; - echo ''.$fm['text'].'
    '; - } - if($inf['align']>=2 && $inf['align'] < 3 && ($inf['haos']>time() || $inf['haos']==1)) - { - if($inf['haos']==1) - { - echo 'Хаос бессрочно.'; - }else{ - echo 'Хаос еще '.timeOut($inf['haos']-time()).''; - } - } - echo '
    '; - } - - //подарки - if(($inf['info_delete']info['align']>1 && $u->info['align']<2 || $u->info['align']>3 && $u->info['align']<4 || $u->info['admin']>0 || $u->info['nadmin']>0)){ - $gs = array('','',''); $glim = 1000; $i = 0; - $ij1 = 1; - $sp = mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE (`im`.`type` = "38" OR `im`.`type` = "64" OR `iu`.`data` LIKE "%|giftsee=1%") AND `iu`.`uid` = "'.$inf['id'].'" AND `iu`.`gift` != "" AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" ORDER BY `iu`.`id` DESC LIMIT '.$glim); - while($pl = mysql_fetch_array($sp)) - { - if(stristr($pl['data'], 'gift_id')) { - $po = $u->lookStats($pl['data']); - $pl_gift = $po['gift_id']; - if( $pl_gift > 0 ) { - $pl_gift = mysql_fetch_array(mysql_query('SELECT `name`,`img`,`id` FROM `users_gifts` WHERE `id` = "'.mysql_real_escape_string($pl_gift).'" LIMIT 1')); - if( isset($pl_gift['id']) ) { - //Именной подарок - $pl['name'] = $pl_gift['name']; - $pl['img'] = $pl_gift['img']; - } - } - } - //подарки - if( $pl['gift'] == 1 ) { - $pl['gift2'] = 'Невидимка'; - }else{ - $pl['gift2'] = $pl['gift']; - } - $gs[0] .= ''; - $ij1++; - } - $ij2 = 1; - $sp = mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE (`im`.`type` = "63" OR `im`.`type` = "37" OR `iu`.`data` LIKE "%|giftsee=2%") AND `iu`.`uid` = "'.$inf['id'].'" AND `iu`.`gift` != "" AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" ORDER BY `iu`.`id` DESC LIMIT '.$glim); - while($pl = mysql_fetch_array($sp)) - { - //if($pl['type'] == 63 || $pl['type'] == 37) { - //открытки - if( $pl['gift'] == 1 ) { - $pl['gift2'] = 'Невидимка'; - }else{ - $pl['gift2'] = $pl['gift']; - } - $gs[1] .= ''; - //} - $ij2++; - } - $ij3 = 1; - $sp = mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `im`.`type` = 28 AND `iu`.`uid` = "'.$inf['id'].'" AND `iu`.`gift` != "" AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" ORDER BY `iu`.`id` DESC LIMIT '.$glim); - while($pl = mysql_fetch_array($sp)) - { - if($pl['type'] == 28) { - //Букеты - if( $pl['gift'] == 1 ) { - $pl['gift2'] = 'Невидимка'; - }else{ - $pl['gift2'] = $pl['gift']; - } - $gs[2] .= ''; - } - $ij3++; - } - - if($gs[0]!='' || $gs[1]!='' || $gs[2]!=''){ - if($gs[2] != '') { - $gs[2] = '
    Букеты:

    '.$gs[2].'
    '.$gs[2].'
    Подарки:

    '.$gs[0].'
    '.$gs[1].'
    '; - $ij4 = mysql_fetch_array(mysql_query('SELECT COUNT(`iu`.`id`) FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE (`im`.`type` = 28 OR `im`.`type` = 63 OR `im`.`type` = 38 OR `im`.`type` = 64 OR `im`.`type` = 37 OR `iu`.`data` LIKE "%|giftsee=1%" OR `iu`.`data` LIKE "%|giftsee=2%") AND `iu`.`uid` = "'.$inf['id'].'" AND `iu`.`gift` != "" AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" LIMIT 1')); - $ij4 = $ij4[0]; - if($ij1+$ij2+$ij3 < $ij4) { - if(!isset($_GET['maxgift'])){ - echo 'Нажмите сюда, чтобы увидеть все подарки...'; - }else{ - echo 'Нажмите сюда, чтобы скрыть подарки'; - } - } - } - - } - if( $inf['no_ip'] == 'trupojor' && $u->info['admin'] > 0 ) { - if( isset($_GET['emonster']) ) { - - $monster = mysql_fetch_array(mysql_query('SELECT * FROM `aaa_monsters` WHERE `uid` = "'.mysql_real_escape_string($inf['id']).'" LIMIT 1')); - - if(isset($_POST['bot_sroom'])) { - $monster['start_room'] = (int)$_POST['bot_sroom']; - - $monster['start_day'] = (int)$_POST['bot_sday']; - $monster['start_dd'] = (int)$_POST['bot_sdd']; - $monster['start_mm'] = (int)$_POST['bot_smm']; - $monster['start_hh'] = (int)$_POST['bot_shh']; - $monster['start_min'] = (int)$_POST['bot_smin']; - - $monster['back_day'] = (int)$_POST['bot_bday']; - $monster['back_dd'] = (int)$_POST['bot_bdd']; - $monster['back_mm'] = (int)$_POST['bot_bmm']; - $monster['back_hh'] = (int)$_POST['bot_bhh']; - $monster['back_min'] = (int)$_POST['bot_bmin']; - - $monster['start_text'] = $_POST['bot_stext']; - $monster['back_text'] = $_POST['bot_btext']; - $monster['win_text'] = $_POST['bot_wintext']; - $monster['lose_text'] = $_POST['bot_losetext']; - $monster['nich_text'] = $_POST['bot_nichtext']; - - $monster['win_back'] = $_POST['bot_winback']; - $monster['time_restart'] = $_POST['bot_trs']; - - $monster['win_itm'] = $_POST['bot_winitm']; - $monster['win_money1'] = $_POST['bot_winmoney1']; - $monster['win_money2'] = $_POST['bot_winmoney2']; - $monster['win_exp'] = $_POST['bot_winexp']; - $monster['win_eff'] = $_POST['bot_wineff']; - $monster['win_ico'] = $_POST['bot_winico']; - - $monster['lose_itm'] = $_POST['bot_loseitm']; - $monster['lose_money1'] = $_POST['bot_losemoney1']; - $monster['lose_money2'] = $_POST['bot_losemoney2']; - $monster['lose_exp'] = $_POST['bot_loseexp']; - $monster['lose_eff'] = $_POST['bot_loseeff']; - $monster['lose_ico'] = $_POST['bot_loseico']; - - if( !isset($monster['id']) ) { - mysql_query('INSERT INTO `aaa_monsters` ( + $sp = mysql_query( + 'SELECT * FROM `users_ico` WHERE `uid` = "' . $inf['id'] . '" AND (`endTime` = 0 OR `endTime` > ' . time( + ) . ') LIMIT 100' + ); + while ($pl = mysql_fetch_array($sp)) { + $stlico = ''; + + if ($pl['type'] == 2) { + $stlico .= 'width:37px;height:37xp;padding:2px;'; + } + + if ($stlico != '') { + $stlico = 'style="' . $stlico . '"'; + } + $icon = ' '; + + if ($pl['href'] != '#' && $pl['href'] != '') { + $ico[$pl['type']] .= '' . $icon . ''; + } else { + $ico[$pl['type']] .= $icon; + } + } + unset($icon); + + + if ($inf['vip'] == 1) { + $ico[1] .= ' '; + } + + //сильвер + if ($st['silver'] > 0) { + $ico[1] .= ' '; + } + + $irep = mysql_fetch_array( + mysql_query('SELECT * FROM `rep` WHERE `id` = "' . $inf['id'] . '" LIMIT 1') + ); + if (isset($irep['id'])) { + //Водосток + if ($irep['repdreamscity'] > 9999) { + $ico[1] .= ''; + } elseif ($irep['repdreamscity'] > 4999) { + $ico[1] .= ''; + } elseif ($irep['repdreamscity'] > 999) { + $ico[1] .= ''; + } + + //Храм знаний + if ($irep['rep1'] > 9999) { + $ico[1] .= ''; + } elseif ($irep['rep1'] > 999) { + $ico[1] .= ''; + } elseif ($irep['rep1'] > 99) { + $ico[1] .= ''; + } + + //Алтарь крови + if ($irep['rep2'] > 99) { + $ico[1] .= ''; + } + + //Излом хаоса + if ($irep['repizlom'] > 24999) { + $ico[1] .= ''; + } elseif ($irep['repizlom'] > 9999) { + $ico[1] .= ''; + } elseif ($irep['repizlom'] > 999) { + $ico[1] .= ''; + } elseif ($irep['repizlom'] > 99) { + $ico[1] .= ''; + } + + + //capitalcity + if ($irep['repcapitalcity'] > 24999) { + $ico[1] .= ''; + } elseif ($irep['repcapitalcity'] > 9999) { + $ico[1] .= ''; + } + + //angelscity + if ($irep['repangelscity'] > 24999) { + $ico[1] .= ''; + } elseif ($irep['repangelscity'] > 9999) { + $ico[1] .= ''; + } + + //demonscity + if ($irep['repdemonscity'] > 24999) { + $ico[1] .= ''; + } elseif ($irep['repdemonscity'] > 9999) { + $ico[1] .= ''; + } + + //devilscity + if ($irep['repdevilscity'] > 24999) { + $ico[1] .= ''; + } elseif ($irep['repdevilscity'] > 9999) { + $ico[1] .= ''; + } + + //suncity + if ($irep['repsuncity'] > 24999) { + $ico[1] .= ''; + } elseif ($irep['repsuncity'] > 9999) { + $ico[1] .= ''; + } + //Гора легиона (сука как она меня заебала) by R + if ($irep['repabandonedplain'] > 9999) { + $ico[1] .= ''; + } elseif ($irep['repabandonedplain'] > 999) { + $ico[1] .= ''; + } + + //emeraldscity + if ($irep['repemeraldscity'] > 24999) { + $ico[1] .= ''; + } elseif ($irep['repemeraldscity'] > 9999) { + $ico[1] .= ''; + } + + //sandcity + if ($irep['repsandcity'] > 24999) { + $ico[1] .= ''; + } elseif ($irep['repsandcity'] > 9999) { + $ico[1] .= ''; + } + + //mooncity + if ($irep['repmooncity'] > 24999) { + $ico[1] .= ''; + } elseif ($irep['repmooncity'] > 9999) { + $ico[1] .= ''; + } + if ($inf['referals'] >= 3000) // значок за рефов + { + $ico[1] .= ''; + } elseif ($inf['referals'] > 1500) { + $ico[1] .= ''; + } elseif ($inf['referals'] > 600) { + $ico[1] .= ''; + } + } + + if ($inf['banned'] == 0) { + $ai = new \Insallah\Achievements($u); + $ico[3] .= '
    '; + + foreach ($ai->getTypes() as $type) { + $tmp_1 = $ai->getInfo($inf['id']); + if (!empty($tmp_1[$type])) { + $ico[3] .= '
    ' . $tmp_1['name' . $type] . '
    Ранг ' . $tmp_1['klas' . $type] . ' :
    ' . $tmp_1['name' . $type] . '
    '; + } + } + + $ico[3] .= '
    '; + } + + + function timeOut($ttm, $travm = false) + { + if ($travm == false) { + $out = ''; + $time_still = $ttm; + $tmp = floor($time_still / 2592000); + $id = 0; + if ($tmp > 0) { + $id++; + if ($id < 3) { + $out .= $tmp . " мес. "; + } + $time_still = $time_still - $tmp * 2592000; + } + $tmp = floor($time_still / 604800); + if ($tmp > 0) { + $id++; + if ($id < 3) { + $out .= $tmp . " нед. "; + } + $time_still = $time_still - $tmp * 604800; + } + $tmp = floor($time_still / 86400); + if ($tmp > 0) { + $id++; + if ($id < 3) { + $out .= $tmp . " дн. "; + } + $time_still = $time_still - $tmp * 86400; + } + $tmp = floor($time_still / 3600); + if ($tmp > 0) { + $id++; + if ($id < 3) { + $out .= $tmp . " ч. "; + } + $time_still = $time_still - $tmp * 3600; + } + $tmp = floor($time_still / 60); + if ($tmp > 0) { + $id++; + if ($id < 3) { + $out .= $tmp . " мин. "; + } + } + if ($out == '') { + if ($time_still < 0) { + $time_still = 0; + } + $out = $time_still . ' сек.'; + } + } + return $out; + } + + if ($ico[1] != '') { + echo $ico[1]; + } + + echo ''; + if ($inf['jail'] > time()) { + echo '
    Персонаж находится в заточении еще ' . timeOut( + $inf['jail'] - time() + ) . ' '; + } + if (isset($st['puti'])) { + echo '
    Персонаж не может передвигаться еще ' . timeOut( + $st['puti'] - time() + ) . ' '; + } + if ($inf['molch1'] > time()) { + echo '
    На персонажа наложено заклятие молчания. Будет молчать еще ' . timeOut( + $inf['molch1'] - time() + ) . ' '; + } + if ($inf['molch2'] > time()) { + echo '
    На персонажа наложено заклятие молчания на форуме. Будет молчать еще ' . timeOut( + $inf['molch2'] - time() + ) . ' '; + } + if ($inf['clan_delay'] > time()) { + echo '
    У персонажа запрет на вступление в кланы ещё: ' . timeOut( + $inf['clan_delay'] - time() + ) . ' '; + } + if ($inf['info_delete'] > time() || $inf['info_delete'] == 1) { + echo '
    На персонажа наложено заклятие обезличивания.'; + if ($inf['info_delete'] > 1) { + echo ' Будет обезличен еще ' . timeOut($inf['info_delete'] - time()) . ''; + } + } + + //Если у персонажа есть травмы, физ. и маг. травмы + $sp = mysql_query( + 'SELECT * FROM `eff_users` WHERE `uid` = "' . $inf['id'] . '" AND (`id_eff` = "4" OR `id_eff` = "6") AND `delete` = "0" ORDER BY `id_eff` ASC LIMIT 6' + ); + while ($pl = mysql_fetch_array($sp)) { + echo '
    У персонажа - "' . $pl['name'] . '" еще ' . $u->timeOut( + $pl['timeUse'] - time() + $pl['timeAce'] + ); + } + + //Персонаж ослаблен из-за смерти в бою, еще 4 мин. 24 сек. + if ($inf['level'] >= 4) { + $nn = 0; + while ($nn < count($st['effects'])) { + if ($st['effects'][$nn]['id_eff'] == 5) { + + $osl = mysql_fetch_array( + mysql_query( + 'SELECT `id2`,`actionTime` FROM `eff_main` WHERE `id2` = "5" LIMIT 1' + ) + ); + echo '
    Персонаж ослаблен из-за смерти в бою, еще ' . timeOut( + $st['effects'][$nn]['timeUse'] + $st['effects'][$nn]['timeAce'] + $osl['actionTime'] - time( + ) + ) . ' '; + $nn = count($st['effects']) + 1; + } + $nn++; + } + } + + echo '
    '; + + if ($ico[3] != '') { + echo '
    Достижения персонажа:
    ' . $ico[3] . '
    '; + } + + unset($ico); + + if ( + ( + $inf['align'] >= 2 && + $inf['align'] < 3 && + ( + $inf['haos'] > time() || + $inf['haos'] == 1 + ) + ) || + $inf['banned'] > 0 || + $inf['jail'] > time()) { + $to = ''; + if ($inf['align'] >= 2 && $inf['align'] < 3 && ($inf['haos'] > time( + ) || $inf['haos'] == 1)) { + $to = 'хаос'; + } + if ($inf['banned'] > 0) { + if ($to = '') { + $to = 'блок'; + } else { + $to = $to . '/блок'; + } + } + $fm = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`hb`,`text` FROM `users_delo` WHERE `uid` = "' . $inf['id'] . '" AND `hb`!=0 ORDER BY `id` DESC LIMIT 1' + ) + ); + echo '
    '; + if (isset($fm['id'])) { + $from = 'паладинов'; + if ($fm['hb'] == 2) { + $from = 'Ангелов'; + } elseif ($fm['hb'] == 3) { + $from = 'тарманов'; + } + echo 'Сообщение от модераторов:
    '; + echo '' . $fm['text'] . '
    '; + } + if ($inf['align'] >= 2 && $inf['align'] < 3 && ($inf['haos'] > time( + ) || $inf['haos'] == 1)) { + if ($inf['haos'] == 1) { + echo 'Хаос бессрочно.'; + } else { + echo 'Хаос еще ' . timeOut($inf['haos'] - time()) . ''; + } + } + echo '
    '; + } + + //подарки + if (($inf['info_delete'] < time( + ) && $inf['info_delete'] != 1) || ($u->info['align'] > 1 && $u->info['align'] < 2 || $u->info['align'] > 3 && $u->info['align'] < 4 || $u->info['admin'] > 0 || $u->info['nadmin'] > 0)) { + $gs = ['', '', '']; + $glim = 1000; + $i = 0; + $ij1 = 1; + $sp = mysql_query( + 'SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE (`im`.`type` = "38" OR `im`.`type` = "64" OR `iu`.`data` LIKE "%|giftsee=1%") AND `iu`.`uid` = "' . $inf['id'] . '" AND `iu`.`gift` != "" AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" ORDER BY `iu`.`id` DESC LIMIT ' . $glim + ); + while ($pl = mysql_fetch_array($sp)) { + if (stristr($pl['data'], 'gift_id')) { + $po = $u->lookStats($pl['data']); + $pl_gift = $po['gift_id']; + if ($pl_gift > 0) { + $pl_gift = mysql_fetch_array( + mysql_query( + 'SELECT `name`,`img`,`id` FROM `users_gifts` WHERE `id` = "' . mysql_real_escape_string( + $pl_gift + ) . '" LIMIT 1' + ) + ); + if (isset($pl_gift['id'])) { + //Именной подарок + $pl['name'] = $pl_gift['name']; + $pl['img'] = $pl_gift['img']; + } + } + } + //подарки + if ($pl['gift'] == 1) { + $pl['gift2'] = 'Невидимка'; + } else { + $pl['gift2'] = $pl['gift']; + } + $gs[0] .= ''; + $ij1++; + } + $ij2 = 1; + $sp = mysql_query( + 'SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE (`im`.`type` = "63" OR `im`.`type` = "37" OR `iu`.`data` LIKE "%|giftsee=2%") AND `iu`.`uid` = "' . $inf['id'] . '" AND `iu`.`gift` != "" AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" ORDER BY `iu`.`id` DESC LIMIT ' . $glim + ); + while ($pl = mysql_fetch_array($sp)) { + //if($pl['type'] == 63 || $pl['type'] == 37) { + //открытки + if ($pl['gift'] == 1) { + $pl['gift2'] = 'Невидимка'; + } else { + $pl['gift2'] = $pl['gift']; + } + $gs[1] .= ''; + //} + $ij2++; + } + $ij3 = 1; + $sp = mysql_query( + 'SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `im`.`type` = 28 AND `iu`.`uid` = "' . $inf['id'] . '" AND `iu`.`gift` != "" AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" ORDER BY `iu`.`id` DESC LIMIT ' . $glim + ); + while ($pl = mysql_fetch_array($sp)) { + if ($pl['type'] == 28) { + //Букеты + if ($pl['gift'] == 1) { + $pl['gift2'] = 'Невидимка'; + } else { + $pl['gift2'] = $pl['gift']; + } + $gs[2] .= ''; + } + $ij3++; + } + + if ($gs[0] != '' || $gs[1] != '' || $gs[2] != '') { + if ($gs[2] != '') { + $gs[2] = '
    Букеты:

    ' . $gs[2] . '
    ' . $gs[2] . '
    Подарки:

    ' . $gs[0] . '
    ' . $gs[1] . '
    '; + $ij4 = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(`iu`.`id`) FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE (`im`.`type` = 28 OR `im`.`type` = 63 OR `im`.`type` = 38 OR `im`.`type` = 64 OR `im`.`type` = 37 OR `iu`.`data` LIKE "%|giftsee=1%" OR `iu`.`data` LIKE "%|giftsee=2%") AND `iu`.`uid` = "' . $inf['id'] . '" AND `iu`.`gift` != "" AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" LIMIT 1' + ) + ); + $ij4 = $ij4[0]; + if ($ij1 + $ij2 + $ij3 < $ij4) { + if (!isset($_GET['maxgift'])) { + echo 'Нажмите сюда, чтобы увидеть все подарки...'; + } else { + echo 'Нажмите сюда, чтобы скрыть подарки'; + } + } + } + + } + if ($inf['no_ip'] == 'trupojor' && $u->info['admin'] > 0) { + if (isset($_GET['emonster'])) { + + $monster = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `aaa_monsters` WHERE `uid` = "' . mysql_real_escape_string( + $inf['id'] + ) . '" LIMIT 1' + ) + ); + + if (isset($_POST['bot_sroom'])) { + $monster['start_room'] = (int)$_POST['bot_sroom']; + + $monster['start_day'] = (int)$_POST['bot_sday']; + $monster['start_dd'] = (int)$_POST['bot_sdd']; + $monster['start_mm'] = (int)$_POST['bot_smm']; + $monster['start_hh'] = (int)$_POST['bot_shh']; + $monster['start_min'] = (int)$_POST['bot_smin']; + + $monster['back_day'] = (int)$_POST['bot_bday']; + $monster['back_dd'] = (int)$_POST['bot_bdd']; + $monster['back_mm'] = (int)$_POST['bot_bmm']; + $monster['back_hh'] = (int)$_POST['bot_bhh']; + $monster['back_min'] = (int)$_POST['bot_bmin']; + + $monster['start_text'] = $_POST['bot_stext']; + $monster['back_text'] = $_POST['bot_btext']; + $monster['win_text'] = $_POST['bot_wintext']; + $monster['lose_text'] = $_POST['bot_losetext']; + $monster['nich_text'] = $_POST['bot_nichtext']; + + $monster['win_back'] = $_POST['bot_winback']; + $monster['time_restart'] = $_POST['bot_trs']; + + $monster['win_itm'] = $_POST['bot_winitm']; + $monster['win_money1'] = $_POST['bot_winmoney1']; + $monster['win_money2'] = $_POST['bot_winmoney2']; + $monster['win_exp'] = $_POST['bot_winexp']; + $monster['win_eff'] = $_POST['bot_wineff']; + $monster['win_ico'] = $_POST['bot_winico']; + + $monster['lose_itm'] = $_POST['bot_loseitm']; + $monster['lose_money1'] = $_POST['bot_losemoney1']; + $monster['lose_money2'] = $_POST['bot_losemoney2']; + $monster['lose_exp'] = $_POST['bot_loseexp']; + $monster['lose_eff'] = $_POST['bot_loseeff']; + $monster['lose_ico'] = $_POST['bot_loseico']; + + if (!isset($monster['id'])) { + mysql_query( + 'INSERT INTO `aaa_monsters` ( `uid`,`start_room`,`start_day`,`back_day`,`start_dd`,`start_mm`,`start_hh`,`start_min`,`back_min`,`back_dd`,`back_mm`,`back_hh`, `start_text`,`back_text`,`win_text`,`lose_text`,`win_money1`,`win_money2`,`lose_money`,`lose_money2`,`win_exp`,`lose_exp`,`win_itm`, `lose_itm`,`win_eff`,`lose_eff`,`win_ico`,`lose_ico`,`win_back`,`time_restart`,`nich_text` ) VALUES ( - "'.mysql_real_escape_string($inf['id']).'", - "'.mysql_real_escape_string($monster['start_room']).'", - "'.mysql_real_escape_string($monster['start_day']).'", - "'.mysql_real_escape_string($monster['back_day']).'", - "'.mysql_real_escape_string($monster['start_dd']).'", - "'.mysql_real_escape_string($monster['start_mm']).'", - "'.mysql_real_escape_string($monster['start_hh']).'", - "'.mysql_real_escape_string($monster['start_min']).'", - "'.mysql_real_escape_string($monster['back_min']).'", - "'.mysql_real_escape_string($monster['back_dd']).'", - "'.mysql_real_escape_string($monster['back_mm']).'", - "'.mysql_real_escape_string($monster['back_hh']).'", - "'.mysql_real_escape_string($monster['start_text']).'", - "'.mysql_real_escape_string($monster['back_text']).'", - "'.mysql_real_escape_string($monster['win_text']).'", - "'.mysql_real_escape_string($monster['lose_text']).'", - "'.mysql_real_escape_string($monster['win_money1']).'", - "'.mysql_real_escape_string($monster['win_money2']).'", - "'.mysql_real_escape_string($monster['lose_money']).'", - "'.mysql_real_escape_string($monster['lose_money2']).'", - "'.mysql_real_escape_string($monster['win_exp']).'", - "'.mysql_real_escape_string($monster['lose_exp']).'", - "'.mysql_real_escape_string($monster['win_itm']).'", - "'.mysql_real_escape_string($monster['lose_itm']).'", - "'.mysql_real_escape_string($monster['win_eff']).'", - "'.mysql_real_escape_string($monster['lose_eff']).'", - "'.mysql_real_escape_string($monster['win_ico']).'", - "'.mysql_real_escape_string($monster['lose_ico']).'", - "'.mysql_real_escape_string($monster['win_back']).'", - "'.mysql_real_escape_string($monster['time_restart']).'", - "'.mysql_real_escape_string($monster['nich_text']).'" - ) '); - }else{ - mysql_query('UPDATE `aaa_monsters` SET - `uid` = "'.mysql_real_escape_string($inf['id']).'", - `start_room` = "'.mysql_real_escape_string($monster['start_room']).'", - `start_day` = "'.mysql_real_escape_string($monster['start_day']).'", - `back_day` = "'.mysql_real_escape_string($monster['back_day']).'", - `start_dd` = "'.mysql_real_escape_string($monster['start_dd']).'", - `start_mm` = "'.mysql_real_escape_string($monster['start_mm']).'", - `start_hh` = "'.mysql_real_escape_string($monster['start_hh']).'", - `start_min` = "'.mysql_real_escape_string($monster['start_min']).'", - `back_min` = "'.mysql_real_escape_string($monster['back_min']).'", - `back_dd` = "'.mysql_real_escape_string($monster['back_dd']).'", - `back_mm` = "'.mysql_real_escape_string($monster['back_mm']).'", - `back_hh` = "'.mysql_real_escape_string($monster['back_hh']).'", - `start_text` = "'.mysql_real_escape_string($monster['start_text']).'", - `back_text` = "'.mysql_real_escape_string($monster['back_text']).'", - `win_text` = "'.mysql_real_escape_string($monster['win_text']).'", - `lose_text` = "'.mysql_real_escape_string($monster['lose_text']).'", - `win_money1` = "'.mysql_real_escape_string($monster['win_money1']).'", - `win_money2` = "'.mysql_real_escape_string($monster['win_money2']).'", - `lose_money` = "'.mysql_real_escape_string($monster['lose_money']).'", - `lose_money2` = "'.mysql_real_escape_string($monster['lose_money2']).'", - `win_exp` = "'.mysql_real_escape_string($monster['win_exp']).'", - `lose_exp` = "'.mysql_real_escape_string($monster['lose_exp']).'", - `win_itm` = "'.mysql_real_escape_string($monster['win_itm']).'", - `lose_itm` = "'.mysql_real_escape_string($monster['lose_itm']).'", - `win_eff` = "'.mysql_real_escape_string($monster['win_eff']).'", - `lose_eff` = "'.mysql_real_escape_string($monster['lose_eff']).'", - `win_ico` = "'.mysql_real_escape_string($monster['win_ico']).'", - `lose_ico` = "'.mysql_real_escape_string($monster['lose_ico']).'", - `win_back` = "'.mysql_real_escape_string($monster['win_back']).'", - `time_restart` = "'.mysql_real_escape_string($monster['time_restart']).'", - `nich_text` = "'.mysql_real_escape_string($monster['nich_text']).'" - WHERE `id` = "'.mysql_real_escape_string($monster['id']).'" LIMIT 1'); - } - - echo 'Новые данные были успешно сохранены!'; - } - - ?> - Параметры монстра:
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Место появления (id комнаты): - -   -
    Время ожидания после поражения бота: мин.
    Исчезнет после своей победы: -
    Появляется, - ДН - - Д - - - М - - Ч - - Мин - -
    Исчезает,    ДН - - Д - - - М - - Ч - - Мин -
    Текст появления (Логин бота {b}, Логины игроков {u}):
    Текст исчезновения:
    Текст победы игрока:
    Текст поражения игрока:
    Текст ничьей:
    Награда (победа игрока):
    Кр.:
    Екр.:
    Опыт (За 100% НР монстра):
    Предметы (id@kolvo@data, ...):
    Эффект:
    Подвиги:
    Награда (поражение игрока):
    Кр.:
    Екр.:
    Опыт:
    Предметы:
    Эффект:
    Подвиги:
    -
    - -
    -

    -
    -
    -
    Скрыть
    -
    - -
    -
    Настройка монстра
    -
    -info['align']>=1.1 && $u->info['align']<=1.99 && $inf['admin']<1) || ($u->info['align']>=3.05 && $u->info['align']<=3.99 && $inf['admin']<1) || $u->info['admin']>0 || $u->info['nadmin']>0)) - { - $mults = ''; - $bIP = array(); - - $spl = mysql_query('SELECT * FROM `mults` WHERE (`uid` = "'.$inf['id'].'" OR `uid2` = "'.$inf['id'].'") AND `uid`!="0" AND `uid2`!="0"'); - while($pls = mysql_fetch_array($spl)) - { - $usr = $pls['uid']; - if($usr==$inf['id']) - { - $usr = $pls['uid2']; - } - if( $pls['id'] == 2495806 ) { - - }elseif(!isset($bIP[$usr]) && $usr!=$inf['id']) - { - $si = mysql_fetch_array(mysql_query('SELECT `id`,`admin`,`online` FROM `users` WHERE `id` = "'.mysql_real_escape_string($usr).'" AND `login` != "delete" LIMIT 1')); - if(isset($si['id'])) - { - if($si['admin']==0) { - if( $si['online'] > time() - 520 ) { - $mults .= ''.$u->microLogin($si['id'],1).', '; - }else{ - $mults .= $u->microLogin($si['id'],1).', '; - } - } - } - } - } - - if($nopal) { - //echo '

    Вы не можете просматривать информацию старшего по званию...

    '; - } elseif ($u->info['admin']==0 && (($u->info['admin']==0 && (floor($u->info['align'])==1 && $inf['align']>=3.01 && $inf['align']<=3.99) || (floor($u->info['align'])==3 && $inf['align']>=1.1 && $inf['align']<=1.99)) || ($u->info['admin']==0 && $inf['admin']>0))) - { - echo '

    Персонаж носит вражескую склонность...

    '; - }else{ - echo '

    За игроком замечены следующие темные делишки:
    '; - if(!isset($_GET['mod_inf'])) { - echo 'Показать личное дело'; - }else{ - //Личное дело персонажа - $log = mysql_query('SELECT * FROM `users_delo` WHERE `uid`="'.$inf['id'].'" AND `type`="0" ORDER by `id` DESC LIMIT 21'); - $i = 0; - while ($log_w = mysql_fetch_array($log)) - { - echo ''.date("d.m.Y H:i:s",$log_w['time']).' '.$log_w['text'].'
    '; - $i++; - } - echo 'Скрыть личное дело'; - } - echo '

    '; - //Информация для паладинов\тарманов\ангелов - if(($u->info['align']>=1.4 && $u->info['align']<=1.99 && $u->info['align']!=1.6 && $u->info['align']!=1.75 && $inf['admin']<1) || ($u->info['align']>=3.05 && $u->info['align']<=3.99 && $u->info['align']!=3.06 && $inf['admin']<1) || $u->info['admin']>0) - { - if ((int)$u->info['align']==1) - { - $rang = 'Паладинов'; - } elseif ((int)$u->info['align']==3) - { - $rang = 'Тарманов'; - } else - { - $rang = 'Ангелов'; - } + "' . mysql_real_escape_string($inf['id']) . '", + "' . mysql_real_escape_string($monster['start_room']) . '", + "' . mysql_real_escape_string($monster['start_day']) . '", + "' . mysql_real_escape_string($monster['back_day']) . '", + "' . mysql_real_escape_string($monster['start_dd']) . '", + "' . mysql_real_escape_string($monster['start_mm']) . '", + "' . mysql_real_escape_string($monster['start_hh']) . '", + "' . mysql_real_escape_string($monster['start_min']) . '", + "' . mysql_real_escape_string($monster['back_min']) . '", + "' . mysql_real_escape_string($monster['back_dd']) . '", + "' . mysql_real_escape_string($monster['back_mm']) . '", + "' . mysql_real_escape_string($monster['back_hh']) . '", + "' . mysql_real_escape_string($monster['start_text']) . '", + "' . mysql_real_escape_string($monster['back_text']) . '", + "' . mysql_real_escape_string($monster['win_text']) . '", + "' . mysql_real_escape_string($monster['lose_text']) . '", + "' . mysql_real_escape_string($monster['win_money1']) . '", + "' . mysql_real_escape_string($monster['win_money2']) . '", + "' . mysql_real_escape_string($monster['lose_money']) . '", + "' . mysql_real_escape_string($monster['lose_money2']) . '", + "' . mysql_real_escape_string($monster['win_exp']) . '", + "' . mysql_real_escape_string($monster['lose_exp']) . '", + "' . mysql_real_escape_string($monster['win_itm']) . '", + "' . mysql_real_escape_string($monster['lose_itm']) . '", + "' . mysql_real_escape_string($monster['win_eff']) . '", + "' . mysql_real_escape_string($monster['lose_eff']) . '", + "' . mysql_real_escape_string($monster['win_ico']) . '", + "' . mysql_real_escape_string($monster['lose_ico']) . '", + "' . mysql_real_escape_string($monster['win_back']) . '", + "' . mysql_real_escape_string($monster['time_restart']) . '", + "' . mysql_real_escape_string($monster['nich_text']) . '" + ) ' + ); + } else { + mysql_query( + 'UPDATE `aaa_monsters` SET + `uid` = "' . mysql_real_escape_string($inf['id']) . '", + `start_room` = "' . mysql_real_escape_string($monster['start_room']) . '", + `start_day` = "' . mysql_real_escape_string($monster['start_day']) . '", + `back_day` = "' . mysql_real_escape_string($monster['back_day']) . '", + `start_dd` = "' . mysql_real_escape_string($monster['start_dd']) . '", + `start_mm` = "' . mysql_real_escape_string($monster['start_mm']) . '", + `start_hh` = "' . mysql_real_escape_string($monster['start_hh']) . '", + `start_min` = "' . mysql_real_escape_string($monster['start_min']) . '", + `back_min` = "' . mysql_real_escape_string($monster['back_min']) . '", + `back_dd` = "' . mysql_real_escape_string($monster['back_dd']) . '", + `back_mm` = "' . mysql_real_escape_string($monster['back_mm']) . '", + `back_hh` = "' . mysql_real_escape_string($monster['back_hh']) . '", + `start_text` = "' . mysql_real_escape_string($monster['start_text']) . '", + `back_text` = "' . mysql_real_escape_string($monster['back_text']) . '", + `win_text` = "' . mysql_real_escape_string($monster['win_text']) . '", + `lose_text` = "' . mysql_real_escape_string($monster['lose_text']) . '", + `win_money1` = "' . mysql_real_escape_string($monster['win_money1']) . '", + `win_money2` = "' . mysql_real_escape_string($monster['win_money2']) . '", + `lose_money` = "' . mysql_real_escape_string($monster['lose_money']) . '", + `lose_money2` = "' . mysql_real_escape_string($monster['lose_money2']) . '", + `win_exp` = "' . mysql_real_escape_string($monster['win_exp']) . '", + `lose_exp` = "' . mysql_real_escape_string($monster['lose_exp']) . '", + `win_itm` = "' . mysql_real_escape_string($monster['win_itm']) . '", + `lose_itm` = "' . mysql_real_escape_string($monster['lose_itm']) . '", + `win_eff` = "' . mysql_real_escape_string($monster['win_eff']) . '", + `lose_eff` = "' . mysql_real_escape_string($monster['lose_eff']) . '", + `win_ico` = "' . mysql_real_escape_string($monster['win_ico']) . '", + `lose_ico` = "' . mysql_real_escape_string($monster['lose_ico']) . '", + `win_back` = "' . mysql_real_escape_string($monster['win_back']) . '", + `time_restart` = "' . mysql_real_escape_string($monster['time_restart']) . '", + `nich_text` = "' . mysql_real_escape_string($monster['nich_text']) . '" + WHERE `id` = "' . mysql_real_escape_string($monster['id']) . '" LIMIT 1' + ); + } - if($u->info['admin'] == 1) { - echo 'Комната: '.$inf['room'].'
    '; - } - if((int)$inf['host_reg'] >= 1){ - $inf['ref'] = $u->microLogin((int)$inf['host_reg'],1); - }else{ - $inf['ref'] = '--'; - } - if(!isset($inf['ipReg'])){ $inf['ipReg'] = '--'; } - echo ' + echo 'Новые данные были успешно сохранены!'; + } + + ?> + Параметры монстра:
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Место появления (id комнаты): + +   +
    Время ожидания после поражения бота: мин. +
    Исчезнет после своей победы: +
    +
    +
    Появляется, + ДН + + Д + + + М + + Ч + + Мин + +
    Исчезает,    ДН + + Д + + + М + + Ч + + Мин +
    +
    +
    Текст появления (Логин бота {b}, Логины игроков {u}):
    Текст исчезновения:
    Текст победы игрока:
    Текст поражения игрока:
    Текст ничьей:
    +
    + Награда (победа игрока):
    Кр.:
    Екр.:
    Опыт (За 100% НР монстра):
    Предметы (id@kolvo@data, ...):
    Эффект:
    Подвиги:
    +
    + Награда (поражение игрока):
    Кр.:
    Екр.:
    Опыт:
    Предметы:
    Эффект:
    Подвиги:
    +
    + +
    +

    +
    +
    +
    Скрыть
    +
    + +
    +
    Настройка монстра
    +
    + info['align'] >= 1.1 && $u->info['align'] <= 1.99 && $inf['admin'] < 1) || ($u->info['align'] >= 3.05 && $u->info['align'] <= 3.99 && $inf['admin'] < 1) || $u->info['admin'] > 0 || $u->info['nadmin'] > 0)) { + $mults = ''; + $bIP = []; + + $spl = mysql_query( + 'SELECT * FROM `mults` WHERE (`uid` = "' . $inf['id'] . '" OR `uid2` = "' . $inf['id'] . '") AND `uid`!="0" AND `uid2`!="0"' + ); + while ($pls = mysql_fetch_array($spl)) { + $usr = $pls['uid']; + if ($usr == $inf['id']) { + $usr = $pls['uid2']; + } + if ($pls['id'] == 2495806) { + + } elseif (!isset($bIP[$usr]) && $usr != $inf['id']) { + $si = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`admin`,`online` FROM `users` WHERE `id` = "' . mysql_real_escape_string( + $usr + ) . '" AND `login` != "delete" LIMIT 1' + ) + ); + if (isset($si['id'])) { + if ($si['admin'] == 0) { + if ($si['online'] > time() - 520) { + $mults .= '' . $u->microLogin( + $si['id'], 1 + ) . ', '; + } else { + $mults .= $u->microLogin($si['id'], 1) . ', '; + } + } + } + } + } + + if ($nopal) { + //echo '

    Вы не можете просматривать информацию старшего по званию...

    '; + } elseif ($u->info['admin'] == 0 && (($u->info['admin'] == 0 && (floor( + $u->info['align'] + ) == 1 && $inf['align'] >= 3.01 && $inf['align'] <= 3.99) || (floor( + $u->info['align'] + ) == 3 && $inf['align'] >= 1.1 && $inf['align'] <= 1.99)) || ($u->info['admin'] == 0 && $inf['admin'] > 0))) { + echo '

    Персонаж носит вражескую склонность...

    '; + } else { + echo '

    За игроком замечены следующие темные делишки:
    '; + if (!isset($_GET['mod_inf'])) { + echo 'Показать личное дело'; + } else { + //Личное дело персонажа + $log = mysql_query( + 'SELECT * FROM `users_delo` WHERE `uid`="' . $inf['id'] . '" AND `type`="0" ORDER by `id` DESC LIMIT 21' + ); + $i = 0; + while ($log_w = mysql_fetch_array($log)) { + echo '' . date( + "d.m.Y H:i:s", $log_w['time'] + ) . ' ' . $log_w['text'] . '
    '; + $i++; + } + echo 'Скрыть личное дело'; + } + echo '

    '; + //Информация для паладинов\тарманов\ангелов + if (($u->info['align'] >= 1.4 && $u->info['align'] <= 1.99 && $u->info['align'] != 1.6 && $u->info['align'] != 1.75 && $inf['admin'] < 1) || ($u->info['align'] >= 3.05 && $u->info['align'] <= 3.99 && $u->info['align'] != 3.06 && $inf['admin'] < 1) || $u->info['admin'] > 0) { + if ((int)$u->info['align'] == 1) { + $rang = 'Паладинов'; + } elseif ((int)$u->info['align'] == 3) { + $rang = 'Тарманов'; + } else { + $rang = 'Ангелов'; + } + + if ($u->info['admin'] == 1) { + echo 'Комната: ' . $inf['room'] . '
    '; + } + if ((int)$inf['host_reg'] >= 1) { + $inf['ref'] = $u->microLogin((int)$inf['host_reg'], 1); + } else { + $inf['ref'] = '--'; + } + if (!isset($inf['ipReg'])) { + $inf['ipReg'] = '--'; + } + echo '
    - Только для '.$rang.'
    - День рождения: '.$inf['bithday'].'
    '; - - if($inf['vip']==1) { - echo 'VIP персонаж
    '; - } - - if($u->info['admin'] > 0) { - if( $inf['activ'] == 0 ) { - echo ''; - } - - $mls = mysql_fetch_array(mysql_query('SELECT * FROM `users_rbk` WHERE `email` = "'.mysql_real_escape_string($inf['mail']).'" LIMIT 1')); - if(isset($mls['name'])) { - echo 'E-mail: '.$inf['mail'].' (РАССЫЛКА)'; - }else{ - echo 'E-mail: '.$inf['mail'].''; - } - if( $inf['activ'] == 0 ) { - echo '   &   '.$inf['send'].'
    '; - echo '
    '; - }else{ - echo '
    '; - } - }else{ - if( $inf['activ'] == 0 ) { - echo 'Персонаж активирован'; - }else{ - echo 'Персонаж не активирован'; - } - echo '
    '; - } - if( $inf['no_ip'] != 0 ) { - $inf['ipReg'] = $inf['no_ip']; - $inf['ip'] = $inf['no_ip']; - } - echo 'Персонажа пригласили: '.$inf['ref'].'
    - Последний раз заходил в клуб: '.date('d.m.Y H:i',$inf['online']).'
    - '.$pr['login'].'IP при регистрации: '.$inf['ipReg'].'
    '; - if($inf['no_ip'] == '' || $u->info['admin']>0) { - echo 'IP последние: '.$inf['ip'].''; - $auth = mysql_query('SELECT * FROM `logs_auth` WHERE `uid`="'.$inf['id'].'" AND `type`="1" ORDER by `id` DESC LIMIT 10'); - $country = ''; - while ($auth_w = mysql_fetch_array($auth)) { - echo '
    '.$auth_w['ip'].' ('.date('d.m.Y H:i',$auth_w['time']).')'; - } - }else{ - echo 'IP последние: '.$inf['no_ip'].''; - } - - -function user_browser($agent) { - preg_match("/(MSIE|Opera|Firefox|Chrome|Version|Opera Mini|Netscape|Konqueror|SeaMonkey|Camino|Minefield|Iceweasel|K-Meleon|Maxthon)(?:\/| )([0-9.]+)/", $agent, $browser_info); // регулярное выражение, которое позволяет отпределить 90% браузеров - list(,$browser,$version) = $browser_info; // получаем данные из массива в переменную - if (preg_match("/Opera ([0-9.]+)/i", $agent, $opera)) return 'Opera '.$opera[1]; // определение _очень_старых_ версий Оперы (до 8.50), при желании можно убрать - if ($browser == 'MSIE') { // если браузер определён как IE - preg_match("/(Maxthon|Avant Browser|MyIE2)/i", $agent, $ie); // проверяем, не разработка ли это на основе IE - if ($ie) return $ie[1].' based on IE '.$version; // если да, то возвращаем сообщение об этом - return 'IE '.$version; // иначе просто возвращаем IE и номер версии - } - if ($browser == 'Firefox') { // если браузер определён как Firefox - preg_match("/(Flock|Navigator|Epiphany)\/([0-9.]+)/", $agent, $ff); // проверяем, не разработка ли это на основе Firefox - if ($ff) return $ff[1].' '.$ff[2]; // если да, то выводим номер и версию - } - if ($browser == 'Opera' && $version == '9.80') return 'Opera '.substr($agent,-5); // если браузер определён как Opera 9.80, берём версию Оперы из конца строки - if ($browser == 'Version') return 'Safari '.$version; // определяем Сафари - if (!$browser && strpos($agent, 'Gecko')) return 'Browser based on Gecko'; // для неопознанных браузеров проверяем, если они на движке Gecko, и возращаем сообщение об этом - return $browser.' '.$version; // для всех остальных возвращаем браузер и версию -} - - - echo' + Только для ' . $rang . '
    + День рождения: ' . $inf['bithday'] . '
    '; + + if ($inf['vip'] == 1) { + echo 'VIP персонаж
    '; + } + + if ($u->info['admin'] > 0) { + if ($inf['activ'] == 0) { + echo ''; + } + + $mls = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `users_rbk` WHERE `email` = "' . mysql_real_escape_string( + $inf['mail'] + ) . '" LIMIT 1' + ) + ); + if (isset($mls['name'])) { + echo 'E-mail: ' . $inf['mail'] . ' (РАССЫЛКА)'; + } else { + echo 'E-mail: ' . $inf['mail'] . ''; + } + if ($inf['activ'] == 0) { + echo '   &   ' . $inf['send'] . '
    '; + echo '
    '; + } else { + echo '
    '; + } + } else { + if ($inf['activ'] == 0) { + echo 'Персонаж активирован'; + } else { + echo 'Персонаж не активирован'; + } + echo '
    '; + } + if ($inf['no_ip'] != 0) { + $inf['ipReg'] = $inf['no_ip']; + $inf['ip'] = $inf['no_ip']; + } + echo 'Персонажа пригласили: ' . $inf['ref'] . '
    + Последний раз заходил в клуб: ' . date('d.m.Y H:i', $inf['online']) . '
    + ' . $pr['login'] . 'IP при регистрации: ' . $inf['ipReg'] . '
    '; + if ($inf['no_ip'] == '' || $u->info['admin'] > 0) { + echo 'IP последние: ' . $inf['ip'] . ''; + $auth = mysql_query( + 'SELECT * FROM `logs_auth` WHERE `uid`="' . $inf['id'] . '" AND `type`="1" ORDER by `id` DESC LIMIT 10' + ); + $country = ''; + while ($auth_w = mysql_fetch_array($auth)) { + echo '
    ' . $auth_w['ip'] . ' (' . date( + 'd.m.Y H:i', $auth_w['time'] + ) . ')'; + } + } else { + echo 'IP последние: ' . $inf['no_ip'] . ''; + } + + + function user_browser($agent) + { + preg_match( + "/(MSIE|Opera|Firefox|Chrome|Version|Opera Mini|Netscape|Konqueror|SeaMonkey|Camino|Minefield|Iceweasel|K-Meleon|Maxthon)(?:\/| )([0-9.]+)/", + $agent, $browser_info + ); // регулярное выражение, которое позволяет отпределить 90% браузеров + list(, $browser, $version) = $browser_info; // получаем данные из массива в переменную + if (preg_match("/Opera ([0-9.]+)/i", $agent, $opera)) { + return 'Opera ' . $opera[1]; + } // определение _очень_старых_ версий Оперы (до 8.50), при желании можно убрать + if ($browser == 'MSIE') { // если браузер определён как IE + preg_match( + "/(Maxthon|Avant Browser|MyIE2)/i", $agent, $ie + ); // проверяем, не разработка ли это на основе IE + if ($ie) { + return $ie[1] . ' based on IE ' . $version; + } // если да, то возвращаем сообщение об этом + return 'IE ' . $version; // иначе просто возвращаем IE и номер версии + } + if ($browser == 'Firefox') { // если браузер определён как Firefox + preg_match( + "/(Flock|Navigator|Epiphany)\/([0-9.]+)/", $agent, $ff + ); // проверяем, не разработка ли это на основе Firefox + if ($ff) { + return $ff[1] . ' ' . $ff[2]; + } // если да, то выводим номер и версию + } + if ($browser == 'Opera' && $version == '9.80') { + return 'Opera ' . substr($agent, -5); + } // если браузер определён как Opera 9.80, берём версию Оперы из конца строки + if ($browser == 'Version') { + return 'Safari ' . $version; + } // определяем Сафари + if (!$browser && strpos($agent, 'Gecko')) { + return 'Browser based on Gecko'; + } // для неопознанных браузеров проверяем, если они на движке Gecko, и возращаем сообщение об этом + return $browser . ' ' . $version; // для всех остальных возвращаем браузер и версию + } + + + echo '
    - Браузер: '.user_browser($inf['dateEnter']).'
    + Браузер: ' . user_browser($inf['dateEnter']) . '
    '; - - if($inf['no_ip'] == '' || $u->info['admin']>0) { - if($mults!='' && $inf['admin']==0){ - $mults = trim($mults,', '); - echo 'Другие ники этого бойца: '.$mults.'
    '; - } - } - - $referalos = ''; - $rfs = 0; - - $sp = mysql_query('SELECT `id`,`login`,`ip`,`ipreg`,`timereg`,`online` FROM `users` WHERE `host_reg` = "'.$inf['id'].'" AND `activ` = "0" ORDER BY `timereg` DESC'); - while( $pl = mysql_fetch_array($sp) ) { - $referalos .= '
    Дата рег.: '.date('d.m.Y H:i',$pl['timereg']).' / Был тут: '.date('d.m.Y H:i',$pl['online']).'   '.$u->microLogin($pl['id'],1).' ( '.$pl['ip'].' , '.$pl['ipreg'].' )'; - $rfs++; - } - - if( $referalos == '' ) { - $referalos = 'Отсутствуют'; - } - echo '
    Рефералы бойца:'.$referalos.'
    '; - if($u->info['admin']>0) - { - echo 'Доп. возможности: сбросить характеристики
    '; - $on1 = mysql_fetch_array(mysql_query('SELECT `time_all`,`time_today` FROM `online` WHERE `uid` = "'.$inf['id'].'" LIMIT 1')); - echo 'Время в онлайне (всего): '.timeOut($on1['time_all']).'
    Время в онлайне (сегодня): '.timeOut($on1['time_today']).'
    '; - } - if($inf['molch3'] time()) - { - echo 'Запретить персонажу отправлять сообщения с молчанкой
    '; - } - - echo' - Опыт: '.$inf['exp'].'
    - Число неиспользованных UP-ов: '.$inf['ability'].'
    - Кредитов: '.$inf['money'].'
    ЕвроКредитов: '.$inf['money2'].'
    Зубов: '.$u->zuby($inf['money4']).''; - $bnk = ''; $bmn1 = 0; $bmn2 = 0; - $sp = mysql_query('SELECT * FROM `bank` WHERE `uid` = "'.$inf['id'].'"'); - while($pl = mysql_fetch_array($sp)) { - if($pl['useNow'] > 0) { - $bnk .= '
    '; - }else{ - $bnk .= '
    '; - } - $bnk .= '  • '.$pl['id'].''; - $bnk .= ''.$pl['money1'].' кр.'; - $bnk .= ''.$pl['money2'].' екр.'; - if($u->info['admin'] > 0) { - $bnk .= 'Пароль: '.htmlspecialchars($pl['pass'],NULL,'cp1251').''; - } - if($pl['moneyBuy'] > 0) { - $ds = 'Персонаж покупал еврокредиты  Сумма : '.$pl['moneyBuy'].'
    '; - } - $bmn1 += $pl['money1']; - $bmn2 += $pl['money2']; - $bnk .= '
    '; - } - $pk = mysql_fetch_array(mysql_query('SELECT SUM(`ekr`) FROM `pay_operation` WHERE `uid` = "'.$inf['id'].'" AND `good` > 0 LIMIT 1')); - echo '
    Персонаж покупал еврокредиты  Сумма : '.$pk[0].' ЕКР
    '; - if($bnk != '') { - echo '
    Банковские счета:'.$bnk.'   Деньги (Всего в банке):   '.$bmn1.' кр.     '.$bmn2.' екр.
    '.$ds; - } - if($u->info['admin']>0 && $inf['admin']>0) { - echo '
    admin: '.$inf['admin'].''; - } - if($inf['active']!=''){ - echo '
    Внимание!Если персонаж не получает письма с активацией отправте ему письмо вручную.'; - echo '
    '; - echo "

    "; - } - echo '
    '; - } - } - } - ?> -
    -
    - - - - -
    -
    -
    - - = 0) { ?> - - 1 && $inf['align']<2) { ?> - /' target='_blank'>
    - /' target='_blank'>Орден Света - =3.01 && $inf['align']<=3.99) { ?> - /'>
    - /' target='_blank'>Армада - =2 && $inf['align']<3) { ?> - /'>
    - /' target='_blank'>Цитадель Хаоса - -
    - Новости
    - -
    - - + + if ($inf['no_ip'] == '' || $u->info['admin'] > 0) { + if ($mults != '' && $inf['admin'] == 0) { + $mults = trim($mults, ', '); + echo 'Другие ники этого бойца: ' . $mults . '
    '; + } + } + + $referalos = ''; + $rfs = 0; + + $sp = mysql_query( + 'SELECT `id`,`login`,`ip`,`ipreg`,`timereg`,`online` FROM `users` WHERE `host_reg` = "' . $inf['id'] . '" AND `activ` = "0" ORDER BY `timereg` DESC' + ); + while ($pl = mysql_fetch_array($sp)) { + $referalos .= '
    Дата рег.: ' . date( + 'd.m.Y H:i', $pl['timereg'] + ) . ' / Был тут: ' . date( + 'd.m.Y H:i', $pl['online'] + ) . '   ' . $u->microLogin( + $pl['id'], 1 + ) . ' ( ' . $pl['ip'] . ' , ' . $pl['ipreg'] . ' )'; + $rfs++; + } + + if ($referalos == '') { + $referalos = 'Отсутствуют'; + } + echo '
    Рефералы бойца:' . $referalos . '
    '; + if ($u->info['admin'] > 0) { + echo 'Доп. возможности: сбросить характеристики
    '; + $on1 = mysql_fetch_array( + mysql_query( + 'SELECT `time_all`,`time_today` FROM `online` WHERE `uid` = "' . $inf['id'] . '" LIMIT 1' + ) + ); + echo 'Время в онлайне (всего): ' . timeOut( + $on1['time_all'] + ) . '
    Время в онлайне (сегодня): ' . timeOut( + $on1['time_today'] + ) . '
    '; + } + if ($inf['molch3'] < time() && $inf['molch1'] > time()) { + echo 'Запретить персонажу отправлять сообщения с молчанкой
    '; + } + + echo ' + Опыт: ' . $inf['exp'] . '
    + Число неиспользованных UP-ов: ' . $inf['ability'] . '
    + Кредитов: ' . $inf['money'] . '
    ЕвроКредитов: ' . $inf['money2'] . '
    Зубов: ' . $u->zuby( + $inf['money4'] + ) . ''; + $bnk = ''; + $bmn1 = 0; + $bmn2 = 0; + $sp = mysql_query('SELECT * FROM `bank` WHERE `uid` = "' . $inf['id'] . '"'); + while ($pl = mysql_fetch_array($sp)) { + if ($pl['useNow'] > 0) { + $bnk .= '
    '; + } else { + $bnk .= '
    '; + } + $bnk .= '  • ' . $pl['id'] . ''; + $bnk .= '' . $pl['money1'] . ' кр.'; + $bnk .= '' . $pl['money2'] . ' екр.'; + if ($u->info['admin'] > 0) { + $bnk .= 'Пароль: ' . htmlspecialchars( + $pl['pass'], null, 'cp1251' + ) . ''; + } + if ($pl['moneyBuy'] > 0) { + $ds = 'Персонаж покупал еврокредиты  Сумма : ' . $pl['moneyBuy'] . '
    '; + } + $bmn1 += $pl['money1']; + $bmn2 += $pl['money2']; + $bnk .= '
    '; + } + $pk = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`ekr`) FROM `pay_operation` WHERE `uid` = "' . $inf['id'] . '" AND `good` > 0 LIMIT 1' + ) + ); + echo '
    Персонаж покупал еврокредиты  Сумма : ' . $pk[0] . ' ЕКР
    '; + if ($bnk != '') { + echo '
    Банковские счета:' . $bnk . '   Деньги (Всего в банке):   ' . $bmn1 . ' кр.     ' . $bmn2 . ' екр.
    ' . $ds; + } + if ($u->info['admin'] > 0 && $inf['admin'] > 0) { + echo '
    admin: ' . $inf['admin'] . ''; + } + if ($inf['active'] != '') { + echo '
    Внимание!Если персонаж не получает письма с активацией отправте ему письмо вручную.'; + echo '
    '; + echo "

    "; + } + echo '
    '; + } + } + } + ?> + +
    + + + + +
    +
    +
    + + = 0) { ?> + + 1 && $inf['align'] < 2) { ?> + /' target='_blank'> +
    + /' target='_blank'>Орден + Света + = 3.01 && $inf['align'] <= 3.99) { ?> + /'> +
    + /' target='_blank'>Армада + = 2 && $inf['align'] < 3) { ?> + /'> +
    + /' target='_blank'>Цитадель + Хаоса + + +
    + Новости
    + +
    +
    + + + + -info['align'] > 1 && $u->info['align'] < 2 ) { - $moder = 1; +if ($u->info['align'] > 1 && $u->info['align'] < 2) { + $moder = 1; } -if( $u->info['align'] > 3 && $u->info['align'] < 4 ) { - $moder = 2; +if ($u->info['align'] > 3 && $u->info['align'] < 4) { + $moder = 2; } -if($inf['level'] < 8 && $inf['admin'] == 0 && $u->info['admin'] == 0 && $moder == 0) { -?> -
    -

    Обезличен до достижения 8 уровня

    -info['admin'] == 0 && $moder == 0) { + ?> +
    +

    Обезличен до достижения 8 уровня

    + +

    Персонаж обезличен 1) { + echo 'до ' . date('d.m.Y H:i', $inf['info_delete']) . '.'; + } else { + echo '.'; + } ?>

    + info['align'] > 1 && $u->info['align'] < 2 || $u->info['align'] > 3 && $u->info['align'] < 4 || $u->info['admin'] > 0) { + echo '
    '; + } +} +if ($inf['info_delete'] == 0 || (($u->info['align'] > 1 && $u->info['align'] < 2) || ($u->info['align'] > 3 && $u->info['align'] < 4) || $u->info['admin'] > 0)) { ?> -

    Персонаж обезличен 1){ echo 'до '.date('d.m.Y H:i',$inf['info_delete']).'.'; }else{ echo '.'; } ?>

    -info['align']>1 && $u->info['align']<2 || $u->info['align']>3 && $u->info['align']<4 || $u->info['admin']>0) - { - echo '
    '; - } -} -if($inf['info_delete']==0 || (($u->info['align']>1 && $u->info['align']<2) || ($u->info['align']>3 && $u->info['align']<4) || $u->info['admin']>0)) -{ -?> -
    -
    -

    Анкетные данные

    - -Имя:
    -Пол: -
    - -Город:
    -0 && $inf['icq_hide']==0){ echo 'ICQ: '.$inf['icq'].'
    '; } ?> -Skype:
    '.$inf['skype'].'
    '; } ?> -4) { -$url = ((substr($inf['homepage'],0,4)=='https'?"":"https://").$inf['homepage']); -?> -Домашняя страница:
    - -Девиз:
    - -Увлечения / хобби:
    -',$inf['hobby']); - } - if($inf['info_delete']!=0) - { - echo '
    '; - } -} -echo '

    '.$c['counters_noFrm'].'
    '; -?> +
    +
    +

    Анкетные данные

    + + Имя:
    + Пол: +
    + + Город:
    + 0 && $inf['icq_hide'] == 0) { + echo 'ICQ: ' . $inf['icq'] . '
    '; + } ?> + Skype: ' . $inf['skype'] . '
    '; + } ?> + 4) { + $url = ((substr($inf['homepage'], 0, 4) == 'https' ? "" : "https://") . $inf['homepage']); + ?> + Домашняя страница: +
    + + Девиз:
    + + Увлечения / хобби:
    + ', $inf['hobby']); + } + if ($inf['info_delete'] != 0) { + echo '
    '; + } + } + echo '

    ' . $c['counters_noFrm'] . '
    '; + ?>

    -
    -

    +
    +

    diff --git a/item_edit_data.php b/item_edit_data.php index d33dd05d..6dad0f69 100644 --- a/item_edit_data.php +++ b/item_edit_data.php @@ -1,4 +1,5 @@ info['admin'] > 0 ) { - - $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main_data` WHERE `items_id` = "'.mysql_real_escape_string($_GET['edit_item_data']).'" LIMIT 1')); - if(isset($itm['id'])) { - if(isset($_POST['newdata'])) { - mysql_query('UPDATE `items_main_data` SET `data` = "'.mysql_real_escape_string($_POST['newdata']).'" WHERE `id` = "'.mysql_real_escape_string($itm['id']).'" LIMIT 1'); - die(''); - } - echo '
    Номер предмета: '.$itm['items_id'].'

    '; - } -}else{ - header('location: https://new-combats.com/'); +if (!$u->info['admin']) { + header('location: https://new-combats.com/'); + exit(); +} +$itm = mysql_fetch_array( + mysql_query('SELECT * FROM `items_main_data` WHERE `items_id` = ' . (int)$_GET['edit_item_data']) +); +if (isset($itm['id'])) { + if (isset($_POST['newdata'])) { + mysql_query( + 'UPDATE `items_main_data` SET `data` = "' . mysql_real_escape_string( + $_POST['newdata'] + ) . '" WHERE `id` = "' . mysql_real_escape_string($itm['id']) . '" LIMIT 1' + ); + die(''); + } + echo '
    Номер предмета: ' . $itm['items_id'] . '

    '; } - -?> \ No newline at end of file diff --git a/items_editor.php b/items_editor.php index 9a33f346..70e9dadb 100644 --- a/items_editor.php +++ b/items_editor.php @@ -1,4 +1,5 @@ info['admin'] == 0 ) { - header('location: /index.php'); +if (!$u->info['admin']) { + header('location: /index.php'); } -if( isset($_POST['it_name']) ) { - //Добавляем предмет - $error = ''; - -/* -Array -( -[it_name] => Кастет -Когти медведя- -[it_img] => old/kastet2.gif -[it_type] => 18 -[it_massa] => 2 -[it_price1] => 3 -[it_price2] => -[it_iznos] => 20 -[it_slot] => 3 -[it_inRazdel] => 1 -[it_info] => -[it_group_max] => -[it_geni] => 1 -[it_srok] => -[it_max_text] => -[it_ndata] => -[it_data_value] => |sv_minAtack=2|sv_maxAtack=4 -[button] => Отправить предмет в базу -) -*/ - - if( (int)$_POST['it_group_max'] > 0 ) { - $_POST['it_group'] = 1; - } - - $ins = mysql_query('INSERT INTO `items_main` +if (isset($_POST['it_name'])) { + //Добавляем предмет + $error = ''; + + /* + Array + ( + [it_name] => Кастет -Когти медведя- + [it_img] => old/kastet2.gif + [it_type] => 18 + [it_massa] => 2 + [it_price1] => 3 + [it_price2] => + [it_iznos] => 20 + [it_slot] => 3 + [it_inRazdel] => 1 + [it_info] => + [it_group_max] => + [it_geni] => 1 + [it_srok] => + [it_max_text] => + [it_ndata] => + [it_data_value] => |sv_minAtack=2|sv_maxAtack=4 + [button] => Отправить предмет в базу + ) + */ + + if ((int)$_POST['it_group_max'] > 0) { + $_POST['it_group'] = 1; + } + + $ins = mysql_query( + 'INSERT INTO `items_main` (`name`,`img`,`type`,`massa`,`price1`,`price2`,`iznosMAXi`,`inslot`, `inRazdel`,`info`,`group`,`group_max`,`geni`,`srok`,`max_text`,`2h`,`2too`) VALUES ( - "'.mysql_real_escape_string($_POST['it_name']).'", - "'.mysql_real_escape_string($_POST['it_img']).'", - "'.mysql_real_escape_string($_POST['it_type']).'", - "'.mysql_real_escape_string($_POST['it_massa']).'", - "'.mysql_real_escape_string($_POST['it_price1']).'", - "'.mysql_real_escape_string($_POST['it_price2']).'", - "'.mysql_real_escape_string($_POST['it_iznos']).'", - "'.mysql_real_escape_string($_POST['it_slot']).'", - "'.mysql_real_escape_string($_POST['it_inRazdel']).'", - "'.mysql_real_escape_string($_POST['it_info']).'", - "'.mysql_real_escape_string($_POST['it_group']).'", - "'.mysql_real_escape_string($_POST['it_group_max']).'", - "'.mysql_real_escape_string($_POST['it_geni']).'", - "'.mysql_real_escape_string($_POST['it_srok']).'", - "'.mysql_real_escape_string($_POST['it_max_text']).'", - "'.mysql_real_escape_string($_POST['it_2h']).'", - "'.mysql_real_escape_string($_POST['it_2too']).'" - )'); - - if( $ins ) { - $iid = mysql_insert_id(); - $ins = mysql_query('INSERT INTO `items_main_data` (`items_id`,`data`) VALUES ( - "'.$iid.'","'.mysql_real_escape_string($_POST['it_data_value']).'" - )'); - if( !$ins ) { - $error = 'Неудалось добавить Er::(2)!'; - }else{ - $error = $iid.' Предмет добавлен!'; - } - }else{ - $error = 'Неудалось добавить Er::(1)!'; - } - - - if( $error == '' ) { - $error = 'Что-то не так...'; - } - die(''.$error.''); + "' . mysql_real_escape_string($_POST['it_name']) . '", + "' . mysql_real_escape_string($_POST['it_img']) . '", + "' . mysql_real_escape_string($_POST['it_type']) . '", + "' . mysql_real_escape_string($_POST['it_massa']) . '", + "' . mysql_real_escape_string($_POST['it_price1']) . '", + "' . mysql_real_escape_string($_POST['it_price2']) . '", + "' . mysql_real_escape_string($_POST['it_iznos']) . '", + "' . mysql_real_escape_string($_POST['it_slot']) . '", + "' . mysql_real_escape_string($_POST['it_inRazdel']) . '", + "' . mysql_real_escape_string($_POST['it_info']) . '", + "' . mysql_real_escape_string($_POST['it_group']) . '", + "' . mysql_real_escape_string($_POST['it_group_max']) . '", + "' . mysql_real_escape_string($_POST['it_geni']) . '", + "' . mysql_real_escape_string($_POST['it_srok']) . '", + "' . mysql_real_escape_string($_POST['it_max_text']) . '", + "' . mysql_real_escape_string($_POST['it_2h']) . '", + "' . mysql_real_escape_string($_POST['it_2too']) . '" + )' + ); + + if ($ins) { + $iid = mysql_insert_id(); + $ins = mysql_query( + 'INSERT INTO `items_main_data` (`items_id`,`data`) VALUES ( + "' . $iid . '","' . mysql_real_escape_string($_POST['it_data_value']) . '" + )' + ); + if (!$ins) { + $error = 'Неудалось добавить Er::(2)!'; + } else { + $error = $iid . ' Предмет добавлен!'; + } + } else { + $error = 'Неудалось добавить Er::(1)!'; + } + + + if ($error == '') { + $error = 'Что-то не так...'; + } + die('' . $error . ''); } - //Редактор предметов +//Редактор предметов ?> - - -Редактор предметов - - + - + //Требует + if (this.it_data_pr.tr != undefined) { + var i = 0; + while (i <= this.it_data_pr.tr) { + var npar = $('#par_tr_' + i).val(); + if (npar != undefined && $('#val_tr_' + i).val() != '') { + html += '|tr_' + npar + '=' + $('#val_tr_' + i).val(); + } + i++; + } + } + //Действует на + if (this.it_data_pr.add != undefined) { + var i = 0; + while (i <= this.it_data_pr.add) { + var npar = $('#par_add_' + i).val(); + if (npar != undefined && $('#val_add_' + i).val() != '') { + html += '|add_' + npar + '=' + $('#val_add_' + i).val(); + } + i++; + } + } + //Свойства + if (this.it_data_pr.sv != undefined) { + var i = 0; + while (i <= this.it_data_pr.sv) { + var npar = $('#par_sv_' + i).val(); + if (npar != undefined && $('#val_sv_' + i).val() != '') { + html += '|sv_' + npar + '=' + $('#val_sv_' + i).val(); + } + i++; + } + } + //Остальное + if (this.it_data_pr.all != undefined) { + var i = 0; + while (i <= this.it_data_pr.all) { + var npar = $('#par_all_' + i).val(); + if (npar != undefined && $('#val_all_' + i).val() != '') { + html += '|' + npar + '=' + $('#val_all_' + i).val(); + } + i++; + } + } + + $('#it_data_value').val(html); + }, + it_data_pr: {}, + newpar: function (id) { + var html = ''; + if (this.it_data_pr[id] == undefined) { + this.it_data_pr[id] = 0; + } else { + this.it_data_pr[id]++; + } + + html += ''; + + html = '
        x     ' + html + '
    '; + $('#it_data_' + id).html($('#it_data_' + id).html() + html); + }, + delpar: function (id, num) { + $('#new_par_' + id + '_' + num + '').remove(); + }, + compl: function () { + var html = '', html_l = '', html_r = ''; + + //Собираем данные + this.data = { + 'name': $('#it_name').val(), + 'img': $('#it_img').val() + + }; + + //Левая часть + html_l += ''; + + //Правая часть + html_r = '' + this.data.name + ''; + + //Собираем + html = '' + + '' + + '' + + '' + + '
    ' + + '' + + '' + + '' + + '' + + '' + + '
    ' + html_l + '' + html_r + '
    ' + + '
    '; + + $('#etitm').html(html); + } + }; + + - - - - -
    - - - - + - - -
      - +
    + + + + + + +
      + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Название
    Изображение
    Тип +
    Масса
    Судьба
    Артефакт
    Двуручное
    В обе руки
    Цена (кр)
    Цена (екр)
    Долговечность
    Слот
    Раздел инвентаря
    Информация
    Группировка
    Поколение
    Срок годности (сек.)
    Макс. текст (символов)
    Доп.дата
    ITEMS_MAIN_DATA:
    + +
      
    +
    +
    +
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Название
    Изображение
    Тип -
    Масса
    Судьба
    Артефакт
    Двуручное
    В обе руки
    Цена (кр)
    Цена (екр)
    Долговечность
    Слот
    Раздел инвентаря
    Информация
    Группировка
    Поколение
    Срок годности (сек.)
    Макс. текст (символов)
    Доп.дата
    ITEMS_MAIN_DATA:
    - -
      
    -
    +
    + +
    + + Требования: [+] +
    + +
    + + Действует на: [+] +
    + +
    + + Свойства: [+] +
    + +
    + + Остальное: [+] +
    + +
    + +
    +   +
    - -
    - -
    - - Требования: [+] -
    - -
    - - Действует на: [+] -
    - -
    - - Свойства: [+] -
    - -
    - - Остальное: [+] -
    - -
    - -
    -   -
    -
    + + \ No newline at end of file diff --git a/jx/battle/refresh.php b/jx/battle/refresh.php index 81680b2d..bec13767 100644 --- a/jx/battle/refresh.php +++ b/jx/battle/refresh.php @@ -12,8 +12,7 @@ if (!isset($CRON_CORE)) { if (isset($_GET['cron_core'])) { function getIPblock() { - if (isset($_SERVER['HTTP_X_REAL_IP'])) return $_SERVER['HTTP_X_REAL_IP']; - return $_SERVER['REMOTE_ADDR']; + return isset($_SERVER['HTTP_X_REAL_IP']) ? $_SERVER['HTTP_X_REAL_IP'] : $_SERVER['REMOTE_ADDR']; } } @@ -24,17 +23,27 @@ if (!isset($CRON_CORE)) { function e($t) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #' . date('d.m.Y') . ' %' . date('H:i:s') . ' (Критическая ошибка): ' . mysql_real_escape_string($t) . '","capitalcity","INFINITY","6","1","-1")'); + mysql_query( + 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #' . date('d.m.Y') . ' %' . date( + 'H:i:s' + ) . ' (Критическая ошибка): ' . mysql_real_escape_string($t) . '","capitalcity","INFINITY","6","1","-1")' + ); } if (isset($_GET['cron_core'])) { $id = [ 'id' => $_GET['uid'], - 'pass' => $_GET['pass'] + 'pass' => $_GET['pass'], ]; if (md5($id['id'] . '_brfCOreW@!_' . $id['pass']) == $_GET['cron_core']) { - $uzr = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`pass` FROM `users` WHERE `id` = "' . mysql_real_escape_string($id['id']) . '" AND `pass` = "' . mysql_real_escape_string($id['pass']) . '" LIMIT 1')); + $uzr = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`login`,`pass` FROM `users` WHERE `id` = "' . mysql_real_escape_string( + $id['id'] + ) . '" AND `pass` = "' . mysql_real_escape_string($id['pass']) . '" LIMIT 1' + ) + ); if (isset($uzr['id'])) { $CRON_CORE = true; $_COOKIE['login'] = $uzr['login']; @@ -54,247 +63,249 @@ if (!isset($CRON_CORE)) { header('Content-Type: text/html; charset=windows-1251'); } -if ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' || isset($CRON_CORE)) { - if (isset($_POST['atack'], $_POST['block']) || (isset($_POST['id']) && $_POST['id'] == 'reflesh') || isset($_POST['usepriem']) || isset($_POST['useitem'])) { - if (isset($_POST['useitemon'])) { - $_POST['useitemon'] = iconv('UTF-8', 'windows-1251', $_POST['useitemon']); - } +if (($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' || isset($CRON_CORE)) && (isset($_POST['atack'], $_POST['block']) || (isset($_POST['id']) && $_POST['id'] == 'reflesh') || isset($_POST['usepriem']) || isset($_POST['useitem']))) { + if (isset($_POST['useitemon'])) { + $_POST['useitemon'] = iconv('UTF-8', 'windows-1251', $_POST['useitemon']); + } - unset($tm); - $js = ''; - require_once('../../_incl_data/class/__user.php'); - require_once('../../_incl_data/class/__magic.php'); - require_once('../../_incl_data/class/_cron_.php'); - require_once('../../_incl_data/class/__quest.php'); - - if ($u->info['battle'] == 0) { - $btl_last = mysql_fetch_array(mysql_query('SELECT `id`,`battle` FROM `battle_users` WHERE `uid` = "' . $u->info['id'] . '" AND `finish` = "0" LIMIT 1')); - if (isset($btl_last['id']) && $u->info['battle'] == 0) { - echo ''; - $u->info['battle'] = $btl_last['id']; - $u->info['battle_lsto'] = true; - mysql_query('UPDATE `stats` SET `battle_text` = "",`last_b`="0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - mysql_query('UPDATE `battle_users` SET `finish` = 1 WHERE `uid` = "' . $u->info['id'] . '"'); - echo ''; - } - } - - if (!isset($CRON_CORE)) { - if (!isset($u->info['id']) || ($u->info['joinIP'] == 1 && $u->info['ip'] != $_SERVER['HTTP_X_REAL_IP'])) { - die($c['exit']); - } - } - - function json_fix_cyr($json_str) - { - return $json_str; - } - - $u->stats = $u->getStats($u->info['id'], 0); - - if (!isset($CRON_CORE)) { - if ($u->info['online'] < time() - 30) { - mysql_query("UPDATE `users` SET `online`='" . time() . "',`timeMain`='" . time() . "' WHERE `id`='" . $u->info['id'] . "' LIMIT 1"); - } - } - - require_once('../../_incl_data/class/__battle.php'); - require_once('log_text.php'); - $btl->is = $u->is; - $btl->items = $u->items; - $btl->info = $btl->battleInfo($u->info['battle']); - if (!isset($btl->info['id'])) { - if ($u->info['battle'] == -1) { - //завершаем поединок - $upd = mysql_query('UPDATE `users` SET `battle` = "0",`online` = "' . time() . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - if (!$upd) { - if (!isset($CRON_CORE)) { - die('Ошибка завершения поединка.'); - } - } else { - echo ''; - } - } else { - mysql_query('UPDATE `users` SET `battle` = "0" WHERE `battle` = "' . $u->info['battle'] . '" LIMIT 100'); - if (!isset($CRON_CORE)) { - die(''); - } - } - } else { - //получаем массив с игроками в бою - $btl->teamsTake(); - - if (isset($_POST['useitem']) && $btl->testUsersLive() == true) { - $magic->useItems((int)$_POST['useitem']); - if ($u->error != '') { - echo '
    ' . $u->error . '
    '; - } - } - - //заносим удары,приемы,эффекты и т.д. - //удар - if (isset($_POST['atack']) && isset($_POST['block'])) { - $btl->addAtack(); - } - //прием - if (isset($_POST['usepriem']) && $btl->testUsersLive() == true && isset($btl->users[$btl->uids[$u->info['enemy']]])) { - $priem->pruse($_POST['usepriem']); - } - //используем заклятие / пирожки - - - //проводим действия (удары, использование приемов, если есть возможность нанести удар или использовать прием) - $btl->testActions(); - //} - //авто-смена противника, либо просто смена противника - if ($u->stats['hpNow'] >= 1) { - //ручная смена - if (isset($_POST['smn']) && $_POST['smn'] != 'none') { - /* ---------------- */ - $_POST['smn'] = iconv('UTF-8', 'windows-1251', $_POST['smn']); - $uidz = mysql_fetch_array(mysql_query('SELECT `id`,`inUser` FROM `users` WHERE `login` = "' . mysql_real_escape_string($_POST['smn']) . '" AND `battle` = "' . $u->info['battle'] . '" LIMIT 1')); - if ($uidz['inUser'] > 0) { - $uidz['id'] = $uidz['inUser']; - } - $rsm = $btl->smena($uidz['id'], false); - if ($rsm != 1) { - echo '
    ' . $rsm . '
    '; - } - unset($rsm); - $js .= 'smena_login = \'none\';'; - } - //авто-смена - if ($u->info['enemy'] == 0 || $btl->stats[$btl->uids[$u->info['enemy']]]['hpNow'] <= 0 || isset($btl->ga[$u->info['id']][$u->info['enemy']])) { - $btl->autoSmena(); - } - } else { - $btl->mainStatus = 3; - } - - //получаем данные о поединке - - //получаем данные о логе боя - - //Если бой сыгран - завершаем - if (!isset($_POST['usepriem'])) { - if ($btl->info['team_win'] == -1) { - $btl->testFinish(); - } else { - $btl->testFinish(); - } - } - if ($btl->info['team_win'] == -1) { - $js .= $btl->genTeams($u->info['id']); - } else { - $btl->mainStatus = 3; - $btl->e = $u->btl_txt; - } - - if ($btl->info['id'] == $u->info['lider']) { - $js .= '$("#btn_down_img3").show();$("#btn_down_img4").show();'; - } else { - $js .= '$("#btn_down_img3").hide();$("#btn_down_img4").hide();'; - } - - if (!isset($CRON_CORE)) { - $js .= $btl->myInfo($u->info['id'], 1); - //выводим данные - if ($btl->e != '') { - echo '
    ' . $btl->e . '
    '; - } - if (isset($btl->ga[$u->info['id']][$u->info['enemy']])) { - if ($u->info['hpNow'] >= 1) { - $btl->mainStatus = 2; - } - } else { - if ($u->info['enemy'] != 0 && $btl->info['team_win'] == -1 && $u->info['hpNow'] >= 1) { - $js .= $btl->myInfo($u->info['enemy'], 2); - } - } - if ($btl->info['izlom'] > 0) { - $js .= 'volna(' . (1 + $btl->info['izlomRoundSee']) . ');'; - } - $i = 1; - while ($i <= 7) { - if ($btl->users[$btl->uids[$u->info['id']]]['tactic' . $i] < 0) { - $btl->users[$btl->uids[$u->info['id']]]['tactic' . $i] = 0; - } - if ($btl->users[$btl->uids[$u->info['id']]]['tactic' . $i] > 25 && $i < 7) { - $btl->users[$btl->uids[$u->info['id']]]['tactic' . $i] = 25; - } - $i++; - } - $atk1 = 0; - if (!isset($CRON_CORE)) { - $rsys = $u->sys_see(0); - } - if ($rsys != '') { - $js .= $rsys; - } - unset($rsys); - if (isset($btl->ga[$u->info['enemy']][$u->info['id']])) { - $atk1 = 1; - } - } - - $rehtml = ''; - if (!isset($CRON_CORE)) { - $js .= '$("#priems").html("' . $priem->seeMy(2) . '");'; - //if(!isset($_POST['usepriem'])) { - $jslog = ''; - if ($u->info['design'] == 0) { - } else { - $jslog .= $btl->lookmLog(); - } - - $jslog .= $btl->lookLog(); - if ($jslog != '') { - $js = $jslog . $js; - } - unset($jslog); - - $tmr = round(($btl->info['timeout'] / 60), 2); - - - $dtxtn = ''; - - $rehtml .= ''; - - echo($rehtml); - - if ($btl->cached == true) { - $btl->clear_cache_start(); - } - - unset($atk1); - } - echo ''; + unset($tm); + $js = ''; + $u = User::start(); + $magic = new Magic(); + $priem = new Priems(); + if ($u->info['battle'] == 0) { + $btl_last = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`battle` FROM `battle_users` WHERE `uid` = "' . $u->info['id'] . '" AND `finish` = "0" LIMIT 1' + ) + ); + if (isset($btl_last['id']) && $u->info['battle'] == 0) { + echo ''; + $u->info['battle'] = $btl_last['id']; + $u->info['battle_lsto'] = true; + mysql_query( + 'UPDATE `stats` SET `battle_text` = "",`last_b`="0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + mysql_query('UPDATE `battle_users` SET `finish` = 1 WHERE `uid` = "' . $u->info['id'] . '"'); + echo ''; } } + + if (!isset($CRON_CORE) && (!isset($u->info['id']) || ($u->info['joinIP'] == 1 && $u->info['ip'] != $_SERVER['HTTP_X_REAL_IP']))) { + die($c['exit']); + } + + function json_fix_cyr($json_str) + { + return $json_str; + } + + $u->stats = $u->getStats($u->info['id'], 0); + + if (!isset($CRON_CORE) && $u->info['online'] < time() - 30) { + mysql_query( + "UPDATE `users` SET `online`='" . time() . "',`timeMain`='" . time( + ) . "' WHERE `id`='" . $u->info['id'] . "' LIMIT 1" + ); + } + + $btl = new Battle(); + require_once('log_text.php'); + $btl->is = $u->is; + $btl->items = $u->items; + $btl->info = $btl->battleInfo($u->info['battle']); + if (!isset($btl->info['id'])) { + if ($u->info['battle'] == -1) { + //завершаем поединок + $upd = mysql_query( + 'UPDATE `users` SET `battle` = "0",`online` = "' . time( + ) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + if (!$upd) { + if (!isset($CRON_CORE)) { + die('Ошибка завершения поединка.'); + } + } else { + echo ''; + } + } else { + mysql_query('UPDATE `users` SET `battle` = "0" WHERE `battle` = "' . $u->info['battle'] . '" LIMIT 100'); + if (!isset($CRON_CORE)) { + die(''); + } + } + } else { + //получаем массив с игроками в бою + $btl->teamsTake(); + + if (isset($_POST['useitem']) && $btl->testUsersLive()) { + $magic->useItems((int)$_POST['useitem']); + if ($u->error != '') { + echo '
    ' . $u->error . '
    '; + } + } + + //заносим удары,приемы,эффекты и т.д. + //удар + if (isset($_POST['atack']) && isset($_POST['block'])) { + $btl->addAtack(); + } + //прием + if (isset($_POST['usepriem']) && $btl->testUsersLive() && isset($btl->users[$btl->uids[$u->info['enemy']]])) { + $priem->pruse($_POST['usepriem']); + } + //используем заклятие / пирожки + + + //проводим действия (удары, использование приемов, если есть возможность нанести удар или использовать прием) + $btl->testActions(); + //авто-смена противника, либо просто смена противника + if ($u->stats['hpNow'] >= 1) { + //ручная смена + if (isset($_POST['smn']) && $_POST['smn'] != 'none') { + /* ---------------- */ + $_POST['smn'] = iconv('UTF-8', 'windows-1251', $_POST['smn']); + $uidz = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`inUser` FROM `users` WHERE `login` = "' . mysql_real_escape_string( + $_POST['smn'] + ) . '" AND `battle` = "' . $u->info['battle'] . '" LIMIT 1' + ) + ); + if ($uidz['inUser'] > 0) { + $uidz['id'] = $uidz['inUser']; + } + $rsm = $btl->smena($uidz['id'], false); + if ($rsm != 1) { + echo '
    ' . $rsm . '
    '; + } + unset($rsm); + $js .= 'smena_login = \'none\';'; + } + //авто-смена + if ($u->info['enemy'] == 0 || $btl->stats[$btl->uids[$u->info['enemy']]]['hpNow'] <= 0 || isset($btl->ga[$u->info['id']][$u->info['enemy']])) { + $btl->autoSmena(); + } + } else { + $btl->mainStatus = 3; + } + + //получаем данные о поединке + + //получаем данные о логе боя + + //Если бой сыгран - завершаем + if (!isset($_POST['usepriem'])) { + $btl->testFinish(); + } + if ($btl->info['team_win'] == -1) { + $js .= $btl->genTeams($u->info['id']); + } else { + $btl->mainStatus = 3; + $btl->e = $u->btl_txt; + } + + if ($btl->info['id'] == $u->info['lider']) { + $js .= '$("#btn_down_img3").show();$("#btn_down_img4").show();'; + } else { + $js .= '$("#btn_down_img3").hide();$("#btn_down_img4").hide();'; + } + + if (!isset($CRON_CORE)) { + $js .= $btl->myInfo($u->info['id'], 1); + //выводим данные + if ($btl->e != '') { + echo '
    ' . $btl->e . '
    '; + } + if (isset($btl->ga[$u->info['id']][$u->info['enemy']])) { + if ($u->info['hpNow'] >= 1) { + $btl->mainStatus = 2; + } + } else { + if ($u->info['enemy'] != 0 && $btl->info['team_win'] == -1 && $u->info['hpNow'] >= 1) { + $js .= $btl->myInfo($u->info['enemy'], 2); + } + } + if ($btl->info['izlom'] > 0) { + $js .= 'volna(' . (1 + $btl->info['izlomRoundSee']) . ');'; + } + $i = 1; + while ($i <= 7) { + if ($btl->users[$btl->uids[$u->info['id']]]['tactic' . $i] < 0) { + $btl->users[$btl->uids[$u->info['id']]]['tactic' . $i] = 0; + } + if ($btl->users[$btl->uids[$u->info['id']]]['tactic' . $i] > 25 && $i < 7) { + $btl->users[$btl->uids[$u->info['id']]]['tactic' . $i] = 25; + } + $i++; + } + $atk1 = 0; + $rsys = $u->sys_see(0); + if ($rsys != '') { + $js .= $rsys; + } + unset($rsys); + if (isset($btl->ga[$u->info['enemy']][$u->info['id']])) { + $atk1 = 1; + } + } + + $rehtml = ''; + if (!isset($CRON_CORE)) { + $js .= '$("#priems").html("' . $priem->seeMy(2) . '");'; + $jslog = ''; + if ($u->info['design'] != 0) { + $jslog .= $btl->lookmLog(); + } + + $jslog .= $btl->lookLog(); + if ($jslog != '') { + $js = $jslog . $js; + } + unset($jslog); + + $tmr = round(($btl->info['timeout'] / 60), 2); + + + $dtxtn = ''; + + $rehtml .= ''; + + echo($rehtml); + + if ($btl->cached) { + $btl->clear_cache_start(); + } + + unset($atk1); + } + echo ''; + + } } diff --git a/jx/battle/refresh_bot.php b/jx/battle/refresh_bot.php index dcd34667..e4d8bc23 100644 --- a/jx/battle/refresh_bot.php +++ b/jx/battle/refresh_bot.php @@ -1,259 +1,237 @@ '.$_SERVER['SERVER_ADDR']); -} -*/ - -define('GAME',true); +const GAME = true; require_once('../../_incl_data/class/__db_connect.php'); -function e($t) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #'.date('d.m.Y').' %'.date('H:i:s').' (Критическая ошибка): '.mysql_real_escape_string($t).'","capitalcity","-NIGHTmare-","6","1","-1")'); -} - -if(isset($_GET['cron_core'])) { - $id = array( - 'id' => $_GET['uid'], - 'pass' => $_GET['pass'] - ); - if(md5($id['id'].'_brfCOreW@!_'.$id['pass']) == $_GET['cron_core']) { - $uzr = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`pass` FROM `users` WHERE `id` = "'.mysql_real_escape_string($id['id']).'" AND `pass` = "'.mysql_real_escape_string($id['pass']).'" LIMIT 1')); - if(isset($uzr['id'])) { - $CRON_CORE = true; - $_COOKIE['login'] = $uzr['login']; - $_COOKIE['pass'] = $uzr['pass']; - $_POST['id'] = 'reflesh'; - - - if(isset($_GET['atack'])) { - $_POST['atack'] = $_GET['atack']; - } - if(isset($_GET['block'])) { - $_POST['block'] = $_GET['block']; - } - if(isset($_GET['usepriem'])) { - $_POST['usepriem'] = $_GET['usepriem']; - } - if(isset($_GET['useitem'])) { - $_POST['useitem'] = $_GET['useitem']; - } - - } - unset($uzr); - } -} - -if(isset($CRON_CORE)) +function e($t) { - - if(isset($_POST['atack'],$_POST['block']) || (isset($_POST['id']) && $_POST['id']=='reflesh') || isset($_POST['usepriem']) || isset($_POST['useitem'])) - { - if(isset($_POST['useitemon'])) { - $_POST['useitemon'] = iconv('UTF-8', 'windows-1251', $_POST['useitemon']); - } - //`session_start(); - $tm = microtime(); - $tm = explode(' ',$tm); - $tm = $tm[0]+$tm[1]; - - if(!isset($CRON_CORE)) { - require_once('../../_incl_data/__config.php'); - if($_SESSION['tbr']>$tm) - { - die(''); - }else{ - $_SESSION['tbr'] = $tm+0.350; - } - } - - unset($tm); - $js = ''; - require_once('../../_incl_data/class/__user.php'); - require_once('../../_incl_data/class/__magic.php'); - require_once('../../_incl_data/class/_cron_.php'); - require_once('../../_incl_data/class/__quest.php'); - - if(!isset($CRON_CORE)) { - if(!isset($u->info['id']) || ($u->info['joinIP']==1 && $u->info['ip']!=$_SERVER['HTTP_X_REAL_IP'])) - { - die($c['exit']); - } - } - - $u->stats = $u->getStats($u->info['id'],0); - - if(!isset($CRON_CORE)) { - if($u->info['online']is = $u->is; - $btl->items = $u->items; - $btl->info = $btl->battleInfo($u->info['battle']); - if(!isset($btl->info['id'])) - { - if($u->info['battle']==-1) - { - //завершаем поединок - $upd = mysql_query('UPDATE `users` SET `battle` = "0",`online` = "'.time().'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if(!$upd) - { - if(!isset($CRON_CORE)) { - die('Ошибка завершения поединка.'); - } - }else{ - echo ''; - } - }else{ - mysql_query('UPDATE `users` SET `battle` = "0" WHERE `battle` = "'.$u->info['battle'].'" LIMIT 100'); - if(!isset($CRON_CORE)) { - die(''); - } - } - }else{ - //получаем массив с игроками в бою - $btl->teamsTake(); - - if(isset($_POST['useitem'])) { - $magic->useItems((int)$_POST['useitem']); - if($u->error!='') { - echo '
    '.$u->error.'
    '; - } - } - - //заносим удары,приемы,эффекты и т.д. - //удар - if(isset($_POST['atack']) && isset($_POST['block'])) - { - $btl->addAtack(); - } - //прием - if(isset($_POST['usepriem'])) - { - $priem->pruse($_POST['usepriem']); - } - //используем заклятие / пирожки - - - //проводим действия (удары, использование приемов, если есть возможность нанести удар или использовать прием) - $btl->testActions(); - //авто-смена противника, либо просто смена противника - if($u->stats['hpNow']>=1) - { - //ручная смена - if(isset($_POST['smn']) && $_POST['smn']!='none') - { - /* ---------------- */ - $_POST['smn'] = iconv('UTF-8', 'windows-1251', $_POST['smn']); - $uidz = mysql_fetch_array(mysql_query('SELECT `id`,`inUser` FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['smn']).'" AND `battle` = "'.$u->info['battle'].'" LIMIT 1')); - if($uidz['inUser']>0) - { - $uidz['id'] = $uidz['inUser']; - } - $rsm = $btl->smena($uidz['id'],false); - if($rsm!=1) - { - echo '
    '.$rsm.'
    '; - } - unset($rsm); - $js .= 'smena_login = \'none\';'; - } - //авто-смена - if($u->info['enemy']==0 || $btl->stats[$btl->uids[$u->info['enemy']]]['hpNow']<=0 || isset($btl->ga[$u->info['id']][$u->info['enemy']])) - { - $btl->autoSmena(); - } - }else{ - $btl->mainStatus = 3; - } - //получаем данные о поединке - - //получаем данные о логе боя - - //Если бой сыгран - завершаем - if($btl->info['team_win']==-1) - { - $btl->testFinish(); - }else{ - $btl->testFinish(); - } - if($btl->info['team_win']==-1) - { - $js .= $btl->genTeams($u->info['id']); - }else{ - $btl->mainStatus = 3; - $btl->e = $u->btl_txt; - } - - if(!isset($CRON_CORE)) { - $js .= $btl->myInfo($u->info['id'],1); - //выводим данные - if($btl->e!='') - { - echo '
    '.$btl->e.'
    '; - } - if(isset($btl->ga[$u->info['id']][$u->info['enemy']])) - { - if($u->info['hpNow']>=1) { - $btl->mainStatus = 2; - } - }else{ - if($u->info['enemy']!=0 && $btl->info['team_win']==-1 && $u->info['hpNow']>=1) - { - $js .= $btl->myInfo($u->info['enemy'],2); - } - } - if($btl->info['izlom']>0) - { - $js .= 'volna('.(1+$btl->info['izlomRoundSee']).');'; - } - $i = 1; - while($i<=7) - { - if($btl->users[$btl->uids[$u->info['id']]]['tactic'.$i]<0) - { - $btl->users[$btl->uids[$u->info['id']]]['tactic'.$i] = 0; - } - if($btl->users[$btl->uids[$u->info['id']]]['tactic'.$i]>25 && $i<7) - { - $btl->users[$btl->uids[$u->info['id']]]['tactic'.$i] = 25; - } - $i++; - } - $atk1 = 0; - if(!isset($CRON_CORE)) {$rsys = $u->sys_see(0);} - if($rsys != '') { - $js .= $rsys; - } - unset($rsys); - if(isset($btl->ga[$u->info['enemy']][$u->info['id']])) - { - $atk1 = 1; - } - } - - if( $btl->cached == true ) { - $btl->clear_cache_start(); - } - /* - echo ''; - */ - } - } + mysql_query( + 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #' . date('d.m.Y') . ' %' . date( + 'H:i:s' + ) . ' (Критическая ошибка): ' . mysql_real_escape_string( + $t + ) . '","capitalcity","-NIGHTmare-","6","1","-1")' + ); +} + +if (isset($_GET['cron_core'])) { + $id = [ + 'id' => $_GET['uid'], + 'pass' => $_GET['pass'], + ]; + if (md5($id['id'] . '_brfCOreW@!_' . $id['pass']) == $_GET['cron_core']) { + $uzr = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`login`,`pass` FROM `users` WHERE `id` = "' . mysql_real_escape_string( + $id['id'] + ) . '" AND `pass` = "' . mysql_real_escape_string($id['pass']) . '" LIMIT 1' + ) + ); + if (isset($uzr['id'])) { + $CRON_CORE = true; + $_COOKIE['login'] = $uzr['login']; + $_COOKIE['pass'] = $uzr['pass']; + $_POST['id'] = 'reflesh'; + + + if (isset($_GET['atack'])) { + $_POST['atack'] = $_GET['atack']; + } + if (isset($_GET['block'])) { + $_POST['block'] = $_GET['block']; + } + if (isset($_GET['usepriem'])) { + $_POST['usepriem'] = $_GET['usepriem']; + } + if (isset($_GET['useitem'])) { + $_POST['useitem'] = $_GET['useitem']; + } + + } + unset($uzr); + } +} + +if (isset($CRON_CORE) && (isset($_POST['atack'], $_POST['block']) || (isset($_POST['id']) && $_POST['id'] == 'reflesh') || isset($_POST['usepriem']) || isset($_POST['useitem']))) { + if (isset($_POST['useitemon'])) { + $_POST['useitemon'] = iconv('UTF-8', 'windows-1251', $_POST['useitemon']); + } + //`session_start(); + $tm = microtime(); + $tm = explode(' ', $tm); + $tm = $tm[0] + $tm[1]; + + if (!isset($CRON_CORE)) { + require_once('../../_incl_data/__config.php'); + if ($_SESSION['tbr'] > $tm) { + die(''); + } else { + $_SESSION['tbr'] = $tm + 0.350; + } + } + + unset($tm); + $js = ''; + $u = User::start(); + $magic = new Magic(); + $priem = new Priems(); + + if (!isset($CRON_CORE) && (!isset($u->info['id']) || ($u->info['joinIP'] == 1 && $u->info['ip'] != $_SERVER['HTTP_X_REAL_IP']))) { + die($c['exit']); + } + + $u->stats = $u->getStats($u->info['id'], 0); + + if (!isset($CRON_CORE) && $u->info['online'] < time() - 30) { + mysql_query( + "UPDATE `users` SET `online`='" . time() . "',`timeMain`='" . time( + ) . "' WHERE `id`='" . $u->info['id'] . "' LIMIT 1" + ); + } + $btl = new Battle(); + require_once('log_text.php'); + $btl->is = $u->is; + $btl->items = $u->items; + $btl->info = $btl->battleInfo($u->info['battle']); + if (!isset($btl->info['id'])) { + if ($u->info['battle'] == -1) { + //завершаем поединок + $upd = mysql_query( + 'UPDATE `users` SET `battle` = "0",`online` = "' . time( + ) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + if (!$upd) { + if (!isset($CRON_CORE)) { + die('Ошибка завершения поединка.'); + } + } else { + echo ''; + } + } else { + mysql_query( + 'UPDATE `users` SET `battle` = "0" WHERE `battle` = "' . $u->info['battle'] . '" LIMIT 100' + ); + if (!isset($CRON_CORE)) { + die(''); + } + } + } else { + //получаем массив с игроками в бою + $btl->teamsTake(); + + if (isset($_POST['useitem'])) { + $magic->useItems((int)$_POST['useitem']); + if ($u->error != '') { + echo '
    ' . $u->error . '
    '; + } + } + + //заносим удары,приемы,эффекты и т.д. + //удар + if (isset($_POST['atack']) && isset($_POST['block'])) { + $btl->addAtack(); + } + //прием + if (isset($_POST['usepriem'])) { + $priem->pruse($_POST['usepriem']); + } + //используем заклятие / пирожки + + + //проводим действия (удары, использование приемов, если есть возможность нанести удар или использовать прием) + $btl->testActions(); + //авто-смена противника, либо просто смена противника + if ($u->stats['hpNow'] >= 1) { + //ручная смена + if (isset($_POST['smn']) && $_POST['smn'] != 'none') { + /* ---------------- */ + $_POST['smn'] = iconv('UTF-8', 'windows-1251', $_POST['smn']); + $uidz = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`inUser` FROM `users` WHERE `login` = "' . mysql_real_escape_string( + $_POST['smn'] + ) . '" AND `battle` = "' . $u->info['battle'] . '" LIMIT 1' + ) + ); + if ($uidz['inUser'] > 0) { + $uidz['id'] = $uidz['inUser']; + } + $rsm = $btl->smena($uidz['id'], false); + if ($rsm != 1) { + echo '
    ' . $rsm . '
    '; + } + unset($rsm); + $js .= 'smena_login = \'none\';'; + } + //авто-смена + if ($u->info['enemy'] == 0 || $btl->stats[$btl->uids[$u->info['enemy']]]['hpNow'] <= 0 || isset($btl->ga[$u->info['id']][$u->info['enemy']])) { + $btl->autoSmena(); + } + } else { + $btl->mainStatus = 3; + } + //получаем данные о поединке + + //получаем данные о логе боя + + //Если бой сыгран - завершаем + $btl->testFinish(); + if ($btl->info['team_win'] == -1) { + $js .= $btl->genTeams($u->info['id']); + } else { + $btl->mainStatus = 3; + $btl->e = $u->btl_txt; + } + + if (!isset($CRON_CORE)) { + $js .= $btl->myInfo($u->info['id'], 1); + //выводим данные + if ($btl->e != '') { + echo '
    ' . $btl->e . '
    '; + } + if (isset($btl->ga[$u->info['id']][$u->info['enemy']])) { + if ($u->info['hpNow'] >= 1) { + $btl->mainStatus = 2; + } + } else { + if ($u->info['enemy'] != 0 && $btl->info['team_win'] == -1 && $u->info['hpNow'] >= 1) { + $js .= $btl->myInfo($u->info['enemy'], 2); + } + } + if ($btl->info['izlom'] > 0) { + $js .= 'volna(' . (1 + $btl->info['izlomRoundSee']) . ');'; + } + $i = 1; + while ($i <= 7) { + if ($btl->users[$btl->uids[$u->info['id']]]['tactic' . $i] < 0) { + $btl->users[$btl->uids[$u->info['id']]]['tactic' . $i] = 0; + } + if ($btl->users[$btl->uids[$u->info['id']]]['tactic' . $i] > 25 && $i < 7) { + $btl->users[$btl->uids[$u->info['id']]]['tactic' . $i] = 25; + } + $i++; + } + $atk1 = 0; + $rsys = $u->sys_see(0); + if ($rsys != '') { + $js .= $rsys; + } + unset($rsys); + if (isset($btl->ga[$u->info['enemy']][$u->info['id']])) { + $atk1 = 1; + } + } + + if ($btl->cached) { + $btl->clear_cache_start(); + } + + } } -//unlink($lock_file); -?> \ No newline at end of file diff --git a/jx/battle/refresh_vip.php b/jx/battle/refresh_vip.php index 783c12d0..ade1da18 100644 --- a/jx/battle/refresh_vip.php +++ b/jx/battle/refresh_vip.php @@ -2,309 +2,263 @@ die(); -if(!isset($CRON_CORE)) { - define('GAME',true); - require_once('../../_incl_data/class/__db_connect.php'); -} - -function e($t) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #'.date('d.m.Y').' %'.date('H:i:s').' (Критическая ошибка): '.mysql_real_escape_string($t).'","capitalcity","INFINITY","6","1","-1")'); +if (!isset($CRON_CORE)) { + define('GAME', true); + require_once('../../_incl_data/class/__db_connect.php'); } -if(isset($_GET['cron_core'])) { - $id = array( - 'id' => $_GET['uid'], - 'pass' => $_GET['pass'] - ); - if(md5($id['id'].'_brfCOreW@!_'.$id['pass']) == $_GET['cron_core']) { - $uzr = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`pass` FROM `users` WHERE `id` = "'.mysql_real_escape_string($id['id']).'" AND `pass` = "'.mysql_real_escape_string($id['pass']).'" LIMIT 1')); - if(isset($uzr['id'])) { - $CRON_CORE = true; - $_COOKIE['login'] = $uzr['login']; - $_COOKIE['pass'] = $uzr['pass']; - $_POST['id'] = 'reflesh'; - } - unset($uzr); - } -} - -if(!isset($CRON_CORE)) { - header( 'Expires: Mon, 26 Jul 1970 05:00:00 GMT' ); - header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); - header( 'Cache-Control: no-store, no-cache, must-revalidate' ); - header( 'Cache-Control: post-check=0, pre-check=0', false ); - header( 'Pragma: no-cache' ); - header( 'Content-Type: text/html; charset=windows-1251' ); - /*$lock_file = 'lock/battle_'.$_SERVER['HTTP_X_REAL_IP'].'.'.$_COOKIE['auth'].'.bk2'; - if ( !file_exists($lock_file) ) { - //$fp_lock = fopen($lock_file, 'w'); - //flock($fp_lock, LOCK_EX); - } else { - //unlink($lock_file); - //die('
    Не удалось отправить запрос, повторите попытку снова...
    '); - }*/ -} - -if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' || isset($CRON_CORE)) +function e($t) { - if(isset($_POST['atack'],$_POST['block']) || (isset($_POST['id']) && $_POST['id']=='reflesh') || isset($_POST['usepriem']) || isset($_POST['useitem'])) - { - if(isset($_POST['useitemon'])) { - $_POST['useitemon'] = iconv('UTF-8', 'windows-1251', $_POST['useitemon']); - } - session_start(); - $tm = microtime(); - $tm = explode(' ',$tm); - $tm = $tm[0]+$tm[1]; - - if(!isset($CRON_CORE)) { - require_once('../../_incl_data/__config.php'); - if($_SESSION['tbr']>$tm) - { - die(''); - }else{ - $_SESSION['tbr'] = $tm+0.350; - } - } - - unset($tm); - $js = ''; - require_once('../../_incl_data/class/__user.php'); - require_once('../../_incl_data/class/__magic.php'); - require_once('../../_incl_data/class/_cron_.php'); - require_once('../../_incl_data/class/__quest.php'); - - if(!isset($CRON_CORE)) { - if(!isset($u->info['id']) || ($u->info['joinIP']==1 && $u->info['ip']!=$_SERVER['HTTP_X_REAL_IP'])) - { - die($c['exit']); - } - } - - function json_fix_cyr($json_str) { - /* $cyr_chars = array ( - '\u0430' => 'а', '\u0410' => 'А', - '\u0431' => 'б', '\u0411' => 'Б', - '\u0432' => 'в', '\u0412' => 'В', - '\u0433' => 'г', '\u0413' => 'Г', - '\u0434' => 'д', '\u0414' => 'Д', - '\u0435' => 'е', '\u0415' => 'Е', - '\u0451' => 'ё', '\u0401' => 'Ё', - '\u0436' => 'ж', '\u0416' => 'Ж', - '\u0437' => 'з', '\u0417' => 'З', - '\u0438' => 'и', '\u0418' => 'И', - '\u0439' => 'й', '\u0419' => 'Й', - '\u043a' => 'к', '\u041a' => 'К', - '\u043b' => 'л', '\u041b' => 'Л', - '\u043c' => 'м', '\u041c' => 'М', - '\u043d' => 'н', '\u041d' => 'Н', - '\u043e' => 'о', '\u041e' => 'О', - '\u043f' => 'п', '\u041f' => 'П', - '\u0440' => 'р', '\u0420' => 'Р', - '\u0441' => 'с', '\u0421' => 'С', - '\u0442' => 'т', '\u0422' => 'Т', - '\u0443' => 'у', '\u0423' => 'У', - '\u0444' => 'ф', '\u0424' => 'Ф', - '\u0445' => 'х', '\u0425' => 'Х', - '\u0446' => 'ц', '\u0426' => 'Ц', - '\u0447' => 'ч', '\u0427' => 'Ч', - '\u0448' => 'ш', '\u0428' => 'Ш', - '\u0449' => 'щ', '\u0429' => 'Щ', - '\u044a' => 'ъ', '\u042a' => 'Ъ', - '\u044b' => 'ы', '\u042b' => 'Ы', - '\u044c' => 'ь', '\u042c' => 'Ь', - '\u044d' => 'э', '\u042d' => 'Э', - '\u044e' => 'ю', '\u042e' => 'Ю', - '\u044f' => 'я', '\u042f' => 'Я', - - '\r' => '', - '\n' => '
    ', - '\t' => '' - ); - foreach ($cyr_chars as $cyr_char_key => $cyr_char) { - $json_str = str_replace($cyr_char_key, $cyr_char, $json_str); - } */ - return $json_str; - } - - $u->stats = $u->getStats($u->info['id'],0); - - if(!isset($CRON_CORE)) { - if($u->info['online']is = $u->is; - $btl->items = $u->items; - $btl->info = $btl->battleInfo($u->info['battle']); - if(!isset($btl->info['id'])) - { - if($u->info['battle']==-1) - { - //завершаем поединок - $upd = mysql_query('UPDATE `users` SET `battle` = "0",`online` = "'.time().'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if(!$upd) - { - if(!isset($CRON_CORE)) { - die('Ошибка завершения поединка.'); - } - }else{ - echo ''; - } - }else{ - mysql_query('UPDATE `users` SET `battle` = "0" WHERE `battle` = "'.$u->info['battle'].'" LIMIT 100'); - if(!isset($CRON_CORE)) { - die(''); - } - } - }else{ - //получаем массив с игроками в бою - $btl->teamsTake(); - - if(isset($_POST['useitem'])) { - $magic->useItems((int)$_POST['useitem']); - if($u->error!='') { - echo '
    '.$u->error.'
    '; - } - } - - //заносим удары,приемы,эффекты и т.д. - //удар - if(isset($_POST['atack']) && isset($_POST['block'])) - { - $btl->addAtack(); - } - //прием - if(isset($_POST['usepriem'])) - { - $priem->pruse($_POST['usepriem']); - } - //используем заклятие / пирожки - - - //проводим действия (удары, использование приемов, если есть возможность нанести удар или использовать прием) - //if(!isset($_POST['usepriem'])) { - $btl->testActions(); - //} - //авто-смена противника, либо просто смена противника - if($u->stats['hpNow']>=1) - { - //ручная смена - if(isset($_POST['smn']) && $_POST['smn']!='none') - { - /* ---------------- */ - $_POST['smn'] = iconv('UTF-8', 'windows-1251', $_POST['smn']); - $uidz = mysql_fetch_array(mysql_query('SELECT `id`,`inUser` FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['smn']).'" AND `battle` = "'.$u->info['battle'].'" LIMIT 1')); - if($uidz['inUser']>0) - { - $uidz['id'] = $uidz['inUser']; - } - $rsm = $btl->smena($uidz['id'],false); - if($rsm!=1) - { - echo '
    '.$rsm.'
    '; - } - unset($rsm); - $js .= 'smena_login = \'none\';'; - } - //авто-смена - if($u->info['enemy']==0 || $btl->stats[$btl->uids[$u->info['enemy']]]['hpNow']<=0 || isset($btl->ga[$u->info['id']][$u->info['enemy']])) - { - $btl->autoSmena(); - } - }else{ - $btl->mainStatus = 3; - } - //получаем данные о поединке - - //получаем данные о логе боя - - //Если бой сыгран - завершаем - if(!isset($_POST['usepriem'])) { - if($btl->info['team_win']==-1) - { - $btl->testFinish(); - }else{ - $btl->testFinish(); - } - } - if($btl->info['team_win']==-1) - { - $js .= $btl->genTeams($u->info['id']); - }else{ - $btl->mainStatus = 3; - $btl->e = $u->btl_txt; - } - - if(!isset($CRON_CORE)) { - $js .= $btl->myInfo($u->info['id'],1); - //выводим данные - if($btl->e!='') - { - echo '
    '.$btl->e.'
    '; - } - if(isset($btl->ga[$u->info['id']][$u->info['enemy']])) - { - if($u->info['hpNow']>=1) { - $btl->mainStatus = 2; - } - }else{ - if($u->info['enemy']!=0 && $btl->info['team_win']==-1 && $u->info['hpNow']>=1) - { - $js .= $btl->myInfo($u->info['enemy'],2); - } - } - if($btl->info['izlom']>0) - { - $js .= 'volna('.(1+$btl->info['izlomRoundSee']).');'; - } - $i = 1; - while($i<=7) - { - if($btl->users[$btl->uids[$u->info['id']]]['tactic'.$i]<0) - { - $btl->users[$btl->uids[$u->info['id']]]['tactic'.$i] = 0; - } - if($btl->users[$btl->uids[$u->info['id']]]['tactic'.$i]>25 && $i<7) - { - $btl->users[$btl->uids[$u->info['id']]]['tactic'.$i] = 25; - } - $i++; - } - $atk1 = 0; - if(!isset($CRON_CORE)) {$rsys = $u->sys_see(0);} - if($rsys != '') { - $js .= $rsys; - } - unset($rsys); - if(isset($btl->ga[$u->info['enemy']][$u->info['id']])) - { - $atk1 = 1; - } - } - $rehtml = ''; - if(!isset($CRON_CORE)) { - $js .= '$("#priems").html("'.$priem->seeMy(2).'");'; - //if(!isset($_POST['usepriem'])) { - $js .= $btl->lookLog(); - //} - $rehtml .= ''); + } else { + $_SESSION['tbr'] = $tm + 0.350; + } + } + + unset($tm); + $js = ''; + $u = User::start(); + $magic = new Magic(); + $priem = new Priems(); + + if (!isset($CRON_CORE) && (!isset($u->info['id']) || ($u->info['joinIP'] == 1 && $u->info['ip'] != $_SERVER['HTTP_X_REAL_IP']))) { + die($c['exit']); + } + + function json_fix_cyr($json_str) + { + return $json_str; + } + + $u->stats = $u->getStats($u->info['id'], 0); + + if (!isset($CRON_CORE)) { + if ($u->info['online'] < time() - 30) { + mysql_query( + "UPDATE `users` SET `online`='" . time() . "',`timeMain`='" . time( + ) . "' WHERE `id`='" . $u->info['id'] . "' LIMIT 1" + ); + } + } + $btl = new Battle(); + require_once('log_text.php'); + $btl->is = $u->is; + $btl->items = $u->items; + $btl->info = $btl->battleInfo($u->info['battle']); + if (!isset($btl->info['id'])) { + if ($u->info['battle'] == -1) { + //завершаем поединок + $upd = mysql_query( + 'UPDATE `users` SET `battle` = "0",`online` = "' . time( + ) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + if (!$upd) { + if (!isset($CRON_CORE)) { + die('Ошибка завершения поединка.'); + } + } else { + echo ''; + } + } else { + mysql_query( + 'UPDATE `users` SET `battle` = "0" WHERE `battle` = "' . $u->info['battle'] . '" LIMIT 100' + ); + if (!isset($CRON_CORE)) { + die(''); + } + } + } else { + //получаем массив с игроками в бою + $btl->teamsTake(); + + if (isset($_POST['useitem'])) { + $magic->useItems((int)$_POST['useitem']); + if ($u->error != '') { + echo '
    ' . $u->error . '
    '; + } + } + + //заносим удары,приемы,эффекты и т.д. + //удар + if (isset($_POST['atack']) && isset($_POST['block'])) { + $btl->addAtack(); + } + //прием + if (isset($_POST['usepriem'])) { + $priem->pruse($_POST['usepriem']); + } + //используем заклятие / пирожки + + + //проводим действия (удары, использование приемов, если есть возможность нанести удар или использовать прием) + //if(!isset($_POST['usepriem'])) { + $btl->testActions(); + //} + //авто-смена противника, либо просто смена противника + if ($u->stats['hpNow'] >= 1) { + //ручная смена + if (isset($_POST['smn']) && $_POST['smn'] != 'none') { + /* ---------------- */ + $_POST['smn'] = iconv('UTF-8', 'windows-1251', $_POST['smn']); + $uidz = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`inUser` FROM `users` WHERE `login` = "' . mysql_real_escape_string( + $_POST['smn'] + ) . '" AND `battle` = "' . $u->info['battle'] . '" LIMIT 1' + ) + ); + if ($uidz['inUser'] > 0) { + $uidz['id'] = $uidz['inUser']; + } + $rsm = $btl->smena($uidz['id'], false); + if ($rsm != 1) { + echo '
    ' . $rsm . '
    '; + } + unset($rsm); + $js .= 'smena_login = \'none\';'; + } + //авто-смена + if ($u->info['enemy'] == 0 || $btl->stats[$btl->uids[$u->info['enemy']]]['hpNow'] <= 0 || isset($btl->ga[$u->info['id']][$u->info['enemy']])) { + $btl->autoSmena(); + } + } else { + $btl->mainStatus = 3; + } + //получаем данные о поединке + + //получаем данные о логе боя + + //Если бой сыгран - завершаем + if (!isset($_POST['usepriem'])) { + if ($btl->info['team_win'] == -1) { + $btl->testFinish(); + } else { + $btl->testFinish(); + } + } + if ($btl->info['team_win'] == -1) { + $js .= $btl->genTeams($u->info['id']); + } else { + $btl->mainStatus = 3; + $btl->e = $u->btl_txt; + } + + if (!isset($CRON_CORE)) { + $js .= $btl->myInfo($u->info['id'], 1); + //выводим данные + if ($btl->e != '') { + echo '
    ' . $btl->e . '
    '; + } + if (isset($btl->ga[$u->info['id']][$u->info['enemy']])) { + if ($u->info['hpNow'] >= 1) { + $btl->mainStatus = 2; + } + } else { + if ($u->info['enemy'] != 0 && $btl->info['team_win'] == -1 && $u->info['hpNow'] >= 1) { + $js .= $btl->myInfo($u->info['enemy'], 2); + } + } + if ($btl->info['izlom'] > 0) { + $js .= 'volna(' . (1 + $btl->info['izlomRoundSee']) . ');'; + } + $i = 1; + while ($i <= 7) { + if ($btl->users[$btl->uids[$u->info['id']]]['tactic' . $i] < 0) { + $btl->users[$btl->uids[$u->info['id']]]['tactic' . $i] = 0; + } + if ($btl->users[$btl->uids[$u->info['id']]]['tactic' . $i] > 25 && $i < 7) { + $btl->users[$btl->uids[$u->info['id']]]['tactic' . $i] = 25; + } + $i++; + } + $atk1 = 0; + if (!isset($CRON_CORE)) { + $rsys = $u->sys_see(0); + } + if ($rsys != '') { + $js .= $rsys; + } + unset($rsys); + if (isset($btl->ga[$u->info['enemy']][$u->info['id']])) { + $atk1 = 1; + } + } + $rehtml = ''; + if (!isset($CRON_CORE)) { + $js .= '$("#priems").html("' . $priem->seeMy(2) . '");'; + //if(!isset($_POST['usepriem'])) { + $js .= $btl->lookLog(); + //} + $rehtml .= ''; - - echo ($rehtml); - - if( $btl->cached == true ) { - $btl->clear_cache_start(); - } - - unset($atk1); - } - echo ''; - } - } + + echo($rehtml); + + if ($btl->cached == true) { + $btl->clear_cache_start(); + } + + unset($atk1); + } + echo ''; + } + } } //unlink($lock_file); ?> \ No newline at end of file diff --git a/jx/dungeon.php b/jx/dungeon.php index 68f456a6..3c4e59a6 100644 --- a/jx/dungeon.php +++ b/jx/dungeon.php @@ -1,241 +1,255 @@ top.xxx='.((int)$_POST['gox']).';top.yyy='.((int)$_POST['goy']).';top.xn='.((int)$_POST['gox']).';top.yn='.((int)$_POST['goy']).';'; - $_POST['x'] = $_POST['gox']; - $_POST['y'] = $_POST['goy']; - } - $u->info['x'] = 0+(int)$_POST['x']; - $u->info['y'] = 0+(int)$_POST['y']; - $dn['id2'] = (int)$_POST['ddid']; - //бой с ботом - function addBot($isd,$col,$dt) - { - global $u,$c,$code; - $vrs = explode('&',$dt); - $vr = array(); - $k = 0; - while($kinfo['admin']>0) - { - //Админка - $act = explode('|$|',$_POST['action']); - if($act[0]=='save_go') - { - $act = explode('|!|',$act[1]); - $mx = $act[0]; - $my = $act[1]; - $mpx = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "'.$dn['id2'].'" AND `x`='.mysql_real_escape_string($mx).' AND `y`='.mysql_real_escape_string($my).' LIMIT 1')); - if(isset($mpx['id'])) - { - $i = 2; - while($i<=10) - { - if($act[$i]=='true') - { - $act[$i] = 1; - }else{ - $act[$i] = 0; - } - $i++; - } - mysql_query('UPDATE `dungeon_map` SET - `go_1` = "'.mysql_real_escape_string($act[2]).'", - `go_2` = "'.mysql_real_escape_string($act[3]).'", - `go_3` = "'.mysql_real_escape_string($act[4]).'", - `go_4` = "'.mysql_real_escape_string($act[5]).'", - `go_5` = "'.mysql_real_escape_string($act[6]).'", - `no_bot` = "'.mysql_real_escape_string($act[7]).mysql_real_escape_string($act[8]).mysql_real_escape_string($act[9]).mysql_real_escape_string($act[10]).'" - WHERE `id` = "'.$mpx['id'].'" LIMIT 1'); - $js .= 'closeAdminion();'; - } - }elseif($act[0]=='select_image') - { - //смена изображения клетки - $act = explode('|!|',$act[1]); - $img = $act[0]; - $mx = $act[1]; - $my = $act[2]; - $mpx = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "'.$dn['id2'].'" AND `x`='.mysql_real_escape_string($mx).' AND `y`='.mysql_real_escape_string($my).' LIMIT 1')); - if(isset($mpx['id'])) - { - $mpx['style'] = $img; - $cx = array(0=>'1111', - 1=>'1110', - 2=>'1011', - 3=>'1101', - 4=>'0111', - 5=>'1100', - 6=>'0110', - 7=>'1001', - 8=>'0011', - 9=>'0001', - 10=>'0100', - 11=>'0010', - 12=>'1000', - 13=>'1010', - 14=>'0101', - 15=>'0000', - 16=>''); - mysql_query('UPDATE `dungeon_map` SET `style` = "'.mysql_real_escape_string($mpx['style']).'", `st` = "'.mysql_real_escape_string($cx[$mpx['style']]).'" WHERE `id` = "'.$mpx['id'].'" LIMIT 1'); - $js .= 'closeAdminion();'; - }else{ - //создаем клетку - $go1 = 0; - $go2 = 0; - $go3 = 0; - $go4 = 0; - $go5 = 1; - - $cx = array(0=>'00000', - 1=>'00001', - 2=>'10001', - 3=>'01001', - 4=>'00011', - 5=>'00101', - 6=>'10011', - 7=>'10101', - 8=>'01011', - 9=>'01101', - 10=>'01111', - 11=>'10111', - 12=>'11101', - 13=>'11011', - 14=>'11001', - 15=>'00111', - 16=>'11111'); - - - $go1 = $cx[$img+1][0]; - $go2 = $cx[$img+1][1]; - $go3 = $cx[$img+1][2]; - $go4 = $cx[$img+1][3]; - $go5 = $cx[$img+1][4]; - - $cx = array(0=>'1111', - 1=>'1110', - 2=>'1011', - 3=>'1101', - 4=>'0111', - 5=>'1100', - 6=>'0110', - 7=>'1001', - 8=>'0011', - 9=>'0001', - 10=>'0100', - 11=>'0010', - 12=>'1000', - 13=>'1010', - 14=>'0101', - 15=>'0000', - 16=>''); +if ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' && isset($_POST['id'])) { + define('GAME', true); + include_once('../_incl_data/__config.php'); + include_once('../_incl_data/class/__db_connect.php'); + $u = User::start(); + if (isset($_POST['gox']) && isset($_POST['goy'])) { + echo 'Переходим на: X = ' . $_POST['gox'] . ', Y = ' . $_POST['goy'] . ''; + $_POST['x'] = $_POST['gox']; + $_POST['y'] = $_POST['goy']; + } + $u->info['x'] = 0 + (int)$_POST['x']; + $u->info['y'] = 0 + (int)$_POST['y']; + $dn['id2'] = (int)$_POST['ddid']; + //бой с ботом + function addBot($isd, $col, $dt) + { + global $u, $c, $code; + $vrs = explode('&', $dt); + $vr = []; + $k = 0; + while ($k < count($vrs)) { + $ex = explode('=', $vrs[$k]); + $vr[$ex[0]] = $ex[1]; + $k++; + } + } - $ins = mysql_query('INSERT INTO `dungeon_map` (`st`,`go_1`,`go_2`,`go_3`,`go_4`,`go_5`,`id_dng`,`x`,`y`,`style`) VALUES ("'.$cx[$img][0].$cx[$img][1].$cx[$img][2].$cx[$img][3].'","'.$go1.'","'.$go2.'","'.$go3.'","'.$go4.'","'.$go5.'","'.$dn['id2'].'","'.mysql_real_escape_string($mx).'","'.mysql_real_escape_string($my).'","'.mysql_real_escape_string($img).'")'); - if(!$ins) - { - echo 'Ошибка создания части лабиринта'; - } - } - }elseif($act[0]=='delete') - { - //Удаляем клетку - $act = explode('|!|',$act[1]); - $mx = $act[0]; - $my = $act[1]; - $mpx = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "'.$dn['id2'].'" AND `x`='.mysql_real_escape_string($mx).' AND `y`='.mysql_real_escape_string($my).' LIMIT 1')); - if(isset($mpx['id'])) - { - mysql_query('DELETE FROM `dungeon_map` WHERE `id` = "'.$mpx['id'].'" LIMIT 1;'); - $js .= 'closeAdminion();'; - } - } - - } + $md5 = 0; + $map = ''; + $obj = ''; + $objd = ''; + $usr = ''; + $js = ''; + $gg = 0; - $x = $u->info['x']; - $y = $u->info['y']; - - //генерируем карту - - $fmd5 = ''; - - //пользователи - - //координаты игрока - $fmd5 .= $x.'_'.$y.'='; - $sp = mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "'.$dn['id2'].'" AND ((`x`<='.($x+5).' AND `x`>='.($x-5).') AND (`y`<='.($y+4).' AND `y`>='.($y-4).')) LIMIT 100'); - while($pl = mysql_fetch_array($sp)) - { - $map .= $pl['id'].'='.$pl['x'].'='.$pl['y'].'='.$pl['style'].'='.$pl['go'].'='.$pl['go_1'].'='.$pl['go_2'].'='.$pl['go_3'].'='.$pl['go_4'].'='.$pl['go_5'].'='.$pl['no_bot'][0].'='.$pl['no_bot'][1].'='.$pl['no_bot'][2].'='.$pl['no_bot'][3].'|'; - $fmd5 .= $pl['id'].'='; - } - $map .= 'end'; - - //предметы на клетке - $itms = ''; - $sp = mysql_query('SELECT * FROM `dungeon_items` WHERE `dn` = "'.$dn['id'].'" AND `x` = "'.$x.'" AND `y` = "'.$y.'" AND `take` = "0" LIMIT 100'); - while($pl = mysql_fetch_array($sp)) - { - $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$pl['item_id'].'" LIMIT 1')); - if(isset($itm['id'])) - { - $itms .= ''; - $fmd5 .= $pl['id'].'='; - } - } - - if($itms!='') - { - $itms = '
    Предметы в локации:

    '.$itms; - $js .= 'document.getElementById(\'items\').innerHTML = "'.$itms.'";'; - }else{ - $js .= 'document.getElementById(\'items\').innerHTML = "";'; - } - - $fmd5 = md5($fmd5); - if($fmd5!=$_POST['mdf']) - { - //обновляем данные - echo ''; - }else{ - //изменений нет - - } - } + $pix = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `dungeon_map` WHERE `id_dng` = "' . ((int)$_POST['ddid']) . '" AND `x`=' . $u->info['x'] . ' AND `y`=' . $u->info['y'] . ' LIMIT 1' + ) + ); + if (isset($_POST['adminion']) && $u->info['admin'] > 0) { + //Админка + $act = explode('|$|', $_POST['action']); + if ($act[0] == 'save_go') { + $act = explode('|!|', $act[1]); + $mx = $act[0]; + $my = $act[1]; + $mpx = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `dungeon_map` WHERE `id_dng` = "' . $dn['id2'] . '" AND `x`=' . mysql_real_escape_string( + $mx + ) . ' AND `y`=' . mysql_real_escape_string($my) . ' LIMIT 1' + ) + ); + if (isset($mpx['id'])) { + $i = 2; + while ($i <= 10) { + if ($act[$i] == 'true') { + $act[$i] = 1; + } else { + $act[$i] = 0; + } + $i++; + } + mysql_query( + 'UPDATE `dungeon_map` SET + `go_1` = "' . mysql_real_escape_string($act[2]) . '", + `go_2` = "' . mysql_real_escape_string($act[3]) . '", + `go_3` = "' . mysql_real_escape_string($act[4]) . '", + `go_4` = "' . mysql_real_escape_string($act[5]) . '", + `go_5` = "' . mysql_real_escape_string($act[6]) . '", + `no_bot` = "' . mysql_real_escape_string($act[7]) . mysql_real_escape_string( + $act[8] + ) . mysql_real_escape_string($act[9]) . mysql_real_escape_string($act[10]) . '" + WHERE `id` = "' . $mpx['id'] . '" LIMIT 1' + ); + $js .= 'closeAdminion();'; + } + } elseif ($act[0] == 'select_image') { + //смена изображения клетки + $act = explode('|!|', $act[1]); + $img = $act[0]; + $mx = $act[1]; + $my = $act[2]; + $mpx = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `dungeon_map` WHERE `id_dng` = "' . $dn['id2'] . '" AND `x`=' . mysql_real_escape_string( + $mx + ) . ' AND `y`=' . mysql_real_escape_string($my) . ' LIMIT 1' + ) + ); + if (isset($mpx['id'])) { + $mpx['style'] = $img; + $cx = [0 => '1111', + 1 => '1110', + 2 => '1011', + 3 => '1101', + 4 => '0111', + 5 => '1100', + 6 => '0110', + 7 => '1001', + 8 => '0011', + 9 => '0001', + 10 => '0100', + 11 => '0010', + 12 => '1000', + 13 => '1010', + 14 => '0101', + 15 => '0000', + 16 => '']; + mysql_query( + 'UPDATE `dungeon_map` SET `style` = "' . mysql_real_escape_string( + $mpx['style'] + ) . '", `st` = "' . mysql_real_escape_string( + $cx[$mpx['style']] + ) . '" WHERE `id` = "' . $mpx['id'] . '" LIMIT 1' + ); + $js .= 'closeAdminion();'; + } else { + //создаем клетку + $go1 = 0; + $go2 = 0; + $go3 = 0; + $go4 = 0; + $go5 = 1; + + $cx = [0 => '00000', + 1 => '00001', + 2 => '10001', + 3 => '01001', + 4 => '00011', + 5 => '00101', + 6 => '10011', + 7 => '10101', + 8 => '01011', + 9 => '01101', + 10 => '01111', + 11 => '10111', + 12 => '11101', + 13 => '11011', + 14 => '11001', + 15 => '00111', + 16 => '11111']; + + + $go1 = $cx[$img + 1][0]; + $go2 = $cx[$img + 1][1]; + $go3 = $cx[$img + 1][2]; + $go4 = $cx[$img + 1][3]; + $go5 = $cx[$img + 1][4]; + + $cx = [0 => '1111', + 1 => '1110', + 2 => '1011', + 3 => '1101', + 4 => '0111', + 5 => '1100', + 6 => '0110', + 7 => '1001', + 8 => '0011', + 9 => '0001', + 10 => '0100', + 11 => '0010', + 12 => '1000', + 13 => '1010', + 14 => '0101', + 15 => '0000', + 16 => '']; + + $ins = mysql_query( + 'INSERT INTO `dungeon_map` (`st`,`go_1`,`go_2`,`go_3`,`go_4`,`go_5`,`id_dng`,`x`,`y`,`style`) VALUES ("' . $cx[$img][0] . $cx[$img][1] . $cx[$img][2] . $cx[$img][3] . '","' . $go1 . '","' . $go2 . '","' . $go3 . '","' . $go4 . '","' . $go5 . '","' . $dn['id2'] . '","' . mysql_real_escape_string( + $mx + ) . '","' . mysql_real_escape_string($my) . '","' . mysql_real_escape_string($img) . '")' + ); + if (!$ins) { + echo 'Ошибка создания части лабиринта'; + } + } + } elseif ($act[0] == 'delete') { + //Удаляем клетку + $act = explode('|!|', $act[1]); + $mx = $act[0]; + $my = $act[1]; + $mpx = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `dungeon_map` WHERE `id_dng` = "' . $dn['id2'] . '" AND `x`=' . mysql_real_escape_string( + $mx + ) . ' AND `y`=' . mysql_real_escape_string($my) . ' LIMIT 1' + ) + ); + if (isset($mpx['id'])) { + mysql_query('DELETE FROM `dungeon_map` WHERE `id` = "' . $mpx['id'] . '" LIMIT 1;'); + $js .= 'closeAdminion();'; + } + } + + } + + $x = $u->info['x']; + $y = $u->info['y']; + + //генерируем карту + + $fmd5 = ''; + + //пользователи + + //координаты игрока + $fmd5 .= $x . '_' . $y . '='; + $sp = mysql_query( + 'SELECT * FROM `dungeon_map` WHERE `id_dng` = "' . $dn['id2'] . '" AND ((`x`<=' . ($x + 5) . ' AND `x`>=' . ($x - 5) . ') AND (`y`<=' . ($y + 4) . ' AND `y`>=' . ($y - 4) . ')) LIMIT 100' + ); + while ($pl = mysql_fetch_array($sp)) { + $map .= $pl['id'] . '=' . $pl['x'] . '=' . $pl['y'] . '=' . $pl['style'] . '=' . $pl['go'] . '=' . $pl['go_1'] . '=' . $pl['go_2'] . '=' . $pl['go_3'] . '=' . $pl['go_4'] . '=' . $pl['go_5'] . '=' . $pl['no_bot'][0] . '=' . $pl['no_bot'][1] . '=' . $pl['no_bot'][2] . '=' . $pl['no_bot'][3] . '|'; + $fmd5 .= $pl['id'] . '='; + } + $map .= 'end'; + + //предметы на клетке + $itms = ''; + $sp = mysql_query( + 'SELECT * FROM `dungeon_items` WHERE `dn` = "' . $dn['id'] . '" AND `x` = "' . $x . '" AND `y` = "' . $y . '" AND `take` = "0" LIMIT 100' + ); + while ($pl = mysql_fetch_array($sp)) { + $itm = mysql_fetch_array( + mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $pl['item_id'] . '" LIMIT 1') + ); + if (isset($itm['id'])) { + $itms .= ''; + $fmd5 .= $pl['id'] . '='; + } + } + + if ($itms != '') { + $itms = '
    Предметы в локации:

    ' . $itms; + $js .= 'document.getElementById(\'items\').innerHTML = "' . $itms . '";'; + } else { + $js .= 'document.getElementById(\'items\').innerHTML = "";'; + } + + $fmd5 = md5($fmd5); + if ($fmd5 != $_POST['mdf']) { + //обновляем данные + echo ''; + } } -?> \ No newline at end of file diff --git a/jx/post.php b/jx/post.php index c13f8fec..1da8dd4e 100644 --- a/jx/post.php +++ b/jx/post.php @@ -1,37 +1,28 @@ top.location = \'https://'.$c['host'].'/\';'); - }else{ - if(isset($_POST['act'])) - { - $post = telegram::start(); - if($_POST['act']=='read') - { - $post->readMsg(mysql_real_escape_string($_POST['msg']),$u['id']); - }elseif($_POST['act']=='lock') - { - $post->lockMsg(mysql_real_escape_string($_POST['msg']),$u['id']); - }elseif($_POST['act']=='delete') - { - $post->deleteMsg(mysql_real_escape_string($_POST['msg']),$u['id'],$_POST['pageGo']); - }elseif($_POST['act']=='deleteAll') - { - $post->deleteMsgAll($u['id'],$_POST['pageGo']); - }elseif($_POST['act']=='page') - { - $post->seeMsg($u['id'],$_POST['msg'],5); - } - } - } +if ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') { + define('GAME', true); + include_once('../_incl_data/__config.php'); + include_once('../_incl_data/class/__db_connect.php'); + + + $u = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `login`="' . mysql_real_escape_string($_COOKIE['login']) . '" AND `pass`="' . mysql_real_escape_string($_COOKIE['pass']) . '" LIMIT 1')); + if (!isset($u['id']) || ($u['joinIP'] == 1 && $u['ip'] != $_SERVER['HTTP_X_REAL_IP'])) { + die(''); + } else { + if (isset($_POST['act'])) { + $post = Telegram::start(); + if ($_POST['act'] == 'read') { + $post->readMsg(mysql_real_escape_string($_POST['msg']), $u['id']); + } elseif ($_POST['act'] == 'lock') { + $post->lockMsg(mysql_real_escape_string($_POST['msg']), $u['id']); + } elseif ($_POST['act'] == 'delete') { + $post->deleteMsg(mysql_real_escape_string($_POST['msg']), $u['id'], $_POST['pageGo']); + } elseif ($_POST['act'] == 'deleteAll') { + $post->deleteMsgAll($u['id'], $_POST['pageGo']); + } elseif ($_POST['act'] == 'page') { + $post->seeMsg($u['id'], $_POST['msg'], 5); + } + } + } } -?> \ No newline at end of file diff --git a/logs.php b/logs.php index b74662d6..7ae19043 100644 --- a/logs.php +++ b/logs.php @@ -3,450 +3,471 @@ const GAME = true; include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); -$btl = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "'.mysql_real_escape_string((int)$_GET['log']).'" LIMIT 1')); +$u = User::start(); +$btl = mysql_fetch_array( + mysql_query('SELECT * FROM `battle` WHERE `id` = "' . mysql_real_escape_string((int)$_GET['log']) . '" LIMIT 1') +); -if(isset($btl['id'])) { - $allprice = mysql_fetch_array(mysql_query('SELECT SUM(`price1`) FROM `battle_users` WHERE `battle` = "'.$btl['id'].'" GROUP BY `uid` LIMIT 1')); - $allprice = 0+$allprice[0]; - function typeBattle($x) { - $r = array(0,0,'Обычный поединок','Кровавый Поединок'); - if( $x < 50000 ) { - //Обычный бой - }elseif( $x >= 50000 && $x < 100000 ) { - $r = array(25,50,'Великая Битва','Кровавая Битва'); - }elseif( $x < 500000 ) { - $r = array(50,75,'Величайшая Битва','Кровавая Резня'); - }elseif( $x < 1000000 ) { - $r = array(75,100,'Историческая Битва','Кровавая Сеча'); - }elseif( $x < 2500000 ) { - $r = array(100,125,'Эпохальная Битва','Кровавое Побоище'); - }elseif( $x >= 5000000 ) { - $r = array(150,150,'Судный День','Судный День'); - } - return $r; - } - $allprice = typeBattle($allprice); - if ($btl['smert'] == 1) - { - $allprice = array(150,150,'Жесточайшее Сражение','Жесточайшее Сражение'); - } - if( $btl['type'] == 99 ) { - $allprice = ''.str_replace(' ',' ',$allprice[3]).''; - }else{ - $allprice = str_replace(' ',' ',$allprice[2]); - } +if (isset($btl['id'])) { + $allprice = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`price1`) FROM `battle_users` WHERE `battle` = "' . $btl['id'] . '" GROUP BY `uid` LIMIT 1' + ) + ); + $allprice = 0 + $allprice[0]; + function typeBattle($x) + { + $r = [0, 0, 'Обычный поединок', 'Кровавый Поединок']; + if ($x < 50000) { + //Обычный бой + } elseif ($x >= 50000 && $x < 100000) { + $r = [25, 50, 'Великая Битва', 'Кровавая Битва']; + } elseif ($x < 500000) { + $r = [50, 75, 'Величайшая Битва', 'Кровавая Резня']; + } elseif ($x < 1000000) { + $r = [75, 100, 'Историческая Битва', 'Кровавая Сеча']; + } elseif ($x < 2500000) { + $r = [100, 125, 'Эпохальная Битва', 'Кровавое Побоище']; + } elseif ($x >= 5000000) { + $r = [150, 150, 'Судный День', 'Судный День']; + } + return $r; + } + + $allprice = typeBattle($allprice); + if ($btl['smert'] == 1) { + $allprice = [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение']; + } + if ($btl['type'] == 99) { + $allprice = '' . str_replace(' ', ' ', $allprice[3]) . ''; + } else { + $allprice = str_replace(' ', ' ', $allprice[2]); + } } $fil = 'Поиск :
    '; -$r = ''; $p = ''; $b = ' +$r = ''; +$p = ''; +$b = '
    '; //nowrap="" -if($btl['team_win'] != -1) { - if(!isset($_GET['analiz'])) { - $b .= ' '; - $b .= $fil; - }else{ - $b .= ' '; - } +if ($btl['team_win'] != -1) { + if (!isset($_GET['analiz'])) { + $b .= ' '; + $b .= $fil; + } else { + $b .= ' '; + } } $b .= '
    '; -if(isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { - - function rzv($v) - { - $v = explode('.',$v); - if(!isset($v[1])) - { - $v = $v[0].'.0'; - }else{ - $v = $v[0].'.'.$v[1]; - } - return $v; - } - $tmStart = floor(($btl['time_over']-$btl['time_start'])/6)/10; - $tmStart = rzv($tmStart); - $tbtl = ''; - if( $btl['invis'] > 0 ) { - $tbtl .= ''; - } - if($btl['type'] == 0) { - $tbtl = 'Тип боя: '.$tbtl.' (физический поединок)     '; - }elseif($btl['type'] == 1) { - $tbtl = 'Тип боя: '.$tbtl.' (кулачный поединок)     '; - }else{ - $tbtl = 'Тип боя: '.$tbtl.' (физический поединок)     '; - } - - if( $btl['izlom'] > 0 ) { - $tbtl .= 'Волна: '.$btl['izlomRoundSee'].'     '; - } - - $tbtl .= 'Продолжительность боя: '.$tmStart.' мин.
    '; - - $users = array( +if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { - ); - - $uids = array( - - ); - - function con_login($us) { - $r = ''; - if( $us['align'] > 0 ) { - $r .= ''; - } - if( $us['clan'] > 0 ) { - $r .= ''; - } - $r .= ''.$us['login'].' ['.$us['level'].']'; - $r .= ''; - return $r; - } - - //Поулчаем инфо - $tpas = array( - 1 => 'X', - 2 => '', - 3 => '', - 4 => '¤', - 5 => 'X', - 6 => '', - 7 => '', - 8 => '' - ); - /*$tpbs = array( - 0 => 'X', - 1 => 'X', - 2 => '', - 3 => '', - 4 => 'X', - 5 => '', - 6 => '', - 7 => '', - 8 => '' - );*/ - $tpbs = array( - 0 => '', - 1 => '', - 2 => '', - 3 => 'X', - 4 => 'X', - 5 => '', - 6 => '', - 7 => '', - 8 => '' - ); - $sp = mysql_query('SELECT * FROM `battle_users` WHERE `battle` = "'.$btl['id'].'"'); - while($pl = mysql_fetch_array($sp)) { - if(!isset($uids[$pl['id']])) { - $i = count($users); - $users[$i] = $pl; - $uids[$pl['uid']] = $i; - // - $users[$i]['value'] = array( - 'y' => 0, //уворотов+парирований+блоков щитом - 'b' => 0, //успешных блоков - 'p' => 0, //не успешных блоков, по персонажу попали - 'zb' => array( //Список зон блока - - ), - 'sa' => array( //Статистика ударов - 0 => '', - 1 => '', - 2 => '', - 3 => '', - 4 => '', - 5 => '' - ), - 'sb' => array( //Статистика блоков - 0 => '', - 1 => '', - 2 => '', - 3 => '', - 4 => '', - 5 => '' - ) - ); - $sp2 = mysql_query('SELECT * FROM `battle_stat` WHERE `battle` = "'.$btl['id'].'" AND `uid1` = "'.$pl['uid'].'" ORDER BY `id` ASC'); - while($pl2 = mysql_fetch_array($sp2)) { - //Обновляем данные - $users[$i]['yrn'] += $pl2['yrn']; - $users[$i]['yrn_krit'] += $pl2['yrn_krit']; - //Статистика далее - $users[$i]['gaa']++; - if( $users[$i]['yrn'] > 0 ) { - $users[$i]['ga']++; - } - if( $users[$i]['yrn_krit'] > 0 ) { - $users[$i]['gak']++; - } - //Получаем куда бил игрок - $j = 0; - while($j < $pl2['ma']) { - $users[$i]['zona'][$pl2['a'][$j]]++; - // - $za = $pl2['a'][$j]; - $k = 1; - while($k <= 5) { - if( $za == $k ) { - $tpa = $pl2['type_a'][$j]; - $zag[$k] = true; - $users[$i]['value']['sa'][$k] .= $tpas[$tpa]; - }else{ - $zag[$k] = false; - //$users[$i]['value']['sa'][$za] .= '.'; - } - $k++; - } - // - $j++; - } - $j = $pl2['b']; - $k = 0; - while($k < $pl2['mb']) { - if( $j > 5 ) { - $j = 1; - } - $users[$i]['value']['zb'][] = array( 0 => $j , 1 => 0 ); - $users[$i]['zonb'][$j]++; - $j++; - $k++; - } - // - $k = 1; - while($k <= 5) { - if( $zag[$k] == false ) { - $users[$i]['value']['sa'][$k] .= ' '; - } - $k++; - } - // - } - // - $sp2 = mysql_query('SELECT * FROM `battle_stat` WHERE `battle` = "'.$btl['id'].'" AND `uid2` = "'.$pl['uid'].'" ORDER BY `id` ASC'); - $k = 0; - while($pl2 = mysql_fetch_array($sp2)) { - //Обновляем данные - $users[$i]['_yrn'] -= $pl2['yrn']; - $users[$i]['_yrn_krit'] -= $pl2['yrn_krit']; - //Получаем куда били игрока - $j = 0; $zag = array(); - while($j < $pl2['ma']) { - $users[$i]['value']['zb'][$k][1] = $pl2['type_a'][$j]; - if( $pl2['type_a'][$j] == 2 || $pl2['type_a'][$j] == 6 || $pl2['type_a'][$j] == 7 || $pl2['type_a'][$j] == 8 ) { - $users[$i]['value']['y']++; - }elseif( $pl2['type_a'][$j] == 3 ) { - $users[$i]['value']['b']++; - }else{ - $users[$i]['value']['p']++; - } - // - $j++; - } - // - $k++; - // - } - //Статистика блоков - $k = 0; - $h = 0; - $bjj = array(); - while( $k < count($users[$i]['value']['zb']) ) { - $zb = 0+$users[$i]['value']['zb'][$k][0]; - $zt = 0+$users[$i]['value']['zb'][$k][1]; - $bjj[$zb] = true; - $users[$i]['value']['sb'][$zb] .= ''.$tpbs[$zt].''; - if( $h < 1 ) { - $h++; - }else{ - $d = 1; - while($d <= 5) { - if( $bjj[$d] == true ) { - - }else{ - $users[$i]['value']['sb'][$d] .= ' '; - } - $d++; - } - $bjj = array(); - $h = 0; - } - $k++; - } - // - } - } - - $usr = ''; - $tm = array(); - $tm_u = array(); - $tm_v = array(); - - $i = 0; - while($i < count($users)) { - if( $users[$i] > 0 ) { - $us = $users[$i]; - if( !isset($tm[$us['team']]) ) { - $tm[$us['team']] = ''; - $tm_v[] = $us['team']; - } - $tm_u[$us['team']][] = $i; - $tm[$us['team']] .= con_login($us); - $tm[$us['team']] .= ', '; - unset($us); - } - $i++; - } - $i = 0; - while($i < count($tm_v)) { - $usr .= rtrim($tm[$tm_v[$i]],', '); - if( $i < count($tm_v)-1 ) { - $usr .= '   против   '; - } - $i++; - } - // - $usr = '

    Участники поединка

    '.$usr.'

    '; - // - $r = ''; - // - $r .= '

    Последовательность ударов

    '; - $r .= ' -'; - $i = 0; - while($i <= count($tm_v)) { - $j = 0; - $team_data = array( 'g' => false ); - while($j < count($tm_u[$tm_v[$i]])) { - $us = $users[$tm_u[$tm_v[$i]][$j]]; - if($us['id'] > 0) { - $rh = ''; - $rh .= ''.$us['value']['sa'][1].''; - $rh .= '
    '.$us['value']['sa'][2].''; - $rh .= '
    '.$us['value']['sa'][3].''; - $rh .= '
    '.$us['value']['sa'][4].''; - $rh .= '
    '.$us['value']['sa'][5].''; - $r .= ''; - } - unset($us); - $j++; - } - - $i++; - } - $r .= '
    ЛогинУдар вПоследовательность ударов
    '.con_login($us).'
    голову
    грудь
    живот
    пояс
    ноги
    '.$rh.'
    '; - $r .= '(X - удачный удар, ¤ - критический удар пробив блок , X - критический удар, Ξ - крит + инвалидность, X - доп. магический удар,
    + function rzv($v) + { + $v = explode('.', $v); + if (!isset($v[1])) { + $v = $v[0] . '.0'; + } else { + $v = $v[0] . '.' . $v[1]; + } + return $v; + } + + $tmStart = floor(($btl['time_over'] - $btl['time_start']) / 6) / 10; + $tmStart = rzv($tmStart); + $tbtl = ''; + if ($btl['invis'] > 0) { + $tbtl .= ''; + } + if ($btl['type'] == 0) { + $tbtl = 'Тип боя: ' . $tbtl . ' (физический поединок)     '; + } elseif ($btl['type'] == 1) { + $tbtl = 'Тип боя: ' . $tbtl . ' (кулачный поединок)     '; + } else { + $tbtl = 'Тип боя: ' . $tbtl . ' (физический поединок)     '; + } + + if ($btl['izlom'] > 0) { + $tbtl .= 'Волна: ' . $btl['izlomRoundSee'] . '     '; + } + + $tbtl .= 'Продолжительность боя: ' . $tmStart . ' мин.
    '; + + $users = [ + + ]; + + $uids = [ + + ]; + + function con_login($us) + { + $r = ''; + if ($us['align'] > 0) { + $r .= ''; + } + if ($us['clan'] > 0) { + $r .= ''; + } + $r .= '' . $us['login'] . ' [' . $us['level'] . ']'; + $r .= ''; + return $r; + } + + //Поулчаем инфо + $tpas = [ + 1 => 'X', + 2 => '', + 3 => '', + 4 => '¤', + 5 => 'X', + 6 => '', + 7 => '', + 8 => '', + ]; + /*$tpbs = array( + 0 => 'X', + 1 => 'X', + 2 => '', + 3 => '', + 4 => 'X', + 5 => '', + 6 => '', + 7 => '', + 8 => '' + );*/ + $tpbs = [ + 0 => '', + 1 => '', + 2 => '', + 3 => 'X', + 4 => 'X', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + ]; + $sp = mysql_query('SELECT * FROM `battle_users` WHERE `battle` = "' . $btl['id'] . '"'); + while ($pl = mysql_fetch_array($sp)) { + if (!isset($uids[$pl['id']])) { + $i = count($users); + $users[$i] = $pl; + $uids[$pl['uid']] = $i; + // + $users[$i]['value'] = [ + 'y' => 0, //уворотов+парирований+блоков щитом + 'b' => 0, //успешных блоков + 'p' => 0, //не успешных блоков, по персонажу попали + 'zb' => [ //Список зон блока + + ], + 'sa' => [ //Статистика ударов + 0 => '', + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + ], + 'sb' => [ //Статистика блоков + 0 => '', + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + ], + ]; + $sp2 = mysql_query( + 'SELECT * FROM `battle_stat` WHERE `battle` = "' . $btl['id'] . '" AND `uid1` = "' . $pl['uid'] . '" ORDER BY `id` ASC' + ); + while ($pl2 = mysql_fetch_array($sp2)) { + //Обновляем данные + $users[$i]['yrn'] += $pl2['yrn']; + $users[$i]['yrn_krit'] += $pl2['yrn_krit']; + //Статистика далее + $users[$i]['gaa']++; + if ($users[$i]['yrn'] > 0) { + $users[$i]['ga']++; + } + if ($users[$i]['yrn_krit'] > 0) { + $users[$i]['gak']++; + } + //Получаем куда бил игрок + $j = 0; + while ($j < $pl2['ma']) { + $users[$i]['zona'][$pl2['a'][$j]]++; + // + $za = $pl2['a'][$j]; + $k = 1; + while ($k <= 5) { + if ($za == $k) { + $tpa = $pl2['type_a'][$j]; + $zag[$k] = true; + $users[$i]['value']['sa'][$k] .= $tpas[$tpa]; + } else { + $zag[$k] = false; + //$users[$i]['value']['sa'][$za] .= '.'; + } + $k++; + } + // + $j++; + } + $j = $pl2['b']; + $k = 0; + while ($k < $pl2['mb']) { + if ($j > 5) { + $j = 1; + } + $users[$i]['value']['zb'][] = [0 => $j, 1 => 0]; + $users[$i]['zonb'][$j]++; + $j++; + $k++; + } + // + $k = 1; + while ($k <= 5) { + if ($zag[$k] == false) { + $users[$i]['value']['sa'][$k] .= ' '; + } + $k++; + } + // + } + // + $sp2 = mysql_query( + 'SELECT * FROM `battle_stat` WHERE `battle` = "' . $btl['id'] . '" AND `uid2` = "' . $pl['uid'] . '" ORDER BY `id` ASC' + ); + $k = 0; + while ($pl2 = mysql_fetch_array($sp2)) { + //Обновляем данные + $users[$i]['_yrn'] -= $pl2['yrn']; + $users[$i]['_yrn_krit'] -= $pl2['yrn_krit']; + //Получаем куда били игрока + $j = 0; + $zag = []; + while ($j < $pl2['ma']) { + $users[$i]['value']['zb'][$k][1] = $pl2['type_a'][$j]; + if ($pl2['type_a'][$j] == 2 || $pl2['type_a'][$j] == 6 || $pl2['type_a'][$j] == 7 || $pl2['type_a'][$j] == 8) { + $users[$i]['value']['y']++; + } elseif ($pl2['type_a'][$j] == 3) { + $users[$i]['value']['b']++; + } else { + $users[$i]['value']['p']++; + } + // + $j++; + } + // + $k++; + // + } + //Статистика блоков + $k = 0; + $h = 0; + $bjj = []; + while ($k < count($users[$i]['value']['zb'])) { + $zb = 0 + $users[$i]['value']['zb'][$k][0]; + $zt = 0 + $users[$i]['value']['zb'][$k][1]; + $bjj[$zb] = true; + $users[$i]['value']['sb'][$zb] .= '' . $tpbs[$zt] . ''; + if ($h < 1) { + $h++; + } else { + $d = 1; + while ($d <= 5) { + if ($bjj[$d] == true) { + + } else { + $users[$i]['value']['sb'][$d] .= ' '; + } + $d++; + } + $bjj = []; + $h = 0; + } + $k++; + } + // + } + } + + $usr = ''; + $tm = []; + $tm_u = []; + $tm_v = []; + + $i = 0; + while ($i < count($users)) { + if ($users[$i] > 0) { + $us = $users[$i]; + if (!isset($tm[$us['team']])) { + $tm[$us['team']] = ''; + $tm_v[] = $us['team']; + } + $tm_u[$us['team']][] = $i; + $tm[$us['team']] .= con_login($us); + $tm[$us['team']] .= ', '; + unset($us); + } + $i++; + } + $i = 0; + while ($i < count($tm_v)) { + $usr .= rtrim($tm[$tm_v[$i]], ', '); + if ($i < count($tm_v) - 1) { + $usr .= '   против   '; + } + $i++; + } + // + $usr = '

    Участники поединка

    ' . $usr . '

    '; + // + $r = ''; + // + $r .= '

    Последовательность ударов

    '; + $r .= ' +'; + $i = 0; + while ($i <= count($tm_v)) { + $j = 0; + $team_data = ['g' => false]; + while ($j < count($tm_u[$tm_v[$i]])) { + $us = $users[$tm_u[$tm_v[$i]][$j]]; + if ($us['id'] > 0) { + $rh = ''; + $rh .= '' . $us['value']['sa'][1] . ''; + $rh .= '
    ' . $us['value']['sa'][2] . ''; + $rh .= '
    ' . $us['value']['sa'][3] . ''; + $rh .= '
    ' . $us['value']['sa'][4] . ''; + $rh .= '
    ' . $us['value']['sa'][5] . ''; + $r .= ''; + } + unset($us); + $j++; + } + + $i++; + } + $r .= '
    ЛогинУдар вПоследовательность ударов
    ' . con_login( + $us + ) . '
    голову
    грудь
    живот
    пояс
    ноги
    ' . $rh . '
    '; + $r .= '(X - удачный удар, ¤ - критический удар пробив блок , X - критический удар, Ξ - крит + инвалидность, X - доп. магический удар,
      - противник блокировал удар,  - увернулся,  - парировал,  - отбил удар щитом)'; - // - $r .= '

    Последовательность блоков

    '; - $r .= ' -'; - $i = 0; - while($i <= count($tm_v)) { - $j = 0; - $team_data = array( 'g' => false ); - while($j < count($tm_u[$tm_v[$i]])) { - $us = $users[$tm_u[$tm_v[$i]][$j]]; - if($us['id'] > 0) { - $rh = ''; - $rh .= ''.$us['value']['sb'][1].''; - $rh .= '
    '.$us['value']['sb'][2].''; - $rh .= '
    '.$us['value']['sb'][3].''; - $rh .= '
    '.$us['value']['sb'][4].''; - $rh .= '
    '.$us['value']['sb'][5].''; - $r .= ''; - } - unset($us); - $j++; - } - - $i++; - } - $r .= '
    ЛогинБлокПоследовательность блоков
    '.con_login($us).'
    голова
    грудь
    живот
    пояс
    ноги
    '.$rh.'
    '; - $r .= '(X - удачный блок, X - пробили блок критом,  - пропустил удар, + // + $r .= '

    Последовательность блоков

    '; + $r .= ' +'; + $i = 0; + while ($i <= count($tm_v)) { + $j = 0; + $team_data = ['g' => false]; + while ($j < count($tm_u[$tm_v[$i]])) { + $us = $users[$tm_u[$tm_v[$i]][$j]]; + if ($us['id'] > 0) { + $rh = ''; + $rh .= '' . $us['value']['sb'][1] . ''; + $rh .= '
    ' . $us['value']['sb'][2] . ''; + $rh .= '
    ' . $us['value']['sb'][3] . ''; + $rh .= '
    ' . $us['value']['sb'][4] . ''; + $rh .= '
    ' . $us['value']['sb'][5] . ''; + $r .= ''; + } + unset($us); + $j++; + } + + $i++; + } + $r .= '
    ЛогинБлокПоследовательность блоков
    ' . con_login( + $us + ) . '
    голова
    грудь
    живот
    пояс
    ноги
    ' . $rh . '
    '; + $r .= '(X - удачный блок, X - пробили блок критом,  - пропустил удар,  - увернулся,  - парировал,  - отбил щитом)'; - // - $r .= '

    Суммарно

    '; - $r .= ' + // + $r .= '

    Суммарно

    '; + $r .= '
    '; - // - $i = 0; - while($i <= count($tm_v)) { - $j = 0; - $team_data = array( 'g' => false ); - while($j < count($tm_u[$tm_v[$i]])) { - $us = $users[$tm_u[$tm_v[$i]][$j]]; - if($us['id'] > 0) { - $team_data['g'] = true; - $us['heal'] = ($us['hp']-$us['hpAll'])-$us['_yrn']; - if($us['heal']<0) { - $us['heal'] = 0; - } - if( $us['hp'] < 0 ) { - $us['hp'] = 0; - } - if( $us['yrn'] < 0 ) { - $us['yrn'] = 0; - } - if( $us['yrn_krit'] < 0 ) { - $us['yrn_krit'] = 0; - } - if( $us['_yrn'] > 0 ) { - $us['_yrn'] = 0; - } - if( $us['_yrn_krit'] > 0 ) { - $us['_yrn_krit'] = 0; - } - $team_data['ga'] += $us['ga']; - $team_data['gaa'] += $us['gaa']; - $team_data['gak'] += $us['gak']; - $team_data['hp'] += $us['hp']; - $team_data['hpAll'] += $us['hpAll']; - $team_data['yrn'] += $us['yrn']; - $team_data['yrn_krit'] += $us['yrn_krit']; - $team_data['_yrn'] += $us['_yrn']; - $team_data['_yrn_krit'] += $us['_yrn_krit']; - $team_data['val_b'] += $us['value']['b']; - $team_data['val_y'] += $us['value']['y']; - $team_data['val_p'] += $us['value']['p']; - $team_data['heal'] += $us['heal']; - $winw = ''; - if( $us['hp'] < 1 ) { - $us['hp'] = '0'; - $winw = ''; - }else{ - $winw = ''; - } - $r .= ''; - } - unset($us); - $j++; - } - if( $team_data['g'] == true ) { - $winw = '--'; - if( $team_data['hp'] < 1 ) { - $team_data['hp'] = '0'; - }else{ - $winw = ''; - } - $r .= ''; - } - - $i++; - } - $r .= '
     ЛогинУдарыБлокиПопаданияЗащитаУронПотериВылечено
            
    '.$winw.''.con_login($us).' ['.$us['hp'].'/'.$us['hpAll'].']'.(0+$us['zona'][1]).'/'.(0+$us['zona'][2]).'/'.(0+$us['zona'][3]).'/'.(0+$us['zona'][4]).'/'.(0+$us['zona'][5]).''.(0+$us['zonb'][1]).'/'.(0+$us['zonb'][2]).'/'.(0+$us['zonb'][3]).'/'.(0+$us['zonb'][4]).'/'.(0+$us['zonb'][5]).''.(0+$us['ga']).'('.(0+$us['gak']).')/'.($us['gaa']).''.$us['value']['b'].'/'.$us['value']['y'].'/'.$us['value']['p'].''.$us['yrn'].'/'.$us['yrn_krit'].''.(-$us['_yrn']).''.$us['heal'].'
    '.$winw.'Всего ['.$team_data['hp'].'/'.$team_data['hpAll'].']  '.(0+$team_data['ga']).'('.(0+$team_data['gak']).')/'.($team_data['gaa']).''.$team_data['val_b'].'/'.$team_data['val_y'].'/'.$team_data['val_p'].''.$team_data['yrn'].'/'.$team_data['yrn_krit'].''.(-$team_data['_yrn']).''.$team_data['heal'].'
    '; - // - $r .= ' + //         + $i = 0; + while ($i <= count($tm_v)) { + $j = 0; + $team_data = ['g' => false]; + while ($j < count($tm_u[$tm_v[$i]])) { + $us = $users[$tm_u[$tm_v[$i]][$j]]; + if ($us['id'] > 0) { + $team_data['g'] = true; + $us['heal'] = ($us['hp'] - $us['hpAll']) - $us['_yrn']; + if ($us['heal'] < 0) { + $us['heal'] = 0; + } + if ($us['hp'] < 0) { + $us['hp'] = 0; + } + if ($us['yrn'] < 0) { + $us['yrn'] = 0; + } + if ($us['yrn_krit'] < 0) { + $us['yrn_krit'] = 0; + } + if ($us['_yrn'] > 0) { + $us['_yrn'] = 0; + } + if ($us['_yrn_krit'] > 0) { + $us['_yrn_krit'] = 0; + } + $team_data['ga'] += $us['ga']; + $team_data['gaa'] += $us['gaa']; + $team_data['gak'] += $us['gak']; + $team_data['hp'] += $us['hp']; + $team_data['hpAll'] += $us['hpAll']; + $team_data['yrn'] += $us['yrn']; + $team_data['yrn_krit'] += $us['yrn_krit']; + $team_data['_yrn'] += $us['_yrn']; + $team_data['_yrn_krit'] += $us['_yrn_krit']; + $team_data['val_b'] += $us['value']['b']; + $team_data['val_y'] += $us['value']['y']; + $team_data['val_p'] += $us['value']['p']; + $team_data['heal'] += $us['heal']; + $winw = ''; + if ($us['hp'] < 1) { + $us['hp'] = '0'; + $winw = ''; + } else { + $winw = ''; + } + $r .= '' . $winw . '' . con_login( + $us + ) . ' [' . $us['hp'] . '/' . $us['hpAll'] . ']' . (0 + $us['zona'][1]) . '/' . (0 + $us['zona'][2]) . '/' . (0 + $us['zona'][3]) . '/' . (0 + $us['zona'][4]) . '/' . (0 + $us['zona'][5]) . '' . (0 + $us['zonb'][1]) . '/' . (0 + $us['zonb'][2]) . '/' . (0 + $us['zonb'][3]) . '/' . (0 + $us['zonb'][4]) . '/' . (0 + $us['zonb'][5]) . '' . (0 + $us['ga']) . '(' . (0 + $us['gak']) . ')/' . ($us['gaa']) . '' . $us['value']['b'] . '/' . $us['value']['y'] . '/' . $us['value']['p'] . '' . $us['yrn'] . '/' . $us['yrn_krit'] . '' . (-$us['_yrn']) . '' . $us['heal'] . ''; + } + unset($us); + $j++; + } + if ($team_data['g'] == true) { + $winw = '--'; + if ($team_data['hp'] < 1) { + $team_data['hp'] = '0'; + } else { + $winw = ''; + } + $r .= '' . $winw . 'Всего [' . $team_data['hp'] . '/' . $team_data['hpAll'] . ']  ' . (0 + $team_data['ga']) . '(' . (0 + $team_data['gak']) . ')/' . ($team_data['gaa']) . '' . $team_data['val_b'] . '/' . $team_data['val_y'] . '/' . $team_data['val_p'] . '' . $team_data['yrn'] . '/' . $team_data['yrn_krit'] . '' . (-$team_data['_yrn']) . '' . $team_data['heal'] . ''; + } + + $i++; + } + $r .= ''; + // + $r .= ' Логин - имя персонажа и уровень жизни: [сейчас/всего]
    Удары - статистика ударов по областям: голова/грудь/живот/пояс/ноги
    Блоки - статистика блоков по областям: голова/грудь/живот/пояс/ноги
    @@ -455,390 +476,461 @@ if(isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { Урон - выбито HP из противников / из них критами
    Потери - получено повреждений
    Вылечено - восстановлено HP
    '; - - $r = '
    '.$b.'
    '.$tbtl.$p.'Статус битвы: '.$allprice.'


    '.$usr.$r.'
    '.$p.'
    '; - //header('location: main.php'); -}elseif(!isset($btl['id'])) -{ - $r = '

    Скорее всего Архивариус снова потерял пергамент с хрониками боев ...
    '; -}else{ - include('jx/battle/log_text.php'); - function testlog($pl) - { - global $log_text,$c,$u,$code; - if($pl['type']==1 || $pl['type']==6) - { - $dt = explode('||',$pl['vars']); - $i = 0; $d = array(); - while($i'.$d['login1'].'',$rt); - $rt = str_replace('{u2}',''.$d['login2'].'',$rt); - $rt = str_replace('{pr}',''.$d['prm'].'',$rt); - $rt = str_replace('^^^^','=',$rt); - $rt = str_replace('{tm1}',''.date('H:i',$d['time1']).'',$rt); - $rt = str_replace('{tm2}',''.date('H:i',$d['time2']).'',$rt); - $rt = str_replace('{tm3}',''.date('d.m.y H:i',$d['time1']).'',$rt); - $rt = str_replace('{tm4}',''.date('d.m.y H:i',$d['time2']).'',$rt); - - $k01 = 1; - $zb1 = array(1=>0,2=>0,3=>0,4=>0,5=>0); - $zb2 = array(1=>0,2=>0,3=>0,4=>0,5=>0); - - if($d['bl2']>0) - { - $b11 = 1; - $b12 = $d['bl1']; - while($b11<=$d['zb1']) - { - $zb1[$b12] = 1; - if($b12>=5 || $b12<0) - { - $b12 = 0; - } - $b12++; - $b11++; - } - } - - if($d['bl2']>0) - { - $b11 = 1; - $b12 = $d['bl2']; - while($b11<=$d['zb2']) - { - $zb2[$b12] = 1; - if($b12>=5 || $b12<0) - { - $b12 = 0; - } - $b12++; - $b11++; - } - } - - - while($k01<=5) - { - $zns01 = ''; $zns02 = ''; - $j01 = 1; - while($j01<=5) - { - $zab1 = '0'; $zab2 = '0'; - if($j01==$k01) - { - $zab1 = '1'; - $zab2 = '1'; - } - - $zab1 .= $zb1[$j01]; - $zab2 .= $zb2[$j01]; - - $zns01 .= ''; - $zns02 .= ''; - $j01++; - } - $rt = str_replace('{zn1_'.$k01.'}',$zns01,$rt); - $rt = str_replace('{zn2_'.$k01.'}',$zns02,$rt); - $k01++; - } - $j = 1; - while($j<=21) - { - //замена R - игрок 1 - $r = $log_text[$d['s1']][$j]; - $k = 0; - while($k<=count($r)) - { - if(isset($log_text[$d['s1']][$j][$k])) - { - $rt = str_replace('{1x'.$j.'x'.$k.'}',$log_text[$d['s1']][$j][$k],$rt); - } - $k++; - } - //замена R - игрок 2 - $r = $log_text[$d['s2']][$j]; - $k = 0; - while($k<=count($r)) - { - if(isset($log_text[$d['s2']][$j][$k])) - { - $rt = str_replace('{2x'.$j.'x'.$k.'}',$log_text[$d['s2']][$j][$k],$rt); - } - $k++; - } - $j++; - } - - //заменяем данные повторно - $rt = str_replace('{u1}',''.$d['login1'].'',$rt); - $rt = str_replace('{u2}',''.$d['login2'].'',$rt); - $rt = str_replace('{pr}',''.$d['prm'].'',$rt); - $rt = str_replace('^^^^','=',$rt); - $rt = str_replace('{tm1}',''.date('H:i',$d['time1']).'',$rt); - $rt = str_replace('{tm2}',''.date('H:i',$d['time2']).'',$rt); - $rt = str_replace('{tm3}',''.date('d.m.y H:i',$d['time1']).'',$rt); - $rt = str_replace('{tm4}',''.date('d.m.y H:i',$d['time2']).'',$rt); - - //закончили заменять - $pl['text'] = $rt; - } - return $pl['text']; - } - //Получаем логи - $min = round(12*((int)$_GET['p']-1)); - if($min<1) - { - $min = 0; - } - $max = $min+11; - - $based = 'battle_logs_save'; - $sp_cnt = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `battle_logs_save` WHERE `battle` = "'.$btl['id'].'" AND `id_hod` > '.$min.' AND `id_hod` <= '.$max.' ORDER BY `id_hod`, `time` ASC LIMIT 1')); - if( $sp_cnt[0] < 1 ) { - $based = 'battle_logs'; - } - - //генерируем страницы - $pmax = mysql_fetch_array(mysql_query('SELECT `id_hod`,`id` FROM `'.$based.'` WHERE `battle` = "'.$btl['id'].'" ORDER BY `id_hod` DESC LIMIT 1')); - $pmax = $pmax['id_hod']; - $pmax = ceil($pmax/12); - - if($min > round(12*($pmax-1))) - { - $min = round(12*($pmax-1)); - $max = $min+11; - } - $i = 1; - while($i<=$pmax) - { - if((int)$_GET['p']==$i || ((int)$_GET['p']>$pmax && $i==$pmax) || ((int)$_GET['p']<1 && $i==1)) - { - $p .= ' '.$i.' '; - }else{ - $p .= ' '.$i.' '; - } - $i++; - } - $h = 0; $clr = 'f2e5e0'; $cclr = ''; - $sp = mysql_query('SELECT * FROM `'.$based.'` WHERE `battle` = "'.$btl['id'].'" AND `id_hod` > '.$min.' AND `id_hod` <= '.($max+1).' ORDER BY `id_hod`, `id` ASC LIMIT 200'); - while($pl = mysql_fetch_array($sp)) - { - $pl['text'] = testlog($pl); - $pl['text'] = str_replace('\"','"',$pl['text']); - if($h!=$pl['id_hod']) - { - if($h>0) - { - if($clr == 'f2e5e0') { - $clr = 'f2e5E5'; - }else{ - $clr = 'f2e5e0'; - } - $cclr = 'border-top:1px solid #b1b1b1;'; - #$r .= '
    '; - } - $h = $pl['id_hod']; - }else{ - //$r .= '
    '; - } - $r .= '
    '.$pl['text'].'
    '; - $cclr = ''; - } - //собираем страницу - $p = 'Страницы: '.$p; - $usr = ''; - if($btl['team_win'] == -1) { - $sp = mysql_query('SELECT + $r = '
    ' . $b . '
    ' . $tbtl . $p . 'Статус битвы: ' . $allprice . '


    ' . $usr . $r . '
    ' . $p . '
    '; + //header('location: main.php'); +} elseif (!isset($btl['id'])) { + $r = '

    Скорее всего Архивариус снова потерял пергамент с хрониками боев ...
    '; +} else { + include('jx/battle/log_text.php'); + function testlog($pl) + { + global $log_text; + if ($pl['type'] == 1 || $pl['type'] == 6) { + $dt = explode('||', $pl['vars']); + $i = 0; + $d = []; + while ($i < count($dt)) { + $r = explode('=', $dt[$i]); + if ($r[0] != '') { + $d[$r[0]] = $r[1]; + } + $i++; + } + //обычный удар + $rt = $pl['text']; + //заменяем данные + $rt = str_replace( + '{u1}', + '' . $d['login1'] . '', + $rt + ); + $rt = str_replace( + '{u2}', + '' . $d['login2'] . '', + $rt + ); + $rt = str_replace('{pr}', '' . $d['prm'] . '', $rt); + $rt = str_replace('^^^^', '=', $rt); + $rt = str_replace('{tm1}', '' . date('H:i', $d['time1']) . '', $rt); + $rt = str_replace('{tm2}', '' . date('H:i', $d['time2']) . '', $rt); + $rt = str_replace('{tm3}', '' . date('d.m.y H:i', $d['time1']) . '', $rt); + $rt = str_replace('{tm4}', '' . date('d.m.y H:i', $d['time2']) . '', $rt); + + $k01 = 1; + $zb1 = [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0]; + $zb2 = [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0]; + + if ($d['bl2'] > 0) { + $b11 = 1; + $b12 = $d['bl1']; + while ($b11 <= $d['zb1']) { + $zb1[$b12] = 1; + if ($b12 >= 5 || $b12 < 0) { + $b12 = 0; + } + $b12++; + $b11++; + } + } + + if ($d['bl2'] > 0) { + $b11 = 1; + $b12 = $d['bl2']; + while ($b11 <= $d['zb2']) { + $zb2[$b12] = 1; + if ($b12 >= 5 || $b12 < 0) { + $b12 = 0; + } + $b12++; + $b11++; + } + } + + + while ($k01 <= 5) { + $zns01 = ''; + $zns02 = ''; + $j01 = 1; + while ($j01 <= 5) { + $zab1 = '0'; + $zab2 = '0'; + if ($j01 == $k01) { + $zab1 = '1'; + $zab2 = '1'; + } + + $zab1 .= $zb1[$j01]; + $zab2 .= $zb2[$j01]; + + $zns01 .= ''; + $zns02 .= ''; + $j01++; + } + $rt = str_replace('{zn1_' . $k01 . '}', $zns01, $rt); + $rt = str_replace('{zn2_' . $k01 . '}', $zns02, $rt); + $k01++; + } + + $j = 1; + while ($j <= 21) { + //замена R - игрок 1 + $r = $log_text[$d['s1']][$j]; + $k = 0; + while ($k <= count($r)) { + if (isset($log_text[$d['s1']][$j][$k])) { + $rt = str_replace('{1x' . $j . 'x' . $k . '}', $log_text[$d['s1']][$j][$k], $rt); + } + $k++; + } + //замена R - игрок 2 + $r = $log_text[$d['s2']][$j]; + $k = 0; + while ($k <= count($r)) { + if (isset($log_text[$d['s2']][$j][$k])) { + $rt = str_replace('{2x' . $j . 'x' . $k . '}', $log_text[$d['s2']][$j][$k], $rt); + } + $k++; + } + $j++; + } + + //заменяем данные повторно + $rt = str_replace( + '{u1}', + '' . $d['login1'] . '', + $rt + ); + $rt = str_replace( + '{u2}', + '' . $d['login2'] . '', + $rt + ); + $rt = str_replace('{pr}', '' . $d['prm'] . '', $rt); + $rt = str_replace('^^^^', '=', $rt); + $rt = str_replace('{tm1}', '' . date('H:i', $d['time1']) . '', $rt); + $rt = str_replace('{tm2}', '' . date('H:i', $d['time2']) . '', $rt); + $rt = str_replace('{tm3}', '' . date('d.m.y H:i', $d['time1']) . '', $rt); + $rt = str_replace('{tm4}', '' . date('d.m.y H:i', $d['time2']) . '', $rt); + + //закончили заменять + $pl['text'] = $rt; + } + return $pl['text']; + } + + //Получаем логи + $min = round(12 * ((int)$_GET['p'] - 1)); + if ($min < 1) { + $min = 0; + } + $max = $min + 11; + + $based = 'battle_logs_save'; + $sp_cnt = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(*) FROM `battle_logs_save` WHERE `battle` = "' . $btl['id'] . '" AND `id_hod` > ' . $min . ' AND `id_hod` <= ' . $max . ' ORDER BY `id_hod`, `time` ASC LIMIT 1' + ) + ); + if ($sp_cnt[0] < 1) { + $based = 'battle_logs'; + } + + //генерируем страницы + $pmax = mysql_fetch_array( + mysql_query( + 'SELECT `id_hod`,`id` FROM `' . $based . '` WHERE `battle` = "' . $btl['id'] . '" ORDER BY `id_hod` DESC LIMIT 1' + ) + ); + $pmax = $pmax['id_hod']; + $pmax = ceil($pmax / 12); + + if ($min > round(12 * ($pmax - 1))) { + $min = round(12 * ($pmax - 1)); + $max = $min + 11; + } + $i = 1; + while ($i <= $pmax) { + if ((int)$_GET['p'] == $i || ((int)$_GET['p'] > $pmax && $i == $pmax) || ((int)$_GET['p'] < 1 && $i == 1)) { + $p .= ' ' . $i . ' '; + } else { + $p .= ' ' . $i . ' '; + } + $i++; + } + $h = 0; + $clr = 'f2e5e0'; + $cclr = ''; + $sp = mysql_query( + 'SELECT * FROM `' . $based . '` WHERE `battle` = "' . $btl['id'] . '" AND `id_hod` > ' . $min . ' AND `id_hod` <= ' . ($max + 1) . ' ORDER BY `id_hod`, `id` ASC LIMIT 200' + ); + while ($pl = mysql_fetch_array($sp)) { + $pl['text'] = testlog($pl); + $pl['text'] = str_replace('\"', '"', $pl['text']); + if ($h != $pl['id_hod']) { + if ($h > 0) { + if ($clr == 'f2e5e0') { + $clr = 'f2e5E5'; + } else { + $clr = 'f2e5e0'; + } + $cclr = 'border-top:1px solid #b1b1b1;'; + #$r .= '
    '; + } + $h = $pl['id_hod']; + } else { + //$r .= '
    '; + } + $r .= '
    ' . $pl['text'] . '
    '; + $cclr = ''; + } + //собираем страницу + $p = 'Страницы: ' . $p; + $usr = ''; + if ($btl['team_win'] == -1) { + $sp = mysql_query( + 'SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`sex`,`u`.`align`,`u`.`online`,`u`.`battle`,`u`.`clan`, `s`.`hpNow`,`s`.`bot`,`s`.`team`,`u`.`city` - FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `u`.`battle` = "'.$btl['id'].'" AND `s`.`hpNow` >= 1'); - - $usrs = array(-1 => array()); - - while($pl = mysql_fetch_array($sp)) { - if(!isset($usrs[$pl['team']])) { - $usrs[$pl['team']] = ''; - $usrs[-1][count($usrs[-1])] = $pl['team']; - } - if($pl['align'] > 0) { - $usrs[$pl['team']] .= ''; - } - if($pl['clan'] > 0) { - $usrs[$pl['team']] .= ''; - } - $pl['stats_r'] = $u->getStats($pl['id']); - $usrs[$pl['team']] .= ''.$pl['login'].' ['.ceil($pl['stats_r']['hpNow']).'/'.$pl['stats_r']['hpAll'].'],'; - } - - if(count($usrs[-1]) > 0) { - $i = 0; - while($i < count($usrs[-1])) { - $usr .= rtrim($usrs[$usrs[-1][$i]],','); - if(count($usrs[-1]) > $i+1) { - $usr .= '   против   '; - } - $i++; - } - } - - if($usr != '') { - $usr = '
    '.$usr.'

    '; - } - } - $tbtl = ''; - if( $btl['invis'] > 0 ) { - $tbtl .= ''; - } - if($btl['type'] == 0) { - $tbtl = 'Тип боя: '.$tbtl.' (физический поединок)     '; - }elseif($btl['type'] == 1) { - $tbtl = 'Тип боя: '.$tbtl.' (кулачный поединок)     '; - }elseif($btl['type'] == 250) { - $tbtl = ''; - $tbtl = 'Тип боя: '.$tbtl.' (Война Кланов)     '; - }elseif($btl['smert'] == 1) { - $tbtl = ''; - $tbtl = 'Тип боя: '.$tbtl.' (Жесточайшее Сражение)     '; - }else{ - $tbtl = 'Тип боя: '.$tbtl.' (физический поединок)     '; - } - - if( $btl['izlom'] > 0 ) { - $tbtl .= 'Волна: '.$btl['izlomRoundSee'].'     '; - } - - $r = '
    '.$b.'
    '.$tbtl.$p.'Статус битвы: '.$allprice.'


    '.$r.'
    '.$usr.'
    '.$p.'
    '; - - } + FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `u`.`battle` = "' . $btl['id'] . '" AND `s`.`hpNow` >= 1' + ); + + $usrs = [-1 => []]; + + while ($pl = mysql_fetch_array($sp)) { + if (!isset($usrs[$pl['team']])) { + $usrs[$pl['team']] = ''; + $usrs[-1][count($usrs[-1])] = $pl['team']; + } + if ($pl['align'] > 0) { + $usrs[$pl['team']] .= ''; + } + if ($pl['clan'] > 0) { + $usrs[$pl['team']] .= ''; + } + $pl['stats_r'] = $u->getStats($pl['id']); + $usrs[$pl['team']] .= '' . $pl['login'] . ' [' . ceil( + $pl['stats_r']['hpNow'] + ) . '/' . $pl['stats_r']['hpAll'] . '],'; + } + + if (count($usrs[-1]) > 0) { + $i = 0; + while ($i < count($usrs[-1])) { + $usr .= rtrim($usrs[$usrs[-1][$i]], ','); + if (count($usrs[-1]) > $i + 1) { + $usr .= '   против   '; + } + $i++; + } + } + + if ($usr != '') { + $usr = '
    ' . $usr . '

    '; + } + } + $tbtl = ''; + if ($btl['invis'] > 0) { + $tbtl .= ''; + } + if ($btl['type'] == 0) { + $tbtl = 'Тип боя: ' . $tbtl . ' (физический поединок)     '; + } elseif ($btl['type'] == 1) { + $tbtl = 'Тип боя: ' . $tbtl . ' (кулачный поединок)     '; + } elseif ($btl['type'] == 250) { + $tbtl = ''; + $tbtl = 'Тип боя: ' . $tbtl . ' (Война Кланов)     '; + } elseif ($btl['smert'] == 1) { + $tbtl = ''; + $tbtl = 'Тип боя: ' . $tbtl . ' (Жесточайшее Сражение)     '; + } else { + $tbtl = 'Тип боя: ' . $tbtl . ' (физический поединок)     '; + } + + if ($btl['izlom'] > 0) { + $tbtl .= 'Волна: ' . $btl['izlomRoundSee'] . '     '; + } + + $r = '
    ' . $b . '
    ' . $tbtl . $p . 'Статус битвы: ' . $allprice . '


    ' . $r . '
    ' . $usr . '
    ' . $p . '
    '; + +} ?> - -Архив: Поединки - - - - - - - - - + + Архив: Поединки + + + + + + + + + - +
    -

    - +

    + -

    Бойцовский Клуб   www.new-combats.com

    +

    Бойцовский + Клуб   www.new-combats.com




    \ No newline at end of file diff --git a/lotowork.php b/lotowork.php index c14850d7..12f1bdda 100644 --- a/lotowork.php +++ b/lotowork.php @@ -1,39 +1,28 @@ '.$_SERVER['SERVER_ADDR']); - } -*/ - -define('GAME',true); +const GAME = true; include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); +$u = User::start(); $body = file_get_contents('php://input'); -$user = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$body.'" LIMIT 1')); -$titm = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$body.'" AND `vals` = "loto" AND `time` > '.(time()-24*60*60).' ORDER BY `time` DESC LIMIT 1')); -if(isset($user) && $user['id']==$u->info['id'] ) -{ - if ($titm==false) - { - // не редкий > t1 42% чуть чуть редкий > t2 25% немного редкий > t3 15% редкий > t4 10% очень редкий > t5 5% невероятно редкий > t6 3% - /*$droplist = array( - 0=>4514, t1 +$user = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $body . '" LIMIT 1')); +$titm = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `actions` WHERE `uid` = "' . $body . '" AND `vals` = "loto" AND `time` > ' . (time( + ) - 24 * 60 * 60) . ' ORDER BY `time` DESC LIMIT 1' + ) +); +if (!isset($user) || $user['id'] != $u->info['id']) { + echo "No user!"; +} elseif ($titm) { + echo "Wait asign!"; +} else { + // не редкий > t1 42% чуть чуть редкий > t2 25% немного редкий > t3 15% редкий > t4 10% очень редкий > t5 5% невероятно редкий > t6 3% + /*$droplist = array( + 0=>4514, t1 1=>4515, t1 - 2=>4688, t1 + 2=>4688, t1 3=>4689, t1 4=>4690, t1 5=>5009, t2 @@ -51,129 +40,108 @@ if(isset($user) && $user['id']==$u->info['id'] ) 17=>6114, t4 18=>6115, t4 19=>6116, t4 - 20=>6360, t6 + 20=>6360, t6 21=>6462, t5 22=>5022, t6 - 23=>5023, t6 - 24=>6445, t5 + 23=>5023, t6 + 24=>6445, t5 25=>6455, t3 26=>10009, t4 27=>1032, t1 28=>1031, t1 29=>1034 t1 - );*/ - $nrnd=rand(1,100); - if ($nrnd <= 1) //t6 - { - $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t6"'); - $y=mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t6"')); - $rndt=rand(0,$y['COUNT']-1); - $i=0; - while($pl = mysql_fetch_array($droplistt)) - { - if($i==$rndt) - { - $droplist = $pl; - } - $i++; - } - } - elseif (($nrnd-1) <= 5) // t5 - { - $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t5"'); - $y=mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t5"')); - $rndt=rand(0,$y['COUNT']-1); - $i=0; - while($pl = mysql_fetch_array($droplistt)) - { - if($i==$rndt) - { - $droplist = $pl; - } - $i++; - } - } - elseif (($nrnd-1-5) <= 7) // t4 - { - $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t4"'); - $y=mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t4"')); - $rndt=rand(0,$y['COUNT']-1); - $i=0; - while($pl = mysql_fetch_array($droplistt)) - { - if($i==$rndt) - { - $droplist = $pl; - } - $i++; - } - } - elseif (($nrnd-1-5-7) <= 10) // t3 - { - $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t3"'); - $y=mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t3"')); - $rndt=rand(0,$y['COUNT']-1); - $i=0; - while($pl = mysql_fetch_array($droplistt)) - { - if($i==$rndt) - { - $droplist = $pl; - } - $i++; - } - } - elseif (($nrnd-1-5-7-10) <= 15) // t2 - { - $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t2"'); - $y=mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t2"')); - $rndt=rand(0,$y['COUNT']-1); - $i=0; - while($pl = mysql_fetch_array($droplistt)) - { - if($i==$rndt) - { - $droplist = $pl; - } - $i++; - } - } - else // t1 - { - $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t1"'); - $y=mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t1"')); - $rndt=rand(0,$y['COUNT']-1); - $i=0; - while($pl = mysql_fetch_array($droplistt)) - { - if($i==$rndt) - { - $droplist = $pl; - } - $i++; - } - } + );*/ + $nrnd = rand(1, 100); + if ($nrnd <= 1) //t6 + { + $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t6"'); + $y = mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t6"')); + $rndt = rand(0, $y['COUNT'] - 1); + $i = 0; + while ($pl = mysql_fetch_array($droplistt)) { + if ($i == $rndt) { + $droplist = $pl; + } + $i++; + } + } elseif (($nrnd - 1) <= 5) // t5 + { + $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t5"'); + $y = mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t5"')); + $rndt = rand(0, $y['COUNT'] - 1); + $i = 0; + while ($pl = mysql_fetch_array($droplistt)) { + if ($i == $rndt) { + $droplist = $pl; + } + $i++; + } + } elseif (($nrnd - 1 - 5) <= 7) // t4 + { + $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t4"'); + $y = mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t4"')); + $rndt = rand(0, $y['COUNT'] - 1); + $i = 0; + while ($pl = mysql_fetch_array($droplistt)) { + if ($i == $rndt) { + $droplist = $pl; + } + $i++; + } + } elseif (($nrnd - 1 - 5 - 7) <= 10) // t3 + { + $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t3"'); + $y = mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t3"')); + $rndt = rand(0, $y['COUNT'] - 1); + $i = 0; + while ($pl = mysql_fetch_array($droplistt)) { + if ($i == $rndt) { + $droplist = $pl; + } + $i++; + } + } elseif (($nrnd - 1 - 5 - 7 - 10) <= 15) // t2 + { + $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t2"'); + $y = mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t2"')); + $rndt = rand(0, $y['COUNT'] - 1); + $i = 0; + while ($pl = mysql_fetch_array($droplistt)) { + if ($i == $rndt) { + $droplist = $pl; + } + $i++; + } + } else // t1 + { + $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t1"'); + $y = mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t1"')); + $rndt = rand(0, $y['COUNT'] - 1); + $i = 0; + while ($pl = mysql_fetch_array($droplistt)) { + if ($i == $rndt) { + $droplist = $pl; + } + $i++; + } + } - if (isset($droplist['id'])) - { - $idve=$droplist['idgame']; - $u->addItem($idve,$user['id'],'|frompisher=1|nosale=1'.$user['login']); - $inf = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$idve.'" LIMIT 1')); - $titm = mysql_query('INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`,`vals`) VALUES ("'.$user['id'].'","'.time().'","'.loto.'","'.$user['room'].'","'.$idve.'","'.mysql_real_escape_string($_SERVER['HTTP_X_REAL_IP']).'","loto")'); - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Игрок '.$user['login'].' выиграл в бесплатной рулетке '.$inf['name'].'!","capitalcity","","6","1","'.time().'")'); - echo $droplist['id']; // - } - else - { - echo 'Error'; - } - } - else - { - echo "Wait asign!"; - } -} -else -{ - echo "No user!"; + if (!isset($droplist['id'])) { + echo 'Error'; + } else { + $idve = $droplist['idgame']; + $u->addItem($idve, $user['id'], '|frompisher=1|nosale=1' . $user['login']); + $inf = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $idve . '" LIMIT 1')); + $titm = mysql_query( + 'INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`,`vals`) VALUES ("' . $user['id'] . '","' . time( + ) . '","' . loto . '","' . $user['room'] . '","' . $idve . '","' . mysql_real_escape_string( + $_SERVER['HTTP_X_REAL_IP'] + ) . '","loto")' + ); + mysql_query( + 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Игрок ' . $user['login'] . ' выиграл в бесплатной рулетке ' . $inf['name'] . '!","capitalcity","","6","1","' . time( + ) . '")' + ); + echo $droplist['id']; // + } } diff --git a/lotoworkekr.php b/lotoworkekr.php index e0da64f6..b9523445 100644 --- a/lotoworkekr.php +++ b/lotoworkekr.php @@ -1,166 +1,120 @@ '.$_SERVER['SERVER_ADDR']); - } -*/ - -define('GAME',true); +const GAME = true; include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); - +$u = User::start(); $body = file_get_contents('php://input'); -$user = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$body.'" LIMIT 1')); -if ($body == 'ekr') -{ - echo $u->info['money2']; - die(); +$user = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $body . '" LIMIT 1')); +if ($body == 'ekr') { + echo $u->info['money2']; + die(); } - -if(isset($user) && $user['id']==$u->info['id']) -{ - if ($user['money2']>=5) - { - $nrnd=rand(1,100); - if ($nrnd <= 1) //t6 - { - $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t6"'); - $y=mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t6"')); - $rndt=rand(0,$y['COUNT']-1); - $i=0; - while($pl = mysql_fetch_array($droplistt)) - { - if($i==$rndt) - { - $droplist = $pl; - } - $i++; - } - } - elseif (($nrnd-1) <= 7) // t5 - { - $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t5"'); - $y=mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t5"')); - $rndt=rand(0,$y['COUNT']-1); - $i=0; - while($pl = mysql_fetch_array($droplistt)) - { - if($i==$rndt) - { - $droplist = $pl; - } - $i++; - } - } - elseif (($nrnd-1-7) <= 10) // t4 - { - $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t4"'); - $y=mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t4"')); - $rndt=rand(0,$y['COUNT']-1); - $i=0; - while($pl = mysql_fetch_array($droplistt)) - { - if($i==$rndt) - { - $droplist = $pl; - } - $i++; - } - } - elseif (($nrnd-1-7-10) <= 15) // t3 - { - $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t3"'); - $y=mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t3"')); - $rndt=rand(0,$y['COUNT']-1); - $i=0; - while($pl = mysql_fetch_array($droplistt)) - { - if($i==$rndt) - { - $droplist = $pl; - } - $i++; - } - } - elseif (($nrnd-1-7-10-15) <= 25) // t2 - { - $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t2"'); - $y=mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t2"')); - $rndt=rand(0,$y['COUNT']-1); - $i=0; - while($pl = mysql_fetch_array($droplistt)) - { - if($i==$rndt) - { - $droplist = $pl; - } - $i++; - } - } - else // t1 - { - $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t1"'); - $y=mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t1"')); - $rndt=rand(0,$y['COUNT']-1); - $i=0; - while($pl = mysql_fetch_array($droplistt)) - { - if($i==$rndt) - { - $droplist = $pl; - } - $i++; - } - } - if (isset($droplist['id'])) - { - $idve=$droplist['idgame']; - $u->addItem($idve,$user['id'],'|frompisher=1|nosale=1'.$user['login']); - $inf = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$idve.'" LIMIT 1')); - //$titm = mysql_query('INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`,`vals`) VALUES ("'.$user['id'].'","'.time().'","'.loto.'","'.$user['room'].'","'.$idve.'","'.mysql_real_escape_string($_SERVER['HTTP_X_REAL_IP']).'","loto")'); - $u->info['money2'] = $u->info['money2'] - 5; - mysql_query('UPDATE `users` SET `money2`= `money2` - 5 WHERE `id` = "'.$u->info['id'].'"'); - if ($droplist['type']=="t6" || $droplist['type']=="t5") - { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Игрок '.$user['login'].' выиграл в платной рулетке '.$inf['name'].'!","capitalcity","","6","1","'.time().'")'); - } - echo $droplist['id']; // это закоментить - /*//этот блок разкоментить - $array = array( - '1' => $droplist['id']', // 1 элемент id вещи - '2' => $u->info['money2'] // бабло пользователя - ); - $json = json_encode($array); - echo $json;*/ - - } - else - { - echo 'Error'; - } - } - else - { - echo "No Ekr!"; - } -} -else -{ - echo "No user!"; +if (!isset($user) || $user['id'] != $u->info['id']) { + echo "No user!"; +} else { + if ($user['money2'] < 5) { + echo "No Ekr!"; + } else { + $nrnd = rand(1, 100); + if ($nrnd <= 1) //t6 + { + $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t6"'); + $y = mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t6"')); + $rndt = rand(0, $y['COUNT'] - 1); + $i = 0; + while ($pl = mysql_fetch_array($droplistt)) { + if ($i == $rndt) { + $droplist = $pl; + } + $i++; + } + } elseif (($nrnd - 1) <= 7) // t5 + { + $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t5"'); + $y = mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t5"')); + $rndt = rand(0, $y['COUNT'] - 1); + $i = 0; + while ($pl = mysql_fetch_array($droplistt)) { + if ($i == $rndt) { + $droplist = $pl; + } + $i++; + } + } elseif (($nrnd - 1 - 7) <= 10) // t4 + { + $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t4"'); + $y = mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t4"')); + $rndt = rand(0, $y['COUNT'] - 1); + $i = 0; + while ($pl = mysql_fetch_array($droplistt)) { + if ($i == $rndt) { + $droplist = $pl; + } + $i++; + } + } elseif (($nrnd - 1 - 7 - 10) <= 15) // t3 + { + $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t3"'); + $y = mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t3"')); + $rndt = rand(0, $y['COUNT'] - 1); + $i = 0; + while ($pl = mysql_fetch_array($droplistt)) { + if ($i == $rndt) { + $droplist = $pl; + } + $i++; + } + } elseif (($nrnd - 1 - 7 - 10 - 15) <= 25) // t2 + { + $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t2"'); + $y = mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t2"')); + $rndt = rand(0, $y['COUNT'] - 1); + $i = 0; + while ($pl = mysql_fetch_array($droplistt)) { + if ($i == $rndt) { + $droplist = $pl; + } + $i++; + } + } else // t1 + { + $droplistt = mysql_query('SELECT * FROM `loto` WHERE `type` = "t1"'); + $y = mysql_fetch_array(mysql_query('SELECT COUNT(`type`) AS `COUNT` FROM `loto` WHERE `type` = "t1"')); + $rndt = rand(0, $y['COUNT'] - 1); + $i = 0; + while ($pl = mysql_fetch_array($droplistt)) { + if ($i == $rndt) { + $droplist = $pl; + } + $i++; + } + } + if (!isset($droplist['id'])) { + echo 'Error'; + } else { + $idve = $droplist['idgame']; + $u->addItem($idve, $user['id'], '|frompisher=1|nosale=1' . $user['login']); + $inf = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $idve . '" LIMIT 1')); + $u->info['money2'] = $u->info['money2'] - 5; + mysql_query('UPDATE `users` SET `money2`= `money2` - 5 WHERE `id` = "' . $u->info['id'] . '"'); + if ($droplist['type'] == "t6" || $droplist['type'] == "t5") { + mysql_query( + 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Игрок ' . $user['login'] . ' выиграл в платной рулетке ' . $inf['name'] . '!","capitalcity","","6","1","' . time( + ) . '")' + ); + } + echo $droplist['id']; // это закоментить + /*//этот блок разкоментить + $array = array( + '1' => $droplist['id']', // 1 элемент id вещи + '2' => $u->info['money2'] // бабло пользователя + ); + $json = json_encode($array); + echo $json;*/ + } + } } diff --git a/main.php b/main.php index 5e2e1042..72421d36 100644 --- a/main.php +++ b/main.php @@ -24,6 +24,7 @@ } +
    \n"; var_dump($vars); echo "\n"; - if ($d) exit(); + if ($d) { + exit(); + } } define('IP', GetRealIp()); require_once('_incl_data/__config.php'); -define('GAME', true); +const GAME = true; require_once('_incl_data/class/__db_connect.php'); date_default_timezone_set('Europe/Moscow'); -require_once('_incl_data/class/__magic.php'); -require_once('_incl_data/class/__user.php'); -require_once('_incl_data/class/__filter_class.php'); -require_once('_incl_data/class/__quest.php'); +$magic = new Magic(); +$u = User::start(); +$filter = new Filter(); +$q = new Quests; /** Восстанавливаем всем ботам, которые не в бою здоровье до максимума. */ -Db::exec('update stats set +Db::exec( + 'update stats set hpNow = hpAll, mpNow = mpAll where - id in (select id from users where bot = 2 and battle = 0)'); + id in (select id from users where bot = 2 and battle = 0)' +); if ($u->info['banned'] > 0) { header('location: /index.php'); @@ -93,37 +99,35 @@ if ($u->room['file'] == "room_hostel" || $u->room['file'] == "post") { #--------для общаги, и позже для почты if ($u->info['online'] < time() - 60 || $u->info['afk'] != '') { - $filter->setOnline($u->info['8'], $u->info['id'], 0); + $filter->setOnline($u->info['8'], $u->info['id']); $u->onlineBonus(); - mysql_query("UPDATE `users` SET `online`='" . time() . "',`timeMain`='" . time() . "',`afk`='' WHERE `id`='" . $u->info['id'] . "' LIMIT 1"); + mysql_query( + "UPDATE `users` SET `online`='" . time() . "',`timeMain`='" . time( + ) . "',`afk`='' WHERE `id`='" . $u->info['id'] . "' LIMIT 1" + ); } elseif ($u->info['timeMain'] < time() - 60 || $u->info['afk'] != '') { - mysql_query("UPDATE `users` SET `online`='" . time() . "',`timeMain`='" . time() . "',`afk`='' WHERE `id`='" . $u->info['id'] . "' LIMIT 1"); + mysql_query( + "UPDATE `users` SET `online`='" . time() . "',`timeMain`='" . time( + ) . "',`afk`='' WHERE `id`='" . $u->info['id'] . "' LIMIT 1" + ); } if (!isset($u->info['id']) || ($u->info['joinIP'] == 1 && $u->info['ip'] != $_SERVER['HTTP_X_REAL_IP']) || $u->info['banned'] > 0) { die($c['exit']); } -if ($u->info['battle_text'] != '') { - //Показываем системку и заносим данные - if ($u->info['last_b'] > 0) { - mysql_query('INSERT INTO `battle_last` (`battle_id`,`uid`,`time`,`act`,`level`,`align`,`clan`,`exp`) VALUES ("' . $u->info['last_b'] . '","' . $u->info['id'] . '","' . time() . '","' . $u->info['last_a'] . '","' . $u->info['level'] . '","' . $u->info['align'] . '","' . $u->info['clan'] . '","' . $u->info['exp'] . '")'); - } +//Показываем системку и заносим данные +if ($u->info['battle_text'] != '' && $u->info['last_b'] > 0) { + mysql_query( + 'INSERT INTO `battle_last` (`battle_id`,`uid`,`time`,`act`,`level`,`align`,`clan`,`exp`) VALUES ("' . $u->info['last_b'] . '","' . $u->info['id'] . '","' . time( + ) . '","' . $u->info['last_a'] . '","' . $u->info['level'] . '","' . $u->info['align'] . '","' . $u->info['clan'] . '","' . $u->info['exp'] . '")' + ); } -if (!isset($_GET['mAjax']) and !isset($_GET['ajaxHostel'])) - echo ' - - - - - - - - - - -'; +if (!isset($_GET['mAjax']) && !isset($_GET['ajaxHostel'])) { + echo ' +
    '; +} $act = -2; $act2 = 0; $u->stats = $u->getStats($u->info['id'], 0); @@ -141,10 +145,20 @@ $ul = $u->testLevel(); if (isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user'] != $u->info['id']) { if ($u->room['noatack'] == 0) { - $ua = mysql_fetch_array(mysql_query('SELECT `id`,`clan` FROM `users` WHERE`id` = "' . mysql_real_escape_string($_GET['atak_user']) . '" LIMIT 1')); - $cruw = mysql_fetch_array(mysql_query('SELECT `id`,`type` FROM `clan_wars` WHERE + $ua = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`clan` FROM `users` WHERE`id` = "' . mysql_real_escape_string( + $_GET['atak_user'] + ) . '" LIMIT 1' + ) + ); + $cruw = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`type` FROM `clan_wars` WHERE ((`clan1` = "' . $ua['clan'] . '" AND `clan2` = "' . $u->info['clan'] . '") OR (`clan2` = "' . $ua['clan'] . '" AND `clan1` = "' . $u->info['clan'] . '")) AND - `time_finish` > ' . time() . ' LIMIT 1')); + `time_finish` > ' . time() . ' LIMIT 1' + ) + ); unset($ua); if (isset($cruw['id'])) { $cruw = $cruw['type']; @@ -152,10 +166,29 @@ if (isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user'] ! $cruw = 0; } - $ua = mysql_fetch_array(mysql_query('SELECT `s`.*,`u`.* FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `s`.`id` = `u`.`id` WHERE (`s`.`atack` > "' . time() . '" OR `s`.`atack` = 1 OR 1 = ' . $cruw . ' OR 2 = ' . $cruw . ') AND `s`.`id` = "' . mysql_real_escape_string($_GET['atak_user']) . '" LIMIT 1')); - $check = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `id_eff` = 478 AND `uid` = "' . $u->info['id'] . '" AND `delete` = 0 ORDER BY `overType` DESC LIMIT 1;')); - $check2 = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `id_eff` = 479 AND `uid` = "' . $ua['id'] . '" AND `delete` = 0 ORDER BY `overType` DESC LIMIT 1;')); - $test = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_last` WHERE `uid` = "' . $u->info['id'] . '" AND `battle_id` = "' . $ua['battle'] . '" LIMIT 1')); + $ua = mysql_fetch_array( + mysql_query( + 'SELECT `s`.*,`u`.* FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `s`.`id` = `u`.`id` WHERE (`s`.`atack` > "' . time( + ) . '" OR `s`.`atack` = 1 OR 1 = ' . $cruw . ' OR 2 = ' . $cruw . ') AND `s`.`id` = "' . mysql_real_escape_string( + $_GET['atak_user'] + ) . '" LIMIT 1' + ) + ); + $check = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `eff_users` WHERE `id_eff` = 478 AND `uid` = "' . $u->info['id'] . '" AND `delete` = 0 ORDER BY `overType` DESC LIMIT 1;' + ) + ); + $check2 = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `eff_users` WHERE `id_eff` = 479 AND `uid` = "' . $ua['id'] . '" AND `delete` = 0 ORDER BY `overType` DESC LIMIT 1;' + ) + ); + $test = mysql_fetch_array( + mysql_query( + 'SELECT `id` FROM `battle_last` WHERE `uid` = "' . $u->info['id'] . '" AND `battle_id` = "' . $ua['battle'] . '" LIMIT 1' + ) + ); if ($ua['no_ip'] == 'trupojor' && $ua['level'] == 9 && $u->info['level'] > 9) { $u->error = 'Нельзя нападать на монстра этого уровня!'; } elseif ($ua['no_ip'] == 'trupojor' && $ua['level'] == 10 && $u->info['level'] < 10) { @@ -173,7 +206,11 @@ if (isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user'] ! $minHp = floor($usta['hpAll'] / 100 * 33); // минимальный запас здоровья цели при котором можно напасть if ($ua['battle'] > 0) { - $uabt = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "' . $ua['battle'] . '" AND `team_win` = "-1" LIMIT 1')); + $uabt = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `battle` WHERE `id` = "' . $ua['battle'] . '" AND `team_win` = "-1" LIMIT 1' + ) + ); if (!isset($uabt['id'])) { $ua['battle'] = 0; } @@ -201,9 +238,13 @@ if (isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user'] ! $ua['type_pers'] = 500; } - mysql_query('UPDATE `stats` SET `hpNow` = "' . $usta['hpNow'] . '",`mpNow` = "' . $usta['mpNow'] . '" WHERE `id` = "' . $usta['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `stats` SET `hpNow` = "' . $usta['hpNow'] . '",`mpNow` = "' . $usta['mpNow'] . '" WHERE `id` = "' . $usta['id'] . '" LIMIT 1' + ); - $goodt = $magic->atackUser($u->info['id'], $ua['id'], $ua['team'], $ua['battle'], $ua['bbexp'], $ua['type_pers']); + $goodt = $magic->atackUser( + $u->info['id'], $ua['id'], $ua['team'], $ua['battle'], $ua['bbexp'], $ua['type_pers'] + ); if ($cruw == 2) { $rtxt = '[img[items/pal_button9.gif]] "' . $u->info['login'] . '" совершил' . $sx . ' кровавое нападение по метке на персонажа "' . $ua['login'] . '".'; @@ -212,7 +253,10 @@ if (isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user'] ! } if ($goodt > 0) { - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1')"); + mysql_query( + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time( + ) . "','6','0','1')" + ); } unset($goodt); header('location: main.php'); @@ -251,11 +295,17 @@ if ($u->info['repass'] > 0) { } define('IP', GetRealIp()); - if (isset($_POST['renpass']) && $_POST['renpass'] == $_POST['renpass2'] && md5($_POST['renpass']) != $u->info['pass']) { + if (isset($_POST['renpass']) && $_POST['renpass'] == $_POST['renpass2'] && md5( + $_POST['renpass'] + ) != $u->info['pass']) { if ($u->info['ip'] == IP) { $u->info['pass'] = md5($_POST['renpass']); setcookie('pass', $u->info['pass'], time() + 30 * 60 * 60 * 24, '', 'new-combats.com'); - mysql_query('UPDATE `users` SET `pass` = "' . mysql_real_escape_string($u->info['pass']) . '",`repass` = "0",`type_pers` = "0",`bot_room` = "0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `users` SET `pass` = "' . mysql_real_escape_string( + $u->info['pass'] + ) . '",`repass` = "0",`type_pers` = "0",`bot_room` = "0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); mysql_query('UPDATE `stats` SET `bot` = "0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); } else { die('Внимание! Смена пароля привязана к ip %' . $u->info['ip'] . '.
    Для восстановления контроля войдите с данного IP, либо обратитесь к Администрации проекта через нового персонажа. Приносим извинения за неудобства!
    '); @@ -268,7 +318,8 @@ if ($u->info['repass'] > 0) { echo 'Внимание!Пароли не совпадают.'; } } - die('


    Смените пожалуйста пароль от персонажа!
    Данная смена проходит, если пароль не менялся более 2 месяцев.



    + die( + '


    Смените пожалуйста пароль от персонажа!
    Данная смена проходит, если пароль не менялся более 2 месяцев.



    Сменить пароль @@ -278,13 +329,18 @@ if ($u->info['repass'] > 0) {
    -
    '); + ' + ); } } /*-----------------------*/ if ($u->info['battle'] == 0) { - $btl_last = mysql_fetch_array(mysql_query('SELECT `id`,`battle` FROM `battle_users` WHERE `uid` = "' . $u->info['id'] . '" AND `finish` = "0" LIMIT 1')); + $btl_last = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`battle` FROM `battle_users` WHERE `uid` = "' . $u->info['id'] . '" AND `finish` = "0" LIMIT 1' + ) + ); } if (isset($btl_last['id']) && $u->info['battle'] == 0) { require_once('modules_data/btl_.php'); @@ -329,7 +385,9 @@ if (isset($btl_last['id']) && $u->info['battle'] == 0) { if ($u->info['allLock'] < time()) { $u->deleteItem(intval($_GET['delete']), $u->info['id']); } else { - echo ''; + echo ''; } } elseif (isset($_GET['unstack']) && isset($_GET['inv']) && $u->newAct($_GET['sd4'])) { $u->unstack(intval($_GET['unstack']), intval($_GET['unstackCount'])); @@ -417,7 +475,7 @@ if (isset($_GET['worklist']) && $u->info['admin'] > 0) { die(); } require_once('modules_data/_alhp.php'); -//Панель букмекера + //Панель букмекера } elseif (isset($_GET['bukmeker']) && $u->info['level'] > 0 && !isset($u->tfer['id'])) { require_once('modules_data/_bukmeker.php'); //Панель светлого @@ -445,7 +503,8 @@ if (isset($_GET['worklist']) && $u->info['admin'] > 0) { "; if ($u->info['dnow'] > 0) { - require_once('_incl_data/class/__dungeon.php'); + $d = new Dungeon; + $d->start(); } require_once('modules_data/_dialog.php'); } elseif (isset($_GET['inv']) && !isset($u->tfer['id']) && $trololo == 1) { @@ -461,7 +520,9 @@ if (isset($_GET['worklist']) && $u->info['admin'] > 0) { } elseif ((isset($_GET['transfer']) || isset($u->tfer['id'])) && $u->info['level'] >= $c['level_ransfer'] && $trololo == 1 && $u->info['inTurnir'] == 0 && $u->info['inTurnirnew'] == 0) { if ($u->info['allLock'] > time()) { require_once('modules_data/_locations.php'); - echo ''; + echo ''; } else { require_once('modules_data/_transfers.php'); } @@ -478,30 +539,19 @@ if (isset($_GET['worklist']) && $u->info['admin'] > 0) { } } -/** - * Отключил потому что эта строчка крашит плавку рун. - * PHP Fatal error: Call to a member function testquest() on a non-object - * Невероятно, но факт. Инс. 09.06.22 - */ //Проверяем квесты на готовность -if (in_array($u->room['file'], [ - 'dungeon_enter', - 'dungeon_enter_all', - 'enterbezdna', - 'entercat', - 'enterdrago', - 'entergrib', - 'enternizin', - 'enterptp', - 'house_belaun', - 'dungeon' -])) { +if (in_array( + $u->room['file'], + ['dungeon_enter', 'dungeon_enter_all', 'enterbezdna', 'entercat', 'enterdrago', 'entergrib', 'enternizin', 'enterptp', 'house_belaun', 'dungeon'] +)) { $q->testquest(); } $iloc = ''; $iloce = ''; -$sp = mysql_query('SELECT * FROM `items_local` WHERE (`room` = "' . $u->info['room'] . '" OR `room` = "-1") AND `delete` = "0" AND `user_take` = "0" AND `tr_login` = "' . $u->info['login'] . '"'); +$sp = mysql_query( + 'SELECT * FROM `items_local` WHERE (`room` = "' . $u->info['room'] . '" OR `room` = "-1") AND `delete` = "0" AND `user_take` = "0" AND `tr_login` = "' . $u->info['login'] . '"' +); while ($pl = mysql_fetch_array($sp)) { $itmo = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $pl['item_id'] . '" LIMIT 1')); if (isset($itmo['id'])) { @@ -527,20 +577,30 @@ while ($pl = mysql_fetch_array($sp)) { if ($pl['time'] + 86400 < time()) { //Не успели поднять $glid = 1; - mysql_query('UPDATE `items_local` SET `delete` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `items_local` SET `delete` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' + ); } elseif (isset($_GET['take_loc_item']) && $_GET['take_loc_item'] == $pl['id']) { // if ($u->info['battle'] > 0 && $tk == 1) { $iloce = 'Вы не можете поднять предмет, завершите поединок...'; } elseif ($tk == 1) { $iloce = 'Вы успешно подняли предмет "' . $itmo['name'] . '" в локации "' . $u->room['name'] . '".'; - mysql_query('UPDATE `items_local` SET `delete` = "' . time() . '" , `user_take` = "' . $u->info['id'] . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `items_local` SET `delete` = "' . time( + ) . '" , `user_take` = "' . $u->info['id'] . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' + ); //выдаем предмет $glid = 1; if ($pl['data'] == '0') { - $u->addItem($pl['item_id'], $u->info['id'], '|from_loc_id=' . $pl['id'] . '|from_loc=' . $u->info['room']); + $u->addItem( + $pl['item_id'], $u->info['id'], '|from_loc_id=' . $pl['id'] . '|from_loc=' . $u->info['room'] + ); } else { - $u->addItem($pl['item_id'], $u->info['id'], '|from_loc_id=' . $pl['id'] . '|from_loc=' . $u->info['room'] . '|' . $pl['data']); + $u->addItem( + $pl['item_id'], $u->info['id'], + '|from_loc_id=' . $pl['id'] . '|from_loc=' . $u->info['room'] . '|' . $pl['data'] + ); } } } @@ -548,8 +608,7 @@ while ($pl = mysql_fetch_array($sp)) { if ($tk == 1 && $pl['tr_login'] == '0') { $tk = 2; } - $iloc .= '
    ' . - '
    ' . '' . - '
    '; + $iloc .= '" src="https://img.new-combats.com/i/items/' . $itmo['img'] . '">' . '
    '; } } else { echo '[!]'; @@ -572,10 +630,7 @@ if ($iloc != '') { if ($iloce != '') { $iloc = '
    ' . $iloce . '
    ' . $iloc; } - $iloc = '' . - '

    В комнате разбросаны предметы

    ' . $iloc; + $iloc = '' . '

    В комнате разбросаны предметы

    ' . $iloc; $tjs .= 'top.frames[\'main\'].locitems=1;parent.$(\'#canal1\').html( \'' . $iloc . '\' );'; } else { $tjs .= 'top.frames[\'main\'].locitems=1;parent.$(\'#canal1\').html( \'\' );'; @@ -583,7 +638,11 @@ if ($iloc != '') { unset($iloc, $iloce); /*-----------------------*/ -$spl = mysql_fetch_array(mysql_query('SELECT `exp` FROM `levels` WHERE `nextLevel` = "' . ($u->info['level'] + 1) . '" ORDER BY `exp` ASC LIMIT 1')); +$spl = mysql_fetch_array( + mysql_query( + 'SELECT `exp` FROM `levels` WHERE `nextLevel` = "' . ($u->info['level'] + 1) . '" ORDER BY `exp` ASC LIMIT 1' + ) +); $spl = $spl['exp']; echo ' '; diff --git a/main_bot.php b/main_bot.php index 0e028ffc..a66608bc 100644 --- a/main_bot.php +++ b/main_bot.php @@ -1,483 +1,283 @@ -'.$_SERVER['SERVER_ADDR']); +if ($_SERVER['HTTP_CF_CONNECTING_IP'] != $_SERVER['SERVER_ADDR'] && $_SERVER['HTTP_CF_CONNECTING_IP'] != '127.0.0.1') { + die('Hello pussy!'); +} +if (getIPblock() != $_SERVER['SERVER_ADDR'] && getIPblock() != '127.0.0.1' && getIPblock() != '' && getIPblock( + ) != '91.228.152.24') { + die(getIPblock() . '
    ' . $_SERVER['SERVER_ADDR']); } include('_incl_data/__config.php'); -define('GAME',true); +const GAME = true; include('_incl_data/class/__db_connect.php'); -/*mysql_query("LOCK TABLES -`aaa_monsters` WRITE, -`actions` WRITE, -`bank` WRITE, - -`battle` WRITE, -`battle_act` WRITE, -`battle_actions` WRITE, -`battle_cache` WRITE, -`battle_end` WRITE, -`battle_last` WRITE, -`battle_logs` WRITE, -`battle_logs_save` WRITE, -`battle_stat` WRITE, -`battle_users` WRITE, - -`bs_actions` WRITE, -`bs_items` WRITE, -`bs_items_use` WRITE, -`bs_logs` WRITE, -`bs_map` WRITE, -`bs_statistic` WRITE, -`bs_trap` WRITE, -`bs_turnirs` WRITE, -`bs_zv` WRITE, - -`clan` WRITE, -`clan_wars` WRITE, - -`dungeon_actions` WRITE, -`dungeon_bots` WRITE, -`dungeon_items` WRITE, -`dungeon_map` WRITE, -`dungeon_now` WRITE, -`dungeon_zv` WRITE, - -`eff_main` WRITE, -`eff_users` WRITE, - -`items_img` WRITE, -`items_local` WRITE, -`items_main` WRITE, -`items_main_data` WRITE, -`items_users` WRITE, - -`izlom` WRITE, -`izlom_rating` WRITE, - -`laba_act` WRITE, -`laba_itm` WRITE, -`laba_map` WRITE, -`laba_now` WRITE, -`laba_obj` WRITE, - -`levels` WRITE, -`levels_animal` WRITE, - -`online` WRITE, - -`priems` WRITE, - -`quests` WRITE, -`reimage` WRITE, - -`reg` WRITE, - -`stats` WRITE, -`test_bot` WRITE, -`turnirs` WRITE, -`users` WRITE, -`users_animal` WRITE, -`user_ico` WRITE, -`users_twink` WRITE, -`zayvki` WRITE;");*/ - -function e($t) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #'.date('d.m.Y').' %'.date('H:i:s').' (Критическая ошибка): '.mysql_real_escape_string($t).'","capitalcity","TABU","6","1","-1")'); +function e($t) +{ + mysql_query( + 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #' . date('d.m.Y') . ' %' . date( + 'H:i:s' + ) . ' (Критическая ошибка): ' . mysql_real_escape_string($t) . '","capitalcity","TABU","6","1","-1")' + ); } -if(isset($_GET['cron_core'])) { - $id = array( - 'id' => $_GET['uid'], - 'pass' => $_GET['pass'] - ); - if(md5($id['id'].'_brfCOreW@!_'.$id['pass']) == $_GET['cron_core']) { - $uzr = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`pass` FROM `users` WHERE `id` = "'.mysql_real_escape_string($id['id']).'" AND `pass` = "'.mysql_real_escape_string($id['pass']).'" LIMIT 1')); - if(isset($uzr['id'])) { - $CRON_CORE = true; - $_COOKIE['login'] = $uzr['login']; - $_COOKIE['pass'] = $uzr['pass']; - $_POST['id'] = 'reflesh'; - - - if(isset($_GET['atack'])) { - $_POST['atack'] = $_GET['atack']; - } - if(isset($_GET['block'])) { - $_POST['block'] = $_GET['block']; - } - if(isset($_GET['usepriem'])) { - $_POST['usepriem'] = $_GET['usepriem']; - } - if(isset($_GET['useitem'])) { - $_POST['useitem'] = $_GET['useitem']; - } - } - } +if (isset($_GET['cron_core'])) { + $id = [ + 'id' => $_GET['uid'], + 'pass' => $_GET['pass'], + ]; + if (md5($id['id'] . '_brfCOreW@!_' . $id['pass']) == $_GET['cron_core']) { + $uzr = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`login`,`pass` FROM `users` WHERE `id` = "' . mysql_real_escape_string( + $id['id'] + ) . '" AND `pass` = "' . mysql_real_escape_string($id['pass']) . '" LIMIT 1' + ) + ); + if (isset($uzr['id'])) { + $CRON_CORE = true; + $_COOKIE['login'] = $uzr['login']; + $_COOKIE['pass'] = $uzr['pass']; + $_POST['id'] = 'reflesh'; + + + if (isset($_GET['atack'])) { + $_POST['atack'] = $_GET['atack']; + } + if (isset($_GET['block'])) { + $_POST['block'] = $_GET['block']; + } + if (isset($_GET['usepriem'])) { + $_POST['usepriem'] = $_GET['usepriem']; + } + if (isset($_GET['useitem'])) { + $_POST['useitem'] = $_GET['useitem']; + } + } + } } -if(!isset($uzr['id'])) { - header('location: main.php'); - die(); +if (!isset($uzr['id'])) { + header('location: main.php'); + die(); } unset($uzr); -include('_incl_data/class/__magic.php'); -include('_incl_data/class/__user.php'); -include('_incl_data/class/__filter_class.php'); -include('_incl_data/class/__quest.php'); +$magic = new Magic(); +$u = User::start(); +$filter = new Filter(); +$q = new Quests; -if($u->info['activ']>0) { - die('Вам необходимо активировать персонажа.
    Авторизируйтесь с главной страницы.'); +if ($u->info['activ'] > 0) { + die('Вам необходимо активировать персонажа.
    Авторизируйтесь с главной страницы.'); } $tjs = ''; #--------для общаги, и позже для почты -$sleep = $u->testAction('`vars` = "sleep" AND `uid` = "'.$u->info['id'].'" LIMIT 1',1); -if($u->room['file']!="objaga" && $sleep['id']>0) { - mysql_query('UPDATE `actions` SET `vars` = "unsleep" WHERE `id` = "'.$sleep['id'].'" LIMIT 1'); +$sleep = $u->testAction('`vars` = "sleep" AND `uid` = "' . $u->info['id'] . '" LIMIT 1', 1); +if ($u->room['file'] != "objaga" && $sleep['id'] > 0) { + mysql_query('UPDATE `actions` SET `vars` = "unsleep" WHERE `id` = "' . $sleep['id'] . '" LIMIT 1'); +} +if ($u->room['file'] == "objaga" || $u->room['file'] == "post") { + $trololo = 0; +} else { + $trololo = 1; } -if($u->room['file']=="objaga" || $u->room['file']=="post"){$trololo=0;}else{$trololo=1;} #--------для общаги, и позже для почты -if($u->info['online'] < time()-60) -{ - $filter->setOnline($u->info['online'],$u->info['id'],0); - mysql_query("UPDATE `users` SET `online`='".time()."',`timeMain`='".time()."' WHERE `id`='".$u->info['id']."' LIMIT 1"); -}elseif($u->info['timeMain'] < time()-60) -{ - mysql_query("UPDATE `users` SET `online`='".time()."',`timeMain`='".time()."' WHERE `id`='".$u->info['id']."' LIMIT 1"); +if ($u->info['online'] < time() - 60) { + $filter->setOnline($u->info['online'], $u->info['id']); + mysql_query( + "UPDATE `users` SET `online`='" . time() . "',`timeMain`='" . time( + ) . "' WHERE `id`='" . $u->info['id'] . "' LIMIT 1" + ); +} elseif ($u->info['timeMain'] < time() - 60) { + mysql_query( + "UPDATE `users` SET `online`='" . time() . "',`timeMain`='" . time( + ) . "' WHERE `id`='" . $u->info['id'] . "' LIMIT 1" + ); } -if(!isset($u->info['id']) || ($u->info['joinIP']==1 && $u->info['ip']!=$_SERVER['HTTP_X_REAL_IP']) || $u->info['banned']>0) -{ - die($c['exit']); +if (!isset($u->info['id']) || ($u->info['joinIP'] == 1 && $u->info['ip'] != $_SERVER['HTTP_X_REAL_IP']) || $u->info['banned'] > 0) { + die($c['exit']); } -if(isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user']!=$u->info['id'] ) -{ - if($u->room['noatack'] == 0) { - $ua = mysql_fetch_array(mysql_query('SELECT `id`,`clan` FROM `users` WHERE`id` = "'.mysql_real_escape_string($_GET['atak_user']).'" LIMIT 1')); - $cruw = mysql_fetch_array(mysql_query('SELECT `id` FROM `clan_wars` WHERE - ((`clan1` = "'.$ua['clan'].'" AND `clan2` = "'.$u->info['clan'].'") OR (`clan2` = "'.$ua['clan'].'" AND `clan1` = "'.$u->info['clan'].'")) AND - `time_finish` > '.time().' LIMIT 1')); - unset($ua); - if(isset($cruw['id'])) { - $cruw = 1; - } - - $ua = mysql_fetch_array(mysql_query('SELECT `s`.`team`,`s`.`id`,`s`.`bbexp`,`u`.`battle`,`u`.`id`,`u`.`room`,`u`.`login`,`u`.`online` FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `s`.`id` = `u`.`id` WHERE (`s`.`atack` > "'.time().'" OR `s`.`atack` = 1 OR 1 = '.$cruw.') AND `s`.`id` = "'.mysql_real_escape_string($_GET['atak_user']).'" LIMIT 1')); - if(isset($ua['id']) && $ua['online'] > time()-520) - { - $usta = $u->getStats($ua['id'],0); // статы цели - $minHp = $usta['hpAll']/100*33; // минимальный запас здоровья цели при котором можно напасть - - if($ua['room']==$u->info['room'] && ($minHp<$usta['hpNow'] || $ua['battle']>0)) - { - $magic->atackUser($u->info['id'],$ua['id'],$ua['team'],$ua['battle'],$ua['bbexp'],50); - - $rtxt = '[img[items/pal_button8.gif]] "'.$u->info['login'].'" совершил'.$sx.' нападение по метке на персонажа "'.$ua['login'].'".'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - - header('location: main.php'); - die(); - }else{ - if($ua['room']!=$u->info['room']){ - //Персонаж в другой комнате - $u->error = 'Персонаж находится в другой комнате'; - }else{ - $u->error = 'Персонаж имеет слишком малый уровень жизней.'; - } - } - }else{ - //На персонажа нельзя напасть - $u->error = 'Персонаж не в игре, либо на нем нет метки'; - } - } - $u->error = 'Вам запрещается атаковать без разрешения...'; +if (isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user'] != $u->info['id']) { + if ($u->room['noatack'] == 0) { + $ua = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`clan` FROM `users` WHERE`id` = "' . mysql_real_escape_string( + $_GET['atak_user'] + ) . '" LIMIT 1' + ) + ); + $cruw = mysql_fetch_array( + mysql_query( + 'SELECT `id` FROM `clan_wars` WHERE + ((`clan1` = "' . $ua['clan'] . '" AND `clan2` = "' . $u->info['clan'] . '") OR (`clan2` = "' . $ua['clan'] . '" AND `clan1` = "' . $u->info['clan'] . '")) AND + `time_finish` > ' . time() . ' LIMIT 1' + ) + ); + unset($ua); + if (isset($cruw['id'])) { + $cruw = 1; + } + + $ua = mysql_fetch_array( + mysql_query( + 'SELECT `s`.`team`,`s`.`id`,`s`.`bbexp`,`u`.`battle`,`u`.`id`,`u`.`room`,`u`.`login`,`u`.`online` FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `s`.`id` = `u`.`id` WHERE (`s`.`atack` > "' . time( + ) . '" OR `s`.`atack` = 1 OR 1 = ' . $cruw . ') AND `s`.`id` = "' . mysql_real_escape_string( + $_GET['atak_user'] + ) . '" LIMIT 1' + ) + ); + if (isset($ua['id']) && $ua['online'] > time() - 520) { + $usta = $u->getStats($ua['id'], 0); // статы цели + $minHp = $usta['hpAll'] / 100 * 33; // минимальный запас здоровья цели при котором можно напасть + + if ($ua['room'] == $u->info['room'] && ($minHp < $usta['hpNow'] || $ua['battle'] > 0)) { + $magic->atackUser($u->info['id'], $ua['id'], $ua['team'], $ua['battle'], $ua['bbexp'], 50); + + $rtxt = '[img[items/pal_button8.gif]] "' . $u->info['login'] . '" совершил' . $sx . ' нападение по метке на персонажа "' . $ua['login'] . '".'; + mysql_query( + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time( + ) . "','6','0','1')" + ); + + header('location: main.php'); + die(); + } else { + if ($ua['room'] != $u->info['room']) { + //Персонаж в другой комнате + $u->error = 'Персонаж находится в другой комнате'; + } else { + $u->error = 'Персонаж имеет слишком малый уровень жизней.'; + } + } + } else { + //На персонажа нельзя напасть + $u->error = 'Персонаж не в игре, либо на нем нет метки'; + } + } + $u->error = 'Вам запрещается атаковать без разрешения...'; } -//mysql_query('START TRANSACTION'); - -if($u->info['battle_text']!='') -{ - //Показываем системку и заносим данные - if($u->info['last_b']>0) - { - mysql_query('INSERT INTO `battle_last` (`battle_id`,`uid`,`time`,`act`,`level`,`align`,`clan`,`exp`) VALUES ("'.$u->info['last_b'].'","'.$u->info['id'].'","'.time().'","'.$u->info['last_a'].'","'.$u->info['level'].'","'.$u->info['align'].'","'.$u->info['clan'].'","'.$u->info['exp'].'")'); - } - mysql_query('UPDATE `stats` SET `battle_text` = "",`last_b`="0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); +if ($u->info['battle_text'] != '') { + //Показываем системку и заносим данные + if ($u->info['last_b'] > 0) { + mysql_query( + 'INSERT INTO `battle_last` (`battle_id`,`uid`,`time`,`act`,`level`,`align`,`clan`,`exp`) VALUES ("' . $u->info['last_b'] . '","' . $u->info['id'] . '","' . time( + ) . '","' . $u->info['last_a'] . '","' . $u->info['level'] . '","' . $u->info['align'] . '","' . $u->info['clan'] . '","' . $u->info['exp'] . '")' + ); + } + mysql_query('UPDATE `stats` SET `battle_text` = "",`last_b`="0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); } -/*echo ' - - - - - - - - - - -'; -*/ -/*-----------------------*/ -$act = -2; $act2 = 0; -$u->stats = $u->getStats($u->info['id'],0); -$u->aves = $u->ves(NULL); -if(!isset($u->stats['act'])) -{ - $u->stats['act'] = 0; +$act = -2; +$act2 = 0; +$u->stats = $u->getStats($u->info['id'], 0); +$u->aves = $u->ves(null); +if (!isset($u->stats['act'])) { + $u->stats['act'] = 0; } -if($u->stats['act']==1) -{ - $act = 1; +if ($u->stats['act'] == 1) { + $act = 1; } -$u->rgd = $u->regen($u->info['id'],0,0); +$u->rgd = $u->regen($u->info['id'], 0, 0); //Проверка уровня -$ul = $u->testLevel(); -if($ul==1) -{ - $act = 1; -} -if($u->info['repass'] > 0 && $u->info['id'] != 5433446) { -function GetRealIp() -{ - if (!empty($_SERVER['HTTP_CLIENT_IP'])) - { - $ip=$_SERVER['HTTP_CLIENT_IP']; - } - elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) - { - $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; - } - else - { - $ip=$_SERVER['REMOTE_ADDR']; - } - return $ip; +$ul = $u->testLevel(); +if ($ul == 1) { + $act = 1; } -/*-----------------------*/ -if($u->info['battle']==0) -{ - //Проверка/Снятие эффектов - - //Проверка/Снятие предметов - //$act2 = $u->testItems($u->info['id'],$u->stats,0); - if($act2!=-2 && $act==-2) - { - $act = $act2; - } - - if(!isset($u->tfer['id']) && $u->room['block_all'] == 0) - { - //Одеть/снять предмет - if(isset($_GET['rstv']) && isset($_GET['inv'])) { - $act = $u->freeStatsMod($_GET['rstv'],$_GET['mf'],$u->info['id']); - }elseif(isset($_GET['ufs2']) && isset($_GET['inv'])) - { - $act = $u->freeStats2Item($_GET['itmid'],$_GET['ufs2'],$u->info['id'],1); - }elseif(isset($_GET['ufs2mf']) && isset($_GET['inv'])) - { - $act = $u->freeStats2Item($_GET['itmid'],$_GET['ufs2mf'],$u->info['id'],2); - }elseif(isset($_GET['ufsmst']) && isset($_GET['inv'])) - { - $act = $u->itemsSmSave($_GET['itmid'],$_GET['ufsmst'],$u->info['id']); - }elseif(isset($_GET['ufsms']) && isset($_GET['inv'])) - { - $act = $u->itemsSmSave($_GET['itmid'],$_GET['ufsms']+100,$u->info['id']); - }elseif(isset($_GET['ufs']) && isset($_GET['inv'])) - { - $act = $u->freeStatsItem($_GET['itmid'],$_GET['ufs'],$u->info['id']); - }elseif(isset($_GET['sid']) && isset($_GET['inv'])) - { - $act = $u->snatItem($_GET['sid'],$u->info['id']); - }elseif(isset($_GET['oid']) && isset($_GET['inv'])) - { - $act = $u->odetItem($_GET['oid'],$u->info['id']); - }elseif(isset($_GET['item_rune']) && isset($_GET['inv'])) - { - $act = $u->runeItem(NULL); - }elseif(isset($_GET['remitem'],$_GET['inv'])) - { - $act = $u->snatItemAll($u->info['id']); - }elseif(isset($_GET['delete']) && isset($_GET['inv']) && $u->newAct($_GET['sd4'])) - { - $u->deleteItem(intval($_GET['delete']),$u->info['id']); - }elseif(isset($_GET['stack']) && isset($_GET['inv'])) - { - $u->stack($_GET['stack']); - }elseif(isset($_GET['unstack']) && isset($_GET['inv'])) - { - $u->unstack($_GET['unstack']); - }elseif(isset($_GET['end_qst_now'])) - { - $q->endq((int)$_GET['end_qst_now'],'end'); - } - //Использовать эффект - if(isset($_GET['use_pid'])) - { - $magic->useItems((int)$_GET['use_pid']); - } - } +if ($u->info['repass'] > 0 && $u->info['id'] != 5433446) { + function GetRealIp() + { + if (!empty($_SERVER['HTTP_CLIENT_IP'])) { + $ip = $_SERVER['HTTP_CLIENT_IP']; + } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { + $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; + } else { + $ip = $_SERVER['REMOTE_ADDR']; + } + return $ip; + } -}elseif($u->info['battle_text']!='') -{ - //Показываем системку и заносим данные - if($u->info['last_b']>0) - { - - } - mysql_query('UPDATE `stats` SET `battle_text` = "",`last_b`="0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); + /*-----------------------*/ + if ($u->info['battle'] == 0) { + if ($act2 != -2 && $act == -2) { + $act = $act2; + } + + if (!isset($u->tfer['id']) && $u->room['block_all'] == 0) { + //Одеть/снять предмет + if (isset($_GET['rstv']) && isset($_GET['inv'])) { + $act = $u->freeStatsMod($_GET['rstv'], $_GET['mf'], $u->info['id']); + } elseif (isset($_GET['ufs2']) && isset($_GET['inv'])) { + $act = $u->freeStats2Item($_GET['itmid'], $_GET['ufs2'], $u->info['id'], 1); + } elseif (isset($_GET['ufs2mf']) && isset($_GET['inv'])) { + $act = $u->freeStats2Item($_GET['itmid'], $_GET['ufs2mf'], $u->info['id'], 2); + } elseif (isset($_GET['ufsmst']) && isset($_GET['inv'])) { + $act = $u->itemsSmSave($_GET['itmid'], $_GET['ufsmst'], $u->info['id']); + } elseif (isset($_GET['ufsms']) && isset($_GET['inv'])) { + $act = $u->itemsSmSave($_GET['itmid'], $_GET['ufsms'] + 100, $u->info['id']); + } elseif (isset($_GET['ufs']) && isset($_GET['inv'])) { + $act = $u->freeStatsItem($_GET['itmid'], $_GET['ufs'], $u->info['id']); + } elseif (isset($_GET['sid']) && isset($_GET['inv'])) { + $act = $u->snatItem($_GET['sid'], $u->info['id']); + } elseif (isset($_GET['oid']) && isset($_GET['inv'])) { + $act = $u->odetItem($_GET['oid'], $u->info['id']); + } elseif (isset($_GET['item_rune']) && isset($_GET['inv'])) { + $act = $u->runeItem(null); + } elseif (isset($_GET['remitem'], $_GET['inv'])) { + $act = $u->snatItemAll($u->info['id']); + } elseif (isset($_GET['delete']) && isset($_GET['inv']) && $u->newAct($_GET['sd4'])) { + $u->deleteItem(intval($_GET['delete']), $u->info['id']); + } elseif (isset($_GET['stack']) && isset($_GET['inv'])) { + $u->stack($_GET['stack']); + } elseif (isset($_GET['unstack']) && isset($_GET['inv'])) { + $u->unstack($_GET['unstack']); + } elseif (isset($_GET['end_qst_now'])) { + $q->endq((int)$_GET['end_qst_now'], 'end'); + } + //Использовать эффект + if (isset($_GET['use_pid'])) { + $magic->useItems((int)$_GET['use_pid']); + } + } + + } elseif ($u->info['battle_text'] != '') { + mysql_query('UPDATE `stats` SET `battle_text` = "",`last_b`="0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } + + if ($magic->youuse > 0) { + $act = 1; + } + //Получение статов + if ($act != -2) { + $u->stats = $u->getStats($u->info['id'], 0, 1); + $u->aves = $u->ves(null); + $act2 = $u->testItems($u->info['id'], $u->stats, 0); + if ($act2 != -2 && $act == -2) { + $act = $act2; + } + } } -if($magic->youuse > 0) -{ - $act = 1; +if ( + (isset($_GET['zayvka']) && $u->info['battle'] == 0) || + (isset($_GET['zayvka']) && ($_GET['r'] == 6 || $_GET['r'] == 7 || !isset($_GET['r'])) && $u->info['battle'] > 0) && + !isset($u->tfer['id'])) { + include('modules_data/_zv.php'); } -//Получение статов -if($act!=-2) -{ - $u->stats = $u->getStats($u->info['id'],0,1); - $u->aves = $u->ves(NULL); - $act2 = $u->testItems($u->info['id'],$u->stats,0); - if($act2!=-2 && $act==-2) - { - $act = $act2; - } -} -} - -if((isset($_GET['zayvka']) && $u->info['battle']==0) || (isset($_GET['zayvka']) && ($_GET['r']==6 || $_GET['r']==7 || !isset($_GET['r'])) && $u->info['battle']>0) && !isset($u->tfer['id'])) -{ - include('modules_data/_zv.php'); -} - -/*-----------------------*/ -/* -if(isset($_GET['security']) && !isset($u->tfer['id']) && $trololo==1) -{ - include('modules_data/_changepass.php'); -}elseif(isset($_GET['quests'])) -{ - include('modules_data/_quests.php'); -}elseif($u->info['level']>1 && isset($_GET['friends']) && !isset($u->tfer['id'])) -{ - include('modules_data/_friends.php'); -}elseif((($u->info['align']>=1 && $u->info['align']<2) || $u->info['admin']>0) && isset($_GET['light']) && !isset($u->tfer['id'])) -{ - include('modules_data/_mod.php'); -}elseif((($u->info['align']>=3 && $u->info['align']<4) || $u->info['admin']>0) && isset($_GET['dark']) && !isset($u->tfer['id'])) -{ - include('modules_data/_mod.php'); -}elseif(($u->info['clan']>0 || (($u->info['align']>1 && $u->info['align']<2) || ($u->info['align']>3 && $u->info['align']<4))) && isset($_GET['clan']) && !isset($u->tfer['id'])) -{ - if(($u->info['align']>1 && $u->info['align']<2) || ($u->info['align']>3 && $u->info['align']<4)) { - include('modules_data/_clan.php'); - }else{ - include('modules_data/_clan_oldversion.php'); - } -}elseif(isset($_GET['admin']) && $u->info['admin']>0) -{ - if($u->info['id']==7) { - include('modules_data/_light.php'); - }else{include('modules_data/_mod.php');} -}elseif(isset($_GET['help'])) -{ - include('modules_data/help.php'); -}elseif(isset($_GET['vip']) && !isset($u->tfer['id'])) -{ - include('modules_data/vip.php'); -}elseif((isset($_GET['zayvka']) && $u->info['battle']==0) || (isset($_GET['zayvka']) && ($_GET['r']==6 || $_GET['r']==7 || !isset($_GET['r'])) && $u->info['battle']>0) && !isset($u->tfer['id'])) -{ - if($u->room['zvsee'] == 1) { - include('modules_data/_zv2.php'); - }else{ - include('modules_data/_zv.php'); - } -}elseif(isset($_GET['alh']) && $u->info['level']>0 && !isset($u->tfer['id'])) -{ - include('modules_data/_alh.php'); -}elseif(isset($_GET['alhp']) && $u->info['admin']==1 && !isset($u->tfer['id'])) -{ - include('modules_data/_alhp.php'); -}elseif($u->info['battle']!=0) -{ - //поединок - include('modules_data/btl_.php'); -}else{ - if(isset($_GET['talk']) && !isset($u->tfer['id'])) - { - if($u->info['dnow']>0 && !isset($u->tfer['id'])) - { - include('_incl_data/class/__dungeon.php'); - } - include('modules_data/_dialog.php'); - }elseif(isset($_GET['act_sec']) && !isset($u->tfer['id']) && $trololo==1) - { - include('modules_data/_security.php'); - }elseif(isset($_GET['inv']) && !isset($u->tfer['id']) && $trololo==1) - { - include('modules_data/_inv.php'); - }elseif(isset($_GET['cryshop']) && !isset($u->tfer['id']) && $trololo==1 && $u->info['level']>0) - { - include('modules_data/_cryshop.php'); - }elseif(isset($_GET['referals']) && $trololo==1 && !isset($u->tfer['id']) && $u->info['level']>0){ - include('modules_data/_ref.php'); - }elseif(isset($_GET['obraz']) && !isset($u->tfer['id']) && $trololo==1) - { - include('modules_data/_obraz.php'); - }elseif(isset($_GET['skills']) && !isset($u->tfer['id']) && $trololo==1) - { - include('modules_data/_umenie.php'); - }elseif((isset($_GET['transfer']) || isset($u->tfer['id'])) && $u->info['level']>=$c['level_ransfer'] && $trololo==1) - { - include('modules_data/_transfers.php'); - }elseif(isset($_GET['anketa']) && !isset($u->tfer['id']) && $trololo==1) - { - include('modules_data/_anketa.php'); - }elseif(isset($_GET['pet']) && $u->info['animal']>0 && $trololo==1) - { - include('modules_data/_animal.php'); - }elseif(isset($_GET['act_trf']) && $u->room['block_all']==0) { - include('modules_data/act_trf.php'); - }elseif(!isset($u->tfer['id'])) - { - include('modules_data/_locations.php'); - } -} -*/ - -//mysql_query('COMMIT'); - -if($u->room['name']=='Башня Смерти' && $u->info['inUser']>0 && $u->info['lost']>0) -{ - //mysql_query('UPDATE `users` SET `inUser` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - //кидаем травму - //header('location: main.php'); -} - -//Проверяем квесты на готовность -//$q->testquest(); - -/*-----------------------*/ -/*echo ' -';*/ - -//unlink($lock_file); mysql_query('UNLOCK TABLES'); -?> diff --git a/map.php b/map.php index 951fdb79..bcfb2a46 100644 --- a/map.php +++ b/map.php @@ -1,18 +1,19 @@ info['banned'] > 0 || !isset($u->info['id'])) { +if($u->info['banned'] || !isset($u->info['id'])) { header('location: /index.php'); die(); } diff --git a/modules_data/1_panel.php b/modules_data/1_panel.php index 2a46c781..150c6cf7 100644 --- a/modules_data/1_panel.php +++ b/modules_data/1_panel.php @@ -1,6 +1,6 @@ info['room']==209){ - include('_incl_data/class/__zv.php'); + $zv = new FightRequest(); } if($re!=''){ diff --git a/modules_data/_bukmeker.php b/modules_data/_bukmeker.php index 9c20b3b4..c8080bd9 100644 --- a/modules_data/_bukmeker.php +++ b/modules_data/_bukmeker.php @@ -1,112 +1,137 @@ - - var elem = document.getElementById('se-pre-con'); - elem.parentNode.removeChild(elem); - - "; -if(!defined('GAME')) -{ - die(); +info['bukmeker'] && !$u->info['admin']) { + die(); } -if($u->info['bukmeker']<>1 && $u->info['admin']<>1){ - die('

    Не нужно так делать!

    '); -} -?> - - -
    -

    Добро пожаловать в панель Букмекера, персонаж info['login']?>

    -info['id'])."' LIMIT 1")); -if(isset($ba['id'])) { +$ba = mysql_fetch_array(mysql_query("SELECT * FROM `bank_alh` WHERE `uid` = " . $u->info['id'])); ?> - - - - -
    -

    Доступно

    - кр. -
    - - microLogin($uba['id'],1).'
    '; - }else{ - echo 'Банковский счет заблокирован, либо не найден.
    '; - unset($_POST['buy_cr']); - } - echo '
    '; - if(isset($uba['login'])) { - $_POST['buk_cr'] = round($_POST['buk_cr'],2); - if(isset($_POST['buk_cr']) && $_POST['buk_cr'] < 1) { - echo 'Минимальная сумма перевода: 1 кр.
    '; - unset($_POST['buk_cr']); - }elseif($_POST['buk_cr'] > $ba['cr']) { - echo 'Недостаточно средств на счете
    '; - unset($_POST['buk_cr']); - } - if(isset($_POST['buygoodluck'])) { - echo ''; - $ba['cr'] -= $_POST['buk_cr']; - $ba['USD'] += round($_POST['buk_cr']*$ucur,2); - mysql_query('UPDATE `bank_alh` SET `cr` = "'.mysql_real_escape_string($ba['cr']).'",`USD` = "'.mysql_real_escape_string($ba['USD']).'" WHERE `id` = "'.$ba['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `money` = `money` + '.mysql_real_escape_string($_POST['buk_cr']).' WHERE `login` = "'.$uba['login'].'" LIMIT 1'); - - $money = round($_POST['buk_cr']*$pl['cur'],2); - $money = round($money/100*(100-$ba['procent']),2); - - }else{ - echo 'Сумма кр.:'; - if(!isset($_POST['buk_cr'])) { - echo '              
    '; - }else{ - echo ' '.round((int)$_POST['buk_cr'],2).' кр.'; - echo '   '; - } - } - } - } - - if(isset($_POST['buy_cr'])){ ?> Перевести кр персонажу: - -
    -info['bukmeker']=1 || $u->info['admin']==1){ - if (isset($_POST['systemM']) && !empty($_POST['systemM'])){ - - $r = "Внимание:"; - $r .=' '.$_POST['sysMes'].' [Букмекерская Контора]'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','','','','".$r."','".time()."','6','0')"); - - echo "
    Системное сообщение отправленно"; + + + +

    Панель Букмекера

    +
    + Привет, info['login'] ?>. + + +
    -} -?> \ No newline at end of file + + + + + +
    +

    Доступно

    + кр. +
    +
    + microLogin($uba['id'], 1) . '
    '; + } else { + echo 'Банковский счет заблокирован, либо не найден.
    '; + unset($_POST['buy_cr']); + } + echo '
    '; + if (isset($uba['login'])) { + $_POST['buk_cr'] = round($_POST['buk_cr'], 2); + if (isset($_POST['buk_cr']) && $_POST['buk_cr'] < 1) { + echo 'Минимальная сумма перевода: 1 кр.
    '; + unset($_POST['buk_cr']); + } elseif ($_POST['buk_cr'] > $ba['cr']) { + echo 'Недостаточно средств на счете
    '; + unset($_POST['buk_cr']); + } + if (isset($_POST['buygoodluck'])) { + echo ''; + $ba['cr'] -= $_POST['buk_cr']; + $ba['USD'] += round($_POST['buk_cr'] * $ucur, 2); + mysql_query( + 'UPDATE `bank_alh` SET `cr` = "' . mysql_real_escape_string( + $ba['cr'] + ) . '",`USD` = "' . mysql_real_escape_string( + $ba['USD'] + ) . '" WHERE `id` = "' . $ba['id'] . '" LIMIT 1' + ); + mysql_query( + 'UPDATE `users` SET `money` = `money` + ' . mysql_real_escape_string( + $_POST['buk_cr'] + ) . ' WHERE `login` = "' . $uba['login'] . '" LIMIT 1' + ); + + $money = round($_POST['buk_cr'] * $pl['cur'], 2); + $money = round($money / 100 * (100 - $ba['procent']), 2); + + } else { + echo 'Сумма кр.:'; + if (!isset($_POST['buk_cr'])) { + echo '              
    '; + } else { + echo ' ' . round( + (int)$_POST['buk_cr'], 2 + ) . ' кр.'; + echo '   '; + } + } + } + } + + if (isset($_POST['buy_cr'])) { ?> Перевести кр персонажу: +
    +
    +info['bukmeker'] && !$u->info['admin']) { + return; +} +if (!empty($_POST['systemM'])) { + $r = "Внимание: {$_POST['sysMes']} [Букмекерская Контора]"; + mysql_query("INSERT INTO `chat` (`new`,`text`,`time`,`type`) VALUES ('1','" . $r . "', unix_timestamp(),'6')"); + echo "
    Системное сообщение отправлено."; +} +?> +
    +
    + +
    + +
    +
    diff --git a/modules_data/_dialog.php b/modules_data/_dialog.php index 73116218..5809fe1e 100644 --- a/modules_data/_dialog.php +++ b/modules_data/_dialog.php @@ -1,46 +1,52 @@ -start($_GET['talk']); ?> - - - - - + + + + +
    youInfo; ?>

    title; ?>

    -

    info['admin'] > 0) { - $dpages = ''; - if(isset($_GET['add_new_page'])) { - $dsp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_dlg` WHERE `id_dg` = "'.mysql_real_escape_string((int)$_GET['talk']).'" AND `qid` = "0" ORDER BY `page` DESC LIMIT 1')); - $dsp = ($dsp['page']+1); - mysql_query('INSERT INTO `dungeon_dlg` (`id_dg`,`page`,`qid`,`type`) VALUES ("'.mysql_real_escape_string((int)$_GET['talk']).'","'.mysql_real_escape_string((int)$dsp).'","0","1")'); - die(''); - } - $dsp = mysql_query('SELECT * FROM `dungeon_dlg` WHERE `id_dg` = "'.mysql_real_escape_string((int)$_GET['talk']).'" AND `qid` = "0"'); - while($dpl = mysql_fetch_array($dsp)) { - $dact = mysql_fetch_array(mysql_query('SELECT `id` FROM `dungeon_dlg` WHERE `id_dg` = "'.mysql_real_escape_string((int)$_GET['talk']).'" AND `qid` > "0" AND `action` LIKE "%go|'.$dpl['page'].'%" LIMIT 1')); - if($dact['id'] == $_GET['act']) { - $dpages .= '['; - } - $dpages .= ''.$dpl['page'].''; - if($dact['id'] == $_GET['act']) { - $dpages .= ']'; - } - $dpages .= ' '; - } - $dpages .= '   [+]'; - echo 'Редактировать текст   |   Страницы: '.$dpages.'

    '; - } - echo $dialog->dText; ?>

    -

    aText; ?>

    botInfo; ?>
    +
    youInfo; ?>
    +
    +

    title; ?>

    +

    info['admin'] > 0) { + $dpages = ''; + if (isset($_GET['add_new_page'])) { + $dsp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_dlg` WHERE `id_dg` = "' . mysql_real_escape_string((int)$_GET['talk']) . '" AND `qid` = "0" ORDER BY `page` DESC LIMIT 1')); + $dsp = ($dsp['page'] + 1); + mysql_query('INSERT INTO `dungeon_dlg` (`id_dg`,`page`,`qid`,`type`) VALUES ("' . mysql_real_escape_string((int)$_GET['talk']) . '","' . mysql_real_escape_string((int)$dsp) . '","0","1")'); + die(''); + } + $dsp = mysql_query('SELECT * FROM `dungeon_dlg` WHERE `id_dg` = "' . mysql_real_escape_string((int)$_GET['talk']) . '" AND `qid` = "0"'); + while ($dpl = mysql_fetch_array($dsp)) { + $dact = mysql_fetch_array(mysql_query('SELECT `id` FROM `dungeon_dlg` WHERE `id_dg` = "' . mysql_real_escape_string((int)$_GET['talk']) . '" AND `qid` > "0" AND `action` LIKE "%go|' . $dpl['page'] . '%" LIMIT 1')); + if ($dact['id'] == $_GET['act']) { + $dpages .= '['; + } + $dpages .= '' . $dpl['page'] . ''; + if ($dact['id'] == $_GET['act']) { + $dpages .= ']'; + } + $dpages .= ' '; + } + $dpages .= '   [+]'; + echo 'Редактировать текст   |   Страницы: ' . $dpages . '

    '; + } + echo $dialog->dText; ?>

    +

    aText; ?>

    +
    botInfo; ?>
    +
    diff --git a/modules_data/_inv-new.php b/modules_data/_inv-new.php index a153802a..3464e8e1 100644 --- a/modules_data/_inv-new.php +++ b/modules_data/_inv-new.php @@ -106,7 +106,6 @@ $inventorySortBox = '
    if(isset($_SESSION['paged']))$page_look = ''; else $page_look = ''; if($pgs > $pc) { $nlim = ' LIMIT '.$pxc.' , '.$pc.''; - #$page_look .= '
    '; $page_look .= '
    '; $page_look .= 'Страницы: '; $i = 1; @@ -125,7 +124,6 @@ if($pgs > $pc) { $i++; } $page_look .= '
    '; -# $page_look .= '
                  
    '; } $filt='`lastUPD` DESC'; if(isset($_GET['boxsort'])){ @@ -338,8 +336,8 @@ function seetext(id) {
    getInfoPers($u->info['id'],0,0,1); if($usee!=false){ echo $usee[0]; }else{ echo 'information is lost.'; } - if($u->info['level']>1 && $u->info['inTurnir'] == 0) { - include('_incl_data/class/_cron_.php'); + if($u->info['level']>1 && $u->info['inTurnir'] == 0) { + $priem = new Priems(); $priem->seeMy(1); } if( $u->info['inTurnir'] > 0 ) { diff --git a/modules_data/_inv-old.php b/modules_data/_inv-old.php index 44fa97f1..3d9ab9f3 100644 --- a/modules_data/_inv-old.php +++ b/modules_data/_inv-old.php @@ -216,41 +216,15 @@ function seetext(id) {
    getInfoPers($u->info['id'],0,0,1); if($usee!=false){ echo $usee[0]; }else{ echo 'information is lost.'; } if($u->info['level']>1 && $u->info['inTurnir'] == 0) - { - include('_incl_data/class/_cron_.php'); + { + $priem = new Priems(); $priem->seeMy(1); } if( $u->info['inTurnir'] > 0 ) { echo '
    Снять все
    '; } echo '
    '.$u->info_remont(); - if( $u->info['inTurnir'] == 0 ) { - /*$bns = mysql_fetch_array(mysql_query('SELECT `id`,`time` FROM `aaa_bonus` WHERE `uid` = "'.$u->info['id'].'" AND `time` > '.time().' LIMIT 1')); - if(isset($bns['id'])) { - $bns2 = 'через '.$u->timeOut($bns['time']-time()); - $bns1 = '0'; - $bns3 = ''; - }else{ - $bns2 = ''; - $bns1 = ''; - $bns3 = ' onclick="location.href=\'main.php?inv=1&takebns='.$u->info['nextAct'].'\'"'; - } - if(isset($_GET['takebns']) && $u->newAct($_GET['takebns'])==true && !isset($bns['id'])) { - $u->takeBonus(); - $bns2 = '
    через '.$u->timeOut( 2 * 3600 ).'
    '; - $bns1 = '0'; - $bns3 = ''; - } - ?> -
    -
    > -
    - -
    -
    -
    -
    info['inTurnir'] == 0) { include('stats_inv.php'); }else{ include('stats_inv2.php'); } ?> diff --git a/modules_data/_inv.php b/modules_data/_inv.php index c425ce31..a723cf30 100644 --- a/modules_data/_inv.php +++ b/modules_data/_inv.php @@ -1,457 +1,493 @@ - - -info['marker'] = 'inv'; - -if( isset( $_SESSION['otdel'] ) && !isset($_GET['otdel']) && !isset($_GET['paged'])) { - $_GET['otdel'] = $_SESSION['otdel']; - $_GET['paged'] = $_SESSION['paged']; -}elseif( !isset( $_GET['otdel'] ) || ( $_GET['otdel']<1 && $_GET['otdel']>6 ) ) { - $_GET['otdel'] = 1; // Если раздел не указан. - $_GET['paged'] = $_SESSION['paged'] = 0; -} - -if( isset($_GET['otdel']) ) { - if( !isset($_GET['paged']) && (isset($_GET['use_pid']) || isset($_GET['sid']) || isset($_GET['oid']) || isset($_GET['usecopr']) || isset($_GET['delcop'])) ) { - $_GET['paged'] = $_SESSION['paged']; // use item and load old paging - } elseif(isset($_GET['paged']) && $_GET['paged']!='') { - $_SESSION['paged'] = $_GET['paged']; // Задаем новую страницу. - } elseif(isset($_SESSION['paged']) && $_SESSION['paged']!='' && $_SESSION['otdel']==$_GET['otdel']) { - $_GET['paged'] = $_SESSION['paged']; // Если страница уже имеется в сессии, возвращаем её в текущую. - } else { - $_GET['paged'] = $_SESSION['paged'] = 0; - } -} - -$_SESSION['otdel'] = $_GET['otdel']; // для отладки. - -if( isset($_GET['delcop']) ) { - mysql_query('DELETE FROM `complects_priem` WHERE `id` = "'.mysql_real_escape_string($_GET['delcop']).'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); -} elseif( isset($_GET['usecopr']) ) { - $cpr = mysql_fetch_array(mysql_query('SELECT * FROM `complects_priem` WHERE `id` = "'.mysql_real_escape_string($_GET['usecopr']).'" AND `uid` = "'.$u->info['id'].'" LIMIT 1')); - if( isset($cpr['id']) ) { - $u->info['priems'] = $cpr['priems']; - mysql_query('UPDATE `stats` SET `priems` = "'.mysql_real_escape_string($cpr['priems']).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } -} - -//сохраняем комплект -if( isset($_POST['compname']) ) { - $_POST['compname'] = htmlspecialchars($_POST['compname'],NULL,'cp1251'); - $_POST['compname'] = str_replace("'",'',$_POST['compname']); - $_POST['compname'] = str_replace('"','',$_POST['compname']); - $ptst = str_replace(' ','',$_POST['compname']); - if( $ptst!='' ) { - //Добавляем комплект - $ptst = ''; - $sp = mysql_query('SELECT `inOdet`,`id` FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inOdet` > 0 AND `inShop` = "0" ORDER BY `inOdet` ASC LIMIT 250'); - while ( $pl = mysql_fetch_array($sp) ) { - $ptst .= $pl['inOdet'].'='.$pl['id'].'|'; - } - $tcm = mysql_fetch_array(mysql_query('SELECT * FROM `save_com` WHERE `uid` = "'.$u->info['id'].'" AND `name` = "'.mysql_real_escape_string($_POST['compname']).'" AND `delete` = "0" LIMIT 1')); - if( !isset($tcm['id']) ) { - //добавляем новый комплект - $ins = mysql_query('INSERT INTO `save_com` (`uid`,`time`,`name`,`val`,`type`) VALUES ("'.$u->info['id'].'","'.time().'","'.mysql_real_escape_string($_POST['compname']).'","'.$ptst.'","0")'); - if($ins) { - $u->error = 'Комплект "'.$_POST['compname'].'" был успешно сохранен'; - } else { - $u->error = 'Не удалось сохранить комплект по техническим причинам'; - } - }else{ - //изменяем существующий - $ins = mysql_query('UPDATE `save_com` SET `val` = "'.$ptst.'" WHERE `id` = "'.$tcm['id'].'" LIMIT 1'); - if($ins) - { - $u->error = 'Комплект "'.$_POST['compname'].'" был успешно изменен'; - }else{ - $u->error = 'Не удалось изменить комплект по техническим причинам'; - } - } - unset($ptst,$tcm,$inc); - } -}elseif(isset($_GET['delc1'])) { - $cmpl = mysql_query('UPDATE `save_com` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `id` = "'.mysql_real_escape_string($_GET['delc1']).'" LIMIT 1'); - if($cmpl) - { - $u->error = 'Комплект был успешно удален'; - } -} -$filt='`iu`.`lastUPD` DESC'; -if(isset($_GET['boxsort'])){ - switch($_GET['boxsort']){ - case'name': - $filt='`im`.`name` ASC'; - break; - case'cost': - $filt='`im`.`price2` DESC, `im`.`price1` DESC'; - break; - case'type': - $filt='`im`.`inslot`'; - break; - } -} - -$pc = 3000; -$pg = round((int)@$_GET['paged']); -$pxc = $pg*$pc; -$nlim = ''; -$pgs = mysql_fetch_array(mysql_query('SELECT COUNT(`iu`.`id`) FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `im`.`id` = `iu`.`item_id` WHERE `iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `im`.`inRazdel`="'.mysql_real_escape_string($_GET['otdel']).'" ORDER BY '.$filt.' LIMIT 1')); -$pgs = $pgs[0]; -$page_look = ''; -$inventorySortBox = '
    - Сортировка:
    - - - -
    '; - -if(isset($_SESSION['paged']))$page_look = ''; else $page_look = ''; -if($pgs > $pc) { - $nlim = ' LIMIT '.$pxc.' , '.$pc.''; - #$page_look .= '
    '; - $page_look .= '
    '; - $page_look .= 'Страницы: '; - $i = 1; - echo ''; - while($i <= ceil($pgs/$pc)) { - if($i-1 == $pg) { - $sep = 1; - }else{ - $sep = ''; - } - $page_look .= ''.$i.' '; - $i++; - } - $page_look .= '
    '; -# $page_look .= '
                  
    '; -} -$filt='`lastUPD` DESC'; -if(isset($_GET['boxsort'])){ - switch($_GET['boxsort']){ - case'name': - $filt='`name` ASC'; - break; - case'cost': - $filt='`price2` DESC, `price1` DESC'; - break; - case'type': - $filt='`inslot`'; - break; - } -} -$itmAll = $itmAllSee = ''; -if( isset($_GET['boxsort']) && $_GET['otdel']==5 ) { - if($_POST['subfilter']) { - $itmAll = $u->genInv(1,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `name` LIKE "%'.addcslashes(mysql_real_escape_string($_POST['filter']), '%_').'%" ORDER BY `name` ASC'); - } -} else { - $itmAll = $u->genInv(1,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `im`.`inRazdel`="'.mysql_real_escape_string($_GET['otdel']).'" ORDER BY '.$filt.''.$nlim); -} - -$itmAllSee = 'ПУСТО'; -if($itmAll[0] > 0) - $itmAllSee = $itmAll[2]; - $clrb = ''; - $clrba = ''; - if($u->aves['now'] >= $u->aves['max']) { - $clrb = 'color:#BB0000;'; - $clrba = '   (У вас перегруз!)'; - } -$showItems = ' - - - - - - - - - -
    - - - - - - - -
    ОбмундированиеЗаклятияЭликсирыРуныПрочее
    - - - - -
    -   Рюкзак (масса: ' . (0+$u->aves['now']) . '/' . $u->aves['max'] . ') '.$clrba.' - -
    - Поиск по имени:
    - - - - -
    -
    - - - '.$inventorySortBox.' -
    -
    ' . (( $u->info['invBlock'] == 0 ) ? $itmAllSee : '
    Рюкзак закрыт.
    Введите пароль:
    ' ) . '
    - -'; -if(isset($_GET['mAjax'])){ - exit($showItems); -} -?> - - - - - - - - - - + + +info['marker'] = 'inv'; + +if (isset($_SESSION['otdel']) && !isset($_GET['otdel']) && !isset($_GET['paged'])) { + $_GET['otdel'] = $_SESSION['otdel']; + $_GET['paged'] = $_SESSION['paged']; +} elseif (!isset($_GET['otdel']) || ($_GET['otdel'] < 1 && $_GET['otdel'] > 6)) { + $_GET['otdel'] = 1; // Если раздел не указан. + $_GET['paged'] = $_SESSION['paged'] = 0; +} + +if (isset($_GET['otdel'])) { + if (!isset($_GET['paged']) && (isset($_GET['use_pid']) || isset($_GET['sid']) || isset($_GET['oid']) || isset($_GET['usecopr']) || isset($_GET['delcop']))) { + $_GET['paged'] = $_SESSION['paged']; // use item and load old paging + } elseif (isset($_GET['paged']) && $_GET['paged'] != '') { + $_SESSION['paged'] = $_GET['paged']; // Задаем новую страницу. + } elseif (isset($_SESSION['paged']) && $_SESSION['paged'] != '' && $_SESSION['otdel'] == $_GET['otdel']) { + $_GET['paged'] = $_SESSION['paged']; // Если страница уже имеется в сессии, возвращаем её в текущую. + } else { + $_GET['paged'] = $_SESSION['paged'] = 0; + } +} + +$_SESSION['otdel'] = $_GET['otdel']; // для отладки. + +if (isset($_GET['delcop'])) { + mysql_query( + 'DELETE FROM `complects_priem` WHERE `id` = "' . mysql_real_escape_string( + $_GET['delcop'] + ) . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1' + ); +} elseif (isset($_GET['usecopr'])) { + $cpr = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `complects_priem` WHERE `id` = "' . mysql_real_escape_string( + $_GET['usecopr'] + ) . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1' + ) + ); + if (isset($cpr['id'])) { + $u->info['priems'] = $cpr['priems']; + mysql_query( + 'UPDATE `stats` SET `priems` = "' . mysql_real_escape_string( + $cpr['priems'] + ) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + } +} + +//сохраняем комплект +if (isset($_POST['compname'])) { + $_POST['compname'] = htmlspecialchars($_POST['compname'], null, 'cp1251'); + $_POST['compname'] = str_replace("'", '', $_POST['compname']); + $_POST['compname'] = str_replace('"', '', $_POST['compname']); + $ptst = str_replace(' ', '', $_POST['compname']); + if ($ptst != '') { + //Добавляем комплект + $ptst = ''; + $sp = mysql_query( + 'SELECT `inOdet`,`id` FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `inOdet` > 0 AND `inShop` = "0" ORDER BY `inOdet` ASC LIMIT 250' + ); + while ($pl = mysql_fetch_array($sp)) { + $ptst .= $pl['inOdet'] . '=' . $pl['id'] . '|'; + } + $tcm = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `save_com` WHERE `uid` = "' . $u->info['id'] . '" AND `name` = "' . mysql_real_escape_string( + $_POST['compname'] + ) . '" AND `delete` = "0" LIMIT 1' + ) + ); + if (!isset($tcm['id'])) { + //добавляем новый комплект + $ins = mysql_query( + 'INSERT INTO `save_com` (`uid`,`time`,`name`,`val`,`type`) VALUES ("' . $u->info['id'] . '","' . time( + ) . '","' . mysql_real_escape_string($_POST['compname']) . '","' . $ptst . '","0")' + ); + if ($ins) { + $u->error = 'Комплект "' . $_POST['compname'] . '" был успешно сохранен'; + } else { + $u->error = 'Не удалось сохранить комплект по техническим причинам'; + } + } else { + //изменяем существующий + $ins = mysql_query( + 'UPDATE `save_com` SET `val` = "' . $ptst . '" WHERE `id` = "' . $tcm['id'] . '" LIMIT 1' + ); + if ($ins) { + $u->error = 'Комплект "' . $_POST['compname'] . '" был успешно изменен'; + } else { + $u->error = 'Не удалось изменить комплект по техническим причинам'; + } + } + unset($ptst, $tcm, $inc); + } +} elseif (isset($_GET['delc1'])) { + $cmpl = mysql_query( + 'UPDATE `save_com` SET `delete` = "' . time( + ) . '" WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `id` = "' . mysql_real_escape_string( + $_GET['delc1'] + ) . '" LIMIT 1' + ); + if ($cmpl) { + $u->error = 'Комплект был успешно удален'; + } +} +$filt = '`iu`.`lastUPD` DESC'; +if (isset($_GET['boxsort'])) { + switch ($_GET['boxsort']) { + case'name': + $filt = '`im`.`name` ASC'; + break; + case'cost': + $filt = '`im`.`price2` DESC, `im`.`price1` DESC'; + break; + case'type': + $filt = '`im`.`inslot`'; + break; + } +} + +$pc = 3000; +$pg = round((int)@$_GET['paged']); +$pxc = $pg * $pc; +$nlim = ''; +$pgs = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(`iu`.`id`) FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `im`.`id` = `iu`.`item_id` WHERE `iu`.`uid`="' . $u->info['id'] . '" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `im`.`inRazdel`="' . mysql_real_escape_string( + $_GET['otdel'] + ) . '" ORDER BY ' . $filt . ' LIMIT 1' + ) +); +$pgs = $pgs[0]; +$page_look = ''; +$inventorySortBox = '
    + Сортировка:
    + + + +
    '; + +if (isset($_SESSION['paged'])) { + $page_look = ''; +} else { + $page_look = ''; +} +if ($pgs > $pc) { + $nlim = ' LIMIT ' . $pxc . ' , ' . $pc . ''; + $page_look .= '
    '; + $page_look .= 'Страницы: '; + $i = 1; + echo ''; + while ($i <= ceil($pgs / $pc)) { + if ($i - 1 == $pg) { + $sep = 1; + } else { + $sep = ''; + } + $page_look .= '' . $i . ' '; + $i++; + } + $page_look .= '
    '; +} +$filt = '`lastUPD` DESC'; +if (isset($_GET['boxsort'])) { + switch ($_GET['boxsort']) { + case'name': + $filt = '`name` ASC'; + break; + case'cost': + $filt = '`price2` DESC, `price1` DESC'; + break; + case'type': + $filt = '`inslot`'; + break; + } +} +$itmAll = $itmAllSee = ''; +if (isset($_GET['boxsort']) && $_GET['otdel'] == 5) { + if ($_POST['subfilter']) { + $itmAll = $u->genInv( + 1, + '`iu`.`uid`="' . $u->info['id'] . '" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `name` LIKE "%' . addcslashes( + mysql_real_escape_string($_POST['filter']), '%_' + ) . '%" ORDER BY `name` ASC' + ); + } +} else { + $itmAll = $u->genInv( + 1, + '`iu`.`uid`="' . $u->info['id'] . '" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `im`.`inRazdel`="' . mysql_real_escape_string( + $_GET['otdel'] + ) . '" ORDER BY ' . $filt . '' . $nlim + ); +} + +$itmAllSee = ''; +if ($itmAll[0] > 0) + $itmAllSee = $itmAll[2]; + $clrb = ''; + $clrba = ''; +if ($u->aves['now'] >= $u->aves['max']) { + $clrb = 'color:#BB0000;'; + $clrba = '   (У вас перегруз!)'; +} +$showItems = ' +
    -
    getInfoPers($u->info['id'],0,0,1); if($usee!=false){ echo $usee[0]; }else{ echo 'information is lost.'; } - //if($u->info['level']>1 && $u->info['inTurnir'] == 0) { - include('_incl_data/class/_cron_.php'); - echo '
    '; - $priem->seeMy(1); - //} - //if( $u->info['inTurnir'] > 0 ) { - // echo '
    Снять все
    '; - //} - echo '
    '.$u->info_remont(); - //if( $u->info['inTurnir'] == 0 ) { - /*$bns = mysql_fetch_array(mysql_query('SELECT `id`,`time` FROM `aaa_bonus` WHERE `uid` = "'.$u->info['id'].'" AND `time` > '.time().' LIMIT 1')); - if(isset($bns['id'])) { - $bns2 = 'через '.$u->timeOut($bns['time']-time()); - $bns1 = '0'; - $bns3 = ''; - }else{ - $bns2 = ''; - $bns1 = ''; - $bns3 = ' onclick="location.href=\'main.php?inv=1&takebns='.$u->info['nextAct'].'\'"'; - } - if(isset($_GET['takebns']) && $u->newAct($_GET['takebns'])==true && !isset($bns['id'])) { - $u->takeBonus(); - $bns2 = '
    через '.$u->timeOut( 2 * 3600 ).'
    '; - $bns1 = '0'; - $bns3 = ''; - } - ?> -
    -
    > -
    - -
    -
    -
    - -
    -
    -
    -
    -
    -
    - info['admin'] > 0) { ?> -   - - info['animal'] != 0) { - echo ''; - }*/ - ?> - - - - - info['inTurnir'] == 0) { ?> info['id'].'" AND `clan` = "0") OR (`clan` = "'.$u->info['clan'].'" AND `clan` > 0)) AND `good` > 0 AND `bad` = "0" LIMIT 1')); - if($gl[0] > 0) { ?> - - -
    -
    - - error != '' ) { ?> - - - - - - - -
    -
    error; ?>
    -
    -
    ПУСТО
    + + + + + + + + + +
    + + + + + + + + +
    ОбмундированиеЗаклятияЭликсирыРуныПрочее
    + + + +
    +   Рюкзак (масса: ' . (0 + $u->aves['now']) . '/' . $u->aves['max'] . ') ' . $clrba . ' + + + + + + + ' . $inventorySortBox . ' +
    +
    ' . (($u->info['invBlock'] == 0) ? $itmAllSee : '
    Рюкзак закрыт.
    Введите пароль:
    ') . '
    + +'; +if (isset($_GET['mAjax'])) { + exit($showItems); +} +?> + + + + + + + + + +
    +
    + getInfoPers($u->info['id'], 0, 0, 1); + echo $usee ? $usee[0] : 'information is lost.'; + $priem = new Priems(); + echo '
    '; + $priem->seeMy(1); + echo '
    ' . $u->info_remont(); + ?> +
    +
    + +
    +
    + + +
    +
    +
    + info['admin']): ?> +   + + + + + + + info['inTurnir']): ?> + + prepare( + 'select count(*) from reimage where ((uid = ? and clan = 0) or clan = ?) and good != 0 and bad = 0' + ); + $stmt->execute([$u->info['id'], $u->info['clan']]); + if ($stmt->fetchColumn()) { ?> + + + +
    +
    + + + error): ?> + + + + + + + +
    +
    + error ?> +
    +
    + +
    +
    \ No newline at end of file diff --git a/modules_data/_locations.php b/modules_data/_locations.php index e1b874b4..0ba77fdb 100644 --- a/modules_data/_locations.php +++ b/modules_data/_locations.php @@ -328,7 +328,7 @@ if(isset($_GET['loc'])) if($u->info['room']==209) { - include('_incl_data/class/__zv.php'); + $zv = new FightRequest(); } if($re!=''){ $re = $re.' '; } diff --git a/modules_data/_umenie.php b/modules_data/_umenie.php index 769b8043..5ddc3f82 100644 --- a/modules_data/_umenie.php +++ b/modules_data/_umenie.php @@ -1,68 +1,81 @@ -info['marker'] = 'skills'; -if(isset($_GET['delcop'])) { - mysql_query('DELETE FROM `complects_priem` WHERE `id` = "'.mysql_real_escape_string($_GET['delcop']).'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); -}elseif(isset($_GET['usecopr'])) { - $cpr = mysql_fetch_array(mysql_query('SELECT * FROM `complects_priem` WHERE `id` = "'.mysql_real_escape_string($_GET['usecopr']).'" AND `uid` = "'.$u->info['id'].'" LIMIT 1')); - if(isset($cpr['id'])) { - $u->info['priems'] = $cpr['priems']; - mysql_query('UPDATE `stats` SET `priems` = "'.mysql_real_escape_string($cpr['priems']).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } -}elseif(isset($_GET['clear_abil']) && $u->info['priems'] != '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') { - $u->info['priems'] = '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'; - mysql_query('UPDATE `stats` SET `priems` = "'.$u->info['priems'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); +if (isset($_GET['delcop'])) { + mysql_query( + 'DELETE FROM `complects_priem` WHERE `id` = "' . mysql_real_escape_string( + $_GET['delcop'] + ) . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1' + ); +} elseif (isset($_GET['usecopr'])) { + $cpr = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `complects_priem` WHERE `id` = "' . mysql_real_escape_string( + $_GET['usecopr'] + ) . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1' + ) + ); + if (isset($cpr['id'])) { + $u->info['priems'] = $cpr['priems']; + mysql_query( + 'UPDATE `stats` SET `priems` = "' . mysql_real_escape_string( + $cpr['priems'] + ) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + } +} elseif (isset($_GET['clear_abil']) && $u->info['priems'] != '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') { + $u->info['priems'] = '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'; + mysql_query( + 'UPDATE `stats` SET `priems` = "' . $u->info['priems'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); } -include_once('_incl_data/class/_cron_.php'); +$priem = new Priems(); -if(isset($_GET['use_priem'])) -{ - $priem->uns((int)$_GET['use_priem']); -}elseif(isset($_GET['unuse_priem'])) -{ - $priem->reuns((int)$_GET['unuse_priem']); +if (isset($_GET['use_priem'])) { + $priem->uns((int)$_GET['use_priem']); +} elseif (isset($_GET['unuse_priem'])) { + $priem->reuns((int)$_GET['unuse_priem']); } //вывод знаний $znn = ''; $toms = 0; -$sp = mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars` = "read" AND `time` < '.time().''); -while($pl = mysql_fetch_array($sp)) -{ - $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$pl['vals'].'" LIMIT 1')); - if(isset($itm['id'])) - { - if( $itm['id'] >= 1044 && $itm['id'] <=1047 ) { - $toms++; - } - $lvar = '
    Дата изучения: '.date('d.m.Y',$pl['time']).''; - $znn .= ' '; - }else{ - $znn .= ' '; - } +$sp = mysql_query( + 'SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "read" AND `time` < ' . time() . '' +); +while ($pl = mysql_fetch_array($sp)) { + $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $pl['vals'] . '" LIMIT 1')); + if (isset($itm['id'])) { + if ($itm['id'] >= 1044 && $itm['id'] <= 1047) { + $toms++; + } + $lvar = '
    Дата изучения: ' . date('d.m.Y', $pl['time']) . ''; + $znn .= ' '; + } else { + $znn .= ' '; + } } -if( 10+$toms > $u->info['priemslot'] ) { - $u->info['priemslot'] = 10 + $toms; - mysql_query('UPDATE `stats` SET `priemslot` = "'.$u->info['priemslot'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); +if (10 + $toms > $u->info['priemslot']) { + $u->info['priemslot'] = 10 + $toms; + mysql_query( + 'UPDATE `stats` SET `priemslot` = "' . $u->info['priemslot'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); } $rzsee = 1; -if(isset($_GET['rz'])) -{ - $rzsee = round((int)$_GET['rz']); - if($rzsee<=0 || $rzsee>7 || $rzsee==2) - { - $rzsee = 1; - } -} +if (isset($_GET['rz'])) { + $rzsee = round((int)$_GET['rz']); + if ($rzsee <= 0 || $rzsee > 7 || $rzsee == 2) { + $rzsee = 1; + } +} $energy = ''; $str = ''; @@ -78,1820 +91,2572 @@ $ogon = ''; $voda = ''; $vozduh = ''; $zemla = ''; -$svet = ''; +$svet = ''; $seraya = ''; $tma = ''; ?> - -
    -lookStats($u->info['stats']); -if(@$_GET['dec_transfer'] || @$_GET['dec_travma'] || @$_GET['fast_homeworld'] || @$_GET['inc_expr'] || @$_GET['inc_friends'] || @$_GET['inc_hobby'] || @$_GET['max_inventory'] || @$_GET['num_transfer'] || @$_GET['speed_HP'] || @$_GET['speed_MP'] || @$_GET['speed_debuff']) -{ - $summs = floor($_GET['dec_transfer']+$_GET['dec_travma']+$_GET['fast_homeworld']+$_GET['inc_expr']+$_GET['inc_friends']+$_GET['inc_hobby']+$_GET['max_inventory']+$_GET['num_transfer']+$_GET['speed_HP']+$_GET['speed_MP']+$_GET['speed_debuff']); - if(!is_numeric($summs)){$summs=0;} - - if($summs>1) - { - $summs=0; - echo '   Что-то здесь не так...
    '; - }elseif($summs<0) - { - $summs=0; - echo '   При вскрытие сейфа выяснилось, что он был вскрыт до Вас ;)
    '; - }elseif(($st['os1']+$_GET['dec_transfer']<=5 && $_GET['dec_transfer']>0) || - ($st['os2']+$_GET['dec_travma']<=5 && $_GET['dec_travma']>0) || - ($st['os3']+$_GET['fast_homeworld']<=5 && $_GET['fast_homeworld']>0) || - ($st['os4']+$_GET['inc_expr']<=5 && $_GET['inc_expr']>0) || - ($st['os5']+$_GET['inc_friends']<=5 && $_GET['inc_friends']>0) || - ($st['os6']+$_GET['inc_hobby']<=5 && $_GET['inc_hobby']>0) || - ($st['os7']+$_GET['max_inventory']<=5 && $_GET['max_inventory']>0) || - ($st['os8']+$_GET['num_transfer']<=5 && $_GET['num_transfer']>0) || - ($st['os9']+$_GET['speed_HP']<=5 && $_GET['speed_HP']>0) || - ($st['os10']+$_GET['speed_MP']<=5 && $_GET['speed_MP']>0) || - ($st['os11']+$_GET['speed_debuff']<=5 && $_GET['speed_debuff']>0) && $u->info['id']==$_GET['s4i'] - ) - { - - $st['os1'] += (int)$_GET['dec_transfer']; - $st['os2'] += (int)$_GET['dec_travma']; - $st['os3'] += (int)$_GET['fast_homeworld']; - $st['os4'] += (int)$_GET['inc_expr']; - $st['os5'] += (int)$_GET['inc_friends']; - $st['os6'] += (int)$_GET['inc_hobby']; - $st['os7'] += (int)$_GET['max_inventory']; - $st['os8'] += (int)$_GET['num_transfer']; - $st['os9'] += (int)$_GET['speed_HP']; - $st['os10'] += (int)$_GET['speed_MP']; - $st['os11'] += (int)$_GET['speed_debuff']; - $u->info['stats'] = $u->impStats($st); - }if($u->info['sskills']-(int)$summs<0) - { - echo '   У вас нет свободных особенностей
    '; - }elseif(mysql_query("UPDATE +
    + lookStats($u->info['stats']); + if (@$_GET['dec_transfer'] || @$_GET['dec_travma'] || @$_GET['fast_homeworld'] || @$_GET['inc_expr'] || @$_GET['inc_friends'] || @$_GET['inc_hobby'] || @$_GET['max_inventory'] || @$_GET['num_transfer'] || @$_GET['speed_HP'] || @$_GET['speed_MP'] || @$_GET['speed_debuff']) { + $summs = floor( + $_GET['dec_transfer'] + $_GET['dec_travma'] + $_GET['fast_homeworld'] + $_GET['inc_expr'] + $_GET['inc_friends'] + $_GET['inc_hobby'] + $_GET['max_inventory'] + $_GET['num_transfer'] + $_GET['speed_HP'] + $_GET['speed_MP'] + $_GET['speed_debuff'] + ); + if (!is_numeric($summs)) { + $summs = 0; + } + + if ($summs > 1) { + $summs = 0; + echo '   Что-то здесь не так...
    '; + } elseif ($summs < 0) { + $summs = 0; + echo '   При вскрытие сейфа выяснилось, что он был вскрыт до Вас ;)
    '; + } elseif (($st['os1'] + $_GET['dec_transfer'] <= 5 && $_GET['dec_transfer'] > 0) || + ($st['os2'] + $_GET['dec_travma'] <= 5 && $_GET['dec_travma'] > 0) || + ($st['os3'] + $_GET['fast_homeworld'] <= 5 && $_GET['fast_homeworld'] > 0) || + ($st['os4'] + $_GET['inc_expr'] <= 5 && $_GET['inc_expr'] > 0) || + ($st['os5'] + $_GET['inc_friends'] <= 5 && $_GET['inc_friends'] > 0) || + ($st['os6'] + $_GET['inc_hobby'] <= 5 && $_GET['inc_hobby'] > 0) || + ($st['os7'] + $_GET['max_inventory'] <= 5 && $_GET['max_inventory'] > 0) || + ($st['os8'] + $_GET['num_transfer'] <= 5 && $_GET['num_transfer'] > 0) || + ($st['os9'] + $_GET['speed_HP'] <= 5 && $_GET['speed_HP'] > 0) || + ($st['os10'] + $_GET['speed_MP'] <= 5 && $_GET['speed_MP'] > 0) || + ($st['os11'] + $_GET['speed_debuff'] <= 5 && $_GET['speed_debuff'] > 0) && $u->info['id'] == $_GET['s4i'] + ) { + + $st['os1'] += (int)$_GET['dec_transfer']; + $st['os2'] += (int)$_GET['dec_travma']; + $st['os3'] += (int)$_GET['fast_homeworld']; + $st['os4'] += (int)$_GET['inc_expr']; + $st['os5'] += (int)$_GET['inc_friends']; + $st['os6'] += (int)$_GET['inc_hobby']; + $st['os7'] += (int)$_GET['max_inventory']; + $st['os8'] += (int)$_GET['num_transfer']; + $st['os9'] += (int)$_GET['speed_HP']; + $st['os10'] += (int)$_GET['speed_MP']; + $st['os11'] += (int)$_GET['speed_debuff']; + $u->info['stats'] = $u->impStats($st); + } + if ($u->info['sskills'] - (int)$summs < 0) { + echo '   У вас нет свободных особенностей
    '; + } elseif (mysql_query( + "UPDATE `stats` SET - `stats`= '".mysql_real_escape_string($u->info['stats'])."', - `sskills` = `sskills` - '".mysql_real_escape_string((int)$summs)."' + `stats`= '" . mysql_real_escape_string($u->info['stats']) . "', + `sskills` = `sskills` - '" . mysql_real_escape_string((int)$summs) . "' WHERE - `id` = '".(int)$u->info['id']."';")) - { - if($_GET['dec_transfer']==1) {echo "   Вы выбрали особенность \"Изворотливый ".($st['os1']>1?" - ".$st['os1']."":"")."\"
    ";} - if($_GET['dec_travma']==1) {echo "   Вы выбрали особенность \"Стойкий ".($st['os2']>1?" - ".$st['os2']."":"")."\"
    ";} - if($_GET['fast_homeworld']==1) {echo "   Вы выбрали особенность \"Быстрый ".($st['os3']>1?" - ".$st['os3']."":"")."\"
    ";} - if($_GET['inc_expr']==1) {echo "   Вы выбрали особенность \"Сообразительный ".($st['os4']>1?" - ".$st['os4']."":"")."\"
    ";} - if($_GET['inc_friends']==1) {echo "   Вы выбрали особенность \"Дружелюбный ".($st['os5']>1?" - ".$st['os5']."":"")."\"
    ";} - if($_GET['inc_hobby']==1) {echo "   Вы выбрали особенность \"Общительный ".($st['os6']>1?" - ".$st['os6']."":"")."\"
    ";} - if($_GET['max_inventory']==1) {echo "   Вы выбрали особенность \"Запасливый ".($st['os7']>1?" - ".$st['os7']."":"")."\"
    ";} - if($_GET['num_transfer']==1) {echo "   Вы выбрали особенность \"Коммуникабельный ".($st['os8']>1?" - ".$st['os8']."":"")."\"
    ";} - if($_GET['speed_HP']==1) {echo "   Вы выбрали особенность \"Двужильный ".($st['os9']>1?" - ".$st['os9']."":"")."\"
    ";} - if($_GET['speed_MP']==1) {echo "   Вы выбрали особенность \"Здравомыслящий ".($st['os10']>1?" - ".$st['os10']."":"")."\"
    ";} - if($_GET['speed_debuff']==1) {echo "   Вы выбрали особенность \"Здоровый сон ".($st['os11']>1?" - ".$st['os11']."":"")."\"
    ";} - $u->info['sskills'] -= $summs; - } -} -if (@$_GET['upr']) { - /*-----Проверяем сумму статов и умений-----*/ - if(!isset($_GET['energy']) || $_GET['energy'] < 0){ $_GET['energy'] = 0; } - if(!isset($_GET['str']) || $_GET['str'] < 0){ $_GET['str'] = 0; } - if(!isset($_GET['dex']) || $_GET['dex'] < 0){ $_GET['dex'] = 0; } - if(!isset($_GET['inst']) || $_GET['inst'] < 0){ $_GET['inst'] = 0; } - if(!isset($_GET['power']) || $_GET['power'] < 0){ $_GET['power'] = 0; } - if(!isset($_GET['intel']) || $_GET['intel'] < 0){ $_GET['intel'] = 0; } - if(!isset($_GET['wis']) || $_GET['wis'] < 0){ $_GET['wis'] = 0; } - if(!isset($_GET['spirit']) || $_GET['spirit'] < 0){ $_GET['spirit'] = 0; } - if(!isset($_GET['will']) || $_GET['will'] < 0){ $_GET['will'] = 0; } - if(!isset($_GET['freedom']) || $_GET['freedom'] < 0){ $_GET['freedom'] = 0; } - if(!isset($_GET['god']) || $_GET['god'] < 0){ $_GET['god'] = 0; } - - if(!isset($_GET['m_sword']) || $_GET['m_sword'] < 0){ $_GET['m_sword'] = 0; } - if(!isset($_GET['m_tohand']) || $_GET['m_tohand'] < 0){ $_GET['m_tohand'] = 0; } - if(!isset($_GET['m_molot']) || $_GET['m_molot'] < 0){ $_GET['m_molot'] = 0; } - if(!isset($_GET['m_axe']) || $_GET['m_axe'] < 0){ $_GET['m_axe'] = 0; } - if(!isset($_GET['m_staff']) || $_GET['m_staff'] < 0){ $_GET['m_staff'] = 0; } - if(!isset($_GET['m_magic1']) || $_GET['m_magic1'] < 0){ $_GET['m_magic1'] = 0; } - if(!isset($_GET['m_magic2']) || $_GET['m_magic2'] < 0){ $_GET['m_magic2'] = 0; } - if(!isset($_GET['m_magic3']) || $_GET['m_magic3'] < 0){ $_GET['m_magic3'] = 0; } - if(!isset($_GET['m_magic4']) || $_GET['m_magic4'] < 0){ $_GET['m_magic4'] = 0; } - if(!isset($_GET['m_magic5']) || $_GET['m_magic5'] < 0){ $_GET['m_magic5'] = 0; } - if(!isset($_GET['m_magic6']) || $_GET['m_magic6'] < 0){ $_GET['m_magic6'] = 0; } - if(!isset($_GET['m_magic7']) || $_GET['m_magic7'] < 0){ $_GET['m_magic7'] = 0; } + `id` = '" . (int)$u->info['id'] . "';" + )) { + if ($_GET['dec_transfer'] == 1) { + echo "   Вы выбрали особенность \"Изворотливый " . ($st['os1'] > 1 ? " - " . $st['os1'] . "" : "") . "\"
    "; + } + if ($_GET['dec_travma'] == 1) { + echo "   Вы выбрали особенность \"Стойкий " . ($st['os2'] > 1 ? " - " . $st['os2'] . "" : "") . "\"
    "; + } + if ($_GET['fast_homeworld'] == 1) { + echo "   Вы выбрали особенность \"Быстрый " . ($st['os3'] > 1 ? " - " . $st['os3'] . "" : "") . "\"
    "; + } + if ($_GET['inc_expr'] == 1) { + echo "   Вы выбрали особенность \"Сообразительный " . ($st['os4'] > 1 ? " - " . $st['os4'] . "" : "") . "\"
    "; + } + if ($_GET['inc_friends'] == 1) { + echo "   Вы выбрали особенность \"Дружелюбный " . ($st['os5'] > 1 ? " - " . $st['os5'] . "" : "") . "\"
    "; + } + if ($_GET['inc_hobby'] == 1) { + echo "   Вы выбрали особенность \"Общительный " . ($st['os6'] > 1 ? " - " . $st['os6'] . "" : "") . "\"
    "; + } + if ($_GET['max_inventory'] == 1) { + echo "   Вы выбрали особенность \"Запасливый " . ($st['os7'] > 1 ? " - " . $st['os7'] . "" : "") . "\"
    "; + } + if ($_GET['num_transfer'] == 1) { + echo "   Вы выбрали особенность \"Коммуникабельный " . ($st['os8'] > 1 ? " - " . $st['os8'] . "" : "") . "\"
    "; + } + if ($_GET['speed_HP'] == 1) { + echo "   Вы выбрали особенность \"Двужильный " . ($st['os9'] > 1 ? " - " . $st['os9'] . "" : "") . "\"
    "; + } + if ($_GET['speed_MP'] == 1) { + echo "   Вы выбрали особенность \"Здравомыслящий " . ($st['os10'] > 1 ? " - " . $st['os10'] . "" : "") . "\"
    "; + } + if ($_GET['speed_debuff'] == 1) { + echo "   Вы выбрали особенность \"Здоровый сон " . ($st['os11'] > 1 ? " - " . $st['os11'] . "" : "") . "\"
    "; + } + $u->info['sskills'] -= $summs; + } + } + if (@$_GET['upr']) { + /*-----Проверяем сумму статов и умений-----*/ + if (!isset($_GET['energy']) || $_GET['energy'] < 0) { + $_GET['energy'] = 0; + } + if (!isset($_GET['str']) || $_GET['str'] < 0) { + $_GET['str'] = 0; + } + if (!isset($_GET['dex']) || $_GET['dex'] < 0) { + $_GET['dex'] = 0; + } + if (!isset($_GET['inst']) || $_GET['inst'] < 0) { + $_GET['inst'] = 0; + } + if (!isset($_GET['power']) || $_GET['power'] < 0) { + $_GET['power'] = 0; + } + if (!isset($_GET['intel']) || $_GET['intel'] < 0) { + $_GET['intel'] = 0; + } + if (!isset($_GET['wis']) || $_GET['wis'] < 0) { + $_GET['wis'] = 0; + } + if (!isset($_GET['spirit']) || $_GET['spirit'] < 0) { + $_GET['spirit'] = 0; + } + if (!isset($_GET['will']) || $_GET['will'] < 0) { + $_GET['will'] = 0; + } + if (!isset($_GET['freedom']) || $_GET['freedom'] < 0) { + $_GET['freedom'] = 0; + } + if (!isset($_GET['god']) || $_GET['god'] < 0) { + $_GET['god'] = 0; + } - - $summ = floor($_GET['energy']+$_GET['str']+$_GET['dex']+$_GET['inst']+$_GET['power']+$_GET['intel']+$_GET['wis']+$_GET['spirit']+$_GET['will']+$_GET['freedom']+$_GET['god']); - if(!is_numeric($summ)){$summ=0;} - $summu = floor($_GET['m_axe']+$_GET['m_molot']+$_GET['m_sword']+$_GET['m_tohand']+$_GET['m_staff']+$_GET['m_magic1']+$_GET['m_magic2']+$_GET['m_magic3']+$_GET['m_magic4']+$_GET['m_magic5']+$_GET['m_magic6']+$_GET['m_magic7']); - if(!is_numeric($summu)){$summu=0;} + if (!isset($_GET['m_sword']) || $_GET['m_sword'] < 0) { + $_GET['m_sword'] = 0; + } + if (!isset($_GET['m_tohand']) || $_GET['m_tohand'] < 0) { + $_GET['m_tohand'] = 0; + } + if (!isset($_GET['m_molot']) || $_GET['m_molot'] < 0) { + $_GET['m_molot'] = 0; + } + if (!isset($_GET['m_axe']) || $_GET['m_axe'] < 0) { + $_GET['m_axe'] = 0; + } + if (!isset($_GET['m_staff']) || $_GET['m_staff'] < 0) { + $_GET['m_staff'] = 0; + } + if (!isset($_GET['m_magic1']) || $_GET['m_magic1'] < 0) { + $_GET['m_magic1'] = 0; + } + if (!isset($_GET['m_magic2']) || $_GET['m_magic2'] < 0) { + $_GET['m_magic2'] = 0; + } + if (!isset($_GET['m_magic3']) || $_GET['m_magic3'] < 0) { + $_GET['m_magic3'] = 0; + } + if (!isset($_GET['m_magic4']) || $_GET['m_magic4'] < 0) { + $_GET['m_magic4'] = 0; + } + if (!isset($_GET['m_magic5']) || $_GET['m_magic5'] < 0) { + $_GET['m_magic5'] = 0; + } + if (!isset($_GET['m_magic6']) || $_GET['m_magic6'] < 0) { + $_GET['m_magic6'] = 0; + } + if (!isset($_GET['m_magic7']) || $_GET['m_magic7'] < 0) { + $_GET['m_magic7'] = 0; + } - /*-----Проверяем сумму статов и умений-----*/ - /*-----Пишем статы и умения----*/ - if( - (($_GET['energy']>0 || $_GET['str']>0 || - $_GET['dex']>0 || - $_GET['inst']>0 || - $_GET['power']>0 || - ($_GET['intel']>0 && $u->info['level'] > 3) || - ($_GET['wis']>0 && $u->info['level'] > 6) || - ($_GET['spirit']>0 && $u->info['level'] > 9) || - ($_GET['will']>0 && $u->info['level'] > 12) || - ($_GET['freedom']>0 && $u->info['level'] > 15) || - ($_GET['god']>0 && $u->info['level'] > 18)) && $summ<=$u->info['ability'] && $u->info['ability']>0) || - (($st['a1']+$_GET['m_sword']<=20 && $_GET['m_sword']>0) || - ($st['a2']+$_GET['m_tohand']<=20 && $_GET['m_tohand']>0) || - ($st['a3']+$_GET['m_molot']<=20 && $_GET['m_molot']>0) || - ($st['a4']+$_GET['m_axe']<=20 && $_GET['m_axe']>0) || - ($st['a5']+$_GET['m_staff']<=20 && $_GET['m_staff']>0) || - ($st['mg1']+$_GET['m_magic1']<=20 && $_GET['m_magic1']>0) || - ($st['mg2']+$_GET['m_magic2']<=20 && $_GET['m_magic2']>0) || - ($st['mg3']+$_GET['m_magic3']<=20 && $_GET['m_magic3']>0) || - ($st['mg4']+$_GET['m_magic4']<=20 && $_GET['m_magic4']>0) || - ($st['mg5']+$_GET['m_magic5']<=20 && $_GET['m_magic5']>0) || - ($st['mg6']+$_GET['m_magic6']<=20 && $_GET['m_magic6']>0) || - ($st['mg7']+$_GET['m_magic7']<=20 && $_GET['m_magic7']>0) && $summu<=$u->info['skills'] && $u->info['skills']>0) && $u->info['id']==$_GET['s4i'] - ) - { - $st['s1'] += (int)$_GET['str']; - $st['s2'] += (int)$_GET['dex']; - $st['s3'] += (int)$_GET['inst']; - $st['s4'] += (int)$_GET['power']; - $st['a1'] += (int)$_GET['m_sword']; - $st['a2'] += (int)$_GET['m_tohand']; - $st['a3'] += (int)$_GET['m_molot']; - $st['a4'] += (int)$_GET['m_axe']; - $st['a5'] += (int)$_GET['m_staff']; - $st['mg1'] += (int)$_GET['m_magic1']; - $st['mg2'] += (int)$_GET['m_magic2']; - $st['mg3'] += (int)$_GET['m_magic3']; - $st['mg4'] += (int)$_GET['m_magic4']; - $st['mg5'] += (int)$_GET['m_magic5']; - $st['mg6'] += (int)$_GET['m_magic6']; - $st['mg7'] += (int)$_GET['m_magic7']; - if ($u->info['level'] > 3) {$st['s5'] += (int)$_GET['intel'];} - if ($u->info['level'] > 6) {$st['s6'] += (int)$_GET['wis'];} - if ($u->info['level'] > 9) {$st['s7'] += (int)$_GET['spirit'];} - if ($u->info['level'] > 12) {$st['s8'] += (int)$_GET['will'];} - if ($u->info['level'] > 15) {$st['s9'] += (int)$_GET['freedom'];} - if ($u->info['level'] > 18) {$st['s10'] += (int)$_GET['god'];} - //$st['s11'] +=(int)$_GET['energy']; - - $u->info['stats'] = $u->impStats($st); - - /*if((int)$_GET['energy'] + $u->stats['s11'] > $u->info['level']) { + + $summ = floor( + $_GET['energy'] + $_GET['str'] + $_GET['dex'] + $_GET['inst'] + $_GET['power'] + $_GET['intel'] + $_GET['wis'] + $_GET['spirit'] + $_GET['will'] + $_GET['freedom'] + $_GET['god'] + ); + if (!is_numeric($summ)) { + $summ = 0; + } + $summu = floor( + $_GET['m_axe'] + $_GET['m_molot'] + $_GET['m_sword'] + $_GET['m_tohand'] + $_GET['m_staff'] + $_GET['m_magic1'] + $_GET['m_magic2'] + $_GET['m_magic3'] + $_GET['m_magic4'] + $_GET['m_magic5'] + $_GET['m_magic6'] + $_GET['m_magic7'] + ); + if (!is_numeric($summu)) { + $summu = 0; + } + + /*-----Проверяем сумму статов и умений-----*/ + /*-----Пишем статы и умения----*/ + if ( + (($_GET['energy'] > 0 || $_GET['str'] > 0 || + $_GET['dex'] > 0 || + $_GET['inst'] > 0 || + $_GET['power'] > 0 || + ($_GET['intel'] > 0 && $u->info['level'] > 3) || + ($_GET['wis'] > 0 && $u->info['level'] > 6) || + ($_GET['spirit'] > 0 && $u->info['level'] > 9) || + ($_GET['will'] > 0 && $u->info['level'] > 12) || + ($_GET['freedom'] > 0 && $u->info['level'] > 15) || + ($_GET['god'] > 0 && $u->info['level'] > 18)) && $summ <= $u->info['ability'] && $u->info['ability'] > 0) || + (($st['a1'] + $_GET['m_sword'] <= 20 && $_GET['m_sword'] > 0) || + ($st['a2'] + $_GET['m_tohand'] <= 20 && $_GET['m_tohand'] > 0) || + ($st['a3'] + $_GET['m_molot'] <= 20 && $_GET['m_molot'] > 0) || + ($st['a4'] + $_GET['m_axe'] <= 20 && $_GET['m_axe'] > 0) || + ($st['a5'] + $_GET['m_staff'] <= 20 && $_GET['m_staff'] > 0) || + ($st['mg1'] + $_GET['m_magic1'] <= 20 && $_GET['m_magic1'] > 0) || + ($st['mg2'] + $_GET['m_magic2'] <= 20 && $_GET['m_magic2'] > 0) || + ($st['mg3'] + $_GET['m_magic3'] <= 20 && $_GET['m_magic3'] > 0) || + ($st['mg4'] + $_GET['m_magic4'] <= 20 && $_GET['m_magic4'] > 0) || + ($st['mg5'] + $_GET['m_magic5'] <= 20 && $_GET['m_magic5'] > 0) || + ($st['mg6'] + $_GET['m_magic6'] <= 20 && $_GET['m_magic6'] > 0) || + ($st['mg7'] + $_GET['m_magic7'] <= 20 && $_GET['m_magic7'] > 0) && $summu <= $u->info['skills'] && $u->info['skills'] > 0) && $u->info['id'] == $_GET['s4i'] + ) { + $st['s1'] += (int)$_GET['str']; + $st['s2'] += (int)$_GET['dex']; + $st['s3'] += (int)$_GET['inst']; + $st['s4'] += (int)$_GET['power']; + $st['a1'] += (int)$_GET['m_sword']; + $st['a2'] += (int)$_GET['m_tohand']; + $st['a3'] += (int)$_GET['m_molot']; + $st['a4'] += (int)$_GET['m_axe']; + $st['a5'] += (int)$_GET['m_staff']; + $st['mg1'] += (int)$_GET['m_magic1']; + $st['mg2'] += (int)$_GET['m_magic2']; + $st['mg3'] += (int)$_GET['m_magic3']; + $st['mg4'] += (int)$_GET['m_magic4']; + $st['mg5'] += (int)$_GET['m_magic5']; + $st['mg6'] += (int)$_GET['m_magic6']; + $st['mg7'] += (int)$_GET['m_magic7']; + if ($u->info['level'] > 3) { + $st['s5'] += (int)$_GET['intel']; + } + if ($u->info['level'] > 6) { + $st['s6'] += (int)$_GET['wis']; + } + if ($u->info['level'] > 9) { + $st['s7'] += (int)$_GET['spirit']; + } + if ($u->info['level'] > 12) { + $st['s8'] += (int)$_GET['will']; + } + if ($u->info['level'] > 15) { + $st['s9'] += (int)$_GET['freedom']; + } + if ($u->info['level'] > 18) { + $st['s10'] += (int)$_GET['god']; + } + //$st['s11'] +=(int)$_GET['energy']; + + $u->info['stats'] = $u->impStats($st); + + /*if((int)$_GET['energy'] + $u->stats['s11'] > $u->info['level']) { echo '   Энергия не может быть выше уровня персонажа
    '; }else*/ - if(/*$_GET['energy'] < 0 || */$_GET['str'] < 0 || $_GET['dex'] < 0 || $_GET['intel'] < 0 || $_GET['wis'] < 0 || $_GET['spirit'] < 0 || $_GET['will'] < 0 || $_GET['freedom'] < 0 || $_GET['god'] < 0 || $_GET['inst'] < 0 || $_GET['power'] < 0 || $_GET['m_sword'] < 0 || $_GET['m_tohand'] < 0 || $_GET['m_molot'] < 0 || $_GET['m_staff'] < 0 || $_GET['m_magic1'] < 0 || $_GET['m_magic2'] < 0 || $_GET['m_magic3'] < 0 || $_GET['m_magic4'] < 0 || $_GET['m_magic5'] < 0 || $_GET['m_magic6'] < 0 || $_GET['m_magic7'] < 0) { - echo '   1) Что-то здесь не так...
    '; - }elseif($u->info['ability']-(int)$summ<0 || $u->info['skills']-(int)$summu<0) - { - echo '   Что-то здесь не так... (Способности: '.($u->info['ability']-(int)$summ).', Умения: '.($u->info['skills']-(int)$summu).')
    '; - }elseif(mysql_query("UPDATE + if (/*$_GET['energy'] < 0 || */ + $_GET['str'] < 0 || $_GET['dex'] < 0 || $_GET['intel'] < 0 || $_GET['wis'] < 0 || $_GET['spirit'] < 0 || $_GET['will'] < 0 || $_GET['freedom'] < 0 || $_GET['god'] < 0 || $_GET['inst'] < 0 || $_GET['power'] < 0 || $_GET['m_sword'] < 0 || $_GET['m_tohand'] < 0 || $_GET['m_molot'] < 0 || $_GET['m_staff'] < 0 || $_GET['m_magic1'] < 0 || $_GET['m_magic2'] < 0 || $_GET['m_magic3'] < 0 || $_GET['m_magic4'] < 0 || $_GET['m_magic5'] < 0 || $_GET['m_magic6'] < 0 || $_GET['m_magic7'] < 0) { + echo '   1) Что-то здесь не так...
    '; + } elseif ($u->info['ability'] - (int)$summ < 0 || $u->info['skills'] - (int)$summu < 0) { + echo '   Что-то здесь не так... (Способности: ' . ($u->info['ability'] - (int)$summ) . ', Умения: ' . ($u->info['skills'] - (int)$summu) . ')
    '; + } elseif (mysql_query( + "UPDATE `stats` SET - `stats`= '".mysql_real_escape_string($u->info['stats'])."', - `ability` = `ability` - '".mysql_real_escape_string((int)$summ)."', - `skills` = `skills` - '".mysql_real_escape_string((int)$summu)."' + `stats`= '" . mysql_real_escape_string($u->info['stats']) . "', + `ability` = `ability` - '" . mysql_real_escape_string((int)$summ) . "', + `skills` = `skills` - '" . mysql_real_escape_string((int)$summu) . "' WHERE - `id` = '".(int)$u->info['id']."';")) - { - //if($_GET['energy']>0) {echo '   Увеличение способности "Энергия" произведено удачно
    ';} - if($_GET['str']>0) {echo '   Увеличение способности "Сила" произведено удачно
    ';} - if($_GET['dex']>0) {echo '   Увеличение способности "Ловкость" произведено удачно
    ';} - if($_GET['inst']>0) {echo '   Увеличение способности "Интуиция" произведено удачно
    ';} - if($_GET['power']>0) {echo '   Увеличение способности "Выносливость" произведено удачно
    ';} - if($_GET['intel']>0) {echo '   Увеличение способности "Интеллект" произведено удачно
    ';} - if($_GET['wis']>0) {echo '   Увеличение способности "Мудрость" произведено удачно
    ';} - if($_GET['spirit']>0) {echo '   Увеличение способности "Духовность" произведено удачно
    ';} - if($_GET['will']>0) {echo '   Увеличение способности "Воля" произведено удачно
    ';} - if($_GET['freedom']>0) {echo '   Увеличение способности "Свобода духа" произведено удачно
    ';} - if($_GET['god']>0) {echo '   Увеличение способности "Божественность" произведено удачно
    ';} - if($_GET['m_sword']>0) {echo '   Увеличение умения "Мастерство владения ножами, кастетами" произведено удачно
    ';} - if($_GET['m_axe']>0) {echo '   Увеличение умения "Мастерство владения мечами" произведено удачно
    ';} - if($_GET['m_molot']>0) {echo '   Увеличение умения "Мастерство владения дубинами, булавами" произведено удачно
    ';} - if($_GET['m_tohand']>0) {echo '   Увеличение умения "Мастерство владения топорами, секирами" произведено удачно
    ';} - if($_GET['m_staff']>0) {echo '   Увеличение умения "Мастерство владения магическими посохами" произведено удачно
    ';} - if($_GET['m_magic1']>0) {echo '   Увеличение умения "Мастерство владения стихией Огня" произведено удачно
    ';} - if($_GET['m_magic2']>0) {echo '   Увеличение умения "Мастерство владения стихией Воздуха" произведено удачно
    ';} - if($_GET['m_magic3']>0) {echo '   Увеличение умения "Мастерство владения стихией Воды" произведено удачно
    ';} - if($_GET['m_magic4']>0) {echo '   Увеличение умения "Мастерство владения стихией Земли" произведено удачно
    ';} - if($_GET['m_magic5']>0) {echo '   Увеличение умения "Мастерство владения магией Света" произведено удачно
    ';} - if($_GET['m_magic6']>0) {echo '   Увеличение умения "Мастерство владения магией Тьмы" произведено удачно
    ';} - if($_GET['m_magic7']>0) {echo '   Увеличение умения "Мастерство владения серой магией" произведено удачно
    ';} - /*--для обновления--*/ - //$u->stats['s11'] += (int)$_GET['energy']; - $u->stats['s1'] += (int)$_GET['str']; - $u->stats['s2'] += (int)$_GET['dex']; - $u->stats['s3'] += (int)$_GET['inst']; - $u->stats['s4'] += (int)$_GET['power']; - $u->stats['a1'] += (int)$_GET['m_sword']; - $u->stats['a2'] += (int)$_GET['m_tohand']; - $u->stats['a3'] += (int)$_GET['m_molot']; - $u->stats['a4'] += (int)$_GET['m_axe']; - $u->stats['a5'] += (int)$_GET['m_staff']; - $u->stats['mg1'] += (int)$_GET['m_magic1']; - $u->stats['mg2'] += (int)$_GET['m_magic2']; - $u->stats['mg3'] += (int)$_GET['m_magic3']; - $u->stats['mg4'] += (int)$_GET['m_magic4']; - $u->stats['mg5'] += (int)$_GET['m_magic5']; - $u->stats['mg6'] += (int)$_GET['m_magic6']; - $u->stats['mg7'] += (int)$_GET['m_magic7']; - if ($u->info['level'] > 3) {$u->stats['s5'] += (int)$_GET['intel'];} - if ($u->info['level'] > 6) {$u->stats['s6'] += (int)$_GET['wis'];} - if ($u->info['level'] > 9) {$u->stats['s7'] += (int)$_GET['spirit'];} - if ($u->info['level'] > 12) {$u->stats['s8'] += (int)$_GET['will'];} - if ($u->info['level'] > 15) {$u->stats['s9'] += (int)$_GET['freedom'];} - if ($u->info['level'] > 18) {$u->stats['s10'] += (int)$_GET['god'];} - $u->info['ability'] -= $summ; - $u->info['skills'] -= $summu; - /*--для обновления--*/ - } - } -} - /*-----Пишем статы и умения-----*/ -/////Прочие разные проверки -if(!isset($st['s1'])) {$st['s1']=0;} -if(!isset($st['s2'])) {$st['s2']=0;} -if(!isset($st['s3'])) {$st['s3']=0;} -if(!isset($st['s4'])) {$st['s4']=0;} -if(!isset($st['s5'])) {$st['s5']=0;} -if(!isset($st['s6'])) {$st['s6']=0;} -if(!isset($st['s7'])) {$st['s7']=0;} -if(!isset($st['s8'])) {$st['s8']=0;} -if(!isset($st['s9'])) {$st['s9']=0;} -if(!isset($st['s10'])) {$st['s10']=0;} -//if(!isset($st['s11'])) {$st['s11']=0;} -if(!isset($st['a1'])) {$st['a1']=0;} -if(!isset($st['a2'])) {$st['a2']=0;} -if(!isset($st['a3'])) {$st['a3']=0;} -if(!isset($st['a4'])) {$st['a4']=0;} -if(!isset($st['a5'])) {$st['a5']=0;} -if(!isset($st['mg1'])) {$st['mg1']=0;} -if(!isset($st['mg2'])) {$st['mg2']=0;} -if(!isset($st['mg3'])) {$st['mg3']=0;} -if(!isset($st['mg4'])) {$st['mg4']=0;} -if(!isset($st['mg5'])) {$st['mg5']=0;} -if(!isset($st['mg6'])) {$st['mg6']=0;} -if(!isset($st['mg7'])) {$st['mg7']=0;} -if(!isset($u->stats['s1'])) {$u->stats['s1']=0;} -if(!isset($u->stats['s2'])) {$u->stats['s2']=0;} -if(!isset($u->stats['s3'])) {$u->stats['s3']=0;} -if(!isset($u->stats['s4'])) {$u->stats['s4']=0;} -if(!isset($u->stats['s5'])) {$u->stats['s5']=0;} -if(!isset($u->stats['s6'])) {$u->stats['s6']=0;} -if(!isset($u->stats['s7'])) {$u->stats['s7']=0;} -if(!isset($u->stats['s8'])) {$u->stats['s8']=0;} -if(!isset($u->stats['s9'])) {$u->stats['s9']=0;} -if(!isset($u->stats['s10'])) {$u->stats['s10']=0;} -//if(!isset($u->stats['s11'])) {$u->stats['s11']=0;} -if(!isset($u->stats['a1'])) {$u->stats['a1']=0;} -if(!isset($u->stats['a2'])) {$u->stats['a2']=0;} -if(!isset($u->stats['a3'])) {$u->stats['a3']=0;} -if(!isset($u->stats['a4'])) {$u->stats['a4']=0;} -if(!isset($u->stats['a5'])) {$u->stats['a5']=0;} -if(!isset($u->stats['mg1'])) {$u->stats['mg1']=0;} -if(!isset($u->stats['mg2'])) {$u->stats['mg2']=0;} -if(!isset($u->stats['mg3'])) {$u->stats['mg3']=0;} -if(!isset($u->stats['mg4'])) {$u->stats['mg4']=0;} -if(!isset($u->stats['mg5'])) {$u->stats['mg5']=0;} -if(!isset($u->stats['mg6'])) {$u->stats['mg6']=0;} -if(!isset($u->stats['mg7'])) {$u->stats['mg7']=0;} -if(!isset($u->stats['a1'])) {$u->stats['a1']=0;} -if(!isset($u->stats['a2'])) {$u->stats['a2']=0;} -if(!isset($u->stats['a3'])) {$u->stats['a3']=0;} -if(!isset($u->stats['a4'])) {$u->stats['a4']=0;} -if(!isset($u->stats['a5'])) {$u->stats['a5']=0;} -if(!isset($u->stats['mg1'])) {$u->stats['mg1']=0;} -if(!isset($u->stats['mg2'])) {$u->stats['mg2']=0;} -if(!isset($u->stats['mg3'])) {$u->stats['mg3']=0;} -if(!isset($u->stats['mg4'])) {$u->stats['mg4']=0;} -if(!isset($u->stats['mg5'])) {$u->stats['mg5']=0;} -if(!isset($u->stats['mg6'])) {$u->stats['mg6']=0;} -if(!isset($u->stats['mg7'])) {$u->stats['mg7']=0;} -/////////////////////////// -/////Статы -$sil = $u->stats['s1'] - $st['s1']; -if($sil>0){$str = " (".$st['s1']."+".$sil.")";} -$lov = $u->stats['s2'] - $st['s2']; -if($lov>0){$dex = " (".$st['s2']."+".$lov.")";} -$int = $u->stats['s3'] - $st['s3']; -if($int>0){$inst = " (".$st['s3']."+".$int.")";} -$intell = $u->stats['s5'] - $st['s5']; -if($intell>0){$intel = " (".$st['s5']."+".$intell.")";} -//$energy = $u->stats['s11'] - $st['s11']; -//if($energy>0){$energy = " (".$st['s11']."+".$energy.")";} -/////Оружие -$noj = $u->stats['a1'] - $st['a1']; -if($noj>0){$nj = " (".$st['a1']."+".$noj.")";} -$topor = $u->stats['a2'] - $st['a2']; -if($topor>0){$top = " (".$st['a2']."+".$topor.")";} -$dubina = $u->stats['a3'] - $st['a3']; -if($dubina>0){$dub = " (".$st['a3']."+".$dubina.")";} -$mech = $u->stats['a4'] - $st['a4']; -if($mech>0){$mec = " (".$st['a4']."+".$mech.")";} -$posoh = $u->stats['a5'] - $st['a5']; -if($posoh>0){$pos = " (".$st['a5']."+".$posoh.")";} -/////Магии -$fire = $u->stats['mg1'] - $st['mg1']; -if($fire>0){$ogon = " (".$st['mg1']."+".$fire.")";} -$water = $u->stats['mg2'] - $st['mg2']; -if($water>0){$voda = " (".$st['mg2']."+".$water.")";} -$air = $u->stats['mg3'] - $st['mg3']; -if($air>0){$vozduh = " (".$st['mg3']."+".$air.")";} -$earth = $u->stats['mg4'] - $st['mg4']; -if($earth>0){$zemla = " (".$st['mg4']."+".$earth.")";} -$light = $u->stats['mg5'] - $st['mg5']; -if($light>0){$svet = " (".$st['mg5']."+".$light.")";} -$gray = $u->stats['mg6'] - $st['mg6']; -if($gray>0){$seraya = " (".$st['mg6']."+".$gray.")";} -$dark = $u->stats['mg7'] - $st['mg7']; -if($dark>0){$tma = " (".$st['mg7']."+".$dark.")";} -/////Особенности -$os['os1'] = $st['os1']; -//$os['os2'] = $st['os2']; -$os['os3'] = $st['os3']; -$os['os4'] = $st['os4']; -$os['os5'] = $st['os5']; -$os['os6'] = $st['os6']; -$os['os7'] = $st['os7']; -//$os['os8'] = $st['os8']; -$os['os9'] = $st['os9']; -$os['os10'] = $st['os10']; -//$os['os11'] = $st['os11']; + `id` = '" . (int)$u->info['id'] . "';" + )) { + //if($_GET['energy']>0) {echo '   Увеличение способности "Энергия" произведено удачно
    ';} + if ($_GET['str'] > 0) { + echo '   Увеличение способности "Сила" произведено удачно
    '; + } + if ($_GET['dex'] > 0) { + echo '   Увеличение способности "Ловкость" произведено удачно
    '; + } + if ($_GET['inst'] > 0) { + echo '   Увеличение способности "Интуиция" произведено удачно
    '; + } + if ($_GET['power'] > 0) { + echo '   Увеличение способности "Выносливость" произведено удачно
    '; + } + if ($_GET['intel'] > 0) { + echo '   Увеличение способности "Интеллект" произведено удачно
    '; + } + if ($_GET['wis'] > 0) { + echo '   Увеличение способности "Мудрость" произведено удачно
    '; + } + if ($_GET['spirit'] > 0) { + echo '   Увеличение способности "Духовность" произведено удачно
    '; + } + if ($_GET['will'] > 0) { + echo '   Увеличение способности "Воля" произведено удачно
    '; + } + if ($_GET['freedom'] > 0) { + echo '   Увеличение способности "Свобода духа" произведено удачно
    '; + } + if ($_GET['god'] > 0) { + echo '   Увеличение способности "Божественность" произведено удачно
    '; + } + if ($_GET['m_sword'] > 0) { + echo '   Увеличение умения "Мастерство владения ножами, кастетами" произведено удачно
    '; + } + if ($_GET['m_axe'] > 0) { + echo '   Увеличение умения "Мастерство владения мечами" произведено удачно
    '; + } + if ($_GET['m_molot'] > 0) { + echo '   Увеличение умения "Мастерство владения дубинами, булавами" произведено удачно
    '; + } + if ($_GET['m_tohand'] > 0) { + echo '   Увеличение умения "Мастерство владения топорами, секирами" произведено удачно
    '; + } + if ($_GET['m_staff'] > 0) { + echo '   Увеличение умения "Мастерство владения магическими посохами" произведено удачно
    '; + } + if ($_GET['m_magic1'] > 0) { + echo '   Увеличение умения "Мастерство владения стихией Огня" произведено удачно
    '; + } + if ($_GET['m_magic2'] > 0) { + echo '   Увеличение умения "Мастерство владения стихией Воздуха" произведено удачно
    '; + } + if ($_GET['m_magic3'] > 0) { + echo '   Увеличение умения "Мастерство владения стихией Воды" произведено удачно
    '; + } + if ($_GET['m_magic4'] > 0) { + echo '   Увеличение умения "Мастерство владения стихией Земли" произведено удачно
    '; + } + if ($_GET['m_magic5'] > 0) { + echo '   Увеличение умения "Мастерство владения магией Света" произведено удачно
    '; + } + if ($_GET['m_magic6'] > 0) { + echo '   Увеличение умения "Мастерство владения магией Тьмы" произведено удачно
    '; + } + if ($_GET['m_magic7'] > 0) { + echo '   Увеличение умения "Мастерство владения серой магией" произведено удачно
    '; + } + /*--для обновления--*/ + //$u->stats['s11'] += (int)$_GET['energy']; + $u->stats['s1'] += (int)$_GET['str']; + $u->stats['s2'] += (int)$_GET['dex']; + $u->stats['s3'] += (int)$_GET['inst']; + $u->stats['s4'] += (int)$_GET['power']; + $u->stats['a1'] += (int)$_GET['m_sword']; + $u->stats['a2'] += (int)$_GET['m_tohand']; + $u->stats['a3'] += (int)$_GET['m_molot']; + $u->stats['a4'] += (int)$_GET['m_axe']; + $u->stats['a5'] += (int)$_GET['m_staff']; + $u->stats['mg1'] += (int)$_GET['m_magic1']; + $u->stats['mg2'] += (int)$_GET['m_magic2']; + $u->stats['mg3'] += (int)$_GET['m_magic3']; + $u->stats['mg4'] += (int)$_GET['m_magic4']; + $u->stats['mg5'] += (int)$_GET['m_magic5']; + $u->stats['mg6'] += (int)$_GET['m_magic6']; + $u->stats['mg7'] += (int)$_GET['m_magic7']; + if ($u->info['level'] > 3) { + $u->stats['s5'] += (int)$_GET['intel']; + } + if ($u->info['level'] > 6) { + $u->stats['s6'] += (int)$_GET['wis']; + } + if ($u->info['level'] > 9) { + $u->stats['s7'] += (int)$_GET['spirit']; + } + if ($u->info['level'] > 12) { + $u->stats['s8'] += (int)$_GET['will']; + } + if ($u->info['level'] > 15) { + $u->stats['s9'] += (int)$_GET['freedom']; + } + if ($u->info['level'] > 18) { + $u->stats['s10'] += (int)$_GET['god']; + } + $u->info['ability'] -= $summ; + $u->info['skills'] -= $summu; + /*--для обновления--*/ + } + } + } + /*-----Пишем статы и умения-----*/ + /////Прочие разные проверки + if (!isset($st['s1'])) { + $st['s1'] = 0; + } + if (!isset($st['s2'])) { + $st['s2'] = 0; + } + if (!isset($st['s3'])) { + $st['s3'] = 0; + } + if (!isset($st['s4'])) { + $st['s4'] = 0; + } + if (!isset($st['s5'])) { + $st['s5'] = 0; + } + if (!isset($st['s6'])) { + $st['s6'] = 0; + } + if (!isset($st['s7'])) { + $st['s7'] = 0; + } + if (!isset($st['s8'])) { + $st['s8'] = 0; + } + if (!isset($st['s9'])) { + $st['s9'] = 0; + } + if (!isset($st['s10'])) { + $st['s10'] = 0; + } + //if(!isset($st['s11'])) {$st['s11']=0;} + if (!isset($st['a1'])) { + $st['a1'] = 0; + } + if (!isset($st['a2'])) { + $st['a2'] = 0; + } + if (!isset($st['a3'])) { + $st['a3'] = 0; + } + if (!isset($st['a4'])) { + $st['a4'] = 0; + } + if (!isset($st['a5'])) { + $st['a5'] = 0; + } + if (!isset($st['mg1'])) { + $st['mg1'] = 0; + } + if (!isset($st['mg2'])) { + $st['mg2'] = 0; + } + if (!isset($st['mg3'])) { + $st['mg3'] = 0; + } + if (!isset($st['mg4'])) { + $st['mg4'] = 0; + } + if (!isset($st['mg5'])) { + $st['mg5'] = 0; + } + if (!isset($st['mg6'])) { + $st['mg6'] = 0; + } + if (!isset($st['mg7'])) { + $st['mg7'] = 0; + } + if (!isset($u->stats['s1'])) { + $u->stats['s1'] = 0; + } + if (!isset($u->stats['s2'])) { + $u->stats['s2'] = 0; + } + if (!isset($u->stats['s3'])) { + $u->stats['s3'] = 0; + } + if (!isset($u->stats['s4'])) { + $u->stats['s4'] = 0; + } + if (!isset($u->stats['s5'])) { + $u->stats['s5'] = 0; + } + if (!isset($u->stats['s6'])) { + $u->stats['s6'] = 0; + } + if (!isset($u->stats['s7'])) { + $u->stats['s7'] = 0; + } + if (!isset($u->stats['s8'])) { + $u->stats['s8'] = 0; + } + if (!isset($u->stats['s9'])) { + $u->stats['s9'] = 0; + } + if (!isset($u->stats['s10'])) { + $u->stats['s10'] = 0; + } + //if(!isset($u->stats['s11'])) {$u->stats['s11']=0;} + if (!isset($u->stats['a1'])) { + $u->stats['a1'] = 0; + } + if (!isset($u->stats['a2'])) { + $u->stats['a2'] = 0; + } + if (!isset($u->stats['a3'])) { + $u->stats['a3'] = 0; + } + if (!isset($u->stats['a4'])) { + $u->stats['a4'] = 0; + } + if (!isset($u->stats['a5'])) { + $u->stats['a5'] = 0; + } + if (!isset($u->stats['mg1'])) { + $u->stats['mg1'] = 0; + } + if (!isset($u->stats['mg2'])) { + $u->stats['mg2'] = 0; + } + if (!isset($u->stats['mg3'])) { + $u->stats['mg3'] = 0; + } + if (!isset($u->stats['mg4'])) { + $u->stats['mg4'] = 0; + } + if (!isset($u->stats['mg5'])) { + $u->stats['mg5'] = 0; + } + if (!isset($u->stats['mg6'])) { + $u->stats['mg6'] = 0; + } + if (!isset($u->stats['mg7'])) { + $u->stats['mg7'] = 0; + } + if (!isset($u->stats['a1'])) { + $u->stats['a1'] = 0; + } + if (!isset($u->stats['a2'])) { + $u->stats['a2'] = 0; + } + if (!isset($u->stats['a3'])) { + $u->stats['a3'] = 0; + } + if (!isset($u->stats['a4'])) { + $u->stats['a4'] = 0; + } + if (!isset($u->stats['a5'])) { + $u->stats['a5'] = 0; + } + if (!isset($u->stats['mg1'])) { + $u->stats['mg1'] = 0; + } + if (!isset($u->stats['mg2'])) { + $u->stats['mg2'] = 0; + } + if (!isset($u->stats['mg3'])) { + $u->stats['mg3'] = 0; + } + if (!isset($u->stats['mg4'])) { + $u->stats['mg4'] = 0; + } + if (!isset($u->stats['mg5'])) { + $u->stats['mg5'] = 0; + } + if (!isset($u->stats['mg6'])) { + $u->stats['mg6'] = 0; + } + if (!isset($u->stats['mg7'])) { + $u->stats['mg7'] = 0; + } + /////////////////////////// + /////Статы + $sil = $u->stats['s1'] - $st['s1']; + if ($sil > 0) { + $str = " (" . $st['s1'] . "+" . $sil . ")"; + } + $lov = $u->stats['s2'] - $st['s2']; + if ($lov > 0) { + $dex = " (" . $st['s2'] . "+" . $lov . ")"; + } + $int = $u->stats['s3'] - $st['s3']; + if ($int > 0) { + $inst = " (" . $st['s3'] . "+" . $int . ")"; + } + $intell = $u->stats['s5'] - $st['s5']; + if ($intell > 0) { + $intel = " (" . $st['s5'] . "+" . $intell . ")"; + } + //$energy = $u->stats['s11'] - $st['s11']; + //if($energy>0){$energy = " (".$st['s11']."+".$energy.")";} + /////Оружие + $noj = $u->stats['a1'] - $st['a1']; + if ($noj > 0) { + $nj = " (" . $st['a1'] . "+" . $noj . ")"; + } + $topor = $u->stats['a2'] - $st['a2']; + if ($topor > 0) { + $top = " (" . $st['a2'] . "+" . $topor . ")"; + } + $dubina = $u->stats['a3'] - $st['a3']; + if ($dubina > 0) { + $dub = " (" . $st['a3'] . "+" . $dubina . ")"; + } + $mech = $u->stats['a4'] - $st['a4']; + if ($mech > 0) { + $mec = " (" . $st['a4'] . "+" . $mech . ")"; + } + $posoh = $u->stats['a5'] - $st['a5']; + if ($posoh > 0) { + $pos = " (" . $st['a5'] . "+" . $posoh . ")"; + } + /////Магии + $fire = $u->stats['mg1'] - $st['mg1']; + if ($fire > 0) { + $ogon = " (" . $st['mg1'] . "+" . $fire . ")"; + } + $water = $u->stats['mg2'] - $st['mg2']; + if ($water > 0) { + $voda = " (" . $st['mg2'] . "+" . $water . ")"; + } + $air = $u->stats['mg3'] - $st['mg3']; + if ($air > 0) { + $vozduh = " (" . $st['mg3'] . "+" . $air . ")"; + } + $earth = $u->stats['mg4'] - $st['mg4']; + if ($earth > 0) { + $zemla = " (" . $st['mg4'] . "+" . $earth . ")"; + } + $light = $u->stats['mg5'] - $st['mg5']; + if ($light > 0) { + $svet = " (" . $st['mg5'] . "+" . $light . ")"; + } + $gray = $u->stats['mg6'] - $st['mg6']; + if ($gray > 0) { + $seraya = " (" . $st['mg6'] . "+" . $gray . ")"; + } + $dark = $u->stats['mg7'] - $st['mg7']; + if ($dark > 0) { + $tma = " (" . $st['mg7'] . "+" . $dark . ")"; + } + /////Особенности + $os['os1'] = $st['os1']; + //$os['os2'] = $st['os2']; + $os['os3'] = $st['os3']; + $os['os4'] = $st['os4']; + $os['os5'] = $st['os5']; + $os['os6'] = $st['os6']; + $os['os7'] = $st['os7']; + //$os['os8'] = $st['os8']; + $os['os9'] = $st['os9']; + $os['os10'] = $st['os10']; + //$os['os11'] = $st['os11']; -$os["os1"]=array("name"=>"Изворотливый","opt"=>"dec_transfer","descr"=>"Снижение стоимости передач на ", "nlevel"=>4,"bonus1"=>"0,1 кр.","bonus2"=>"0,2 кр.","bonus3"=>"0,3 кр.","bonus4"=>"0,4 кр.","bonus5"=>"0,5 кр."); -//$os["os2"]=array("name"=>"Стойкий","opt"=>"dec_travma","descr"=>"Время травмы меньше на ", "nlevel"=>4,"bonus1"=>"5%","bonus2"=>"10%","bonus3"=>"15%","bonus4"=>"20%","bonus5"=>"25%"); -$os["os3"]=array("name"=>"Быстрый","opt"=>"fast_homeworld","descr"=>"Кнопка \"Возврат\" появляется раньше на ", "nlevel"=>4,"bonus1"=>"5 минут","bonus2"=>"10 минут","bonus3"=>"15 минут","bonus4"=>"20 минут","bonus5"=>"25 минут"); -$os["os4"]=array("name"=>"Сообразительный","opt"=>"inc_expr","descr"=>"Получаемый опыт больше на ", "nlevel"=>4,"bonus1"=>"1 %","bonus2"=>"2 %","bonus3"=>"3 %","bonus4"=>"4 %","bonus5"=>"5 %"); -$os["os5"]=array("name"=>"Дружелюбный","opt"=>"inc_friends","descr"=>"Cписок друзей больше на ","bonus1"=>5,"bonus2"=>10,"bonus3"=>15,"bonus4"=>20,"bonus5"=>25); -$os["os6"]=array("name"=>"Общительный","opt"=>"inc_hobby","descr"=>"Увеличение максимального размера раздела \"Увлечения / хобби\" на ","bonus1"=>"200 символов","bonus2"=>"400 символов","bonus3"=>"600 символов","bonus4"=>"800 символов","bonus5"=>"1000 символов"); -$os["os7"]=array("name"=>"Запасливый","opt"=>"max_inventory","descr"=>"Больше места в рюкзаке на ", "nlevel"=>4,"bonus1"=>"10 единиц","bonus2"=>"20 единиц","bonus3"=>"30 единиц","bonus4"=>"40 единиц","bonus5"=>"50 единиц"); -//$os["os8"]=array("name"=>"Коммуникабельный","opt"=>"num_transfer","descr"=>"Лимит передач в день ", "nlevel"=>4,"bonus1"=>"+20","bonus2"=>"+40","bonus3"=>"+60","bonus4"=>"+80","bonus5"=>"+100"); -$os["os9"]=array("name"=>"Двужильный","opt"=>"speed_HP","descr"=>"Здоровье восстанавливается быстрее на ", "npower"=>10,"bonus1"=>"+5%","bonus2"=>"+10%","bonus3"=>"+15%","bonus4"=>"+20%","bonus5"=>"+30%"); -$os["os10"]=array("name"=>"Здравомыслящий","opt"=>"speed_MP","descr"=>"Мана восстанавливается быстрее на ", "nwis"=>20,"bonus1"=>"+5%","bonus2"=>"+10%","bonus3"=>"+15%","bonus4"=>"+20%","bonus5"=>"+25%"); -//$os["os11"]=array("name"=>"Здоровый сон","opt"=>"speed_debuff","descr"=>"Во время сна время действия негативных эффектов течет со скоростью ", "nlevel"=>5,"bonus1"=>"10% от нормальной","bonus2"=>"20% от нормальной","bonus3"=>"30% от нормальной","bonus4"=>"40% от нормальной","bonus5"=>"50% от нормальной"); -?> - microLogin($u->info['id'],1);?> -     -
    -&rnd="'> - + $os["os1"] = ["name" => "Изворотливый", "opt" => "dec_transfer", "descr" => "Снижение стоимости передач на ", "nlevel" => 4, "bonus1" => "0,1 кр.", "bonus2" => "0,2 кр.", "bonus3" => "0,3 кр.", "bonus4" => "0,4 кр.", "bonus5" => "0,5 кр."]; + //$os["os2"]=array("name"=>"Стойкий","opt"=>"dec_travma","descr"=>"Время травмы меньше на ", "nlevel"=>4,"bonus1"=>"5%","bonus2"=>"10%","bonus3"=>"15%","bonus4"=>"20%","bonus5"=>"25%"); + $os["os3"] = ["name" => "Быстрый", "opt" => "fast_homeworld", "descr" => "Кнопка \"Возврат\" появляется раньше на ", "nlevel" => 4, "bonus1" => "5 минут", "bonus2" => "10 минут", "bonus3" => "15 минут", "bonus4" => "20 минут", "bonus5" => "25 минут"]; + $os["os4"] = ["name" => "Сообразительный", "opt" => "inc_expr", "descr" => "Получаемый опыт больше на ", "nlevel" => 4, "bonus1" => "1 %", "bonus2" => "2 %", "bonus3" => "3 %", "bonus4" => "4 %", "bonus5" => "5 %"]; + $os["os5"] = ["name" => "Дружелюбный", "opt" => "inc_friends", "descr" => "Cписок друзей больше на ", "bonus1" => 5, "bonus2" => 10, "bonus3" => 15, "bonus4" => 20, "bonus5" => 25]; + $os["os6"] = ["name" => "Общительный", "opt" => "inc_hobby", "descr" => "Увеличение максимального размера раздела \"Увлечения / хобби\" на ", "bonus1" => "200 символов", "bonus2" => "400 символов", "bonus3" => "600 символов", "bonus4" => "800 символов", "bonus5" => "1000 символов"]; + $os["os7"] = ["name" => "Запасливый", "opt" => "max_inventory", "descr" => "Больше места в рюкзаке на ", "nlevel" => 4, "bonus1" => "10 единиц", "bonus2" => "20 единиц", "bonus3" => "30 единиц", "bonus4" => "40 единиц", "bonus5" => "50 единиц"]; + //$os["os8"]=array("name"=>"Коммуникабельный","opt"=>"num_transfer","descr"=>"Лимит передач в день ", "nlevel"=>4,"bonus1"=>"+20","bonus2"=>"+40","bonus3"=>"+60","bonus4"=>"+80","bonus5"=>"+100"); + $os["os9"] = ["name" => "Двужильный", "opt" => "speed_HP", "descr" => "Здоровье восстанавливается быстрее на ", "npower" => 10, "bonus1" => "+5%", "bonus2" => "+10%", "bonus3" => "+15%", "bonus4" => "+20%", "bonus5" => "+30%"]; + $os["os10"] = ["name" => "Здравомыслящий", "opt" => "speed_MP", "descr" => "Мана восстанавливается быстрее на ", "nwis" => 20, "bonus1" => "+5%", "bonus2" => "+10%", "bonus3" => "+15%", "bonus4" => "+20%", "bonus5" => "+25%"]; + //$os["os11"]=array("name"=>"Здоровый сон","opt"=>"speed_debuff","descr"=>"Во время сна время действия негативных эффектов течет со скоростью ", "nlevel"=>5,"bonus1"=>"10% от нормальной","bonus2"=>"20% от нормальной","bonus3"=>"30% от нормальной","bonus4"=>"40% от нормальной","bonus5"=>"50% от нормальной"); + ?> + microLogin($u->info['id'], 1); ?> +     + + &rnd="'> +
    -
    - - - - - - - - - + $bsp = strripos($u->stats['effects'][$i]['data'], '-'); + if ($bsp == true) { + $btnset = false; + } + + $bsp = strripos($u->stats['effects'][$i]['data'], '|nofastfinisheff=1'); + if ($bsp == true) { + $btnset = false; + } + + if ($btnset == false) { + $btnse = '  --  '; + } + + if (isset($_GET['endeffectplease']) && $_GET['endeffectplease'] == $u->stats['effects'][$i]['id'] && $u->stats['effects'][$i]['id'] > 0 && $btnset == true) { + mysql_query( + 'UPDATE `eff_users` SET `timeUse` = 0 WHERE `id` = "' . $u->stats['effects'][$i]['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1' + ); + echo '
    Эффект "' . $u->stats['effects'][$i]['name'] . '" был принудительно завершен.
    '; + if ($clr == 'C7') { + $clr = 'D5'; + } else { + $clr = 'C7'; + } + } else { + $ae .= ' + + + + + '; - } - } - $i++; -} + } + } + $i++; + } -//Харки от иконок -$efs = mysql_query('SELECT * FROM `users_ico` WHERE `uid`="'.mysql_real_escape_string($u->info['id']).'" AND (`endTime` > "'.time().'" OR `endTime` = 0)'); -while($e = mysql_fetch_array($efs)) { - if($clr=='C7') - { - $clr = 'D5'; - }else{ - $clr = 'C7'; - } - $v1 = ''; - $v2 = ''; - $v3 = $u->lookStats($e['bonus']); - //-?? - $j = 0; - while($jitems['add'])) - { - if(isset($v3['add_'.$u->items['add'][$j]])) - { - $v1 .= ' • '.$u->is[$u->items['add'][$j]].'
    '; - $v4 = $v3['add_'.$u->items['add'][$j]]; - if($v4>0) - { - $v4 = '+'.$v4; - }elseif($v4<0) - { - $v4 = ''.$v4.''; - } - $v2 .= $v4.'
    '; - } - $j++; - } - if($v1=='') - { - $v1 = '??'; - } - if($v2=='') - { - $v2 = '??'; - } - - //$btnse = 'Сбросить'; - $btnse = '  --  '; - - if( isset($_GET['hideico']) && $_GET['hideico'] == $e['id'] ) { - mysql_query('UPDATE `users_ico` SET `see` = 0 WHERE `id` = "'.$e['id'].'" LIMIT 1'); - $e['see'] = 0; - }elseif( isset($_GET['showico']) && $_GET['showico'] == $e['id'] ) { - mysql_query('UPDATE `users_ico` SET `see` = 1 WHERE `id` = "'.$e['id'].'" LIMIT 1'); - $e['see'] = 1; - } - - /*if( $e['see'] == 1 ) { - $btnse = '  Скрыть из инф.  '; - }else{ - $btnse = '  Показать в инф.  '; - }*/ - - $ae .= '
    - - - + //Харки от иконок + $efs = mysql_query( + 'SELECT * FROM `users_ico` WHERE `uid`="' . mysql_real_escape_string( + $u->info['id'] + ) . '" AND (`endTime` > "' . time() . '" OR `endTime` = 0)' + ); + while ($e = mysql_fetch_array($efs)) { + if ($clr == 'C7') { + $clr = 'D5'; + } else { + $clr = 'C7'; + } + $v1 = ''; + $v2 = ''; + $v3 = $u->lookStats($e['bonus']); + //-?? + $j = 0; + while ($j < count($u->items['add'])) { + if (isset($v3['add_' . $u->items['add'][$j]])) { + $v1 .= ' • ' . $u->is[$u->items['add'][$j]] . '
    '; + $v4 = $v3['add_' . $u->items['add'][$j]]; + if ($v4 > 0) { + $v4 = '+' . $v4; + } elseif ($v4 < 0) { + $v4 = '' . $v4 . ''; + } + $v2 .= $v4 . '
    '; + } + $j++; + } + if ($v1 == '') { + $v1 = '??'; + } + if ($v2 == '') { + $v2 = '??'; + } + + //$btnse = 'Сбросить'; + $btnse = '  --  '; + + if (isset($_GET['hideico']) && $_GET['hideico'] == $e['id']) { + mysql_query('UPDATE `users_ico` SET `see` = 0 WHERE `id` = "' . $e['id'] . '" LIMIT 1'); + $e['see'] = 0; + } elseif (isset($_GET['showico']) && $_GET['showico'] == $e['id']) { + mysql_query('UPDATE `users_ico` SET `see` = 1 WHERE `id` = "' . $e['id'] . '" LIMIT 1'); + $e['see'] = 1; + } + + /*if( $e['see'] == 1 ) { + $btnse = '  Скрыть из инф.  '; + }else{ + $btnse = '  Показать в инф.  '; + }*/ + + $ae .= ' + + + - + if ($e['type'] == 2) { + $ae .= 'width="30" style="float:left"'; + } + $ae .= ' src="https://img.new-combats.com/' . $e['img'] . '"> "' . $e['text'] . '" + '; -} + } -if($ae!='') -{ -?> -
    Характеристики персонажа
    - + + + + + + -info['level']>1){ ?> - -info['inTurnir'] == 0 ) {*/ ?> - - - - - - - - - - -
    Характеристики персонажа
    + -МастерствоОсобенности -ПриемыЗнания -Состояние -Репутация 
    - - + + + + + info['skills'] && $st['mg7'] < 30) { ?> + + info['skills'] > 0 && $st['mg7'] >= 30) { ?> + + + +
    -
    + + + + + + info['ability'] > 0) { ?> + + + + + + + + info['ability'] > 0) { ?> + + + + + + + info['ability'] > 0) { ?> + + + + + + + info['ability'] > 0) { ?> + + + info['level'] > 3) { ?> + + + + + info['ability'] > 0) { ?> + + + info['level'] > 6) { ?> + + + + + info['ability'] > 0) { ?> + + + info['level'] > 9) { ?> + + + + + info['ability'] > 0) { ?> + + + info['level'] > 12) { ?> + + + + + info['ability'] > 0) { ?> + + + info['level'] > 15) { ?> + + + + + info['ability'] > 0) { ?> + + + info['level'] > 18) { ?> + + + + + info['ability'] > 0) { ?> + + + + +
    • Сила:stats['s1'] ?> + уменьшить  + увеличить +
    • Ловкость:stats['s2'] ?>
    уменьшить увеличить
    • Интуиция:stats['s3'] ?>
    уменьшить увеличить +
    • Выносливость:stats['s4'] ?>
    уменьшить увеличить +
    • Интеллект:stats['s5'] ?>уменьшить увеличить
    • Мудрость:stats['s6'] ?>уменьшить увеличить
    • Духовность:stats['s7'] ?>уменьшить увеличить
    • Воля:stats['s8'] ?>уменьшить увеличить
    • Свобода духа:stats['s9'] ?>уменьшить увеличить
    • Божественность:stats['s10'] ?>уменьшить увеличить
    + + +
    + info['ability']) { + echo "Возможных увеличений: {$u->info['ability']}
    "; + } + if ($u->info['skills']) { + echo "Свободных умений: {$u->info['skills']}
    "; + } + if ($u->info['sskills']) { + echo "Свободных особенностей: {$u->info['sskills']}
    "; + } + ?> +
    +
    + +

    + + Зависиомость максимального профильного урона оружием у основных воинских + классов.:
    + - Дробящий (дубины): 1 сила = 0,5 к урону и 1 выносливость = +1 + к + урону.
    + - Режущий (мечи): 1 интуиция = 1 к урону.
    + - Колющий (кинжалы): 1 сила = 0,25 к урону и 1 ловкость = 0,75 к + урону.
    + - Рубящий (топоры): 1 сила = 1,2 к урону.
    +
    +
    - - +
    Оружие:
    + + +
    + + + + + info['level'] > 1) { ?> + + info['inTurnir'] == 0 ) {*/ ?> + + + + + + + + + + + +
    Мастерство + Особенности + + Приемы + + Знания + + Состояние + + Репутация +  
    + + - - - -info['skills'] && $st['a3']<30){?> - -info['skills']>0 && $st['a3']>=30){?> - - - +
    +
    -
     • Мастерство владения дубинами, булавами: stats['a3']?>
    -уменьшить  -увеличить - -  - -
    + + + - - - - -info['skills'] && $st['a1']<30){?> - -info['skills']>0 && $st['a1']>=30){?> - - - + + + + + info['skills'] && $st['a4'] < 30) { ?> + + info['skills'] > 0 && $st['a4'] >= 30) { ?> + + + - - - - -info['skills'] && $st['a2']<30){?> - -info['skills']>0 && $st['a2']>=30){?> - - - - - - - -info['skills'] && $st['a5']<30){?> - -info['skills']>0 && $st['a5']>=30){?> - - - - + + + + + info['skills'] && $st['a3'] < 30) { ?> + + info['skills'] > 0 && $st['a3'] >= 30) { ?> + + + - - - - -info['skills'] && $st['mg1']<30){?> - -info['skills']>0 && $st['mg1']>=30){?> - - - + + + + + info['skills'] && $st['a1'] < 30) { ?> + + info['skills'] > 0 && $st['a1'] >= 30) { ?> + + + - - - - -info['skills'] && $st['mg2']<30){?> - -info['skills']>0 && $st['mg2']>=30){?> - - - + + + + + info['skills'] && $st['a2'] < 30) { ?> + + info['skills'] > 0 && $st['a2'] >= 30) { ?> + + + - - - - -info['skills'] && $st['mg3']<30){?> - -info['skills']>0 && $st['mg3']>=30){?> - - - + + + + + info['skills'] && $st['a5'] < 30) { ?> + + info['skills'] > 0 && $st['a5'] >= 30) { ?> + + + + + + - - - - -info['skills'] && $st['mg4']<30){?> - -info['skills']>0 && $st['mg4']>=30){?> - - - + + + + + info['skills'] && $st['mg1'] < 30) { ?> + + info['skills'] > 0 && $st['mg1'] >= 30) { ?> + + + - - - - - -info['skills'] && $st['mg7']<30){ ?> - -info['skills']>0 && $st['mg7']>=30){?> - - - -
    Оружие:
     • Мастерство владения ножами, кастетами: stats['a1']?>
    -уменьшить  -увеличить - -  - -
     • Мастерство владения мечами:stats['a4'] ?>
    + уменьшить  + увеличить + +   + +
     • Мастерство владения топорами, секирами: stats['a2']?>
    -уменьшить  -увеличить - -  - -
     • Мастерство владения магическими посохами: stats['a5']?>
    -уменьшить  -увеличить - -  - -
    Магия:
     • Мастерство владения дубинами, булавами:stats['a3'] ?>
    + уменьшить  + увеличить + +   + +
     • Мастерство владения стихией Огня: stats['mg1']?>
    -уменьшить  -увеличить - -  - -
     • Мастерство владения ножами, кастетами:stats['a1'] ?>
    + уменьшить  + увеличить + +   + +
     • Мастерство владения стихией Воздуха: stats['mg2']?>
    -уменьшить  -увеличить - -  - -
     • Мастерство владения топорами, секирами:stats['a2'] ?>
    + уменьшить  + увеличить + +   + +
     • Мастерство владения стихией Воды: stats['mg3']?>
    -уменьшить  -увеличить - -  - -
     • Мастерство владения магическими посохами:stats['a5'] ?>
    + уменьшить  + увеличить + +   + +
    Магия:
     • Мастерство владения стихией Земли: stats['mg4']?>
    -уменьшить  -увеличить - -  - -
     • Мастерство владения стихией Огня:stats['mg1'] ?>
    + уменьшить  + увеличить + +   + +
     • Мастерство владения серой магией: stats['mg7']?>
    -уменьшить  -увеличить - -  - -
    - - - - - -
    +
     • Мастерство владения серой магией:stats['mg7'] ?>
    + уменьшить  + увеличить + +   + +
    + + + + + +
    - -
    -
    -а нету больше этой вкладки ;) -
    -
    -$v) { - $good=1; - if ($v["nlevel"] && $v["nlevel"]+$st[$k]>$u->info["level"]) $good=0; - if ($v["npower"] && $v["npower"]+($st[$k]*5)>$st['s4']) $good=0; - if ($v["nwis"] && $v["nwis"]+($st[$k]*5)>$st['s6']) $good=0; - if ($good) { - if ($st[$k]<5) echo "
    ".$v['name']."".($st[$k]>0?" - ".($st[$k]+1):"")."
    - ".$v['descr']." ".$v["bonus".($st[$k]+1)]."
    "; - } - } - echo "
    "; - echo " - Выбранные особенности:
    "; - foreach ($os as $k=>$v) { - if ($st[$k]) echo "• ".$v['name']." ".($st[$k]>1?" - ".$st[$k]."":"")."
    "; - } -/*---Особенности---*/ -?> -
    -
    - - + - - -
    -info['id'].'" LIMIT 16')); - if($sp[0] >= 15) { - $re = 'Нельзя создавать более 15 комплектов приемов'; - }elseif(str_replace(' ','',$_GET['savePriems']) != '') { - $cmpl = mysql_fetch_array(mysql_query('SELECT `id` FROM `complects_priem` WHERE `uid` = "'.$u->info['id'].'" AND `name` = "'.mysql_real_escape_string($_GET['savePriems']).'" LIMIT 1')); - if(isset($cmpl['id'])) { - $re = 'Удачно перезаписан комплект приемов "'.$_GET['savePriems'].'"'; - mysql_query('UPDATE `complects_priem` SET `priems` = "'.$u->info['priems'].'" WHERE `id` = "'.$cmpl['id'].'" LIMIT 1'); - }else{ - $re = 'Удачно создан комплект приемов "'.$_GET['savePriems'].'"'; - mysql_query('INSERT INTO `complects_priem` (`priems`,`uid`,`name`) VALUES ("'.$u->info['priems'].'","'.$u->info['id'].'","'.mysql_real_escape_string($_GET['savePriems']).'")'); - } - }else{ - $re = 'Не указано название комплекта'; - } - if($re != '') { - echo '
      '.$re.'

    '; - } -} -?> -Выбранные приемы:
    -seeMy(1); -?>
    -Приёмы для выбора: -
    -
    -seePriems(1); -?> -
    - -
    + + + + + + - -
    + info['id'] . '" LIMIT 16' + ) + ); + if ($sp[0] >= 15) { + $re = 'Нельзя создавать более 15 комплектов приемов'; + } elseif (str_replace(' ', '', $_GET['savePriems']) != '') { + $cmpl = mysql_fetch_array( + mysql_query( + 'SELECT `id` FROM `complects_priem` WHERE `uid` = "' . $u->info['id'] . '" AND `name` = "' . mysql_real_escape_string( + $_GET['savePriems'] + ) . '" LIMIT 1' + ) + ); + if (isset($cmpl['id'])) { + $re = 'Удачно перезаписан комплект приемов "' . $_GET['savePriems'] . '"'; + mysql_query( + 'UPDATE `complects_priem` SET `priems` = "' . $u->info['priems'] . '" WHERE `id` = "' . $cmpl['id'] . '" LIMIT 1' + ); + } else { + $re = 'Удачно создан комплект приемов "' . $_GET['savePriems'] . '"'; + mysql_query( + 'INSERT INTO `complects_priem` (`priems`,`uid`,`name`) VALUES ("' . $u->info['priems'] . '","' . $u->info['id'] . '","' . mysql_real_escape_string( + $_GET['savePriems'] + ) . '")' + ); + } + } else { + $re = 'Не указано название комплекта'; + } + echo !$re ?: "
    $re

    "; + } + ?> + Выбранные приемы:
    + seeMy(1); ?>
    + Приёмы для выбора: +
    + seePriems(1); ?> +
    +
    +
    + Категории + + + Все +
    + Приемы атаки +
    + Приемы защиты +
    + Приемы + контрударов +
    + Приемы критических + ударов +
    + Приемы + парирования +
    + Комбо-приемы +
    + Приемы крови +
    + Приемы жертвы +
    + Приемы силы духа +
    + Заклинания + Огня +
    + Заклинания + Воды +
    + Заклинания + Воздуха +
    + Заклинания + Земли +
    + Заклинания магии + Света +
    + Заклинания Серой + магии +
    + Заклинания магии + Тьмы
    +
    +
    +
    + +
    + + + + + + + + +
    +
    + Показывать приёмы -
    Категории -Все -
    -Приемы атаки -
    -Приемы защиты -
    -Приемы контрударов -
    -Приемы критических ударов -
    -Приемы парирования -
    -Комбо-приемы -
    -Приемы крови -
    -Приемы жертвы -
    -Приемы силы духа -
    -Заклинания Огня -
    -Заклинания Воды -
    -Заклинания Воздуха -
    -Заклинания Земли -
    -Заклинания магии Света -
    -Заклинания Серой магии -
    -Заклинания магии Тьмы
    -
    - - - - - + + +
    -
    Показывать приёмы +   onClick="form.submit()">
    +   onClick="form.submit()"> onClick="form.submit()">
    onClick="form.submit()"> +
    +
    + Очистить +
    + Запомнить + набор
    +

    + info['id'] . '" LIMIT 10' + ); + while ($pl = mysql_fetch_array($sp)) { + echo ' Использовать "' . $pl['name'] . '"
    '; + } + ?> +

    +
    +
     
    + +
    +
    + + + -
    -Очистить -
    -Запомнить набор
    -

    -info['id'].'" LIMIT 10'); -while($pl = mysql_fetch_array($sp)) { - echo ' Использовать "'.$pl['name'].'"
    '; -} -?> -

    + //Эффекты + $i = 0; + while ($i < count($u->stats['effects'])) { + if (isset($u->stats['effects'][$i])) { + if ($clr == 'C7') { + $clr = 'D5'; + } else { + $clr = 'C7'; + } + $v1 = ''; + $v2 = ''; + $v3 = $u->lookStats($u->stats['effects'][$i]['data']); + //-?? + $j = 0; + while ($j < count($u->items['add'])) { + if (isset($v3['add_' . $u->items['add'][$j]])) { + $v1 .= ' • ' . $u->is[$u->items['add'][$j]] . '
    '; + $v4 = $v3['add_' . $u->items['add'][$j]]; + if ($v4 > 0) { + $v4 = '+' . $v4; + } elseif ($v4 < 0) { + $v4 = '' . $v4 . ''; + } + $v2 .= $v4 . '
    '; + } + $j++; + } + if ($v1 == '') { + $v1 = '??'; + } + if ($v2 == '') { + $v2 = '??'; + } -
    + //$btnse = 'Завершить'; -
     
    -
    -
    -
    - - -stats['effects'])) -{ - if(isset($u->stats['effects'][$i])) - { - if($clr=='C7') - { - $clr = 'D5'; - }else{ - $clr = 'C7'; - } - $v1 = ''; - $v2 = ''; - $v3 = $u->lookStats($u->stats['effects'][$i]['data']); - //-?? - $j = 0; - while($jitems['add'])) - { - if(isset($v3['add_'.$u->items['add'][$j]])) - { - $v1 .= ' • '.$u->is[$u->items['add'][$j]].'
    '; - $v4 = $v3['add_'.$u->items['add'][$j]]; - if($v4>0) - { - $v4 = '+'.$v4; - }elseif($v4<0) - { - $v4 = ''.$v4.''; - } - $v2 .= $v4.'
    '; - } - $j++; - } - if($v1=='') - { - $v1 = '??'; - } - if($v2=='') - { - $v2 = '??'; - } - - //$btnse = 'Завершить'; - - $btnset = true; - - $bsp = strripos($u->stats['effects'][$i]['data'], '-'); - if( $bsp == true ) { - $btnset = false; - } - - $bsp = strripos($u->stats['effects'][$i]['data'], '|nofastfinisheff=1'); - if( $bsp == true ) { - $btnset = false; - } - - if( $btnset == false ) { - $btnse = '  --  '; - } - - if(isset($_GET['endeffectplease']) && $_GET['endeffectplease'] == $u->stats['effects'][$i]['id'] && $u->stats['effects'][$i]['id'] > 0 && $btnset == true) { - mysql_query('UPDATE `eff_users` SET `timeUse` = 0 WHERE `id` = "'.$u->stats['effects'][$i]['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - echo '
    Эффект "'.$u->stats['effects'][$i]['name'].'" был принудительно завершен.
    '; - if($clr=='C7') - { - $clr = 'D5'; - }else{ - $clr = 'C7'; - } - }else{ - $ae .= '
    '.$v1.''.$v2.''.$u->timeOut($u->stats['effects'][$i]['timeUse']+$u->stats['effects'][$i]['actionTime']-time()).'"'.$u->stats['effects'][$i]['name'].'"
    '.$btnse.'
    ' . $v1 . '' . $v2 . '' . $u->timeOut( + $u->stats['effects'][$i]['timeUse'] + $u->stats['effects'][$i]['actionTime'] - time( + ) + ) . '"' . $u->stats['effects'][$i]['name'] . '"
    ' . $btnse . '
    '.$v1.''.$v2.''.$u->timeOut($e['endTime']-time()).'
    ' . $v1 . '' . $v2 . '' . $u->timeOut($e['endTime'] - time()) . ' "'.$e['text'].'"
    '.$btnse.'
    ' . $btnse . '
    - - - - - - - - -
    ХарактеристикаМф.ВремяКомментарийДействия
    -
    - + + + + + + + + + +
    ХарактеристикаМф.ВремяКомментарийДействия
    +
    + '.time().' AND `uid` = "'.$u->info['id'].'" ORDER BY `timeUse` DESC'); -while($pl = mysql_fetch_array($sp)) { - $tp = (int)str_replace('pgb','',$pl['v1']); - $lvlp = explode('[',$pl['name']); - $lvlp = explode(']',$lvlp[1]); - $lvlp = $lvlp[0]; - $v = $magic->pgpar[$tp]; - $ae .= '• '.$v[0].' ['.$lvlp.'], еще '.$u->timeOut($pl['timeUse']-time()).', начнет действовать через '.$u->timeOut($pl['deactiveTime']-time()).'
    '; -} + $sp = mysql_query( + 'SELECT * FROM `eff_users` WHERE `v1` LIKE "pgb%" AND `delete` = "0" AND `deactiveTime` > ' . time( + ) . ' AND `uid` = "' . $u->info['id'] . '" ORDER BY `timeUse` DESC' + ); + while ($pl = mysql_fetch_array($sp)) { + $tp = (int)str_replace('pgb', '', $pl['v1']); + $lvlp = explode('[', $pl['name']); + $lvlp = explode(']', $lvlp[1]); + $lvlp = $lvlp[0]; + $v = $magic->pgpar[$tp]; + $ae .= '• ' . $v[0] . ' [' . $lvlp . '], еще ' . $u->timeOut( + $pl['timeUse'] - time() + ) . ', начнет действовать через ' . $u->timeOut($pl['deactiveTime'] - time()) . '
    '; + } -if($ae != '') { - echo '
    Пристрастия:
    '.$ae.'

    '; -} -/*if ($u->info['level'] > 9) - { - $check = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars`= "end_trup" AND `time` > "'.(time()-3*60*60).'" ORDER BY `actions`.`time` DESC LIMIT 1;')); - if (!isset($check['id'])) - { - echo '
     Право на подвиг: Доступно.

    '; - } - else - { - echo '
     Право на подвиг: '.date('d.m.Y H:i',($check['time']+10800)).'.

    '; - } - }*/ -$psh = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars` = "psh0" AND `time` > '.(time()-7200).' LIMIT 1')); -if(isset($psh['id'])) -{ - if($clr=='C7') - { - $clr = 'D5'; - }else{ - $clr = 'C7'; - } - echo '
     Время до подземелья: '.$u->timeOut(($psh['time']+60*60*3)-time()).'

    '; -} + if ($ae != '') { + echo '
    Пристрастия:
    ' . $ae . '

    '; + } + /*if ($u->info['level'] > 9) + { + $check = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars`= "end_trup" AND `time` > "'.(time()-3*60*60).'" ORDER BY `actions`.`time` DESC LIMIT 1;')); + if (!isset($check['id'])) + { + echo '
     Право на подвиг: Доступно.

    '; + } + else + { + echo '
     Право на подвиг: '.date('d.m.Y H:i',($check['time']+10800)).'.

    '; + } + }*/ + $psh = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "psh0" AND `time` > ' . (time( + ) - 7200) . ' LIMIT 1' + ) + ); + if (isset($psh['id'])) { + if ($clr == 'C7') { + $clr = 'D5'; + } else { + $clr = 'C7'; + } + echo '
     Время до подземелья: ' . $u->timeOut( + ($psh['time'] + 60 * 60 * 3) - time() + ) . '

    '; + } + ?> +  Эффекты: +
    + Эффекты: -
    -stats['s1'] > 24 && $u->stats['s1'] < 50) { + $st[1]['m2'] += 15; + } + if ($u->stats['s1'] > 49 && $u->stats['s1'] < 75) { + $st[1]['pa2'] += 2; + $st[1]['m2'] += 35; + } + if ($u->stats['s1'] > 74 && $u->stats['s1'] < 100) { + $st[1]['pa2'] += 5; + $st[1]['m2'] += 50; + } + if ($u->stats['s1'] > 99 && $u->stats['s1'] < 125) { + $st[1]['pa2'] += 8; + $st[1]['m2'] += 80; + } + if ($u->stats['s1'] > 124 && $u->stats['s1'] < 150) { + $st[1]['pa2'] += 12; + $st[1]['m2'] += 105; + } + if ($u->stats['s1'] > 149 && $u->stats['s1'] < 175) { + $st[1]['pa2'] += 17; + $st[1]['m7'] += 2; + } + if ($u->stats['s1'] > 174 && $u->stats['s1'] < 200) { + $st[1]['pa2'] += 23; + $st[1]['m7'] += 5; + } + if ($u->stats['s1'] > 199) { + $st[1]['pa2'] += 30; + $st[1]['m7'] += 7; + } + //ловкость + if ($u->stats['s2'] > 24 && $u->stats['s2'] < 50) { + $st[2]['pa1'] += 2; + $st[2]['m4'] += 35; + } + if ($u->stats['s2'] > 49 && $u->stats['s2'] < 75) { + $st[2]['pa1'] += 5; + $st[2]['m2'] += 40; + $st[2]['m4'] += 75; + } + if ($u->stats['s2'] > 74 && $u->stats['s2'] < 100) { + $st[2]['pa1'] += 8; + $st[2]['m2'] += 65; + $st[2]['m4'] += 90; + } + if ($u->stats['s2'] > 99 && $u->stats['s2'] < 125) { + $st[2]['pa1'] += 12; + $st[2]['m2'] += 75; + $st[2]['m4'] += 105; + } + if ($u->stats['s2'] > 124 && $u->stats['s2'] < 150) { + $st[2]['pa1'] += 17; + $st[2]['m2'] += 85; + $st[2]['m4'] += 105; + $st[2]['m15'] += 1; + } + if ($u->stats['s2'] > 149 && $u->stats['s2'] < 175) { + $st[2]['pa1'] += 20; + $st[2]['m2'] += 110; + $st[2]['m4'] += 115; + $$st[2]['m15'] += 2; + } + if ($u->stats['s2'] > 174 && $u->stats['s2'] < 200) { + $st[2]['pa1'] += 23; + $st[2]['m2'] += 145; + $st[2]['m4'] += 145; + $st[2]['m15'] += 3; + } + if ($u->stats['s2'] > 199) { + $st[2]['pa1'] += 30; + $st[2]['m2'] += 165; + $st[2]['m4'] += 165; + $st[2]['m15'] += 5; + } + //интуиция + if ($u->stats['s3'] > 24 && $u->stats['s3'] < 50) { + $st[3]['pa4'] += 2; + $st[3]['m3'] += 2; + $st[3]['m1'] += 25; + } + if ($u->stats['s3'] > 49 && $u->stats['s3'] < 75) { + $st[3]['pa4'] += 5; + $st[3]['m3'] += 5; + $st[3]['m1'] += 55; + } + if ($u->stats['s3'] > 74 && $u->stats['s3'] < 100) { + $st[3]['pa4'] += 8; + $st[3]['m3'] += 10; + $st[3]['m1'] += 75; + $st[3]['m5'] += 25; + } + if ($u->stats['s3'] > 99 && $u->stats['s3'] < 125) { + $st[3]['pa4'] += 12; + $st[3]['m3'] += 15; + $st[3]['m1'] += 105; + $st[3]['m5'] += 35; + } + if ($u->stats['s3'] > 124 && $u->stats['s3'] < 150) { + $st[3]['pa4'] += 17; + $st[3]['m3'] += 20; + $st[3]['m1'] += 125; + $st[3]['m5'] += 45; + $st[3]['m14'] += 1; + } + if ($u->stats['s3'] > 149 && $u->stats['s3'] < 175) { + $st[3]['pa4'] += 20; + $st[3]['m3'] += 30; + $st[3]['m1'] += 145; + $st[3]['m5'] += 50; + $st[3]['m14'] += 2; + } + if ($u->stats['s3'] > 174 && $u->stats['s3'] < 200) { + $st[3]['pa4'] += 23; + $st[3]['m3'] += 35; + $st[3]['m1'] += 165; + $st[3]['m5'] += 55; + $st[3]['m14'] += 3; + } + if ($u->stats['s3'] > 199) { + $st[3]['pa4'] += 30; + $st[3]['m3'] += 40; + $st[3]['m1'] += 185; + $st[3]['m5'] += 65; + $st[3]['m14'] += 5; + } + //выносливость + if ($u->stats['s4'] > 0) { + $st[4]['hpAll'] += 30; + } + if ($u->stats['s4'] > 24 && $u->stats['s4'] < 50) { + $st[4]['hpAll'] += 50; + } + if ($u->stats['s4'] > 49 && $u->stats['s4'] < 75) { + $st[4]['hpAll'] += 100; + } + if ($u->stats['s4'] > 74 && $u->stats['s4'] < 100) { + $st[4]['hpAll'] += 175; + } + if ($u->stats['s4'] > 99 && $u->stats['s4'] < 125) { + $st[4]['hpAll'] += 250; + } + if ($u->stats['s4'] > 124 && $u->stats['s4'] < 150) { + $st[4]['hpAll'] += 400; + $st[4]['za'] += 25; + $st[4]['zm'] += 25; + } + if ($u->stats['s4'] > 149 && $u->stats['s4'] < 175) { + $st[4]['hpAll'] += 450; + $st[4]['za'] += 50; + $st[4]['zm'] += 50; + } + if ($u->stats['s4'] > 174 && $u->stats['s4'] < 200) { + $st[4]['hpAll'] += 600; + $st[4]['za'] += 100; + $st[4]['zm'] += 100; + } + if ($u->stats['s4'] > 199) { + $st[4]['hpAll'] += 850; + $st[4]['za'] += 125; + $st[4]['zm'] += 125; + } + //интелект + if ($u->stats['s5'] > 24 && $u->stats['s5'] < 50) { + $st[5]['m11'] += 10; + } + if ($u->stats['s5'] > 49 && $u->stats['s5'] < 75) { + $st[5]['m11'] += 15; + } + if ($u->stats['s5'] > 74 && $u->stats['s5'] < 100) { + $st[5]['m11'] += 20; + } + if ($u->stats['s5'] > 99 && $u->stats['s5'] < 125) { + $st[5]['m11'] += 25; + } + if ($u->stats['s5'] > 124 && $u->stats['s5'] < 150) { + $st[5]['m11'] += 35; + } + if ($u->stats['s5'] > 149 && $u->stats['s5'] < 175) { + $st[5]['m11'] += 50; + } + if ($u->stats['s5'] > 174 && $u->stats['s5'] < 200) { + $st[5]['m11'] += 65; + $st[5]['pzm'] += 2; + } + if ($u->stats['s5'] > 199) { + $st[5]['m11'] += 65; + $st[5]['pzm'] += 4; + } + //мудрость + if ($u->stats['s6'] > 24 && $u->stats['s6'] < 50) { + $st[6]['mpAll'] += 150; + $st[6]['speedmp'] += 100; + } + if ($u->stats['s6'] > 49 && $u->stats['s6'] < 75) { + $st[6]['mpAll'] += 200; + $st[6]['speedmp'] += 200; + } + if ($u->stats['s6'] > 74 && $u->stats['s6'] < 100) { + $st[6]['mpAll'] += 250; + $st[6]['speedmp'] += 350; + } + if ($u->stats['s6'] > 99 && $u->stats['s6'] < 125) { + $st[6]['mpAll'] += 350; + $st[6]['speedmp'] += 500; + } + if ($u->stats['s6'] > 124 && $u->stats['s6'] < 150) { + $st[6]['mpAll'] += 500; + $st[6]['speedmp'] += 500; + $st[6]['pzm'] += 2; + } + if ($u->stats['s6'] > 149 && $u->stats['s6'] < 175) { + $st[6]['mpAll'] += 700; + $st[6]['speedmp'] += 600; + $st[6]['pzm'] += 3; + } + if ($u->stats['s6'] > 174 && $u->stats['s6'] < 200) { + $st[6]['mpAll'] += 900; + $st[6]['speedmp'] += 700; + $st[6]['pzm'] += 5; + } + if ($u->stats['s6'] > 199) { + $st[6]['mpAll'] += 900; + $st[6]['speedmp'] += 700; + $st[6]['pzm'] += 7; + } + $b8name = ''; + //Духовность + //if($u->stats['s7']>24){ $b8name = 'Духовная Защита'; $b[8] .= '   • Жизнь после смерти дает вам прием "Призрачная Защита"
    '; } + if ($u->stats['s7'] > 49) { + $b8name = 'Духовное Исцеление'; + $b[8] .= '   • Каждый бой вы начинаете под действием магии "Спасение"
    '; + } + if ($u->stats['s7'] > 74) { + $b8name = 'Путь Духа'; + $b[8] .= '   • Воскрешение и Спасение тратят вдвое меньше силы духа
    '; + } + if ($u->stats['s7'] > 99) { + $b8name = 'Очищение'; + $b[8] .= '   • Смерть очищает вас от негативных эффектов заклинаний, проклятий, болезней и ядов в текущем бою
    '; + } - //Бонусы статов - //Бонусы статов - //сила - //сила - /*if($u->stats['s1']>24 && $u->stats['s1']<50){ $st[1]['m10'] += 5; } - if($u->stats['s1']>49 && $u->stats['s1']<75){ $st[1]['m10'] += 10; } - if($u->stats['s1']>74 && $u->stats['s1']<100){ $st[1]['m10'] += 17; } - if($u->stats['s1']>99 && $u->stats['s1']<125){ $st[1]['m10'] += 25; } - if($u->stats['s1']>124 && $u->stats['s1']<150){ $st[1]['m10'] += 25; $st[1]['minAtack'] += 10; $st[1]['maxAtack'] += 10; } - if($u->stats['s1']>149 && $u->stats['s1']<175){ $st[1]['m10'] += 30; $st[1]['minAtack'] += 10; $st[1]['maxAtack'] += 10; } - if($u->stats['s1']>174){ $u->stats['m10'] += 30; $st[1]['minAtack'] += 15; $st[1]['maxAtack'] += 15; }*/ - if($u->stats['s1']>24 && $u->stats['s1']<50){ $st[1]['m2'] += 15; } - if($u->stats['s1']>49 && $u->stats['s1']<75){ $st[1]['pa2'] += 2; $st[1]['m2'] += 35; } - if($u->stats['s1']>74 && $u->stats['s1']<100){ $st[1]['pa2'] += 5; $st[1]['m2'] += 50; } - if($u->stats['s1']>99 && $u->stats['s1']<125){ $st[1]['pa2'] += 8; $st[1]['m2'] += 80;} - if($u->stats['s1']>124 && $u->stats['s1']<150){ $st[1]['pa2'] += 12; $st[1]['m2'] += 105; } - if($u->stats['s1']>149 && $u->stats['s1']<175){ $st[1]['pa2'] += 17; $st[1]['m7'] += 2; } - if($u->stats['s1']>174 && $u->stats['s1']<200){ $st[1]['pa2'] += 23; $st[1]['m7'] += 5; } - if($u->stats['s1']>199) { $st[1]['pa2'] += 30; $st[1]['m7'] += 7; } - //ловкость - /*if($u->stats['s2']>24 && $u->stats['s2']<50){ $st[2]['m7'] += 5; } - if($u->stats['s2']>49 && $u->stats['s2']<75){ $st[2]['m7'] += 5; $st[2]['m4'] += 35; $st[2]['m2'] += 15; } - if($u->stats['s2']>74 && $u->stats['s2']<100){ $st[2]['m7'] += 15; $st[2]['m4'] += 35; $st[2]['m2'] += 15; } - if($u->stats['s2']>99 && $u->stats['s2']<125){ $st[2]['m7'] += 15; $st[2]['m4'] += 105; $st[2]['m2'] += 40; } - if($u->stats['s2']>124 && $u->stats['s2']<150) { $st[2]['m7'] += 15; $st[2]['m4'] += 105; $st[2]['m2'] += 40; $st[2]['m15'] += 5; } - if($u->stats['s2']>149 && $u->stats['s2']<175){ $st[2]['m7'] += 20; $st[2]['m4'] += 115; $st[2]['m2'] += 40; $st[2]['m15'] += 5; } - if($u->stats['s2']>174){ $st[2]['m7'] += 20; $st[2]['m4'] += 120; $st[2]['m2'] += 50; $st[2]['m15'] += 7; }*/ - if($u->stats['s2']>24 && $u->stats['s2']<50){ $st[2]['pa1'] += 2; $st[2]['m4'] += 35; } - if($u->stats['s2']>49 && $u->stats['s2']<75){ $st[2]['pa1'] += 5; $st[2]['m2'] += 40; $st[2]['m4'] += 75; } - if($u->stats['s2']>74 && $u->stats['s2']<100){ $st[2]['pa1'] += 8; $st[2]['m2'] += 65; $st[2]['m4'] += 90; } - if($u->stats['s2']>99 && $u->stats['s2']<125){ $st[2]['pa1'] += 12; $st[2]['m2'] += 75; $st[2]['m4'] += 105; } - if($u->stats['s2']>124 && $u->stats['s2']<150) { $st[2]['pa1'] += 17; $st[2]['m2'] += 85; $st[2]['m4'] += 105; $st[2]['m15'] += 1; } - if($u->stats['s2']>149 && $u->stats['s2']<175){ $st[2]['pa1'] += 20; $st[2]['m2'] += 110; $st[2]['m4'] += 115; $$st[2]['m15'] += 2; } - if($u->stats['s2']>174 && $u->stats['s2']<200){ $st[2]['pa1'] += 23; $st[2]['m2'] += 145; $st[2]['m4'] += 145; $st[2]['m15'] += 3; } - if($u->stats['s2']>199){ $st[2]['pa1'] += 30; $st[2]['m2'] += 165; $st[2]['m4'] += 165; $st[2]['m15'] += 5; } - //интуиция - /*if($u->stats['s3']>24 && $u->stats['s3']<50){ $st[3]['m3'] += 10; } - if($u->stats['s3']>49 && $u->stats['s3']<75){ $st[3]['m3'] += 10; $st[3]['m1'] += 35; $st[3]['m5'] += 15; } - if($u->stats['s3']>74 && $u->stats['s3']<100){ $st[3]['m3'] += 25; $st[3]['m1'] += 35; $st[3]['m5'] += 15; } - if($u->stats['s3']>99 && $u->stats['s3']<125){ $st[3]['m3'] += 25; $st[3]['m1'] += 105; $st[3]['m5'] += 45; } - if($u->stats['s3']>124 && $u->stats['s3']<150){ $st[3]['m3'] += 25; $st[3]['m1'] += 105; $st[3]['m5'] += 45; $st[3]['m14'] += 5; } - if($u->stats['s3']>149 && $u->stats['s3']<175){ $st[3]['m3'] += 30; $st[3]['m1'] += 105; $st[3]['m5'] += 45; $st[3]['m14'] += 5; } - if($u->stats['s3']>174){ $st[3]['m3'] += 30; $st[3]['m1'] += 120; $st[3]['m5'] += 45; $st[3]['m14'] += 7; }*/ - if($u->stats['s3']>24 && $u->stats['s3']<50){ $st[3]['pa4']+=2; $st[3]['m3'] += 2; $st[3]['m1'] += 25;} - if($u->stats['s3']>49 && $u->stats['s3']<75){ $st[3]['pa4']+=5; $st[3]['m3'] += 5; $st[3]['m1'] += 55; } - if($u->stats['s3']>74 && $u->stats['s3']<100){ $st[3]['pa4']+=8; $st[3]['m3'] += 10; $st[3]['m1'] += 75; $st[3]['m5'] += 25; } - if($u->stats['s3']>99 && $u->stats['s3']<125){ $st[3]['pa4']+=12; $st[3]['m3'] += 15; $st[3]['m1'] += 105; $st[3]['m5'] += 35; } - if($u->stats['s3']>124 && $u->stats['s3']<150){ $st[3]['pa4']+=17; $st[3]['m3'] += 20; $st[3]['m1'] += 125; $st[3]['m5'] += 45; $st[3]['m14'] += 1; } - if($u->stats['s3']>149 && $u->stats['s3']<175){ $st[3]['pa4']+=20; $st[3]['m3'] += 30; $st[3]['m1'] += 145; $st[3]['m5'] += 50; $st[3]['m14'] += 2; } - if($u->stats['s3']>174 && $u->stats['s3']<200){ $st[3]['pa4']+=23; $st[3]['m3'] += 35; $st[3]['m1'] += 165; $st[3]['m5'] += 55; $st[3]['m14'] += 3; } - if($u->stats['s3']>199){ $st[3]['pa4']+=30; $st[3]['m3'] += 40; $st[3]['m1'] += 185; $st[3]['m5'] += 65; $st[3]['m14'] += 5; } - //выносливость - /*if($u->stats['s4']>0){ $st['hpAll'] += 30; } - if($u->stats['s4']>24 && $u->stats['s4']<50){ $st[4]['hpAll'] += 50; } - if($u->stats['s4']>49 && $u->stats['s4']<75){ $st[4]['hpAll'] += 100; } - if($u->stats['s4']>74 && $u->stats['s4']<100){ $st[4]['hpAll'] += 175; } - if($u->stats['s4']>99 && $u->stats['s4']<125){ $st[4]['hpAll'] += 250; } - if($u->stats['s4']>124 && $u->stats['s4']<150){ $st[4]['hpAll'] += 250; $st[4]['za'] += 25; } - if($u->stats['s4']>149 && $u->stats['s4']<175){ $st[4]['hpAll'] += 350; $st[4]['za'] += 50; } - if($u->stats['s4']>174){ $st[4]['hpAll'] += 400; $st[4]['za'] += 100; }*/ - if($u->stats['s4']>0){ $st[4]['hpAll'] += 30; } - if($u->stats['s4']>24 && $u->stats['s4']<50){ $st[4]['hpAll'] += 50; } - if($u->stats['s4']>49 && $u->stats['s4']<75){ $st[4]['hpAll'] += 100; } - if($u->stats['s4']>74 && $u->stats['s4']<100){ $st[4]['hpAll'] += 175; } - if($u->stats['s4']>99 && $u->stats['s4']<125){ $st[4]['hpAll'] += 250; } - if($u->stats['s4']>124 && $u->stats['s4']<150){ $st[4]['hpAll'] += 400; $st[4]['za'] += 25; $st[4]['zm'] += 25; } - if($u->stats['s4']>149 && $u->stats['s4']<175){ $st[4]['hpAll'] += 450; $st[4]['za'] += 50; $st[4]['zm'] += 50; } - if($u->stats['s4']>174 && $u->stats['s4']<200){ $st[4]['hpAll'] += 600; $st[4]['za'] += 100; $st[4]['zm'] += 100; } - if($u->stats['s4']>199){ $st[4]['hpAll'] += 850; $st[4]['za'] += 125; $st[4]['zm'] += 125; } - //интелект - if($u->stats['s5']>24 && $u->stats['s5']<50){ $st[5]['m11'] += 10; } - if($u->stats['s5']>49 && $u->stats['s5']<75){ $st[5]['m11'] += 15; } - if($u->stats['s5']>74 && $u->stats['s5']<100){ $st[5]['m11'] += 20; } - if($u->stats['s5']>99 && $u->stats['s5']<125){ $st[5]['m11'] += 25; } - if($u->stats['s5']>124 && $u->stats['s5']<150){ $st[5]['m11'] += 35; } - if($u->stats['s5']>149 && $u->stats['s5']<175){ $st[5]['m11'] += 50; } - if($u->stats['s5']>174 && $u->stats['s5']<200){ $st[5]['m11'] += 65; $st[5]['pzm'] += 2;} - if($u->stats['s5']>199){ $st[5]['m11'] += 65; $st[5]['pzm'] += 4;} - //мудрость - if($u->stats['s6']>24 && $u->stats['s6']<50){ $st[6]['mpAll'] += 150; $st[6]['speedmp'] +=100; } - if($u->stats['s6']>49 && $u->stats['s6']<75){ $st[6]['mpAll'] += 200; $st[6]['speedmp'] +=200; } - if($u->stats['s6']>74 && $u->stats['s6']<100){ $st[6]['mpAll'] += 250; $st[6]['speedmp'] += 350; } - if($u->stats['s6']>99 && $u->stats['s6']<125){ $st[6]['mpAll'] += 350; $st[6]['speedmp'] += 500; } - if($u->stats['s6']>124 && $u->stats['s6']<150) { $st[6]['mpAll'] += 500; $st[6]['speedmp'] += 500; $st[6]['pzm'] += 2; } - if($u->stats['s6']>149 && $u->stats['s6']<175){ $st[6]['mpAll'] += 700; $st[6]['speedmp'] += 600; $st[6]['pzm'] += 3; } - if($u->stats['s6']>174 && $u->stats['s6']<200){ $st[6]['mpAll'] += 900; $st[6]['speedmp'] += 700; $st[6]['pzm'] += 5; } - if($u->stats['s6']>199){ $st[6]['mpAll'] += 900; $st[6]['speedmp'] += 700; $st[6]['pzm'] += 7; } - $b8name = ''; - //Духовность - //if($u->stats['s7']>24){ $b8name = 'Духовная Защита'; $b[8] .= '   • Жизнь после смерти дает вам прием "Призрачная Защита"
    '; } - if($u->stats['s7']>49){ $b8name = 'Духовное Исцеление'; $b[8] .= '   • Каждый бой вы начинаете под действием магии "Спасение"
    '; } - if($u->stats['s7']>74){ $b8name = 'Путь Духа'; $b[8] .= '   • Воскрешение и Спасение тратят вдвое меньше силы духа
    '; } - if($u->stats['s7']>99){ $b8name = 'Очищение'; $b[8] .= '   • Смерть очищает вас от негативных эффектов заклинаний, проклятий, болезней и ядов в текущем бою
    '; } + //конец бонусов + $i = 1; + while ($i <= 8) { + if (isset($st[$i])) { + $j = 0; + while ($j < count($u->items['add'])) { + if (isset($st[$i][$u->items['add'][$j]])) { + $vr = $st[$i][$u->items['add'][$j]]; + if ($vr > 0) { + $vr = '+' . $vr; + } + $b[$i] .= '   • ' . $u->is[$u->items['add'][$j]] . ': ' . $vr . '
    '; + } + $j++; + } + } + $i++; + } - //конец бонусов - $i = 1; - while($i<=8) - { - if(isset($st[$i])) - { - $j = 0; - while($jitems['add'])) - { - if(isset($st[$i][$u->items['add'][$j]])) - { - $vr = $st[$i][$u->items['add'][$j]]; - if($vr>0) - { - $vr = '+'.$vr; - } - $b[$i] .= '   • '.$u->is[$u->items['add'][$j]].': '.$vr.'
    '; - } - $j++; - } - } - $i++; - } - - -/* Отображаем комплекты */ -$coms = array(); -$cl = mysql_query('SELECT `im`.`name`,`im`.`2h`,`im`.`id`,`iu`.`data` FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`inOdet`!="0" AND `iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0"'); -while($pl = mysql_fetch_array($cl)) -{ - $sts = explode('|',$pl['data']); - $i = 0; $ste = ''; $sti = array(); - while($i0) { - $coms['com'][$sti['complect']]++; - } - } - if(isset($sti['complect2'])) - { - $coms[count($coms)]['id'] = $sti['complect2']; - if(!isset($coms['com'][$sti['complect2']])) - { - $coms['com'][$sti['complect2']] = 0; - $coms['new'][count($coms['new'])] = $sti['complect2']; - } - $coms['com'][$sti['complect2']]++; - if($pl['2h']>0) { - $coms['com'][$sti['complect2']]++; - } - } -} -if(count($coms['new']) > 0) { - $cmss = ''; - $i = 0; - while($i < count($coms['new'])) { - if($coms['new'][$i] > 0) { - $spc = mysql_query('SELECT * FROM `complects` WHERE `com` = "'.$coms['new'][$i].'" AND `x` <= "'.$coms['com'][$coms['new'][$i]].'" ORDER BY `x` DESC LIMIT 1'); - while($plc = mysql_fetch_array($spc)) { - $cmss .= '   • '.$plc['name'].' '; - if($coms['com'][$coms['new'][$i]] >= $plc['x']) { - $cmss .= '['.$coms['com'][$coms['new'][$i]].'/'.$plc['x'].']'; - }else{ - $cmss .= '['.$coms['com'][$coms['new'][$i]].'/'.$plc['x'].']'; - } - $cmss .= '
    '; - - $ia = $u->items['add']; - - //добавляем действия комплекта - $cmss .= ''; - $ij = 0; - $sti = $u->lookStats($plc['data']); - while($ij 0) { - $mad = '+'.$mad; - } - $cmss .= '        • '.$u->is[$ia[$ij]].': '.$mad.'
    '; - } - $ij++; - } - $cmss .= '
    '; - } - } - $i++; - } - if($cmss != '') { - echo '   Комлекты:
    '.$cmss.'
    '; - } -} + /* Отображаем комплекты */ + $coms = []; + $cl = mysql_query( + 'SELECT `im`.`name`,`im`.`2h`,`im`.`id`,`iu`.`data` FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`inOdet`!="0" AND `iu`.`uid`="' . $u->info['id'] . '" AND `iu`.`delete`="0"' + ); + while ($pl = mysql_fetch_array($cl)) { + $sts = explode('|', $pl['data']); + $i = 0; + $ste = ''; + $sti = []; + while ($i < count($sts)) { + $ste = explode('=', $sts[$i]); + if (isset($ste[1])) { + $sti[$ste[0]] += intval($ste[1]); + } + $i++; + } + if (isset($sti['complect'])) { + $coms[count($coms)]['id'] = $sti['complect']; + if (!isset($coms['com'][$sti['complect']])) { + $coms['com'][$sti['complect']] = 0; + $coms['new'][count($coms['new'])] = $sti['complect']; + } + $coms['com'][$sti['complect']]++; + if ($pl['2h'] > 0) { + $coms['com'][$sti['complect']]++; + } + } + if (isset($sti['complect2'])) { + $coms[count($coms)]['id'] = $sti['complect2']; + if (!isset($coms['com'][$sti['complect2']])) { + $coms['com'][$sti['complect2']] = 0; + $coms['new'][count($coms['new'])] = $sti['complect2']; + } + $coms['com'][$sti['complect2']]++; + if ($pl['2h'] > 0) { + $coms['com'][$sti['complect2']]++; + } + } + } -/* -if(isset($sti['complect'])) -{ - $coms[count($coms)+1]['id'] = $sti['complect']; - if(!isset($coms['com'][$sti['complect']])) - { - $coms['com'][$sti['complect']] = 0; - } - $coms['com'][$sti['complect']]++; -} -//Бонусы комплектов -$i = 1; -while($i<=count($coms['com'])) -{ - if(isset($coms[$i])) - { - //$coms[$i]['id'] - id комплекта, $j - кол-во предметов данного комплекта - $j = $coms['com'][$coms[$i]['id']]; - $com = mysql_fetch_array(mysql_query('SELECT * FROM `complects` WHERE `com` = "'.((int)$coms[$i]['id']).'" AND `x` <= '.((int)$j).' ORDER BY `x` DESC LIMIT 1')); - if(isset($com['id'])) - { - //добавляем действия комплекта - $ij = 0; - $sti = $this->lookStats($com['data']); - while($ijstats['s1'] > 99) { - echo '   Сила Гиганта :
    '.$b[1].'
    '; -}else{ - echo '   Сила Великана:
    '.$b[1].'
    '; - } -} -if(isset($b[2])) -{ -if($u->stats['s2'] > 99) { -echo '   Скорость Молнии:
    '.$b[2].'
    '; -}else{ - echo '   Скорость Змеи:
    '.$b[2].'
    '; - } -} -if(isset($b[3])) -{ -if($u->stats['s3'] > 99) { - echo '   Озарение:
    '.$b[3].'
    '; -}else{ - echo '   Предчувствие:
    '.$b[3].'
    '; - } -} -if(isset($b[4])) -{ - if($u->stats['s4'] > 99) { - echo '   Стальное тело:
    '.$b[4].'
    '; - }else{ - echo '   Каменное тело:
    '.$b[4].'
    '; - } -} -if(isset($b[5])) -{ - if($u->stats['s5'] > 99) { - echo '   Ледяной Разум:
    '.$b[5].'
    '; - }else{ - echo '   Разум:
    '.$b[5].'
    '; - } -} -if(isset($b[6])) -{ - if($u->stats['s6'] > 99) { - echo '   Касание Мудрости:
    '.$b[6].'
    '; - }else{ - echo '   Сила Мудрости:
    '.$b[6].'
    '; - } -} -if(isset($b[8])) -{ - echo '   '.$b8name.':
    '.$b[8].'
    '; -} -?> - - - -
    -
    -
    -info['id'].'" ORDER BY `id` DESC LIMIT 1')); -$rating2 = mysql_fetch_array(mysql_query('SELECT * FROM `aaa_reting_list` WHERE `uid` = "'.$u->info['id'].'" AND `id` < "'.$rating['id'].'" ORDER BY `id` DESC LIMIT 1')); -// -$rtns = ($rating['pos']-$rating2['pos']); -if( $rtns == 0) { - $rtns = '0'; -}elseif( $rtns > 0 ) { - $rtns = '+'.$rtns.''; -}else{ - $rtns = ''.$rtns.''; -} -echo 'Рейтинг: '.round($rating['global']/(12345+$u->info['level']),2).' (Вчера: '.round($rating['global']/(12345+$u->info['level']),2).')
    Позиция в ТОПе: '.$rating['pos'].' '.$rtns.''; -/*if( $u->info['level'] >= 2 ) { - $tmon = array( - 2 => 1, - 3 => 1, - 4 => 1, - 5 => 1, - 6 => 1, - 7 => 2, - 8 => 3, - 9 => 3, - 10 => 5, - 11 => 5 - ); - $tmon = $tmon[$u->info['level']]; - $xhp = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `battle` WHERE `id` IN ( SELECT `battle_id` FROM `battle_last` WHERE `uid` = "'.$u->info['id'].'" ) AND `priz` > 0 AND `time` > "'.strtotime(date('d.m.Y')).'"')); - $xhp = $xhp[0]; - if( $xhp < 1 ) { - $xhp = 0; - }elseif( $xhp > 96 ) { - $xhp = 96; - } - $tmstrt = ''; - if( date('i') >= 35 ) { - $tmstrt .= date('H',time()+3600).':00'; - }else{ - $tmstrt .= date('H',time()).':30'; - } - if( date('i') < 5 || (date('i') > 29 && date('i') < 35) ) { - $tmstrt = 'уже создан! (Успейте принять заявку)'; - }else{ - $tmstrt = 'начнется в '.$tmstrt; - } - if( $xhp < 1 ) { - $xhp = 0; - }elseif( $xhp > 96 ) { - $xhp = 96; - } - echo '
    Призовые хаоты за сегодня: ('.$xhp.'/96)
    За следующий призовой хаот, который '.$tmstrt.', вы можете получить Призовой Жетон (x'.floor(($tmon*(1+$xhp))/2).').'; -}*/ -echo '
    Цена комплекта: '.$u->stats['prckr'].' кр.'; -echo '
    '; + if (count($coms['new']) > 0) { + $cmss = ''; + $i = 0; + while ($i < count($coms['new'])) { + if ($coms['new'][$i] > 0) { + $spc = mysql_query( + 'SELECT * FROM `complects` WHERE `com` = "' . $coms['new'][$i] . '" AND `x` <= "' . $coms['com'][$coms['new'][$i]] . '" ORDER BY `x` DESC LIMIT 1' + ); + while ($plc = mysql_fetch_array($spc)) { + $cmss .= '   • ' . $plc['name'] . ' '; + if ($coms['com'][$coms['new'][$i]] >= $plc['x']) { + $cmss .= '[' . $coms['com'][$coms['new'][$i]] . '/' . $plc['x'] . ']'; + } else { + $cmss .= '[' . $coms['com'][$coms['new'][$i]] . '/' . $plc['x'] . ']'; + } + $cmss .= '
    '; -//Генерируем список текущих квестов -$sp = mysql_query('SELECT * FROM `actions` WHERE `vars` LIKE "%start_quest%" AND `vals` = "go" AND `uid` = "'.$u->info['id'].'" LIMIT 100'); -while($pl = mysql_fetch_array($sp)) -{ - $pq = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.str_replace('start_quest','',$pl['vars']).'" LIMIT 1')); - $qsee .= ' '.$pq['name'].'
    '.$pq['info'].'
    '.$q->info($pq).'

    '; - $qx++; -} + $ia = $u->items['add']; -if($qsee == '') -{ - $qsee = 'К сожалению у вас нет ни одного задания'; -}else{ - $qsee .= '* У заданий не относящихся к линейным квестам название черное, у других квестов относящихся к NPS, городам и т.д. название цветное'; -} + //добавляем действия комплекта + $cmss .= ''; + $ij = 0; + $sti = $u->lookStats($plc['data']); + while ($ij < count($ia)) { + if (isset($ia[$ij]) && isset($sti[$ia[$ij]])) { + //$st[$ia[$ij]] += $sti[$ia[$ij]]; + $mad = $sti[$ia[$ij]]; + if ($mad > 0) { + $mad = '+' . $mad; + } + $cmss .= '        • ' . $u->is[$ia[$ij]] . ': ' . $mad . '
    '; + } + $ij++; + } + $cmss .= '
    '; + } + } + $i++; + } + if ($cmss != '') { + echo '   Комлекты:
    ' . $cmss . '
    '; + } + } -if( $qx >= 0 ) { + if (isset($b[1])) { + if ($u->stats['s1'] > 99) { + echo '   Сила Гиганта :
    ' . $b[1] . '
    '; + } else { + echo '   Сила Великана:
    ' . $b[1] . '
    '; + } + } + if (isset($b[2])) { + if ($u->stats['s2'] > 99) { + echo '   Скорость Молнии:
    ' . $b[2] . '
    '; + } else { + echo '   Скорость Змеи:
    ' . $b[2] . '
    '; + } + } + if (isset($b[3])) { + if ($u->stats['s3'] > 99) { + echo '   Озарение:
    ' . $b[3] . '
    '; + } else { + echo '   Предчувствие:
    ' . $b[3] . '
    '; + } + } + if (isset($b[4])) { + if ($u->stats['s4'] > 99) { + echo '   Стальное тело:
    ' . $b[4] . '
    '; + } else { + echo '   Каменное тело:
    ' . $b[4] . '
    '; + } + } + if (isset($b[5])) { + if ($u->stats['s5'] > 99) { + echo '   Ледяной Разум:
    ' . $b[5] . '
    '; + } else { + echo '   Разум:
    ' . $b[5] . '
    '; + } + } + if (isset($b[6])) { + if ($u->stats['s6'] > 99) { + echo '   Касание Мудрости:
    ' . $b[6] . '
    '; + } else { + echo '   Сила Мудрости:
    ' . $b[6] . '
    '; + } + } + if (isset($b[8])) { + echo '   ' . $b8name . ':
    ' . $b[8] . '
    '; + } + ?> +
    +
    + +
    +
    +
    + info['id'] . '" ORDER BY `id` DESC LIMIT 1' + ) + ); + $rating2 = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `aaa_reting_list` WHERE `uid` = "' . $u->info['id'] . '" AND `id` < "' . $rating['id'] . '" ORDER BY `id` DESC LIMIT 1' + ) + ); + // + $rtns = ($rating['pos'] - $rating2['pos']); + if ($rtns == 0) { + $rtns = '0'; + } elseif ($rtns > 0) { + $rtns = '+' . $rtns . ''; + } else { + $rtns = '' . $rtns . ''; + } + echo 'Рейтинг: ' . round( + $rating['global'] / (12345 + $u->info['level']), 2 + ) . ' (Вчера: ' . round( + $rating['global'] / (12345 + $u->info['level']), 2 + ) . ')
    Позиция в ТОПе: ' . $rating['pos'] . ' ' . $rtns . ''; -$testdq = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars`= "day_quest" LIMIT 1')); -if (isset($testdq['id'])) -{ - $zadID=$testdq['vals']; -} -else -{ - $zadID=-1; -} + echo '
    Цена комплекта: ' . $u->stats['prckr'] . ' кр.'; + echo '
    '; -if ($zadID==1) -{ - - $daytext= 'Два раза напасть и убить трупожора'; - -}elseif($zadID==2) -{ - $daytext= 'Поучаствовать в 10 хаотических поединках.'; - -}elseif($zadID==3) -{ - $daytext= 'Спуститься в 2 любые подземелия не используя пропуски!'; + //Генерируем список текущих квестов + $sp = mysql_query( + 'SELECT * FROM `actions` WHERE `vars` LIKE "%start_quest%" AND `vals` = "go" AND `uid` = "' . $u->info['id'] . '" LIMIT 100' + ); + while ($pl = mysql_fetch_array($sp)) { + $pq = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `quests` WHERE `id` = "' . str_replace( + 'start_quest', '', $pl['vars'] + ) . '" LIMIT 1' + ) + ); + $qsee .= ' ' . $pq['name'] . '
    ' . $pq['info'] . '
    ' . $q->info( + $pq + ) . '

    '; + $qx++; + } -}elseif($zadID==4) -{ - $daytext= 'Получить сумарно в хаотических боях 100000 опыта!'; + if ($qsee == '') { + $qsee = 'К сожалению у вас нет ни одного задания'; + } else { + $qsee .= '* У заданий не относящихся к линейным квестам название черное, у других квестов относящихся к NPS, городам и т.д. название цветное'; + } -}elseif($zadID==5) -{ - $daytext= 'Открыть сундук трупожора!'; - -}elseif($zadID==6) -{ - $daytext= 'Сходить в Излом Хаоса!'; - -}elseif($zadID==7) -{ - $daytext= 'Выполнить 3 любых пещерных задания.'; - -}elseif($zadID==8) -{ - $daytext= 'Сходить в Башню Смерти.'; -}elseif($zadID==0) -{ - $daytext= 'Вы уже выполнили ежедневное задание'; -}else -{ - $daytext= 'Вы еще не получали ежедневное задание'; -} -?> -
    -Текущее Ежедневное задание: - -
    -
    -
    -
    -Текущие Пещерные задания: [/28] - -
    -
    -
    -= 0) { -$sp = mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars` LIKE "psh_qt_%" AND `time` > '.(time()-86400).' '); -while( $pl = mysql_fetch_array($sp) ) { - $ic1 = str_replace('psh_qt_','',$pl['vars']); - echo '
      Задержка на получение задания в '.$u->city_name[$ic1].' '.$u->timeOut((86400+$pl['time'])-time()).'

    '; -} -//Пещеры -$dungeon_timeout = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "psh0" AND `time` > '.(time()-60*60*3).' LIMIT 1',1); -if($dungeon_timeout['vars']=="psh0"){ -echo '
    Задержка на посещение подземелья: '.$u->timeOut(60*60*2-time()+$dungeon_timeout['time']).'

    '; -} -?> -
    -rep['repcapitalcity']>0){ ?> -• Capital city - rep_zv(2,$u->rep['repcapitalcity'])?>
    -rep['repangelscity']>0){ ?> -• Angels city - rep_zv(3,$u->rep['repangelscity'])?>
    -rep['repdemonscity']>0){ ?> -• Demons city - rep_zv(4,$u->rep['repdemonscity'])?>
    -rep['repmooncity']>0){ ?> -• Moon city - rep_zv(8,$u->rep['repmooncity'])?>
    -rep['repsandcity']>0){ ?> -• Sand city - rep_zv(6,$u->rep['repsandcity'])?>
    -rep['repsuncity']>0){ ?> -• Sun city - rep_zv(7,$u->rep['repsuncity'])?>
    -rep['repemeraldscity']>0){ ?> -• Emeralds city - rep_zv(7,$u->rep['repemeraldscity'])?>
    -rep['repdevilscity']>0){ ?> -• Devils city - rep_zv(7,$u->rep['repdevilscity'])?>
    -rep['rep1']>0){ ?> -• Храм Знаний - rep_zv(1,$u->rep['rep1'])?>
    -rep['rep2']>0){ ?> -• Алтарь Крови - rep_zv(5,$u->rep['rep2'])?>
    -rep['repdreamscity']>0){ ?> -• Водосток - rep_zv(9,$u->rep['repdreamscity'])?>
    - -rep['repabandonedplain']>0){ ?> -• Гора Легиона - rep_zv(10,$u->rep['repabandonedplain'])?>
    - -
    -testAction('`uid` = "'.$u->info['id'].'" AND `time` >= '.strtotime('now 00:00:00').' AND `vars` = "statistic_today" LIMIT 1',1); -if(isset($sf['id'])) -{ - $sfe = $u->lookStats($sf['vals']); - $sf[0] = $u->info['exp']-$sfe['e']; - $sf[1] = $u->info['win']-$sfe['w']; - $sf[2] = $u->info['lose']-$sfe['l']; - $sf[3] = $u->info['nich']-$sfe['n']; - unset($sfe); -}else{ - $sf = array(0=>0,1=>0,2=>0,3=>0); -} -?> -      За сегодня
    -• Получено опыта:
    -• Одержано побед:
    -• Проиграно битв:
    -• Ничьих:
    -• Получено Реликвий ангела: info['ang_g']; ?>
    -
    -
    - -
    - -
    -info['id'] . '" AND `vars`= "day_quest" LIMIT 1' + ) + ); + if (isset($testdq['id'])) { + $zadID = $testdq['vals']; + } else { + $zadID = -1; + } -if( $u->info['ability'] == 0 && $u->info['fnq'] > 1 ) { - $u->info['marker'] .= '1'; -} + if ($zadID == 1) { -?> - -
    + $daytext = 'Два раза напасть и убить трупожора'; + + } elseif ($zadID == 2) { + $daytext = 'Поучаствовать в 10 хаотических поединках.'; + + } elseif ($zadID == 3) { + $daytext = 'Спуститься в 2 любые подземелия не используя пропуски!'; + + } elseif ($zadID == 4) { + $daytext = 'Получить сумарно в хаотических боях 100000 опыта!'; + + } elseif ($zadID == 5) { + $daytext = 'Открыть сундук трупожора!'; + + } elseif ($zadID == 6) { + $daytext = 'Сходить в Излом Хаоса!'; + + } elseif ($zadID == 7) { + $daytext = 'Выполнить 3 любых пещерных задания.'; + + } elseif ($zadID == 8) { + $daytext = 'Сходить в Башню Смерти.'; + } elseif ($zadID == 0) { + $daytext = 'Вы уже выполнили ежедневное задание'; + } else { + $daytext = 'Вы еще не получали ежедневное задание'; + } + ?> +
    + + Текущее Ежедневное задание: + + +
    +
    +
    +
    + + Текущие Пещерные задания: [/28] + + +
    +
    +
    + info['id'] . '" AND `vars` LIKE "psh_qt_%" AND `time` > ' . (time( + ) - 86400) . ' ' + ); + while ($pl = mysql_fetch_array($sp)) { + $ic1 = str_replace('psh_qt_', '', $pl['vars']); + echo '
      Задержка на получение задания в ' . $u->city_name[$ic1] . ' ' . $u->timeOut( + (86400 + $pl['time']) - time() + ) . '

    '; + } + //Пещеры + $dungeon_timeout = $u->testAction( + '`uid` = "' . $u->info['id'] . '" AND `vars` = "psh0" AND `time` > ' . (time( + ) - 60 * 60 * 3) . ' LIMIT 1', + 1 + ); + if ($dungeon_timeout['vars'] == "psh0") { + echo '
    Задержка на посещение подземелья: ' . $u->timeOut( + 60 * 60 * 2 - time() + $dungeon_timeout['time'] + ) . '

    '; + } + ?> +
    + rep['repcapitalcity'] > 0) { ?> + • Capital city - rep_zv(2, $u->rep['repcapitalcity']) ?>
    + rep['repangelscity'] > 0) { ?> + • Angels city - rep_zv(3, $u->rep['repangelscity']) ?>
    + rep['repdemonscity'] > 0) { ?> + • Demons city - rep_zv(4, $u->rep['repdemonscity']) ?>
    + rep['repmooncity'] > 0) { ?> + • Moon city - rep_zv(8, $u->rep['repmooncity']) ?>
    + rep['repsandcity'] > 0) { ?> + • Sand city - rep_zv(6, $u->rep['repsandcity']) ?>
    + rep['repsuncity'] > 0) { ?> + • Sun city - rep_zv(7, $u->rep['repsuncity']) ?>
    + rep['repemeraldscity'] > 0) { ?> + • Emeralds city - rep_zv(7, $u->rep['repemeraldscity']) ?>
    + rep['repdevilscity'] > 0) { ?> + • Devils city - rep_zv(7, $u->rep['repdevilscity']) ?>
    + rep['rep1'] > 0) { ?> + • Храм Знаний - rep_zv(1, $u->rep['rep1']) ?>
    + rep['rep2'] > 0) { ?> + • Алтарь Крови - rep_zv(5, $u->rep['rep2']) ?>
    + rep['repdreamscity'] > 0) { ?> + • Водосток - rep_zv(9, $u->rep['repdreamscity']) ?>
    + + rep['repabandonedplain'] > 0) { ?> + • Гора Легиона - rep_zv(10, $u->rep['repabandonedplain']) ?>
    + +
    + testAction( + '`uid` = "' . $u->info['id'] . '" AND `time` >= ' . strtotime( + 'now 00:00:00' + ) . ' AND `vars` = "statistic_today" LIMIT 1', + 1 + ); + if (isset($sf['id'])) { + $sfe = $u->lookStats($sf['vals']); + $sf[0] = $u->info['exp'] - $sfe['e']; + $sf[1] = $u->info['win'] - $sfe['w']; + $sf[2] = $u->info['lose'] - $sfe['l']; + $sf[3] = $u->info['nich'] - $sfe['n']; + unset($sfe); + } else { + $sf = [0 => 0, 1 => 0, 2 => 0, 3 => 0]; + } + ?> +       За сегодня
    + • Получено опыта:
    + • Одержано побед:
    + • Проиграно битв:
    + • Ничьих:
    + • Получено Реликвий ангела: info['ang_g']; ?>
    +
    +
    + +
    + +
    + info['ability'] == 0 && $u->info['fnq'] > 1) { + $u->info['marker'] .= '1'; + } + + ?> + + diff --git a/modules_data/_zv.php b/modules_data/_zv.php index 9e529b95..33c40bba 100644 --- a/modules_data/_zv.php +++ b/modules_data/_zv.php @@ -16,7 +16,7 @@ if( $_GET['r'] == 3 || $_GET['r'] == 8 ) { if($u->info['inTurnir'] > 0 && $u->info['inUser'] == 0 && $u->info['room'] == 318) { die(''); } -include('_incl_data/class/__zv.php'); +$zv = new FightRequest(); $js_5356 = sprintf("top.lafstReg[%d] = 0; top.startHpRegen(\"main\",%d,%d,%d,%d,%d,%d,%d,%d,%d,1);", $u->info['id'], $u->info['id'], 0+$u->stats['hpNow'], 0+$u->stats['hpAll'], 0+$u->stats['mpNow'], 0+$u->stats['mpAll'], time() - $u->info['regHP'], time() - $u->info['regMP'], @@ -37,7 +37,7 @@ table.wfix { table-layout: fixed; width: 100%; } .firsttd {width: 70px;} - + @@ -676,13 +697,16 @@ html, body { -
    +
    info['level'] == 0 ? '4' : '6' ?> align=right>
    userInfo() ?>
    @@ -211,11 +211,11 @@ if(isset($_POST['btl_go'])) { } if($zv->error != '') { - echo ''.$zv->error.'
    '; + echo ''.$zv->error.'
    '; } -if($test_s != '') { - echo ''.$test_s.'
    '; +if($zv->test_s != '') { + echo ''.$zv->test_s.'
    '; } ?> diff --git a/modules_data/_zv2.php b/modules_data/_zv2.php index 5ba23999..5b36189b 100644 --- a/modules_data/_zv2.php +++ b/modules_data/_zv2.php @@ -20,7 +20,7 @@ if(isset($_GET['r'])) $u->info['referals'] = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `register_code` WHERE `uid` = "'.$u->info['id'].'" AND `time_finish` > 0 AND `end` = 0 LIMIT 1000')); $u->info['referals'] = $u->info['referals'][0]; -include('_incl_data/class/__zv.php'); +$zv = new FightRequest(); ?> diff --git a/modules_data/btl_.php b/modules_data/btl_.php index 1c2ffc1c..25401ac3 100644 --- a/modules_data/btl_.php +++ b/modules_data/btl_.php @@ -1,9 +1,9 @@ -info['battle'] == 0) { $u->info['battle'] = $btl_last['battle']; //die(); @@ -53,16 +54,17 @@ function typeBattle($x) { } return $r; } + $allprice = typeBattle($allprice); - if ($thisBattle['smert'] == 1) - { - $allprice = array(150,150,'Жесточайшее Сражение','Жесточайшее Сражение'); - } +if ($thisBattle['smert'] == 1) +{ + $allprice = array(150,150,'Жесточайшее Сражение','Жесточайшее Сражение'); +} /*if( $u->info['admin'] > 0 ) { echo ''; }else{*/ - echo ''; +echo ''; //} ?> @@ -78,13 +80,13 @@ function maginfo(z,p,m,obj) { r += 'Мощь: '+m+', '; r += 'Защита: '+z+', '; r += 'Подавление: '+p+''; - return r; + return r; } -info['battle'] == 0 || $u->info['battle'] == $btl_last['battle']) ) { echo 'var battleFinishData = "'.$u->info['battle_text'].'";'; //$u->info['battle_text'] = ''; - + //$tites = mysql_fetch_assoc(mysql_query('SELECT `time_over` FROM `battle` WHERE `id` = "'.$btl_last['id'].'" LIMIT 1')); // || ($tites['time_over'] !=0 && $tites['time_over'] < time()-10) if( isset($_GET['finish'])) { @@ -106,7 +108,7 @@ function mbsum(event) if( document.getElementById('back_menu_down').style.display != 'none' ){ setTimeout("document.getElementById('back_menu_down').click()", 1000); } - if((event.keyCode==13 || event.keyCode==70) && top.c.noEr==0){ + if((event.keyCode==13 || event.keyCode==70) && top.c.noEr==0){ if( document.getElementById('mainpanel').style.display == 'none' ) { // document.getElementById('reflesh_btn').setAttribute("class", "buttons btnnew btnnew2"); // document.getElementById('reflesh_btn').setAttribute("onclick", ""); @@ -114,12 +116,12 @@ function mbsum(event) // document.getElementById('reflesh_btn').disabled = true reflesht(); // top.c.noEr = 1; clearTimeout(top.c.noErTmr); top.c.noErTmr = setTimeout('top.c.noEr = 0;',1000); - + }else{ - + if(document.getElementById('go_btn').disabled) { - + } else { @@ -127,58 +129,58 @@ function mbsum(event) top.c.noEr = 1; clearTimeout(top.c.noErTmr); top.c.noErTmr = setTimeout('top.c.noEr = 0;',1000); document.getElementById('go_btn').setAttribute("class", "buttons inpBtl btnnew"); } - - + + //atackt(); //top.c.noEr = 1; clearTimeout(top.c.noErTmr); top.c.noErTmr = setTimeout('top.c.noEr = 0;',1000); //document.getElementById('go_btn').setAttribute("class", "buttons inpBtl btnnew"); - - + + } - + } //space - if(event.keyCode==32 && top.c.noEr==0){ + if(event.keyCode==32 && top.c.noEr==0){ document.getElementById('reflesh_btn').setAttribute("class", "buttons btnnew btnnew2"); document.getElementById('reflesh_btn').setAttribute("onclick", ""); - + if(document.getElementById('reflesh_btn').disabled) { } else { - reflesht(); - top.c.noEr = 1; clearTimeout(top.c.noErTmr); top.c.noErTmr = setTimeout('top.c.noEr = 0;',2000); + reflesht(); + top.c.noEr = 1; clearTimeout(top.c.noErTmr); top.c.noErTmr = setTimeout('top.c.noEr = 0;',2000); } - + } //numes - + /* //Enter - if(event.keyCode==13 && top.c.noEr==0){ - + if(event.keyCode==13 && top.c.noEr==0){ + if( document.getElementById('mainpanel').style.display == 'none' ) { - + if (document.getElementById('btn_down_img1').style.onclick != "") - { + { document.getElementById('btn_down_img1').setAttribute("onclick", ""); - + reflesh(); top.c.noEr = 1; clearTimeout(top.c.noErTmr); top.c.noErTmr = setTimeout('top.c.noEr = 0;',1000); - + } - + }else{ if( document.getElementById('go_btn').style.display == '') { atack(); top.c.noEr = 1; clearTimeout(top.c.noErTmr); top.c.noErTmr = setTimeout('top.c.noEr = 0;',1000); } - + } - + //top.c.noErTmr = setTimeout('top.c.noEr = 0;',1000); } //space @@ -186,10 +188,10 @@ function mbsum(event) { //document.getElementById('btn_down_img1').setAttribute("onclick", "reflesh();"); if (document.getElementById('btn_down_img1').style.onclick != "") - { + { //document.getElementById('btn_down_img1').setAttribute("onclick", ""); - - reflesh(); top.c.noEr = 1; clearTimeout(top.c.noErTmr); top.c.noErTmr = setTimeout('top.c.noEr = 0;',1000); + + reflesh(); top.c.noEr = 1; clearTimeout(top.c.noErTmr); top.c.noErTmr = setTimeout('top.c.noEr = 0;',1000); //event=[]; } }*/ @@ -212,7 +214,7 @@ function mbsum(event) if(event.keyCode==48) { change_radioKeys(0,false); } - + } @@ -220,9 +222,9 @@ function mbsum(event) });*/ $(document.body).bind('keyup',function(event){mbsum(event);}); - - + + function shpb() { $(document).find('div.pimg').unbind('mouseover'); $(document).find('div.pimg').unbind('mouseout'); @@ -238,8 +240,8 @@ function shpb() { if($(test[i]).attr('pog') > 1 && $(test[i]).attr('stl') == 0) { $(test[i]).attr('stl',1); $(test[i]).html(`${$(test[i]).attr('pog')}${$(test[i]).attr('pog')}${$(test[i]).attr('pog')}${$(test[i]).attr('pog')}
    ${$(test[i]).attr('pog')}
    ${$(test[i]).html()}`); - - }else if($(test[i]).attr('col') > 1 && $(test[i]).attr('stl') == 0) { + + }else if($(test[i]).attr('col') > 1 && $(test[i]).attr('stl') == 0) { // 1.2 $(test[i]).attr('stl',1); $(test[i]).html(`x${$(test[i]).attr('col')}x${$(test[i]).attr('col')}x${$(test[i]).attr('col')}x${$(test[i]).attr('col')}
    x${$(test[i]).attr('col')}
    ${$(test[i]).html()}`); @@ -260,10 +262,10 @@ $(window).error(function(){ - - - + + +
      - - - - - +
    + + + + + + + + + + @@ -639,15 +651,24 @@ html, body {
    +
    + + + + + + + + + + + + + +
    +
    + +
    +
    + + + + + + +
    Атака
    -
    Защита
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    удар в голову 
     блок головы
    +
     блок головы и груди
    +
     блок головы, груди и живота
    удар в грудь 
     блок груди
    +
     блок груди и живота
    +
     блок груди, живота и пояса
    удар в живот 
     блок живота
    +
     блок живота и пояса
    +
     блок живота, пояса и ног
    удар в пояс(пах) 
     блок пояса
    +
     блок пояса и ног
    +
     блок пояса, ног и головы
    удар по ногам 
     блок ног
    +
     блок ног и головы
    +
     блок ног, головы и груди
    +
    +
    + + + + + + + - - + + @@ -627,9 +637,11 @@ html, body {
       + + + + + info['lider'] != $u->info['battle'] ) { ?>style="display:none;cursor:pointer;"style="cursor:pointer;" onclick="top.leaderFight();" id="btn_down_img3" style="cursor:pointer;" title="Передать флаг" src="https://img.new-combats.com/i/ico_change_leader1.gif" width="16" height="19" />info['lider'] != $u->info['battle'] ) { ?>style="display:none;cursor:pointer;" + style="cursor:pointer;" onclick="top.leaderFight();" id="btn_down_img3" style="cursor:pointer;" title="Передать флаг" src="https://img.new-combats.com/i/ico_change_leader1.gif" width="16" height="19" />
     
    - info['level'] == 0) { ?>
    + info['level'] == 0) { ?>
    Просто нажмите Вперёд!!! чтобы сделать рандомный удар

    - +
    - info['level'] < 2) { echo ' style="display:none;" '; } ?> border="0" cellspacing="0" cellpadding="0"> +
    info['level'] < 2) { echo ' style="display:none;" '; } ?> border="0" cellspacing="0" cellpadding="0"> - - - - - - - + + + + + + +
    info['tactic1']; ?> info['tactic2']; ?> info['tactic3']; ?> info['tactic4']; ?> info['tactic5']; ?> info['tactic6']); ?> info['tactic7']<0){ $u->info['tactic7'] = 0; } echo 0+$u->info['tactic7']; ?> info['tactic1']; ?> info['tactic2']; ?> info['tactic3']; ?> info['tactic4']; ?> info['tactic5']; ?> info['tactic6']); ?> info['tactic7']<0){ $u->info['tactic7'] = 0; } + echo 0+$u->info['tactic7']; ?>
    @@ -663,7 +684,7 @@ html, body {

    -

    - На данный момент вами нанесено урона:  info['battle_yron']); ?> HP .
    + На данный момент вами нанесено урона:  info['battle_yron']); ?> HP .
    - (Опыт: +info['battle_exp']); ?> ед., Без учета процентов) + (Опыт: +info['battle_exp']); ?> ед., Без учета процентов)

    Лог боя »»
    (Бой идет с таймаутом NaN мин.)
    @@ -690,7 +714,8 @@ html, body { - +
     
    Полную версию лога боя смотрите здесь »»

    Полную версию лога боя смотрите здесь »»

     
    @@ -702,7 +727,7 @@ function atackt(){ // document.getElementById('go_btn').setAttribute("class", "buttons btnnew btnnew2"); document.getElementById('go_btn').setAttribute("onclick", ""); document.getElementById('go_btn').setAttribute("disabled","disabled"); - atack(); + atack(); timedCount(); } function reflesht(){ // в душе не ебу что это№2 @@ -716,7 +741,7 @@ function reflesht(){ // document.getElementById('btn_down_img1').setAttribute("onclick", ""); document.getElementById('btn_down_img1').setAttribute("disabled","disabled"); // console.log("тут") - reflesh(true); + reflesh(true); timedCount(); } @@ -730,7 +755,7 @@ function timedCount() { //reflesh_btn document.getElementById("go_btn").innerHTML = 'Ждем!!!';// + cgo; document.getElementById('go_btn').setAttribute("disabled","disabled"); - + // if (!document.getElementById('reflesh_btn').disabled) { // } @@ -745,11 +770,11 @@ function timedCount() { //reflesh_btn if (cgo > 0) { tgo = setTimeout(timedCount, 100); - cgo = cgo - 10; + cgo = cgo - 10; } else { - + clearTimeout(tgo); timer_is_on = 0; cgo = 100; // доступная атака @@ -758,9 +783,9 @@ function timedCount() { //reflesh_btn document.getElementById('go_btn').removeAttribute("disabled"); document.getElementById('go_btn').setAttribute("onclick", "atackt();"); document.getElementById("reflesh_btn").innerHTML = 'Обновить'; - // ВОТ ТУТ REMOVE + // ВОТ ТУТ REMOVE document.getElementById('reflesh_btn').removeAttribute("disabled"); - document.getElementById('reflesh_btn').setAttribute("onclick", "reflesht();"); + document.getElementById('reflesh_btn').setAttribute("onclick", "reflesht();"); document.getElementById('btn_down_img1').setAttribute("onclick", "reflesht();"); document.getElementById('btn_down_img1').removeAttribute("disabled"); } @@ -771,13 +796,8 @@ function timedCount() { //reflesh_btn genZoneBlock(); refleshPoints(); - +
    - diff --git a/modules_data/btl_bac.php b/modules_data/btl_bac.php index 15d47fa2..0b2acd29 100644 --- a/modules_data/btl_bac.php +++ b/modules_data/btl_bac.php @@ -17,17 +17,15 @@ if( isset($_COOKIE['newbattle']) ) { include('jx/battle/log_text.php'); -if( $old_battle == true ) { - +if(!$old_battle) { + return; +} if(isset($btl_last['id']) && $u->info['battle'] == 0) { $u->info['battle'] = $btl_last['battle']; - //die(); } if($u->info['battle'] == 0 || isset($_GET['bend'])) { - //header('location: main.php'); - //die(); die(''); } @@ -52,12 +50,13 @@ function typeBattle($x) { } return $r; } + $allprice = typeBattle($allprice); /*if( $u->info['admin'] > 0 ) { echo ''; }else{*/ - echo ''; +echo ''; //} ?> @@ -69,7 +68,7 @@ function maginfo(z,p,m,obj) { r += 'Мощь: '+m+', '; r += 'Защита: '+z+', '; r += 'Подавление: '+p+''; - return r; + return r; } info['battle'] == 0 || $u->info['battle'] == $btl_last['battle']) ) { @@ -92,7 +91,7 @@ setInterval('top.c.noEr = 0;',250); function mbsum(event) { //Enter - if(event.keyCode==13 && top.c.noEr==0){ + if(event.keyCode==13 && top.c.noEr==0){ if( document.getElementById('go_btn').style.display != 'none' || document.getElementById('reflesh_btn').style.display == '') { if( document.getElementById('mainpanel').style.display == 'none' ) { @@ -231,11 +230,11 @@ function normJsonStr($str){ } ?> -var log_text = ; +var log_text = ; var youlogin = "info['login']?>"; function looklogrep(text,vars) { - + var vars = explode('||',vars); var forYou = ''; var data = { }; @@ -250,14 +249,14 @@ function looklogrep(text,vars) { } i++; } - + text = replaceAll('{tm1}',''+ data['time1'] +'',text); text = replaceAll('{u1}','' + data['login1'] + '',text); text = replaceAll('{u2}','' + data['login2'] + '',text); text = replaceAll('^^^^','=',text); text = replaceAll('{pr}','' + data['prm'] + '',text); - + var test_zb1 = [ 0 , 0 , 0 , 0 , 0 , 0]; var test_zb2 = [ 0 , 0 , 0 , 0 , 0 , 0]; i = 1; @@ -270,7 +269,7 @@ function looklogrep(text,vars) { } i++; } - + i = 1; while( i <= 5 ) { j = 1; @@ -293,7 +292,7 @@ function looklogrep(text,vars) { text = replaceAll('{zn2_' + i + '}',rej,text); i++; } - + i = 1; while( i <= 21 ) { //замена R - игрок 1 @@ -328,41 +327,41 @@ function looklogrep(text,vars) { } i++; } - + //text = replaceAll('^^^^','=',text); - + /*text = replaceAll('{tm1}','00:01',text); text = replaceAll('{tm2}','00:02',text); text = replaceAll('{tm3}','01.01.2015 00:01',text); text = replaceAll('{tm4}','02.02.2015 00:02',text);*/ - + //Повторная замена text = replaceAll('{u1}','' + data['login1'] + '',text); text = replaceAll('{u2}','' + data['login2'] + '',text); - + if( data['prm'] != undefined ) { data['prm'] = replaceAll("rvnO","=",data['prm']); } - + //data['prm'] = replaceAll('^^^^','=', data['prm'] ); - + text = replaceAll('{pr}','' + data['prm'] + '',text); - + text = replaceAll('^^^^','=',text); - + text = replaceAll('==','',text); - + if( ( data['login1'] == youlogin || data['login2'] == youlogin ) && youlogin != '' ) { text = replaceAll('{fru}',' date2 ',text); }else{ text = replaceAll('{fru}','',text); } - + /*text = replaceAll('{tm1}','00:01',text); text = replaceAll('{tm2}','00:02',text); text = replaceAll('{tm3}','01.01.2015 00:01',text); text = replaceAll('{tm4}','02.02.2015 00:02',text);*/ - + return text; } @@ -380,144 +379,147 @@ html, body {
    -
    +
    - - -
    - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - -
    -
    - - + + +
    -
    - - - - - - -
    Атака
    -
    Защита
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    удар в голову 
     блок головы
    -
     блок головы и груди
    -
     блок головы, груди и живота
    удар в грудь 
     блок груди
    -
     блок груди и живота
    -
     блок груди, живота и пояса
    удар в живот 
     блок живота
    -
     блок живота и пояса
    -
     блок живота, пояса и ног
    удар в пояс(пах) 
     блок пояса
    -
     блок пояса и ног
    -
     блок пояса, ног и головы
    удар по ногам 
     блок ног
    -
     блок ног и головы
    -
     блок ног, головы и груди
    -
    -
    - - - - - - - + + +
       - - - - - - - + if( $thisBattle['type'] == 99 ) { + echo str_replace(' ',' ',$allprice[3]); + }else{ + echo str_replace(' ',' ',$allprice[2]); + } + ?>
    + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + +
    +
    + + @@ -544,77 +547,85 @@ html, body { + + + + + + + + +
    +
    + + + + + + +
    Атака
    -
    Защита
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    удар в голову 
     блок головы
    +
     блок головы и груди
    +
     блок головы, груди и живота
    удар в грудь 
     блок груди
    +
     блок груди и живота
    +
     блок груди, живота и пояса
    удар в живот 
     блок живота
    +
     блок живота и пояса
    +
     блок живота, пояса и ног
    удар в пояс(пах) 
     блок пояса
    +
     блок пояса и ног
    +
     блок пояса, ног и головы
    удар по ногам 
     блок ног
    +
     блок ног и головы
    +
     блок ног, головы и груди
    +
    +
    + + + + + + + - - + + @@ -532,7 +534,8 @@ html, body {
       + + + + + + + info['lider'] != $u->info['battle'] ) { ?>style="display:none;cursor:pointer;"style="cursor:pointer;" onclick="top.leaderFight();" id="btn_down_img3" style="cursor:pointer;" title="Передать флаг" src="https://img.new-combats.com/i/ico_change_leader1.gif" width="16" height="19" />info['lider'] != $u->info['battle'] ) { ?>style="display:none;cursor:pointer;" style="cursor:pointer;"onclick="top.leaderFight();" id="btn_down_img3" style="cursor:pointer;" title="Передать флаг" src="https://img.new-combats.com/i/ico_change_leader1.gif" width="16" height="19" />
     
    - info['level'] == 0) { ?>
    + info['level'] == 0) { ?>
    Просто нажмите Вперёд!!! чтобы сделать рандомный удар

    - info['level'] < 2) { echo ' style="display:none;" '; } ?> border="0" cellspacing="0" cellpadding="0"> +
    info['level'] < 2) { echo ' style="display:none;" '; } ?> border="0" cellspacing="0" cellpadding="0"> - - - - - - - - -
    info['tactic1']; ?> info['tactic2']; ?> info['tactic3']; ?> info['tactic4']; ?> info['tactic5']; ?> info['tactic6']); ?> info['tactic7']<0){ $u->info['tactic7'] = 0; } echo 0+$u->info['tactic7']; ?>
    -
    -
    info['tactic1']; ?> info['tactic2']; ?> info['tactic3']; ?> info['tactic4']; ?> info['tactic5']; ?> info['tactic6']); ?> info['tactic7']<0){ $u->info['tactic7'] = 0; } + echo 0+$u->info['tactic7']; ?>
    + +
    + + + + + + + +
    +
    +
    +
    +
    +
    + + + + + -
      +
    +
    + На данный момент вами нанесено урона:  info['battle_yron']); ?> HP .
    + + (Опыт: +info['battle_exp']); ?> ед., Без учета процентов) + +
    +
    Лог боя »»
    + (Бой идет с таймаутом NaN мин.)
    - - - - - - - -
    -
    -
    -
    -
    -
    - - - -
      -
    -
    - На данный момент вами нанесено урона:  info['battle_yron']); ?> HP .
    - - (Опыт: +info['battle_exp']); ?> ед., Без учета процентов) - +
    +
    + + + + + + +
     
    Полную версию лога боя смотрите здесь »»

     
    -
    -
    Лог боя »»
    - (Бой идет с таймаутом NaN мин.)
    - - -
    - - - - - - -
     
    Полную версию лога боя смотрите здесь »»

     
    -
    - + - - + startCountdown(); + genZoneAtack(); + genZoneBlock(); + refleshPoints(); + + - diff --git a/modules_data/location/__zv.php b/modules_data/location/__zv.php deleted file mode 100644 index f94d3faf..00000000 --- a/modules_data/location/__zv.php +++ /dev/null @@ -1,1349 +0,0 @@ -'групповые',5=>'хаотичные'),$z2n = array(4=>'группового',5=>'хаотичного'); - - public function test() - { - global $code,$c,$u; - //Проверяем хаотичные и групповые бои в этом городе - $sp = mysql_query('SELECT * FROM `zayvki` AS `z` WHERE `z`.`city` = "'.$u->info['city'].'" AND `z`.`btl_id` = "0" AND `z`.`cancel` = "0" AND `z`.`start` = "0" AND (`z`.`razdel` = 4 OR `z`.`razdel` = 5) ORDER BY `z`.`id` DESC LIMIT 11'); - while($pl = mysql_fetch_array($sp)) - { - $uz = mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="'.$pl['id'].'"'); - $tm1 = array(); - $tm2 = array(); - $i = array(); - $toChat = ''; - $toWhere = ''; - while($t = mysql_fetch_array($uz)) - { - if(!isset(${'tm'.$t['team']})){ ${'tm'.$t['team']} = array(); } - if(!isset($i[$t['team']])){ $i[$t['team']] = 0; } - ${'tm'.$t['team']}[$i[$t['team']]] = $t; - $toChat .= ''.$t['login'].','; - $toWhere .= 'OR `id` = "'.$t['id'].'" '; - $i[$t['team']]++; - } - if($pl['time_start'] < time()-$pl['time'] || ($pl['razdel']==4 && $i[1]>=$pl['tm1max'] && $i[2]>=$pl['tm2max'])) - { - $toChat = rtrim($toChat,','); - $toWhere = ltrim($toWhere,'OR '); - if($pl['razdel']==4) - { - //группы - if(!isset($i[1]) || !isset($i[2])) - { - //группа не набрана - $this->cancelGroup($pl,$toChat); - }else{ - //Начинаем поединок - $this->startBattle($pl['id'],$toChat.'|-|'.$toWhere); - } - }elseif($pl['razdel']==5) - { - //хаоты - if($i[1]+$i[2]<4) - { - //группа не набрана - $this->cancelGroup($pl,$toChat); - }else{ - //Начинаем поединок - $this->startBattle($pl['id'],$toChat.'|-|'.$toWhere); - } - } - } - } - } - - public function userInfo() - { - global $u,$c; - $r = ''; - if($u->stats['mpAll']>0) - { - $pm = $u->stats['mpNow']/$u->stats['mpAll']*100; - } - $ph = $u->stats['hpNow']/$u->stats['hpAll']*100; - $dp = ''; - if($u->stats['mpAll']<=0) - { - $dp = 'margin-top:13px;'; - } - $r .= ' - -
      '.$u->microLogin($u->info['id'],1).'   -
    '.floor($u->stats['hpNow']).'/'.$u->stats['hpAll'].'
    -
    -
    -
    -'; -if($u->stats['mpAll']>0) -{ - $r .= '
    '.floor($u->stats['mpNow']).'/'.$u->stats['mpAll'].'
    -
    -
    -
    '; -} -$r .= '
    '; - unset($stt,$ph,$pm); - return $r; - } - - public function cancelGroup($zv,$uids) - { - $upd = mysql_query('UPDATE `stats` SET `zv` = "0" WHERE `zv` = "'.$zv['id'].'"'); - if($upd) - { - $upd = mysql_query('UPDATE `zayvki` SET `cancel` = "'.time().'" WHERE `id` = "'.$zv['id'].'"'); - if($upd) - { - $text = ' Не удалось начать поединок по причине: Группа не набрана.'; - mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('".$zv['city']."','','','".$uids."','".$text."','".time()."','11','0')"); - } - } - } - - public function add() - { - global $u,$c,$code; - if(isset($_GET['r'])) - { - $r = round(intval($_GET['r'])); - if($r>=1 && $r<=5) - { - $az = 1; - if($r==1 && $u->info['level']>0){ $az = 0; $this->error = 'Вы уже выросли из ползунков ;)'; } - if(($r==2 || $r==3) && $u->info['level']<1){ $az = 0; $this->error = 'Вы еще не выросли из ползунков ;)'; } - if(($r==4 || $r==5) && $u->info['level']<2){ $az = 0; $this->error = 'В '.$this->z1n[$r].' бои только с второго уровня.'; } - if(!isset($_POST['stavkakredit'])){ $_POST['stavkakredit'] = 0; } - $money = (int)($_POST['stavkakredit']*100); - $money = round(($money/100),2); - if($u->info['hpNow']<$u->stats['hpAll']/100*30 && ($r>=1 || $r<=3)) - { - $this->error = 'Вы еще слишком ослаблены чтобы начать новый бой'; - $az = 0; - }elseif($r==3 && $money>0 && $u->info['level']<4) - { - $this->error = 'Бои на деньги проводятся с 4-го уровня'; - $az = 0; - }elseif($r==3 && $money<0.5 && $money>0) - { - $this->error = 'Минимальная ставка 0.50 кр.'; - $az = 0; - }elseif($r==3 && $money>30) - { - $this->error = 'Максимальная ставка 30.00 кр.'; - $az = 0; - }elseif($r==3 && $money>$u->info['money']) - { - $this->error = 'У Вас недостаточно денег, чтобы подать заявку'; - $az = 0; - } - if($u->info['zv']>0){ $az = 0; $this->error = 'Вы уже находите в заявке.'; } - if($az==1) - { - $nz = array(); - $nz['city'] = $u->info['city']; - $nz['creator'] = $u->info['id']; - $nz['type'] = 0; - if($_POST['k']==1){ $nz['type'] = 1; } - $_POST['timeout'] = round(intval(mysql_real_escape_string($_POST['timeout']))); - if($_POST['timeout']==1 || $_POST['timeout']==2 || $_POST['timeout']==3 || $_POST['timeout']==4 || $_POST['timeout']==5) - { - $nz['timeout'] = $_POST['timeout']*60; - }else{ - $nz['timeout'] = 3*60; - } - if($r==3) - { - if($_POST['onlyfor']!='') - { - $nz['withUser'] = mysql_real_escape_string($_POST['onlyfor']); - } - } - $nz['razdel'] = $r; - $nz['time_start'] = 0; - $nz['min_lvl_1'] = 0; - $nz['min_lvl_2'] = 0; - $nz['max_lvl_1'] = 21; - $nz['max_lvl_2'] = 21; - $nz['tm1max'] = 0; - $nz['tm2max'] = 0; - $nz['travmaChance'] = 0; - $nz['invise'] = 0; - $nz['money'] = 0; - $nz['comment'] = ''; - $nz['tm1'] = 0; - $nz['tm2'] = 0; - $gad = 1; - if($r==3) - { - $nz['money'] = $money; - } - if($r==5 && $u->info['level']>1) - { - //хаотичный бой - if($_POST['startime2']) - { - $nz['time_start'] = (int)$_POST['startime2']; - $nz['comment'] = $_POST['cmt']; - $nz['comment'] = str_replace('"','"',$nz['comment']); - if($nz['time_start']!=300 && $nz['time_start']!=600 && $nz['time_start']!=900 && $nz['time_start']!=1200 && $nz['time_start']!=1800) - { - $nz['time_start'] = 600; - } - - if(isset($_POST['mut_hidden'])) - { - $nz['invise'] = 1; - } - - $nz['timeout'] = (int)$_POST['timeout']; - if($nz['timeout']!=1 && $nz['timeout']!=2 && $nz['timeout']!=3 && $nz['timeout']!=4 && $nz['timeout']!=5) - { - $nz['timeout'] = 3; - } - - //Генерируем уровни союзника - $lvl = (int)$_POST['levellogin1']; - if($lvl == 0) - { - $nz['min_lvl_1'] = 2; - $nz['max_lvl_1'] = 21; - }elseif($lvl == 3) - { - $nz['min_lvl_1'] = $u->info['level']; - $nz['max_lvl_1'] = $u->info['level']; - }elseif($lvl == 6) - { - $nz['min_lvl_1'] = $u->info['level']-1; - $nz['max_lvl_1'] = $u->info['level']+1; - }else{ - $nz['min_lvl_1'] = 2; - $nz['max_lvl_1'] = 2; - } - - if((int)$_POST['k']==1) - { - //кулачный бой - $nz['type'] = 1; - } - - $nz['timeout'] = $nz['timeout']*60; - - $nz['tm1'] = 100*$u->info['level']+10*$u->info['upLevel']+$u->info['exp']+$u->stats['reting']; - - }else{ - $gad = 0; $this->error = 'Что-то не так...
    '; - } - }elseif($r==4 && $u->info['level']>1) - { - //групповой бой - //'Array ( [startime] => 300 [timeout] => 1 [nlogin1] => 11 [levellogin1] => 0 [nlogin2] => 11 [levellogin2] => 0 [k] => 1 [travma] => on [mut_clever] => on [cmt] => тест [open] => Начнем месилово! :) )'; - //здесь заносим и проверяем данные на гурпповой бой - if($_POST['startime']) - { - $nz['time_start'] = (int)$_POST['startime']; - $nz['comment'] = $_POST['cmt']; - $nz['comment'] = str_replace('"','"',$nz['comment']); - if($nz['time_start']!=300 && $nz['time_start']!=600 && $nz['time_start']!=900 && $nz['time_start']!=1200 && $nz['time_start']!=1800) - { - $nz['time_start'] = 600; - } - - $nz['timeout'] = (int)$_POST['timeout']; - if($nz['timeout']!=1 && $nz['timeout']!=2 && $nz['timeout']!=3 && $nz['timeout']!=4 && $nz['timeout']!=5) - { - $nz['timeout'] = 3; - } - - $nz['timeout'] = $nz['timeout']*60; - - $nz['tm1max'] = (int)$_POST['nlogin1']; - if($nz['tm1max']<1 || $nz['tm1max']>99) - { - $this->error .= 'Неверное кол-во союзников
    '; - $gad = 0; - } - - $nz['tm2max'] = (int)$_POST['nlogin2']; - if($nz['tm2max']<1 || $nz['tm2max']>99) - { - $this->error .= 'Неверное кол-во противников
    '; - $gad = 0; - } - - if($nz['tm1max']+$nz['tm2max']<3) - { - $this->error .= 'Заявки 1 на 1 подаются в разделе физические или договорные бои
    '; - $gad = 0; - } - - //Генерируем уровни союзника - $lvl = (int)$_POST['levellogin1']; - if($lvl == 0) - { - $nz['min_lvl_1'] = 2; - $nz['max_lvl_1'] = 21; - }elseif($lvl == 1) - { - $nz['min_lvl_1'] = 2; - $nz['max_lvl_1'] = $u->info['level']; - }elseif($lvl == 2) - { - $nz['min_lvl_1'] = 2; - $nz['max_lvl_1'] = $u->info['level']-1; - }elseif($lvl == 3) - { - $nz['min_lvl_1'] = $u->info['level']; - $nz['max_lvl_1'] = $u->info['level']; - }elseif($lvl == 4) - { - $nz['min_lvl_1'] = $u->info['level']; - $nz['max_lvl_1'] = $u->info['level']+1; - }elseif($lvl == 5) - { - $nz['min_lvl_1'] = $u->info['level']-1; - $nz['max_lvl_1'] = $u->info['level']; - }elseif($lvl == 6) - { - $nz['min_lvl_1'] = $u->info['level']-1; - $nz['max_lvl_1'] = $u->info['level']+1; - }elseif($lvl == 6){ - $nz['min_lvl_1'] = 99; - }else{ - $this->error = 'Что-то не так...
    '; - $gad = 0; - } - - //Генерируем уровни противника - $lvl = (int)$_POST['levellogin2']; - if($lvl == 0) - { - $nz['min_lvl_2'] = 2; - $nz['max_lvl_2'] = 21; - }elseif($lvl == 1) - { - $nz['min_lvl_2'] = 2; - $nz['max_lvl_2'] = $u->info['level']; - }elseif($lvl == 2) - { - $nz['min_lvl_2'] = 2; - $nz['max_lvl_2'] = $u->info['level']-1; - }elseif($lvl == 3) - { - $nz['min_lvl_2'] = $u->info['level']; - $nz['max_lvl_2'] = $u->info['level']; - }elseif($lvl == 4) - { - $nz['min_lvl_2'] = $u->info['level']; - $nz['max_lvl_2'] = $u->info['level']+1; - }elseif($lvl == 5) - { - $nz['min_lvl_2'] = $u->info['level']-1; - $nz['max_lvl_2'] = $u->info['level']; - }elseif($lvl == 6) - { - $nz['min_lvl_2'] = $u->info['level']-1; - $nz['max_lvl_2'] = $u->info['level']+1; - }elseif($lvl == 6){ - $nz['min_lvl_2'] = 99; - }else{ - $this->error = 'Что-то не так...
    '; - $gad = 0; - } - - if($nz['min_lvl_1']<2){ $nz['min_lvl_1'] = 2; } - if($nz['max_lvl_1']>21){ $nz['max_lvl_1'] = 21; } - if($nz['min_lvl_2']<2){ $nz['min_lvl_2'] = 2; } - if($nz['max_lvl_2']>21){ $nz['max_lvl_2'] = 21; } - - if((int)$_POST['k']==1) - { - //кулачный бой - $nz['type'] = 1; - } - - }else{ - $gad = 0; - $this->error = 'Что-то не так...
    '; - } - } - if($gad==1) - { - if(!isset($nz['withUser'])){ $nz['withUser'] = ''; } - $bt1 = (int)$_POST['bot1']; - $bt2 = (int)$_POST['bot2']; - if($bt1>99){ $bt1 = 99; } - if($bt2>99){ $bt2 = 99; } - if($bt1<0){ $bt1 = 0; } - if($bt2<0){ $bt2 = 0; } - $ins = mysql_query('INSERT INTO `zayvki` (`bot1`,`bot2`,`time`,`city`,`creator`,`type`,`time_start`,`timeout`,`min_lvl_1`,`min_lvl_2`,`max_lvl_1`,`max_lvl_2`,`tm1max`,`tm2max`,`travmaChance`,`invise`,`razdel`,`comment`,`money`,`withUser`,`tm1`,`tm2`) VALUES ( - "'.((int)$bt1).'", - "'.((int)$bt2).'", - "'.time().'", - "'.$nz['city'].'", - "'.$nz['creator'].'", - "'.$nz['type'].'", - "'.$nz['time_start'].'", - "'.mysql_real_escape_string($nz['timeout']).'", - "'.mysql_real_escape_string($nz['min_lvl_1']).'", - "'.mysql_real_escape_string($nz['min_lvl_2']).'", - "'.mysql_real_escape_string($nz['max_lvl_1']).'", - "'.mysql_real_escape_string($nz['max_lvl_2']).'", - "'.mysql_real_escape_string($nz['tm1max']).'", - "'.mysql_real_escape_string($nz['tm2max']).'", - "'.$nz['travmaChance'].'", - "'.$nz['invise'].'", - "'.$nz['razdel'].'", - "'.mysql_real_escape_string($nz['comment']).'", - "'.mysql_real_escape_string($nz['money']).'", - "'.$nz['withUser'].'","'.$nz['tm1'].'","'.$nz['tm2'].'")'); - $zid = mysql_insert_id(); - if($ins) - { - mysql_query('UPDATE `stats` SET `zv`="'.$zid.'",`team`="1" WHERE `id`="'.$u->info['id'].'" LIMIT 1'); - $u->info['zv'] = $zid; - $this->error = 'Заявка на бой подана'; - }else{ - $this->error = 'Вы не смогли подать заявку...'; - } - } - } - } - } - } - - //тренеровочный бой - public function addBot() - { - global $u,$c,$code; - if($u->info['level']>3 && $u->info['admin']==0 && $u->info['id']!=1011840) - { - $bot = false; - }else{ - $bot = $u->addNewbot($id['id'],NULL,$u->info['id']); - } - if($bot==false) - { - $this->error = 'Бои с монстрами, нежитью, клонами и прочими вурдалаками проводятся только для персонажей младше 4 уровня...
    Со стороны посматривает Общий Враг, ему явно что-то не понравилось...
    '; - }elseif($u->info['hpNow']<$u->stats['hpAll']/100*30 && ($r>=1 || $r<=3)) - { - $this->error = 'Вы еще слишком ослаблены чтобы начать новый бой'; - $az = 0; - }elseif($bot==false) - { - echo '
    Cannot start battle (no prototype "ND0Clone")
    '; - }else{ - //создаем поединок с ботом - $expB = 25; - $btl = array('players'=>'','timeout'=>60,'type'=>0,'invis'=>0,'noinc'=>0,'travmChance'=>0,'typeBattle'=>0,'addExp'=>$expB,'money'=>0); - $ins = mysql_query('INSERT INTO `battle` (`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( - "'.$u->info['city'].'", - "'.time().'", - "'.$btl['players'].'", - "'.$btl['timeout'].'", - "'.$btl['type'].'", - "'.$btl['invis'].'", - "'.$btl['noinc'].'", - "'.$btl['travmChance'].'", - "'.$btl['typeBattle'].'", - "'.$btl['addExp'].'", - "'.$btl['money'].'")'); - if($ins) - { - $btl_id = mysql_insert_id(); - //обновляем данные о поединке - $upd2 = mysql_query('UPDATE `users` SET `battle`="'.$btl_id.'" WHERE `id` = "'.$u->info['id'].'" OR `id` = "'.$bot.'" LIMIT 2'); - mysql_query('UPDATE `stats` SET `team`="1" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "'.$bot.'" LIMIT 1'); - //Если бой кулачный, то снимаем вещи - if($btl['type']==1) - { - mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "'.$u->info['id'].'" AND `inOdet`!=0'); - mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "'.$bot.'" AND `inOdet`!=0'); - } - - //обновляем заявку, что бой начался - $u->info['battle'] = $btl_id; - //Отправляем сообщение в чат всем бойцам - mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('".$u->info['city']."','".$u->info['room']."','".$u->info['login']."','".time()."','11','0','117')"); - die(''); - }else{ - $this->error = 'Cannot start battle (no prototype "ABD0Clone")'; - } - } - } - - //Изломы - public function startIzlom($id2,$lvl) - { - global $u,$c,$code; - $lvl = (int)$lvl; - $bots = array(1=>'Снеговик Меченосец'); - $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "'.$bots[$id2].' ['.$lvl.']" AND `active` = "1" LIMIT 1')); - $bot = $u->addNewbot($id['id'],NULL); - if(isset($id['id']) && $bot!=false) - { - //создаем поединок с ботом - $expB = -$bot['expB']; - $btl = array('players'=>'','timeout'=>60,'type'=>9,'invis'=>0,'noinc'=>0,'travmChance'=>0,'typeBattle'=>0,'addExp'=>$expB,'money'=>0,'izlom'=>(int)$id2,'izlomLvl'=>(int)$lvl); - $ins = mysql_query('INSERT INTO `battle` (`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`,`izlom`,`izlomLvl`) VALUES ( - "'.$u->info['city'].'", - "'.time().'", - "'.$btl['players'].'", - "'.$btl['timeout'].'", - "'.$btl['type'].'", - "'.$btl['invis'].'", - "'.$btl['noinc'].'", - "'.$btl['travmChance'].'", - "'.$btl['typeBattle'].'", - "'.$btl['addExp'].'", - "'.$btl['money'].'","'.$btl['izlom'].'","'.$btl['izlomLvl'].'")'); - if($ins) - { - $btl_id = mysql_insert_id(); - //обновляем данные о поединке - $upd2 = mysql_query('UPDATE `users` SET `battle`="'.$btl_id.'" WHERE `id` = "'.$u->info['id'].'" OR `id` = "'.$bot['id'].'" LIMIT 2'); - mysql_query('UPDATE `stats` SET `team`="1" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "'.$bot['id'].'" LIMIT 1'); - //Если бой кулачный, то снимаем вещи - if($btl['type']==1) - { - mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "'.$u->info['id'].'" AND `inOdet`!=0'); - mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "'.$bot['id'].'" AND `inOdet`!=0'); - } - - //обновляем заявку, что бой начался - $u->info['battle'] = $btl_id; - //Отправляем сообщение в чат всем бойцам - mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('".$u->info['city']."','".$u->info['room']."','".$u->info['login']."','".time()."','11','0','117')"); - die(''); - }else{ - $this->error = 'Cannot start battle (no prototype "ABD0'.$id['id'].'")'; - } - }else{ - echo '
    Cannot start battle (no prototype "ND0IZ'.$lvl.'")
    '; - } - } - - public function startBattle($id,$vars = NULL) - { - global $c,$code,$u; - mysql_query('START TRANSACTION'); - $z = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `id`="'.$id.'" AND `start` = "0" AND `cancel` = "0" AND (`time` > "'.(time()-60*60*2).'" OR `razdel` > 3) LIMIT 1')); - if(isset($z['id'])) - { - $vars = explode('|-|',$vars); - if($z['razdel']>=4 && $zv['razdel']<=5) - { - //начало группового или хаотичного боя - $btl_id = 0; - $btl = array('players'=>'','timeout'=>$z['timeout'],'type'=>$z['type'],'invis'=>0,'noinc'=>0,'travmChance'=>0,'typeBattle'=>0,'addExp'=>0,'money'=>0); - $ins = mysql_query('INSERT INTO `battle` (`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( - "'.$u->info['city'].'", - "'.time().'", - "'.mysql_real_escape_string($btl['players']).'", - "'.mysql_real_escape_string($btl['timeout']).'", - "'.mysql_real_escape_string($btl['type']).'", - "'.mysql_real_escape_string($btl['invis']).'", - "'.mysql_real_escape_string($btl['noinc']).'", - "'.mysql_real_escape_string($btl['travmChance']).'", - "'.mysql_real_escape_string($btl['typeBattle']).'", - "'.mysql_real_escape_string($btl['addExp']).'", - "'.mysql_real_escape_string($btl['money'],2).'")'); - $btl_id = mysql_insert_id(); - if($btl_id>0) - { - //обновляем данные о поединке - $upd1 = mysql_query('UPDATE `stats` SET `zv`="0" WHERE `zv` = "'.$z['id'].'"'); - $upd2 = mysql_query('UPDATE `users` SET `battle`="'.$btl_id.'" WHERE '.$vars[1].''); - - //Если бой кулачный, то снимаем вещи - if($z['type']==1) - { - //mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "'.$u->info['id'].'" AND `inOdet`!=0'); - } - - //обновляем заявку, что бой начался - $upd = mysql_query('UPDATE `zayvki` SET `start` = "'.time().'",`btl_id` = "'.$btl_id.'" WHERE `id` = "'.$z['id'].'" LIMIT 1'); - $u->info['battle'] = $btl_id; - //Отправляем сообщение в чат всем бойцам - mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('".$u->info['city']."','-1','".$vars[0]."','".time()."','11','0','117')"); - die(''); - } - }elseif($z['razdel']>=1 && $z['razdel']<=3) - { - //начало PvP - if($u->info['team']==1 && $u->info['zv']==$z['id']) - { - $zu = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `zv`="'.$z['id'].'" AND `team` = "2" LIMIT 1')); - if(isset($zu['id'])) - { - $uz = mysql_fetch_array(mysql_query('SELECT `login`,`money` FROM `users` WHERE `id`="'.$zu['id'].'" LIMIT 1')); - //создаем поединок - $btl_id = 0; - if($uz['money']<$z['money'] || $u->info['money']<$z['money']) - { - $z['money'] = 0; - } - $btl = array('players'=>'','timeout'=>$z['timeout'],'type'=>$z['type'],'invis'=>0,'noinc'=>0,'travmChance'=>0,'typeBattle'=>0,'addExp'=>0,'money'=>round($z['money'],2)); - $ins = mysql_query('INSERT INTO `battle` (`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( - "'.$u->info['city'].'", - "'.time().'", - "'.mysql_real_escape_string($btl['players']).'", - "'.mysql_real_escape_string($btl['timeout']).'", - "'.mysql_real_escape_string($btl['type']).'", - "'.mysql_real_escape_string($btl['invis']).'", - "'.mysql_real_escape_string($btl['noinc']).'", - "'.mysql_real_escape_string($btl['travmChance']).'", - "'.mysql_real_escape_string($btl['typeBattle']).'", - "'.mysql_real_escape_string($btl['addExp']).'", - "'.mysql_real_escape_string($btl['money']).'")'); - $btl_id = mysql_insert_id(); - if($ins) - { - //обновляем данные о поединке - $upd1 = mysql_query('UPDATE `stats` SET `zv`="0" WHERE `zv` = "'.$z['id'].'" LIMIT 2'); - $upd2 = mysql_query('UPDATE `users` SET `battle`="'.$btl_id.'" WHERE `id` = "'.$u->info['id'].'" OR `id` = "'.$zu['id'].'" LIMIT 2'); - - //Если бой кулачный, то снимаем вещи - if($z['type']==1) - { - mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "'.$u->info['id'].'" AND `inOdet`!=0'); - mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "'.$zu['id'].'" AND `inOdet`!=0'); - } - - //обновляем заявку, что бой начался - $upd = mysql_query('UPDATE `zayvki` SET `start` = "'.time().'",`btl_id` = "'.$btl_id.'" WHERE `id` = "'.$z['id'].'" LIMIT 1'); - $u->info['battle'] = $btl_id; - //Отправляем сообщение в чат всем бойцам - mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('".$u->info['city']."','".$u->info['room']."','".$uz['login']."','".time()."','11','0','117')"); - die(''); - }else{ - $this->error = 'Ошибка создания битвы.'; - } - }else{ - $this->error = 'Вы не можете начать поединок, вашу заявку никто не принял.'; - } - }else{ - $this->error = 'Вы не можете начать поединок.'; - } - } - } - mysql_query('COMMIT'); - } - - public function cancelzv() - { - global $u,$c,$code,$zi; - if(isset($_GET['cancelzv'],$zi['id']) && $zi['razdel']>=1 && $zi['razdel']<=3) - { - $enemy = mysql_fetch_array(mysql_query('SELECT `u`.*,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="'.$zi['id'].'" AND `st`.`team` = "2" LIMIT 1')); - if(isset($enemy['id'])) - { - if($zi['razdel']>=1 && $zi['razdel']<=3) - { - if($u->info['team']==1) - { - //выкидываем из заявки + пишем сообщение в чат - $upd = mysql_query('UPDATE `stats` SET `zv` = "0",`team`="0" WHERE `id` = "'.$enemy['id'].'" LIMIT 1'); - if($upd) - { - $this->error = 'Вы отказали '.$enemy['login'].' в поединке'; - //отправляем сообщение в чат - $sa = ''; - if($u->info['sex']==2) - { - $sa = 'а'; - } - $text = ' [login:'.$u->info['login'].'] отказал'.$sa.' вам в поединке.'; - mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('".$enemy['city']."','".$enemy['room']."','','".$enemy['login']."','".$text."','".time()."','10','0')"); - } - }elseif($u->info['id']==$enemy['id'] && $zi['start']==0) - { - //выкидываем из заявки + пишем сообщение в чат - $upd = mysql_query('UPDATE `stats` SET `zv` = "0",`team`="0" WHERE `id` = "'.$enemy['id'].'" LIMIT 1'); - if($upd) - { - $uz = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`login`,`u`.`city`,`u`.`room`,`u`.`id`,`st`.`zv`,`st`.`team` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="'.$zi['id'].'" AND `st`.`team` = "1" LIMIT 1')); - if(isset($uz['id'])) - { - $this->error = 'Вы отозвали свой запрос на бой.'; - //отправляем сообщение в чат - $sa = ''; - if($u->info['sex']==2) - { - $sa = 'а'; - } - $text = ' [login:'.$u->info['login'].'] отозвал'.$sa.' свой запрос на бой.'; - mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('".$uz['city']."','".$uz['room']."','','".$uz['login']."','".$text."','".time()."','10','0')"); - } - $u->info['zv'] = 0; - $u->info['team'] = 0; - } - } - } - }else{ - if($zi['razdel']>=1 && $zi['razdel']<=3 && $u->info['team']==1) - { - //удаляем заявку на бой - $upd = mysql_query('UPDATE `zayvki` SET `cancel` = "'.time().'" WHERE `id` = "'.$zi['id'].'" LIMIT 1'); - if($upd) - { - mysql_query('UPDATE `stats` SET `zv` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $this->error = 'Вы отозвали свою заявку'; - $zi = false; - $u->info['zv'] = 0; - } - } - } - - } - } - - public function see() - { - global $u,$c,$code,$zi,$cron; - if(isset($_GET['r']) && ((!isset($_GET['new_group']) && !isset($_POST['groupClick'])) || isset($zi['id'])) ) - { - $r = round(intval($_GET['r'])); - if($r>=1 && $r<=5) - { - $this->zv_see = 1; - if($u->room['FR']==0) - { - echo '


    Подать заявку можно только в комнатах бойцовского клуба
    '; $this->zv_see = 0; - }elseif($r==1 && $u->info['level']>0) - { - echo '


    Вы уже выросли из ползунков ;)
    '; $this->zv_see = 0; - }elseif($r>1 && $r<6 && $u->info['level']<1) - { - echo '


    Вы еще не выросли из ползунков ;)
    '; $this->zv_see = 0; - }elseif($r>3 && $r<6 && $u->info['level']<2) - { - echo '


    В '.$this->z1n[$r].' бои только с второго уровня.
    '; $this->zv_see = 0; - }elseif($r==1 && $u->info['level']>0) - { - echo '


    Вы уже выросли из ползунков ;)
    '; $this->zv_see = 0; - }elseif($u->info['zv']>0 && $u->info['battle']==0) - { - if($zi['razdel']==1 || $zi['razdel']==2 || $zi['razdel']==3) - { - echo ' - - - - - -
    '; - - if($u->info['team']==1) - { - $uz = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="'.$zi['id'].'" AND `st`.`team`="2" LIMIT 1')); - if(!isset($uz['id'])) - { - //если никто не принял - echo '
    Вы уже подали заявку на бой
    '; - }else{ - //если кто-то принял - $sa = ''; - if($uz['sex']==2) - { - $sa = 'а'; - } - echo 'Вашу заявку принял'.$sa.' '.$ca.' '.$u->microLogin($uz['id'],1).' Хотите подтвердить бой? '; - } - }else{ - $uz = mysql_fetch_array(mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="'.$zi['id'].'" AND `st`.`team`="1" LIMIT 1')); - if(isset($uz['id'])) - { - echo 'Ожидаем подтверждения боя от '.$u->microLogin($uz['id'],1).' '; - }else{ - //удаляем заявку - - } - } - - echo '
    -
    -
    '; - }else{ - $tm_start = floor(($zi['time']+$zi['time_start']-time())/6)/10; - $tm_start = $this->rzv($tm_start); - echo '
    - Ожидаем начала '.$this->z2n[$zi['razdel']].' боя'; - $sv0 = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "'.$zi['id'].'" LIMIT 100')); - if($sv0[0] <= 1) - { - if(isset($_GET['cancelzvnow'])) - { - echo ' Заявка на бой отменена'; - $u->info['zv'] = 0; - mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - }else{ - echo ' Отменить'; - } - } - unset($sv0); - echo '
    Ваш бой начнется через '.$tm_start.' мин.'; - } - }elseif($r==1 || $r==2 || $r==3) - { - //новички,физические,договорные - $zi = array(1=>'Если вы не достигли первого уровня, то для вас это единственный способ для проведения битв.',2=>'Здесь вы можете найти себе достойного противника для сражения.',3=>'Если вы предварительно с кем-то договорились о поединке, то лучше здесь подать заявку.'); - $dv = ''; - if($r==3) - { - $dv = '
    Логин противника - -
    - Бой на деньги, ставка - - -  '; - }else{ - $dv = ''; - if($u->info['level']<4 || $u->info['admin']>0 || $u->info['id']==1011840) - { - $dv .= ' '; - } - } - echo ' -
    - - - - - - -
    '.$zi[$r].'
    - - - - -
    - Подать заявку на бой - Таймаут - - Тип боя - - '.$dv.' -
    -
    '; - }elseif($r==4) - { - //групповые - echo ' - '; - }elseif($r==5) - { - //хаотичные - echo 'Хаотичный бой - разновидность группового, где группы формируются автоматически. Бой не начнется, если собралось меньше 4-х человек.
    - Подать заявку на хаотичный бой -
    - -
    '; - } - }elseif($r==6) - { - //текущие - echo 'Текущие бои...'; - }elseif($r==7) - { - //завершенные - $btl = ''; - $dt = time(); - $slogin = $u->info['login']; - $see = ' - - - - -
     « Предыдущий день

    Записи о завершенных боях за '.date('d.m.Y',$dt).'

    Следующий день » 
    -
    -Показать только бои персонажа: за -
    -
    '; - if($btl=='') - { - $see .= '


    В этот день не было боев, или же, летописец опять потерял свитки...




    '; - }else{ - $see .= $btl; - } - - echo $see; - }else{ - if((!isset($_GET['new_group']) && !isset($_POST['groupClick'])) || isset($zi['id'])) - { - echo '

    Выберите раздел
    '; - } - } - }else{ - if((!isset($_GET['new_group']) && !isset($_POST['groupClick'])) || isset($zi['id'])) - { - echo '

    Выберите раздел
    '; - } - } - } - - public function rzv($v) - { - $v = explode('.',$v); - if(!isset($v[1])) - { - $v = $v[0].'.0'; - }else{ - $v = $v[0].'.'.$v[1]; - } - return $v; - } - - public function rzInfo($id) - { - global $u; - $r = ''; - $w = mysql_num_rows(mysql_query('SELECT * FROM `zayvki` WHERE `time` > '.(time()-7200).' AND `city` = "'.$u->info['city'].'" AND `cancel` = "0" AND `start` = "0" AND `razdel` = "'.$id.'" AND (`min_lvl_1` <= '.$u->info['level'].' OR `min_lvl_2` <= '.$u->info['level'].') AND (`max_lvl_1` >= '.$u->info['level'].' OR `max_lvl_2` >= '.$u->info['level'].')')); - if($w>0) - { - $r = ' ('.$w.')'; - } - return $r; - } - - public function testzvu($id,$tm,$bt) - { - $r = 0; - if($bt==0) - { - $r = mysql_num_rows(mysql_query('SELECT `id` FROM `stats` WHERE `zv` = "'.$id.'" AND `team` = "'.$tm.'"')); - }else{ - $r = mysql_num_rows(mysql_query('SELECT `id` FROM `stats` WHERE `zv` = "'.$id.'" AND `team` = "'.$tm.'" AND `bot` = "2"')); - } - return $r; - } - - public function seeZv() - { - global $u,$c,$code,$zi; - if(isset($_GET['r']) && $this->zv_see==1) - { - $r = round(intval($_GET['r'])); - if($r>=1 && $r<=5) - { - //Список заявок - $i = 0; - $cl = mysql_query('SELECT * FROM `zayvki` WHERE `razdel` = "'.mysql_real_escape_string($r).'" AND `start` = "0" AND `cancel` = "0" AND `time` > "'.(time()-60*60*2).'" AND `city` = "'.$u->info['city'].'" ORDER BY `id` DESC'); - $zvb = ''; - if($r==4 || $r==5) - { - /*echo '
    -
    Показывать заявки -  
    -   -
    -

    ';*/ - } - while($pl = mysql_fetch_array($cl)) - { - if($pl['razdel']==5) - { - //Заявки хаотичного боя - $tm = ''; - $tmStart = floor(($pl['time']+$pl['time_start']-time())/6)/10; - $tmStart = $this->rzv($tmStart); - - $users = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`u`.`admin`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON `u`.`id` = `st`.`id` WHERE `st`.`zv` = "'.$pl['id'].'"'); - while($s = mysql_fetch_array($users)) - { - $tm .= $u->microLogin($uz['id'],1).', '; - } - - $rad = ''; - - $tm = rtrim($tm,', '); - - if(!isset($zi['id'])) - { - $rad = ' '; - } - - $n1tv = ''; - - if($pl['invise']==1) - { - //невидимый бой - $tm = 'невидимый'; - $n1tv = ' '; - } - - $zvb .= ''.$rad.''.date('H:i',$pl['time']).' ('.$tm.') ('.$pl['min_lvl_1'].'-'.$pl['max_lvl_1'].') '.$n1tv.' Бой начнется через '.$tmStart.' мин., таймаут '.($pl['timeout']/60).' мин.
    '; - - }elseif($pl['razdel']==4) - { - //Заявки группового боя - $tm1 = ''; - $tm2 = ''; - $tmStart = floor(($pl['time']+$pl['time_start']-time())/6)/10; - $tmStart = $this->rzv($tmStart); - - //Персонаж в заявке, подключаем ему противника - //Ищем апонента для групповых - $rndo = rand(0,1000); - if($rndo < 250) - { - $apo = array(); - if(rand(0,100)<51) - { - $apo['team'] = 1; - }else{ - $apo['team'] = 2; - } - if($this->testzvu($pl['id'],$apo['team'],0) < $pl['tm'.$apo['team'].'max'] && $this->testzvu($pl['id'],$apo['team'],1) < $pl['bot'.$apo['team']]) - { - $spj = mysql_fetch_array(mysql_query('SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE (`u`.`level` >= '.$pl['min_lvl_'.$apo['team']].' AND `u`.`level` <= '.$pl['max_lvl_'.$apo['team']].') AND `st`.`bot` = "2" AND `u`.`battle` = "0" AND `st`.`zv` = "0" LIMIT 1')); - if(isset($spj['id'])) - { - mysql_query('UPDATE `stats` SET `hpNow` = "3000",`mpNow` = "3000",`zv` = "'.$pl['id'].'",`team` = "'.$apo['team'].'" WHERE `id` = "'.$spj['id'].'" LIMIT 1'); - } - } - } - - //генерируем команды - $users = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`u`.`admin`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON `u`.`id` = `st`.`id` WHERE `st`.`zv` = "'.$pl['id'].'"'); - while($s = mysql_fetch_array($users)) - { - ${'tm'.$s['team']} .= $u->microLogin($s['id'],1).', '; - } - - if($tm1=='') - { - $tm1 = 'группа пока не набрана'; - }else{ - $tm1 = rtrim($tm1,', '); - } - - if($tm2=='') - { - $tm2 = 'группа пока не набрана'; - }else{ - $tm2 = rtrim($tm2,', '); - } - $rad = ''; - if(!isset($zi['id'])) - { - $rad = ' '; - } - $zvb .= ''.$rad.''.date('H:i',$pl['time']).' '.$pl['tm1max'].' ('.$pl['min_lvl_1'].'-'.$pl['max_lvl_1'].') на '.$pl['tm2max'].' ('.$pl['min_lvl_2'].'-'.$pl['max_lvl_2'].') ('.$tm1.') против ('.$tm2.') Бой начнется через '.$tmStart.' мин., таймаут '.($pl['timeout']/60).' мин.
    '; - }elseif($pl['razdel']>=1 && $pl['razdel']<=3) - { - $uz = mysql_fetch_array(mysql_query('SELECT `u`.`banned`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="'.$pl['id'].'" AND `st`.`team`="1" LIMIT 1')); - if(isset($uz['id'])) - { - $uze = mysql_fetch_array(mysql_query('SELECT `u`.*,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="'.$pl['id'].'" AND `st`.`team` = "2" LIMIT 1')); - $d1 = ''; - if($uz['id']==$u->info['id'] || $uze['id']==$u->info['id']) - { - $d1 = 'disabled="disabled"'; - } - if(!isset($uze['id']) || $u->info['zv']==$pl['id']) - { - $enm = ''; - - if(isset($uze['id'])) - { - $enm = ' против '.$u->microLogin($uze['id'],1).''; - } - if($uz['banned']>0) - { - $pl['id'] = 0; - $d1 = 'disabled="disabled"'; - $zvb .= ''; - } - $dp1 = ''; - if($pl['money']>0) - { - $dp1 = ' Бой на деньги, ставка: '.$u->round2($pl['money']).' кр.'; - } - $zvb .= ' '.date('H:i',$pl['time']).' '.$u->microLogin($uz['id'],1).' '.$enm.' тип боя: (таймаут '.round($pl['timeout']/60).' мин.'.$dp1.')
    '; - if($uz['banned']>0){ $zvb .= '
    '; } - } - } - } - $i++; - } - if($i==0) - { - //заявок нет - }else{ - if(!isset($zi['id'])) - { - echo '

    '.$zvb.'
    '; - }else{ - echo $zvb; - } - } - } - } - } - - public function go($id) - { - global $u,$c,$code,$zi,$filter; - if(!isset($zi['id'])) - { - if($u->info['battle']==0) - { - $z = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `id`="'.mysql_real_escape_string(intval($id)).'" AND `city` = "'.$u->info['city'].'" AND `start` = "0" AND `cancel` = "0" AND `time` > "'.(time()-60*60*2).'" LIMIT 1')); - if(isset($z['id'])) - { - if($z['razdel']>=1 && $z['razdel']<=3) - { - //новички, физы, договорные - $uz1 = mysql_fetch_array(mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="'.$z['id'].'" AND `st`.`team`="1" LIMIT 1')); - if(isset($uz1['id'])) - { - $uz2 = mysql_fetch_array(mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="'.$z['id'].'" AND `st`.`team`="2" LIMIT 1')); - if($u->info['hpNow']<$u->stats['hpAll']/100*30 && ($z['razdel']>=1 || $z['razdel']<=3)) - { - $this->error = 'Вы еще слишком ослаблены чтобы начать новый бой'; - $az = 0; - }elseif($uz1['clan']==$u->info['clan'] && $u->info['clan']!=0) - { - $this->error = 'Вы не можете сражаться против сокланов'; - }elseif($z['money']>0 && $u->info['level']<4) - { - $this->error = 'Бои на деньги проводятся с 4-го уровня'; - }elseif($z['withUser']!='' && $filter->mystr($u->info['login'])!=$filter->mystr($z['withUser']) && $z['razdel']==3) - { - $this->error = 'Вы не можете принять эту заявку'; - }elseif($z['money']>0 && $z['money']>$u->info['money']) - { - $this->error = 'У Вас недостаточно денег, чтобы принять эту заявку'; - }elseif($u->stats['hpNow']stats['hpMax']/100*30)) - { - $this->error = 'Вы слишком ослаблены, восстановитесь'; - }elseif(!isset($uz2['id'])) - { - $upd = mysql_query('UPDATE `stats` SET `zv` = "'.$z['id'].'",`team` = "2" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if($upd) - { - $ca = ''; - if($uz1['clan']!=0) - { - $pc = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id`="'.$uz1['clan'].'" LIMIT 1')); - if(isset($pc['id'])) - { - $pc['img'] = $pc['name_mini'].'.gif'; - $ca = ''; - } - } - if($uz1['align']!=0) - { - $ca = ''.$ca; - } - $this->error = 'Ожидаем подтверждения боя от '.$ca.' '.$uz1['login'].' ['.$uz1['level'].']'; - $sa = ''; - if($u->info['sex']==2) - { - $sa = 'а'; - } - $text = ' [login:'.$u->info['login'].'] принял'.$sa.' вашу заявку на бой.[reflesh_main_zv_priem:'.$u->info['id'].']'; - mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('".$uz1['city']."','".$uz1['room']."','','".$uz1['login']."','".$text."','".time()."','10','0')"); - $zi = $z; - $u->info['zv'] = $z['id']; - $u->info['team'] = 2; - }else{ - $this->error = 'Невозможно принять заявку.'; - } - }else{ - $this->error = 'Заявку уже кто-то принял до вас.'; - } - }else{ - $this->error = 'Заявка на бой заблокирована.'; - } - }elseif($z['razdel']==4 && $u->info['level']>1) - { - $tm = 0; - //групповые - if(isset($_GET['tm1'])) - { - $tm = 1; - }elseif(isset($_GET['tm2'])) - { - $tm = 2; - }else{ - $this->error = 'Что-то здесь не так'; - } - - if($tm!=0) - { - $t1 = $tm; - $t2 = 1; - $tmmax = 0; - if($tm==1){ $t2 = 2; } - $cl111 = mysql_query('SELECT `u`.`clan`,`st`.`team`,`st`.`id`,`st`.`zv` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv` = "'.$z['id'].'" LIMIT 200'); - $cln = 0; - while($pc111 = mysql_fetch_array($cl111)) - { - if($pc111['clan']==$u->info['clan'] && $u->info['clan']!=0 && $pc111['team']==$t2) - { - $cln++; - } - if($pc111['team']==$t1) - { - $tmmax++; - } - } - if($cln>0) - { - $this->error = 'Вы не можете сражаться против сокланов'; - }elseif($z['tm'.$t1.'max']>$tmmax) - { - if($z['min_lvl_'.$t1]>$u->info['level'] || $z['max_lvl_'.$t1]<$u->info['level']) - { - $this->error = 'Вы не подходите по уровню, за эту команду могут зайти персонажи '.$z['min_lvl_'.$t1].' - '.$z['max_lvl_'.$t1].' уровня'; - }elseif($u->stats['hpNow']stats['hpMax']/100*30)) - { - $this->error = 'Вы слишком ослаблены, восстановитесь'; - }else{ - $upd = mysql_query('UPDATE `stats` SET `zv` = "'.$z['id'].'",`team` = "'.mysql_real_escape_string((int)$t1).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if(!$upd) - { - $this->error = 'Ошибка приема заявки...'; - }else{ - $this->error = 'Вы приняли групповой бой...'; - $zi = $z; - $u->info['zv'] = $z['id']; - $u->info['team'] = mysql_real_escape_string((int)$t1); - } - } - }else{ - $this->error = 'Группа уже набрана ('.($z['tm'.$t1.'max']-$tmmax).')'; - } - } - }elseif($z['razdel']==5 && $u->info['level']>1) - { - //хаотичные - if($z['min_lvl_1']>$u->info['level'] || $z['max_lvl_1']<$u->info['level']) - { - $this->error = 'Вы не подходите по уровню, за эту команду могут зайти персонажи '.$z['min_lvl_1'].' - '.$z['max_lvl_1'].' уровня'; - }elseif($u->stats['hpNow']stats['hpMax']/100*30)) - { - $this->error = 'Вы слишком ослаблены, восстановитесь'; - }else{ - $t1 = 1; - - /* считаем баланс */ - if($z['tm1']>$z['tm2']) - { - $t1 = 2; - }elseif($z['tm1']<$z['tm2']) - { - $t1 = 1; - }else{ - $t1 = rand(1,2); - } - - if($z['invise']==1) - { - $nxtID = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "'.$z['id'].'"')); - $nxtID = $nxtID[0]; - $u->info['login2'] = 'Боец ('.($nxtID+1).')'; - }else{ - $u->info['login2'] = ''; - } - - $blnc = 100*$u->info['level']+10*$u->info['upLevel']+$u->info['exp']+$u->stats['reting']; - - $z['tm'.$t1] += $blnc; - - $upd = mysql_query('UPDATE `stats` SET `zv` = "'.$z['id'].'",`team` = "'.$t1.'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if(!$upd) - { - $this->error = 'Ошибка приема заявки...'; - }else{ - mysql_query('UPDATE `users` SET `login2` = "'.$u->info['login2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `zayvki` SET `tm1` = "'.$z['tm1'].'", `tm2` = "'.$z['tm2'].'" WHERE `id` = "'.$z['id'].'" LIMIT 1'); - $this->error = 'Вы приняли хаотичный бой...'; - $zi = $z; - $u->info['zv'] = $z['id']; - $u->info['team'] = mysql_real_escape_string((int)$t1); - } - } - } - }else{ - $this->error = 'Заявка на бой не найдена.'; - } - } - }else{ - $this->error = 'Вы не можете принять бой. Сначала отзовите свою заявку.'; - } - } -} - -$zv = new zayvki; -$zv->test(); //проверяем заявки -?> \ No newline at end of file diff --git a/modules_data/location/_locations.php b/modules_data/location/_locations.php index 7b83d7da..42c8c440 100644 --- a/modules_data/location/_locations.php +++ b/modules_data/location/_locations.php @@ -160,7 +160,7 @@ if(isset($_GET['loc'])) if($u->info['room']==209) { - require_once('_incl_data/class/__zv.php'); + $zv = new FightRequest(); } if($re!=''){ $re = $re.' '; } diff --git a/modules_data/location/ab/izlom2.php b/modules_data/location/ab/izlom2.php index 26617c63..be92e546 100644 --- a/modules_data/location/ab/izlom2.php +++ b/modules_data/location/ab/izlom2.php @@ -1,148 +1,149 @@ room['file']=='ab/izlom2') -{ -if(isset($_POST['level'])) -{ - $dop_lvl = 8; //максимально допустимый лвл - if((int)$_POST['level'] <= $u->info['level'] && (int)$_POST['level'] <= $dop_lvl) - { - $eff1 = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `id_eff` = "31" AND `delete` = "0" LIMIT 1')); - if(!isset($eff1['id'])) - { - if(file_exists('_incl_data/class/__zv.php')) { - if(!isset($zv)) - { - require_once('_incl_data/class/__zv.php'); - } - $zv->startIzlom(1,((int)$_POST['level'])); - }else{ - echo '...'; - } - }else{ - echo 'Вы не можете начать новый поход пока действует эффект "Касание Хаоса"'; - } - }else{ - echo 'Вы не можете начать поход... Выполните больше заданий у Шейлы!'; - } +if ($u->room['file'] != 'ab/izlom2') { + return; +} +if (isset($_POST['level'])) { + $dop_lvl = 8; //максимально допустимый лвл + if ((int)$_POST['level'] > $u->info['level'] || (int)$_POST['level'] > $dop_lvl) { + echo 'Вы не можете начать поход... Выполните больше заданий у Шейлы!'; + } else { + $eff1 = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $u->info['id'] . '" AND `id_eff` = "31" AND `delete` = "0" LIMIT 1')); + if (isset($eff1['id'])) { + echo 'Вы не можете начать новый поход пока действует эффект "Касание Хаоса"'; + } elseif (!isset($zv)) { + $zv = new FightRequest(); + } + } } - ?> - -
    '.$re.''; } ?>
    - - - -
    Излом Хаоса
    -
    - - - - -
      - - - -
    - - - - - - - - -
    - - - - - - - - -
    Излом Хаоса - 16
    Магазин Излома
     
    -
    -
    - + +
    ' . $re . ''; + } ?>
    + + + + +
    +
    Излом Хаоса
    +
    + + + + + +
      + + + + +
    + + + + + + + + + +
    + + + + + + + + + +
    Излом + Хаоса - 16
    Магазин + Излома
    +
     
    +
    +
    +
    +
    +
    - info['level']<7){ echo 'disabled'; } ?>> - Проход в Излом Хаоса (посмотреть рейтинг)
    -

    - -
    - '.date('d.m.Y H:i',$pl['time']).', Волна: '.$pl['voln'].', '.$u->microLogin($pl['uid'],1).'
    '; - } - }-*/ - /*if(!isset($text)) - { - $text = 'История пуста, скорее всего не нашлось смельчаков...'; - } - echo $text; - unset($text);*/ - echo '

    '; - ?> - \ No newline at end of file + +

    + diff --git a/modules_data/location/btl_.php b/modules_data/location/btl_.php index 1c5ec920..b72311e8 100644 --- a/modules_data/location/btl_.php +++ b/modules_data/location/btl_.php @@ -1,772 +1,1162 @@ -info['battle'] == 0) { - $u->info['battle'] = $btl_last['battle']; - //die(); +if (!$old_battle) { + return; +} +if (isset($btl_last['id']) && $u->info['battle'] == 0) { + $u->info['battle'] = $btl_last['battle']; } -if($u->info['battle'] == 0 || isset($_GET['bend'])) -{ - //header('location: main.php'); - //die(); - die(''); +if ($u->info['battle'] == 0 || isset($_GET['bend'])) { + die(''); } -$thisBattle = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "'.$u->info['battle'].'" LIMIT 1')); +$thisBattle = mysql_fetch_array( + mysql_query('SELECT * FROM `battle` WHERE `id` = "' . $u->info['battle'] . '" LIMIT 1') +); -$allprice = mysql_fetch_array(mysql_query('SELECT SUM(`price1`) FROM `battle_users` WHERE `battle` = "'.$u->info['battle'].'" GROUP BY `uid` LIMIT 1')); +$allprice = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`price1`) FROM `battle_users` WHERE `battle` = "' . $u->info['battle'] . '" GROUP BY `uid` LIMIT 1' + ) +); $allprice = $allprice[0]; -function typeBattle($x) { - $r = array(0,0,'Поединок','Кровавый Поединок'); - if( $x < 50000 ) { - //Обычный бой - }elseif( $x >= 50000 && $x < 100000 ) { - $r = array(25,50,'Великая Битва','Кровавая Битва'); - }elseif( $x < 500000 ) { - $r = array(50,75,'Величайшая Битва','Кровавая Резня'); - }elseif( $x < 1000000 ) { - $r = array(75,100,'Историческая Битва','Кровавая Сеча'); - }elseif( $x < 2500000 ) { - $r = array(100,125,'Эпохальная Битва','Кровавое Побоище'); - }elseif( $x >= 5000000 ) { - $r = array(150,150,'Судный День','Судный День'); - } - return $r; +function typeBattle($x) +{ + $r = [0, 0, 'Поединок', 'Кровавый Поединок']; + if ($x < 50000) { + //Обычный бой + } elseif ($x >= 50000 && $x < 100000) { + $r = [25, 50, 'Великая Битва', 'Кровавая Битва']; + } elseif ($x < 500000) { + $r = [50, 75, 'Величайшая Битва', 'Кровавая Резня']; + } elseif ($x < 1000000) { + $r = [75, 100, 'Историческая Битва', 'Кровавая Сеча']; + } elseif ($x < 2500000) { + $r = [100, 125, 'Эпохальная Битва', 'Кровавое Побоище']; + } elseif ($x >= 5000000) { + $r = [150, 150, 'Судный День', 'Судный День']; + } + return $r; } -$allprice = typeBattle($allprice); - if ($thisBattle['smert'] == 1) - { - $allprice = array(150,150,'Жесточайшее Сражение','Жесточайшее Сражение'); - } -/*if( $u->info['admin'] > 0 ) { - echo ''; -}else{*/ - echo ''; -//} +$allprice = typeBattle($allprice); +if ($thisBattle['smert'] == 1) { + $allprice = [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение']; +} + +echo ''; ?> - + -
    - - - - - - -
    - -
    - - - - - - -
    -
    -
    - - - - - - -
    - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - -
    -
    - - - - - - - - - -
    -
    - - - - - - -
    Атака
    -
    Защита
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    удар в голову 
     блок головы
    -
     блок головы и груди
    -
     блок головы, груди и живота
    удар в грудь 
     блок груди
    -
     блок груди и живота
    -
     блок груди, живота и пояса
    удар в живот 
     блок живота
    -
     блок живота и пояса
    -
     блок живота, пояса и ног
    удар в пояс(пах) 
     блок пояса
    -
     блок пояса и ног
    -
     блок пояса, ног и головы
    удар по ногам 
     блок ног
    -
     блок ног и головы
    -
     блок ног, головы и груди
    -
    -
    - - - - - - - - - - - - - - - - - - - - - -
       - - - - - - - info['lider'] != $u->info['battle'] ) { ?>style="display:none;cursor:pointer;"style="cursor:pointer;" onclick="top.leaderFight();" id="btn_down_img3" style="cursor:pointer;" title="Передать флаг" src="https://img.new-combats.com/i/ico_change_leader1.gif" width="16" height="19" />
     
    -
    - info['level'] == 0) { ?>
    -
    Просто нажмите Вперёд!!! чтобы сделать рандомный удар

    - + } + //space + if (event.keyCode == 32 && top.c.noEr == 0) { + document.getElementById('reflesh_btn').setAttribute("class", "buttons btnnew btnnew2"); + document.getElementById('reflesh_btn').setAttribute("onclick", ""); + + if (document.getElementById('reflesh_btn').disabled) { + } else { + reflesht(); + top.c.noEr = 1; + clearTimeout(top.c.noErTmr); + top.c.noErTmr = setTimeout('top.c.noEr = 0;', 2000); + } + + } + + if (event.keyCode == 49) { + change_radioKeys(1, false); + } + if (event.keyCode == 50) { + change_radioKeys(2, false); + } + if (event.keyCode == 51) { + change_radioKeys(3, false); + } + if (event.keyCode == 52) { + change_radioKeys(4, false); + } + if (event.keyCode == 53) { + change_radioKeys(5, false); + } + if (event.keyCode == 48) { + change_radioKeys(0, false); + } + + + } + $(document.body).bind('keyup', function (event) { + mbsum(event); + }); + + + function shpb() { + $(document).find('div.pimg').unbind('mouseover'); + $(document).find('div.pimg').unbind('mouseout'); + $(document).find('div.pimg').unbind('mousedown'); + $(document).find('div.pimg').bind('mouseover', function () { + top.hi(this, $(this).attr('stt'), event, 0, 1, 1, 1, 'stt'); + }); + $(document).find('div.pimg').bind('mouseout', function () { + top.hic(); + }); + $(document).find('div.pimg').bind('mousedown', function () { + top.hic(); + }); + var test = $(document).find('div.pimg'); + var i = 0; + while (i != -1) { + if (test[i] != undefined) { + if ($(test[i]).attr('pog') > 1 && $(test[i]).attr('stl') == 0) { + $(test[i]).attr('stl', 1); + $(test[i]).html('' + $(test[i]).attr('pog') + '' + $(test[i]).attr('pog') + '' + $(test[i]).attr('pog') + '' + $(test[i]).attr('pog') + '
    ' + $(test[i]).attr('pog') + '
    ' + $(test[i]).html()); + } else if ($(test[i]).attr('col') > 1 && $(test[i]).attr('stl') == 0) { + $(test[i]).attr('stl', 1); + $(test[i]).html('x' + $(test[i]).attr('col') + 'x' + $(test[i]).attr('col') + 'x' + $(test[i]).attr('col') + 'x' + $(test[i]).attr('col') + '
    x' + $(test[i]).attr('col') + '
    ' + $(test[i]).html()); + } + } else { + i = -2; + } + i++; + } + } + +
    + + + + + + +
    + +
    + + + - -
    +
    +
    +
    - info['level'] < 2) { echo ' style="display:none;" '; } ?> border="0" cellspacing="0" cellpadding="0"> - - - - - - - - - -
    info['tactic1']; ?> info['tactic2']; ?> info['tactic3']; ?> info['tactic4']; ?> info['tactic5']; ?> info['tactic6']); ?> info['tactic7']<0){ $u->info['tactic7'] = 0; } echo 0+$u->info['tactic7']; ?>
    -
    -
    - - - - - - - -
    -
    -
    -
    -
    -
    - - - - + + +
      -
    -
    - На данный момент вами нанесено урона:  info['battle_yron']); ?> HP .
    - - (Опыт: +info['battle_exp']); ?> ед., Без учета процентов) +
    +
    + + + + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + +
    +
    +
    + + + + +
    +
    + + + + + + +
    +
    Атака
    +
    +
    -
    +
    +
    Защита
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    удар в голову +   + +
    +
    +
     блок головы
    +
     блок головы и груди
    +
     блок головы, груди и + живота +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    удар в грудь +   + +
    +
    +
     блок груди
    +
     блок груди и живота
    +
     блок груди, живота и пояса +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    удар в живот +   + +
    +
    +
     блок живота
    +
     блок живота и пояса
    +
     блок живота, пояса и ног +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    удар в пояс(пах) +   + +
    +
    +
     блок пояса
    +
     блок пояса и ног
    +
     блок пояса, ног и головы +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    удар по ногам +   + +
    +
    +
     блок ног
    +
     блок ног и головы
    +
     блок ног, головы и груди +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + +
      + + + +   + + + + + + + info['lider'] != $u->info['battle']) { ?>style="display:none;cursor:pointer;" + style="cursor:pointer;" onclick="top.leaderFight();" id="btn_down_img3" + style="cursor:pointer;" + title="Передать флаг" + src="https://img.new-combats.com/i/ico_change_leader1.gif" + width="16" height="19"/> +
     
    +
    +
    + info['level'] == 0) { ?> +
    +
    Просто нажмите + Вперёд!!! чтобы сделать рандомный + удар
    +
    + +
    +
    +
    + info['level'] < 2) { + echo ' style="display:none;" '; + } ?> border="0" cellspacing="0" cellpadding="0"> + + + + + + + + + +
    info['tactic1']; ?> info['tactic2']; ?> info['tactic3']; ?> info['tactic4']; ?> info['tactic5']; ?> info['tactic6']); ?> + info['tactic7'] < 0) { + $u->info['tactic7'] = 0; + } + echo 0 + $u->info['tactic7']; ?>
    +
    +
    + + + + + + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + +
      +
    +
    + На данный момент вами нанесено урона:  info['battle_yron']); ?> HP .
    + + (Опыт: +info['battle_exp']); ?> ед., Без учета процентов) +
    +
    +
    +
    Лог боя »»
    + (Бой идет с таймаутом NaN мин.) +
    +
    +
    + + + + + + +
      +
    +
    Полную версию лога боя смотрите здесь »»
    +
     
    -
    Лог боя »»
    - (Бой идет с таймаутом NaN мин.)
    -
    - - - - - - -
     
    Полную версию лога боя смотрите здесь »»

     
    -
    - + - - -
    - + startCountdown(); + genZoneAtack(); + genZoneBlock(); + refleshPoints(); + + + diff --git a/modules_data/location/dragopsh.php b/modules_data/location/dragopsh.php index 4fd149df..f2dcf24f 100644 --- a/modules_data/location/dragopsh.php +++ b/modules_data/location/dragopsh.php @@ -1,937 +1,946 @@ room['file']=='dragopsh') { - - require_once('_incl_data/class/__dungeon.php'); - - $lab = mysql_fetch_array(mysql_query('SELECT * FROM `laba_now` WHERE `id` = "'.$u->info['dnow'].'" LIMIT 1')); - if( !isset($lab['id']) ) { - die('Поход в подземелье не найден...'); - } - - $varsitmsund = array( - //Вещи в сундуках - array(4391,1), - array(1043,1), - array(3106,1), - array(2544,2), - //array(2545,1), - array(724,1), - array(1187,1), - array(1043,1), - array(3106,1), - array(2544,2), - //array(2545,1), - array(724,1), - array(1187,1), - array(1043,1), - array(3106,1), - array(2544,2), - //array(2545,1), - array(724,1), - array(1187,1), - array(1043,1), - array(3106,1), - array(2544,2), - //array(2545,1), - array(724,1), - array(1187,1) - ); - - $varsitm = array( - //Слабые ресурсы - array(4373,1), - array(4374,1), - array(4375,1), - array(4376,1), - array(4377,1), - array(4378,1), - array(4379,1), - array(4380,1), - array(4381,1), - array(4382,1), - array(4383,1), - array(4384,1), - array(4385,1), - // - array(4373,1), - array(4374,1), - array(4375,1), - array(4376,1), - array(4377,1), - array(4378,1), - array(4379,1), - array(4380,1), - array(4381,1), - array(4382,1), - array(4383,1), - array(4384,1), - array(4385,1), - // - array(4373,1), - array(4374,1), - array(4375,1), - array(4376,1), - array(4377,1), - array(4378,1), - array(4379,1), - array(4380,1), - array(4381,1), - array(4382,1), - array(4383,1), - array(4384,1), - array(4385,1) - ); - $varsitmart = array( - //Артефакты - array(2109,1), - array(2111,1), - array(2099,1), - array(2105,1), - array(2122,1), - array(2101,1), - array(2114,1), - array(2107,1), - array(2108,1) - ); - - $map = mysql_fetch_array(mysql_query('SELECT `id`,`data`,`update` FROM `laba_map` WHERE `id` = "'.$u->info['dnow'].'" LIMIT 1')); - if( !isset($map['id']) ) { - die('Карта подземелий не найдена...'); - } - - $dies = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "'.$u->info['id'].'" AND `dn` = "'.$u->info['dnow'].'" AND `vars` = "dielaba" LIMIT 1')); - $dies = $dies[0]; - - $map_d = json_decode($map['data']); - - $varos = array(); - $varos['trap1'] = mysql_fetch_array(mysql_query('SELECT `vals`,`time` FROM `laba_act` WHERE `uid` = "'.$u->info['id'].'" AND `lib` = "'.$lab['id'].'" AND `time` > "'.time().'" AND `vars` = "trap1" ORDER BY `time` DESC LIMIT 1')); - - $errors = ''; - $effed = ''; - - if( isset($_GET['takeitm']) ) { - $var = array( - 'obj' => mysql_fetch_array(mysql_query('SELECT `i`.*,`m`.`name`,`m`.`inslot` FROM `laba_itm` AS `i` LEFT JOIN `items_main` AS `m` ON `m`.`id` = `i`.`itm` WHERE `i`.`id` = "'.mysql_real_escape_string($_GET['takeitm']).'" AND `i`.`lib` = "'.$lab['id'].'" AND `i`.`x` = "'.$u->info['x'].'" AND `i`.`y` = "'.$u->info['y'].'" LIMIT 1')) - ); - if(isset($var['obj']['id'])) { - if( $var['obj']['take'] == 0 ) { - $var['sex'] = ''; if($u->info['sex'] == 1) { $var['sex'] = 'а'; } - $var['text'] = ''.$u->info['login'].' поднял'.$var['sex'].' предмет "'.$var['obj']['name'].'"'; - $errors .= 'Вы подняли предмет "'.$var['obj']['name'].'"'; - mysql_query('UPDATE `laba_itm` SET `take` = "'.$u->info['id'].'" WHERE `id` = "'.$var['obj']['id'].'" LIMIT 1'); - if( $var['obj']['inslot'] > 0 ) { - $u->addItem($var['obj']['itm'],$u->info['id'],'|fromlaba=1|nosavelaba=1|nosale=1'); - }else{ - $u->addItem($var['obj']['itm'],$u->info['id'],'|fromlaba=1'); - } - mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('".$u->info['dnow']."','".$u->info['city']."','".$u->info['room']."','','','".$var['text']."','".time()."','6','0','1','1')"); - }else{ - $errors .= 'Предмет кто-то поднял раньше Вас...'; - } - }else{ - $errors = 'Предмет не найден...'; - } - }elseif( isset($_GET['useobj']) ) { - $var = array( - 'obj' => mysql_fetch_array(mysql_query('SELECT * FROM `laba_obj` WHERE `id` = "'.mysql_real_escape_string($_GET['useobj']).'" AND `lib` = "'.$lab['id'].'" AND `x` = "'.$u->info['x'].'" AND `y` = "'.$u->info['y'].'" LIMIT 1')) - ); - if(isset($var['obj']['id'])) { - if( $var['obj']['use'] == 0 ) { - if( $var['obj']['type'] == 1 ) { - //сунудук - $var['sex'] = ''; if($u->info['sex'] == 1) { $var['sex'] = 'а'; } - - //Выдаем ресурсы, свитки - if( rand(0,100) < 25 ) { - //Выдаем арт varsitmart - $var['itm'] = $varsitm[rand(0,count($varsitm)-1)]; - $var['itm'] = $var['itm'][0]; - $var['itm'] = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "'.$var['itm'].'" LIMIT 1')); - if( isset($var['itm']['id']) ) { - mysql_query('INSERT INTO `laba_itm` (`uid`,`lib`,`time`,`itm`,`x`,`y`,`take`) VALUES ( - "'.$u->info['id'].'","'.$lab['id'].'","'.time().'","'.$var['itm']['id'].'","'.$u->info['x'].'","'.$u->info['y'].'","0" +if ($u->room['file'] == 'dragopsh') { + + $d = new Dungeon; + $d->start(); + + $lab = mysql_fetch_array(mysql_query('SELECT * FROM `laba_now` WHERE `id` = "' . $u->info['dnow'] . '" LIMIT 1')); + if (!isset($lab['id'])) { + die('Поход в подземелье не найден...'); + } + + $varsitmsund = [//Вещи в сундуках + [4391, 1], [1043, 1], [3106, 1], [2544, 2], //array(2545,1), + [724, 1], [1187, 1], [1043, 1], [3106, 1], [2544, 2], //array(2545,1), + [724, 1], [1187, 1], [1043, 1], [3106, 1], [2544, 2], //array(2545,1), + [724, 1], [1187, 1], [1043, 1], [3106, 1], [2544, 2], //array(2545,1), + [724, 1], [1187, 1]]; + + $varsitm = [//Слабые ресурсы + [4373, 1], [4374, 1], [4375, 1], [4376, 1], [4377, 1], [4378, 1], [4379, 1], [4380, 1], [4381, 1], [4382, 1], [4383, 1], [4384, 1], [4385, 1], // + [4373, 1], [4374, 1], [4375, 1], [4376, 1], [4377, 1], [4378, 1], [4379, 1], [4380, 1], [4381, 1], [4382, 1], [4383, 1], [4384, 1], [4385, 1], // + [4373, 1], [4374, 1], [4375, 1], [4376, 1], [4377, 1], [4378, 1], [4379, 1], [4380, 1], [4381, 1], [4382, 1], [4383, 1], [4384, 1], [4385, 1]]; + $varsitmart = [//Артефакты + [2109, 1], [2111, 1], [2099, 1], [2105, 1], [2122, 1], [2101, 1], [2114, 1], [2107, 1], [2108, 1]]; + + $map = mysql_fetch_array(mysql_query('SELECT `id`,`data`,`update` FROM `laba_map` WHERE `id` = "' . $u->info['dnow'] . '" LIMIT 1')); + if (!isset($map['id'])) { + die('Карта подземелий не найдена...'); + } + + $dies = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `dn` = "' . $u->info['dnow'] . '" AND `vars` = "dielaba" LIMIT 1')); + $dies = $dies[0]; + + $map_d = json_decode($map['data']); + + $varos = []; + $varos['trap1'] = mysql_fetch_array(mysql_query('SELECT `vals`,`time` FROM `laba_act` WHERE `uid` = "' . $u->info['id'] . '" AND `lib` = "' . $lab['id'] . '" AND `time` > "' . time() . '" AND `vars` = "trap1" ORDER BY `time` DESC LIMIT 1')); + + $errors = ''; + $effed = ''; + + if (isset($_GET['takeitm'])) { + $var = ['obj' => mysql_fetch_array(mysql_query('SELECT `i`.*,`m`.`name`,`m`.`inslot` FROM `laba_itm` AS `i` LEFT JOIN `items_main` AS `m` ON `m`.`id` = `i`.`itm` WHERE `i`.`id` = "' . mysql_real_escape_string($_GET['takeitm']) . '" AND `i`.`lib` = "' . $lab['id'] . '" AND `i`.`x` = "' . $u->info['x'] . '" AND `i`.`y` = "' . $u->info['y'] . '" LIMIT 1'))]; + if (isset($var['obj']['id'])) { + if ($var['obj']['take'] == 0) { + $var['sex'] = ''; + if ($u->info['sex'] == 1) { + $var['sex'] = 'а'; + } + $var['text'] = '' . $u->info['login'] . ' поднял' . $var['sex'] . ' предмет "' . $var['obj']['name'] . '"'; + $errors .= 'Вы подняли предмет "' . $var['obj']['name'] . '"'; + mysql_query('UPDATE `laba_itm` SET `take` = "' . $u->info['id'] . '" WHERE `id` = "' . $var['obj']['id'] . '" LIMIT 1'); + if ($var['obj']['inslot'] > 0) { + $u->addItem($var['obj']['itm'], $u->info['id'], '|fromlaba=1|nosavelaba=1|nosale=1'); + } else { + $u->addItem($var['obj']['itm'], $u->info['id'], '|fromlaba=1'); + } + mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $u->info['dnow'] . "','" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $var['text'] . "','" . time() . "','6','0','1','1')"); + } else { + $errors .= 'Предмет кто-то поднял раньше Вас...'; + } + } else { + $errors = 'Предмет не найден...'; + } + } elseif (isset($_GET['useobj'])) { + $var = ['obj' => mysql_fetch_array(mysql_query('SELECT * FROM `laba_obj` WHERE `id` = "' . mysql_real_escape_string($_GET['useobj']) . '" AND `lib` = "' . $lab['id'] . '" AND `x` = "' . $u->info['x'] . '" AND `y` = "' . $u->info['y'] . '" LIMIT 1'))]; + if (isset($var['obj']['id'])) { + if ($var['obj']['use'] == 0) { + if ($var['obj']['type'] == 1) { + //сунудук + $var['sex'] = ''; + if ($u->info['sex'] == 1) { + $var['sex'] = 'а'; + } + + //Выдаем ресурсы, свитки + if (rand(0, 100) < 25) { + //Выдаем арт varsitmart + $var['itm'] = $varsitm[rand(0, count($varsitm) - 1)]; + $var['itm'] = $var['itm'][0]; + $var['itm'] = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $var['itm'] . '" LIMIT 1')); + if (isset($var['itm']['id'])) { + mysql_query('INSERT INTO `laba_itm` (`uid`,`lib`,`time`,`itm`,`x`,`y`,`take`) VALUES ( + "' . $u->info['id'] . '","' . $lab['id'] . '","' . time() . '","' . $var['itm']['id'] . '","' . $u->info['x'] . '","' . $u->info['y'] . '","0" )'); - }else{ - $var['itm']['name'] = 'Предмет рассыпался на глазах...'; - } - } - //Выдаем ресурсы, свитки - $var['itm'] = $varsitmsund[rand(0,count($varsitmsund)-1)]; - $var['itm'] = $var['itm'][0]; - $var['itm'] = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "'.$var['itm'].'" LIMIT 1')); - if( isset($var['itm']['id']) ) { - $u->addItem($var['itm']['id'],$u->info['id'],'|fromlaba=1'); - }else{ - $var['itm']['name'] = 'Предмет рассыпался на глазах...'; - } - $var['text'] = ' '.$u->info['login'].' открыл'.$var['sex'].' сундук...и забрал "'.$var['itm']['name'].'"'; - mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('".$u->info['dnow']."','".$u->info['city']."','".$u->info['room']."','','','".$var['text']."','".time()."','6','0','1','1')"); - $errors .= ' '.$u->info['login'].' открыл'.$var['sex'].' сундук...и забрал "'.$var['itm']['name'].'"'; - $var['obj']['use'] = $u->info['id']; - }elseif( $var['obj']['type'] == 5 ) { - //Пандору - $var['sex'] = ''; if($u->info['sex'] == 1) { $var['sex'] = 'а'; } - - //Выдаем ресурсы, свитки - if( rand(0,100) < 70 ) { - //Выдаем арт varsitmart - $var['itm'] = $varsitmart[rand(0,count($varsitmart)-1)]; - $var['itm'] = $var['itm'][0]; - $var['itm'] = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "'.$var['itm'].'" LIMIT 1')); - if( isset($var['itm']['id']) ) { - mysql_query('INSERT INTO `laba_itm` (`uid`,`lib`,`time`,`itm`,`x`,`y`,`take`) VALUES ( - "'.$u->info['id'].'","'.$lab['id'].'","'.time().'","'.$var['itm']['id'].'","'.$u->info['x'].'","'.$u->info['y'].'","0" - )'); - }else{ - $var['itm']['name'] = 'Предмет рассыпался на глазах...'; - } - } - $var['itm'] = $varsitm[rand(0,count($varsitm)-1)]; - $var['itm'] = $var['itm'][0]; - $var['itm'] = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "'.$var['itm'].'" LIMIT 1')); - if( isset($var['itm']['id']) ) { - //$u->addItem($var['itm']['id'],$u->info['id'],'|fromlaba=1'); - mysql_query('INSERT INTO `laba_itm` (`uid`,`lib`,`time`,`itm`,`x`,`y`,`take`) VALUES ( - "'.$u->info['id'].'","'.$lab['id'].'","'.time().'","'.$var['itm']['id'].'","'.$u->info['x'].'","'.$u->info['y'].'","0" - )'); - }else{ - $var['itm']['name'] = 'Предмет рассыпался на глазах...'; - } - $var['text'] = ' '.$u->info['login'].' открыл'.$var['sex'].' Ящик Пандоры...'; - mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('".$u->info['dnow']."','".$u->info['city']."','".$u->info['room']."','','','".$var['text']."','".time()."','6','0','1','1')"); - $errors .= ' '.$u->info['login'].' открыл'.$var['sex'].' Ящик Пандоры...'; - $var['obj']['use'] = $u->info['id']; - }elseif( $var['obj']['type'] == 3 ) { - //Хилка - $var['sex'] = ''; if($u->info['sex'] == 1) { $var['sex'] = 'а'; } - $var['hpp'] = rand(2,5)*10; - $var['hp'] = round($u->stats['hpAll']/100*$var['hpp']); - $u->stats['hpNow'] += $var['hp']; - if( $u->stats['hpNow'] > $u->stats['hpAll'] ) { - $u->stats['hpNow'] = $u->stats['hpAll']; - } - $var['text'] = ' '.$u->info['login'].' пополнил'.$var['sex'].' здоровье, Уровень Жизни +'.$var['hpp'].'% (+'.$var['hp'].'HP)'; - mysql_query('UPDATE `stats` SET `hpNow` = "'.$u->stats['hpNow'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('".$u->info['dnow']."','".$u->info['city']."','".$u->info['room']."','','','".$var['text']."','".time()."','6','0','1','1')"); - $errors .= ' '.$u->info['login'].' пополнил'.$var['sex'].' здоровье, Уровень Жизни +'.$var['hpp'].'% (+'.$var['hp'].'HP)'; - $var['obj']['use'] = $u->info['id']; - } - if( $var['obj']['use'] > 0 ) { - mysql_query('UPDATE `laba_obj` SET `use` = "'.$var['obj']['use'].'" WHERE `id` = "'.$var['obj']['id'].'" LIMIT 1'); - } - }else{ - $errors = 'Кто-то уже использовал это до Вас...'; - } - }else{ - $errors = 'Обьект не найден...'; - } - - unset($var); - } - - //Генирация карты - $mapsee = ''; - $real_x = $u->info['x']; - $real_y = $u->info['y']; - - if( $real_y < 6 ) { - $real_y = 6; - } - if( $real_x < 6 ) { - $real_x = 6; - } - if( $real_y > count($map_d) - 7 ) { - $real_y = count($map_d) - 7; - } - if( $real_x > count($map_d) - 7 ) { - $real_x = count($map_d) - 7; - } - - $objs = array( ); - - $sp = mysql_query('SELECT * FROM `laba_obj` WHERE `lib` = "'.$lab['id'].'" AND `x` > '.($real_x - 7).' AND `x` < '.($real_x + 7).' AND `y` > '.($real_y - 12).' AND `y` < '.($real_y + 12).' LIMIT 144'); - while( $pl = mysql_fetch_array($sp) ) { - $objs[$pl['x']][$pl['y']] = $pl; - } - - $i = 1; - $goodgoo = array( 1 => 0 , 2 => 0 , 3 => 0 , 4 => 0 ); - while( $i <= 4 ) { - $goto = array( 'x' => $u->info['y'] , 'y' => $u->info['x'] ); - if( $i == 1 ) { - $goto['x']--; - }elseif( $i == 2 ) { - $goto['y']--; - }elseif( $i == 3 ) { - $goto['x']++; - }elseif( $i == 4 ) { - $goto['y']++; - } - if( $map_d[$goto['y']][$goto['x']] == 0 && $goto['x'] > 0 && $goto['x'] < count($map_d)-1 && $u->info['timeGo'] <= time() ) { - $goodgoo[$i] = 1; - } - $i++; - } - - if( isset($_GET['goto']) ) { - $goto = array( 'x' => $u->info['y'] , 'y' => $u->info['x'] ); - if( $_GET['goto'] == 1 ) { - $goto['x']--; - }elseif( $_GET['goto'] == 2 ) { - $goto['y']--; - }elseif( $_GET['goto'] == 3 ) { - $goto['x']++; - }elseif( $_GET['goto'] == 4 ) { - $goto['y']++; - } - if( $goodgoo[$_GET['goto']] == 1 && $u->info['timeGo'] <= time() ) { - //переходим - $u->info['y'] = $goto['x']; - $u->info['x'] = $goto['y']; - $real_x = $u->info['x']; - $real_y = $u->info['y']; - $varos['timego'] = 5; - if( isset($varos['trap1']['time']) ) { - $varos['timego'] += 3; - } - if( isset($u->stats['speed_dungeon']) ) { - $varos['timego'] = $varos['timego']-floor($varos['timego']/100*$u->stats['speed_dungeon']); - if( $varos['timego'] < 1 ) { - $varos['timego'] = 1; - } - } - $u->info['timeGo'] = time()+$varos['timego']; - $u->info['timeGoL'] = time(); - mysql_query('UPDATE `stats` SET `x` = "'.$u->info['x'].'" ,`y` = "'.$u->info['y'].'",`timeGoL` = "'.$u->info['timeGoL'].'",`timeGo` = "'.$u->info['timeGo'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - } - - $tmdg = ($u->info['timeGo']-time()); - $tmdgl = ($u->info['timeGo']-$u->info['timeGoL']); - $tmdgp = floor(100-$tmdg/$tmdgl*100); if( $tmdgp < 1 ) { $tmdgp = 1; }elseif( $tmdgp > 100 ) { $tmdgp = 100; } - $tmdgm = 25*$tmdgl; - - $tmdg = floor(40/100*$tmdgp); - - if( $tmdg < 1 ) { - $tmdg = 1; - }elseif( $tmdg > 40 ) { - $tmdg = 40; - } - - if( $real_y < 6 ) { - $real_y = 6; - } - if( $real_x < 6 ) { - $real_x = 6; - } - if( $real_y > count($map_d) - 7 ) { - $real_y = count($map_d) - 7; - } - if( $real_x > count($map_d) - 7 ) { - $real_x = count($map_d) - 7; - } - - if( isset($_POST['exit']) ) { - if( $lab['users'] < 2 ) { - //Удаляем подземелье - mysql_query('DELETE FROM `laba_now` WHERE `id` = "'.$lab['id'].'" LIMIT 1'); - mysql_query('DELETE FROM `laba_map` WHERE `id` = "'.$lab['id'].'" LIMIT 1'); - mysql_query('DELETE FROM `laba_obj` WHERE `lib` = "'.$lab['id'].'"'); - mysql_query('DELETE FROM `laba_act` WHERE `lib` = "'.$lab['id'].'"'); - mysql_query('DELETE FROM `laba_itm` WHERE `lib` = "'.$lab['id'].'"'); - }else{ - $lab['users']--; - mysql_query('UPDATE `laba_now` SET `users` = "'.$lab['users'].'" WHERE `id` = "'.$lab['id'].'" LIMIT 1'); - } - mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `delete` < 1234567890 AND `inShop` = "0" AND `data` LIKE "%fromlaba=1%"'); - mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `delete` < 1234567890 AND `inShop` = "0" AND `data` LIKE "%nosavelaba=1%"'); - mysql_query('UPDATE `users` SET `room` = "369" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `dnow` = "0",`x`="0",`y`="0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - //Выбрасываем предметы которые из подземелья - - die(''); - } - - //Предметы в локации - $itms = ''; - - if(isset($objs[$u->info['x']][$u->info['y']]['id'])) { - $var = array(); - $mitm = $objs[$u->info['x']][$u->info['y']]; - if( $mitm['type'] == 6 ) { - //Случайный предмет - if( $mitm['vars'] < 25 ) { - $i = 0; - while( $i < $mitm['vars'] ) { - $var['add'] = $varsitm[rand(0,count($varsitm)-1)]; - if( $var['add'][1] > 0 ) { - $j = 0; - while( $j < $var['add'][1] ) { - mysql_query('INSERT INTO `laba_itm` (`uid`,`lib`,`time`,`itm`,`x`,`y`,`take`) VALUES ( - "'.$u->info['id'].'","'.$lab['id'].'","'.time().'","'.$var['add'][0].'","'.$u->info['x'].'","'.$u->info['y'].'","0" - )'); - $j++; - } - } - $i++; - } - }else{ - //Конкретный предмет - - } - mysql_query('DELETE FROM `laba_obj` WHERE `id` = "'.$mitm['id'].'" LIMIT 1'); - }elseif( $mitm['type'] == 2 ) { - if( $mitm['use'] == 0 ) { - $tbtl = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `team_win` = -1 AND `dn_id` = "'.$lab['id'].'" AND `x` = "'.$u->info['x'].'" AND `y` = "'.$u->info['y'].'" LIMIT 1')); - if( isset($tbtl['id']) ) { - //вступаем в поединок - mysql_query('UPDATE `users` SET `battle` = "'.$tbtl['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = 'Нападаем ... '; - }else{ - $var['bots'] = array( - array(357,5), - array(358,5), - array(359,5), - array(360,5), - array(361,3), - array(362,3), - array(363,3), - array(364,2), - array(365,5), - array(366,5), - array(367,3) - ); - //Создаем новый бой - if( $mitm['vars'] != NULL ) { - //Боты уже есть - }else{ - //Новый список составляем - $i = 0; - while( $i <= $u->info['level'] ) { - $var['ab'] = $var['bots'][rand(0,count($var['bots'])-1)]; - $mitm['vars'] .= '|'.$var['ab'][0]; - $i += $var['ab'][1]; - } - // - $mitm['vars'] = ltrim($mitm['vars'],'|'); - // - mysql_query('UPDATE `laba_obj` SET `vars` = "'.$mitm['vars'].'" WHERE `id` = "'.$mitm['id'].'" LIMIT 1'); - } - // - $mitm['vars'] = explode('|',$mitm['vars']); - // - if( count($mitm['vars']) > 0 ) { - $btl_id = 0; - $expB = 0; - $btld = array( - 'players'=>'', - 'timeout'=>180, - 'type'=>0, - 'invis'=>0, - 'noinc'=>0, - 'travmChance'=>0, - 'typeBattle'=>0, - 'addExp'=>$expB, - 'money'=>0 - ); - - $ins = mysql_query('INSERT INTO `battle` (`dungeon`,`dn_id`,`x`,`y`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( - "102", - "'.$lab['id'].'", - "'.$u->info['x'].'", - "'.$u->info['y'].'", - "'.$u->info['city'].'", - "'.time().'", - "'.$btld['players'].'", - "'.$btld['timeout'].'", - "'.$btld['type'].'", - "'.$btld['invis'].'", - "'.$btld['noinc'].'", - "'.$btld['travmChance'].'", - "'.$btld['typeBattle'].'", - "'.$btld['addExp'].'", - "'.$btld['money'].'")'); - $btl_id = mysql_insert_id(); - } - if( $btl_id > 0 ) { - // - $i = 0; - while( $i < count($mitm['vars']) ) { - - $k = $u->addNewbot($mitm['vars'][$i],NULL,NULL,$logins_bot); - $logins_bot = $k['logins_bot']; - if($k!=false) - { - $upd = mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'",`room` = "-100" WHERE `id` = "'.$k['id'].'" LIMIT 1'); - if($upd) - { - $upd = mysql_query('UPDATE `stats` SET `x`="'.$u->info['x'].'",`y`="'.$u->info['y'].'",`team` = "2" WHERE `id` = "'.$k['id'].'" LIMIT 1'); - if($upd) - { - $j++; - } - } - } - - $i++; - } - unset($logins_bot); - if($j>0) - { - mysql_query('UPDATE `users` SET `battle` = "'.$btl_id.'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = 'Нападаем ... '; - }else{ - $u->error = 'Не удалось напасть, ошибка обьекта нападения ...'; - } - } - // - } - } - }elseif( $mitm['type'] == 1 ) { - //Сундук - if( $mitm['use'] == 0 ) { - $itms .= ''; - }else{ - $itms .= ''; - } - }elseif( $mitm['type'] == 3 ) { - //хилка - if( $mitm['use'] == 0 ) { - $itms .= ''; - }else{ - $itms .= ''; - } - }elseif( $mitm['type'] == 4 ) { - if( $mitm['use'] == 0 ) { - //Ловушка - $var['trap1'] = mysql_fetch_array(mysql_query('SELECT `id`,`vals`,`time` FROM `laba_act` WHERE `uid` = "'.$u->info['id'].'" AND `lib` = "'.$lab['id'].'" AND `time` > "'.time().'" AND `vars` = "trap1" ORDER BY `time` DESC LIMIT 1')); - $var['time'] = rand(1,60); - if( isset($var['trap1']['id']) ) { - mysql_query('UPDATE `laba_act` SET `vals` = "'.( $var['trap1']['vals'] + $var['time'] ).'",`time` = "'.( $var['trap1']['time'] + $var['time']*60 ).'" WHERE `id` = "'.$var['trap1']['id'].'" LIMIT 1'); - }else{ - mysql_query('INSERT INTO `laba_act` (`uid`,`time`,`lib`,`vars`,`vals`) VALUES ( - "'.$u->info['id'].'","'.(time()+$var['time']*60).'","'.$lab['id'].'","trap1","'.$var['time'].'" - )'); - } - mysql_query('UPDATE `laba_obj` SET `use` = "'.$u->info['id'].'" WHERE `id` = "'.$mitm['id'].'" LIMIT 1'); - - $var['sex'] = ''; if($u->info['sex'] == 1) { $var['sex'] = 'а'; } - $var['text'] = ' '.$u->info['login'].' угодил'.$var['sex'].' в ловушку...'; - - $varos['trap1'] = mysql_fetch_array(mysql_query('SELECT `vals`,`time` FROM `laba_act` WHERE `uid` = "'.$u->info['id'].'" AND `lib` = "'.$lab['id'].'" AND `time` > "'.time().'" AND `vars` = "trap1" ORDER BY `time` DESC LIMIT 1')); - - mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('".$u->info['dnow']."','".$u->info['city']."','".$u->info['room']."','','','".$var['text']."','".time()."','6','0','1','1')"); - $errors .= ' '.$u->info['login'].' угодил'.$var['sex'].' в ловушку... Время перехода +3 секунды (Длительность: +'.$var['time'].' мин.)'; - } - }elseif( $mitm['type'] == 5 ) { - //Пандора - if( $mitm['use'] == 0 ) { - $itms .= ''; - }else{ - $itms .= ''; - } - } - unset($var); - } - - $sp = mysql_query('SELECT `i`.*,`m`.`name`,`m`.`img` FROM `laba_itm` AS `i` LEFT JOIN `items_main` AS `m` ON `m`.`id` = `i`.`itm` WHERE `i`.`lib` = "'.$lab['id'].'" AND `i`.`x` = "'.$u->info['x'].'" AND `i`.`y` = "'.$u->info['y'].'" AND `i`.`take` = "0"'); - while( $pl = mysql_fetch_array($sp) ) { - $itms .= ' '; - } - - if( $itms != '' ) { - $itms = 'В этой комнате находится:

    '.$itms.'
    '; - }elseif( $u->info['y'] == count($map_d)-2 ) { - //Выход нашелся! - if( $lab['users'] < 2 ) { - //Удаляем подземелье - mysql_query('DELETE FROM `laba_now` WHERE `id` = "'.$lab['id'].'" LIMIT 1'); - mysql_query('DELETE FROM `laba_map` WHERE `id` = "'.$lab['id'].'" LIMIT 1'); - mysql_query('DELETE FROM `laba_obj` WHERE `lib` = "'.$lab['id'].'"'); - mysql_query('DELETE FROM `laba_act` WHERE `lib` = "'.$lab['id'].'"'); - mysql_query('DELETE FROM `laba_itm` WHERE `lib` = "'.$lab['id'].'"'); - }else{ - $lab['users']--; - mysql_query('UPDATE `laba_now` SET `users` = "'.$lab['users'].'" WHERE `id` = "'.$lab['id'].'" LIMIT 1'); - } - $u->addItem(4392,$u->info['id'],'|fromlaba=1|nosale=1'); - mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `delete` < 1234567890 AND `inShop` = "0" AND `data` LIKE "%fromlaba=1%" AND `data` LIKE "%nosavelaba=1%"'); - mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `delete` < 1234567890 AND `inShop` = "0" AND `data` LIKE "%nosavelaba=1%"'); - mysql_query('UPDATE `users` SET `room` = "369" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `dnow` = "0",`x`="0",`y`="0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $r = ' Вы получили награду "Чек на предъявителя (50кр.)"'; - mysql_query("INSERT INTO `chat` (`typeTime`,`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','1','".$u->info['city']."','".$u->info['room']."','','".$u->info['login']."','".$r."','".time()."','6','0')"); - $r = ' Вы прошли лабиринт "Подземелья Драконов" и сохранили предметы из лабиринта!'; - mysql_query("INSERT INTO `chat` (`typeTime`,`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','1','".$u->info['city']."','".$u->info['room']."','','".$u->info['login']."','".$r."','".time()."','6','0')"); - //Выбрасываем предметы которые из подземелья - die(''); - } - - $sp = mysql_query('SELECT `s`.`x`,`s`.`y`,`u`.`id`,`u`.`login`,`u`.`level` FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `u`.`id` = `s`.`id` WHERE `s`.`dnow` = "'.$lab['id'].'" AND `s`.`id` != "'.$u->info['id'].'" LIMIT 5'); - $pi = 1; - while( $pl = mysql_fetch_array($sp) ) { - $objs[$pl['x']][$pl['y']] = array(2 => '
    '); //Персонаж 1 - $pi++; - } - - $objs[$u->info['x']][$u->info['y']] = array(2 => '
    '); //Персонаж 1 - $i = 0; - while( $i <= count($map_d) ) { - $j = 0; - while( $j < count($map_d[$i]) ) { - if( $i > $real_x - 6 && $i < $real_x + 6 && $j > $real_y - 6 && $j < $real_y + 6 ) { - if( $map_d[$i][$j] == 1 ) { - $mapsee .= '
    '.$objs[$i][$j][2].'
    '; - }else{ - if( !isset($objs[$i][$j]['id']) ) { - if( isset($objs[$i][$j][2]) ) { - // - }elseif( $j == 1 ) { - $objs[$i][$j][2] = '
    '; - }elseif( $j == count($map_d)-2 ) { - $objs[$i][$j][2] = '
    '; - } - }else{ - if( $objs[$i][$j]['use'] == 0 ) { - $objs[$i][$j][2] = '
    '; - }else{ - $objs[$i][$j][2] = ''; - } - } - $mapsee .= '
    '.$objs[$i][$j][2].'
    '; - } - } - $j++; - } - if( $i > $real_x - 6 && $i < $real_x + 6 ) { - $mapsee .= '
    '; - } - $i++; - } - $mapsee = '
    '.$mapsee.'
    '; - - - //Эффекты на персонаже - if( isset($varos['trap1']['vals']) && $varos['trap1']['vals'] > 0 ) { - $effed .= '
    - Время перехода +3 секунды (Осталось: '.$u->timeOut($varos['trap1']['time']-time()).')
    '; - } - unset($varos); -?> - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - -
      -
    error?>
    -
    Карта:
    - -
    -
    -
    - usersDng($lab['id']);?> -
    - -
    -
    - -
    - 0 ) { - echo 'Кол-во смертей: '.$dies.'/3
    '; - } - ?> - координаты : X=info['y']?> Y=info['x']?>
     
      
      - '; } ?> - -  
      - - - - - - - - - + + + -
    - - - - - - - -
         
                                                                                                                           
      
    - -
     
    - - - - - - - - - - - - - - - - - +
    + } else { + $errors = 'Обьект не найден...'; + } + + unset($var); + } + + //Генирация карты + $mapsee = ''; + $real_x = $u->info['x']; + $real_y = $u->info['y']; + + if ($real_y < 6) { + $real_y = 6; + } + if ($real_x < 6) { + $real_x = 6; + } + if ($real_y > count($map_d) - 7) { + $real_y = count($map_d) - 7; + } + if ($real_x > count($map_d) - 7) { + $real_x = count($map_d) - 7; + } + + $objs = []; + + $sp = mysql_query('SELECT * FROM `laba_obj` WHERE `lib` = "' . $lab['id'] . '" AND `x` > ' . ($real_x - 7) . ' AND `x` < ' . ($real_x + 7) . ' AND `y` > ' . ($real_y - 12) . ' AND `y` < ' . ($real_y + 12) . ' LIMIT 144'); + while ($pl = mysql_fetch_array($sp)) { + $objs[$pl['x']][$pl['y']] = $pl; + } + + $i = 1; + $goodgoo = [1 => 0, 2 => 0, 3 => 0, 4 => 0]; + while ($i <= 4) { + $goto = ['x' => $u->info['y'], 'y' => $u->info['x']]; + if ($i == 1) { + $goto['x']--; + } elseif ($i == 2) { + $goto['y']--; + } elseif ($i == 3) { + $goto['x']++; + } elseif ($i == 4) { + $goto['y']++; + } + if ($map_d[$goto['y']][$goto['x']] == 0 && $goto['x'] > 0 && $goto['x'] < count($map_d) - 1 && $u->info['timeGo'] <= time()) { + $goodgoo[$i] = 1; + } + $i++; + } + + if (isset($_GET['goto'])) { + $goto = ['x' => $u->info['y'], 'y' => $u->info['x']]; + if ($_GET['goto'] == 1) { + $goto['x']--; + } elseif ($_GET['goto'] == 2) { + $goto['y']--; + } elseif ($_GET['goto'] == 3) { + $goto['x']++; + } elseif ($_GET['goto'] == 4) { + $goto['y']++; + } + if ($goodgoo[$_GET['goto']] == 1 && $u->info['timeGo'] <= time()) { + //переходим + $u->info['y'] = $goto['x']; + $u->info['x'] = $goto['y']; + $real_x = $u->info['x']; + $real_y = $u->info['y']; + $varos['timego'] = 5; + if (isset($varos['trap1']['time'])) { + $varos['timego'] += 3; + } + if (isset($u->stats['speed_dungeon'])) { + $varos['timego'] = $varos['timego'] - floor($varos['timego'] / 100 * $u->stats['speed_dungeon']); + if ($varos['timego'] < 1) { + $varos['timego'] = 1; + } + } + $u->info['timeGo'] = time() + $varos['timego']; + $u->info['timeGoL'] = time(); + mysql_query('UPDATE `stats` SET `x` = "' . $u->info['x'] . '" ,`y` = "' . $u->info['y'] . '",`timeGoL` = "' . $u->info['timeGoL'] . '",`timeGo` = "' . $u->info['timeGo'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } + } + + $tmdg = ($u->info['timeGo'] - time()); + $tmdgl = ($u->info['timeGo'] - $u->info['timeGoL']); + $tmdgp = floor(100 - $tmdg / $tmdgl * 100); + if ($tmdgp < 1) { + $tmdgp = 1; + } elseif ($tmdgp > 100) { + $tmdgp = 100; + } + $tmdgm = 25 * $tmdgl; + + $tmdg = floor(40 / 100 * $tmdgp); + + if ($tmdg < 1) { + $tmdg = 1; + } elseif ($tmdg > 40) { + $tmdg = 40; + } + + if ($real_y < 6) { + $real_y = 6; + } + if ($real_x < 6) { + $real_x = 6; + } + if ($real_y > count($map_d) - 7) { + $real_y = count($map_d) - 7; + } + if ($real_x > count($map_d) - 7) { + $real_x = count($map_d) - 7; + } + + if (isset($_POST['exit'])) { + if ($lab['users'] < 2) { + //Удаляем подземелье + mysql_query('DELETE FROM `laba_now` WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `laba_map` WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `laba_obj` WHERE `lib` = "' . $lab['id'] . '"'); + mysql_query('DELETE FROM `laba_act` WHERE `lib` = "' . $lab['id'] . '"'); + mysql_query('DELETE FROM `laba_itm` WHERE `lib` = "' . $lab['id'] . '"'); + } else { + $lab['users']--; + mysql_query('UPDATE `laba_now` SET `users` = "' . $lab['users'] . '" WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); + } + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `delete` < 1234567890 AND `inShop` = "0" AND `data` LIKE "%fromlaba=1%"'); + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `delete` < 1234567890 AND `inShop` = "0" AND `data` LIKE "%nosavelaba=1%"'); + mysql_query('UPDATE `users` SET `room` = "369" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `dnow` = "0",`x`="0",`y`="0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + //Выбрасываем предметы которые из подземелья + + die(''); + } + + //Предметы в локации + $itms = ''; + + if (isset($objs[$u->info['x']][$u->info['y']]['id'])) { + $var = []; + $mitm = $objs[$u->info['x']][$u->info['y']]; + if ($mitm['type'] == 6) { + //Случайный предмет + if ($mitm['vars'] < 25) { + $i = 0; + while ($i < $mitm['vars']) { + $var['add'] = $varsitm[rand(0, count($varsitm) - 1)]; + if ($var['add'][1] > 0) { + $j = 0; + while ($j < $var['add'][1]) { + mysql_query('INSERT INTO `laba_itm` (`uid`,`lib`,`time`,`itm`,`x`,`y`,`take`) VALUES ( + "' . $u->info['id'] . '","' . $lab['id'] . '","' . time() . '","' . $var['add'][0] . '","' . $u->info['x'] . '","' . $u->info['y'] . '","0" + )'); + $j++; + } + } + $i++; + } + } else { + //Конкретный предмет + + } + mysql_query('DELETE FROM `laba_obj` WHERE `id` = "' . $mitm['id'] . '" LIMIT 1'); + } elseif ($mitm['type'] == 2) { + if ($mitm['use'] == 0) { + $tbtl = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `team_win` = -1 AND `dn_id` = "' . $lab['id'] . '" AND `x` = "' . $u->info['x'] . '" AND `y` = "' . $u->info['y'] . '" LIMIT 1')); + if (isset($tbtl['id'])) { + //вступаем в поединок + mysql_query('UPDATE `users` SET `battle` = "' . $tbtl['id'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + $u->error = 'Нападаем ... '; + } else { + $var['bots'] = [[357, 5], [358, 5], [359, 5], [360, 5], [361, 3], [362, 3], [363, 3], [364, 2], [365, 5], [366, 5], [367, 3]]; + //Создаем новый бой + if ($mitm['vars'] != null) { + //Боты уже есть + } else { + //Новый список составляем + $i = 0; + while ($i <= $u->info['level']) { + $var['ab'] = $var['bots'][rand(0, count($var['bots']) - 1)]; + $mitm['vars'] .= '|' . $var['ab'][0]; + $i += $var['ab'][1]; + } + // + $mitm['vars'] = ltrim($mitm['vars'], '|'); + // + mysql_query('UPDATE `laba_obj` SET `vars` = "' . $mitm['vars'] . '" WHERE `id` = "' . $mitm['id'] . '" LIMIT 1'); + } + // + $mitm['vars'] = explode('|', $mitm['vars']); + // + if (count($mitm['vars']) > 0) { + $btl_id = 0; + $expB = 0; + $btld = ['players' => '', 'timeout' => 180, 'type' => 0, 'invis' => 0, 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0]; + + $ins = mysql_query('INSERT INTO `battle` (`dungeon`,`dn_id`,`x`,`y`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( + "102", + "' . $lab['id'] . '", + "' . $u->info['x'] . '", + "' . $u->info['y'] . '", + "' . $u->info['city'] . '", + "' . time() . '", + "' . $btld['players'] . '", + "' . $btld['timeout'] . '", + "' . $btld['type'] . '", + "' . $btld['invis'] . '", + "' . $btld['noinc'] . '", + "' . $btld['travmChance'] . '", + "' . $btld['typeBattle'] . '", + "' . $btld['addExp'] . '", + "' . $btld['money'] . '")'); + $btl_id = mysql_insert_id(); + } + if ($btl_id > 0) { + // + $i = 0; + while ($i < count($mitm['vars'])) { + + $k = $u->addNewbot($mitm['vars'][$i], null, null, $logins_bot); + $logins_bot = $k['logins_bot']; + if ($k != false) { + $upd = mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '",`room` = "-100" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); + if ($upd) { + $upd = mysql_query('UPDATE `stats` SET `x`="' . $u->info['x'] . '",`y`="' . $u->info['y'] . '",`team` = "2" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); + if ($upd) { + $j++; + } + } + } + + $i++; + } + unset($logins_bot); + if ($j > 0) { + mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + $u->error = 'Нападаем ... '; + } else { + $u->error = 'Не удалось напасть, ошибка обьекта нападения ...'; + } + } + // + } + } + } elseif ($mitm['type'] == 1) { + //Сундук + if ($mitm['use'] == 0) { + $itms .= ''; + } else { + $itms .= ''; + } + } elseif ($mitm['type'] == 3) { + //хилка + if ($mitm['use'] == 0) { + $itms .= ''; + } else { + $itms .= ''; + } + } elseif ($mitm['type'] == 4) { + if ($mitm['use'] == 0) { + //Ловушка + $var['trap1'] = mysql_fetch_array(mysql_query('SELECT `id`,`vals`,`time` FROM `laba_act` WHERE `uid` = "' . $u->info['id'] . '" AND `lib` = "' . $lab['id'] . '" AND `time` > "' . time() . '" AND `vars` = "trap1" ORDER BY `time` DESC LIMIT 1')); + $var['time'] = rand(1, 60); + if (isset($var['trap1']['id'])) { + mysql_query('UPDATE `laba_act` SET `vals` = "' . ($var['trap1']['vals'] + $var['time']) . '",`time` = "' . ($var['trap1']['time'] + $var['time'] * 60) . '" WHERE `id` = "' . $var['trap1']['id'] . '" LIMIT 1'); + } else { + mysql_query('INSERT INTO `laba_act` (`uid`,`time`,`lib`,`vars`,`vals`) VALUES ( + "' . $u->info['id'] . '","' . (time() + $var['time'] * 60) . '","' . $lab['id'] . '","trap1","' . $var['time'] . '" + )'); + } + mysql_query('UPDATE `laba_obj` SET `use` = "' . $u->info['id'] . '" WHERE `id` = "' . $mitm['id'] . '" LIMIT 1'); + + $var['sex'] = ''; + if ($u->info['sex'] == 1) { + $var['sex'] = 'а'; + } + $var['text'] = '' . $u->info['login'] . ' угодил' . $var['sex'] . ' в ловушку...'; + + $varos['trap1'] = mysql_fetch_array(mysql_query('SELECT `vals`,`time` FROM `laba_act` WHERE `uid` = "' . $u->info['id'] . '" AND `lib` = "' . $lab['id'] . '" AND `time` > "' . time() . '" AND `vars` = "trap1" ORDER BY `time` DESC LIMIT 1')); + + mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $u->info['dnow'] . "','" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $var['text'] . "','" . time() . "','6','0','1','1')"); + $errors .= ' ' . $u->info['login'] . ' угодил' . $var['sex'] . ' в ловушку... Время перехода +3 секунды (Длительность: +' . $var['time'] . ' мин.)'; + } + } elseif ($mitm['type'] == 5) { + //Пандора + if ($mitm['use'] == 0) { + $itms .= ''; + } else { + $itms .= ''; + } + } + unset($var); + } + + $sp = mysql_query('SELECT `i`.*,`m`.`name`,`m`.`img` FROM `laba_itm` AS `i` LEFT JOIN `items_main` AS `m` ON `m`.`id` = `i`.`itm` WHERE `i`.`lib` = "' . $lab['id'] . '" AND `i`.`x` = "' . $u->info['x'] . '" AND `i`.`y` = "' . $u->info['y'] . '" AND `i`.`take` = "0"'); + while ($pl = mysql_fetch_array($sp)) { + $itms .= ' '; + } + + if ($itms != '') { + $itms = 'В этой комнате находится:

    ' . $itms . '
    '; + } elseif ($u->info['y'] == count($map_d) - 2) { + //Выход нашелся! + if ($lab['users'] < 2) { + //Удаляем подземелье + mysql_query('DELETE FROM `laba_now` WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `laba_map` WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); + mysql_query('DELETE FROM `laba_obj` WHERE `lib` = "' . $lab['id'] . '"'); + mysql_query('DELETE FROM `laba_act` WHERE `lib` = "' . $lab['id'] . '"'); + mysql_query('DELETE FROM `laba_itm` WHERE `lib` = "' . $lab['id'] . '"'); + } else { + $lab['users']--; + mysql_query('UPDATE `laba_now` SET `users` = "' . $lab['users'] . '" WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); + } + $u->addItem(4392, $u->info['id'], '|fromlaba=1|nosale=1'); + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `delete` < 1234567890 AND `inShop` = "0" AND `data` LIKE "%fromlaba=1%" AND `data` LIKE "%nosavelaba=1%"'); + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `delete` < 1234567890 AND `inShop` = "0" AND `data` LIKE "%nosavelaba=1%"'); + mysql_query('UPDATE `users` SET `room` = "369" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `stats` SET `dnow` = "0",`x`="0",`y`="0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + $r = ' Вы получили награду "Чек на предъявителя (50кр.)"'; + mysql_query("INSERT INTO `chat` (`typeTime`,`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "','" . $r . "','" . time() . "','6','0')"); + $r = ' Вы прошли лабиринт "Подземелья Драконов" и сохранили предметы из лабиринта!'; + mysql_query("INSERT INTO `chat` (`typeTime`,`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "','" . $r . "','" . time() . "','6','0')"); + //Выбрасываем предметы которые из подземелья + die(''); + } + + $sp = mysql_query('SELECT `s`.`x`,`s`.`y`,`u`.`id`,`u`.`login`,`u`.`level` FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `u`.`id` = `s`.`id` WHERE `s`.`dnow` = "' . $lab['id'] . '" AND `s`.`id` != "' . $u->info['id'] . '" LIMIT 5'); + $pi = 1; + while ($pl = mysql_fetch_array($sp)) { + $objs[$pl['x']][$pl['y']] = [2 => '
    ']; //Персонаж 1 + $pi++; + } + + $objs[$u->info['x']][$u->info['y']] = [2 => '
    ']; //Персонаж 1 + $i = 0; + while ($i <= count($map_d)) { + $j = 0; + while ($j < count($map_d[$i])) { + if ($i > $real_x - 6 && $i < $real_x + 6 && $j > $real_y - 6 && $j < $real_y + 6) { + if ($map_d[$i][$j] == 1) { + $mapsee .= '
    ' . $objs[$i][$j][2] . '
    '; + } else { + if (!isset($objs[$i][$j]['id'])) { + if (isset($objs[$i][$j][2])) { + // + } elseif ($j == 1) { + $objs[$i][$j][2] = '
    '; + } elseif ($j == count($map_d) - 2) { + $objs[$i][$j][2] = '
    '; + } + } else { + if ($objs[$i][$j]['use'] == 0) { + $objs[$i][$j][2] = '
    '; + } else { + $objs[$i][$j][2] = ''; + } + } + $mapsee .= '
    ' . $objs[$i][$j][2] . '
    '; + } + } + $j++; + } + if ($i > $real_x - 6 && $i < $real_x + 6) { + $mapsee .= '
    '; + } + $i++; + } + $mapsee = '
    ' . $mapsee . '
    '; + + + //Эффекты на персонаже + if (isset($varos['trap1']['vals']) && $varos['trap1']['vals'] > 0) { + $effed .= '
    - Время перехода +3 секунды (Осталось: ' . $u->timeOut($varos['trap1']['time'] - time()) . ')
    '; + } + unset($varos); + ?> + + + +
    + + + + + + + + - - - -
    + - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + -
    Вверх
      +
    error ?>
    +
    Карта:
    + +
    +
    +
    + usersDng($lab['id']); ?> +
    + +
    +
    + +
    + 0) { + echo 'Кол-во смертей: ' . $dies . '/3
    '; + } + ?> + координаты : X=info['y'] ?> Y=info['x'] ?>
     
     
    ВлевоОбновитьВправо
    Вниз
     
      + '; + } ?> + +  
    - - - - - - - -
    -
    - -
    -
    +
      + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + +
          +
    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +    +
    +
      
    + +
     
    +
    + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Вверх
    ВлевоОбновитьВправо
    Вниз
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    +
    - + \ No newline at end of file diff --git a/modules_data/location/dungeon.php b/modules_data/location/dungeon.php index 1674acfb..763fd48a 100644 --- a/modules_data/location/dungeon.php +++ b/modules_data/location/dungeon.php @@ -1,1218 +1,1382 @@ var elem = document.getElementById('se-pre-con'); elem.parentNode.removeChild(elem); "; -if(!defined('GAME')){ - die(); +if (!defined('GAME')) { + die(); } -if($u->room['file']=='dungeon'){ -$pd = array( - 1 =>0, - 2 =>0, - 3 =>0, - 4 =>0, - 5 =>0, - 6 =>0, - 7 =>0, - 8 =>0, - 9 =>0, //передняя стенка, в 2-х шагах - 10=>0, - 11=>0, - 12=>0, - 13=>0, - 14=>0, - 15=>0, - 16=>0, - 17=>0, - 18=>0, - 19=>0, - 20=>0, - 21=>0, - 22=>0, - 23=>0, - /* Растояние: 1 шаг */ - 24=>0, //стена прямо слева от персонажа (1) - 25=>0, //стена прямо справа от персонажа (1) - 26=>0, //стена прямо перед персонажем (1) - 27=>0, //стена слева от персонажа (1) - 28=>0 //стена справа от персонажа (1) -); +if ($u->room['file'] == 'dungeon') { + $pd = [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0, 6 => 0, 7 => 0, 8 => 0, 9 => 0, //передняя стенка, в 2-х шагах + 10 => 0, 11 => 0, 12 => 0, 13 => 0, 14 => 0, 15 => 0, 16 => 0, 17 => 0, 18 => 0, 19 => 0, 20 => 0, 21 => 0, 22 => 0, 23 => 0, /* Растояние: 1 шаг */ + 24 => 0, //стена прямо слева от персонажа (1) + 25 => 0, //стена прямо справа от персонажа (1) + 26 => 0, //стена прямо перед персонажем (1) + 27 => 0, //стена слева от персонажа (1) + 28 => 0 //стена справа от персонажа (1) + ]; -if(isset($_POST['go_to_admin']) && $u->info['admin'] == 1 && $u->info['login']=='Crowley') { - mysql_query('UPDATE `stats` SET `x` = "'.round((int)$_POST['g__x']).'", `y` = "'.round((int)$_POST['g__y']).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if($_POST['g__restorebot']) { - mysql_query('UPDATE `dungeon_bots` SET `delete` = "0" WHERE `dn` = "'.$u->info['dnow'].'" AND `delete` = 1 LIMIT 50'); - } - header('Location: /main.php'); -} + if (isset($_POST['go_to_admin']) && $u->info['admin'] == 1 && $u->info['login'] == 'Crowley') { + mysql_query('UPDATE `stats` SET `x` = "' . round((int)$_POST['g__x']) . '", `y` = "' . round((int)$_POST['g__y']) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + if ($_POST['g__restorebot']) { + mysql_query('UPDATE `dungeon_bots` SET `delete` = "0" WHERE `dn` = "' . $u->info['dnow'] . '" AND `delete` = 1 LIMIT 50'); + } + header('Location: /main.php'); + } -if(isset($_GET['back'])) { - $dp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_now` WHERE `id` = "'.$u->info['dnow'].'" LIMIT 1')); - $dp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "'.$dp['id2'].'" AND `x` = "'.$u->info['x'].'" AND `y` ="'.$u->info['y'].'" LIMIT 1')); - if( $dp['file']!='0' ) { - $file = explode('=',$dp['file']); - if(isset($file[1])){ - if($file[3]<1 || $file[3]>4){ - $file[3] = 1; - } - mysql_query('UPDATE `stats` SET `x` = "'.$file[1].'",`y` = "'.$file[2].'",`s` = "'.$file[3].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->info['x'] = $file[1]; - $u->info['y'] = $file[2]; - $u->info['s'] = $file[3]; - } - } - unset($dp); -} + if (isset($_GET['back'])) { + $dp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_now` WHERE `id` = "' . $u->info['dnow'] . '" LIMIT 1')); + $dp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "' . $dp['id2'] . '" AND `x` = "' . $u->info['x'] . '" AND `y` ="' . $u->info['y'] . '" LIMIT 1')); + if ($dp['file'] != '0') { + $file = explode('=', $dp['file']); + if (isset($file[1])) { + if ($file[3] < 1 || $file[3] > 4) { + $file[3] = 1; + } + mysql_query('UPDATE `stats` SET `x` = "' . $file[1] . '",`y` = "' . $file[2] . '",`s` = "' . $file[3] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + $u->info['x'] = $file[1]; + $u->info['y'] = $file[2]; + $u->info['s'] = $file[3]; + } + } + unset($dp); + } -require_once('_incl_data/class/__dungeon.php'); + $d = new Dungeon; + $d->start(); -if(!isset($d->info['id'])) { - $_GET['exitd'] = true; -} + if (!isset($d->info['id'])) { + $_GET['exitd'] = true; + } -$dies = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "'.$u->info['id'].'" AND `dn` = "'.$u->info['dnow'].'" AND `vars` = "die" LIMIT 1')); -$dies = $dies[0]; + $dies = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `dn` = "' . $u->info['dnow'] . '" AND `vars` = "die" LIMIT 1')); + $dies = $dies[0]; -if($dies >= 3) { - $_GET['exitd'] = true; -} + if ($dies >= 3) { + $_GET['exitd'] = true; + } -$d->point = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "'.$d->info['id2'].'" AND `x` = "'.$u->info['x'].'" AND `y` ="'.$u->info['y'].'" LIMIT 1')); + $d->point = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "' . $d->info['id2'] . '" AND `x` = "' . $u->info['x'] . '" AND `y` ="' . $u->info['y'] . '" LIMIT 1')); -if(!isset($d->point['id'])) { - $d->point['css'] = 'css'; -} + if (!isset($d->point['id'])) { + $d->point['css'] = 'css'; + } -if(isset($_GET['new_leader'])) { - echo $d->n_lead($_GET['new_leader'], $u->info['id']); -} + if (isset($_GET['new_leader'])) { + echo $d->n_lead($_GET['new_leader'], $u->info['id']); + } -if(isset($_GET['go_from_psh'])) { - echo $d->go_to_hell($_GET['go_from_psh'], $u->info['id']); -} + if (isset($_GET['go_from_psh'])) { + echo $d->go_to_hell($_GET['go_from_psh'], $u->info['id']); + } + if ($u->info['dnow'] == 0) { + //выкидываем из пещеры + die('Ошибки инициализации'); + } else { -if($u->info['dnow']==0){ - //выкидываем из пещеры - die('Ошибки инициализации'); -}else{ - - if($d->info['id2'] == 15) { - // - $sb = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `item_id` = 4910 LIMIT 1')); - // - if(isset($_GET['atackpuck'])) { - //Атакуем! - $shbtu = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`battle` FROM `users` WHERE `id` = "'.mysql_real_escape_string($_GET['atackpuck']).'" LIMIT 1')); - if(isset($shbtu['id'])) { - $shbts = mysql_fetch_array(mysql_query('SELECT `id`,`x`,`y`,`dnow` FROM `stats` WHERE `id` = "'.$shbtu['id'].'" LIMIT 1')); - if($shbts['dnow'] == $u->info['dnow']) { - $tm11 = mysql_fetch_array(mysql_query('SELECT * FROM `katok_now` WHERE `clone` = "'.$u->info['id'].'" LIMIT 1')); - $tm22 = mysql_fetch_array(mysql_query('SELECT * FROM `katok_now` WHERE `clone` = "'.$shbtu['id'].'" LIMIT 1')); - if($tm11['team'] == $tm22['team']) { - $d->error = 'Вы не можете атаковать игрока из своей команды!'; - }elseif($shbts['x'] == $u->info['x'] || $shbts['x'] == $u->info['x']-1 || $shbts['x'] == $u->info['x']+1) { - if($shbts['x'] == $u->info['x'] || $shbts['x'] == $u->info['x']-1 || $shbts['x'] == $u->info['x']+1) { - // - if($shbtu['battle'] > 0) { - $d->error = 'Вмешиваемся в бой против "'.$shbtu['login'].'"!'; - }else{ - $d->error = 'Атакуем "'.$shbtu['login'].'" прямо сейчас!'; - } - // - }else{ - $d->error = '"'.$shbtu['login'].'" находится далеко от вас для паса!'; - } - }else{ - $d->error = '"'.$shbtu['login'].'" находится далеко от вас для паса!'; - } - }else{ - $d->error = 'Игрок не найден на хоккейном поле...'; - } - }else{ - $d->error = 'Игрок не найден на хоккейном поле!'; - } - }elseif(isset($_GET['addpuck']) && isset($sb['id'])) { - //Передаем шайбу - $shbtu = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`battle` FROM `users` WHERE `id` = "'.mysql_real_escape_string($_GET['addpuck']).'" LIMIT 1')); - if(isset($shbtu['id'])) { - $shbts = mysql_fetch_array(mysql_query('SELECT `id`,`x`,`y`,`dnow` FROM `stats` WHERE `id` = "'.$shbtu['id'].'" LIMIT 1')); - if($shbts['dnow'] == $u->info['dnow']) { - $tm11 = mysql_fetch_array(mysql_query('SELECT * FROM `katok_now` WHERE `clone` = "'.$u->info['id'].'" LIMIT 1')); - $tm22 = mysql_fetch_array(mysql_query('SELECT * FROM `katok_now` WHERE `clone` = "'.$shbtu['id'].'" LIMIT 1')); - if($tm11['team'] != $tm22['team']) { - $d->error = 'Вы не можете дать пас сопернику!'; - }elseif($shbts['x'] == $u->info['x'] || $shbts['x'] == $u->info['x']-1 || $shbts['x'] == $u->info['x']+1) { - if($shbts['x'] == $u->info['x'] || $shbts['x'] == $u->info['x']-1 || $shbts['x'] == $u->info['x']+1) { - // - if($shbtu['battle'] > 0) { - $d->error = '"'.$shbtu['login'].'" находится в конфликте с соперником!'; - }else{ - mysql_query('UPDATE `items_users` SET `uid` = "'.$shbtu['id'].'" WHERE `id` = "'.$sb['id'].'" LIMIT 1'); - unset($sb); - $d->error = '"'.$shbtu['login'].'" получает пас и ведёт шайбу!'; - $d->sys_chat(''.$u->info['login'].' передаем пас игроку '.$shbtu['login'].'!'); - } - // - }else{ - $d->error = '"'.$shbtu['login'].'" находится далеко от вас для паса!'; - } - }else{ - $d->error = '"'.$shbtu['login'].'" находится далеко от вас для паса!'; - } - }else{ - $d->error = 'Игрок не найден на хоккейном поле...'; - } - }else{ - $d->error = 'Игрок не найден на хоккейном поле!'; - } - } - //Каток - $tm1win = mysql_fetch_array(mysql_query('SELECT SUM(`win`) FROM `katok_now` WHERE `team` = 1')); - $tm2win = mysql_fetch_array(mysql_query('SELECT SUM(`win`) FROM `katok_now` WHERE `team` = 2')); - $tm1win = 0+$tm1win[0]; - $tm2win = 0+$tm2win[0]; - $tmwin = 0; - if($tm1win >= 2) { - $tmwin = 1; - }elseif($tm2win >= 2) { - $tmwin = 2; - } - if($tmwin > 0) { - $sp = mysql_query('SELECT * FROM `katok_now`'); - while( $pl = mysql_fetch_array($sp) ) { - //Портируем персонажа обратно - mysql_query('UPDATE `users` SET `inUser` = 0, `room` = 409 WHERE `inUser` = "'.$pl['clone'].'" LIMIT 1'); + if ($d->info['id2'] == 15) { + // + $sb = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = 0 AND `item_id` = 4910 LIMIT 1')); + // + if (isset($_GET['atackpuck'])) { + //Атакуем! + $shbtu = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`battle` FROM `users` WHERE `id` = "' . mysql_real_escape_string($_GET['atackpuck']) . '" LIMIT 1')); + if (isset($shbtu['id'])) { + $shbts = mysql_fetch_array(mysql_query('SELECT `id`,`x`,`y`,`dnow` FROM `stats` WHERE `id` = "' . $shbtu['id'] . '" LIMIT 1')); + if ($shbts['dnow'] == $u->info['dnow']) { + $tm11 = mysql_fetch_array(mysql_query('SELECT * FROM `katok_now` WHERE `clone` = "' . $u->info['id'] . '" LIMIT 1')); + $tm22 = mysql_fetch_array(mysql_query('SELECT * FROM `katok_now` WHERE `clone` = "' . $shbtu['id'] . '" LIMIT 1')); + if ($tm11['team'] == $tm22['team']) { + $d->error = 'Вы не можете атаковать игрока из своей команды!'; + } elseif ($shbts['x'] == $u->info['x'] || $shbts['x'] == $u->info['x'] - 1 || $shbts['x'] == $u->info['x'] + 1) { + if ($shbts['x'] == $u->info['x'] || $shbts['x'] == $u->info['x'] - 1 || $shbts['x'] == $u->info['x'] + 1) { + // + if ($shbtu['battle'] > 0) { + $d->error = 'Вмешиваемся в бой против "' . $shbtu['login'] . '"!'; + } else { + $d->error = 'Атакуем "' . $shbtu['login'] . '" прямо сейчас!'; + } + // + } else { + $d->error = '"' . $shbtu['login'] . '" находится далеко от вас для паса!'; + } + } else { + $d->error = '"' . $shbtu['login'] . '" находится далеко от вас для паса!'; + } + } else { + $d->error = 'Игрок не найден на хоккейном поле...'; + } + } else { + $d->error = 'Игрок не найден на хоккейном поле!'; + } + } elseif (isset($_GET['addpuck']) && isset($sb['id'])) { + //Передаем шайбу + $shbtu = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`battle` FROM `users` WHERE `id` = "' . mysql_real_escape_string($_GET['addpuck']) . '" LIMIT 1')); + if (isset($shbtu['id'])) { + $shbts = mysql_fetch_array(mysql_query('SELECT `id`,`x`,`y`,`dnow` FROM `stats` WHERE `id` = "' . $shbtu['id'] . '" LIMIT 1')); + if ($shbts['dnow'] == $u->info['dnow']) { + $tm11 = mysql_fetch_array(mysql_query('SELECT * FROM `katok_now` WHERE `clone` = "' . $u->info['id'] . '" LIMIT 1')); + $tm22 = mysql_fetch_array(mysql_query('SELECT * FROM `katok_now` WHERE `clone` = "' . $shbtu['id'] . '" LIMIT 1')); + if ($tm11['team'] != $tm22['team']) { + $d->error = 'Вы не можете дать пас сопернику!'; + } elseif ($shbts['x'] == $u->info['x'] || $shbts['x'] == $u->info['x'] - 1 || $shbts['x'] == $u->info['x'] + 1) { + if ($shbts['x'] == $u->info['x'] || $shbts['x'] == $u->info['x'] - 1 || $shbts['x'] == $u->info['x'] + 1) { + // + if ($shbtu['battle'] > 0) { + $d->error = '"' . $shbtu['login'] . '" находится в конфликте с соперником!'; + } else { + mysql_query('UPDATE `items_users` SET `uid` = "' . $shbtu['id'] . '" WHERE `id` = "' . $sb['id'] . '" LIMIT 1'); + unset($sb); + $d->error = '"' . $shbtu['login'] . '" получает пас и ведёт шайбу!'; + $d->sys_chat('' . $u->info['login'] . ' передаем пас игроку ' . $shbtu['login'] . '!'); + } + // + } else { + $d->error = '"' . $shbtu['login'] . '" находится далеко от вас для паса!'; + } + } else { + $d->error = '"' . $shbtu['login'] . '" находится далеко от вас для паса!'; + } + } else { + $d->error = 'Игрок не найден на хоккейном поле...'; + } + } else { + $d->error = 'Игрок не найден на хоккейном поле!'; + } + } + //Каток + $tm1win = mysql_fetch_array(mysql_query('SELECT SUM(`win`) FROM `katok_now` WHERE `team` = 1')); + $tm2win = mysql_fetch_array(mysql_query('SELECT SUM(`win`) FROM `katok_now` WHERE `team` = 2')); + $tm1win = 0 + $tm1win[0]; + $tm2win = 0 + $tm2win[0]; + $tmwin = 0; + if ($tm1win >= 2) { + $tmwin = 1; + } elseif ($tm2win >= 2) { + $tmwin = 2; + } + if ($tmwin > 0) { + $sp = mysql_query('SELECT * FROM `katok_now`'); + while ($pl = mysql_fetch_array($sp)) { + //Портируем персонажа обратно + mysql_query('UPDATE `users` SET `inUser` = 0, `room` = 409 WHERE `inUser` = "' . $pl['clone'] . '" LIMIT 1'); + + //Удаляем текущего бота и инвентарь + mysql_query('DELETE FROM `users` WHERE `id` = "' . $pl['clone'] . '" LIMIT 1'); + mysql_query('DELETE FROM `stats` WHERE `id` = "' . $pl['clone'] . '" LIMIT 1'); + mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $pl['clone'] . '"'); + mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $pl['clone'] . '"'); + + // + mysql_query('DELETE FROM `katok_now` WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + // + } + header('location: https://new-combats.com/main.php'); + die('Матч закончился! Победила команда №' . $tmwin . ''); + } + } + + if ($d->info['bsid'] == 0 && $d->info['id2'] != 106 && isset($_GET['exitd'])) { + //Удаляем обьекты и т.д. из старых пещер + $rb = 321; // Магический портал + if ($u->info['room'] == 304) { + $rb = 209; // Вход в ледяную пещеру + } elseif ($u->info['room'] == 396) { + $rb = 321; // Канализация (Ангелс) + } elseif ($u->info['room'] == 398) { + $rb = 321; // Все пещеры + } elseif ($d->info['id2'] == 3) { + $rb = 321; // Вход в Катакомбы + } elseif ($d->info['id2'] == 1) { + $rb = 321; // Вход в Канализацию + } elseif ($d->info['id2'] == 13) { + $rb = 321; // Гора Легиона + } elseif ($d->info['id2'] == 12) { + $rb = 321; // Вход в Пещеру Тысячи Проклятий + } elseif ($d->info['id2'] == 101) { + $rb = 321; // Вход в Бездну + } elseif ($d->info['id2'] == 444) { + $rb = 321; // Вход в Бездну + } elseif ($d->info['id2'] == 104) { + $rb = 2; // Вход в Шахты (зал воинов) + } + $sp = mysql_query('SELECT * FROM `dungeon_now` WHERE `time_finish` = "0" LIMIT 50'); + while ($pl = mysql_fetch_array($sp)) { + $cn = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dnow` = "' . $pl['id'] . '" LIMIT 1')); + if (!isset($cn['id'])) { + mysql_query('DELETE FROM `dungeon_bots` WHERE `dn` = "' . $pl['id'] . '" AND `for_dn` = "0"'); + mysql_query('DELETE FROM `dungeon_obj` WHERE `dn` = "' . $pl['id'] . '" AND `for_dn` = "0"'); + mysql_query('DELETE FROM `dungeon_items` WHERE `dn` = "' . $pl['id'] . '" AND `for_dn` = "0"'); + mysql_query('DELETE FROM `dungeon_bots` WHERE `dn` = "' . $pl['id'] . '" AND `for_dn` = "0"'); + mysql_query('DELETE FROM `dungeon_actions` WHERE `dn` = "' . $pl['id'] . '"'); + mysql_query('UPDATE `dungeon_now` SET `time_finish` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + } + } + $cn = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dnow` = "' . $d->info['id'] . '" AND `id` != "' . $u->info['id'] . '" ORDER BY `exp` DESC LIMIT 1')); + if (isset($cn['id'])) { + if ($d->info['uid'] == $u->info['id']) { + $cn = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`sex` FROM `users` WHERE `id` = "' . $cn['id'] . '" LIMIT 1')); + mysql_query('UPDATE `dungeon_now` SET `uid` = "' . $cn['id'] . '" WHERE `id` = "' . $d->info['id'] . '" LIMIT 1'); + if ($cn['sex'] == 0) { + if ($u->info['sex'] == 0) { + $d->sys_chat('' . $u->info['login'] . ' покинул подземелье, новым лидером группы стал ' . $cn['login'] . ''); + } else { + $d->sys_chat('' . $u->info['login'] . ' покинула подземелье, новым лидером группы стал ' . $cn['login'] . ''); + } + } else { + if ($u->info['sex'] == 0) { + $d->sys_chat('' . $u->info['login'] . ' покинул подземелье, новым лидером группы стала ' . $cn['login'] . ''); + } else { + $d->sys_chat('' . $u->info['login'] . ' покинула подземелье, новым лидером группы стала ' . $cn['login'] . ''); + } + } + } else { + if ($u->info['sex'] == 0) { + $d->sys_chat('' . $u->info['login'] . ' покинул подземелье!'); + } else { + $d->sys_chat('' . $u->info['login'] . ' покинула подземелье!'); + } + } + } + + $city = mysql_fetch_assoc(mysql_query('SELECT `id`, `city` FROM `room` WHERE `id` = "' . $rb . '" LIMIT 1')); + mysql_query('UPDATE `stats` SET `dnow` = "0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `room` = "' . $rb . '", `city`="' . $city['city'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + //удаляем все предметы которые пропадают после выхода из пещеры + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `dn_delete` = "1" LIMIT 1000'); + + mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "1189" OR `item_id` = "4447" OR `item_id` = "1174") LIMIT 1000'); - //Удаляем текущего бота и инвентарь - mysql_query('DELETE FROM `users` WHERE `id` = "'.$pl['clone'].'" LIMIT 1'); - mysql_query('DELETE FROM `stats` WHERE `id` = "'.$pl['clone'].'" LIMIT 1'); - mysql_query('DELETE FROM `items_users` WHERE `uid` = "'.$pl['clone'].'"'); - mysql_query('DELETE FROM `eff_users` WHERE `uid` = "'.$pl['clone'].'"'); - - // - mysql_query('DELETE FROM `katok_now` WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - // - if( $pl['team'] == $tmwin ) { - //Выдаем награду за победу! - - } - // - } - header('location: https://new-combats.com/main.php'); - die('Матч закончился! Победила команда №'.$tmwin.''); - } - } - - if($d->info['bsid']==0 && $d->info['id2'] != 106){ - if(isset($_GET['exitd'])) { - //Удаляем обьекты и т.д. из старых пещер - $rb = 321; // Магический портал - if($u->info['room']==304){ - $rb = 209; // Вход в ледяную пещеру - }elseif($u->info['room']==396){ - $rb = 321; // Канализация (Ангелс) - }elseif($u->info['room']==398){ - $rb = 321; // Все пещеры - }elseif($d->info['id2']==3){ - $rb = 321; // Вход в Катакомбы - }elseif($d->info['id2']==1){ - $rb = 321; // Вход в Канализацию - }elseif($d->info['id2']==13){ - $rb = 321; // Гора Легиона - }elseif($d->info['id2']==12){ - $rb = 321; // Вход в Пещеру Тысячи Проклятий - }elseif($d->info['id2']==101){ - $rb = 321; // Вход в Бездну - }elseif($d->info['id2']==444){ - $rb = 321; // Вход в Бездну - }elseif($d->info['id2']==104){ - $rb = 2; // Вход в Шахты (зал воинов) - } - $sp = mysql_query('SELECT * FROM `dungeon_now` WHERE `time_finish` = "0" LIMIT 50'); - while($pl = mysql_fetch_array($sp)) { - $cn = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dnow` = "'.$pl['id'].'" LIMIT 1')); - if(!isset($cn['id'])) { - mysql_query('DELETE FROM `dungeon_bots` WHERE `dn` = "'.$pl['id'].'" AND `for_dn` = "0"'); - mysql_query('DELETE FROM `dungeon_obj` WHERE `dn` = "'.$pl['id'].'" AND `for_dn` = "0"'); - mysql_query('DELETE FROM `dungeon_items` WHERE `dn` = "'.$pl['id'].'" AND `for_dn` = "0"'); - mysql_query('DELETE FROM `dungeon_bots` WHERE `dn` = "'.$pl['id'].'" AND `for_dn` = "0"'); - mysql_query('DELETE FROM `dungeon_actions` WHERE `dn` = "'.$pl['id'].'"'); - mysql_query('UPDATE `dungeon_now` SET `time_finish` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - } - } - $cn = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dnow` = "'.$d->info['id'].'" AND `id` != "'.$u->info['id'].'" ORDER BY `exp` DESC LIMIT 1')); - if(isset($cn['id'])) { - if( $d->info['uid'] == $u->info['id'] ) { - $cn = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`sex` FROM `users` WHERE `id` = "'.$cn['id'].'" LIMIT 1')); - mysql_query('UPDATE `dungeon_now` SET `uid` = "'.$cn['id'].'" WHERE `id` = "'.$d->info['id'].'" LIMIT 1'); - if( $cn['sex'] == 0 ) { - if( $u->info['sex'] == 0 ) { - $d->sys_chat(''.$u->info['login'].' покинул подземелье, новым лидером группы стал '.$cn['login'].''); - }else{ - $d->sys_chat(''.$u->info['login'].' покинула подземелье, новым лидером группы стал '.$cn['login'].''); - } - }else{ - if( $u->info['sex'] == 0 ) { - $d->sys_chat(''.$u->info['login'].' покинул подземелье, новым лидером группы стала '.$cn['login'].''); - }else{ - $d->sys_chat(''.$u->info['login'].' покинула подземелье, новым лидером группы стала '.$cn['login'].''); - } - } - }else{ - if( $u->info['sex'] == 0 ) { - $d->sys_chat(''.$u->info['login'].' покинул подземелье!'); - }else{ - $d->sys_chat(''.$u->info['login'].' покинула подземелье!'); - } - } - } - - $city = mysql_fetch_assoc(mysql_query('SELECT `id`, `city` FROM `room` WHERE `id` = "'.$rb.'" LIMIT 1')); - mysql_query('UPDATE `stats` SET `dnow` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `room` = "'.$rb.'", `city`="'.$city['city'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - //удаляем все предметы которые пропадают после выхода из пещеры - mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `dn_delete` = "1" LIMIT 1000'); - - mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND (`item_id` = "1189" OR `item_id` = "4447" OR `item_id` = "1174") LIMIT 1000'); - //header("Location: main.php"); echo ''; - die(); - } - } -} + die(); + } + } -if( $d->point['fileadd']==1 && $d->point['file']!='0' && $d->point['file']!=''){ - $file = explode('=',$d->point['file']); - if( file_exists('modules_data/location/'.$file[0]) ) { - $information = ''; - include_once('modules_data/location/'.$file[0]); - #header('Location: /main.php'); - } else { - if( $file[3]<1 || $file[3]>4 ) { - $file[3] = 1; - } - echo '

    Локация "'.str_replace('.php','',$file[0]).'" не определена, вернуться назад
    '; - mysql_query('UPDATE `stats` SET `x` = "'.$file[1].'",`y` = "'.$file[2].'",`s` = "'.$file[3].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } -} + if ($d->point['fileadd'] == 1 && $d->point['file'] != '0' && $d->point['file'] != '') { + $file = explode('=', $d->point['file']); + if (file_exists('modules_data/location/' . $file[0])) { + $information = ''; + include_once('modules_data/location/' . $file[0]); + #header('Location: /main.php'); + } else { + if ($file[3] < 1 || $file[3] > 4) { + $file[3] = 1; + } + echo '

    Локация "' . str_replace('.php', '', $file[0]) . '" не определена, вернуться назад
    '; + mysql_query('UPDATE `stats` SET `x` = "' . $file[1] . '",`y` = "' . $file[2] . '",`s` = "' . $file[3] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } + } -if( $d->point['fileadd']==0 && $d->point['file']!='0' && $d->point['file']!=''){ - $file = explode('=',$d->point['file']); - if( file_exists('modules_data/location/'.$file[0]) ) { - require_once('modules_data/location/'.$file[0]); - } else { - if( $file[3]<1 || $file[3]>4 ) { - $file[3] = 1; - } - echo '

    Локация "'.str_replace('.php','',$file[0]).'" не определена, вернуться назад
    '; - mysql_query('UPDATE `stats` SET `x` = "'.$file[1].'",`y` = "'.$file[2].'",`s` = "'.$file[3].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } -} else { -?> - - + - - - -
    - - - - - -
    -

     error)){ echo ''.$d->error.'
    '; } ?>

    -info['bsid']==0 && $d->info['id2'] != 106){ ?>

    Выйти

    -
    - - '; + } else { + $itmAllSee = $itmAll[2]; + } + $itmAllSee = str_replace("'", "", $itmAllSee); + $itmAllSee = str_replace('"', '"', $itmAllSee); + $itmAllSee = str_replace("\n", '', $itmAllSee); + $itmAllSee = str_replace("\r", '', $itmAllSee); + $js .= '$(\'#inv' . $i . '\').html(\'' . $itmAllSee . '\');'; + $i++; + } + unset($itmAll, $itmAllSee); + } + if ($_POST['id'] == 'minireflesh' || $_POST['id'] == 'reflesh') { + //Мини обновление + if (($u->tfer['start2'] > 0 && $u->info['id'] == $u->tfer['uid1']) || ($u->tfer['start1'] > 0 && $u->info['id'] == $u->tfer['uid2'])) { + $js .= 's2g();'; + } + //Обновляем предметы + $f = 1; + if ($u->info['id'] == $u->tfer['uid2']) { + $f = 2; + } + if ($u->tfer['r' . $f] != $u->tfer['r0']) { + function itmInfotf($pl, $cl) + { + global $u, $c, $code; + $x = $u->itemsX($pl['id'], $pl['uid']); + if ($x > 1) { + $x = ' (x' . $x . ')'; + } else { + $x = ''; + } + $r = ''; + if ($pl['uid'] == $u->info['id']) { + $r .= ''; + } + $r .= '' . $pl['name'] . '' . $x . '
    '; + if ($pl['inTransfer'] == 1) { + $r .= ''; + } else { + $r .= '(налог: 1кр.)'; + } + $r = '
    - - '; - }else{ - $itmAllSee = $itmAll[2]; - } - $itmAllSee = str_replace("'","",$itmAllSee); - $itmAllSee = str_replace('"','"',$itmAllSee); - $itmAllSee = str_replace("\n",'',$itmAllSee); - $itmAllSee = str_replace("\r",'',$itmAllSee); - $js .= '$(\'#inv'.$i.'\').html(\''.$itmAllSee.'\');'; - $i++; - } - unset($itmAll,$itmAllSee); - } - if($_POST['id']=='minireflesh' || $_POST['id']=='reflesh') - { - //Мини обновление - if(($u->tfer['start2']>0 && $u->info['id']==$u->tfer['uid1']) || ($u->tfer['start1']>0 && $u->info['id']==$u->tfer['uid2'])) - { - $js .= 's2g();'; - } - //Обновляем предметы - $f = 1; - if($u->info['id']==$u->tfer['uid2']) - { - $f = 2; - } - if($u->tfer['r'.$f]!=$u->tfer['r0']) - { - function itmInfotf($pl,$cl) - { - global $u,$c,$code; - $x = $u->itemsX($pl['id'],$pl['uid']); - if($x>1) - { - $x = ' (x'.$x.')'; - }else{ - $x = ''; - } - $r = ''; - if($pl['uid']==$u->info['id']) - { - $r .= ''; - } - $r .= ''.$pl['name'].''.$x.'
    '; - if($pl['inTransfer']==1) - { - $r .= ''; - }else{ - $r .= '(налог: 1кр.)'; - } - $r = '
    -
    info['bsid']==0){ echo $d->usersDng(); - if( $dies > 0 ) { - echo '

    Кол-во смертей: '.$dies.'

    '; - } - /*if($dies > 3) { + if (tgo > 0) { + tgo -= 1; + // console.log("старт после") + setTimeout('locGoLineDng()', 100); + } else { + if (gotoup777 > 0) { + // нажал на кнопку, идёт загрузка, нажал ещё раз и начнется другая + // именно в момент перехода на второй круг появляется этот код + location.href = `/main.php?go=${gotoup777}&rnd=`; + } + } + + var $DomGotext777 = document.getElementById('gotext777') + + if (gotoup777 > 0 && gotext777 != '' && $DomGotext777.innerHTML != `Вы перейдете ${gotext777} (отмена)`) { + $DomGotext777.innerHTML = `Вы перейдете ${gotext777} (отмена)`; + } else if ($DomGotext777.innerHTML != '' && gotoup777 == 0 && gotext777 == '') { + $DomGotext777.innerHTML = ''; + } + } + } + info['timeGo'] - time(); //сколько секунд осталось + $tmGol = $u->info['timeGo'] - $u->info['timeGoL']; //сколько секунд идти всего + echo 'var tgo = ' . ($tmGo * 10) . '; var tgol = ' . ($tmGol * 10) . ';'; ?> + + + + +
    + + + + + + - -
    +

     error)) { + echo '' . $d->error . '
    '; + } ?>

    + info['bsid'] == 0 && $d->info['id2'] != 106) { ?>

    Выйти

    +
    + + + - -
    + + + - + - -
    +
    +
    info['bsid'] == 0) { + echo $d->usersDng(); + if ($dies > 0) { + echo '

    Кол-во смертей: ' . $dies . '

    '; + } + /*if($dies > 3) { mysql_query('UPDATE `users` set `room` = "321" WHERE `id` = "'.$u->info['id'].'" LIMIT1 '); }*/ - }else{ - if($d->info['id2'] != 15) { - //Живые участники и архивариусы - echo '

    Живые участники:

    '; - echo $d->usersDng(); - }else{ - echo '

    Игровой счет. Красные: '.(0+$tm1win).' - Синие: '.(0+$tm2win).'

    '; - if( $dies > 0 ) { - echo '

    Кол-во смертей: '.$dies.'

    '; - } - if(isset($sb['id'])) { - echo '

    Шайба у вас, забейте её в ворота противника!

    '; - } - } - } - //Генерируем список текущих квестов - $qsee = ''; - - $dungeon_enter = mysql_fetch_array( mysql_query('SELECT * FROM `dungeon_room` WHERE `dungeon_room` = "'.$u->info['room'].'" LIMIT 1') ); - $sp = mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars` LIKE "%start_quest%" AND `vals` = "go" LIMIT 1000'); - while($pl = mysql_fetch_array($sp)){ - $pq = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.str_replace('start_quest','',$pl['vars']).'" AND (`tr_date` LIKE "%tr_dn:=:'.$d->info['id2'].'" OR `tr_date` LIKE "%tr_dn:=:'.$d->info['id2'].'|%" OR `tr_date` NOT LIKE "%tr_dn:=:%") LIMIT 1')); - if(isset($pq['id'])) { - $qsee .= 'Задание:   '.$pq['name'].' '.$q->infoDng($pq).'
    '; - $qx++; - } - } - $sp = mysql_query('SELECT * FROM `dialog_act` WHERE `uid` = "'.$u->info['id'].'" AND `val` = 0 AND `info` != ""'); - while($pl = mysql_fetch_array($sp)) { - $xrz = $pl['now']; - $r = $pl['max']; - if($xrz > $r) { - $xrz = $r; - } - $r = '
    -
    '.$xrz.'/'.$r.'
    + } else { + if ($d->info['id2'] != 15) { + //Живые участники и архивариусы + echo '

    Живые участники:

    '; + echo $d->usersDng(); + } else { + echo '

    Игровой счет. Красные: ' . (0 + $tm1win) . ' - Синие: ' . (0 + $tm2win) . '

    '; + if ($dies > 0) { + echo '

    Кол-во смертей: ' . $dies . '

    '; + } + if (isset($sb['id'])) { + echo '

    Шайба у вас, забейте её в ворота противника!

    '; + } + } + } + //Генерируем список текущих квестов + $qsee = ''; + + $dungeon_enter = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_room` WHERE `dungeon_room` = "' . $u->info['room'] . '" LIMIT 1')); + $sp = mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` LIKE "%start_quest%" AND `vals` = "go" LIMIT 1000'); + while ($pl = mysql_fetch_array($sp)) { + $pq = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "' . str_replace('start_quest', '', $pl['vars']) . '" AND (`tr_date` LIKE "%tr_dn:=:' . $d->info['id2'] . '" OR `tr_date` LIKE "%tr_dn:=:' . $d->info['id2'] . '|%" OR `tr_date` NOT LIKE "%tr_dn:=:%") LIMIT 1')); + if (isset($pq['id'])) { + $qsee .= 'Задание:   ' . $pq['name'] . ' ' . $q->infoDng($pq) . '
    '; + $qx++; + } + } + $sp = mysql_query('SELECT * FROM `dialog_act` WHERE `uid` = "' . $u->info['id'] . '" AND `val` = 0 AND `info` != ""'); + while ($pl = mysql_fetch_array($sp)) { + $xrz = $pl['now']; + $r = $pl['max']; + if ($xrz > $r) { + $xrz = $r; + } + $r = '
    +
    ' . $xrz . '/' . $r . '
    -
    +
    -

    '; +

    '; - $qsee .= 'Задание:   '.$pl['info'].' '.$r.'
    '; - } - if( $qsee != '' ) { - echo '

    '.$qsee; - } - ?>
    -
    itemsMap(); ?>
    -
    information)){ echo $d->information; } ?>
    -
    - info['admin'] > 0){ - #echo $d->genObjects(); - } - ?> -
    - -
    -
    -
    -
    - -
    -
    - - '; - $j = 1; - $htmlv2 = ''; - while($j<=9) - { - $htmlv2 = ''.$htmlv2; - $j++; - } - $htmlv .= $htmlv2.''; - $i++; - } - echo $htmlv; - unset($htmlv,$htmlv2); - ?> - -
    - -
    -
    - -
    - - testGone(3) > 0) { ?> - - testGone(4)>0){ ?> - - testGone(2)>0){ ?> - - testGone(1)>0){ ?> - - - - -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - info['admin']==0){ ?> -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    + $qsee .= 'Задание:   ' . $pl['info'] . ' ' . $r . '
    '; + } + if ($qsee != '') { + echo '

    ' . $qsee; + } + ?>
    +
    itemsMap(); ?>
    +
    information)) { + echo $d->information; + } ?>
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - + info['admin'] > 0) { + #echo $d->genObjects(); + } + ?> +
    +
    + +
    +
    +
    +
    + +
    +
    + + '; + $j = 1; + $htmlv2 = ''; + while ($j <= 9) { + $htmlv2 = '' . $htmlv2; + $j++; + } + $htmlv .= $htmlv2 . ''; + $i++; + } + echo $htmlv; + unset($htmlv, $htmlv2); + ?> + +
    + +
    +
    + +
    + + testGone(3) > 0) { ?> + + testGone(4) > 0) { ?> + + testGone(2) > 0) { ?> + + testGone(1) > 0) { ?> + + + + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + info['admin'] == 0){ ?> +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    -
    -
    -
     
    -
    -
    - -

    -info['admin'] == 1) { - echo '
    X - Y -

    - S:'.$u->info['s'].''; -} -?> - \ No newline at end of file + location.href = "/main.php?look=2&rnd="; + }); + + }); + +

    + info['admin'] == 1) { + echo '
    X - Y -

    + S:' . $u->info['s'] . ''; + } + ?> + diff --git a/modules_data/location/enterptp.php b/modules_data/location/enterptp.php index 284843d0..91b8ead2 100644 --- a/modules_data/location/enterptp.php +++ b/modules_data/location/enterptp.php @@ -24,7 +24,7 @@ $dungeon = mysql_fetch_assoc(mysql_query('SELECT `id` as room, `dungeon_id` as i $dungeon['list'] = array( // список подземелий, которые используются для вычита используемой репутации. // При добавлении в список нового города, следует проверить наличие ячеек в таблице `rep`. - // Так-же следует помнить, что в __user.php в выводе инвентаря, некоторых подземелий\городов, нету. + // Так-же следует помнить, что в User.php в выводе инвентаря, некоторых подземелий\городов, нету. // Да и вообще, херня получается, что наши подземелья считаются как Город, то есть два подземелья на город - технически нет такого. Так-как ПТП это capitalcity. 1=>'capitalcity', 2=>'demonscity', diff --git a/modules_data/location/izlom2.php b/modules_data/location/izlom2.php index 0c35a6a2..39acbb93 100644 --- a/modules_data/location/izlom2.php +++ b/modules_data/location/izlom2.php @@ -1,133 +1,160 @@ room['file']=='izlom2') -{ -if(isset($_POST['level'])) -{ - if((int)$_POST['level']<=$u->info['level'] && (int)$_POST['level']<=7) - { - $eff1 = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `id_eff` = "31" AND `delete` = "0" LIMIT 1')); - if(!isset($eff1['id'])) - { - if(file_exists('_incl_data/class/__zv.php')) { - if(!isset($zv)) - { - require_once('_incl_data/class/__zv.php'); - } - $zv->startIzlom(1,((int)$_POST['level'])); - }else{ - echo '...'; - } - }else{ - echo 'Вы не можете начать новый поход пока действует эффект "Касание Хаоса"'; - } - } +if ($u->room['file'] != 'izlom2') { + return; +} +if (isset($_POST['level']) && (int)$_POST['level'] <= $u->info['level'] && (int)$_POST['level'] <= 7) { + $eff1 = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $u->info['id'] . '" AND `id_eff` = "31" AND `delete` = "0" LIMIT 1')); + if (isset($eff1['id'])) { + echo 'Вы не можете начать новый поход пока действует эффект "Касание Хаоса"'; + } elseif (!isset($zv)) { + $zv = new FightRequest(); + } +} + +$i = 0; +$text = ''; +$sp = mysql_query('SELECT * FROM `izlom_rating` ORDER BY `voln` DESC LIMIT 50'); +$uidz = []; +while ($pl = mysql_fetch_array($sp)) { + if (isset($uidz[$pl['uid']])) { + continue; + } + $i++; + $uidz[$pl['uid']] = $i; + $text .= $i . '. ' . date('d.m.Y H:i', $pl['time']) . ', Волна: ' . $pl['voln'] . ', ' . $u->microLogin($pl['uid'], 1) . '
    '; +} +if (empty($text)) { + $text = 'История пуста, скорее всего не нашлось смельчаков...'; } ?> - -
    '.$re.''; } ?>
    - - - -
    Излом Хаоса
    -
    - - - - -
      - - - -
    - - - - - - - - -
    - - - - - - - - -
    Излом Хаоса - 16
    Магазин Излома
     
    -
    -
    - + +
    + + + + +
    +
    Излом Хаоса
    +
    + + + + + +
      + + + + +
    + + + + + + + + + +
    + + + + + + + + + +
    Излом + Хаоса - 16
    Магазин + Излома
    +
     
    +
    +
    +
    +
    +
    - info['level']<7){ echo 'disabled'; } ?>> - Проход в «Излом Хаоса»
    + -
    -

    Рейтинг походов «Излом Хаоса»:
    '.date('d.m.Y H:i',$pl['time']).', Волна: '.$pl['voln'].', '.$u->microLogin($pl['uid'],1).'
    '; - } - } - if(!isset($text)) - { - $text = 'История пуста, скорее всего не нашлось смельчаков...'; - } - echo $text; - unset($text); - ?>

    - \ No newline at end of file + +

    Рейтинг походов «Излом Хаоса»:

    \ No newline at end of file diff --git a/modules_data/location/turnir.php b/modules_data/location/turnir.php index 2dbc88ee..80da5e6b 100644 --- a/modules_data/location/turnir.php +++ b/modules_data/location/turnir.php @@ -1,16 +1,10 @@ -room['file']=='turnir') -{ - - require_once('_incl_data/class/__turnir.php'); - - $tur->locationSee(); - +if($u->room['file'] != 'turnir') { + return; } - -?> \ No newline at end of file +$tur = new Tournir(); diff --git a/modules_data/titul.php b/modules_data/titul.php index 46a99c8f..02046d97 100644 --- a/modules_data/titul.php +++ b/modules_data/titul.php @@ -7,10 +7,7 @@ if (!defined('GAME')) { die(); } -if (empty($u)) { - $u = user::start(); -} - +$u = User::start(); $a = new Achievements($u); $ai = $a->getCheckedInfo(); @@ -120,8 +117,10 @@ if (isset($_GET['nagr'])) { $nagrtxt .= $a->getData()['trn']['prize'][$ai['trn_n']] . $a->getData()['trn']['prize'][0]; } //Тоже Р±С‹ вынести РІ класс чата. - Db::sql('insert into chat (new, city, room, `to`, `text`, `time`, type) values (?,?,?,?,?,?,?)', - [1, $u->info['city'], $u->info['room'], $u->info['login'], $nagrtxt, -1, 6]); + Db::sql( + 'insert into chat (new, city, room, `to`, `text`, `time`, type) values (?,?,?,?,?,?,?)', + [1, $u->info['city'], $u->info['room'], $u->info['login'], $nagrtxt, -1, 6] + ); } diff --git a/modules_data/vip.php b/modules_data/vip.php index 462256d1..3f15f647 100644 --- a/modules_data/vip.php +++ b/modules_data/vip.php @@ -176,7 +176,6 @@ $vi = array( $i = 0; $seet = ''; $vnr = array(0 => 'на сегодня',1 => ' всего'); while($i < count($ability[$account])) { - if($ability[$account][$i][1]>0) { $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$ability[$account][$i][0].'" LIMIT 1')); diff --git a/mult.php b/mult.php index a28efc8a..d7b4d78a 100644 --- a/mult.php +++ b/mult.php @@ -1,38 +1,34 @@ info['id']) && $u->info['admin'] > 0 ) { - - $html = ''; - $i = 1; - $sp = mysql_query('SELECT `id`,`login`,`money`,`money2`,`level` FROM `users` WHERE `real` = 1 AND `admin` = 0 AND `level` >= 8 AND `pass` NOT LIKE "%saint%" ORDER BY `money` ASC'); - while( $pl = mysql_fetch_array($sp) ) { - // - //prckr - $b0 = mysql_fetch_array(mysql_query('SELECT SUM(`1price`) AS `a` , SUM(`2price`) AS `b` FROM `items_users` WHERE `uid` = "'.$pl['id'].'" AND `delete` = 0 LIMIT 1')); - $b1 = $pl['money'] + $b0['a']; - $b2 = $pl['money2'] + $b0['b']; - // - /*if( $b1 < 1000 ) { $html .= ''; } - $html .= $i.'. '.$u->microLogin($pl['id'],1).' ( '.$b1.' кр. / '.$b2.' екр. )
    '; - if( $b1 < 1000 ) { $html .= '
    '; }*/ - //$i++; - if( $b1 < 1000 ) { - $html .= ''; - $html .= $i.'. '.$u->microLogin($pl['id'],1).' ( '.$b1.' кр. / '.$b2.' екр. )
    '; - $html .= '
    '; - $i++; - } - } - - echo $html; - -}else{ - header('location: https://new-combats.com/'); - die(); +if (!$u->info['admin']) { + header('location: https://new-combats.com/'); + die(); } - -?> \ No newline at end of file +$html = ''; +$i = 1; +$sp = mysql_query( + 'SELECT `id`,`login`,`money`,`money2`,`level` FROM `users` WHERE `real` = 1 AND `admin` = 0 AND `level` >= 8 AND `pass` NOT LIKE "%saint%" ORDER BY `money` ASC' +); +while ($pl = mysql_fetch_array($sp)) { + // + //prckr + $b0 = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`1price`) AS `a` , SUM(`2price`) AS `b` FROM `items_users` WHERE `uid` = "' . $pl['id'] . '" AND `delete` = 0 LIMIT 1' + ) + ); + $b1 = $pl['money'] + $b0['a']; + $b2 = $pl['money2'] + $b0['b']; + if ($b1 < 1000) { + $html .= ''; + $html .= $i . '. ' . $u->microLogin($pl['id'], 1) . ' ( ' . $b1 . ' кр. / ' . $b2 . ' екр. )
    '; + $html .= '
    '; + $i++; + } +} +echo $html; diff --git a/mults.php b/mults.php index 3c1b798b..2f89923d 100644 --- a/mults.php +++ b/mults.php @@ -1,15 +1,16 @@ info['admin'] > 0 ) { - $sp = mysql_query('SELECT * FROM `mults`'); - while( $pl = mysql_fetch_array($sp) ) { - echo ''.$u->microLogin($pl['uid'],1).' пересечение с '.$u->microLogin($pl['uid2'],1).'
    '; - } + +const GAME = true; +include('_incl_data/__config.php'); +include('_incl_data/class/__db_connect.php'); +$u = User::start(); + +if (!$u->info['admin']) { + return; +} +$sp = mysql_query('SELECT * FROM `mults`'); +while ($pl = mysql_fetch_array($sp)) { + echo '' . $u->microLogin($pl['uid'], 1) . ' пересечение с ' . $u->microLogin($pl['uid2'], 1) . '
    '; } -?> \ No newline at end of file diff --git a/myexp.php b/myexp.php index 749aec16..ea4e4bb8 100644 --- a/myexp.php +++ b/myexp.php @@ -1,29 +1,34 @@ \n"; var_dump($vars); echo "\n"; - if ($d) exit(); + if ($d) { + exit(); + } } -define('IP',GetRealIp()); + +define('IP', GetRealIp()); include('_incl_data/__config.php'); -define('GAME',true); +const GAME = true; include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); +$u = User::start(); -if(isset($u->info['id'])) { - $sp = mysql_query('SELECT * FROM `battle_last` WHERE `uid` = "'.$u->info['id'].'" ORDER BY `id` DESC'); - while( $pl = mysql_fetch_array($sp) ) { - echo 'Бой № '.$pl['battle_id'].' , опыт до начала боя: '.$pl['exp'].'
    '; - } +if (isset($u->info['id'])) { + $sp = mysql_query('SELECT * FROM `battle_last` WHERE `uid` = "' . $u->info['id'] . '" ORDER BY `id` DESC'); + while ($pl = mysql_fetch_array($sp)) { + echo 'Бой № ' . $pl['battle_id'] . ' , опыт до начала боя: ' . $pl['exp'] . '
    '; + } } - -?> \ No newline at end of file diff --git a/online.php b/online.php index 92e7655c..95578f12 100644 --- a/online.php +++ b/online.php @@ -1,11 +1,11 @@ info['id']) || @@ -21,34 +21,37 @@ if ($u->info['bithday'] == '01.01.1800') { $_GET['r3'] = 1; } -if ($u->info['admin'] == 0) { - //Эта перемычка ЗАПРЕЩАЕТ просмотр всех пользователей чата одновременно РїРѕ запросу. - //unset($_GET['r3']); -} - if ($u->info['online'] < time() - 60) { mysql_query('UPDATE users SET online = unix_timestamp() WHERE id = ' . $u->info['id']); - $filter->setOnline($u->info['online'], $u->info['id'], 0); + $filter->setOnline($u->info['online'], $u->info['id']); $u->onlineBonus(); } -if ( - isset($_POST['delMsg']) && - ( - $u->info['admin'] > 0 || +function isModerOrAdmin($uinfo) +{ + return $uinfo['admin'] > 0 || ( - $u->info['align'] > 1 && - $u->info['align'] < 2) || + $uinfo['align'] > 1 && + $uinfo['align'] < 2) || ( - $u->info['align'] > 3 && - $u->info['align'] < 4 - ) - ) -) { + $uinfo['align'] > 3 && + $uinfo['align'] < 4 + ); +} + +if (isset($_POST['delMsg']) && isModerOrAdmin($u->info)) { if (((int)$_POST['delMsg']) > 0) { - mysql_query('UPDATE `chat` SET `delete` = "' . $u->info['id'] . '" WHERE `id` = "' . mysql_real_escape_string(((int)$_POST['delMsg'])) . '" LIMIT 1'); + mysql_query( + 'UPDATE `chat` SET `delete` = "' . $u->info['id'] . '" WHERE `id` = "' . mysql_real_escape_string( + ((int)$_POST['delMsg']) + ) . '" LIMIT 1' + ); } else { - mysql_query('UPDATE `users` SET `molch3` = "' . (time() + 3600 * 3) . '" WHERE `id` = "' . mysql_real_escape_string(-((int)$_POST['delMsg'])) . '" LIMIT 1'); + mysql_query( + 'UPDATE `users` SET `molch3` = "' . (time() + 3600 * 3) . '" WHERE `id` = "' . mysql_real_escape_string( + -((int)$_POST['delMsg']) + ) . '" LIMIT 1' + ); } } @@ -58,12 +61,14 @@ $r = [ 'list' => null, 'msg' => null, 'js' => null, - 'xu' => 0 + 'xu' => 0, ]; $u->onlineBonus(); if ($u->info['battle'] > 0) { - $btl = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $u->info['battle'] . '" AND `time_over` = 0 LIMIT 1')); + $btl = mysql_fetch_array( + mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $u->info['battle'] . '" AND `time_over` = 0 LIMIT 1') + ); if (!isset($btl['id'])) { $r['js'] .= 'top.frames["main"].location="main.php";'; } @@ -80,50 +85,74 @@ if (isset($_POST['msg']) && str_replace(' ', '', $_POST['msg']) != '') { $x = explode(" ", $buf); $newbuf = ''; for ($j = 0; $j < count($x); $j++) { - $uname = '<Внутренняя ссылка>'; + $uname = '<Внутренняя ссылка>'; // if (strripos($x[$j], 'new-combats.com/info/')) { $ulogin = explode('/info/', $x[$j]); $ulogin = $ulogin[1]; - $ulogin = mysql_fetch_array(mysql_query('SELECT `login` FROM `users` WHERE `id` = "' . mysql_real_escape_string($ulogin) . '" OR `login` = "' . mysql_real_escape_string($ulogin) . '" LIMIT 1')); + $ulogin = mysql_fetch_array( + mysql_query( + 'SELECT `login` FROM `users` WHERE `id` = "' . mysql_real_escape_string( + $ulogin + ) . '" OR `login` = "' . mysql_real_escape_string($ulogin) . '" LIMIT 1' + ) + ); if (isset($ulogin['login'])) { $ulogin = htmlspecialchars($ulogin['login']); - $uname = '<Рнформация Рѕ "' . $ulogin . '">'; + $uname = '<Информация о "' . $ulogin . '">'; } - } elseif (strripos($x[$j], 'audio_1610649509.mp3')) { //РўРЈРў аудио - $uname = '<Голосовое сообщение>'; + } elseif (strripos($x[$j], 'audio_1610649509.mp3')) { //ТУТ аудио + $uname = '<Голосовое сообщение>'; } elseif (strripos($x[$j], 'new-combats.com/item/')) { $ulogin = explode('/item/', $x[$j]); $ulogin = $ulogin[1]; - $ulogin = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . mysql_real_escape_string($ulogin) . '" LIMIT 1')); + $ulogin = mysql_fetch_array( + mysql_query( + 'SELECT `name` FROM `items_main` WHERE `id` = "' . mysql_real_escape_string( + $ulogin + ) . '" LIMIT 1' + ) + ); if (isset($ulogin['name'])) { $ulogin = htmlspecialchars($ulogin['name']); - $uname = '<Предмет "' . $ulogin . '">'; + $uname = '<Предмет "' . $ulogin . '">'; } else { - $uname = '<Библиотека предметов>'; + $uname = '<Библиотека предметов>'; } } elseif (strripos($x[$j], 'new-combats.com/news')) { $ulogin = explode('/news', $x[$j]); $ulogin = $ulogin[1]; $ulogin = ltrim($ulogin, '/'); - $ulogin = mysql_fetch_array(mysql_query('SELECT `title` FROM `events_news` WHERE `id` = "' . mysql_real_escape_string($ulogin) . '" LIMIT 1')); + $ulogin = mysql_fetch_array( + mysql_query( + 'SELECT `title` FROM `events_news` WHERE `id` = "' . mysql_real_escape_string( + $ulogin + ) . '" LIMIT 1' + ) + ); if (isset($ulogin['title'])) { $ulogin = htmlspecialchars($ulogin['title']); - $uname = '<Новость "' . $ulogin . '">'; + $uname = '<Новость "' . $ulogin . '">'; } else { - $uname = '<Новостная лента>'; + $uname = '<Новостная лента>'; } } elseif (strripos($x[$j], 'new-combats.com/lib')) { $ulogin = explode('/lib', $x[$j]); $ulogin = $ulogin[1]; $ulogin = ltrim($ulogin, '/'); $ulogin = rtrim($ulogin, '/'); - $ulogin = mysql_fetch_array(mysql_query('SELECT `title` FROM `library_content` WHERE `url_name` = "' . mysql_real_escape_string($ulogin) . '" AND `moder` > 0 LIMIT 1')); + $ulogin = mysql_fetch_array( + mysql_query( + 'SELECT `title` FROM `library_content` WHERE `url_name` = "' . mysql_real_escape_string( + $ulogin + ) . '" AND `moder` > 0 LIMIT 1' + ) + ); if (isset($ulogin['title'])) { $ulogin = htmlspecialchars($ulogin['title']); - $uname = '<Библиотека "' . $ulogin . '">'; + $uname = '<Библиотека "' . $ulogin . '">'; } else { - $uname = '<Библиотека>'; + $uname = '<Библиотека>'; } } elseif (strripos($x[$j], 'new-combats.com/forum')) { $ulogin = explode('/forum?read=', $x[$j]); @@ -131,29 +160,45 @@ if (isset($_POST['msg']) && str_replace(' ', '', $_POST['msg']) != '') { $ulogin = explode('&', $ulogin); $ulogin = $ulogin[0]; // - $ulogin = mysql_fetch_array(mysql_query('SELECT `title` FROM `forum_msg` WHERE `id` = "' . mysql_real_escape_string($ulogin) . '" AND `delete` = 0 LIMIT 1')); + $ulogin = mysql_fetch_array( + mysql_query( + 'SELECT `title` FROM `forum_msg` WHERE `id` = "' . mysql_real_escape_string( + $ulogin + ) . '" AND `delete` = 0 LIMIT 1' + ) + ); if (isset($ulogin['title'])) { $ulogin = htmlspecialchars($ulogin['title']); - $uname = '<Форум "' . $ulogin . '">'; + $uname = '<Форум "' . $ulogin . '">'; } else { $ulogin = explode('/forum?r=', $x[$j]); $ulogin = $ulogin[1]; $ulogin = explode('&', $ulogin); $ulogin = $ulogin[0]; // - $ulogin = mysql_fetch_array(mysql_query('SELECT `name` FROM `forum_menu` WHERE `id` = "' . mysql_real_escape_string($ulogin) . '" LIMIT 1')); + $ulogin = mysql_fetch_array( + mysql_query( + 'SELECT `name` FROM `forum_menu` WHERE `id` = "' . mysql_real_escape_string( + $ulogin + ) . '" LIMIT 1' + ) + ); if (isset($ulogin['name'])) { - $uname = '<Конференция форума "' . $ulogin['name'] . '">'; + $uname = '<Конференция форума "' . $ulogin['name'] . '">'; } else { - $uname = '<Форум проекта>'; + $uname = '<Форум проекта>'; } } } // $newbuf .= preg_match - ("/(https:\\/\\/)?(new-combats+\\.com(([ \"'>\r\n\t])|(\\/([^ \"'>\r\n\t]*)?)))/", - $x[$j], $ok) ? str_replace($ok[2], "" . $uname . "", - str_replace("https://", "", $x[$j])) . " " : $x[$j] . " "; + ( + "/(https:\\/\\/)?(new-combats+\\.com(([ \"'>\r\n\t])|(\\/([^ \"'>\r\n\t]*)?)))/", + $x[$j], $ok + ) ? str_replace( + $ok[2], "" . $uname . "", + str_replace("https://", "", $x[$j]) + ) . " " : $x[$j] . " "; } return $newbuf; } @@ -187,9 +232,19 @@ if (isset($_POST['msg']) && str_replace(' ', '', $_POST['msg']) != '') { $_POST['msg'] = str_replace(' ', ' ', $_POST['msg']); - $smg = mysql_fetch_array(mysql_query('SELECT * FROM `chat` WHERE `login` = "' . $u->info['login'] . '" AND `time` > ' . (time() - 20) . ' ORDER BY `time` DESC LIMIT 1')); + $smg = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `chat` WHERE `login` = "' . $u->info['login'] . '" AND `time` > ' . (time( + ) - 20) . ' ORDER BY `time` DESC LIMIT 1' + ) + ); if ($u->info['exp'] < 499999999) { - $lmg = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `chat` WHERE `login` = "' . $u->info['login'] . '" AND `time` > ' . (time() - 5) . ' LIMIT 2')); + $lmg = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(`id`) FROM `chat` WHERE `login` = "' . $u->info['login'] . '" AND `time` > ' . (time( + ) - 5) . ' LIMIT 2' + ) + ); } else { $lmg[0] = 0; } @@ -198,15 +253,19 @@ if (isset($_POST['msg']) && str_replace(' ', '', $_POST['msg']) != '') { if ($u->info['molch1'] < time()) { - //Молчанка Р·Р° флуд РЅР° 5 РјРёРЅСѓС‚ + //Молчанка за флуд на 5 минут $u->info['molch1'] = time() + 1200; - $r['js'] .= 'chat.sendMsg(["new","' . time() . '","6","","' . $u->info['login'] . '","Р’С‹ наказаны Р·Р° спам РЅР° 20 РјРёРЅСѓС‚ ","Black","1","1","0"]);'; + $r['js'] .= 'chat.sendMsg(["new","' . time( + ) . '","6","","' . $u->info['login'] . '","Вы наказаны за спам на 20 минут ","Black","1","1","0"]);'; - mysql_query('UPDATE `users` SET `molch1` = "' . $u->info['molch1'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `users` SET `molch1` = "' . $u->info['molch1'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); mysql_query("UPDATE `chat` SET `delete` = 1 WHERE `login` = '" . $u->info['login'] . "' LIMIT 1000"); - $_POST['msg'] = 'РЇ спамер ' . $u->info['login'] . ' Рё меня нужно заблокировать https://new-combats.com/info/' . $u->info['id'] . ''; + $_POST['msg'] = 'Я спамер ' . $u->info['login'] . ' и меня нужно заблокировать https://new-combats.com/info/' . $u->info['id'] . ''; - mysql_query('INSERT INTO `chat` (`nosee`,`invis`,`da`,`delete`,`molch`,`new`,`login`,`to`,`city`,`room`,`time`,`type`,`spam`,`text`,`toChat`,`color`,`typeTime`,`sound`,`global`) VALUES ( + mysql_query( + 'INSERT INTO `chat` (`nosee`,`invis`,`da`,`delete`,`molch`,`new`,`login`,`to`,`city`,`room`,`time`,`type`,`spam`,`text`,`toChat`,`color`,`typeTime`,`sound`,`global`) VALUES ( "0", "' . $u->info['invis'] . '", "1", @@ -225,11 +284,13 @@ if (isset($_POST['msg']) && str_replace(' ', '', $_POST['msg']) != '') { "red", "0", "0", - "0")'); + "0")' + ); - $_POST['msg'] = 'Это супер проект! Всем успехов!'; + $_POST['msg'] = 'Это супер проект! Всем успехов!'; - mysql_query('INSERT INTO `chat` (`nosee`,`invis`,`da`,`delete`,`molch`,`new`,`login`,`to`,`city`,`room`,`time`,`type`,`spam`,`text`,`toChat`,`color`,`typeTime`,`sound`,`global`) VALUES ( + mysql_query( + 'INSERT INTO `chat` (`nosee`,`invis`,`da`,`delete`,`molch`,`new`,`login`,`to`,`city`,`room`,`time`,`type`,`spam`,`text`,`toChat`,`color`,`typeTime`,`sound`,`global`) VALUES ( "0", "' . $u->info['invis'] . '", "1", @@ -248,27 +309,35 @@ if (isset($_POST['msg']) && str_replace(' ', '', $_POST['msg']) != '') { "Black", "0", "0", - "0")'); + "0")' + ); } } elseif ($lmg[0] > 0) { - $r['js'] .= 'chat.sendMsg(["new","' . time() . '","6","","' . $u->info['login'] . '","Р’С‹ РЅРµ можете отправлять так часто сообщения... ","Black","1","1","0"]);'; + $r['js'] .= 'chat.sendMsg(["new","' . time( + ) . '","6","","' . $u->info['login'] . '","Вы не можете отправлять так часто сообщения... ","Black","1","1","0"]);'; if ($u->info['molch1'] < time()) { if ($u->info['molch1'] < -5) { $u->info['molch1'] = time() + 300; - $r['js'] .= 'chat.sendMsg(["new","' . time() . '","6","","' . $u->info['login'] . '","Р’С‹ наказаны Р·Р° флуд РЅР° 5 РјРёРЅСѓС‚ ","Black","1","1","0"]);'; + $r['js'] .= 'chat.sendMsg(["new","' . time( + ) . '","6","","' . $u->info['login'] . '","Вы наказаны за флуд на 5 минут ","Black","1","1","0"]);'; } elseif ($u->info['molch1'] < 0) { $u->info['molch1']--; } else { $u->info['molch1'] = -1; } - mysql_query('UPDATE `users` SET `molch1` = "' . $u->info['molch1'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `users` SET `molch1` = "' . $u->info['molch1'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); } - } elseif ((preg_match("/private\[(.*?)\]/", $_POST['msg'], $msg['to']) || preg_match("/private \[(.*?)\]/", $_POST['msg'], $msg['to'])) && $u->info['exp'] < 150000) { - $r['js'] .= 'chat.sendMsg(["new","' . time() . '","6","","' . $u->info['login'] . '","Р’С‹ РЅРµ можете отправлять приват РґРѕ достижения 150000 опыта.","Black","1","1","0"]);'; + } elseif ((preg_match("/private\[(.*?)\]/", $_POST['msg'], $msg['to']) || preg_match( + "/private \[(.*?)\]/", $_POST['msg'], $msg['to'] + )) && $u->info['exp'] < 150000) { + $r['js'] .= 'chat.sendMsg(["new","' . time( + ) . '","6","","' . $u->info['login'] . '","Вы не можете отправлять приват до достижения 150000 опыта.","Black","1","1","0"]);'; } else { - //Записываем данные + //Записываем данные $msg['time'] = time(); $msg['spam'] = 0; $msg['type'] = 1; @@ -285,7 +354,7 @@ if (isset($_POST['msg']) && str_replace(' ', '', $_POST['msg']) != '') { $msg['da'] = 0; $msg['color'] = $u->info['chatColor']; - //Нормируем типы сообщений + //Нормируем типы сообщений if (preg_match("/private\[(.*?)\]/", $_POST['msg'], $msg['to'])) { $msg['to'] = $msg['to'][1]; $_POST['msg'] = str_replace('private[' . $msg['to'] . ']', 'private [' . $msg['to'] . ']', $_POST['msg']); @@ -305,41 +374,65 @@ if (isset($_POST['msg']) && str_replace(' ', '', $_POST['msg']) != '') { $msg['type'] = 2; $_POST['msg'] = str_replace('to [' . $msg['to'] . ']', ' ', $_POST['msg']); } - if ($u->info['admin'] == 0) { //РўРЈРў SPAM + if ($u->info['admin'] == 0) { //ТУТ SPAM if ($msg['to'] != '' && !isset($admq['id'])) { - $admq = mysql_fetch_array(mysql_query('SELECT `id`,`admin` FROM `users` WHERE `login` = "' . mysql_real_escape_string($msg['to']) . '" AND `admin` > 0 LIMIT 1')); + $admq = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`admin` FROM `users` WHERE `login` = "' . mysql_real_escape_string( + $msg['to'] + ) . '" AND `admin` > 0 LIMIT 1' + ) + ); if ($msg['type'] != 3) { unset($admq); } } if (!isset($admq['id'])) { - $msg['fspam'] = $filter->spamFiltr(str_replace('точка', '.', str_replace('СЂСѓ', 'ru', $_POST['msg']))); + $msg['fspam'] = $filter->spamFiltr(str_replace('точка', '.', str_replace('ру', 'ru', $_POST['msg']))); if ($msg['fspam'] != '0') { $msg['spam'] = 1; $msg['delete'] = 1; - $r['js'] .= 'chat.sendMsg(["new","' . time() . '","6","","' . $u->info['login'] . '","Р’ нашем чате запрещается сообщать ссылки РЅР° атльтернативные проекты. Повторные попытки РјРѕРіСѓС‚ привести Рє блокировке персонажа.","Black","1","1","0"]);'; + $r['js'] .= 'chat.sendMsg(["new","' . time( + ) . '","6","","' . $u->info['login'] . '","В нашем чате запрещается сообщать ссылки на атльтернативные проекты. Повторные попытки могут привести к блокировке персонажа.","Black","1","1","0"]);'; } if ($msg['spam'] == 1 && $u->info['molch1'] < time() && $u->info['admin'] == 0) { - $mban = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `time` >= ' . strtotime('now 00:00:00') . ' AND `vars` = "msg_bans" LIMIT 1', 1); + $mban = $u->testAction( + '`uid` = "' . $u->info['id'] . '" AND `time` >= ' . strtotime( + 'now 00:00:00' + ) . ' AND `vars` = "msg_bans" LIMIT 1', 1 + ); if (!isset($mban['id'])) { $u->addAction(time(), 'msg_bans', '1'); $mban['vals'] = 0; } else { - mysql_query('UPDATE `actions` SET `vals` = `vals` + 1 WHERE `id` = "' . $mban['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `actions` SET `vals` = `vals` + 1 WHERE `id` = "' . $mban['id'] . '" LIMIT 1' + ); $msg['delete'] = time(); } if ($mban['vals'] + 1 < 2) { $msg['fspam'] = str_replace('%', ',', $msg['fspam']); $msg['fspam'] = '' . ltrim($msg['fspam'], '0,') . ''; - $r['js'] .= 'chat.sendMsg(["new","' . time() . '","6","","' . $u->info['login'] . '","Р’ нашем чате запрещается сообщать ссылки РЅР° атльтернативные проекты. Запрещенные слова: ' . $msg['fspam'] . '. Предупреждения [' . ($mban['vals'] + 1) . '/1]","Black","1","1","0"]);'; + $r['js'] .= 'chat.sendMsg(["new","' . time( + ) . '","6","","' . $u->info['login'] . '","В нашем чате запрещается сообщать ссылки на атльтернативные проекты. Запрещенные слова: ' . $msg['fspam'] . '. Предупреждения [' . ($mban['vals'] + 1) . '/1]","Black","1","1","0"]);'; } else { - $r['js'] .= 'chat.sendMsg(["new","' . time() . '","6","","' . $u->info['login'] . '","Р’ нашем чате запрещается сообщать ссылки РЅР° атльтернативные проекты. Р’С‹ наказаны Р·Р° нарушение правил общения.","Black","1","1","0"]);'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','0','','','Автоинформатор: Персонаж " . $u->info['login'] . " [" . $u->info['level'] . "] был наказан Р·Р° нарушение правил общения.','-1','6','0')"); - mysql_query('UPDATE `users` SET `molch1` = "' . (time() + 1 * 60 * 60) . '",`molch2` = "' . (time() + 1 * 60 * 60) . '",`info_delete` = "' . (time() + 1 * 60 * 60) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - $rtxt = $rang . ' "' . $u->info['login'] . '" Автоинформатор: ' . $msg['text'] . ' [' . $msg['fspam'] . '].'; - mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('" . $u->info['id'] . "','" . $_SERVER['REMOTE_ADDR'] . "','" . $u->info['city'] . "','" . time() . "','" . $rtxt . "','" . $u->info['login'] . "',0)"); + $r['js'] .= 'chat.sendMsg(["new","' . time( + ) . '","6","","' . $u->info['login'] . '","В нашем чате запрещается сообщать ссылки на атльтернативные проекты. Вы наказаны за нарушение правил общения.","Black","1","1","0"]);'; + mysql_query( + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','0','','','Автоинформатор: Персонаж " . $u->info['login'] . " [" . $u->info['level'] . "] был наказан за нарушение правил общения.','-1','6','0')" + ); + mysql_query( + 'UPDATE `users` SET `molch1` = "' . (time() + 1 * 60 * 60) . '",`molch2` = "' . (time( + ) + 1 * 60 * 60) . '",`info_delete` = "' . (time( + ) + 1 * 60 * 60) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + $rtxt = $rang . ' "' . $u->info['login'] . '" Автоинформатор: ' . $msg['text'] . ' [' . $msg['fspam'] . '].'; + mysql_query( + "INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('" . $u->info['id'] . "','" . $_SERVER['REMOTE_ADDR'] . "','" . $u->info['city'] . "','" . time( + ) . "','" . $rtxt . "','" . $u->info['login'] . "',0)" + ); } } unset($admq); @@ -348,14 +441,24 @@ if (isset($_POST['msg']) && str_replace(' ', '', $_POST['msg']) != '') { } } - $qix = mysql_fetch_array(mysql_query('SELECT `id` FROM `friends` WHERE `ignor` > 0 AND `login_ignor` = "' . mysql_real_escape_string($pl['login']) . '" AND (`user_ignor` = "' . $u->info['login'] . '" OR `user` = "' . $u->info['id'] . '") LIMIT 1')); + $qix = mysql_fetch_array( + mysql_query( + 'SELECT `id` FROM `friends` WHERE `ignor` > 0 AND `login_ignor` = "' . mysql_real_escape_string( + $pl['login'] + ) . '" AND (`user_ignor` = "' . $u->info['login'] . '" OR `user` = "' . $u->info['id'] . '") LIMIT 1' + ) + ); if (isset($qix['id'])) { - $r['js'] .= 'chat.sendMsg(["new","' . time() . '","6","","' . $u->info['login'] . '","Вас добавили РІ РёРіРЅРѕСЂ: Р’С‹ РЅРµ можете отправлять сообщения персонажу "' . htmlspecialchars($msg['to']) . '".","Black","1","1","0"]);'; + $r['js'] .= 'chat.sendMsg(["new","' . time( + ) . '","6","","' . $u->info['login'] . '","Вас добавили в игнор: Вы не можете отправлять сообщения персонажу "' . htmlspecialchars( + $msg['to'] + ) . '".","Black","1","1","0"]);'; $msg['cancel']++; } if ($msg['type'] == 3 && $msg['to'] == 'klan') { if ($u->info['clan'] == 0) { - $r['js'] .= 'chat.sendMsg(["new","' . time() . '","6","","' . $u->info['login'] . '","Р’С‹ РЅРµ являетесь частью РѕРґРЅРѕРіРѕ РёР· Кланов Рё РЅРµ можете общаться РїРѕ этому каналу.","Black","1","1","0"]);'; + $r['js'] .= 'chat.sendMsg(["new","' . time( + ) . '","6","","' . $u->info['login'] . '","Вы не являетесь частью одного из Кланов и не можете общаться по этому каналу.","Black","1","1","0"]);'; $msg['cancel']++; } else { $msg['to'] = 'k' . $u->info['clan']; @@ -364,7 +467,13 @@ if (isset($_POST['msg']) && str_replace(' ', '', $_POST['msg']) != '') { } if ($u->info['molch1'] > time()) { if ($msg['to'] != '' && !isset($admq['id'])) { - $admq = mysql_fetch_array(mysql_query('SELECT `id`,`admin` FROM `users` WHERE `login` = "' . mysql_real_escape_string($msg['to']) . '" AND `admin` > 0 LIMIT 1')); + $admq = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`admin` FROM `users` WHERE `login` = "' . mysql_real_escape_string( + $msg['to'] + ) . '" AND `admin` > 0 LIMIT 1' + ) + ); if ($msg['type'] != 3) { unset($admq); } @@ -389,31 +498,34 @@ if (isset($_POST['msg']) && str_replace(' ', '', $_POST['msg']) != '') { $msg['to'] = ''; $msg['type'] = 21; if ($msw == 'USER IS FALSE') { - $r['js'] .= 'chat.sendMsg(["new","' . time() . '","6","","' . $u->info['login'] . '","Персонажа нет РІ данной комнате.","Black","1","1","0"]);'; + $r['js'] .= 'chat.sendMsg(["new","' . time( + ) . '","6","","' . $u->info['login'] . '","Персонажа нет в данной комнате.","Black","1","1","0"]);'; $nosend = 1; } } elseif ($chat->str_count($_POST['msg'], 3) == '/e ') { $msg['type'] = 21; $_POST['msg'] = ltrim($_POST['msg'], '/e '); - } elseif ($chat->str_count($_POST['msg'], 3) == '/Рµ ') { + } elseif ($chat->str_count($_POST['msg'], 3) == '/е ') { $msg['type'] = 21; - $_POST['msg'] = ltrim($_POST['msg'], '/Рµ '); + $_POST['msg'] = ltrim($_POST['msg'], '/е '); } elseif ($chat->str_count($_POST['msg'], 4) == ' /e ') { $msg['type'] = 21; $_POST['msg'] = ltrim($_POST['msg'], ' /e '); - } elseif ($chat->str_count($_POST['msg'], 4) == ' /Рµ ') { + } elseif ($chat->str_count($_POST['msg'], 4) == ' /е ') { $msg['type'] = 21; - $_POST['msg'] = ltrim($_POST['msg'], ' /Рµ '); + $_POST['msg'] = ltrim($_POST['msg'], ' /е '); } if ($nosend == 0) { - //Рменные смайлики - $_POST['msg'] = str_replace('%usersmile%-', '%usРµrsmilРµ%-', $_POST['msg']); + //Именные смайлики + $_POST['msg'] = str_replace('%usersmile%-', '%usеrsmilе%-', $_POST['msg']); $usml = explode(',', $u->info['add_smiles']); $i = 0; while ($i < count($usml)) { - $_POST['msg'] = str_replace(':' . $usml[$i] . ':', ':%usersmile%-' . $usml[$i] . ':', $_POST['msg']); + $_POST['msg'] = str_replace( + ':' . $usml[$i] . ':', ':%usersmile%-' . $usml[$i] . ':', $_POST['msg'] + ); $i++; } @@ -428,11 +540,13 @@ if (isset($_POST['msg']) && str_replace(' ', '', $_POST['msg']) != '') { $msg['nosee'] = round($u->info['host_reg']); if ($msg['nosee'] == 0) { $msg['nosee'] = -1; - $r['js'] .= 'chat.sendMsg(["new","' . time() . '","6","","' . $u->info['login'] . '","Р’ целях Р±РѕСЂСЊР±С‹ против рекламы, общение РІ чате доступно СЃ 8-РіРѕ СѓСЂРѕРІРЅСЏ. ","red","1","1","0"]);'; + $r['js'] .= 'chat.sendMsg(["new","' . time( + ) . '","6","","' . $u->info['login'] . '","В целях борьбы против рекламы, общение в чате доступно с 8-го уровня. ","red","1","1","0"]);'; } } - mysql_query('INSERT INTO `chat` (`nosee`,`active`,`invis`,`da`,`delete`,`molch`,`new`,`login`,`to`,`city`,`room`,`time`,`type`,`spam`,`text`,`toChat`,`color`,`typeTime`,`sound`,`global`) VALUES ( + mysql_query( + 'INSERT INTO `chat` (`nosee`,`active`,`invis`,`da`,`delete`,`molch`,`new`,`login`,`to`,`city`,`room`,`time`,`type`,`spam`,`text`,`toChat`,`color`,`typeTime`,`sound`,`global`) VALUES ( "' . $msg['nosee'] . '", "' . $activ . '", "' . $u->info['invis'] . '", @@ -452,59 +566,85 @@ if (isset($_POST['msg']) && str_replace(' ', '', $_POST['msg']) != '') { "' . $msg['color'] . '", "' . $msg['typeTime'] . '", "' . $msg['sound'] . '", - "' . $msg['global'] . '")'); + "' . $msg['global'] . '")' + ); } } - if ($msg['type'] == 2 && mb_convert_case($msg['to'], MB_CASE_LOWER) == 'комментатор') { - if (preg_match("/анекдот/i", mb_convert_case($_POST['msg'], MB_CASE_LOWER))) { + if ($msg['type'] == 2 && mb_convert_case($msg['to'], MB_CASE_LOWER) == 'комментатор') { + if (preg_match("/анекдот/i", mb_convert_case($_POST['msg'], MB_CASE_LOWER))) { $text_com = ''; - $sp_all = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `a_com_act` WHERE `act` = "' . $com_act . '" AND `time` > "' . time() . '" LIMIT 5')); + $sp_all = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(`id`) FROM `a_com_act` WHERE `act` = "' . $com_act . '" AND `time` > "' . time( + ) . '" LIMIT 5' + ) + ); if ($sp_all[0] > 0) { if (rand(0, 100) < 75) { $text_com = [ - 'Отстань попрошайка! ... Рщу анекдоты, интернет РЅРµ маленький!', - 'Подожди... Сейчас что-РЅРёР±СѓРґСЊ найду', - 'Почти нашел...', - 'Р’РѕС‚ РѕРґРёРЅ есть, РЅРѕ РѕРЅ РЅРµ интересный...', - 'Рђ свет РЅР° центральной площади тьму "пинает"... Р­С…...' + 'Отстань попрошайка! ... Ищу анекдоты, интернет не маленький!', + 'Подожди... Сейчас что-нибудь найду', + 'Почти нашел...', + 'Вот один есть, но он не интересный...', + 'А свет на центральной площади тьму "пинает"... Эх...', ]; $text_com = $text_com[rand(0, (count($text_com) - 1))]; } } else { $sp_all = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `a_com_anekdot`')); $sp_all = rand(1, $sp_all[0]); - $sp_all = mysql_fetch_array(mysql_query('SELECT * FROM `a_com_anekdot` WHERE `id` = "' . $sp_all . '" LIMIT 1')); + $sp_all = mysql_fetch_array( + mysql_query('SELECT * FROM `a_com_anekdot` WHERE `id` = "' . $sp_all . '" LIMIT 1') + ); if (isset($sp_all['id'])) { $text_com = $sp_all['text']; $text_com = str_replace("
    ", "
        ", $text_com); $text_com = str_replace("
    ", "
        ", $text_com); $text_com = str_ireplace("\r\n", "", $text_com); $text_com = str_replace("", "", $text_com); - $text_com = 'Анекдот:
        ' . $text_com . '
    '; + $text_com = 'Анекдот:
        ' . $text_com . '
    '; } else { - $text_com = 'Анекдот РёР· головы вылетел...'; + $text_com = 'Анекдот из головы вылетел...'; } - mysql_query('INSERT INTO `a_com_act` (`act`,`time`,`uid`) VALUES ("0","' . (time() + 60) . '","' . $u->info['id'] . '")'); + mysql_query( + 'INSERT INTO `a_com_act` (`act`,`time`,`uid`) VALUES ("0","' . (time( + ) + 60) . '","' . $u->info['id'] . '")' + ); } if ($text_com != '') { - mysql_query('INSERT INTO `chat` (`text`,`login`,`to`,`city`,`room`,`type`,`time`,`new`) VALUES ("' . $text_com . '","Комментатор","' . $u->info['login'] . '","' . $u->info['city'] . '","' . $u->info['room'] . '","2","' . time() . '","1")'); + mysql_query( + 'INSERT INTO `chat` (`text`,`login`,`to`,`city`,`room`,`type`,`time`,`new`) VALUES ("' . $text_com . '","Комментатор","' . $u->info['login'] . '","' . $u->info['city'] . '","' . $u->info['room'] . '","2","' . time( + ) . '","1")' + ); } } else { include('commentator.php'); if ($comment != '') { - mysql_query('INSERT INTO `chat` (`text`,`login`,`to`,`city`,`room`,`type`,`time`,`new`) VALUES ("' . $comment . '","Комментатор","' . $u->info['login'] . '","' . $u->info['city'] . '","' . $u->info['room'] . '","2","' . time() . '","1")'); + mysql_query( + 'INSERT INTO `chat` (`text`,`login`,`to`,`city`,`room`,`type`,`time`,`new`) VALUES ("' . $comment . '","Комментатор","' . $u->info['login'] . '","' . $u->info['city'] . '","' . $u->info['room'] . '","2","' . time( + ) . '","1")' + ); } } } - mysql_query('UPDATE `users` SET `afk` = "",`dnd` = "",`timeMain` = "' . time() . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `users` SET `afk` = "",`dnd` = "",`timeMain` = "' . time( + ) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); } } -//Получаем СЃРїРёСЃРѕРє онлайн +//Получаем список онлайн if ($_GET['r1'] != 0) { - $sp = mysql_query('SELECT `u`.`pass`,`u`.`sex`,`s`.`dnow`,`u`.`timeMain`,`s`.`bot`,`s`.`atack`,`u`.`afk`,`u`.`dnd`,`u`.`banned`,`u`.`molch1`,`u`.`room`,`u`.`id`,`u`.`city`,`u`.`cityreg`,`u`.`online`,`u`.`align`,`u`.`clan`,`u`.`login`,`u`.`level`,`u`.`inTurnir`,`u`.`battle`,`u`.`invis`,`u`.`inUser`,`s`.`x`,`s`.`y` FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE ((`u`.`room` = "' . $u->info['room'] . '" AND "' . mysql_real_escape_string((int)$_GET['r3']) . '" != "1") OR ("' . mysql_real_escape_string((int)$_GET['r3']) . '" = "1" AND `pass` NOT LIKE "%saint%")) AND `mail`!="No E-mail" AND `room` != "303" ORDER BY `u`.`inUser` DESC,`u`.`online` DESC,`u`.`login` DESC LIMIT 1000'); + $sp = mysql_query( + 'SELECT `u`.`pass`,`u`.`sex`,`s`.`dnow`,`u`.`timeMain`,`s`.`bot`,`s`.`atack`,`u`.`afk`,`u`.`dnd`,`u`.`banned`,`u`.`molch1`,`u`.`room`,`u`.`id`,`u`.`city`,`u`.`cityreg`,`u`.`online`,`u`.`align`,`u`.`clan`,`u`.`login`,`u`.`level`,`u`.`inTurnir`,`u`.`battle`,`u`.`invis`,`u`.`inUser`,`s`.`x`,`s`.`y` FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE ((`u`.`room` = "' . $u->info['room'] . '" AND "' . mysql_real_escape_string( + (int)$_GET['r3'] + ) . '" != "1") OR ("' . mysql_real_escape_string( + (int)$_GET['r3'] + ) . '" = "1" AND `pass` NOT LIKE "%saint%")) AND `mail`!="No E-mail" AND `room` != "303" ORDER BY `u`.`inUser` DESC,`u`.`online` DESC,`u`.`login` DESC LIMIT 1000' + ); $ar_id = 0; $ar_lvl = 0; $ar_all = 0; @@ -518,7 +658,9 @@ if ($_GET['r1'] != 0) { $ysee = 0; } else { if ($pl['online'] < time() - 120) { - mysql_query('UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' + ); } } } else { @@ -570,9 +712,13 @@ if ($_GET['r1'] != 0) { if ($pl['clan'] > 0) { if ($u->info['clan'] > 0 && $pl['clan'] != $u->info['clan']) { if (!isset($cw['war'][$pl['clan']][$u->info['clan']])) { - $pl['cwar'] = mysql_fetch_array(mysql_query('SELECT `id`,`type` FROM `clan_wars` WHERE + $pl['cwar'] = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`type` FROM `clan_wars` WHERE ((`clan1` = "' . $pl['clan'] . '" AND `clan2` = "' . $u->info['clan'] . '") OR (`clan2` = "' . $pl['clan'] . '" AND `clan1` = "' . $u->info['clan'] . '")) AND - `time_finish` > ' . time() . ' LIMIT 1')); + `time_finish` > ' . time() . ' LIMIT 1' + ) + ); if (isset($pl['cwar']['id'])) { $cw['war'][$pl['clan']][$u->info['clan']] = $pl['cwar']['type']; } else { @@ -584,7 +730,9 @@ if ($_GET['r1'] != 0) { } } if (!isset($cw[$pl['clan']])) { - $pl['clan'] = mysql_fetch_array(mysql_query('SELECT `name_mini` FROM `clan` WHERE `id` = "' . $pl['clan'] . '" LIMIT 1')); + $pl['clan'] = mysql_fetch_array( + mysql_query('SELECT `name_mini` FROM `clan` WHERE `id` = "' . $pl['clan'] . '" LIMIT 1') + ); } else { $pl['clan'] = $cw[$pl['clan']]; } @@ -597,7 +745,11 @@ if ($_GET['r1'] != 0) { } else { $pl['atack'] = 0; } - $trvm = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `eff_users` WHERE `uid` = "' . $pl['id'] . '" AND (`id_eff` = "4" OR `id_eff` = "6") AND `delete` = "0" ORDER BY `id_eff` ASC LIMIT 6')); + $trvm = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`name` FROM `eff_users` WHERE `uid` = "' . $pl['id'] . '" AND (`id_eff` = "4" OR `id_eff` = "6") AND `delete` = "0" ORDER BY `id_eff` ASC LIMIT 6' + ) + ); $trvm = $trvm['name']; $r['list'] .= '"' . $r['xu'] . '":["' . $pl['id'] . '","' . $pl['login'] . '","' . $pl['level'] . '","' . $pl['align'] . '","' . $pl['clan'] . '","' . $pl['cityreg'] . '","' . $pl['city'] . '","' . $pl['room'] . '","' . $pl['afk'] . '","' . $pl['dnd'] . '","' . $pl['banned'] . '","' . $pl['molch1'] . '","' . $pl['battle'] . '","' . $pl['atack'] . '","' . $trvm . '","' . ($pl['sex'] * 0) . '","' . $pl['align2'] . '"],'; $ar_id += $pl['id']; @@ -621,13 +773,14 @@ function json_fix_cyr($json_str) } -//Получаем сообщения +//Получаем сообщения if (isset($_GET['mid']) && !isset($_POST['mid'])) { $_POST['mid'] = $_GET['mid']; } $i = 0; $l = 0; -$sp = mysql_query('SELECT `nosee`,`frv`,`id`,`dn`,`active`,`invis`,`login`,`to`,`city`,`room`,`time`,`type`,`spam`,`text`,`toChat`,`color`,`typeTime`,`sound`,`global`,`delete`,`molch`,`da` FROM `chat` WHERE +$sp = mysql_query( + 'SELECT `nosee`,`frv`,`id`,`dn`,`active`,`invis`,`login`,`to`,`city`,`room`,`time`,`type`,`spam`,`text`,`toChat`,`color`,`typeTime`,`sound`,`global`,`delete`,`molch`,`da` FROM `chat` WHERE ( ( `delete` > 0 @@ -685,7 +838,8 @@ $sp = mysql_query('SELECT `nosee`,`frv`,`id`,`dn`,`active`,`invis`,`login`,`to`, ) ) ) - ORDER BY `id` ASC'); + ORDER BY `id` ASC' +); while ($pl = mysql_fetch_array($sp)) { if ($pl['delete'] > 0) { @@ -698,20 +852,7 @@ while ($pl = mysql_fetch_array($sp)) { $see = 1; - if ( - $pl['type'] == 8 && - $u->info['admin'] == 0 && - ( - ( - $u->info['align'] <= 1 || - $u->info['align'] >= 2 - ) && - ( - $u->info['align'] <= 3 || - $u->info['align'] >= 4 - ) - ) - ) { + if ($pl['type'] == 8 && isModerOrAdmin($u->info)) { $see = 0; } @@ -720,7 +861,7 @@ while ($pl = mysql_fetch_array($sp)) { $pl['city'] = $u->info['city']; } - //Проверки РЅР° доступ Рє просмотру + //Проверки на доступ к просмотру if ( (( ( @@ -737,14 +878,7 @@ while ($pl = mysql_fetch_array($sp)) { $pl['type'] == 5 || $pl['type'] == 6 || ( - $pl['type'] == 8 && - ( - $u->info['admin'] > 0 || - ( - $u->info['align'] > 1 && - $u->info['align'] < 2 - ) - ) + $pl['type'] == 8 && isModerOrAdmin($u->info) ) ) && ( @@ -785,7 +919,7 @@ while ($pl = mysql_fetch_array($sp)) { } unset($n, $j, $ex); } - //Клановое сообщение (РїРѕ всем городам) + //Клановое сообщение (по всем городам) if ($pl['type'] == -3 && ($pl['to'] == 'k' . $u->info['clan'] || $u->info['admin'] > 0)) { $pl['type'] = 3; if ($pl['to'] == 'k' . $u->info['clan']) { @@ -796,7 +930,7 @@ while ($pl = mysql_fetch_array($sp)) { $see = 0; } - //Системное сообщение только РІ этой комнате + //Системное сообщение только в этой комнате if ( $pl['type'] == 6 && $pl['room'] > 0 && @@ -806,17 +940,17 @@ while ($pl = mysql_fetch_array($sp)) { $see = 0; } - //Системное сообщение РїРѕ всему РіРѕСЂРѕРґСѓ + //Системное сообщение по всему городу if ($pl['type'] == 8 && $pl['city'] != $u->info['city'] && $pl['global'] == 0) { $see = 0; } - //Сообщение СЃ молчанкой + //Сообщение с молчанкой if ($pl['molch'] > 0) { $see = 0; } - //Сообщение отправлено РІ РґСЂСѓРіРѕР№ комнате + //Сообщение отправлено в другой комнате if ( ( $pl['type'] == 1 || @@ -834,24 +968,24 @@ while ($pl = mysql_fetch_array($sp)) { $see = 0; } - //Сообщение прочее, РІ РґСЂСѓРіРѕРј РіРѕСЂРѕРґРµ + //Сообщение прочее, в другом городе if ($pl['city'] != $u->info['city'] && $pl['global'] == 0) { $see = 0; } - //Глобал + //Глобал if ($pl['global'] == 1 && $pl['city'] == $u->info['city'] && $pl['type'] != -3) { $see = 1; } - //Пещерное сообщение + //Пещерное сообщение if ($pl['dn'] > 0 && $u->info['dnow'] != $pl['dn']) { $see = 0; } $modr = 0; - if (($u->info['align'] > 1 && $u->info['align'] < 2) || ($u->info['align'] > 3 && $u->info['align'] < 4)) { + if (isModerOrAdmin($u->info)) { $modr = 1; } @@ -859,9 +993,9 @@ while ($pl = mysql_fetch_array($sp)) { $see = 0; } else { if ($pl['nosee'] != 0 && $pl['login'] != $u->info['login']) { - $noseein = 'скрыто'; + $noseein = 'скрыто'; if ($u->info['id'] == $pl['nosee']) { - $noseein = 'ваш реферал'; + $noseein = 'ваш реферал'; } $pl['text'] = '[' . $noseein . '] ' . $pl['text'] . ''; if ($u->info['admin'] > 0 || $modr == 1) { @@ -872,7 +1006,13 @@ while ($pl = mysql_fetch_array($sp)) { if ($see == 1 && $pl['delete'] == 0 && $pl['login'] != '') { - $qix = mysql_fetch_array(mysql_query('SELECT `id` FROM `friends` WHERE `ignor` > 0 AND `login_ignor` = "' . mysql_real_escape_string($pl['login']) . '" AND (`user_ignor` = "' . $u->info['login'] . '" OR `user` = "' . $u->info['id'] . '") LIMIT 1')); + $qix = mysql_fetch_array( + mysql_query( + 'SELECT `id` FROM `friends` WHERE `ignor` > 0 AND `login_ignor` = "' . mysql_real_escape_string( + $pl['login'] + ) . '" AND (`user_ignor` = "' . $u->info['login'] . '" OR `user` = "' . $u->info['id'] . '") LIMIT 1' + ) + ); if (isset($qix['id'])) { $see = 0; } @@ -885,7 +1025,10 @@ while ($pl = mysql_fetch_array($sp)) { $lmsch = mysql_fetch_array(mysql_query('SELECT `id` FROM `chat` ORDER BY `id` DESC LIMIT 1')); if (isset($lmsch['id'])) { $lmsch['id']++; - mysql_query('UPDATE `chat` SET `id` = "' . $lmsch['id'] . '",`time` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `chat` SET `id` = "' . $lmsch['id'] . '",`time` = "' . time( + ) . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' + ); $pl['id'] = $lmsch['id']; } else { mysql_query('UPDATE `chat` SET `time` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); @@ -899,17 +1042,27 @@ while ($pl = mysql_fetch_array($sp)) { $r['msg'] .= ',"' . $i . '":{"s":"' . $pl['id'] . '"}'; } else { $reimg = []; - if (preg_match_all("/\[img\[(.*?)\]\]\[1\]/", $pl['text'], $reimg) && ($u->info['admin'] > 0 || $pl['type'] == 5 || $pl['type'] == 6 || $pl['type'] == 10 || $pl['type'] == 11)) { + if (preg_match_all( + "/\[img\[(.*?)\]\]\[1\]/", $pl['text'], $reimg + ) && ($u->info['admin'] > 0 || $pl['type'] == 5 || $pl['type'] == 6 || $pl['type'] == 10 || $pl['type'] == 11)) { $k = 0; while ($k <= count($reimg[1])) { - $pl['text'] = str_replace('[img[' . $reimg[1][$k] . ']][1]', '', $pl['text']); + $pl['text'] = str_replace( + '[img[' . $reimg[1][$k] . ']][1]', + '', $pl['text'] + ); $k++; } } - if (preg_match_all("/\[img\[(.*?)\]\]/", $pl['text'], $reimg) && ($u->info['admin'] > 0 || $pl['type'] == 5 || $pl['type'] == 6 || $pl['type'] == 10 || $pl['type'] == 11)) { + if (preg_match_all( + "/\[img\[(.*?)\]\]/", $pl['text'], $reimg + ) && ($u->info['admin'] > 0 || $pl['type'] == 5 || $pl['type'] == 6 || $pl['type'] == 10 || $pl['type'] == 11)) { $k = 0; while ($k <= count($reimg[1])) { - $pl['text'] = str_replace('[img[' . $reimg[1][$k] . ']]', '', $pl['text']); + $pl['text'] = str_replace( + '[img[' . $reimg[1][$k] . ']]', '', + $pl['text'] + ); $k++; } } @@ -917,31 +1070,43 @@ while ($pl = mysql_fetch_array($sp)) { if (preg_match_all("/item\[(.*?)\]/", $pl['text'], $reimg)) { $k = 0; while ($k <= count($reimg[1])) { - $pl['text'] = str_replace('item[' . $reimg[1][$k] . ']', 'Предмет', $pl['text']); + $pl['text'] = str_replace( + 'item[' . $reimg[1][$k] . ']', + 'Предмет', + $pl['text'] + ); $k++; } } - if (preg_match_all("/\.(?:mp3)$/i", $pl['text'], $reimg)) //РўРЈРў аудио audio + if (preg_match_all("/\.(?:mp3)$/i", $pl['text'], $reimg)) //ТУТ аудио audio { $k = 0; while ($k <= count($reimg[1])) { - $pl['text'] = str_replace('item[' . $reimg[1][$k] . ']', 'РђСѓРґРёРѕ запись', $pl['text']); + $pl['text'] = str_replace( + 'item[' . $reimg[1][$k] . ']', + 'Аудио запись', + $pl['text'] + ); $k++; } } if (preg_match_all("/item \[(.*?)\]/", $pl['text'], $reimg)) { $k = 0; while ($k <= count($reimg[1])) { - $pl['text'] = str_replace('item [' . $reimg[1][$k] . ']', 'Предмет', $pl['text']); + $pl['text'] = str_replace( + 'item [' . $reimg[1][$k] . ']', + 'Предмет', + $pl['text'] + ); $k++; } } if ($pl['type'] != 3 && ($pl['invis'] == 1 || $pl['invis'] > time())) { if ($u->info['admin'] == 0) { - $pl['login'] = 'Невидимка'; + $pl['login'] = 'Невидимка'; } else { - $pl['login'] = 'Невидимка (' . $pl['login'] . ')'; + $pl['login'] = 'Невидимка (' . $pl['login'] . ')'; } } @@ -950,7 +1115,9 @@ while ($pl = mysql_fetch_array($sp)) { $pl['color'] = 'Black'; } - $r['msg'] .= ',"m' . $i . '":["' . $pl['id'] . '","' . $pl['time'] . '","' . $pl['type'] . '","' . $pl['login'] . '","' . $pl['to'] . '","' . $pl['text'] . '","' . $pl['color'] . '","' . $pl['toChat'] . '","' . $pl['typeTime'] . '","' . $pl['sound'] . '","' . $pl['global'] . '","' . $pl['molch'] . '","' . $pl['active'] . '","' . date('H:i', $pl['time']) . '","' . date('d.m.Y H:i', $pl['time']) . '","' . $pl['frv'] . '","' . $pl['invis'] . '"]'; + $r['msg'] .= ',"m' . $i . '":["' . $pl['id'] . '","' . $pl['time'] . '","' . $pl['type'] . '","' . $pl['login'] . '","' . $pl['to'] . '","' . $pl['text'] . '","' . $pl['color'] . '","' . $pl['toChat'] . '","' . $pl['typeTime'] . '","' . $pl['sound'] . '","' . $pl['global'] . '","' . $pl['molch'] . '","' . $pl['active'] . '","' . date( + 'H:i', $pl['time'] + ) . '","' . date('d.m.Y H:i', $pl['time']) . '","' . $pl['frv'] . '","' . $pl['invis'] . '"]'; } } if ($l < $pl['id']) { @@ -960,26 +1127,27 @@ while ($pl = mysql_fetch_array($sp)) { } $r['msg'] = '{"ld":"' . (0 + $l) . '","id":"' . $i . '"' . $r['msg'] . '}'; -$rsys = $u->sys_see(0); -if ($rsys != '') { - $r['js'] .= $rsys; -} -unset($rsys); -//Генерируем ключ + +//Генерируем ключ $r['key'] = md5($u->room['name'] . '+' . $ar_id . '+' . $ar_lvl . '+' . $ar_all); unset($ar_id, $ar_lvl); if ($_COOKIE['chatCfg12'] == 0) { $_GET['key'] = time(); } if ($r['key'] == $_GET['key']) { - //РЎРїРёСЃРѕРє онлайн остается неизменным + //Список онлайн остается неизменным unset($r['rn'], $r['list'], $r['key'], $r['xu']); } elseif ($_GET['r1'] != 0) { $r['rn'] = iconv('cp1251', 'utf-8', $u->room['name']); $r['list'] = iconv('cp1251', 'utf-8', $r['list']); } -$posts = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `items_users` AS `iu` WHERE `iu`.`uid` = "-51' . $u->info['id'] . '" AND `iu`.`delete` = 0 AND `iu`.`inOdet` = 0 AND `iu`.`inShop` = 0 AND `iu`.`lastUPD` < ' . time() . ' LIMIT 1')); +$posts = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(`id`) FROM `items_users` AS `iu` WHERE `iu`.`uid` = "-51' . $u->info['id'] . '" AND `iu`.`delete` = 0 AND `iu`.`inOdet` = 0 AND `iu`.`inShop` = 0 AND `iu`.`lastUPD` < ' . time( + ) . ' LIMIT 1' + ) +); $posts = $posts[0]; if ($posts > 0) { @@ -988,17 +1156,25 @@ if ($posts > 0) { $r['js'] .= ' $("#postdiv").hide();'; } -//Предложения вступить РІ клан +//Предложения вступить в клан $sp = mysql_query('SELECT * FROM `clan_add` WHERE `uid` = "' . $u->info['id'] . '" AND `yes` = 0 AND `no` = 0'); while ($pl = mysql_fetch_array($sp)) { - $clns = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`align` FROM `clan` WHERE `id` = "' . $pl['clan'] . '" LIMIT 1')); - $usr = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`level` FROM `users` WHERE `id` = "' . $pl['uid_clan'] . '" LIMIT 1')); + $clns = mysql_fetch_array( + mysql_query('SELECT `id`,`name`,`align` FROM `clan` WHERE `id` = "' . $pl['clan'] . '" LIMIT 1') + ); + $usr = mysql_fetch_array( + mysql_query('SELECT `id`,`login`,`level` FROM `users` WHERE `id` = "' . $pl['uid_clan'] . '" LIMIT 1') + ); $r['js'] .= 'top.inclanNew(' . $pl['id'] . ',"' . $clns['align'] . '","' . $clns['id'] . '","' . $clns['name'] . '","' . $usr['login'] . '
    [' . $usr['level'] . ']");'; } unset($clns); -//Предложение РЅР° обмен -$trf = mysql_fetch_array(mysql_query('SELECT * FROM `transfers` WHERE `uid2` = "' . $u->info['id'] . '" AND `start2` = 0 AND `cancel1` = 0 AND `cancel2` = 0 LIMIT 1')); +//Предложение на обмен +$trf = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `transfers` WHERE `uid2` = "' . $u->info['id'] . '" AND `start2` = 0 AND `cancel1` = 0 AND `cancel2` = 0 LIMIT 1' + ) +); if (isset($trf['id'])) { $utf = mysql_fetch_array(mysql_query('SELECT `login` FROM `users` WHERE `id` = "' . $trf['uid1'] . '" LIMIT 1')); if (isset($utf['login']) && $u->info['battle'] == 0) { @@ -1008,7 +1184,7 @@ if (isset($trf['id'])) { } } -//Перекодируем строки +//Перекодируем строки if ($r['js'] != null) { $r['js'] = iconv('cp1251', 'utf-8', $r['js']); } else { diff --git a/quest_dlg_edit.php b/quest_dlg_edit.php index f9036c3f..b29fc00e 100644 --- a/quest_dlg_edit.php +++ b/quest_dlg_edit.php @@ -1,4 +1,5 @@ info['admin'] > 0 ) { - - $itm = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_dlg` WHERE `id` = "'.mysql_real_escape_string($_GET['pid']).'" LIMIT 1')); - if(isset($itm['id'])) { - if($itm['qid'] == 0) { - if(isset($_POST['newdata'])) { - mysql_query('UPDATE `dungeon_dlg` SET `text` = "'.mysql_real_escape_string($_POST['newdata']).'" WHERE `id` = "'.mysql_real_escape_string($itm['id']).'" LIMIT 1'); - die(''); - }elseif(isset($_GET['delete']) && $_GET['delete'] == 'true') { - //Удаляем саму страницу диалога - mysql_query('DELETE FROM `dungeon_dlg` WHERE `id` = "'.mysql_real_escape_string($itm['id']).'" LIMIT 1'); - //Удаляем ответы страницы диалога - mysql_query('DELETE FROM `dungeon_dlg` WHERE `qid` = "'.mysql_real_escape_string($itm['id']).'"'); - die(''); - } - echo '
    Номер диалога: '.$itm['id'].'

    '; - }else{ - if(isset($_POST['newdata'])) { - mysql_query('UPDATE `dungeon_dlg` SET `text` = "'.mysql_real_escape_string($_POST['newdata']).'",`action` = "'.mysql_real_escape_string($_POST['newdata2']).'",`tr` = "'.mysql_real_escape_string($_POST['newdata3']).'",`sort` = "'.mysql_real_escape_string((int)$_POST['newdata4']).'" WHERE `id` = "'.mysql_real_escape_string($itm['id']).'" LIMIT 1'); - die(''); - }elseif(isset($_GET['delete']) && $_GET['delete'] == 'true') { - //Удаляем саму страницу диалога - mysql_query('DELETE FROM `dungeon_dlg` WHERE `id` = "'.mysql_real_escape_string($itm['id']).'" LIMIT 1'); - die(''); - } - echo '
    Номер варианта ответа: '.$itm['id'].'

    Действия:
    Требует:
    Приоритет вывода:
    '; - } - }else{ - echo 'Диалог не найден.'; - } +if ($u->info['admin'] <= 0) { + return; +} + +$itm = mysql_fetch_array( + mysql_query('SELECT * FROM `dungeon_dlg` WHERE `id` = "' . mysql_real_escape_string($_GET['pid']) . '" LIMIT 1') +); +if (isset($itm['id'])) { + if ($itm['qid'] == 0) { + if (isset($_POST['newdata'])) { + mysql_query( + 'UPDATE `dungeon_dlg` SET `text` = "' . mysql_real_escape_string( + $_POST['newdata'] + ) . '" WHERE `id` = "' . mysql_real_escape_string($itm['id']) . '" LIMIT 1' + ); + die(''); + } elseif (isset($_GET['delete']) && $_GET['delete'] == 'true') { + //Удаляем саму страницу диалога + mysql_query( + 'DELETE FROM `dungeon_dlg` WHERE `id` = "' . mysql_real_escape_string($itm['id']) . '" LIMIT 1' + ); + //Удаляем ответы страницы диалога + mysql_query('DELETE FROM `dungeon_dlg` WHERE `qid` = "' . mysql_real_escape_string($itm['id']) . '"'); + die(''); + } + echo '
    Номер диалога: ' . $itm['id'] . '

    '; + } else { + if (isset($_POST['newdata'])) { + mysql_query( + 'UPDATE `dungeon_dlg` SET `text` = "' . mysql_real_escape_string( + $_POST['newdata'] + ) . '",`action` = "' . mysql_real_escape_string( + $_POST['newdata2'] + ) . '",`tr` = "' . mysql_real_escape_string( + $_POST['newdata3'] + ) . '",`sort` = "' . mysql_real_escape_string( + (int)$_POST['newdata4'] + ) . '" WHERE `id` = "' . mysql_real_escape_string($itm['id']) . '" LIMIT 1' + ); + die(''); + } elseif (isset($_GET['delete']) && $_GET['delete'] == 'true') { + //Удаляем саму страницу диалога + mysql_query( + 'DELETE FROM `dungeon_dlg` WHERE `id` = "' . mysql_real_escape_string($itm['id']) . '" LIMIT 1' + ); + die(''); + } + echo '
    Номер варианта ответа: ' . $itm['id'] . '

    Действия:
    Требует:
    Приоритет вывода:
    '; + } +} else { + echo 'Диалог не найден.'; } - -?> \ No newline at end of file diff --git a/recovery.php b/recovery.php index 136047d1..9a762817 100644 --- a/recovery.php +++ b/recovery.php @@ -1,106 +1,115 @@ info['id']) || $u->info['admin'] == 0) { +if(!$u->info['admin']) { header('location: https://new-combats.com/'); die(); } -// $_GET['id'] = (int)$_GET['id']; $_GET['exp'] = (int)$_GET['exp']; -// $us = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.mysql_real_escape_string($_GET['id']).'" LIMIT 1')); -if( !isset($us['id']) ) { - -}else{ - $st = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "'.mysql_real_escape_string($us['id']).'" LIMIT 1')); - $lvl = mysql_fetch_array(mysql_query('SELECT * FROM `levels` WHERE `upLevel` = "'.$st['upLevel'].'" LIMIT 1')); - $lvn = mysql_fetch_array(mysql_query('SELECT * FROM `levels` WHERE `exp` <= "'.mysql_real_escape_string($_GET['exp']).'" ORDER BY `exp` DESC LIMIT 1')); - // - echo 'Логин: '.$us['login'].' ['.$us['level'].', ап:'.$st['upLevel'].']
    Откатываем на '.$_GET['exp'].' опыта (Уровень: '.$lvn['nextLevel'].' , апп: '.$lvn['upLevel'].').
    '; - // - $r = array( 0 , 0 , 0 , 0 , 0 , 0 ); - // - $sp = mysql_query('SELECT * FROM `levels` WHERE `upLevel` <= '.$st['upLevel'].' AND `upLevel` > '.$lvn['upLevel'].''); - while( $pl = mysql_fetch_array($sp) ) { - if(isset($pl['vinosl'])) { - $pl['vinos'] = $pl['vinosl']; - } - $r[0] -= $pl['ability']; - $r[1] -= $pl['skills']; - $r[2] -= $pl['nskills']; - $r[3] -= $pl['vinos']; - $r[4] -= $pl['duh']; - $r[5] -= $pl['money']; - } - // - $sts = $u->lookStats($st['stats']); - $nst = array( - 's1' => 3, - 's2' => 3, - 's3' => 3, - 's4' => 3, - 's5' => 0, - 's6' => 0, - 's7' => 0 - ); - // - $sp = mysql_query('SELECT * FROM `levels` WHERE `upLevel` <= '.$lvn['upLevel'].''); - while( $pl = mysql_fetch_array($sp) ) { - if(isset($pl['vinosl'])) { - $pl['vinos'] = $pl['vinosl']; - } - $nst['s4'] += $pl['vinos']; - $nst['s7'] += $pl['duh']; - $nst['a'] += $pl['ability']; - $nst['s'] += $pl['skills']; - $nst['n'] += $pl['nskills']; - } - // - $rep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "'.$us['id'].'" LIMIT 1')); - $nst['a'] += $rep['add_stats']; - $nst['s'] += $rep['add_skills']; - $nst['n'] += $rep['add_skills2']; - // - echo '
    Откат уровня: '.($lvn['nextLevel']-$us['level']).'
    '; - echo '
    Откат статов: '. $r[0]; - echo '
    Откат умений: '. $r[1]; - echo '
    Откат навыков: '. $r[2]; - echo '
    Откат выносливости: '. $r[3]; - echo '
    Откат духа: '. $r[4]; - echo '
    Откат денег: '. $r[5]; - echo '
    '; - // - echo '
    '; - // - $stt = 's7='.$nst['s7'].'|s1=3|s2=3|s3=3|s4='.$nst['s4'].'|s5=0|s6=0|s8=0|s9=0|s10=0|s11=0|a1=0|mg1=0|a2=0|mg2=0|a3=0|mg3=0|a4=10|mg4=0|a5=0|mg5=0|a6=0|mg6=0|a7=0|mg7=0|os1=0|os2=0|os3=0|os4=0|os5=0|os6=0|os7=0|os8=0|os9=0|os10=0|os11=0|s12=0|s13=0|s14=0|s15=0'; - echo $stt; - print_r($nst); - // - if(isset($_GET['good'])) { - // - mysql_query('UPDATE `users` SET `level` = "'.$lvn['nextLevel'].'" , `money` = "'.($us['money'] + $r['5']).'" WHERE `id` = "'.$us['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET - - `stats` = "'.$stt.'", - `upLevel` = "'.$lvn['upLevel'].'", - `ability` = "'.$nst['a'].'", - `skills` = "'.$nst['s'].'", - `nskills` = "'.$nst['n'].'", - `exp` = "'.mysql_real_escape_string($_GET['exp']).'" - - WHERE `id` = "'.$us['id'].'" LIMIT 1'); - // - }else{ - echo '
    Откатить!'; - } - // +if(!isset($us['id'])) { + return; +} +$st = mysql_fetch_array( + mysql_query('SELECT * FROM `stats` WHERE `id` = "' . mysql_real_escape_string($us['id']) . '" LIMIT 1') +); +$lvl = mysql_fetch_array(mysql_query('SELECT * FROM `levels` WHERE `upLevel` = "' . $st['upLevel'] . '" LIMIT 1')); +$lvn = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `levels` WHERE `exp` <= "' . mysql_real_escape_string( + $_GET['exp'] + ) . '" ORDER BY `exp` DESC LIMIT 1' + ) +); +// +echo 'Логин: ' . $us['login'] . ' [' . $us['level'] . ', ап:' . $st['upLevel'] . ']
    Откатываем на ' . $_GET['exp'] . ' опыта (Уровень: ' . $lvn['nextLevel'] . ' , апп: ' . $lvn['upLevel'] . ').
    '; +// +$r = [0, 0, 0, 0, 0, 0]; +// +$sp = mysql_query( + 'SELECT * FROM `levels` WHERE `upLevel` <= ' . $st['upLevel'] . ' AND `upLevel` > ' . $lvn['upLevel'] . '' +); +while ($pl = mysql_fetch_array($sp)) { + if (isset($pl['vinosl'])) { + $pl['vinos'] = $pl['vinosl']; + } + $r[0] -= $pl['ability']; + $r[1] -= $pl['skills']; + $r[2] -= $pl['nskills']; + $r[3] -= $pl['vinos']; + $r[4] -= $pl['duh']; + $r[5] -= $pl['money']; +} +// +$sts = $u->lookStats($st['stats']); +$nst = [ + 's1' => 3, + 's2' => 3, + 's3' => 3, + 's4' => 3, + 's5' => 0, + 's6' => 0, + 's7' => 0 +]; +// +$sp = mysql_query('SELECT * FROM `levels` WHERE `upLevel` <= ' . $lvn['upLevel'] . ''); +while ($pl = mysql_fetch_array($sp)) { + if (isset($pl['vinosl'])) { + $pl['vinos'] = $pl['vinosl']; + } + $nst['s4'] += $pl['vinos']; + $nst['s7'] += $pl['duh']; + $nst['a'] += $pl['ability']; + $nst['s'] += $pl['skills']; + $nst['n'] += $pl['nskills']; +} +// +$rep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "' . $us['id'] . '" LIMIT 1')); +$nst['a'] += $rep['add_stats']; +$nst['s'] += $rep['add_skills']; +$nst['n'] += $rep['add_skills2']; +// +echo '
    Откат уровня: ' . ($lvn['nextLevel'] - $us['level']) . '
    '; +echo '
    Откат статов: ' . $r[0]; +echo '
    Откат умений: ' . $r[1]; +echo '
    Откат навыков: ' . $r[2]; +echo '
    Откат выносливости: ' . $r[3]; +echo '
    Откат духа: ' . $r[4]; +echo '
    Откат денег: ' . $r[5]; +echo '
    '; +// +echo '
    '; +// +$stt = 's7=' . $nst['s7'] . '|s1=3|s2=3|s3=3|s4=' . $nst['s4'] . '|s5=0|s6=0|s8=0|s9=0|s10=0|s11=0|a1=0|mg1=0|a2=0|mg2=0|a3=0|mg3=0|a4=10|mg4=0|a5=0|mg5=0|a6=0|mg6=0|a7=0|mg7=0|os1=0|os2=0|os3=0|os4=0|os5=0|os6=0|os7=0|os8=0|os9=0|os10=0|os11=0|s12=0|s13=0|s14=0|s15=0'; +echo $stt; +print_r($nst); +// +if (isset($_GET['good'])) { + // + mysql_query( + 'UPDATE `users` SET `level` = "' . $lvn['nextLevel'] . '" , `money` = "' . ($us['money'] + $r['5']) . '" WHERE `id` = "' . $us['id'] . '" LIMIT 1' + ); + mysql_query( + 'UPDATE `stats` SET + + `stats` = "' . $stt . '", + `upLevel` = "' . $lvn['upLevel'] . '", + `ability` = "' . $nst['a'] . '", + `skills` = "' . $nst['s'] . '", + `nskills` = "' . $nst['n'] . '", + `exp` = "' . mysql_real_escape_string($_GET['exp']) . '" + + WHERE `id` = "' . $us['id'] . '" LIMIT 1' + ); + // +} else { + echo '
    Откатить!'; } -?> \ No newline at end of file diff --git a/reg.php b/reg.php index fcee65b4..f8566f85 100644 --- a/reg.php +++ b/reg.php @@ -1,333 +1,349 @@ info['id']) && $u->info['bithday'] == '01.01.1800') { - // - $_POST['reg_login'] = iconv('UTF-8', 'windows-1251', $_POST['reg_login']); - // - $reg_d = array( - 0 => $_POST['reg_login'], - 1 => $_POST['reg_pass'], - 2 => $_POST['reg_pass2'], - 3 => $_POST['reg_mail'], - 7 => $_POST['reg_dd'], - 8 => $_POST['reg_mm'], - 9 => $_POST['reg_yy'], - 15 => $_POST['reg_sex'] - ); - // - $error = ''; - // - //Запрещенные логины - $nologin = array(0=>'ангел',1=>'angel',2=>'администрация',3=>'administration',4=>'Комментатор',5=>'Мироздатель',6=>'Мусорщик',7=>'Падальщик',8=>'Повелитель',9=>'Архивариус',10=>'Пересмешник',11=>'Волынщик',12=>'Лорд Разрушитель',13=>'Милосердие',14=>'Справедливость',15=>'Искушение',16=>'Вознесение',17=>'coombats',18=>'коомбатс ру',19=>'Коомбатс _ру'); - $blacklist = "!@#$%^&*()\+Ёё|/'`\""; - $sr = '_-йцукенгшщзхъфывапролджэячсмитьбюё1234567890'; - $i = 0; - while($imystr($reg_d[0]))) - { - $error = 'Выберите, пожалуйста, другой ник.
    '; $_POST['step'] = 1; $i = count($nologin); - } - $i++; - } - $reg_d[0] = str_replace(' ',' ',$reg_d[0]); - //Логин от 2 до 20 символов - if(strlen($reg_d[0])>20) - { - $error = 'Логин должен содержать не более 20 символов.
    '; $_POST['step'] = 1; - } - if(strlen($reg_d[0])<2) - { - $error = 'Логин должен содержать не менее 2 символов.
    '; $_POST['step'] = 1; - } - //Один алфавит - $er = $r->en_ru($reg_d[0]); - if($er==true) - { - $error = 'В логине разрешено использовать только буквы одного алфавита русского или английского. Нельзя смешивать.
    '; $_POST['step'] = 1; - } - //Запрещенный символы - if(strpos($sr,$reg_d[0])) - { - $error = 'Логин содержит запрещенные символы.
    '; $_POST['step'] = 1; - } - //Персонажи в базе - $log = mysql_fetch_array(mysql_query('SELECT `id` from `users` where `login`="'.mysql_real_escape_string($reg_d[0]).'" LIMIT 1')); - $log2 = mysql_fetch_array(mysql_query('SELECT `id` from `lastNames` where `login`="'.mysql_real_escape_string($reg_d[0]).'" LIMIT 1')); - $log3 = mysql_fetch_array(mysql_query('SELECT `id` from `test_bot` where `login`="'.mysql_real_escape_string($reg_d[0]).'" OR `login` LIKE "'.mysql_real_escape_string($reg_d[0]).' [%]" LIMIT 1')); - - if(isset($log['id']) || isset($log2['id']) || isset($log3['id'])) - { - $error = 'Логин '.$reg_d[0].' уже занят, выберите другой.
    '; $_POST['step'] = 1; - } - //Разделители - if(substr_count($reg_d[0],' ')+substr_count($reg_d[0],'-')+substr_count($reg_d[0],'_')>2) - { - $error = 'Не более двух разделителей одновременно (пробел, тире, нижнее подчеркивание).
    '; $_POST['step'] = 1; - } - $reg_d[0] = trim($reg_d[0],' '); - - //проверяем пароль - if(strlen($reg_d[1])<6 || strlen($reg_d[1])>30) - { - $error = 'Длина пароля не может быть меньше 6 символов или более 30 символов.
    '; $_POST['step'] = 2; - } - if($reg_d[1]!=$reg_d[2]) - { - $error = 'В анкете пароль нужно ввести дважды, для проверки. Во второй раз вы его ввели неверно, будьте внимательнее.
    '; $_POST['step'] = 2; - } - if(preg_match('/'.$reg_d[0].'/i',$reg_d[1])) - { - $error = 'Пароль содержит элементы логина.
    '; $_POST['step'] = 2; - } - if( $reg_d[1] != $reg_d[2] ) { - $error = 'Пароли не совпадают.
    '; $_POST['step'] = 2; - } - if($_POST['step']!=2) - { - $stp = 3; $noup = 0; - } - //проверяем e-mail - if(strlen($reg_d[3])<6 || strlen($reg_d[3])>50) - { - $error = 'E-mail не может быть короче 6-х символов и длинее 50-ти.
    '; $_POST['step'] = 3; - } - - if(!preg_match('#^[a-z0-9.!\#$%&\'*+-/=?^_`{|}~]+@([0-9.]+|([^\s]+\.+[a-z]{2,6}))$#si', $reg_d[3])) - { - $error = 'Вы указали явно ошибочный E-mail.
    '; $_POST['step'] = 3; - } - - if( $_POST['mail_post'] != 'true' ) { - $error = 'Дайте разрешение на возможность рассылки информации на ваш E-mail'; - } - - $reg_d[4] = $chat->str_count($reg_d[4],30); - $reg_d[5] = $chat->str_count($reg_d[5],30); - - if($_POST['step']!=3) - { - $stp = 4; $noup = 0; - } - - $reg_d[6] = $chat->str_count($reg_d[6],90); - $reg_d[7] = round($reg_d[7]); - $reg_d[8] = round($reg_d[8]); - $reg_d[9] = round($reg_d[9]); - - if($reg_d[7]<1 || $reg_d[7]>31 || $reg_d[8]<1 || $reg_d[8]>12 || $reg_d[9]<1920 || $reg_d[9]>2006) - { - $error = 'Ошибка в написании дня рождения.
    '; $_POST['step'] = 4; - } - - if($reg_d[15]!=1 && $reg_d[15]!=2) - { - $error = 'Вы указали не верный пол.
    '; $_POST['step'] = 4; - } - - if( $error == '' ) { - if( $reg_d[15] != 2 ) { - $reg_d[15] = 0; - }else{ - $reg_d[15] = 1; - } - setcookie('login',$reg_d[0],time()+60*60*24*7,'',$c['host']); - setcookie('pass',md5($reg_d[1]),time()+60*60*24*7,'',$c['host']); - mysql_query('UPDATE `users` SET - `login` = "'.mysql_real_escape_string($reg_d[0]).'", +if (isset($_POST['ajax_reg'])) { + $u = User::start(); + if (isset($u->info['id']) && $u->info['bithday'] == '01.01.1800') { + // + $_POST['reg_login'] = iconv('UTF-8', 'windows-1251', $_POST['reg_login']); + // + $reg_d = [0 => $_POST['reg_login'], 1 => $_POST['reg_pass'], 2 => $_POST['reg_pass2'], 3 => $_POST['reg_mail'], 7 => $_POST['reg_dd'], 8 => $_POST['reg_mm'], 9 => $_POST['reg_yy'], 15 => $_POST['reg_sex']]; + // + $error = ''; + // + //Запрещенные логины + $nologin = [0 => 'ангел', 1 => 'angel', 2 => 'администрация', 3 => 'administration', 4 => 'Комментатор', 5 => 'Мироздатель', 6 => 'Мусорщик', 7 => 'Падальщик', 8 => 'Повелитель', 9 => 'Архивариус', 10 => 'Пересмешник', 11 => 'Волынщик', 12 => 'Лорд Разрушитель', 13 => 'Милосердие', 14 => 'Справедливость', 15 => 'Искушение', 16 => 'Вознесение', 17 => 'coombats', 18 => 'коомбатс ру', 19 => 'Коомбатс _ру']; + $blacklist = "!@#$%^&*()\+Ёё|/'`\""; + $sr = '_-йцукенгшщзхъфывапролджэячсмитьбюё1234567890'; + $i = 0; + while ($i < count($nologin)) { + if (preg_match("/" . $nologin[$i] . "/i", $filter->mystr($reg_d[0]))) { + $error = 'Выберите, пожалуйста, другой ник.
    '; + $_POST['step'] = 1; + $i = count($nologin); + } + $i++; + } + $reg_d[0] = str_replace(' ', ' ', $reg_d[0]); + //Логин от 2 до 20 символов + if (strlen($reg_d[0]) > 20) { + $error = 'Логин должен содержать не более 20 символов.
    '; + $_POST['step'] = 1; + } + if (strlen($reg_d[0]) < 2) { + $error = 'Логин должен содержать не менее 2 символов.
    '; + $_POST['step'] = 1; + } + //Один алфавит + $er = $r->en_ru($reg_d[0]); + if ($er) { + $error = 'В логине разрешено использовать только буквы одного алфавита русского или английского. Нельзя смешивать.
    '; + $_POST['step'] = 1; + } + //Запрещенный символы + if (strpos($sr, $reg_d[0])) { + $error = 'Логин содержит запрещенные символы.
    '; + $_POST['step'] = 1; + } + //Персонажи в базе + $log = mysql_fetch_array( + mysql_query('SELECT `id` from `users` where `login`="' . mysql_real_escape_string($reg_d[0]) . '" LIMIT 1') + ); + $log2 = mysql_fetch_array( + mysql_query( + 'SELECT `id` from `lastNames` where `login`="' . mysql_real_escape_string($reg_d[0]) . '" LIMIT 1' + ) + ); + $log3 = mysql_fetch_array( + mysql_query( + 'SELECT `id` from `test_bot` where `login`="' . mysql_real_escape_string( + $reg_d[0] + ) . '" OR `login` LIKE "' . mysql_real_escape_string($reg_d[0]) . ' [%]" LIMIT 1' + ) + ); + + if (isset($log['id']) || isset($log2['id']) || isset($log3['id'])) { + $error = 'Логин ' . $reg_d[0] . ' уже занят, выберите другой.
    '; + $_POST['step'] = 1; + } + //Разделители + if (substr_count($reg_d[0], ' ') + substr_count($reg_d[0], '-') + substr_count($reg_d[0], '_') > 2) { + $error = 'Не более двух разделителей одновременно (пробел, тире, нижнее подчеркивание).
    '; + $_POST['step'] = 1; + } + $reg_d[0] = trim($reg_d[0], ' '); + + //проверяем пароль + if (strlen($reg_d[1]) < 6 || strlen($reg_d[1]) > 30) { + $error = 'Длина пароля не может быть меньше 6 символов или более 30 символов.
    '; + $_POST['step'] = 2; + } + if ($reg_d[1] != $reg_d[2]) { + $error = 'В анкете пароль нужно ввести дважды, для проверки. Во второй раз вы его ввели неверно, будьте внимательнее.
    '; + $_POST['step'] = 2; + } + if (preg_match('/' . $reg_d[0] . '/i', $reg_d[1])) { + $error = 'Пароль содержит элементы логина.
    '; + $_POST['step'] = 2; + } + if ($reg_d[1] != $reg_d[2]) { + $error = 'Пароли не совпадают.
    '; + $_POST['step'] = 2; + } + if ($_POST['step'] != 2) { + $stp = 3; + $noup = 0; + } + //проверяем e-mail + if (strlen($reg_d[3]) < 6 || strlen($reg_d[3]) > 50) { + $error = 'E-mail не может быть короче 6-х символов и длинее 50-ти.
    '; + $_POST['step'] = 3; + } + + if (!preg_match('#^[a-z0-9.!\#$%&\'*+-/=?^_`{|}~]+@([0-9.]+|([^\s]+\.+[a-z]{2,6}))$#si', $reg_d[3])) { + $error = 'Вы указали явно ошибочный E-mail.
    '; + $_POST['step'] = 3; + } + + if ($_POST['mail_post'] != 'true') { + $error = 'Дайте разрешение на возможность рассылки информации на ваш E-mail'; + } + + $reg_d[4] = $chat->str_count($reg_d[4], 30); + $reg_d[5] = $chat->str_count($reg_d[5], 30); + + if ($_POST['step'] != 3) { + $stp = 4; + $noup = 0; + } + + $reg_d[6] = $chat->str_count($reg_d[6], 90); + $reg_d[7] = round($reg_d[7]); + $reg_d[8] = round($reg_d[8]); + $reg_d[9] = round($reg_d[9]); + + if ($reg_d[7] < 1 || $reg_d[7] > 31 || $reg_d[8] < 1 || $reg_d[8] > 12 || $reg_d[9] < 1920 || $reg_d[9] > 2006) { + $error = 'Ошибка в написании дня рождения.
    '; + $_POST['step'] = 4; + } + + if ($reg_d[15] != 1 && $reg_d[15] != 2) { + $error = 'Вы указали не верный пол.
    '; + $_POST['step'] = 4; + } + + if ($error == '') { + if ($reg_d[15] != 2) { + $reg_d[15] = 0; + } else { + $reg_d[15] = 1; + } + setcookie('login', $reg_d[0], time() + 60 * 60 * 24 * 7, '', $c['host']); + setcookie('pass', md5($reg_d[1]), time() + 60 * 60 * 24 * 7, '', $c['host']); + mysql_query( + 'UPDATE `users` SET + `login` = "' . mysql_real_escape_string($reg_d[0]) . '", `activ` = "1", - `pass` = "'.mysql_real_escape_string(md5($reg_d[1])).'", - `mail` = "'.mysql_real_escape_string($reg_d[3]).'", - `bithday` = "'.mysql_real_escape_string($reg_d[7].'.'.$reg_d[8].'.'.$reg_d[9]).'", - `sex` = "'.mysql_real_escape_string($reg_d[15]).'", + `pass` = "' . mysql_real_escape_string(md5($reg_d[1])) . '", + `mail` = "' . mysql_real_escape_string($reg_d[3]) . '", + `bithday` = "' . mysql_real_escape_string($reg_d[7] . '.' . $reg_d[8] . '.' . $reg_d[9]) . '", + `sex` = "' . mysql_real_escape_string($reg_d[15]) . '", `fnq` = "0" - WHERE `id` = "'.mysql_real_escape_string($u->info['id']).'" LIMIT 1'); - - if( $u->info['host_reg'] > 0 ) { - $refer = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `id` = "'.$u->info['host_reg'].'" LIMIT 1')); - if( isset($refer['id']) ) { - $u->addItem(3199,$u->info['id']); - $u->addItem(4005,$refer['id']); - }else{ - $u->addItem(3199,$u->info['id']); - $nast = 1001398; - mysql_query('UPDATE `users` SET - `host_reg` = "'.$nast.'" - WHERE `id` = "'.mysql_real_escape_string($u->info['id']).'" LIMIT 1'); - } - }else{ - $u->addItem(3199,$u->info['id']); - $nast = 1001398; - mysql_query('UPDATE `users` SET - `host_reg` = "'.$nast.'" - WHERE `id` = "'.mysql_real_escape_string($u->info['id']).'" LIMIT 1'); - } - - //Выдаем предметы и отправляем сообщение в чат//Выдаем предметы и отправляем сообщение в чат//Выдаем предметы и отправляем сообщение в чат//Выдаем предметы и отправляем сообщение в чат - - $text = ''.$reg_d[0].', если у Вас возникли затруднения с выполнением квеста, перейдите по следующей ссылке - www.new-combats.com/library/noobguide '; - mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`new`) VALUES ('capitalcity','0','','".$reg_d[0]."','".$text."','".time()."','6','0','1')"); - /* $text = 'Для начала посмотри в свой инвентарь. Было решено избавить тебя от скучных, однотипных боёв с бездушным клоном. Советуем заглянуть в Инвентарь далее>> раздел Свитки, Использовать "СВИТОК ОБУЧЕНИЯ", который даст тебе +300 000 опыта, 8ой уровень, и позволит сразу же приступить к выбору класса и боям с равными тебе соперниками. Более того, для более лёгкого старта, мы организовали тебе презент, в виде: Статовых Эликсиров +15, Звёздных свитков, и Свитка Барыги -Таба- , который позволит продать вещи в ГОС магазин за 99% их стоимости, в случае если ты решишь сменить комплект! Будь акуратен, такая возможность даётся всего единожды. Из особенностей нашего проекта, хотелось бы отметить: Наличие уникальных ботов на Центральной Площади (подробнее events.new-combats.com ). По всем игровым вопросам, вы можете всегда обратиться сотруникам Ордена Света'; - mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`new`) VALUES ('capitalcity','0','','".$reg_d[0]."','".$text."','".time()."','6','0','1')"); - */ - - $refer = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`banned`,`admin`,`level` FROM `users` WHERE `id` = "'.mysql_real_escape_string($_GET['ref']).'" LIMIT 1')); - if(isset($refer['id'])) { - mysql_query("INSERT INTO `items_users` (`gift`,`uid`,`item_id`,`data`,`iznosMAX`,`geniration`,`maidin`,`time_create`) VALUES ('".$refer['login']."','".$u->info['id']."','3199','noodet=1|items_in_file=sunduk_new|var_id=1|open=1|noremont=1|nodelete=1|nosale=1|sudba=".mysql_real_escape_string($reg_d[0])."',1,2,'capitalcity',".time().")"); - } - - //Рубаха - $re = $u->addItem(1,$u->info['id'],'|'); - if( $re > 0 ) { - mysql_query('UPDATE `items_users` SET `gift` = "Мироздатель" WHERE `id` = "'.$re.'" LIMIT 1'); - } - //Штаны - $re = $u->addItem(73,$u->info['id'],'|'); - if( $re > 0 ) { - mysql_query('UPDATE `items_users` SET `gift` = "Мусорщик" WHERE `id` = "'.$re.'" LIMIT 1'); - } - $re = $u->addItem(2133,$u->info['id'],'|sudba='.$reg_d[0].'|nosale=1|srok='.(86400*14).''); - if( $re > 0 ) { - mysql_query('UPDATE `items_users` SET `gift` = "Архивариус" WHERE `id` = "'.$re.'" LIMIT 1'); - } - //Свиток +300.000 опыта - /*$re = $u->addItem(4014,$u->info['id'],'|sudba='.$reg_d[0].'|nosale=1|nodelete=1'); - if( $re > 0 ) { - mysql_query('UPDATE `items_users` SET `gift` = "Архивариус" WHERE `id` = "'.$re.'" LIMIT 1'); - } - //Свиток Таба - //$re = $u->addItem(1190,$u->info['id'],'|sudba='.$reg_d[0].'|nosale=1',NULL,0); - //Зелье Жизни - $re = $u->addItem(724,$u->info['id'],'|sudba='.$reg_d[0].'|nosale=1',NULL,50); - //Звезд сияние - $re = $u->addItem(1463,$u->info['id'],'|sudba='.$reg_d[0].'|nosale=1',NULL,1); - //Звезд тяжесть - $re = $u->addItem(1462,$u->info['id'],'|sudba='.$reg_d[0].'|nosale=1',NULL,1); - //Звезд Энергия - $re = $u->addItem(1461,$u->info['id'],'|sudba='.$reg_d[0].'|nosale=1',NULL,1); - //Нектар Предчувствия - $re = $u->addItem(4038,$u->info['id'],'|sudba='.$reg_d[0].'|nosale=1',NULL,1); - //Нектар Великана - $re = $u->addItem(4039,$u->info['id'],'|sudba='.$reg_d[0].'|nosale=1',NULL,1); - //Звезд Предчувствия - $re = $u->addItem(4037,$u->info['id'],'|sudba='.$reg_d[0].'|nosale=1',NULL,1); - //Звезд Змеи - $re = $u->addItem(4040,$u->info['id'],'|sudba='.$reg_d[0].'|nosale=1',NULL,1); - */ - //Выдаем предметы и отправляем сообщение в чат//Выдаем предметы и отправляем сообщение в чат//Выдаем предметы и отправляем сообщение в чат//Выдаем предметы и отправляем сообщение в чат - - $error = 'Регистрация прошла успешно! Спасибо!
    Через 3 сек. Вы будете перенаправлены в игру!'; - } - - die( $error ); - } -}else{ + WHERE `id` = "' . mysql_real_escape_string($u->info['id']) . '" LIMIT 1' + ); - function GetRealIp() - { - if (!empty($_SERVER['HTTP_CLIENT_IP'])) - { - $ip=$_SERVER['HTTP_CLIENT_IP']; - } - elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) - { - $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; - } - else - { - $ip=$_SERVER['REMOTE_ADDR']; - } - return $ip; - } - - define('IP',GetRealIp()); - - function error($e) - { - global $c; - die(''); - } - - if( isset($_COOKIE['login']) ) { - setcookie('login','',time()-60*60*24*30,'','.new-combats.com/'); - setcookie('pass','',time()-60*60*24*30,'','.new-combats.com/'); - // - setcookie('login','',time()-60*60*24*30); - setcookie('pass','',time()-60*60*24*30); - // - } - - $lr = mysql_fetch_array(mysql_query('SELECT `id`,`ipreg`,`pass`,`bithday`,`login` FROM `users` WHERE `cityreg`="capitalcity" AND `timereg`>"'.(time()-60*60*1).'" AND `ipreg` = "'.mysql_real_escape_string(IP).'" LIMIT 1')); - if(/*isset($_COOKIE['reg_capitalcity']) || (int)$_COOKIE['reg_capitalcity']>time() ||*/ isset($lr['id2'])) { - if( isset($lr['id']) && $lr['bithday'] == '01.01.1800' ) { - if( isset($_GET['enter']) ) { - setcookie('login',$lr['login'],time()+60*60*24*7,'',$c['host']); - setcookie('pass',$lr['pass'],time()+60*60*24*7,'',$c['host']); - header('location: /bk'); - } - error('Недавно с вашего IP уже регистрировался персонаж. С одного IP адреса разрешена регистрация персонажей не чаще, чем раз в час. Попробуйте позже.
    Для авторизации '.$lr['login'].' перейдите по ссылке: Авторизироваться'); - }else{ - error('Недавно с вашего IP уже регистрировался персонаж. С одного IP адреса разрешена регистрация персонажей не чаще, чем раз в час. Попробуйте позже.
    '); - } - }else{ - //Создаем персонажа - if( (int)$_GET['ref'] > 0 ) { - mysql_query("UPDATE `users` SET `referals` = `referals` + 1 WHERE `id` = '".mysql_real_escape_string((int)$_GET['ref'])."' LIMIT 1"); - } - $pass = md5(md5(rand(0,100.).'#'.rand(0,1000))); - mysql_query('INSERT INTO `users` (`host_reg`,`pass`,`ip`,`ipreg`,`city`,`cityreg`,`room`,`timereg`) VALUES ( - "'.mysql_real_escape_string(0+$_GET['ref']).'", - "'.mysql_real_escape_string($pass).'", - "'.mysql_real_escape_string(IP).'", - "'.mysql_real_escape_string(IP).'", + if ($u->info['host_reg'] > 0) { + $refer = mysql_fetch_array( + mysql_query('SELECT `id` FROM `users` WHERE `id` = "' . $u->info['host_reg'] . '" LIMIT 1') + ); + if (isset($refer['id'])) { + $u->addItem(3199, $u->info['id']); + $u->addItem(4005, $refer['id']); + } else { + $u->addItem(3199, $u->info['id']); + $nast = 1001398; + mysql_query( + 'UPDATE `users` SET + `host_reg` = "' . $nast . '" + WHERE `id` = "' . mysql_real_escape_string($u->info['id']) . '" LIMIT 1' + ); + } + } else { + $u->addItem(3199, $u->info['id']); + $nast = 1001398; + mysql_query( + 'UPDATE `users` SET + `host_reg` = "' . $nast . '" + WHERE `id` = "' . mysql_real_escape_string($u->info['id']) . '" LIMIT 1' + ); + } + + //Выдаем предметы и отправляем сообщение в чат//Выдаем предметы и отправляем сообщение в чат//Выдаем предметы и отправляем сообщение в чат//Выдаем предметы и отправляем сообщение в чат + + $text = '' . $reg_d[0] . ', если у Вас возникли затруднения с выполнением квеста, перейдите по следующей ссылке - www.new-combats.com/library/noobguide '; + mysql_query( + "INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`new`) VALUES ('capitalcity','0','','" . $reg_d[0] . "','" . $text . "','" . time( + ) . "','6','0','1')" + ); + $refer = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`login`,`banned`,`admin`,`level` FROM `users` WHERE `id` = "' . mysql_real_escape_string( + $_GET['ref'] + ) . '" LIMIT 1' + ) + ); + if (isset($refer['id'])) { + mysql_query( + "INSERT INTO `items_users` (`gift`,`uid`,`item_id`,`data`,`iznosMAX`,`geniration`,`maidin`,`time_create`) VALUES ('" . $refer['login'] . "','" . $u->info['id'] . "','3199','noodet=1|items_in_file=sunduk_new|var_id=1|open=1|noremont=1|nodelete=1|nosale=1|sudba=" . mysql_real_escape_string( + $reg_d[0] + ) . "',1,2,'capitalcity'," . time() . ")" + ); + } + + //Рубаха + $re = $u->addItem(1, $u->info['id'], '|'); + if ($re > 0) { + mysql_query('UPDATE `items_users` SET `gift` = "Мироздатель" WHERE `id` = "' . $re . '" LIMIT 1'); + } + //Штаны + $re = $u->addItem(73, $u->info['id'], '|'); + if ($re > 0) { + mysql_query('UPDATE `items_users` SET `gift` = "Мусорщик" WHERE `id` = "' . $re . '" LIMIT 1'); + } + $re = $u->addItem(2133, $u->info['id'], '|sudba=' . $reg_d[0] . '|nosale=1|srok=' . (86400 * 14) . ''); + if ($re > 0) { + mysql_query('UPDATE `items_users` SET `gift` = "Архивариус" WHERE `id` = "' . $re . '" LIMIT 1'); + } + $error = 'Регистрация прошла успешно! Спасибо!
    Через 3 сек. Вы будете перенаправлены в игру!'; + } + + die($error); + } +} else { + + function error($e) + { + exit($e); + } + + if (isset($_COOKIE['login'])) { + setcookie('login', '', time() - 60 * 60 * 24 * 30, '', '.new-combats.com/'); + setcookie('pass', '', time() - 60 * 60 * 24 * 30, '', '.new-combats.com/'); + // + setcookie('login', '', time() - 60 * 60 * 24 * 30); + setcookie('pass', '', time() - 60 * 60 * 24 * 30); + // + } + + $lr = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`ipreg`,`pass`,`bithday`,`login` FROM `users` WHERE `cityreg`="capitalcity" AND `timereg`>"' . (time( + ) - 60 * 60 * 1) . '" AND `ipreg` = "' . mysql_real_escape_string(IP) . '" LIMIT 1' + ) + ); + if (isset($lr['id2'])) { + if (isset($lr['id']) && $lr['bithday'] == '01.01.1800') { + if (isset($_GET['enter'])) { + setcookie('login', $lr['login'], time() + 60 * 60 * 24 * 7, '', $c['host']); + setcookie('pass', $lr['pass'], time() + 60 * 60 * 24 * 7, '', $c['host']); + header('location: /bk'); + } + error( + 'Недавно с вашего IP уже регистрировался персонаж. С одного IP адреса разрешена регистрация персонажей не чаще, чем раз в час. Попробуйте позже.
    Для авторизации ' . $lr['login'] . ' перейдите по ссылке: Авторизироваться' + ); + } else { + error( + 'Недавно с вашего IP уже регистрировался персонаж. С одного IP адреса разрешена регистрация персонажей не чаще, чем раз в час. Попробуйте позже.
    ' + ); + } + } else { + //Создаем персонажа + if ((int)$_GET['ref'] > 0) { + mysql_query( + "UPDATE `users` SET `referals` = `referals` + 1 WHERE `id` = '" . mysql_real_escape_string( + (int)$_GET['ref'] + ) . "' LIMIT 1" + ); + } + $pass = md5(md5(rand(0, 100.) . '#' . rand(0, 1000))); + mysql_query( + 'INSERT INTO `users` (`host_reg`,`pass`,`ip`,`ipreg`,`city`,`cityreg`,`room`,`timereg`) VALUES ( + "' . mysql_real_escape_string(0 + $_GET['ref']) . '", + "' . mysql_real_escape_string($pass) . '", + "' . mysql_real_escape_string(IP) . '", + "' . mysql_real_escape_string(IP) . '", "capitalcity", "capitalcity", "0", - "'.time().'" - )'); - $uid = mysql_insert_id(); - if( $uid > 0 ) { - $login = 'Новичок'.$uid; - mysql_query('UPDATE `users` SET `login` = "'.mysql_real_escape_string($login).'" WHERE `id` = "'.$uid.'" LIMIT 1'); - //Создаем статы персонажа - mysql_query("INSERT INTO `online` (`uid`,`timeStart`) VALUES ('".$uid."','".time()."')"); - mysql_query("INSERT INTO `stats` (`id`,`stats`) VALUES ('".$uid."','s1=3|s2=3|s3=3|s4=3|rinv=40|m9=5|m6=10')"); - - //мульты - $ipm1 = mysql_fetch_array(mysql_query('SELECT * FROM `logs_auth` WHERE `uid` = "'.mysql_real_escape_string($uid).'" AND `ip`!="'.mysql_real_escape_string(IP).'" ORDER BY `id` ASC LIMIT 1')); - $ppl = mysql_query('SELECT * FROM `logs_auth` WHERE `ip`!="" AND (`ip` = "'.mysql_real_escape_string(IP).'" OR `ip`="'.mysql_real_escape_string($ipm1['ip']).'" OR `ip`="'.mysql_real_escape_string($_COOKIE['ip']).'")'); - while($spl = mysql_fetch_array($ppl)) - { - $ml = mysql_fetch_array(mysql_query('SELECT `id` FROM `mults` WHERE (`uid` = "'.$spl['uid'].'" AND `uid2` = "'.$uid.'") OR (`uid2` = "'.$spl['uid'].'" AND `uid` = "'.$uid.'") LIMIT 1')); - if(!isset($ml['id']) && $spl['ip']!='' && $spl['ip']!='127.0.0.1') - { - mysql_query('INSERT INTO `mults` (`uid`,`uid2`,`ip`) VALUES ("'.$uid.'","'.$spl['uid'].'","'.$spl['ip'].'")'); - } - } - mysql_query("INSERT INTO `logs_auth` (`uid`,`ip`,`browser`,`type`,`time`,`depass`) VALUES ('".$uid."','".mysql_real_escape_string(IP)."','".mysql_real_escape_string($_SERVER['HTTP_USER_AGENT'])."','1','".time()."','')"); - - //Обновяем таблицы - mysql_query("UPDATE `users` SET `online`='".time()."',`ip` = '".mysql_real_escape_string(IP)."' WHERE `uid` = '".$uid."' LIMIT 1"); - - if(!setcookie('login',$login, (time()+60*60*24*7) , '' , '.new-combats.com' ) || !setcookie('pass',$pass, (time()+60*60*24*7) , '' , '.new-combats.com' )) { - die('Ошибка сохранения cookie.'); - }else{ - /* - die('Спасибо за регистрацию!
    '); - */ - } - header('location: /bk'); - } - } -} + "' . time() . '" + )' + ); + $uid = mysql_insert_id(); + if ($uid > 0) { + $login = 'Новичок' . $uid; + mysql_query( + 'UPDATE `users` SET `login` = "' . mysql_real_escape_string( + $login + ) . '" WHERE `id` = "' . $uid . '" LIMIT 1' + ); + //Создаем статы персонажа + mysql_query("INSERT INTO `online` (`uid`,`timeStart`) VALUES ('" . $uid . "','" . time() . "')"); + mysql_query( + "INSERT INTO `stats` (`id`,`stats`) VALUES ('" . $uid . "','s1=3|s2=3|s3=3|s4=3|rinv=40|m9=5|m6=10')" + ); -?> \ No newline at end of file + //мульты + $ipm1 = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `logs_auth` WHERE `uid` = "' . mysql_real_escape_string( + $uid + ) . '" AND `ip`!="' . mysql_real_escape_string(IP) . '" ORDER BY `id` ASC LIMIT 1' + ) + ); + $ppl = mysql_query( + 'SELECT * FROM `logs_auth` WHERE `ip`!="" AND (`ip` = "' . mysql_real_escape_string( + IP + ) . '" OR `ip`="' . mysql_real_escape_string($ipm1['ip']) . '" OR `ip`="' . mysql_real_escape_string( + $_COOKIE['ip'] + ) . '")' + ); + while ($spl = mysql_fetch_array($ppl)) { + $ml = mysql_fetch_array( + mysql_query( + 'SELECT `id` FROM `mults` WHERE (`uid` = "' . $spl['uid'] . '" AND `uid2` = "' . $uid . '") OR (`uid2` = "' . $spl['uid'] . '" AND `uid` = "' . $uid . '") LIMIT 1' + ) + ); + if (!isset($ml['id']) && $spl['ip'] != '' && $spl['ip'] != '127.0.0.1') { + mysql_query( + 'INSERT INTO `mults` (`uid`,`uid2`,`ip`) VALUES ("' . $uid . '","' . $spl['uid'] . '","' . $spl['ip'] . '")' + ); + } + } + mysql_query( + "INSERT INTO `logs_auth` (`uid`,`ip`,`browser`,`type`,`time`,`depass`) VALUES ('" . $uid . "','" . mysql_real_escape_string( + IP + ) . "','" . mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']) . "','1','" . time() . "','')" + ); + + //Обновяем таблицы + mysql_query( + "UPDATE `users` SET `online`='" . time() . "',`ip` = '" . mysql_real_escape_string( + IP + ) . "' WHERE `uid` = '" . $uid . "' LIMIT 1" + ); + + if (!setcookie('login', $login, (time() + 60 * 60 * 24 * 7), '', '.new-combats.com') || !setcookie( + 'pass', $pass, (time() + 60 * 60 * 24 * 7), '', '.new-combats.com' + )) { + die('Ошибка сохранения cookie.'); + } + header('location: /bk'); + } + } +} diff --git a/register.php b/register.php index 415ccf2f..eb4c70d1 100644 --- a/register.php +++ b/register.php @@ -1,9 +1,9 @@ - 'ангел', 1 => 'angel', 2 => 'администрация', 3 => 'administration', 4 => 'Комментатор', 5 => 'Мироздатель', 6 => 'Мусорщик', 7 => 'Падальщик', 8 => 'Повелитель', 9 => 'Архивариус', 10 => 'Пересмешник', 11 => 'Волынщик', 12 => 'Лорд Разрушитель', 13 => 'Милосердие', 14 => 'Справедливость', 15 => 'Рскушение', 16 => 'Вознесение']; + $nologin = [0 => 'ангел', 1 => 'angel', 2 => 'администрация', 3 => 'administration', 4 => 'Комментатор', 5 => 'Мироздатель', 6 => 'Мусорщик', 7 => 'Падальщик', 8 => 'Повелитель', 9 => 'Архивариус', 10 => 'Пересмешник', 11 => 'Волынщик', 12 => 'Лорд Разрушитель', 13 => 'Милосердие', 14 => 'Справедливость', 15 => 'Искушение', 16 => 'Вознесение']; $i = 0; while ($i < count($nologin)) { if (preg_match("/" . $nologin[$i] . "/i", $str_u)) { - $error = 'Выберите, пожалуйста, РґСЂСѓРіРѕР№ РЅРёРє.'; + $error = 'Выберите, пожалуйста, другой ник.'; $i = count($nologin); } $i++; } $str_u = str_replace(' ', ' ', $str_u); - //Логин РѕС‚ 4 РґРѕ 20 символов + //Логин от 4 до 20 символов if (strlen($str_u) > 20) { - $error = 'Логин должен содержать РЅРµ более 20 символов.'; - $error = $error . '
    Пример правильного никнейма: Петя Убиватор, Коля, xalop.
    Пример неправильного никнейма: )))), kolСЏ)=-/.'; + $error = 'Логин должен содержать не более 20 символов.'; + $error = $error . '
    Пример правильного никнейма: Петя Убиватор, Коля, xalop.
    Пример неправильного никнейма: )))), kolя)=-/.'; } if (strlen($str_u) < 4) { - $error = 'Логин должен содержать РЅРµ менее 4 символов.'; - $error = $error . '
    Пример правильного никнейма: Петя Убиватор, Коля, xalop.
    Пример неправильного никнейма: )))), kolСЏ)=-/.'; + $error = 'Логин должен содержать не менее 4 символов.'; + $error = $error . '
    Пример правильного никнейма: Петя Убиватор, Коля, xalop.
    Пример неправильного никнейма: )))), kolя)=-/.'; } - //РћРґРёРЅ алфавит + //Один алфавит $er = en_ru($str_u); if ($er) { - $error = 'Р’ логине разрешено использовать только Р±СѓРєРІС‹ РѕРґРЅРѕРіРѕ алфавита СЂСѓСЃСЃРєРѕРіРѕ или английского. Нельзя смешивать.'; - $error = $error . '
    Пример правильного никнейма: Петя Убиватор, Коля, xalop.
    Пример неправильного никнейма: )))), kolСЏ)=-/.'; + $error = 'В логине разрешено использовать только буквы одного алфавита русского или английского. Нельзя смешивать.'; + $error = $error . '
    Пример правильного никнейма: Петя Убиватор, Коля, xalop.
    Пример неправильного никнейма: )))), kolя)=-/.'; } - //Разделители + //Разделители if (substr_count($str_u, ' ') + substr_count($str_u, '-') + substr_count($str_u, '_') > 2) { - $error = 'РќРµ более РґРІСѓС… разделителей одновременно (пробел, тире, нижнее подчеркивание).'; - $error = $error . '
    Пример правильного никнейма: Петя Убиватор, Коля, xalop.
    Пример неправильного никнейма: )))), kolСЏ)=-/.'; + $error = 'Не более двух разделителей одновременно (пробел, тире, нижнее подчеркивание).'; + $error = $error . '
    Пример правильного никнейма: Петя Убиватор, Коля, xalop.
    Пример неправильного никнейма: )))), kolя)=-/.'; } - //Персонажи РІ базе + //Персонажи в базе $q = mysql_query('SELECT `id` from `users` where `login`="' . mysql_real_escape_string($str_u) . '" LIMIT 1'); if ($q) { $log = mysql_fetch_array($q); unset($q); } - $q = mysql_query('SELECT `id` from `lastnames` where `login`="' . mysql_real_escape_string($str_u) . '" LIMIT 1'); + $q = mysql_query( + 'SELECT `id` from `lastnames` where `login`="' . mysql_real_escape_string($str_u) . '" LIMIT 1' + ); if ($q) { $log2 = mysql_fetch_array($q); unset($q); } if (isset($log['id']) || isset($log2['id'])) { - $error = 'Логин ' . $str_u . ' уже занят, выберите РґСЂСѓРіРѕР№.'; + $error = 'Логин ' . $str_u . ' уже занят, выберите другой.'; } } - if ($id == 2 && !empty($str_u)) //проверка емаила + if ($id == 2 && !empty($str_u)) //проверка емаила { if (strlen($str_u) < 6 || strlen($str_u) > 50) { - $error = 'E-mail РЅРµ может быть короче 6-С… символов Рё длинее 50-ти.'; + $error = 'E-mail не может быть короче 6-х символов и длинее 50-ти.'; } else { - $testEREm = mysql_fetch_array(mysql_query('SELECT `mail` FROM `users` WHERE `mail` LIKE "' . $str_u . '" LIMIT 1')); - $emails = mysql_fetch_array(mysql_query('SELECT * FROM `ban_email` WHERE `email` LIKE "' . $str_u . '" LIMIT 1')); + $testEREm = mysql_fetch_array( + mysql_query('SELECT `mail` FROM `users` WHERE `mail` LIKE "' . $str_u . '" LIMIT 1') + ); + $emails = mysql_fetch_array( + mysql_query('SELECT * FROM `ban_email` WHERE `email` LIKE "' . $str_u . '" LIMIT 1') + ); if (isset($testEREm['mail'])) { - $error = 'E-mail уже занят.'; + $error = 'E-mail уже занят.'; } if (isset($emails['email'])) { - $error = 'E-mail заблокирован свяжитесь СЃ Администрацией.'; + $error = 'E-mail заблокирован свяжитесь с Администрацией.'; } $x = 1; $i = 1; - $tx = '
    Возможно использовать только сервисы почты:
    '; + $tx = '
    Возможно использовать только сервисы почты:
    '; $sp = mysql_query('SELECT * FROM `trust_email`'); while ($pl = mysql_fetch_array($sp)) { $emailtest = $pl['email']; @@ -142,12 +153,12 @@ function error_check($id, $str_u, $name = 0) $x++; } if ($i == $x) { - $error = 'Данный почтовый сервис использовать нельзя.' . $tx; + $error = 'Данный почтовый сервис использовать нельзя.' . $tx; } } if (!preg_match('#^[a-z0-9.!\#$%&\'*+-/=?^_`{|}~]+@([0-9.]+|([^\s]+\.+[a-z]{2,6}))$#si', $str_u)) { - $error = 'Р’С‹ указали СЏРІРЅРѕ ошибочный E-mail.
    '; + $error = 'Вы указали явно ошибочный E-mail.
    '; } if ($error != '') { $gd[4] = $error; @@ -157,40 +168,45 @@ function error_check($id, $str_u, $name = 0) } } - if ($id == 3 && !empty($str_u) && !empty($name)) //отсылка емаила РїСЂРё удачном емаиле str_u -> mail name -> nickname + if ($id == 3 && !empty($str_u) && !empty($name)) //отсылка емаила при удачном емаиле str_u -> mail name -> nickname { $code = rand(10000000, 99999999); - mysql_query('INSERT INTO `secure_code`(`email`, `code`, `time`) VALUES ("' . $str_u . '","' . $code . '","' . time() . '");'); - mails($str_u, 'Секретный РљРѕРґ: ' . $code, 'Секретный РљРѕРґ - Новый Бойцовский Клуб ' . $name); + mysql_query( + 'INSERT INTO `secure_code`(`email`, `code`, `time`) VALUES ("' . $str_u . '","' . $code . '","' . time( + ) . '");' + ); + mails($str_u, 'Секретный Код: ' . $code, 'Секретный Код - Новый Бойцовский Клуб ' . $name); } - if ($id == 4 && !empty($str_u) && !empty($name)) //проверка РєРѕРґР° безопасности str_u -> введенный РєРѕРґ name -> email + if ($id == 4 && !empty($str_u) && !empty($name)) //проверка кода безопасности str_u -> введенный код name -> email { - $testcode = mysql_fetch_array(mysql_query('SELECT code FROM `secure_code` WHERE `email` = "' . $name . '" ORDER BY id DESC LIMIT 1')); + $testcode = mysql_fetch_array( + mysql_query('SELECT code FROM `secure_code` WHERE `email` = "' . $name . '" ORDER BY id DESC LIMIT 1') + ); if ($testcode['code'] != $str_u) { - $error = 'Неверный РєРѕРґ безопасности (Проверте пробелы Рё сам РєРѕРґ РІ последнем емеиле)'; + $error = 'Неверный код безопасности (Проверте пробелы и сам код в последнем емеиле)'; } } - if ($id == 5 && !empty($str_u) && !empty($name)) //проверка пароля str_u -> p1 РєРѕРґ name -> p2 + if ($id == 5 && !empty($str_u) && !empty($name)) //проверка пароля str_u -> p1 код name -> p2 { if (strlen($str_u) < 8 || strlen($str_u) > 30) { - $error = 'Длина пароля РЅРµ может быть меньше 8 символов или более 30 символов.'; - $error = $error . '
    Пример правильного пароля: Parol228, Kotik111, Pswerd112.
    Пример неправильного пароля: parol228, kotik.'; + $error = 'Длина пароля не может быть меньше 8 символов или более 30 символов.'; + $error = $error . '
    Пример правильного пароля: Parol228, Kotik111, Pswerd112.
    Пример неправильного пароля: parol228, kotik.'; } if ($str_u != $name) { - $error = 'Р’ анкете пароль нужно ввести дважды, для проверки. Р’Рѕ второй раз РІС‹ его ввели неверно, будьте внимательнее.'; - $error = $error . '
    Пример правильного пароля: Parol228, Kotik111, Pswerd112.
    Пример неправильного пароля: parol228, kotik.'; + $error = 'В анкете пароль нужно ввести дважды, для проверки. Во второй раз вы его ввели неверно, будьте внимательнее.'; + $error = $error . '
    Пример правильного пароля: Parol228, Kotik111, Pswerd112.
    Пример неправильного пароля: parol228, kotik.'; } - if (!preg_match('/[a-zР°-СЏ]+/', $str_u)) { - $error = 'Пароль РЅРµ содержит Р±СѓРєРІ нижнего регитра Р°..СЏ/a..z.'; - $error = $error . '
    Пример правильного пароля: Parol228, Kotik111, Pswerd112.
    Пример неправильного пароля: parol228, kotik.'; - } elseif (!preg_match('/[A-ZА-Я]+/', $str_u)) { - $error = 'Пароль не содержит букв верхнего регитра А..Я/A..Z .'; - $error = $error . '
    Пример правильного пароля: Parol228, Kotik111, Pswerd112.
    Пример неправильного пароля: parol228, kotik.'; + if (!preg_match('/[a-zа-я]+/', $str_u)) { + $error = 'Пароль не содержит букв нижнего регитра а..я/a..z.'; + $error = $error . '
    Пример правильного пароля: Parol228, Kotik111, Pswerd112.
    Пример неправильного пароля: parol228, kotik.'; + } elseif (!preg_match('/[A-ZА-Я]+/', $str_u)) { + $error = 'Пароль не содержит букв верхнего регитра А..Я/A..Z .'; + $error = $error . '
    Пример правильного пароля: Parol228, Kotik111, Pswerd112.
    Пример неправильного пароля: parol228, kotik.'; } else { if (!preg_match('/[0-9]+/', $str_u)) { - $error = 'Пароль РЅРµ содержит цифр.'; - $error = $error . '
    Пример правильного пароля: Parol228, Kotik111, Pswerd112.
    Пример неправильного пароля: parol228, kotik.'; + $error = 'Пароль не содержит цифр.'; + $error = $error . '
    Пример правильного пароля: Parol228, Kotik111, Pswerd112.
    Пример неправильного пароля: parol228, kotik.'; } } } @@ -200,32 +216,30 @@ function error_check($id, $str_u, $name = 0) return $error ? '

    ' . $error . '

    ' : ''; } -if ($_SERVER['HTTP_USER_AGENT'] != '' && - $_SERVER['HTTP_USER_AGENT'] != 'Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0' && - $_SERVER['HTTP_USER_AGENT'] != 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0' && - $_SERVER['HTTP_USER_AGENT'] != 'Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0' +if ($_SERVER['HTTP_USER_AGENT'] == '' || $_SERVER['HTTP_USER_AGENT'] == 'Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0' || $_SERVER['HTTP_USER_AGENT'] == 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0' || $_SERVER['HTTP_USER_AGENT'] == 'Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0' ) { - ?> + return; +} ?> - Регистрация - создай персонажа РІ РёРіСЂРµ Новый «Бойцовский клуб» + Регистрация - создай персонажа в игре Новый «Бойцовский клуб» + content="Пройдите простую регистрацию и станьте участником ? браузерной онлайн игры-легенды БК. Боец, мы ждем тебя в наших рядах, поэтому заводи аккаунт скорей. "/>
    - -
    -

    +

    -
    - -
    -

    -

    Введите никнейм для Вашего персонажа

    -
    - -
    -

    -

    Введите никнейм для Вашего персонажа

    -

    -
    - -
    -

    РРјСЏ вашего персонажа (login):

    -
    - - -
    -

    -

    Введите ваш действующий и настоящий "Email" адрес

    -

    -

    Внимание! Не используйте несуществующие "Email" адреса, а так же проверяйте то, какой эмеил вы вводите, - ибо перед стартом игры, вам необходимо будет подтвердить ваш эмеил адрес.

    -

    -

    Ваш "Email" Адрес не будет использоваться нигде и служит исключительно для того, чтобы вы смогли - восстановить пароль от своего персонажа, а так же для получения новостной рассылки.

    -
    - -
    -

    -

    Введите ваш действующий и настоящий "Email" адрес

    -

    -
    - -
    -

    -
    + ?>"/>

    +
    + +
    +

    +

    Введите никнейм для Вашего персонажа

    +
    + +
    +

    +

    Введите никнейм для Вашего персонажа

    +

    +
    + +
    +

    Имя вашего персонажа (login):

    +
    + + +
    +

    +

    Введите ваш действующий и настоящий "Email" адрес

    +

    +

    Внимание! Не используйте несуществующие "Email" адреса, а так же проверяйте то, какой эмеил вы вводите, + ибо перед стартом игры, вам необходимо будет подтвердить ваш эмеил адрес.

    +

    +

    Ваш "Email" Адрес не будет использоваться нигде и служит исключительно для того, чтобы вы смогли + восстановить пароль от своего персонажа, а так же для получения новостной рассылки.

    +
    + +
    +

    +

    Введите ваш действующий и настоящий "Email" адрес

    +

    +
    + +
    +

    +
    - + - -
    -

    -

    Войдите на "Email": и проверьте почту,
    вам пришло письмо с кодом - подтверждения, скопируйте его и вставьте сюда:

    -
    - -
    -

    -

    Войдите на "Email": и проверьте почту,
    вам пришло письмо с кодом - подтверждения, скопируйте его и вставьте сюда:

    -

    -
    - -
    -

    -
    + +
    +

    +

    Войдите на "Email": и проверьте почту,
    вам пришло письмо с кодом + подтверждения, скопируйте его и вставьте сюда:

    +
    + +
    +

    +

    Войдите на "Email": и проверьте почту,
    вам пришло письмо с кодом + подтверждения, скопируйте его и вставьте сюда:

    +

    +
    + +
    +

    +
    - + - -
    -

    -

    Придумайте пароль для Вашего персонажа

    -

    -

    Подтвердите придуманный пароль для Вашего персонажа


    -

    -

    Пароль должен состоять с букв верхнего и нижнего регистра, а так же, помимо букв, необходимо добавить и - цифры для надёжности.

    -
    - -
    -

    -

    Придумайте пароль для Вашего персонажа

    -

    -

    Подтвердите придуманный пароль для Вашего персонажа

    -

    -

    Пароль должен состоять с букв верхнего и нижнего регистра, а так же, помимо букв, необходимо добавить и - цифры для надёжности.

    -


    -
    - -
    -

    -

    -
    - + +
    +

    +

    Придумайте пароль для Вашего персонажа

    +

    +

    Подтвердите придуманный пароль для Вашего персонажа


    +

    +

    Пароль должен состоять с букв верхнего и нижнего регистра, а так же, помимо букв, необходимо добавить и + цифры для надёжности.

    +
    + +
    +

    +

    Придумайте пароль для Вашего персонажа

    +

    +

    Подтвердите придуманный пароль для Вашего персонажа

    +

    +

    Пароль должен состоять с букв верхнего и нижнего регистра, а так же, помимо букв, необходимо добавить и + цифры для надёжности.

    +


    +
    + +
    +

    +

    +
    + - -
    -

    -

    Выберите пол вашего персонажа:

    -

    -
    - -
    -

    -
    - + +
    +

    +

    Выберите пол вашего персонажа:

    +

    +
    + +
    +

    +
    + - -
    -

    Укажите дату вашего рождения:

    - -
    - -
    - -
    - + +
    +

    Укажите дату вашего рождения:

    + +
    + +
    + +
    + - -
    -

    -

    Выберите игровой класс для вашего персонажа:

    -

    -

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

    -
    -
    -

    -
    -
    -

    -

    -
    -
    -

    -
    -
    -

    -

    -
    -
    -

    -
    -
    -

    -

    -
    -
    -

    -

    -
    -
    -

    -

    -
    + +
    +

    +

    Выберите игровой класс для вашего персонажа:

    +

    +

    Внимание! Выбор игрового класса не влияет на игру в целом и нигде не фиксируется или же используется, + это необходимо для того, чтобы ваш персонаж получил нужные предметы в начале игры, а так же нужные + баффы.

    +
    +
    +

    +
    +
    +

    +

    +
    +
    +

    +
    +
    +

    +

    +
    +
    +

    +
    +
    +

    +

    +
    +
    +

    +

    +
    +
    +

    +

    -

    -

    Внимание! Выбрав класс персонажа вы автоматически соглашаетесь с правилами и законами игрового мира

    -
    - +

    Внимание! Выбрав класс персонажа вы автоматически соглашаетесь с правилами и законами игрового мира

    +
    +
    + 0) { + $ref = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`login` FROM `users` WHERE `id` = "' . mysql_real_escape_string( + $_POST['ref'] + ) . '" LIMIT 1' + ) + ); + if (isset($ref['id'])) { + $_POST['ref'] = $ref['id']; + } else { + $_POST['ref'] = 0; + } + unset($ref); } - if (!empty($_POST['nick_u']) && !empty($_POST['email_u']) && !empty($_POST['secure_code']) && !empty($_POST['pol_u']) && !empty($_POST['bday_u']) && !empty($_POST['class_u']) && error_check(4, $_POST['secure_code'], $_POST['email_u']) == "") { - //================================ - session_start(); - include('_incl_data/class/__user.php'); - //Создаем персонажа + mysql_query( + 'INSERT INTO `users` (`name`,`align`,`real`,`login`,`host_reg`,`pass`,`ip`,`ipreg`,`city`,`cityreg`,`room`,`timereg`, + `activ`,`mail`,`bithday`,`sex`,`fnq`,`battle`,`design`,`molch2`,`level` + ) VALUES ( + "", + "0", + "1", + "' . mysql_real_escape_string($_POST['nick_u']) . '", + "' . mysql_real_escape_string(0 + (int)$_POST['ref']) . '", + "' . mysql_real_escape_string(md5($_POST['pass1_u'])) . '", + "' . mysql_real_escape_string(getIp()) . '", + "' . mysql_real_escape_string(getIp()) . '", + "capitalcity", + "capitalcity", + "9", + "' . time() . '", + "0", + "' . mysql_real_escape_string($_POST['email_u']) . '", + "' . mysql_real_escape_string(date('d.m.Y', strtotime($_POST['bday_u']))) . '", + "' . mysql_real_escape_string($_POST['pol_u'] - 10) . '", + "0", + "0", + "1", + "' . mysql_real_escape_string(time() + 86400) . '", + "8" + )' + ); + + $uid = mysql_insert_id(); + if ($uid > 0) { + //=================================================================== + + if (isset($_COOKIE['from'])) { + mysql_query( + 'INSERT INTO `from` (`type`,`ip`,`uid`,`time`,`val`) VALUES ( "0", "' . getIp( + ) . '","' . $uid . '", "' . time() . '", "' . mysql_real_escape_string($_COOKIE['from']) . '" ) ' + ); + } + //Сообщения при регистрации от паладинов. + $pal = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `users` WHERE `align` > 1 AND `align` < 2 AND `online` > "' . (time( + ) - 120) . '" ORDER BY `online` DESC LIMIT 1' + ) + ); + if (!isset($pal['id'])) { + $pal = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `users` WHERE `align` > 3 AND `align` < 4 AND `online` > "' . (time( + ) - 120) . '" ORDER BY `online` DESC LIMIT 1' + ) + ); + } + if (isset($pal['id'])) { + //отсылаем сообщение от $pal['login'] + $paltext = 'Приветствую ' . $_POST['nick_u'] . '. Отправляемся драться в хаоты, если нет заявок, создайте бой, дополнительно купите зверя и не забывайте выходить на центральную площать убивать Трупожора своего уровня!Приятной игры. '; + mysql_query( + "INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`new`) VALUES ('capitalcity','0','" . $pal['login'] . "','" . $_POST['nick_u'] . "','" . $paltext . "','" . time( + ) . "','3','0','1')" + ); + } else { + //Не знаю что делать, пусть будет просто приветствие :) + $text = 'Приветствую ' . $_POST['nick_u'] . '. Отправляемся драться в хаоты, если нет заявок, создайте бой, дополнительно купите зверя и не забывайте выходить на центральную площать убивать Трупожора своего уровня!Приятной игры.'; + mysql_query( + "INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`new`) VALUES ('capitalcity','0','','" . $_POST['nick_u'] . "','" . $text . "','" . time( + ) . "','3','0','1')" + ); + } + + /** Много однотипых запросов это боль. + * + * @param array $itemset + * @param double $itemscost + * @param string $stats + * + * @return void + */ + function sql_01(array $itemset, $itemscost, $stats) + { + global $u, $uid; + array_unshift($itemset, null); + foreach ($itemset as $inodet => $itemId) { + if (empty($itemId)) { + continue; + } + mysql_query( + sprintf( + 'update items_users set + 1price = (select price_1 from items_shop where sid = 1 and item_id = %d), + inOdet = %d + where id = %d', + $itemId, $inodet, $u->addItem($itemId, $uid) + ) + ); + } + mysql_query(sprintf('update users set money = money - %f where id = %d', $itemscost, $uid)); + mysql_query( + sprintf( + 'insert into stats (id, stats, ability, skills, exp) + values (%d, %s, -75, -9, 100000)', $uid, $stats + ) + ); + } + + if ($_POST['class_u'] == 1) //топор + { + //кастим эфекты + $us = add_effn($uid, 1); // сила + $us = add_effn($uid, 20); // сокрушение + + $wear = [528, 540, 552, 291, 543, null, 627, 653, 681, 687, 687, 687, 320, 552, null, 709, 716]; + $itemcost = 2101; + $stats = 's1=62|s2=3|s3=3|s4=30|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=9|a3=0|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0'; + + } elseif ($_POST['class_u'] == 2) //уворот + { + //кастим эфекты + $us = add_effn($uid, 8); // ловка + $us = add_effn($uid, 20); // сокрушение + + $wear = [525, 539, 523, 290, 541, null, 633, 647, 680, 685, 685, 685, 1151, 523, null, 707, 712]; + $itemcost = 1972; + $stats = 's1=21|s2=31|s3=16|s4=30|rinv=40|m9=5|m6=10|s7=0|a1=9|a2=0|a3=0|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0'; + + } elseif ($_POST['class_u'] == 3)//танк + { + //кастим эфекты + $us = add_effn($uid, 1); // сила + $us = add_effn($uid, 20); // сокрушение + + $wear = [533, 536, 558, 291, 545, null, 628, 654, 684, 689, 689, 689, 700, 722, null, 710, 718]; + $itemcost = 2101; + $stats = 's1=42|s2=3|s3=3|s4=50|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=9|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0'; + + } elseif ($_POST['class_u'] == 4)//крит + { + //кастим эфекты + $us = add_effn($uid, 7); // инта + $us = add_effn($uid, 20); // сокрушение + + $wear = [527, 537, 567, 291, 544, null, 626, 651, 683, 686, 686, 686, 706, 723, null, 708, 717]; + $itemcost = 1988; + $stats = 's1=24|s2=20|s3=24|s4=30|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=9|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0'; + + } elseif ($_POST['class_u'] == 5)//воздух + { + //кастим эфекты + $us = add_effn($uid, 9); // интелект + $us = add_effn($uid, 32); // Холодный разум + $us = add_effn($uid, 53); // Маг уселок воздух + $us = add_effn($uid, 439); // Маг уселок + + + mysql_query( + "INSERT INTO `stats` (`id`,`stats`,`ability`,`skills`,exp) VALUES ('" . $uid . "','s1=14|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=0|a5=3|mg1=0|mg2=6|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=13|s6=40|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',-75,-9,100000)" + ); + $re = $u->addItem(531, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 1 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "531" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(534, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 2 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "534" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(1026, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 3 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "1026" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(291, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 4 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "291" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(548, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 5 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "548" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(629, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 7 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "629" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(698, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 13 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "698" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(711, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 16 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "711" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(714, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 17 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "714" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + ///------- юва + $re = $u->addItem(658, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 8 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "658" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(675, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 9 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "675" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(693, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 10 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "693" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + $re = $u->addItem(693, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 11 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "693" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + $re = $u->addItem(693, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 12 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "693" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + ///---- + mysql_query( + 'UPDATE `users` SET `money` = `money`-1988 WHERE `id` = "' . $uid . '" LIMIT 1' + );//коректировка денег 2244 - 1988 + } elseif ($_POST['class_u'] == 6)//огонь + { + //кастим эфекты + $us = add_effn($uid, 9); // интелект + $us = add_effn($uid, 32); // Холодный разум + $us = add_effn($uid, 51); // Маг уселок огонь + $us = add_effn($uid, 439); // Маг уселок + + mysql_query( + "INSERT INTO `stats` (`id`,`stats`,`ability`,`skills`,exp) VALUES ('" . $uid . "','s1=14|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=0|a5=3|mg1=6|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=13|s6=40|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',-75,-9,100000)" + ); + $re = $u->addItem(531, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 1 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "531" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(534, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 2 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "534" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(1026, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 3 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "1026" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(291, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 4 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "291" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(549, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 5 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "549" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(629, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 7 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "629" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(698, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 13 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "698" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(711, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 16 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "711" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(714, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 17 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "714" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + ///------- юва + $re = $u->addItem(655, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 8 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "655" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(679, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 9 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "679" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(696, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 10 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "696" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + $re = $u->addItem(696, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 11 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "696" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + $re = $u->addItem(696, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 12 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "696" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + ///---- + + mysql_query( + 'UPDATE `users` SET `money` = `money`-1988 WHERE `id` = "' . $uid . '" LIMIT 1' + );//коректировка денег 2244 - 1988 + } elseif ($_POST['class_u'] == 7)//земля + { + + + //кастим эфекты + $us = add_effn($uid, 9); // интелект + $us = add_effn($uid, 32); // Холодный разум + $us = add_effn($uid, 54); // Маг уселок земля + $us = add_effn($uid, 439); // Маг уселок + + mysql_query( + "INSERT INTO `stats` (`id`,`stats`,`ability`,`skills`,exp) VALUES ('" . $uid . "','s1=14|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=0|a5=3|mg1=0|mg2=0|mg3=0|mg4=6|mg5=0|mg6=0|mg7=0|s5=13|s6=40|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',-75,-9,100000)" + ); + $re = $u->addItem(531, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 1 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "531" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(534, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 2 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "534" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(1026, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 3 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "1026" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(291, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 4 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "291" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(548, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 5 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "548" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(629, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 7 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "629" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(698, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 13 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "698" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(711, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 16 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "711" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(714, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 17 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "714" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + ///------- юва + $re = $u->addItem(657, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 8 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "657" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(674, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 9 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "674" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(692, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 10 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "692" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + $re = $u->addItem(692, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 11 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "692" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + $re = $u->addItem(692, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 12 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "692" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + ///---- + + mysql_query( + 'UPDATE `users` SET `money` = `money`-1988 WHERE `id` = "' . $uid . '" LIMIT 1' + );//коректировка денег 2244 - 1988 + } elseif ($_POST['class_u'] == 8)//вода + { + //кастим эфекты + $us = add_effn($uid, 9); // интелект + $us = add_effn($uid, 32); // Холодный разум + $us = add_effn($uid, 52); // Маг уселок вода + $us = add_effn($uid, 439); // Маг уселок + mysql_query( + "INSERT INTO `stats` (`id`,`stats`,`ability`,`skills`,exp) VALUES ('" . $uid . "','s1=14|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=0|a5=3|mg1=0|mg2=0|mg3=6|mg4=0|mg5=0|mg6=0|mg7=0|s5=13|s6=40|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',-75,-9,100000)" + ); + $re = $u->addItem(531, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 1 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "531" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(534, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 2 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "534" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(1026, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 3 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "1026" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(291, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 4 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "291" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(548, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 5 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "548" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(629, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 7 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "629" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(318, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 13 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "318" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(711, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 16 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "711" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(714, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 17 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "714" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + ///------- юва + $re = $u->addItem(660, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 8 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "660" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(677, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 9 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "677" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + + $re = $u->addItem(695, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 10 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "695" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + $re = $u->addItem(695, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 11 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "695" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + $re = $u->addItem(695, $uid); + mysql_query('UPDATE `items_users` SET `inodet` = 12 WHERE `id` = "' . $re . '" LIMIT 1'); + $price = mysql_fetch_array( + mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "695" AND `sid`=1 LIMIT 1') + ); + mysql_query( + 'UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1' + ); + ///---- + + mysql_query( + 'UPDATE `users` SET `money` = `money`-1988 WHERE `id` = "' . $uid . '" LIMIT 1' + );//коректировка денег 2244 - 1988 + } + + if (!empty($wear) && !empty($itemcost) && !empty($stats)) { + sql_01($wear, $itemcost, $stats); + unset($wear, $itemcost, $stats); + } + if ($_POST['ref'] > 0) { - $ref = mysql_fetch_array(mysql_query('SELECT `id`,`login` FROM `users` WHERE `id` = "' . mysql_real_escape_string($_POST['ref']) . '" LIMIT 1')); - if (isset($ref['id'])) { - $_POST['ref'] = $ref['id']; - } else { - $_POST['ref'] = 0; - } - unset($ref); + $re = $u->addItem(6417, $uid); } - mysql_query('INSERT INTO `users` (`name`,`align`,`real`,`login`,`host_reg`,`pass`,`ip`,`ipreg`,`city`,`cityreg`,`room`,`timereg`, - `activ`,`mail`,`bithday`,`sex`,`fnq`,`battle`,`design`,`molch2`,`level` - ) VALUES ( - "", - "0", - "1", - "' . mysql_real_escape_string($_POST['nick_u']) . '", - "' . mysql_real_escape_string(0 + (int)$_POST['ref']) . '", - "' . mysql_real_escape_string(md5($_POST['pass1_u'])) . '", - "' . mysql_real_escape_string(getIp()) . '", - "' . mysql_real_escape_string(getIp()) . '", - "capitalcity", - "capitalcity", - "9", - "' . time() . '", - "0", - "' . mysql_real_escape_string($_POST['email_u']) . '", - "' . mysql_real_escape_string(date('d.m.Y', strtotime($_POST['bday_u']))) . '", - "' . mysql_real_escape_string($_POST['pol_u'] - 10) . '", - "0", - "0", - "1", - "' . mysql_real_escape_string(time() + 86400) . '", - "8" - )'); - $uid = mysql_insert_id(); - if ($uid > 0) { - //=================================================================== + //катим эфекты + // + // + $us = add_effn($uid, 37); + $us = add_effn($uid, 38); + $us = add_effn($uid, 283); + $us = add_effn($uid, 25); + $us = add_effn($uid, 296); + $us = add_effn($uid, 472); - if (isset($_COOKIE['from'])) { - mysql_query('INSERT INTO `from` (`type`,`ip`,`uid`,`time`,`val`) VALUES ( "0", "' . getIp() . '","' . $uid . '", "' . time() . '", "' . mysql_real_escape_string($_COOKIE['from']) . '" ) '); + //Магическое усиление + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (4942, 40, 0.00, 0.00, 0.00, " . $uid . ", 0, 'oneType=72|onlyOne=1|musor=1|noremont=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 4, 'Администрация', '', '', 1, 2, '439', 'capitalcity', " . time( + ) . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Защита от оружия + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (1001, 40, 0.00, 0.00, 0.00, " . $uid . ", 0, 'onlyOne=1|oneType=7|noremont=1|musor=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 4, 'Администрация', '', '', 1, 2, '25', 'capitalcity', " . time( + ) . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Защита от магии + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (4941, 40, 0.00, 0.00, 0.00, " . $uid . ", 0, 'oneType=71|onlyOne=1|musor=1|noremont=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 4, 'Администрация', '', '', 1, 2, '438', 'capitalcity', " . time( + ) . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Жажда жизни +6 + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (3101, 50, 0.00, 0.00, 0.00, " . $uid . ", 0, 'onlyOne=1|noremont=1|oneType=33|musor=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 5, 'Администрация', '', '', 1, 2, '296', 'capitalcity', " . time( + ) . ", 0, 33, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Аптечка (Исцеляет легкие травмы) + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (4412, 7, 0.00, 0.00, 0.00, " . $uid . ", 0, 'tr_lvl=1|useOnLogin=1|musor=1|noremont=1', 0, 0, 0, 0, 0.00, 2, 'Администрация', '', '', 1, 2, 'lech_free_1', 'capitalcity', " . time( + ) . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Аптечка (Исцеляет средние травмы) + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (4413, 14, 0.00, 0.00, 0.00, " . $uid . ", 0, 'tr_lvl=1|useOnLogin=1|musor=1|noremont=1', 0, 0, 0, 0, 0.00, 2, 'Администрация', '', '', 1, 2, 'lech_free_2', 'capitalcity', " . time( + ) . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Аптечка (Исцеляет тяжелые травмы) + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (4414, 21, 0.00, 0.00, 0.00, " . $uid . ", 0, 'tr_lvl=1|useOnLogin=1|musor=1|noremont=1', 0, 0, 0, 0, 0.00, 2, 'Администрация', '', '', 1, 2, 'lech_free_3', 'capitalcity', " . time( + ) . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Холодный разум + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (1460, 15, 0.00, 0.00, 0.00, " . $uid . ", 0, 'musor=1|noremont=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 5, 'Администрация', '', '', 1, 5, '32', 'capitalcity', " . time( + ) . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Сокрушение + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (994, 40, 0.00, 0.00, 0.00, " . $uid . ", 0, 'onlyOne=1|oneType=44|noremont=1|musor=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 4, 'Администрация', '', '', 1, 4, '20', 'capitalcity', " . time( + ) . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Эликсир жизни (восстанавливает +500 хп) + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (4736, 5, 0.00, 0.00, 0.00, " . $uid . ", 0, 'moment=1|moment_hp=500|nohaos=1|musor=2|noremont=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 10, 'Администрация', '', '', 1, 4, 'elicsir_hp -w500', 'capitalcity', " . time( + ) . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Зелье жизни (восстанавливает +200 хп) + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (724, 2, 0.00, 0.00, 0.00, " . $uid . ", 0, 'moment=1|moment_hp=200|nohaos=1|musor=2|noremont=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 10, 'Администрация', '', '', 1, 4, 'elicsir_hp -w200', 'capitalcity', " . time( + ) . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Зелье могущества (+10 силы) + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (870, 5, 0.00, 0.00, 0.00, " . $uid . ", 0, 'nohaos=1|onlyOne=1|oneType=1|musor=2|noremont=1|nohaos=1|onlyOne=1|oneType=1|noremont=1|add_s1=15|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 5, 'Администрация', '', '', 1, 4, '1', 'capitalcity', " . time( + ) . ", 0, 1, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Зелье стремительности (+10 ловкости) + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (872, 5, 0.00, 0.00, 0.00, " . $uid . ", 0, 'nohaos=1|onlyOne=1|oneType=1|musor=2|noremont=1|nohaos=1|onlyOne=1|oneType=1|noremont=1|add_s2=15|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 5, 'Администрация', '', '', 1, 4, '8', 'capitalcity', " . time( + ) . ", 0, 1, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Зелье прозрения(+10 интуиции) + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (871, 5, 0.00, 0.00, 0.00, " . $uid . ", 0, 'nohaos=1|onlyOne=1|oneType=1|musor=2|noremont=1|nohaos=1|onlyOne=1|oneType=1|noremont=1|add_s3=15|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 5, 'Администрация', '', '', 1, 4, '7', 'capitalcity', " . time( + ) . ", 0, 1, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Зелье разума(+10 интеллекта) + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (873, 5, 0.00, 0.00, 0.00, " . $uid . ", 0, 'nohaos=1|onlyOne=1|oneType=1|musor=2|noremont=1|nohaos=1|onlyOne=1|oneType=1|noremont=1|add_s5=15|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 5, 'Администрация', '', '', 1, 4, '9', 'capitalcity', " . time( + ) . ", 0, 1, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Нектар Отрицания(+160 защиты от магии) + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (2140, 30, 0.00, 0.00, 0.00, " . $uid . ", 0, 'nohaos=1|onlyOne=1|oneType=8|musor=2|noremont=1|add_zm=160|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 5, 'Администрация', '', '', 1, 4, '38', 'capitalcity', " . time( + ) . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Нектар уязвимости(+160 защиты от урона) + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (2139, 30, 0.00, 0.00, 0.00, " . $uid . ", 0, 'nohaos=1|onlyOne=1|oneType=8|musor=2|noremont=1|add_za=160|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 5, 'Администрация', '', '', 1, 4, '37', 'capitalcity', " . time( + ) . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + //Бутер (+180 хп) + mysql_query( + "INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES + (3075, 10, 0.00, 0.00, 0.00, " . $uid . ", 0, 'nohaos=1|onlyOne=1|oneType=4|musor=1|noremont=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 10, 'Администрация', '', '', 1, 4, '283', 'capitalcity', " . time( + ) . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);" + ); + + mysql_query('UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . $uid . '" LIMIT 1'); + + //Создаем статы персонажа + mysql_query("INSERT INTO `online` (`uid`,`timeStart`) VALUES ('" . $uid . "','" . time() . "')"); + + //добовляем благодать ангела 1н день + $ttime = time(); + mysql_query( + "INSERT INTO `eff_users`(`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES + (412,'" . $uid . "','Благодать Ангела [1]','add_gold=1|add_speedhp=35|add_speedmp=35|add_exp=35|add_repair_discount=25|add_speed_dungeon=10|add_hpVinos=5|add_m10=5|add_m11=5|add_za=25|add_zma=25',52," . $ttime . ",0,'',0,0,0,'',1,-1,0,0,1,'',0,0,0,0,0)" + ); + + //мульты + $ipm1 = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `logs_auth` WHERE `uid` = "' . mysql_real_escape_string( + $uid + ) . '" AND `ip`!="' . mysql_real_escape_string(getIp()) . '" ORDER BY `id` ASC LIMIT 1' + ) + ); + $ppl = mysql_query( + 'SELECT * FROM `logs_auth` WHERE `ip`!="" AND (`ip` = "' . mysql_real_escape_string( + getIp() + ) . '" OR `ip`="' . mysql_real_escape_string($ipm1['ip']) . '" OR `ip`="' . mysql_real_escape_string( + $_COOKIE['ip'] + ) . '")' + ); + while ($spl = mysql_fetch_array($ppl)) { + $ml = mysql_fetch_array( + mysql_query( + 'SELECT `id` FROM `mults` WHERE (`uid` = "' . $spl['uid'] . '" AND `uid2` = "' . $uid . '") OR (`uid2` = "' . $spl['uid'] . '" AND `uid` = "' . $uid . '") LIMIT 1' + ) + ); + if (!isset($ml['id']) && $spl['ip'] != '' && $spl['ip'] != '127.0.0.1') { + mysql_query( + 'INSERT INTO `mults` (`uid`,`uid2`,`ip`) VALUES ("' . $uid . '","' . $spl['uid'] . '","' . $spl['ip'] . '")' + ); } - //Сообщения РїСЂРё регистрации РѕС‚ паладинов. - $pal = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `align` > 1 AND `align` < 2 AND `online` > "' . (time() - 120) . '" ORDER BY `online` DESC LIMIT 1')); - if (!isset($pal['id'])) { - $pal = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `align` > 3 AND `align` < 4 AND `online` > "' . (time() - 120) . '" ORDER BY `online` DESC LIMIT 1')); - } - if (isset($pal['id'])) { - //отсылаем сообщение РѕС‚ $pal['login'] - $paltext = 'Приветствую ' . $_POST['nick_u'] . '. Отправляемся драться РІ хаоты, если нет заявок, создайте Р±РѕР№, дополнительно купите зверя Рё РЅРµ забывайте выходить РЅР° центральную площать убивать Трупожора своего СѓСЂРѕРІРЅСЏ!Приятной РёРіСЂС‹. '; - mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`new`) VALUES ('capitalcity','0','" . $pal['login'] . "','" . $_POST['nick_u'] . "','" . $paltext . "','" . time() . "','3','0','1')"); - } else { - //РќРµ знаю что делать, пусть будет просто приветствие :) - $text = 'Приветствую ' . $_POST['nick_u'] . '. Отправляемся драться РІ хаоты, если нет заявок, создайте Р±РѕР№, дополнительно купите зверя Рё РЅРµ забывайте выходить РЅР° центральную площать убивать Трупожора своего СѓСЂРѕРІРЅСЏ!Приятной РёРіСЂС‹.'; - mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`new`) VALUES ('capitalcity','0','','" . $_POST['nick_u'] . "','" . $text . "','" . time() . "','3','0','1')"); - } - - //$text = 'Приветствую '.$_POST['nick_u'].'. Крайне рекомендую прочесть РјРёРЅРё гайд РїРѕ ссылке https://new-combats.com/forum?read=5762&rnd=1 , если останутся РІРѕРїСЂРѕСЃС‹,задавайте РІ общий чат!'; - //mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`new`) VALUES ('capitalcity','0','','".$_POST['nick_u']."','".$text."','".time()."','6','0','1')"); - - /** РњРЅРѕРіРѕ однотипых запросов это боль. - * - * @param array $itemset - * @param double $itemscost - * @param string $stats - * - * @return void - */ - function sql_01(array $itemset, $itemscost, $stats) - { - global $u, $uid; - array_unshift($itemset, null); - foreach ($itemset as $inodet => $itemId) { - if (empty($itemId)) { - continue; - } - mysql_query(sprintf('update items_users set - 1price = (select price_1 from items_shop where sid = 1 and item_id = %d), - inOdet = %d - where id = %d', - $itemId, $inodet, $u->addItem($itemId, $uid))); - } - mysql_query(sprintf('update users set money = money - %f where id = %d', $itemscost, $uid)); - mysql_query(sprintf('insert into stats (id, stats, ability, skills, exp) - values (%d, %s, -75, -9, 100000)', $uid, $stats)); - } - - if ($_POST['class_u'] == 1) //топор - { - //кастим эфекты - $us = add_effn($uid, 1); // сила - $us = add_effn($uid, 20); // сокрушение - - $wear = [528, 540, 552, 291, 543, null, 627, 653, 681, 687, 687, 687, 320, 552, null, 709, 716]; - $itemcost = 2101; - $stats = 's1=62|s2=3|s3=3|s4=30|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=9|a3=0|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0'; - - } elseif ($_POST['class_u'] == 2) //СѓРІРѕСЂРѕС‚ - { - //кастим эфекты - $us = add_effn($uid, 8); // ловка - $us = add_effn($uid, 20); // сокрушение - - $wear = [525, 539, 523, 290, 541, null, 633, 647, 680, 685, 685, 685, 1151, 523, null, 707, 712]; - $itemcost = 1972; - $stats = 's1=21|s2=31|s3=16|s4=30|rinv=40|m9=5|m6=10|s7=0|a1=9|a2=0|a3=0|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0'; - - } elseif ($_POST['class_u'] == 3)//танк - { - //кастим эфекты - $us = add_effn($uid, 1); // сила - $us = add_effn($uid, 20); // сокрушение - - $wear = [533, 536, 558, 291, 545, null, 628, 654, 684, 689, 689, 689, 700, 722, null, 710, 718]; - $itemcost = 2101; - $stats = 's1=42|s2=3|s3=3|s4=50|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=9|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0'; - - } elseif ($_POST['class_u'] == 4)//РєСЂРёС‚ - { - //кастим эфекты - $us = add_effn($uid, 7); // инта - $us = add_effn($uid, 20); // сокрушение - - $wear = [527, 537, 567, 291, 544, null, 626, 651, 683, 686, 686, 686, 706, 723, null, 708, 717]; - $itemcost = 1988; - $stats = 's1=24|s2=20|s3=24|s4=30|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=9|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0'; - - } elseif ($_POST['class_u'] == 5)//РІРѕР·РґСѓС… - { - //кастим эфекты - $us = add_effn($uid, 9); // интелект - $us = add_effn($uid, 32); // Холодный разум - $us = add_effn($uid, 53); // Маг уселок РІРѕР·РґСѓС… - $us = add_effn($uid, 439); // Маг уселок - - - mysql_query("INSERT INTO `stats` (`id`,`stats`,`ability`,`skills`,exp) VALUES ('" . $uid . "','s1=14|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=0|a5=3|mg1=0|mg2=6|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=13|s6=40|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',-75,-9,100000)"); - $re = $u->addItem(531, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 1 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "531" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(534, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 2 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "534" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(1026, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 3 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "1026" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(291, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 4 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "291" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(548, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 5 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "548" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(629, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 7 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "629" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(698, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 13 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "698" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(711, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 16 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "711" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(714, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 17 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "714" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - ///------- СЋРІР° - $re = $u->addItem(658, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 8 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "658" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(675, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 9 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "675" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(693, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 10 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "693" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(693, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 11 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "693" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(693, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 12 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "693" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - ///---- - mysql_query('UPDATE `users` SET `money` = `money`-1988 WHERE `id` = "' . $uid . '" LIMIT 1');//коректировка денег 2244 - 1988 - } elseif ($_POST['class_u'] == 6)//РѕРіРѕРЅСЊ - { - //кастим эфекты - $us = add_effn($uid, 9); // интелект - $us = add_effn($uid, 32); // Холодный разум - $us = add_effn($uid, 51); // Маг уселок РѕРіРѕРЅСЊ - $us = add_effn($uid, 439); // Маг уселок - - mysql_query("INSERT INTO `stats` (`id`,`stats`,`ability`,`skills`,exp) VALUES ('" . $uid . "','s1=14|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=0|a5=3|mg1=6|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=13|s6=40|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',-75,-9,100000)"); - $re = $u->addItem(531, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 1 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "531" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(534, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 2 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "534" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(1026, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 3 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "1026" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(291, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 4 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "291" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(549, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 5 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "549" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(629, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 7 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "629" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(698, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 13 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "698" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(711, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 16 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "711" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(714, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 17 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "714" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - ///------- СЋРІР° - $re = $u->addItem(655, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 8 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "655" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(679, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 9 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "679" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(696, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 10 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "696" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(696, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 11 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "696" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(696, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 12 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "696" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - ///---- - - mysql_query('UPDATE `users` SET `money` = `money`-1988 WHERE `id` = "' . $uid . '" LIMIT 1');//коректировка денег 2244 - 1988 - } elseif ($_POST['class_u'] == 7)//земля - { - - - //кастим эфекты - $us = add_effn($uid, 9); // интелект - $us = add_effn($uid, 32); // Холодный разум - $us = add_effn($uid, 54); // Маг уселок земля - $us = add_effn($uid, 439); // Маг уселок - - mysql_query("INSERT INTO `stats` (`id`,`stats`,`ability`,`skills`,exp) VALUES ('" . $uid . "','s1=14|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=0|a5=3|mg1=0|mg2=0|mg3=0|mg4=6|mg5=0|mg6=0|mg7=0|s5=13|s6=40|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',-75,-9,100000)"); - $re = $u->addItem(531, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 1 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "531" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(534, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 2 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "534" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(1026, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 3 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "1026" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(291, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 4 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "291" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(548, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 5 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "548" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(629, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 7 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "629" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(698, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 13 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "698" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(711, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 16 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "711" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(714, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 17 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "714" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - ///------- СЋРІР° - $re = $u->addItem(657, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 8 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "657" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(674, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 9 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "674" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(692, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 10 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "692" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(692, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 11 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "692" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(692, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 12 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "692" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - ///---- - - mysql_query('UPDATE `users` SET `money` = `money`-1988 WHERE `id` = "' . $uid . '" LIMIT 1');//коректировка денег 2244 - 1988 - } elseif ($_POST['class_u'] == 8)//РІРѕРґР° - { - //кастим эфекты - $us = add_effn($uid, 9); // интелект - $us = add_effn($uid, 32); // Холодный разум - $us = add_effn($uid, 52); // Маг уселок РІРѕРґР° - $us = add_effn($uid, 439); // Маг уселок - mysql_query("INSERT INTO `stats` (`id`,`stats`,`ability`,`skills`,exp) VALUES ('" . $uid . "','s1=14|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=0|a5=3|mg1=0|mg2=0|mg3=6|mg4=0|mg5=0|mg6=0|mg7=0|s5=13|s6=40|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',-75,-9,100000)"); - $re = $u->addItem(531, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 1 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "531" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(534, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 2 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "534" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(1026, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 3 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "1026" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(291, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 4 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "291" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(548, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 5 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "548" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(629, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 7 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "629" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(318, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 13 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "318" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(711, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 16 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "711" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(714, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 17 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "714" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - ///------- СЋРІР° - $re = $u->addItem(660, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 8 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "660" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(677, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 9 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "677" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - - $re = $u->addItem(695, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 10 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "695" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(695, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 11 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "695" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - $re = $u->addItem(695, $uid); - mysql_query('UPDATE `items_users` SET `inodet` = 12 WHERE `id` = "' . $re . '" LIMIT 1'); - $price = mysql_fetch_array(mysql_query('SELECT `price_1` FROM `items_shop` WHERE `item_id` = "695" AND `sid`=1 LIMIT 1')); - mysql_query('UPDATE `items_users` SET `1price` = "' . $price['price_1'] . '" WHERE `id` = "' . $re . '" LIMIT 1'); - ///---- - - mysql_query('UPDATE `users` SET `money` = `money`-1988 WHERE `id` = "' . $uid . '" LIMIT 1');//коректировка денег 2244 - 1988 - } - - if (!empty($wear) && !empty($itemcost) && !empty($stats)) { - sql_01($wear, $itemcost, $stats); - unset($wear, $itemcost, $stats); - } - - if ($_POST['ref'] > 0) { - $re = $u->addItem(6417, $uid); - } - - //катим эфекты - // - // - $us = add_effn($uid, 37); - $us = add_effn($uid, 38); - $us = add_effn($uid, 283); - $us = add_effn($uid, 25); - $us = add_effn($uid, 296); - $us = add_effn($uid, 472); - - //Магическое усиление - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (4942, 40, 0.00, 0.00, 0.00, " . $uid . ", 0, 'oneType=72|onlyOne=1|musor=1|noremont=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 4, 'Администрация', '', '', 1, 2, '439', 'capitalcity', " . time() . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Защита РѕС‚ оружия - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (1001, 40, 0.00, 0.00, 0.00, " . $uid . ", 0, 'onlyOne=1|oneType=7|noremont=1|musor=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 4, 'Администрация', '', '', 1, 2, '25', 'capitalcity', " . time() . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Защита РѕС‚ магии - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (4941, 40, 0.00, 0.00, 0.00, " . $uid . ", 0, 'oneType=71|onlyOne=1|musor=1|noremont=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 4, 'Администрация', '', '', 1, 2, '438', 'capitalcity', " . time() . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Жажда жизни +6 - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (3101, 50, 0.00, 0.00, 0.00, " . $uid . ", 0, 'onlyOne=1|noremont=1|oneType=33|musor=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 5, 'Администрация', '', '', 1, 2, '296', 'capitalcity', " . time() . ", 0, 33, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Аптечка (Рсцеляет легкие травмы) - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (4412, 7, 0.00, 0.00, 0.00, " . $uid . ", 0, 'tr_lvl=1|useOnLogin=1|musor=1|noremont=1', 0, 0, 0, 0, 0.00, 2, 'Администрация', '', '', 1, 2, 'lech_free_1', 'capitalcity', " . time() . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Аптечка (Рсцеляет средние травмы) - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (4413, 14, 0.00, 0.00, 0.00, " . $uid . ", 0, 'tr_lvl=1|useOnLogin=1|musor=1|noremont=1', 0, 0, 0, 0, 0.00, 2, 'Администрация', '', '', 1, 2, 'lech_free_2', 'capitalcity', " . time() . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Аптечка (Рсцеляет тяжелые травмы) - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (4414, 21, 0.00, 0.00, 0.00, " . $uid . ", 0, 'tr_lvl=1|useOnLogin=1|musor=1|noremont=1', 0, 0, 0, 0, 0.00, 2, 'Администрация', '', '', 1, 2, 'lech_free_3', 'capitalcity', " . time() . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Холодный разум - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (1460, 15, 0.00, 0.00, 0.00, " . $uid . ", 0, 'musor=1|noremont=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 5, 'Администрация', '', '', 1, 5, '32', 'capitalcity', " . time() . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Сокрушение - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (994, 40, 0.00, 0.00, 0.00, " . $uid . ", 0, 'onlyOne=1|oneType=44|noremont=1|musor=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 4, 'Администрация', '', '', 1, 4, '20', 'capitalcity', " . time() . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Эликсир жизни (восстанавливает +500 С…Рї) - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (4736, 5, 0.00, 0.00, 0.00, " . $uid . ", 0, 'moment=1|moment_hp=500|nohaos=1|musor=2|noremont=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 10, 'Администрация', '', '', 1, 4, 'elicsir_hp -w500', 'capitalcity', " . time() . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Зелье жизни (восстанавливает +200 С…Рї) - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (724, 2, 0.00, 0.00, 0.00, " . $uid . ", 0, 'moment=1|moment_hp=200|nohaos=1|musor=2|noremont=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 10, 'Администрация', '', '', 1, 4, 'elicsir_hp -w200', 'capitalcity', " . time() . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Зелье могущества (+10 силы) - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (870, 5, 0.00, 0.00, 0.00, " . $uid . ", 0, 'nohaos=1|onlyOne=1|oneType=1|musor=2|noremont=1|nohaos=1|onlyOne=1|oneType=1|noremont=1|add_s1=15|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 5, 'Администрация', '', '', 1, 4, '1', 'capitalcity', " . time() . ", 0, 1, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Зелье стремительности (+10 ловкости) - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (872, 5, 0.00, 0.00, 0.00, " . $uid . ", 0, 'nohaos=1|onlyOne=1|oneType=1|musor=2|noremont=1|nohaos=1|onlyOne=1|oneType=1|noremont=1|add_s2=15|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 5, 'Администрация', '', '', 1, 4, '8', 'capitalcity', " . time() . ", 0, 1, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Зелье прозрения(+10 интуиции) - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (871, 5, 0.00, 0.00, 0.00, " . $uid . ", 0, 'nohaos=1|onlyOne=1|oneType=1|musor=2|noremont=1|nohaos=1|onlyOne=1|oneType=1|noremont=1|add_s3=15|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 5, 'Администрация', '', '', 1, 4, '7', 'capitalcity', " . time() . ", 0, 1, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Зелье разума(+10 интеллекта) - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (873, 5, 0.00, 0.00, 0.00, " . $uid . ", 0, 'nohaos=1|onlyOne=1|oneType=1|musor=2|noremont=1|nohaos=1|onlyOne=1|oneType=1|noremont=1|add_s5=15|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 5, 'Администрация', '', '', 1, 4, '9', 'capitalcity', " . time() . ", 0, 1, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Нектар Отрицания(+160 защиты РѕС‚ магии) - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (2140, 30, 0.00, 0.00, 0.00, " . $uid . ", 0, 'nohaos=1|onlyOne=1|oneType=8|musor=2|noremont=1|add_zm=160|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 5, 'Администрация', '', '', 1, 4, '38', 'capitalcity', " . time() . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Нектар уязвимости(+160 защиты РѕС‚ СѓСЂРѕРЅР°) - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (2139, 30, 0.00, 0.00, 0.00, " . $uid . ", 0, 'nohaos=1|onlyOne=1|oneType=8|musor=2|noremont=1|add_za=160|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 5, 'Администрация', '', '', 1, 4, '37', 'capitalcity', " . time() . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - //Бутер (+180 С…Рї) - mysql_query("INSERT INTO `items_users` (`item_id`, `1price`, `2price`, `3price`, `4price`, `uid`, `use_text`, `data`, `inOdet`, `inShop`, `inGroup`, `delete`, `iznosNOW`, `iznosMAX`, `gift`, `gtxt1`, `gtxt2`, `kolvo`, `geniration`, `magic_inc`, `maidin`, `lastUPD`, `timeOver`, `overType`, `secret_id`, `time_create`, `time_sleep`, `dn_delete`, `inTransfer`, `post_delivery`, `lbtl_`, `bexp`, `so`, `blvl`, `pok_itm`, `btl_zd`) VALUES - (3075, 10, 0.00, 0.00, 0.00, " . $uid . ", 0, 'nohaos=1|onlyOne=1|oneType=4|musor=1|noremont=1|sudba=1|nosale=1', 0, 0, 0, 0, 0.00, 10, 'Администрация', '', '', 1, 4, '283', 'capitalcity', " . time() . ", 0, 0, '', " . time() . ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);"); - - mysql_query('UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . $uid . '" LIMIT 1'); - - //Создаем статы персонажа - mysql_query("INSERT INTO `online` (`uid`,`timeStart`) VALUES ('" . $uid . "','" . time() . "')"); - - //добовляем благодать ангела 1РЅ день - $ttime = time(); - mysql_query("INSERT INTO `eff_users`(`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES - (412,'" . $uid . "','Благодать Ангела [1]','add_gold=1|add_speedhp=35|add_speedmp=35|add_exp=35|add_repair_discount=25|add_speed_dungeon=10|add_hpVinos=5|add_m10=5|add_m11=5|add_za=25|add_zma=25',52," . $ttime . ",0,'',0,0,0,'',1,-1,0,0,1,'',0,0,0,0,0)"); - - //мульты - $ipm1 = mysql_fetch_array(mysql_query('SELECT * FROM `logs_auth` WHERE `uid` = "' . mysql_real_escape_string($uid) . '" AND `ip`!="' . mysql_real_escape_string(getIp()) . '" ORDER BY `id` ASC LIMIT 1')); - $ppl = mysql_query('SELECT * FROM `logs_auth` WHERE `ip`!="" AND (`ip` = "' . mysql_real_escape_string(getIp()) . '" OR `ip`="' . mysql_real_escape_string($ipm1['ip']) . '" OR `ip`="' . mysql_real_escape_string($_COOKIE['ip']) . '")'); - while ($spl = mysql_fetch_array($ppl)) { - $ml = mysql_fetch_array(mysql_query('SELECT `id` FROM `mults` WHERE (`uid` = "' . $spl['uid'] . '" AND `uid2` = "' . $uid . '") OR (`uid2` = "' . $spl['uid'] . '" AND `uid` = "' . $uid . '") LIMIT 1')); - if (!isset($ml['id']) && $spl['ip'] != '' && $spl['ip'] != '127.0.0.1') { - mysql_query('INSERT INTO `mults` (`uid`,`uid2`,`ip`) VALUES ("' . $uid . '","' . $spl['uid'] . '","' . $spl['ip'] . '")'); - } - } - mysql_query("INSERT INTO `logs_auth` (`uid`,`ip`,`browser`,`type`,`time`,`depass`) VALUES ('" . $uid . "','" . mysql_real_escape_string(getIp()) . "','" . mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']) . "','1','" . time() . "','')"); - - //Обновяем таблицы - mysql_query("UPDATE `users` SET `online`='" . time() . "',`ip` = '" . mysql_real_escape_string(getIp()) . "' WHERE `uid` = '" . $uid . "' LIMIT 1"); - - if (!setcookie('login', $_POST['nick_u'], (time() + 60 * 60 * 24 * 7), '', '.new-combats.com') || !setcookie('pass', md5($_POST['pass1_u']), (time() + 60 * 60 * 24 * 7), '', '.new-combats.com')) { - die('Ошибка сохранения cookie.'); - } else { - - die('Спасибо Р·Р° регистрацию РІ РёРіСЂРѕРІРѕРј РјРёСЂРµ Бойцовского Клуба, желаем вам побед Рё долгой РёРіСЂС‹. -Р’ случае РІРѕРїСЂРѕСЃРѕРІ РїРѕ РёРіСЂРµ, Вам будет доступен общий чат!
    '); - - } - - setcookie('login', $_POST['nick_u'], time() + 60 * 60 * 24 * 7, '', $c['host']); - setcookie('pass', md5($_POST['pass1_u']), time() + 60 * 60 * 24 * 7, '', $c['host']); - setcookie('login', $_POST['nick_u'], time() + 60 * 60 * 24 * 7); - setcookie('pass', md5($_POST['pass1_u']), time() + 60 * 60 * 24 * 7); - - header('location: https://new-combats.com/bk'); - - //=================================================================== } - //================================ - } else { - ?> -
    -

    -
    - + mysql_query( + "INSERT INTO `logs_auth` (`uid`,`ip`,`browser`,`type`,`time`,`depass`) VALUES ('" . $uid . "','" . mysql_real_escape_string( + getIp() + ) . "','" . mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']) . "','1','" . time() . "','')" + ); - ' + ); + + } + + setcookie('login', $_POST['nick_u'], time() + 60 * 60 * 24 * 7, '', $c['host']); + setcookie('pass', md5($_POST['pass1_u']), time() + 60 * 60 * 24 * 7, '', $c['host']); + setcookie('login', $_POST['nick_u'], time() + 60 * 60 * 24 * 7); + setcookie('pass', md5($_POST['pass1_u']), time() + 60 * 60 * 24 * 7); + + header('location: https://new-combats.com/bk'); + + //=================================================================== } + //================================ +} else { + ?> +
    +

    +
    + + + info['banned'] > 0) { - header('location: /index.php'); - die(); +if ($u->info['banned'] > 0) { + header('location: /index.php'); + die(); } $tjs = ''; -if($u->info['bithday'] == '01.01.1800' && $u->info['inTurnirnew'] == 0) { - unset($_GET,$_POST); +if ($u->info['bithday'] == '01.01.1800' && $u->info['inTurnirnew'] == 0) { + unset($_GET, $_POST); } -if($u->info['activ']>0) { - die('Вам необходимо активировать персонажа.
    Авторизируйтесь с главной страницы.'); +if ($u->info['activ'] > 0) { + die('Вам необходимо активировать персонажа.
    Авторизируйтесь с главной страницы.'); } -if(isset($_POST['set_name'])) { - $_POST['set_name'] = htmlspecialchars($_POST['set_name']); - $set_x = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `ruine_sets` WHERE `uid` = "'.$u->info['id'].'" AND `name` != "'.mysql_real_escape_string($_POST['set_name']).'" LIMIT 1')); - if( $set_x[0] > 20 ) { - $u->error = 'Нельзя создавать более 20 профилей'; - }else{ - $set_x = mysql_fetch_array(mysql_query('SELECT `id` FROM `ruine_sets` WHERE `uid` = "'.$u->info['id'].'" AND `name` = "'.mysql_real_escape_string($_POST['set_name']).'" LIMIT 1')); - // - - $f = $free_stats; // свободных статов - $i = 1; - while( $i <= 6 ) { - $_POST['s'.$i] = round((int)$_POST['s'.$i]); - if( $_POST['s'.$i] < 0 ) { - $_POST['s'.$i] = 0; - } - $f -= $_POST['s'.$i]; - $i++; - } - - // - if( $f < 0 || $f > $free_stats ) { - $u->error = 'Ошибка в распределении статов.'; - }elseif(isset($set_x['id'])) { - mysql_query('UPDATE `ruine_sets` SET - `s1` = "'.mysql_real_escape_string($_POST['s1']).'", - `s2` = "'.mysql_real_escape_string($_POST['s2']).'", - `s3` = "'.mysql_real_escape_string($_POST['s3']).'", - `s4` = "'.mysql_real_escape_string($_POST['s4']).'", - `s5` = "'.mysql_real_escape_string($_POST['s5']).'", - `s6` = "'.mysql_real_escape_string($_POST['s6']).'", - `free` = "'.mysql_real_escape_string($f).'", - `time` = "'.time().'" - WHERE `id` = "'.$set_x['id'].'" LIMIT 1'); - $u->error = 'Профиль "'.$_POST['set_name'].'" был успешно перезаписан!'; - }else{ - mysql_query('INSERT INTO `ruine_sets` ( +if (isset($_POST['set_name'])) { + $_POST['set_name'] = htmlspecialchars($_POST['set_name']); + $set_x = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(*) FROM `ruine_sets` WHERE `uid` = "' . $u->info['id'] . '" AND `name` != "' . mysql_real_escape_string( + $_POST['set_name'] + ) . '" LIMIT 1' + ) + ); + if ($set_x[0] > 20) { + $u->error = 'Нельзя создавать более 20 профилей'; + } else { + $set_x = mysql_fetch_array( + mysql_query( + 'SELECT `id` FROM `ruine_sets` WHERE `uid` = "' . $u->info['id'] . '" AND `name` = "' . mysql_real_escape_string( + $_POST['set_name'] + ) . '" LIMIT 1' + ) + ); + // + + $f = $free_stats; // свободных статов + $i = 1; + while ($i <= 6) { + $_POST['s' . $i] = round((int)$_POST['s' . $i]); + if ($_POST['s' . $i] < 0) { + $_POST['s' . $i] = 0; + } + $f -= $_POST['s' . $i]; + $i++; + } + + // + if ($f < 0 || $f > $free_stats) { + $u->error = 'Ошибка в распределении статов.'; + } elseif (isset($set_x['id'])) { + mysql_query( + 'UPDATE `ruine_sets` SET + `s1` = "' . mysql_real_escape_string($_POST['s1']) . '", + `s2` = "' . mysql_real_escape_string($_POST['s2']) . '", + `s3` = "' . mysql_real_escape_string($_POST['s3']) . '", + `s4` = "' . mysql_real_escape_string($_POST['s4']) . '", + `s5` = "' . mysql_real_escape_string($_POST['s5']) . '", + `s6` = "' . mysql_real_escape_string($_POST['s6']) . '", + `free` = "' . mysql_real_escape_string($f) . '", + `time` = "' . time() . '" + WHERE `id` = "' . $set_x['id'] . '" LIMIT 1' + ); + $u->error = 'Профиль "' . $_POST['set_name'] . '" был успешно перезаписан!'; + } else { + mysql_query( + 'INSERT INTO `ruine_sets` ( `uid`,`name`,`free`,`s1`,`s2`,`s3`,`s4`,`s5`,`s6`,`time` ) VALUES ( - "'.$u->info['id'].'","'.mysql_real_escape_string($_POST['set_name']).'","'.mysql_real_escape_string($f).'", - "'.mysql_real_escape_string($_POST['s1']).'", - "'.mysql_real_escape_string($_POST['s2']).'", - "'.mysql_real_escape_string($_POST['s3']).'", - "'.mysql_real_escape_string($_POST['s4']).'", - "'.mysql_real_escape_string($_POST['s5']).'", - "'.mysql_real_escape_string($_POST['s6']).'", - "'.time().'" - )'); - $u->error = 'Профиль "'.$_POST['set_name'].'" был создан.'; - } - } -}elseif( isset($_GET['use']) ) { - $set_x = mysql_fetch_array(mysql_query('SELECT * FROM `ruine_sets` WHERE `uid` = "'.$u->info['id'].'" AND `id` = "'.mysql_real_escape_string($_GET['use']).'" LIMIT 1')); - if(isset($set_x['id'])) { - mysql_query('UPDATE `ruine_sets` SET `use` = 0 WHERE `uid` = "'.$u->info['id'].'"'); - mysql_query('UPDATE `ruine_sets` SET `use` = 1 WHERE `id` = "'.$set_x['id'].'" LIMIT 1'); - $u->error = 'Профиль "'.$set_x['name'].'" был установлен по умолчанию.'; - } -}elseif( isset($_GET['delete']) ) { - $set_x = mysql_fetch_array(mysql_query('SELECT * FROM `ruine_sets` WHERE `uid` = "'.$u->info['id'].'" AND `id` = "'.mysql_real_escape_string($_GET['delete']).'" LIMIT 1')); - if(isset($set_x['id'])) { - mysql_query('DELETE FROM `ruine_sets` WHERE `id` = "'.$set_x['id'].'" LIMIT 1'); - $u->error = 'Профиль "'.$set_x['name'].'" был стерт.'; - } + "' . $u->info['id'] . '","' . mysql_real_escape_string( + $_POST['set_name'] + ) . '","' . mysql_real_escape_string($f) . '", + "' . mysql_real_escape_string($_POST['s1']) . '", + "' . mysql_real_escape_string($_POST['s2']) . '", + "' . mysql_real_escape_string($_POST['s3']) . '", + "' . mysql_real_escape_string($_POST['s4']) . '", + "' . mysql_real_escape_string($_POST['s5']) . '", + "' . mysql_real_escape_string($_POST['s6']) . '", + "' . time() . '" + )' + ); + $u->error = 'Профиль "' . $_POST['set_name'] . '" был создан.'; + } + } +} elseif (isset($_GET['use'])) { + $set_x = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `ruine_sets` WHERE `uid` = "' . $u->info['id'] . '" AND `id` = "' . mysql_real_escape_string( + $_GET['use'] + ) . '" LIMIT 1' + ) + ); + if (isset($set_x['id'])) { + mysql_query('UPDATE `ruine_sets` SET `use` = 0 WHERE `uid` = "' . $u->info['id'] . '"'); + mysql_query('UPDATE `ruine_sets` SET `use` = 1 WHERE `id` = "' . $set_x['id'] . '" LIMIT 1'); + $u->error = 'Профиль "' . $set_x['name'] . '" был установлен по умолчанию.'; + } +} elseif (isset($_GET['delete'])) { + $set_x = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `ruine_sets` WHERE `uid` = "' . $u->info['id'] . '" AND `id` = "' . mysql_real_escape_string( + $_GET['delete'] + ) . '" LIMIT 1' + ) + ); + if (isset($set_x['id'])) { + mysql_query('DELETE FROM `ruine_sets` WHERE `id` = "' . $set_x['id'] . '" LIMIT 1'); + $u->error = 'Профиль "' . $set_x['name'] . '" был стерт.'; + } } ?> - -Старый Бойцовский Клуб - Профили характеристик - - - + + Старый Бойцовский Клуб - Профили характеристик + + +

    Профили характеристик


    error != '' ) { - echo '
    '.$u->error.'

    '; +if ($u->error != '') { + echo '
    ' . $u->error . '

    '; } ?> -Статы не позволяют сходить в руины? Раскиньте ваши статы так, как вы хотите, и участвуйте в турнире! Выбранный по умолчанию профиль, загрузится сам. Вы можете создавать до двадцати профилей и менять их за секунды до турнира! +Статы не позволяют сходить в руины? Раскиньте ваши статы так, как вы хотите, и участвуйте в турнире! Выбранный по +умолчанию профиль, загрузится сам. Вы можете создавать до двадцати профилей и менять их за секунды до турнира!

    - - - - - - info['id'].'" ORDER BY `time` DESC'); - while( $pl = mysql_fetch_array($sp) ) { - ?> - - - - - - + + + + + + info['id'] . '" ORDER BY `time` DESC'); + while ($pl = mysql_fetch_array($sp)) { + ?> + + + + + +
    НазваниеПо умолчаниюУдалить
    - - Установить - - По умолчанию - удалить
    НазваниеПо умолчаниюУдалить
    + + Установить + + По умолчанию + удалить
    -Нет сохраненных профилей
    '; +Нет сохраненных профилей
    '; } ?>
    - +



    -Название:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ХарактеристикаЗначение
    Сила
    Ловкость
    Интуиция
    Выносливость
    Интеллект
    Мудрость
    Свободных статов
    -
    - + Название:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ХарактеристикаЗначение
    Сила
    Ловкость
    Интуиция
    Выносливость
    Интеллект
    Мудрость
    Свободных статов
    +
    +
    diff --git a/ruins.php b/ruins.php index a5006665..f7d26d38 100644 --- a/ruins.php +++ b/ruins.php @@ -1,8 +1,7 @@ - Лог Руин Старого Замка - +
    Обновить

                          # Руинный турнир в Старом Замке

    -
    Старый Бойцовский Клуб © , «www.new-combats.com»™    


    -
    - - < - - - -
    + diff --git a/ruletka.php b/ruletka.php index f3d4bddc..b876a852 100644 --- a/ruletka.php +++ b/ruletka.php @@ -2,663 +2,627 @@ die(); -define('GAME',true); +define('GAME', true); include_once('_incl_data/__config.php'); include_once('_incl_data/class/__db_connect.php'); -include_once('_incl_data/class/__user.php'); +$u = User::start(); -if(!isset($u->bank['id'])) { - die(); +if (!isset($u->bank['id'])) { + die(); } - if($u->info['admin'] == 0) { - //die(''); - } - /*mysql_query("LOCK TABLES - `actions` WRITE, - `bank` WRITE, - - `users` WRITE, - `users_delo` WRITE, - - `chat` WRITE, - - `stats` WRITE, - - `ruletka` WRITE, - `ruletka_coin` WRITE, - - `bandit` WRITE;");*/ +/* +33|2-0-0-0-2-0, +32|4-0-0-0-4-6, +11|4-0-0-42-4-0, +21|2-0-0-0-2-0, +2-4-6-8-10-11-13-15-17-20-22-24-26-28-29-31-33-35|8-0-8-0-0-0, +7|4-0-0-0-4-0, +2|4-0-0-0-4-0, +17|4-0-0-4-4-0, +1|6-0-0-0-0-6, +18|4-0-0-0-4-0, +30|4-0-0-6-4-6, +16|4-0-0-0-4-0, +13|4-0-0-0-4-0, +25|6-0-0-0-0-6, +27|2-0-0-0-2-0, +36|2-0-0-0-2-0, +3|4-0-0-0-4-0, +20|4-0-0-0-4-0, +8|8-0-0-16-4-0, +38|2-0-0-0-2-6, +4|8-0-0-16-0-0, +34|4-0-0-0-4-0, +37|1-0-0-0-4-7, +19|2-0-0-0-2-0, +10|4-0-0-10-2-0, +31|6-0-0-6-4-0 +*/ + +if ($u->room['name'] != 'Рулетка') { + die(); +} else { + + //Раздаем выйгрыши - /* - 33|2-0-0-0-2-0, - 32|4-0-0-0-4-6, - 11|4-0-0-42-4-0, - 21|2-0-0-0-2-0, - 2-4-6-8-10-11-13-15-17-20-22-24-26-28-29-31-33-35|8-0-8-0-0-0, - 7|4-0-0-0-4-0, - 2|4-0-0-0-4-0, - 17|4-0-0-4-4-0, - 1|6-0-0-0-0-6, - 18|4-0-0-0-4-0, - 30|4-0-0-6-4-6, - 16|4-0-0-0-4-0, - 13|4-0-0-0-4-0, - 25|6-0-0-0-0-6, - 27|2-0-0-0-2-0, - 36|2-0-0-0-2-0, - 3|4-0-0-0-4-0, - 20|4-0-0-0-4-0, - 8|8-0-0-16-4-0, - 38|2-0-0-0-2-6, - 4|8-0-0-16-0-0, - 34|4-0-0-0-4-0, - 37|1-0-0-0-4-7, - 19|2-0-0-0-2-0, - 10|4-0-0-10-2-0, - 31|6-0-0-6-4-0 - */ + function get2str($key = '', $val = '') + { + $get = $_GET; + if (is_array($key)) { + if (count($key) > 0) { + foreach ($key as $k => $v) { + $get[$k] = $v; + } + } + } else { + $get[$key] = $val; + } + if (count($get) > 0) { + foreach ($get as $k => $v) { + if (empty($v)) { + unset($get[$k]); + } + } + } + if (count($get) > 0) { + foreach ($get as $k => $v) { + $get[$k] = $k . '=' . urlencode($v); + } + return '?' . implode('&', $get); + } + } -if($u->room['name']!='Рулетка') -{ - die(); -}else{ - - //Раздаем выйгрыши - - - function get2str($key='', $val='') { - $get = $_GET; - if ( is_array($key) ) { - if ( count($key)>0 ) foreach ( $key as $k=>$v ) $get[$k] = $v; - } else $get[$key] = $val; - if ( count($get)>0 ) { - foreach ( $get as $k=>$v ) if ( empty($v) ) unset($get[$k]); - } - if ( count($get)>0 ) { - foreach ( $get as $k=>$v ) $get[$k] = $k.'='.urlencode($v); - return '?'.implode('&', $get); - } - } + $r = ''; + $time = 74; //сек до новой игры + $status = 0; //статус игры, 2 - крутим колесо + $win = [ + 0 => 0, //число выйгрыша + 1 => '', //линии выйгрыша + 2 => 0, //сумма выйгрыша + 3 => 0, //ставка на эту игру текущего игрока + //ставки + 4 => '', + //игроки которые делали ставки + 5 => '', + ]; - $r = ''; - $time = 74; //сек до новой игры - $status = 0; //статус игры, 2 - крутим колесо - $win = array( - 0 => 0, //число выйгрыша - 1 => '', //линии выйгрыша - 2 => 0, //сумма выйгрыша - 3 => 0, //ставка на эту игру текущего игрока - //ставки - 4 => '', - //игроки которые делали ставки - 5 => '' - ); - - //Выделяем текущую игру, если её нет, то создаем новую - $gid = mysql_fetch_array(mysql_query('SELECT * FROM `ruletka` WHERE (`end` = 0 OR `id` = "'.((int)$_GET['id']).'") ORDER BY `id` DESC LIMIT 1')); - if($gid['time_start']+16>time() || isset($_GET['bet'])) - { - $mnr = true; - } - $gid3 = mysql_fetch_array(mysql_query('SELECT * FROM `ruletka` WHERE `end` >0 AND `id` = "'.((int)$_GET['id']).'" ORDER BY `id` DESC LIMIT 1')); - if(isset($gid3['id'])) - { - $gid = $gid3; - unset($gid3); - } - $add = false; - if(isset($gid['id'])) - { - //Игра существует, проверяем - $time = $gid['time_start']-time(); - if($time<1) - { - //крутим колесо и заканчиваем игру + выдаем выйгрыш - //mysql_query('UPDATE `ruletka` SET `end` = "'.time().'" WHERE `id` = "'.$gid['id'].'" LIMIT 1'); - //выводим предыдущий выйгрыш - $win[0] = $gid['win']; - $win[1] = $gid['win_line']; - $win[2] = 0; - $win[3] = 0; - if($gid['end']==0) - { - $add = true; - } - }else{ - //ожидаем начала игры, делаем ставки - if(isset($_GET['bet'])) - { - $bt = $_GET['bet']; - $good = 0; - $i = 0; - while($i<=38) - { - if($i==$bt) - { - $good++; - } - $i++; - } - - /* - Ставки и значения - - 1, ... ,36 - ставка на числа [x8] - - 2-4-6-8-10-11-13-15-17-20-22-24-26-28-29-31-33-35 - черное [x2] - 1-3-5-7-9-12-14-16-18-19-21-23-25-27-30-32-34-36 - красное [x2] - - 37 - два нуля [x36] - 38 - ноль [x36] - - 1-2-3-37-38 - потолок [x5] - - 1-2-3-4-5-6-7-8-9-10-11-12 - 1 сектор [x3] - 13-14-15-16-17-18-19-20-21-22-23-24 - 2 сектор [x3] - 25-26-27-28-29-30-31-32-33-34-35-36 - 3 сектор [x3] - - */ - - if($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '35-36' && $good == 0 ) { - $good++; - }elseif($bt == '34-35' && $good == 0 ) { - $good++; - }elseif($bt == '32-33' && $good == 0 ) { - $good++; - }elseif($bt == '31-32' && $good == 0 ) { - $good++; - }elseif($bt == '29-30' && $good == 0 ) { - $good++; - }elseif($bt == '28-29' && $good == 0 ) { - $good++; - }elseif($bt == '26-27' && $good == 0 ) { - $good++; - }elseif($bt == '25-26' && $good == 0 ) { - $good++; - }elseif($bt == '23-24' && $good == 0 ) { - $good++; - }elseif($bt == '22-23' && $good == 0 ) { - $good++; - }elseif($bt == '20-21' && $good == 0 ) { - $good++; - }elseif($bt == '19-20' && $good == 0 ) { - $good++; - }elseif($bt == '17-18' && $good == 0 ) { - $good++; - }elseif($bt == '16-17' && $good == 0 ) { - $good++; - }elseif($bt == '14-15' && $good == 0 ) { - $good++; - }elseif($bt == '13-14' && $good == 0 ) { - $good++; - }elseif($bt == '11-12' && $good == 0 ) { - $good++; - }elseif($bt == '10-11' && $good == 0 ) { - $good++; - }elseif($bt == '8-9' && $good == 0 ) { - $good++; - }elseif($bt == '7-8' && $good == 0 ) { - $good++; - }elseif($bt == '5-6' && $good == 0 ) { - $good++; - }elseif($bt == '4-5' && $good == 0 ) { - $good++; - }elseif($bt == '2-3' && $good == 0 ) { - $good++; - }elseif($bt == '1-2' && $good == 0 ) { - $good++; - }elseif($bt == '32-33-35-36' && $good == 0 ) { - $good++; - }elseif($bt == '31-32-34-35' && $good == 0 ) { - $good++; - }elseif($bt == '29-30-32-33' && $good == 0 ) { - $good++; - }elseif($bt == '28-29-31-32' && $good == 0 ) { - $good++; - }elseif($bt == '26-27-29-30' && $good == 0 ) { - $good++; - }elseif($bt == '25-26-28-29' && $good == 0 ) { - $good++; - }elseif($bt == '23-24-26-27' && $good == 0 ) { - $good++; - }elseif($bt == '22-23-25-26' && $good == 0 ) { - $good++; - }elseif($bt == '20-21-23-24' && $good == 0 ) { - $good++; - }elseif($bt == '19-20-22-23' && $good == 0 ) { - $good++; - }elseif($bt == '17-18-20-21' && $good == 0 ) { - $good++; - }elseif($bt == '16-17-19-20' && $good == 0 ) { - $good++; - }elseif($bt == '14-15-17-18' && $good == 0 ) { - $good++; - }elseif($bt == '13-14-16-17' && $good == 0 ) { - $good++; - }elseif($bt == '11-12-14-15' && $good == 0 ) { - $good++; - }elseif($bt == '10-11-13-14' && $good == 0 ) { - $good++; - }elseif($bt == '8-9-11-12' && $good == 0 ) { - $good++; - }elseif($bt == '7-8-10-11' && $good == 0 ) { - $good++; - }elseif($bt == '5-6-8-9' && $good == 0 ) { - $good++; - }elseif($bt == '4-5-7-8' && $good == 0 ) { - $good++; - }elseif($bt == '2-3-5-6' && $good == 0 ) { - $good++; - }elseif($bt == '1-2-4-5' && $good == 0 ) { - $good++; - }elseif($bt == '2-3-37' && $good == 0 ) { - $good++; - }elseif($bt == '1-2-38' && $good == 0 ) { - $good++; - }elseif($bt == '38-1' && $good == 0 ) { - $good++; - }elseif($bt == '2-4-6-8-10-12-14-16-18-20-22-24-26-28-30-32-34-36' && $good == 0 ) { - $good++; - }elseif($bt == '1-3-5-7-9-11-13-15-17-19-21-23-25-27-29-31-33-35' && $good == 0 ) { - $good++; - }elseif($bt == '19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36' && $good == 0 ) { - $good++; - }elseif($bt == '1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18' && $good == 0 ) { - $good++; - }elseif($bt == '28-29-30-31-32-33' && $good == 0 ) { - $good++; - }elseif($bt == '22-23-24-25-26-27' && $good == 0 ) { - $good++; - }elseif($bt == '16-17-18-19-20-21' && $good == 0 ) { - $good++; - }elseif($bt == '10-11-12-13-14-15' && $good == 0 ) { - $good++; - }elseif($bt == '4-5-6-7-8-9' && $good == 0 ) { - $good++; - }elseif($bt == '31-32-33-34-35-36' && $good == 0 ) { - $good++; - }elseif($bt == '25-26-27-28-29-30' && $good == 0 ) { - $good++; - }elseif($bt == '19-20-21-22-23-24' && $good == 0 ) { - $good++; - }elseif($bt == '13-14-15-16-17-18' && $good == 0 ) { - $good++; - }elseif($bt == '7-8-9-10-11-12' && $good == 0 ) { - $good++; - }elseif($bt == '1-2-3-4-5-6' && $good == 0 ) { - $good++; - }elseif($bt == '34-35-36' && $good == 0 ) { - $good++; - }elseif($bt == '31-32-33' && $good == 0 ) { - $good++; - }elseif($bt == '28-29-30' && $good == 0 ) { - $good++; - }elseif($bt == '25-26-27' && $good == 0 ) { - $good++; - }elseif($bt == '22-23-24' && $good == 0 ) { - $good++; - }elseif($bt == '19-20-21' && $good == 0 ) { - $good++; - }elseif($bt == '16-17-18' && $good == 0 ) { - $good++; - }elseif($bt == '13-14-15' && $good == 0 ) { - $good++; - }elseif($bt == '10-11-12' && $good == 0 ) { - $good++; - }elseif($bt == '7-8-9' && $good == 0 ) { - $good++; - }elseif($bt == '6-5-4' && $good == 0 ) { - $good++; - }elseif($bt == '1-2-3' && $good == 0 ) { - $good++; - }elseif($bt == '3-6-9-12-15-18-21-24-27-30-33-36' && $good == 0 ) { - $good++; - }elseif($bt == '2-5-8-11-14-17-20-23-26-29-32-35' && $good == 0 ) { - $good++; - }elseif($bt == '1-4-7-10-13-16-19-22-25-28-31-34' && $good == 0 ) { - $good++; - }elseif($bt == '2-4-6-8-10-11-13-15-17-20-22-24-26-28-29-31-33-35' && $good==0) - { - $good++; - }elseif($bt == '1-3-5-7-9-12-14-16-18-19-21-23-25-27-30-32-34-36' && $good==0) - { - $good++; - }elseif($bt == '1-2-3-37-38' && $good==0) - { - $good++; - }elseif($bt == '1-2-3-4-5-6-7-8-9-10-11-12' && $good==0) - { - $good++; - }elseif($bt == '13-14-15-16-17-18-19-20-21-22-23-24' && $good==0) - { - $good++; - }elseif($bt == '25-26-27-28-29-30-31-32-33-34-35-36' && $good==0) - { - $good++; - }elseif($bt == '1-2-4-5' && $good==0) - { - $good++; - } - $_GET['coin'] = (int)$_GET['coin']; - if($_GET['coin']<1) - { - $good = 0; - } - if($_GET['coin']>$u->bank['money2']) - { - $good = 0; - } - if($good==1) - { - $u->bank['money2'] -= ((int)$_GET['coin']); - - $stvka = ''; - - if($stvka == '') { - $stvka = 'неизвестная зона ставки'; - } - - - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$u->info['city']."','".$u->info['room']."','','','[Крупье] Игрок ".mysql_real_escape_string($u->info['login'])." сделал ставку: ".(0+((int)$_GET['coin'])).".00 екр. на ".$stvka.", игра №".$gid['id']."','".time()."','6','0')"); - - - mysql_query('UPDATE `bank` SET `money2` = '.$u->bank['money2'].' WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `ruletka_coin` (`uid`,`login`,`money`,`time`,`game_id`,`win2`) VALUES ("'.$u->info['id'].'","'.$u->info['login'].'","'.$_GET['coin'].'","'.time().'","'.$gid['id'].'","'.$bt.'")'); - } - } - } - }else{ - $add = true; - } - - //обновляем ставки - $pos = array( - 0 => '2-4-6-8-10-11-13-15-17-20-22-24-26-28-29-31-33-35', - 1 => '1-3-5-7-9-12-14-16-18-19-21-23-25-27-30-32-34-36', - 2 => '1-2-3-37-38', - 3 => '1-2-3-4-5-6-7-8-9-10-11-12', - 4 => '13-14-15-16-17-18-19-20-21-22-23-24', - 5 => '25-26-27-28-29-30-31-32-33-34-35-36', - 6 => '1-4-7-10-13-16-19-22-25-28-31-34', - 7 => '2-5-8-11-14-17-20-23-26-29-32-35', - 8 => '3-6-9-12-15-18-21-24-27-30-33-36', - 9 => '1-2-3', - 10 => '6-5-4', - 11 => '7-8-9', - 12 => '10-11-12', - 13 => '13-14-15', - 14 => '16-17-18', - 15 => '19-20-21', - 16 => '22-23-24', - 17 => '25-26-27', - 18 => '28-29-30', - 19 => '31-32-33', - 20 => '34-35-36', - 21 => '1-2-3-4-5-6', - 22 => '7-8-9-10-11-12', - 23 => '13-14-15-16-17-18', - 24 => '19-20-21-22-23-24', - 25 => '25-26-27-28-29-30', - 26 => '31-32-33-34-35-36', - 27 => '4-5-6-7-8-9', - 28 => '10-11-12-13-14-15', - 29 => '16-17-18-19-20-21', - 30 => '22-23-24-25-26-27', - 31 => '28-29-30-31-32-33', - 32 => '1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18', - 33 => '19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36', - 34 => '1-3-5-7-9-11-13-15-17-19-21-23-25-27-29-31-33-35', - 35 => '2-4-6-8-10-12-14-16-18-20-22-24-26-28-30-32-34-36', - 36 => '38-1', - 37 => '1-2-38', - 38 => '2-3-37', - 39 => '32-33-35-36', - 40 => '31-32-34-35', - 41 => '29-30-32-33', - 42 => '28-29-31-32', - 43 => '26-27-29-30', - 44 => '25-26-28-29', - 45 => '23-24-26-27', - 46 => '22-23-25-26', - 47 => '20-21-23-24', - 48 => '19-20-22-23', - 49 => '17-18-20-21', - 50 => '16-17-19-20', - 51 => '14-15-17-18', - 52 => '13-14-16-17', - 53 => '11-12-14-15', - 54 => '10-11-13-14', - 55 => '8-9-11-12', - 56 => '7-8-10-11', - 57 => '5-6-8-9', - 58 => '4-5-7-8', - 59 => '2-3-5-6', - 60 => '1-2-4-5', - 61 => '1-2', - 62 => '2-3', - 63 => '4-5', - 64 => '5-6', - 65 => '7-8', - 66 => '8-9', - 67 => '10-11', - 68 => '11-12', - 69 => '13-14', - 70 => '14-15', - 71 => '16-17', - 72 => '17-18', - 73 => '19-20', - 74 => '20-21', - 75 => '22-23', - 76 => '23-24', - 77 => '25-26', - 78 => '26-27', - 79 => '28-29', - 80 => '29-30', - 81 => '31-32', - 82 => '32-33', - 83 => '34-35', - 84 => '35-36' - ); - - function testCoin($s,$stt) - { - global $u,$win; - $sp = mysql_query('SELECT * FROM `ruletka_coin` WHERE `game_id` = "'.$s.'" AND `money` > 0 AND `win2` = "'.$stt.'" AND `uid` != "'.$u->info['id'].'"'); - $cr = 0; $am = 0; - $usr = ''; $lu = array(); - while($pl = mysql_fetch_array($sp)) - { - $cr = $pl['money']; - if(!isset($lu[$pl['uid']]) && count($lu)<4) - { - $usr .= '-'.$pl['money']; - $lu[$pl['uid']] = true; - } - $am++; - } - $us = 0; //Ставка игрока - $sp = mysql_query('SELECT * FROM `ruletka_coin` WHERE `game_id` = "'.$s.'" AND `money` > 0 AND `win2` = "'.$stt.'" AND `uid` = "'.$u->info['id'].'" LIMIT 100'); - while($pl = mysql_fetch_array($sp)) - { - $cr = $pl['money']; - $us += $pl['money']; - $am++; - } - $i = 0; - while($i<4) - { - if($i > count($lu)) - { - $usr .= '-0'; - } - $i++; - } - if($am>0) - { - $win[4] .= $stt.'|'.$cr.'-'.$us.''.$usr.','; - } - } - - //ставки на числа - $i = 1; - while($i<=38) - { - testCoin($gid['id'],$i); - $i++; - } - //комбинированные ставки - $i = 0; - while($i0,'room'=>$u->info['room'],'time'=>time(),'time_start'=>time()+74,'win'=>floor(rand(100,3800)/100),'win_line'=>'','end'=>0); - $s37 = mysql_fetch_array(mysql_query('SELECT `id` FROM `ruletka` WHERE `win` = "37" OR `win` = "38" AND `time` > "'.(time()-round(3600/10000*rand(5000,10000))).'" LIMIT 1')); - if(isset($s37['id'])) { - $gid2['win'] = floor(rand(100,3600)/100); - } - $ins = mysql_query('INSERT INTO `ruletka` (`room`,`time`,`time_start`,`win`,`win_line`) VALUES ("'.$gid2['room'].'","'.$gid2['time'].'","'.$gid2['time_start'].'","'.$gid2['win'].'","'.$gid2['win_line'].'")'); - $gid2['id'] = mysql_insert_id(); - if($ins) - { - $gid = $gid2; - } - unset($gid2); - } - - $u_w = array(0=>array(),1=>array(),2=>array(),3=>array()); - - $sm = $u->testAction('`city` = "'.$u->info['city'].'" AND `vars` = "casino_balance" LIMIT 1',1); - if(!isset($sm['id'])) { - $u->addAction(time(),'casino_balance',0); - } - - //обновляем выйгрыши - $sp = mysql_query('SELECT * FROM `ruletka` WHERE `end` = "0" AND `time_start` <= '.time().''); - while($pl = mysql_fetch_array($sp)) - { - /*$pl['win'] = floor(rand(10000000,360000000)/10000000); - if( rand(0,1) == 1 ) { - $pl['win'] = floor(rand(10000000,360000000)/10000000); - } - if( rand(0,1) == 1 ) { - $pl['win'] = floor(rand(10000000,360000000)/10000000); - }*/ - $end = mysql_query('UPDATE `ruletka` SET `end` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - if($end) - { - //выдаем выйгрышь - $sp2 = mysql_query('SELECT * FROM `ruletka_coin` WHERE `end` = "0" AND `game_id` = "'.$pl['id'].'"'); - while($pl2 = mysql_fetch_array($sp2)) - { - $upd = mysql_query('UPDATE `ruletka_coin` SET `end` = "'.time().'" WHERE `id` = "'.$pl2['id'].'" LIMIT 1'); - if($upd) - { - $wn = 0; $wn2 = 0; - $xv = 2; - if($pl2['win2']==$pl['win']) - { - $wn++; - }else{ - $i = 0; $j = explode('-',$pl2['win2']); - $xv = floor(1+34/count($j)); - while($i0) - { - //перечисляем деньги [x8], если зеро то [x36] - if($pl['win']>36) - { - $nmn = ((int)$pl2['money']*35); - }else{ - $nmn = ((int)$pl2['money']*35); - } - mysql_query('UPDATE `bank` SET `money2` = `money2` + "'.$nmn.'" WHERE `uid` = "'.$pl2['uid'].'" ORDER BY `useNow` DESC LIMIT 1'); - }elseif($wn2>0) - { - //перечисляем деньги по определенной формуле - $nmn = ((int)$pl2['money']*$xv); - mysql_query('UPDATE `bank` SET `money2` = `money2` + "'.$nmn.'" WHERE `uid` = "'.$pl2['uid'].'" ORDER BY `useNow` DESC LIMIT 1'); - }else{ - //проиграли - mysql_query('UPDATE `ruletka_coin` SET `end` = "1" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - mysql_query('UPDATE `actions` SET `vals` = `vals` + "'.mysql_real_escape_string(0+$pl2['money']).'" WHERE `id` = "'.$sm['id'].'" LIMIT 1'); - } - - if($wn > 0 || $wn2 > 0) { - $u->addDelo(1,$pl2['uid'],'"Casino.'.$u->info['city'].'": Выиграл '.$nmn.' еекр.',time(),$u->info['city'],'Casino.'.$u->info['city'].'',0,0); - if(!isset($u_w[1][$pl2['uid']])) { - $u_w[0][count($u_w[0])] = $pl2['uid']; - $u_w[2][count($u_w[0])-1] = $pl2['game_id']; - } - $u_w[1][$pl2['uid']] += (int)$nmn; - } - $u_w[3][$pl2['uid']] += (int)$pl2['money']; - - } - } - } - } - - if(count($u_w[0]) > 0) { - //mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$pl['city']."','225','Крупье','','Игрок ".$pl['login']." выиграл ".$nmn.".00 екр.','".time()."','6','0')"); - $i = 0; - while($i < count($u_w[0])) { - if($u_w[1][$u_w[0][$i]] > 0) { - $infu = mysql_fetch_array(mysql_query('SELECT + //Выделяем текущую игру, если её нет, то создаем новую + $gid = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `ruletka` WHERE (`end` = 0 OR `id` = "' . ((int)$_GET['id']) . '") ORDER BY `id` DESC LIMIT 1' + ) + ); + if ($gid['time_start'] + 16 > time() || isset($_GET['bet'])) { + $mnr = true; + } + $gid3 = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `ruletka` WHERE `end` >0 AND `id` = "' . ((int)$_GET['id']) . '" ORDER BY `id` DESC LIMIT 1' + ) + ); + if (isset($gid3['id'])) { + $gid = $gid3; + unset($gid3); + } + $add = false; + if (isset($gid['id'])) { + //Игра существует, проверяем + $time = $gid['time_start'] - time(); + if ($time < 1) { + //крутим колесо и заканчиваем игру + выдаем выйгрыш + //mysql_query('UPDATE `ruletka` SET `end` = "'.time().'" WHERE `id` = "'.$gid['id'].'" LIMIT 1'); + //выводим предыдущий выйгрыш + $win[0] = $gid['win']; + $win[1] = $gid['win_line']; + $win[2] = 0; + $win[3] = 0; + if ($gid['end'] == 0) { + $add = true; + } + } else { + //ожидаем начала игры, делаем ставки + if (isset($_GET['bet'])) { + $bt = $_GET['bet']; + $good = 0; + $i = 0; + while ($i <= 38) { + if ($i == $bt) { + $good++; + } + $i++; + } + + /* + Ставки и значения + + 1, ... ,36 - ставка на числа [x8] + + 2-4-6-8-10-11-13-15-17-20-22-24-26-28-29-31-33-35 - черное [x2] + 1-3-5-7-9-12-14-16-18-19-21-23-25-27-30-32-34-36 - красное [x2] + + 37 - два нуля [x36] + 38 - ноль [x36] + + 1-2-3-37-38 - потолок [x5] + + 1-2-3-4-5-6-7-8-9-10-11-12 - 1 сектор [x3] + 13-14-15-16-17-18-19-20-21-22-23-24 - 2 сектор [x3] + 25-26-27-28-29-30-31-32-33-34-35-36 - 3 сектор [x3] + + */ + + if ($bt == '' && $good == 0) { + $good++; + } elseif ($bt == '35-36' && $good == 0) { + $good++; + } elseif ($bt == '34-35' && $good == 0) { + $good++; + } elseif ($bt == '32-33' && $good == 0) { + $good++; + } elseif ($bt == '31-32' && $good == 0) { + $good++; + } elseif ($bt == '29-30' && $good == 0) { + $good++; + } elseif ($bt == '28-29' && $good == 0) { + $good++; + } elseif ($bt == '26-27' && $good == 0) { + $good++; + } elseif ($bt == '25-26' && $good == 0) { + $good++; + } elseif ($bt == '23-24' && $good == 0) { + $good++; + } elseif ($bt == '22-23' && $good == 0) { + $good++; + } elseif ($bt == '20-21' && $good == 0) { + $good++; + } elseif ($bt == '19-20' && $good == 0) { + $good++; + } elseif ($bt == '17-18' && $good == 0) { + $good++; + } elseif ($bt == '16-17' && $good == 0) { + $good++; + } elseif ($bt == '14-15' && $good == 0) { + $good++; + } elseif ($bt == '13-14' && $good == 0) { + $good++; + } elseif ($bt == '11-12' && $good == 0) { + $good++; + } elseif ($bt == '10-11' && $good == 0) { + $good++; + } elseif ($bt == '8-9' && $good == 0) { + $good++; + } elseif ($bt == '7-8' && $good == 0) { + $good++; + } elseif ($bt == '5-6' && $good == 0) { + $good++; + } elseif ($bt == '4-5' && $good == 0) { + $good++; + } elseif ($bt == '2-3' && $good == 0) { + $good++; + } elseif ($bt == '1-2' && $good == 0) { + $good++; + } elseif ($bt == '32-33-35-36' && $good == 0) { + $good++; + } elseif ($bt == '31-32-34-35' && $good == 0) { + $good++; + } elseif ($bt == '29-30-32-33' && $good == 0) { + $good++; + } elseif ($bt == '28-29-31-32' && $good == 0) { + $good++; + } elseif ($bt == '26-27-29-30' && $good == 0) { + $good++; + } elseif ($bt == '25-26-28-29' && $good == 0) { + $good++; + } elseif ($bt == '23-24-26-27' && $good == 0) { + $good++; + } elseif ($bt == '22-23-25-26' && $good == 0) { + $good++; + } elseif ($bt == '20-21-23-24' && $good == 0) { + $good++; + } elseif ($bt == '19-20-22-23' && $good == 0) { + $good++; + } elseif ($bt == '17-18-20-21' && $good == 0) { + $good++; + } elseif ($bt == '16-17-19-20' && $good == 0) { + $good++; + } elseif ($bt == '14-15-17-18' && $good == 0) { + $good++; + } elseif ($bt == '13-14-16-17' && $good == 0) { + $good++; + } elseif ($bt == '11-12-14-15' && $good == 0) { + $good++; + } elseif ($bt == '10-11-13-14' && $good == 0) { + $good++; + } elseif ($bt == '8-9-11-12' && $good == 0) { + $good++; + } elseif ($bt == '7-8-10-11' && $good == 0) { + $good++; + } elseif ($bt == '5-6-8-9' && $good == 0) { + $good++; + } elseif ($bt == '4-5-7-8' && $good == 0) { + $good++; + } elseif ($bt == '2-3-5-6' && $good == 0) { + $good++; + } elseif ($bt == '1-2-4-5' && $good == 0) { + $good++; + } elseif ($bt == '2-3-37' && $good == 0) { + $good++; + } elseif ($bt == '1-2-38' && $good == 0) { + $good++; + } elseif ($bt == '38-1' && $good == 0) { + $good++; + } elseif ($bt == '2-4-6-8-10-12-14-16-18-20-22-24-26-28-30-32-34-36' && $good == 0) { + $good++; + } elseif ($bt == '1-3-5-7-9-11-13-15-17-19-21-23-25-27-29-31-33-35' && $good == 0) { + $good++; + } elseif ($bt == '19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36' && $good == 0) { + $good++; + } elseif ($bt == '1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18' && $good == 0) { + $good++; + } elseif ($bt == '28-29-30-31-32-33' && $good == 0) { + $good++; + } elseif ($bt == '22-23-24-25-26-27' && $good == 0) { + $good++; + } elseif ($bt == '16-17-18-19-20-21' && $good == 0) { + $good++; + } elseif ($bt == '10-11-12-13-14-15' && $good == 0) { + $good++; + } elseif ($bt == '4-5-6-7-8-9' && $good == 0) { + $good++; + } elseif ($bt == '31-32-33-34-35-36' && $good == 0) { + $good++; + } elseif ($bt == '25-26-27-28-29-30' && $good == 0) { + $good++; + } elseif ($bt == '19-20-21-22-23-24' && $good == 0) { + $good++; + } elseif ($bt == '13-14-15-16-17-18' && $good == 0) { + $good++; + } elseif ($bt == '7-8-9-10-11-12' && $good == 0) { + $good++; + } elseif ($bt == '1-2-3-4-5-6' && $good == 0) { + $good++; + } elseif ($bt == '34-35-36' && $good == 0) { + $good++; + } elseif ($bt == '31-32-33' && $good == 0) { + $good++; + } elseif ($bt == '28-29-30' && $good == 0) { + $good++; + } elseif ($bt == '25-26-27' && $good == 0) { + $good++; + } elseif ($bt == '22-23-24' && $good == 0) { + $good++; + } elseif ($bt == '19-20-21' && $good == 0) { + $good++; + } elseif ($bt == '16-17-18' && $good == 0) { + $good++; + } elseif ($bt == '13-14-15' && $good == 0) { + $good++; + } elseif ($bt == '10-11-12' && $good == 0) { + $good++; + } elseif ($bt == '7-8-9' && $good == 0) { + $good++; + } elseif ($bt == '6-5-4' && $good == 0) { + $good++; + } elseif ($bt == '1-2-3' && $good == 0) { + $good++; + } elseif ($bt == '3-6-9-12-15-18-21-24-27-30-33-36' && $good == 0) { + $good++; + } elseif ($bt == '2-5-8-11-14-17-20-23-26-29-32-35' && $good == 0) { + $good++; + } elseif ($bt == '1-4-7-10-13-16-19-22-25-28-31-34' && $good == 0) { + $good++; + } elseif ($bt == '2-4-6-8-10-11-13-15-17-20-22-24-26-28-29-31-33-35' && $good == 0) { + $good++; + } elseif ($bt == '1-3-5-7-9-12-14-16-18-19-21-23-25-27-30-32-34-36' && $good == 0) { + $good++; + } elseif ($bt == '1-2-3-37-38' && $good == 0) { + $good++; + } elseif ($bt == '1-2-3-4-5-6-7-8-9-10-11-12' && $good == 0) { + $good++; + } elseif ($bt == '13-14-15-16-17-18-19-20-21-22-23-24' && $good == 0) { + $good++; + } elseif ($bt == '25-26-27-28-29-30-31-32-33-34-35-36' && $good == 0) { + $good++; + } elseif ($bt == '1-2-4-5' && $good == 0) { + $good++; + } + $_GET['coin'] = (int)$_GET['coin']; + if ($_GET['coin'] < 1) { + $good = 0; + } + if ($_GET['coin'] > $u->bank['money2']) { + $good = 0; + } + if ($good == 1) { + $u->bank['money2'] -= ((int)$_GET['coin']); + + $stvka = ''; + + if ($stvka == '') { + $stvka = 'неизвестная зона ставки'; + } + + + mysql_query( + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','" . $u->info['room'] . "','','','[Крупье] Игрок " . mysql_real_escape_string( + $u->info['login'] + ) . " сделал ставку: " . (0 + ((int)$_GET['coin'])) . ".00 екр. на " . $stvka . ", игра №" . $gid['id'] . "','" . time( + ) . "','6','0')" + ); + + + mysql_query( + 'UPDATE `bank` SET `money2` = ' . $u->bank['money2'] . ' WHERE `id` = "' . $u->bank['id'] . '" LIMIT 1' + ); + mysql_query( + 'INSERT INTO `ruletka_coin` (`uid`,`login`,`money`,`time`,`game_id`,`win2`) VALUES ("' . $u->info['id'] . '","' . $u->info['login'] . '","' . $_GET['coin'] . '","' . time( + ) . '","' . $gid['id'] . '","' . $bt . '")' + ); + } + } + } + } else { + $add = true; + } + + //обновляем ставки + $pos = [ + 0 => '2-4-6-8-10-11-13-15-17-20-22-24-26-28-29-31-33-35', + 1 => '1-3-5-7-9-12-14-16-18-19-21-23-25-27-30-32-34-36', + 2 => '1-2-3-37-38', + 3 => '1-2-3-4-5-6-7-8-9-10-11-12', + 4 => '13-14-15-16-17-18-19-20-21-22-23-24', + 5 => '25-26-27-28-29-30-31-32-33-34-35-36', + 6 => '1-4-7-10-13-16-19-22-25-28-31-34', + 7 => '2-5-8-11-14-17-20-23-26-29-32-35', + 8 => '3-6-9-12-15-18-21-24-27-30-33-36', + 9 => '1-2-3', + 10 => '6-5-4', + 11 => '7-8-9', + 12 => '10-11-12', + 13 => '13-14-15', + 14 => '16-17-18', + 15 => '19-20-21', + 16 => '22-23-24', + 17 => '25-26-27', + 18 => '28-29-30', + 19 => '31-32-33', + 20 => '34-35-36', + 21 => '1-2-3-4-5-6', + 22 => '7-8-9-10-11-12', + 23 => '13-14-15-16-17-18', + 24 => '19-20-21-22-23-24', + 25 => '25-26-27-28-29-30', + 26 => '31-32-33-34-35-36', + 27 => '4-5-6-7-8-9', + 28 => '10-11-12-13-14-15', + 29 => '16-17-18-19-20-21', + 30 => '22-23-24-25-26-27', + 31 => '28-29-30-31-32-33', + 32 => '1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18', + 33 => '19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36', + 34 => '1-3-5-7-9-11-13-15-17-19-21-23-25-27-29-31-33-35', + 35 => '2-4-6-8-10-12-14-16-18-20-22-24-26-28-30-32-34-36', + 36 => '38-1', + 37 => '1-2-38', + 38 => '2-3-37', + 39 => '32-33-35-36', + 40 => '31-32-34-35', + 41 => '29-30-32-33', + 42 => '28-29-31-32', + 43 => '26-27-29-30', + 44 => '25-26-28-29', + 45 => '23-24-26-27', + 46 => '22-23-25-26', + 47 => '20-21-23-24', + 48 => '19-20-22-23', + 49 => '17-18-20-21', + 50 => '16-17-19-20', + 51 => '14-15-17-18', + 52 => '13-14-16-17', + 53 => '11-12-14-15', + 54 => '10-11-13-14', + 55 => '8-9-11-12', + 56 => '7-8-10-11', + 57 => '5-6-8-9', + 58 => '4-5-7-8', + 59 => '2-3-5-6', + 60 => '1-2-4-5', + 61 => '1-2', + 62 => '2-3', + 63 => '4-5', + 64 => '5-6', + 65 => '7-8', + 66 => '8-9', + 67 => '10-11', + 68 => '11-12', + 69 => '13-14', + 70 => '14-15', + 71 => '16-17', + 72 => '17-18', + 73 => '19-20', + 74 => '20-21', + 75 => '22-23', + 76 => '23-24', + 77 => '25-26', + 78 => '26-27', + 79 => '28-29', + 80 => '29-30', + 81 => '31-32', + 82 => '32-33', + 83 => '34-35', + 84 => '35-36', + ]; + + function testCoin($s, $stt) + { + global $u, $win; + $sp = mysql_query( + 'SELECT * FROM `ruletka_coin` WHERE `game_id` = "' . $s . '" AND `money` > 0 AND `win2` = "' . $stt . '" AND `uid` != "' . $u->info['id'] . '"' + ); + $cr = 0; + $am = 0; + $usr = ''; + $lu = []; + while ($pl = mysql_fetch_array($sp)) { + $cr = $pl['money']; + if (!isset($lu[$pl['uid']]) && count($lu) < 4) { + $usr .= '-' . $pl['money']; + $lu[$pl['uid']] = true; + } + $am++; + } + $us = 0; //Ставка игрока + $sp = mysql_query( + 'SELECT * FROM `ruletka_coin` WHERE `game_id` = "' . $s . '" AND `money` > 0 AND `win2` = "' . $stt . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 100' + ); + while ($pl = mysql_fetch_array($sp)) { + $cr = $pl['money']; + $us += $pl['money']; + $am++; + } + $i = 0; + while ($i < 4) { + if ($i > count($lu)) { + $usr .= '-0'; + } + $i++; + } + if ($am > 0) { + $win[4] .= $stt . '|' . $cr . '-' . $us . '' . $usr . ','; + } + } + + //ставки на числа + $i = 1; + while ($i <= 38) { + testCoin($gid['id'], $i); + $i++; + } + //комбинированные ставки + $i = 0; + while ($i < count($pos)) { + testCoin($gid['id'], $pos[$i]); + $i++; + } + + if ($add) { + //создаем новую игру + $gid2 = ['id' => 0, 'room' => $u->info['room'], 'time' => time(), 'time_start' => time() + 74, 'win' => floor( + rand(100, 3800) / 100 + ), 'win_line' => '', 'end' => 0]; + $s37 = mysql_fetch_array( + mysql_query( + 'SELECT `id` FROM `ruletka` WHERE `win` = "37" OR `win` = "38" AND `time` > "' . (time() - round( + 3600 / 10000 * rand(5000, 10000) + )) . '" LIMIT 1' + ) + ); + if (isset($s37['id'])) { + $gid2['win'] = floor(rand(100, 3600) / 100); + } + $ins = mysql_query( + 'INSERT INTO `ruletka` (`room`,`time`,`time_start`,`win`,`win_line`) VALUES ("' . $gid2['room'] . '","' . $gid2['time'] . '","' . $gid2['time_start'] . '","' . $gid2['win'] . '","' . $gid2['win_line'] . '")' + ); + $gid2['id'] = mysql_insert_id(); + if ($ins) { + $gid = $gid2; + } + unset($gid2); + } + + $u_w = [0 => [], 1 => [], 2 => [], 3 => []]; + + $sm = $u->testAction('`city` = "' . $u->info['city'] . '" AND `vars` = "casino_balance" LIMIT 1', 1); + if (!isset($sm['id'])) { + $u->addAction(time(), 'casino_balance', 0); + } + + //обновляем выйгрыши + $sp = mysql_query('SELECT * FROM `ruletka` WHERE `end` = "0" AND `time_start` <= ' . time() . ''); + while ($pl = mysql_fetch_array($sp)) { + $end = mysql_query('UPDATE `ruletka` SET `end` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + if ($end) { + //выдаем выйгрышь + $sp2 = mysql_query('SELECT * FROM `ruletka_coin` WHERE `end` = "0" AND `game_id` = "' . $pl['id'] . '"'); + while ($pl2 = mysql_fetch_array($sp2)) { + $upd = mysql_query( + 'UPDATE `ruletka_coin` SET `end` = "' . time() . '" WHERE `id` = "' . $pl2['id'] . '" LIMIT 1' + ); + if ($upd) { + $wn = 0; + $wn2 = 0; + $xv = 2; + if ($pl2['win2'] == $pl['win']) { + $wn++; + } else { + $i = 0; + $j = explode('-', $pl2['win2']); + $xv = floor(1 + 34 / count($j)); + while ($i < count($j)) { + if ($j[$i] == $pl['win']) { + $wn2++; + } + $i++; + } + } + + if ($wn > 0) { + //перечисляем деньги [x8], если зеро то [x36] + if ($pl['win'] > 36) { + $nmn = ((int)$pl2['money'] * 35); + } else { + $nmn = ((int)$pl2['money'] * 35); + } + mysql_query( + 'UPDATE `bank` SET `money2` = `money2` + "' . $nmn . '" WHERE `uid` = "' . $pl2['uid'] . '" ORDER BY `useNow` DESC LIMIT 1' + ); + } elseif ($wn2 > 0) { + //перечисляем деньги по определенной формуле + $nmn = ((int)$pl2['money'] * $xv); + mysql_query( + 'UPDATE `bank` SET `money2` = `money2` + "' . $nmn . '" WHERE `uid` = "' . $pl2['uid'] . '" ORDER BY `useNow` DESC LIMIT 1' + ); + } else { + //проиграли + mysql_query('UPDATE `ruletka_coin` SET `end` = "1" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `actions` SET `vals` = `vals` + "' . mysql_real_escape_string( + 0 + $pl2['money'] + ) . '" WHERE `id` = "' . $sm['id'] . '" LIMIT 1' + ); + } + + if ($wn > 0 || $wn2 > 0) { + $u->addDelo( + 1, $pl2['uid'], + '"Casino.' . $u->info['city'] . '": Выиграл ' . $nmn . ' еекр.', + time(), $u->info['city'], 'Casino.' . $u->info['city'] . '', 0, 0 + ); + if (!isset($u_w[1][$pl2['uid']])) { + $u_w[0][count($u_w[0])] = $pl2['uid']; + $u_w[2][count($u_w[0]) - 1] = $pl2['game_id']; + } + $u_w[1][$pl2['uid']] += (int)$nmn; + } + $u_w[3][$pl2['uid']] += (int)$pl2['money']; + + } + } + } + } + + if (count($u_w[0]) > 0) { + $i = 0; + while ($i < count($u_w[0])) { + if ($u_w[1][$u_w[0][$i]] > 0) { + $infu = mysql_fetch_array( + mysql_query( + 'SELECT `u`.`id`, `u`.`align`, `u`.`login`, @@ -668,56 +632,63 @@ if($u->room['name']!=' `u`.`online`, `u`.`sex`, `u`.`cityreg` - FROM `users` AS `u` WHERE `u`.`id`="'.mysql_real_escape_string($u_w[0][$i]).'" LIMIT 1')); - - mysql_query('UPDATE `actions` SET `vals` = `vals` + "'.mysql_real_escape_string((0+$u_w[3][$u_w[0][$i]])-$u_w[1][$u_w[0][$i]]).'" WHERE `id` = "'.$sm['id'].'" LIMIT 1'); - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$u->info['city']."','389','','','[Крупье] Игрок ".mysql_real_escape_string($infu['login'])." выиграл ".$u_w[1][$u_w[0][$i]].".00 еекр., ставка: ".(0+$u_w[3][$u_w[0][$i]]).".00 еекр., игра №".$u_w[2][$i]."','".time()."','6','0')"); - } - $i++; - } - } - - if(isset($gid['id'])) - { - if($time<0) - { - $time = 0; - } - //Выбираем статус игры - if($time>0) - { - //делаем ставки - $status = 1; - $sp = mysql_query('SELECT * FROM `ruletka_coin` WHERE `end` = "0" AND `uid` = "'.$u->info['id'].'" AND `game_id` = "'.$gid['id'].'"'); - $win[3] = 0; - while($pl = mysql_fetch_array($sp)) - { - $win[3] += $pl['money']; - } - }else{ - //играем - $status = 2; - //выводим выйгрыш + ставку - $sp = mysql_query('SELECT * FROM `ruletka_coin` WHERE `end` > "0" AND `uid` = "'.$u->info['id'].'" AND `game_id` = "'.$gid['id'].'"'); - $win[2] = 0; - while($pl = mysql_fetch_array($sp)) - { - $win[2] += $pl['money']; - $win[3] += $pl['money']; - $win[1] += $pl['money']; - } - } - if($win[0]>0) - { - unset($mnr); - } - if(isset($mnr)) - { - $mnr = '&cash='.floor(0+$u->bank['money2']); - } - $r = 'time='.$time.'&game='.$gid['id'].''.$mnr.'&betsum='.$win[3].'&status='.$status.'&players='.$win[5].'&bets='.$win[4].'&win='.$win[0].'&wbets='.$win[1].'&wmoney='.$win[2].''; - echo $r; - } + FROM `users` AS `u` WHERE `u`.`id`="' . mysql_real_escape_string($u_w[0][$i]) . '" LIMIT 1' + ) + ); + + mysql_query( + 'UPDATE `actions` SET `vals` = `vals` + "' . mysql_real_escape_string( + (0 + $u_w[3][$u_w[0][$i]]) - $u_w[1][$u_w[0][$i]] + ) . '" WHERE `id` = "' . $sm['id'] . '" LIMIT 1' + ); + mysql_query( + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','389','','','[Крупье] Игрок " . mysql_real_escape_string( + $infu['login'] + ) . " выиграл " . $u_w[1][$u_w[0][$i]] . ".00 еекр., ставка: " . (0 + $u_w[3][$u_w[0][$i]]) . ".00 еекр., игра №" . $u_w[2][$i] . "','" . time( + ) . "','6','0')" + ); + } + $i++; + } + } + + if (isset($gid['id'])) { + if ($time < 0) { + $time = 0; + } + //Выбираем статус игры + if ($time > 0) { + //делаем ставки + $status = 1; + $sp = mysql_query( + 'SELECT * FROM `ruletka_coin` WHERE `end` = "0" AND `uid` = "' . $u->info['id'] . '" AND `game_id` = "' . $gid['id'] . '"' + ); + $win[3] = 0; + while ($pl = mysql_fetch_array($sp)) { + $win[3] += $pl['money']; + } + } else { + //играем + $status = 2; + //выводим выйгрыш + ставку + $sp = mysql_query( + 'SELECT * FROM `ruletka_coin` WHERE `end` > "0" AND `uid` = "' . $u->info['id'] . '" AND `game_id` = "' . $gid['id'] . '"' + ); + $win[2] = 0; + while ($pl = mysql_fetch_array($sp)) { + $win[2] += $pl['money']; + $win[3] += $pl['money']; + $win[1] += $pl['money']; + } + } + if ($win[0] > 0) { + unset($mnr); + } + if (isset($mnr)) { + $mnr = '&cash=' . floor(0 + $u->bank['money2']); + } + $r = 'time=' . $time . '&game=' . $gid['id'] . '' . $mnr . '&betsum=' . $win[3] . '&status=' . $status . '&players=' . $win[5] . '&bets=' . $win[4] . '&win=' . $win[0] . '&wbets=' . $win[1] . '&wmoney=' . $win[2] . ''; + echo $r; + } } -//mysql_query('UNLOCK TABLES'); -?> \ No newline at end of file + diff --git a/ruletka2.php b/ruletka2.php index 19e23b4e..f7aff6d1 100644 --- a/ruletka2.php +++ b/ruletka2.php @@ -1,662 +1,646 @@ bank['id'])) { - //die(); +if ($u->info['level'] <= 7) { + die(''); } - if($u->info['level'] <= 7 ) { - die(''); - } - - mysql_query("LOCK TABLES +mysql_query( + "LOCK TABLES `actions` WRITE, `bank` WRITE, - `users` WRITE, `users_delo` WRITE, - `chat` WRITE, - `stats` WRITE, - `ruletka` WRITE, `ruletka_coin` WRITE, - - `bandit` WRITE;"); + `bandit` WRITE;" +); + +/* +33|2-0-0-0-2-0, +32|4-0-0-0-4-6, +11|4-0-0-42-4-0, +21|2-0-0-0-2-0, +2-4-6-8-10-11-13-15-17-20-22-24-26-28-29-31-33-35|8-0-8-0-0-0, +7|4-0-0-0-4-0, +2|4-0-0-0-4-0, +17|4-0-0-4-4-0, +1|6-0-0-0-0-6, +18|4-0-0-0-4-0, +30|4-0-0-6-4-6, +16|4-0-0-0-4-0, +13|4-0-0-0-4-0, +25|6-0-0-0-0-6, +27|2-0-0-0-2-0, +36|2-0-0-0-2-0, +3|4-0-0-0-4-0, +20|4-0-0-0-4-0, +8|8-0-0-16-4-0, +38|2-0-0-0-2-6, +4|8-0-0-16-0-0, +34|4-0-0-0-4-0, +37|1-0-0-0-4-7, +19|2-0-0-0-2-0, +10|4-0-0-10-2-0, +31|6-0-0-6-4-0 +*/ + +if ($u->room['name'] != 'Рулетка') { + die(); +} else { + + //Раздаем выйгрыши - /* - 33|2-0-0-0-2-0, - 32|4-0-0-0-4-6, - 11|4-0-0-42-4-0, - 21|2-0-0-0-2-0, - 2-4-6-8-10-11-13-15-17-20-22-24-26-28-29-31-33-35|8-0-8-0-0-0, - 7|4-0-0-0-4-0, - 2|4-0-0-0-4-0, - 17|4-0-0-4-4-0, - 1|6-0-0-0-0-6, - 18|4-0-0-0-4-0, - 30|4-0-0-6-4-6, - 16|4-0-0-0-4-0, - 13|4-0-0-0-4-0, - 25|6-0-0-0-0-6, - 27|2-0-0-0-2-0, - 36|2-0-0-0-2-0, - 3|4-0-0-0-4-0, - 20|4-0-0-0-4-0, - 8|8-0-0-16-4-0, - 38|2-0-0-0-2-6, - 4|8-0-0-16-0-0, - 34|4-0-0-0-4-0, - 37|1-0-0-0-4-7, - 19|2-0-0-0-2-0, - 10|4-0-0-10-2-0, - 31|6-0-0-6-4-0 - */ + function get2str($key = '', $val = '') + { + $get = $_GET; + if (is_array($key)) { + if (count($key) > 0) { + foreach ($key as $k => $v) { + $get[$k] = $v; + } + } + } else { + $get[$key] = $val; + } + if (count($get) > 0) { + foreach ($get as $k => $v) { + if (empty($v)) { + unset($get[$k]); + } + } + } + if (count($get) > 0) { + foreach ($get as $k => $v) { + $get[$k] = $k . '=' . urlencode($v); + } + return '?' . implode('&', $get); + } + } -if($u->room['name']!='Рулетка') -{ - die(); -}else{ - - //Раздаем выйгрыши - - - function get2str($key='', $val='') { - $get = $_GET; - if ( is_array($key) ) { - if ( count($key)>0 ) foreach ( $key as $k=>$v ) $get[$k] = $v; - } else $get[$key] = $val; - if ( count($get)>0 ) { - foreach ( $get as $k=>$v ) if ( empty($v) ) unset($get[$k]); - } - if ( count($get)>0 ) { - foreach ( $get as $k=>$v ) $get[$k] = $k.'='.urlencode($v); - return '?'.implode('&', $get); - } - } + $r = ''; + $time = 74; //сек до новой игры + $status = 0; //статус игры, 2 - крутим колесо + $win = [ + 0 => 0, //число выйгрыша + 1 => '', //линии выйгрыша + 2 => 0, //сумма выйгрыша + 3 => 0, //ставка на эту игру текущего игрока + //ставки + 4 => '', + //игроки которые делали ставки + 5 => '', + ]; - $r = ''; - $time = 74; //сек до новой игры - $status = 0; //статус игры, 2 - крутим колесо - $win = array( - 0 => 0, //число выйгрыша - 1 => '', //линии выйгрыша - 2 => 0, //сумма выйгрыша - 3 => 0, //ставка на эту игру текущего игрока - //ставки - 4 => '', - //игроки которые делали ставки - 5 => '' - ); - - //Выделяем текущую игру, если её нет, то создаем новую - $gid = mysql_fetch_array(mysql_query('SELECT * FROM `ruletka` WHERE (`end` = 0 OR `id` = "'.((int)$_GET['id']).'") ORDER BY `id` DESC LIMIT 1')); - if($gid['time_start']+16>time() || isset($_GET['bet'])) - { - $mnr = true; - } - $gid3 = mysql_fetch_array(mysql_query('SELECT * FROM `ruletka` WHERE `end` >0 AND `id` = "'.((int)$_GET['id']).'" ORDER BY `id` DESC LIMIT 1')); - if(isset($gid3['id'])) - { - $gid = $gid3; - unset($gid3); - } - $add = false; - if(isset($gid['id'])) - { - //Игра существует, проверяем - $time = $gid['time_start']-time(); - if($time<1) - { - //крутим колесо и заканчиваем игру + выдаем выйгрыш - //mysql_query('UPDATE `ruletka` SET `end` = "'.time().'" WHERE `id` = "'.$gid['id'].'" LIMIT 1'); - //выводим предыдущий выйгрыш - $win[0] = $gid['win']; - $win[1] = $gid['win_line']; - $win[2] = 0; - $win[3] = 0; - if($gid['end']==0) - { - $add = true; - } - }else{ - //ожидаем начала игры, делаем ставки - if(isset($_GET['bet'])) - { - $bt = $_GET['bet']; - $good = 0; - $i = 0; - while($i<=38) - { - if($i==$bt) - { - $good++; - } - $i++; - } - - /* - Ставки и значения - - 1, ... ,36 - ставка на числа [x8] - - 2-4-6-8-10-11-13-15-17-20-22-24-26-28-29-31-33-35 - черное [x2] - 1-3-5-7-9-12-14-16-18-19-21-23-25-27-30-32-34-36 - красное [x2] - - 37 - два нуля [x36] - 38 - ноль [x36] - - 1-2-3-37-38 - потолок [x5] - - 1-2-3-4-5-6-7-8-9-10-11-12 - 1 сектор [x3] - 13-14-15-16-17-18-19-20-21-22-23-24 - 2 сектор [x3] - 25-26-27-28-29-30-31-32-33-34-35-36 - 3 сектор [x3] - - */ - - if($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '' && $good == 0 ) { - $good++; - }elseif($bt == '35-36' && $good == 0 ) { - $good++; - }elseif($bt == '34-35' && $good == 0 ) { - $good++; - }elseif($bt == '32-33' && $good == 0 ) { - $good++; - }elseif($bt == '31-32' && $good == 0 ) { - $good++; - }elseif($bt == '29-30' && $good == 0 ) { - $good++; - }elseif($bt == '28-29' && $good == 0 ) { - $good++; - }elseif($bt == '26-27' && $good == 0 ) { - $good++; - }elseif($bt == '25-26' && $good == 0 ) { - $good++; - }elseif($bt == '23-24' && $good == 0 ) { - $good++; - }elseif($bt == '22-23' && $good == 0 ) { - $good++; - }elseif($bt == '20-21' && $good == 0 ) { - $good++; - }elseif($bt == '19-20' && $good == 0 ) { - $good++; - }elseif($bt == '17-18' && $good == 0 ) { - $good++; - }elseif($bt == '16-17' && $good == 0 ) { - $good++; - }elseif($bt == '14-15' && $good == 0 ) { - $good++; - }elseif($bt == '13-14' && $good == 0 ) { - $good++; - }elseif($bt == '11-12' && $good == 0 ) { - $good++; - }elseif($bt == '10-11' && $good == 0 ) { - $good++; - }elseif($bt == '8-9' && $good == 0 ) { - $good++; - }elseif($bt == '7-8' && $good == 0 ) { - $good++; - }elseif($bt == '5-6' && $good == 0 ) { - $good++; - }elseif($bt == '4-5' && $good == 0 ) { - $good++; - }elseif($bt == '2-3' && $good == 0 ) { - $good++; - }elseif($bt == '1-2' && $good == 0 ) { - $good++; - }elseif($bt == '32-33-35-36' && $good == 0 ) { - $good++; - }elseif($bt == '31-32-34-35' && $good == 0 ) { - $good++; - }elseif($bt == '29-30-32-33' && $good == 0 ) { - $good++; - }elseif($bt == '28-29-31-32' && $good == 0 ) { - $good++; - }elseif($bt == '26-27-29-30' && $good == 0 ) { - $good++; - }elseif($bt == '25-26-28-29' && $good == 0 ) { - $good++; - }elseif($bt == '23-24-26-27' && $good == 0 ) { - $good++; - }elseif($bt == '22-23-25-26' && $good == 0 ) { - $good++; - }elseif($bt == '20-21-23-24' && $good == 0 ) { - $good++; - }elseif($bt == '19-20-22-23' && $good == 0 ) { - $good++; - }elseif($bt == '17-18-20-21' && $good == 0 ) { - $good++; - }elseif($bt == '16-17-19-20' && $good == 0 ) { - $good++; - }elseif($bt == '14-15-17-18' && $good == 0 ) { - $good++; - }elseif($bt == '13-14-16-17' && $good == 0 ) { - $good++; - }elseif($bt == '11-12-14-15' && $good == 0 ) { - $good++; - }elseif($bt == '10-11-13-14' && $good == 0 ) { - $good++; - }elseif($bt == '8-9-11-12' && $good == 0 ) { - $good++; - }elseif($bt == '7-8-10-11' && $good == 0 ) { - $good++; - }elseif($bt == '5-6-8-9' && $good == 0 ) { - $good++; - }elseif($bt == '4-5-7-8' && $good == 0 ) { - $good++; - }elseif($bt == '2-3-5-6' && $good == 0 ) { - $good++; - }elseif($bt == '1-2-4-5' && $good == 0 ) { - $good++; - }elseif($bt == '2-3-37' && $good == 0 ) { - $good++; - }elseif($bt == '1-2-38' && $good == 0 ) { - $good++; - }elseif($bt == '38-1' && $good == 0 ) { - $good++; - }elseif($bt == '2-4-6-8-10-12-14-16-18-20-22-24-26-28-30-32-34-36' && $good == 0 ) { - $good++; - }elseif($bt == '1-3-5-7-9-11-13-15-17-19-21-23-25-27-29-31-33-35' && $good == 0 ) { - $good++; - }elseif($bt == '19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36' && $good == 0 ) { - $good++; - }elseif($bt == '1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18' && $good == 0 ) { - $good++; - }elseif($bt == '28-29-30-31-32-33' && $good == 0 ) { - $good++; - }elseif($bt == '22-23-24-25-26-27' && $good == 0 ) { - $good++; - }elseif($bt == '16-17-18-19-20-21' && $good == 0 ) { - $good++; - }elseif($bt == '10-11-12-13-14-15' && $good == 0 ) { - $good++; - }elseif($bt == '4-5-6-7-8-9' && $good == 0 ) { - $good++; - }elseif($bt == '31-32-33-34-35-36' && $good == 0 ) { - $good++; - }elseif($bt == '25-26-27-28-29-30' && $good == 0 ) { - $good++; - }elseif($bt == '19-20-21-22-23-24' && $good == 0 ) { - $good++; - }elseif($bt == '13-14-15-16-17-18' && $good == 0 ) { - $good++; - }elseif($bt == '7-8-9-10-11-12' && $good == 0 ) { - $good++; - }elseif($bt == '1-2-3-4-5-6' && $good == 0 ) { - $good++; - }elseif($bt == '34-35-36' && $good == 0 ) { - $good++; - }elseif($bt == '31-32-33' && $good == 0 ) { - $good++; - }elseif($bt == '28-29-30' && $good == 0 ) { - $good++; - }elseif($bt == '25-26-27' && $good == 0 ) { - $good++; - }elseif($bt == '22-23-24' && $good == 0 ) { - $good++; - }elseif($bt == '19-20-21' && $good == 0 ) { - $good++; - }elseif($bt == '16-17-18' && $good == 0 ) { - $good++; - }elseif($bt == '13-14-15' && $good == 0 ) { - $good++; - }elseif($bt == '10-11-12' && $good == 0 ) { - $good++; - }elseif($bt == '7-8-9' && $good == 0 ) { - $good++; - }elseif($bt == '6-5-4' && $good == 0 ) { - $good++; - }elseif($bt == '1-2-3' && $good == 0 ) { - $good++; - }elseif($bt == '3-6-9-12-15-18-21-24-27-30-33-36' && $good == 0 ) { - $good++; - }elseif($bt == '2-5-8-11-14-17-20-23-26-29-32-35' && $good == 0 ) { - $good++; - }elseif($bt == '1-4-7-10-13-16-19-22-25-28-31-34' && $good == 0 ) { - $good++; - }elseif($bt == '2-4-6-8-10-11-13-15-17-20-22-24-26-28-29-31-33-35' && $good==0) - { - $good++; - }elseif($bt == '1-3-5-7-9-12-14-16-18-19-21-23-25-27-30-32-34-36' && $good==0) - { - $good++; - }elseif($bt == '1-2-3-37-38' && $good==0) - { - $good++; - }elseif($bt == '1-2-3-4-5-6-7-8-9-10-11-12' && $good==0) - { - $good++; - }elseif($bt == '13-14-15-16-17-18-19-20-21-22-23-24' && $good==0) - { - $good++; - }elseif($bt == '25-26-27-28-29-30-31-32-33-34-35-36' && $good==0) - { - $good++; - }elseif($bt == '1-2-4-5' && $good==0) - { - $good++; - } - $_GET['coin'] = (int)$_GET['coin']; - if($_GET['coin']<1) - { - $good = 0; - } - if($_GET['coin']>$u->bank['money1']) - { - $good = 0; - } - if($good==1) - { - $u->bank['money1'] -= ((int)$_GET['coin']); - - $stvka = ''; - - if($stvka == '') { - $stvka = 'неизвестная зона ставки'; - } - - - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$u->info['city']."','".$u->info['room']."','','','[Крупье] Игрок ".mysql_real_escape_string($u->info['login'])." сделал ставку: ".(0+((int)$_GET['coin'])).".00 кр. на ".$stvka.", игра №".$gid['id']."','".time()."','6','0')"); - - - mysql_query('UPDATE `bank` SET `money1` = '.$u->bank['money1'].' WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `ruletka_coin` (`uid`,`login`,`money`,`time`,`game_id`,`win2`) VALUES ("'.$u->info['id'].'","'.$u->info['login'].'","'.$_GET['coin'].'","'.time().'","'.$gid['id'].'","'.$bt.'")'); - } - } - } - }else{ - $add = true; - } - - //обновляем ставки - $pos = array( - 0 => '2-4-6-8-10-11-13-15-17-20-22-24-26-28-29-31-33-35', - 1 => '1-3-5-7-9-12-14-16-18-19-21-23-25-27-30-32-34-36', - 2 => '1-2-3-37-38', - 3 => '1-2-3-4-5-6-7-8-9-10-11-12', - 4 => '13-14-15-16-17-18-19-20-21-22-23-24', - 5 => '25-26-27-28-29-30-31-32-33-34-35-36', - 6 => '1-4-7-10-13-16-19-22-25-28-31-34', - 7 => '2-5-8-11-14-17-20-23-26-29-32-35', - 8 => '3-6-9-12-15-18-21-24-27-30-33-36', - 9 => '1-2-3', - 10 => '6-5-4', - 11 => '7-8-9', - 12 => '10-11-12', - 13 => '13-14-15', - 14 => '16-17-18', - 15 => '19-20-21', - 16 => '22-23-24', - 17 => '25-26-27', - 18 => '28-29-30', - 19 => '31-32-33', - 20 => '34-35-36', - 21 => '1-2-3-4-5-6', - 22 => '7-8-9-10-11-12', - 23 => '13-14-15-16-17-18', - 24 => '19-20-21-22-23-24', - 25 => '25-26-27-28-29-30', - 26 => '31-32-33-34-35-36', - 27 => '4-5-6-7-8-9', - 28 => '10-11-12-13-14-15', - 29 => '16-17-18-19-20-21', - 30 => '22-23-24-25-26-27', - 31 => '28-29-30-31-32-33', - 32 => '1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18', - 33 => '19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36', - 34 => '1-3-5-7-9-11-13-15-17-19-21-23-25-27-29-31-33-35', - 35 => '2-4-6-8-10-12-14-16-18-20-22-24-26-28-30-32-34-36', - 36 => '38-1', - 37 => '1-2-38', - 38 => '2-3-37', - 39 => '32-33-35-36', - 40 => '31-32-34-35', - 41 => '29-30-32-33', - 42 => '28-29-31-32', - 43 => '26-27-29-30', - 44 => '25-26-28-29', - 45 => '23-24-26-27', - 46 => '22-23-25-26', - 47 => '20-21-23-24', - 48 => '19-20-22-23', - 49 => '17-18-20-21', - 50 => '16-17-19-20', - 51 => '14-15-17-18', - 52 => '13-14-16-17', - 53 => '11-12-14-15', - 54 => '10-11-13-14', - 55 => '8-9-11-12', - 56 => '7-8-10-11', - 57 => '5-6-8-9', - 58 => '4-5-7-8', - 59 => '2-3-5-6', - 60 => '1-2-4-5', - 61 => '1-2', - 62 => '2-3', - 63 => '4-5', - 64 => '5-6', - 65 => '7-8', - 66 => '8-9', - 67 => '10-11', - 68 => '11-12', - 69 => '13-14', - 70 => '14-15', - 71 => '16-17', - 72 => '17-18', - 73 => '19-20', - 74 => '20-21', - 75 => '22-23', - 76 => '23-24', - 77 => '25-26', - 78 => '26-27', - 79 => '28-29', - 80 => '29-30', - 81 => '31-32', - 82 => '32-33', - 83 => '34-35', - 84 => '35-36' - ); - - function testCoin($s,$stt) - { - global $u,$win; - $sp = mysql_query('SELECT * FROM `ruletka_coin` WHERE `game_id` = "'.$s.'" AND `money` > 0 AND `win2` = "'.$stt.'" AND `uid` != "'.$u->info['id'].'"'); - $cr = 0; $am = 0; - $usr = ''; $lu = array(); - while($pl = mysql_fetch_array($sp)) - { - $cr = $pl['money']; - if(!isset($lu[$pl['uid']]) && count($lu)<4) - { - $usr .= '-'.$pl['money']; - $lu[$pl['uid']] = true; - } - $am++; - } - $us = 0; //Ставка игрока - $sp = mysql_query('SELECT * FROM `ruletka_coin` WHERE `game_id` = "'.$s.'" AND `money` > 0 AND `win2` = "'.$stt.'" AND `uid` = "'.$u->info['id'].'" LIMIT 100'); - while($pl = mysql_fetch_array($sp)) - { - $cr = $pl['money']; - $us += $pl['money']; - $am++; - } - $i = 0; - while($i<4) - { - if($i > count($lu)) - { - $usr .= '-0'; - } - $i++; - } - if($am>0) - { - $win[4] .= $stt.'|'.$cr.'-'.$us.''.$usr.','; - } - } - - //ставки на числа - $i = 1; - while($i<=38) - { - testCoin($gid['id'],$i); - $i++; - } - //комбинированные ставки - $i = 0; - while($i0,'room'=>$u->info['room'],'time'=>time(),'time_start'=>time()+74,'win'=>floor(rand(100,3800)/100),'win_line'=>'','end'=>0); - $s37 = mysql_fetch_array(mysql_query('SELECT `id` FROM `ruletka` WHERE `win` = "37" OR `win` = "38" AND `time` > "'.(time()-round(3600/10000*rand(5000,10000))).'" LIMIT 1')); - if(isset($s37['id'])) { - $gid2['win'] = floor(rand(100,3600)/100); - } - $ins = mysql_query('INSERT INTO `ruletka` (`room`,`time`,`time_start`,`win`,`win_line`) VALUES ("'.$gid2['room'].'","'.$gid2['time'].'","'.$gid2['time_start'].'","'.$gid2['win'].'","'.$gid2['win_line'].'")'); - $gid2['id'] = mysql_insert_id(); - if($ins) - { - $gid = $gid2; - } - unset($gid2); - } - - $u_w = array(0=>array(),1=>array(),2=>array(),3=>array()); - - $sm = $u->testAction('`city` = "'.$u->info['city'].'" AND `vars` = "casino_balance" LIMIT 1',1); - if(!isset($sm['id'])) { - $u->addAction(time(),'casino_balance',0); - } - - //обновляем выйгрыши - $sp = mysql_query('SELECT * FROM `ruletka` WHERE `end` = "0" AND `time_start` <= '.time().''); - while($pl = mysql_fetch_array($sp)) - { - /*$pl['win'] = floor(rand(10000000,360000000)/10000000); - if( rand(0,1) == 1 ) { - $pl['win'] = floor(rand(10000000,360000000)/10000000); - } - if( rand(0,1) == 1 ) { - $pl['win'] = floor(rand(10000000,360000000)/10000000); - }*/ - $end = mysql_query('UPDATE `ruletka` SET `end` = "'.time().'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - if($end) - { - //выдаем выйгрышь - $sp2 = mysql_query('SELECT * FROM `ruletka_coin` WHERE `end` = "0" AND `game_id` = "'.$pl['id'].'"'); - while($pl2 = mysql_fetch_array($sp2)) - { - $upd = mysql_query('UPDATE `ruletka_coin` SET `end` = "'.time().'" WHERE `id` = "'.$pl2['id'].'" LIMIT 1'); - if($upd) - { - $wn = 0; $wn2 = 0; - $xv = 2; - if($pl2['win2']==$pl['win']) - { - $wn++; - }else{ - $i = 0; $j = explode('-',$pl2['win2']); - $xv = floor(1+34/count($j)); - while($i0) - { - //перечисляем деньги [x8], если зеро то [x36] - if($pl['win']>36) - { - $nmn = ((int)$pl2['money']*35); - }else{ - $nmn = ((int)$pl2['money']*35); - } - mysql_query('UPDATE `bank` SET `money1` = `money1` + "'.$nmn.'" WHERE `uid` = "'.$pl2['uid'].'" ORDER BY `useNow` DESC LIMIT 1'); - }elseif($wn2>0) - { - //перечисляем деньги по определенной формуле - $nmn = ((int)$pl2['money']*$xv); - mysql_query('UPDATE `bank` SET `money1` = `money1` + "'.$nmn.'" WHERE `uid` = "'.$pl2['uid'].'" ORDER BY `useNow` DESC LIMIT 1'); - }else{ - //проиграли - mysql_query('UPDATE `ruletka_coin` SET `end` = "1" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - mysql_query('UPDATE `actions` SET `vals` = `vals` + "'.mysql_real_escape_string(0+$pl2['money']).'" WHERE `id` = "'.$sm['id'].'" LIMIT 1'); - } - - if($wn > 0 || $wn2 > 0) { - $u->addDelo(1,$pl2['uid'],'"Casino.'.$u->info['city'].'": Выиграл '.$nmn.' екр.',time(),$u->info['city'],'Casino.'.$u->info['city'].'',0,0); - if(!isset($u_w[1][$pl2['uid']])) { - $u_w[0][count($u_w[0])] = $pl2['uid']; - $u_w[2][count($u_w[0])-1] = $pl2['game_id']; - } - $u_w[1][$pl2['uid']] += (int)$nmn; - } - $u_w[3][$pl2['uid']] += (int)$pl2['money']; - - } - } - } - } - - if(count($u_w[0]) > 0) { - //mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$pl['city']."','225','Крупье','','Игрок ".$pl['login']." выиграл ".$nmn.".00 кр.','".time()."','6','0')"); - $i = 0; - while($i < count($u_w[0])) { - if($u_w[1][$u_w[0][$i]] > 0) { - $infu = mysql_fetch_array(mysql_query('SELECT + //Выделяем текущую игру, если её нет, то создаем новую + $gid = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `ruletka` WHERE (`end` = 0 OR `id` = "' . ((int)$_GET['id']) . '") ORDER BY `id` DESC LIMIT 1' + ) + ); + if ($gid['time_start'] + 16 > time() || isset($_GET['bet'])) { + $mnr = true; + } + $gid3 = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `ruletka` WHERE `end` >0 AND `id` = "' . ((int)$_GET['id']) . '" ORDER BY `id` DESC LIMIT 1' + ) + ); + if (isset($gid3['id'])) { + $gid = $gid3; + unset($gid3); + } + $add = false; + if (isset($gid['id'])) { + //Игра существует, проверяем + $time = $gid['time_start'] - time(); + if ($time < 1) { + //крутим колесо и заканчиваем игру + выдаем выйгрыш + //mysql_query('UPDATE `ruletka` SET `end` = "'.time().'" WHERE `id` = "'.$gid['id'].'" LIMIT 1'); + //выводим предыдущий выйгрыш + $win[0] = $gid['win']; + $win[1] = $gid['win_line']; + $win[2] = 0; + $win[3] = 0; + if ($gid['end'] == 0) { + $add = true; + } + } else { + //ожидаем начала игры, делаем ставки + if (isset($_GET['bet'])) { + $bt = $_GET['bet']; + $good = 0; + $i = 0; + while ($i <= 38) { + if ($i == $bt) { + $good++; + } + $i++; + } + + /* + Ставки и значения + + 1, ... ,36 - ставка на числа [x8] + + 2-4-6-8-10-11-13-15-17-20-22-24-26-28-29-31-33-35 - черное [x2] + 1-3-5-7-9-12-14-16-18-19-21-23-25-27-30-32-34-36 - красное [x2] + + 37 - два нуля [x36] + 38 - ноль [x36] + + 1-2-3-37-38 - потолок [x5] + + 1-2-3-4-5-6-7-8-9-10-11-12 - 1 сектор [x3] + 13-14-15-16-17-18-19-20-21-22-23-24 - 2 сектор [x3] + 25-26-27-28-29-30-31-32-33-34-35-36 - 3 сектор [x3] + + */ + + if ($bt == '' && $good == 0) { + $good++; + } elseif ($bt == '35-36' && $good == 0) { + $good++; + } elseif ($bt == '34-35' && $good == 0) { + $good++; + } elseif ($bt == '32-33' && $good == 0) { + $good++; + } elseif ($bt == '31-32' && $good == 0) { + $good++; + } elseif ($bt == '29-30' && $good == 0) { + $good++; + } elseif ($bt == '28-29' && $good == 0) { + $good++; + } elseif ($bt == '26-27' && $good == 0) { + $good++; + } elseif ($bt == '25-26' && $good == 0) { + $good++; + } elseif ($bt == '23-24' && $good == 0) { + $good++; + } elseif ($bt == '22-23' && $good == 0) { + $good++; + } elseif ($bt == '20-21' && $good == 0) { + $good++; + } elseif ($bt == '19-20' && $good == 0) { + $good++; + } elseif ($bt == '17-18' && $good == 0) { + $good++; + } elseif ($bt == '16-17' && $good == 0) { + $good++; + } elseif ($bt == '14-15' && $good == 0) { + $good++; + } elseif ($bt == '13-14' && $good == 0) { + $good++; + } elseif ($bt == '11-12' && $good == 0) { + $good++; + } elseif ($bt == '10-11' && $good == 0) { + $good++; + } elseif ($bt == '8-9' && $good == 0) { + $good++; + } elseif ($bt == '7-8' && $good == 0) { + $good++; + } elseif ($bt == '5-6' && $good == 0) { + $good++; + } elseif ($bt == '4-5' && $good == 0) { + $good++; + } elseif ($bt == '2-3' && $good == 0) { + $good++; + } elseif ($bt == '1-2' && $good == 0) { + $good++; + } elseif ($bt == '32-33-35-36' && $good == 0) { + $good++; + } elseif ($bt == '31-32-34-35' && $good == 0) { + $good++; + } elseif ($bt == '29-30-32-33' && $good == 0) { + $good++; + } elseif ($bt == '28-29-31-32' && $good == 0) { + $good++; + } elseif ($bt == '26-27-29-30' && $good == 0) { + $good++; + } elseif ($bt == '25-26-28-29' && $good == 0) { + $good++; + } elseif ($bt == '23-24-26-27' && $good == 0) { + $good++; + } elseif ($bt == '22-23-25-26' && $good == 0) { + $good++; + } elseif ($bt == '20-21-23-24' && $good == 0) { + $good++; + } elseif ($bt == '19-20-22-23' && $good == 0) { + $good++; + } elseif ($bt == '17-18-20-21' && $good == 0) { + $good++; + } elseif ($bt == '16-17-19-20' && $good == 0) { + $good++; + } elseif ($bt == '14-15-17-18' && $good == 0) { + $good++; + } elseif ($bt == '13-14-16-17' && $good == 0) { + $good++; + } elseif ($bt == '11-12-14-15' && $good == 0) { + $good++; + } elseif ($bt == '10-11-13-14' && $good == 0) { + $good++; + } elseif ($bt == '8-9-11-12' && $good == 0) { + $good++; + } elseif ($bt == '7-8-10-11' && $good == 0) { + $good++; + } elseif ($bt == '5-6-8-9' && $good == 0) { + $good++; + } elseif ($bt == '4-5-7-8' && $good == 0) { + $good++; + } elseif ($bt == '2-3-5-6' && $good == 0) { + $good++; + } elseif ($bt == '1-2-4-5' && $good == 0) { + $good++; + } elseif ($bt == '2-3-37' && $good == 0) { + $good++; + } elseif ($bt == '1-2-38' && $good == 0) { + $good++; + } elseif ($bt == '38-1' && $good == 0) { + $good++; + } elseif ($bt == '2-4-6-8-10-12-14-16-18-20-22-24-26-28-30-32-34-36' && $good == 0) { + $good++; + } elseif ($bt == '1-3-5-7-9-11-13-15-17-19-21-23-25-27-29-31-33-35' && $good == 0) { + $good++; + } elseif ($bt == '19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36' && $good == 0) { + $good++; + } elseif ($bt == '1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18' && $good == 0) { + $good++; + } elseif ($bt == '28-29-30-31-32-33' && $good == 0) { + $good++; + } elseif ($bt == '22-23-24-25-26-27' && $good == 0) { + $good++; + } elseif ($bt == '16-17-18-19-20-21' && $good == 0) { + $good++; + } elseif ($bt == '10-11-12-13-14-15' && $good == 0) { + $good++; + } elseif ($bt == '4-5-6-7-8-9' && $good == 0) { + $good++; + } elseif ($bt == '31-32-33-34-35-36' && $good == 0) { + $good++; + } elseif ($bt == '25-26-27-28-29-30' && $good == 0) { + $good++; + } elseif ($bt == '19-20-21-22-23-24' && $good == 0) { + $good++; + } elseif ($bt == '13-14-15-16-17-18' && $good == 0) { + $good++; + } elseif ($bt == '7-8-9-10-11-12' && $good == 0) { + $good++; + } elseif ($bt == '1-2-3-4-5-6' && $good == 0) { + $good++; + } elseif ($bt == '34-35-36' && $good == 0) { + $good++; + } elseif ($bt == '31-32-33' && $good == 0) { + $good++; + } elseif ($bt == '28-29-30' && $good == 0) { + $good++; + } elseif ($bt == '25-26-27' && $good == 0) { + $good++; + } elseif ($bt == '22-23-24' && $good == 0) { + $good++; + } elseif ($bt == '19-20-21' && $good == 0) { + $good++; + } elseif ($bt == '16-17-18' && $good == 0) { + $good++; + } elseif ($bt == '13-14-15' && $good == 0) { + $good++; + } elseif ($bt == '10-11-12' && $good == 0) { + $good++; + } elseif ($bt == '7-8-9' && $good == 0) { + $good++; + } elseif ($bt == '6-5-4' && $good == 0) { + $good++; + } elseif ($bt == '1-2-3' && $good == 0) { + $good++; + } elseif ($bt == '3-6-9-12-15-18-21-24-27-30-33-36' && $good == 0) { + $good++; + } elseif ($bt == '2-5-8-11-14-17-20-23-26-29-32-35' && $good == 0) { + $good++; + } elseif ($bt == '1-4-7-10-13-16-19-22-25-28-31-34' && $good == 0) { + $good++; + } elseif ($bt == '2-4-6-8-10-11-13-15-17-20-22-24-26-28-29-31-33-35' && $good == 0) { + $good++; + } elseif ($bt == '1-3-5-7-9-12-14-16-18-19-21-23-25-27-30-32-34-36' && $good == 0) { + $good++; + } elseif ($bt == '1-2-3-37-38' && $good == 0) { + $good++; + } elseif ($bt == '1-2-3-4-5-6-7-8-9-10-11-12' && $good == 0) { + $good++; + } elseif ($bt == '13-14-15-16-17-18-19-20-21-22-23-24' && $good == 0) { + $good++; + } elseif ($bt == '25-26-27-28-29-30-31-32-33-34-35-36' && $good == 0) { + $good++; + } elseif ($bt == '1-2-4-5' && $good == 0) { + $good++; + } + $_GET['coin'] = (int)$_GET['coin']; + if ($_GET['coin'] < 1) { + $good = 0; + } + if ($_GET['coin'] > $u->bank['money1']) { + $good = 0; + } + if ($good == 1) { + $u->bank['money1'] -= ((int)$_GET['coin']); + + $stvka = ''; + + if ($stvka == '') { + $stvka = 'неизвестная зона ставки'; + } + + + mysql_query( + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','" . $u->info['room'] . "','','','[Крупье] Игрок " . mysql_real_escape_string( + $u->info['login'] + ) . " сделал ставку: " . (0 + ((int)$_GET['coin'])) . ".00 кр. на " . $stvka . ", игра №" . $gid['id'] . "','" . time( + ) . "','6','0')" + ); + + + mysql_query( + 'UPDATE `bank` SET `money1` = ' . $u->bank['money1'] . ' WHERE `id` = "' . $u->bank['id'] . '" LIMIT 1' + ); + mysql_query( + 'INSERT INTO `ruletka_coin` (`uid`,`login`,`money`,`time`,`game_id`,`win2`) VALUES ("' . $u->info['id'] . '","' . $u->info['login'] . '","' . $_GET['coin'] . '","' . time( + ) . '","' . $gid['id'] . '","' . $bt . '")' + ); + } + } + } + } else { + $add = true; + } + + //обновляем ставки + $pos = [ + 0 => '2-4-6-8-10-11-13-15-17-20-22-24-26-28-29-31-33-35', + 1 => '1-3-5-7-9-12-14-16-18-19-21-23-25-27-30-32-34-36', + 2 => '1-2-3-37-38', + 3 => '1-2-3-4-5-6-7-8-9-10-11-12', + 4 => '13-14-15-16-17-18-19-20-21-22-23-24', + 5 => '25-26-27-28-29-30-31-32-33-34-35-36', + 6 => '1-4-7-10-13-16-19-22-25-28-31-34', + 7 => '2-5-8-11-14-17-20-23-26-29-32-35', + 8 => '3-6-9-12-15-18-21-24-27-30-33-36', + 9 => '1-2-3', + 10 => '6-5-4', + 11 => '7-8-9', + 12 => '10-11-12', + 13 => '13-14-15', + 14 => '16-17-18', + 15 => '19-20-21', + 16 => '22-23-24', + 17 => '25-26-27', + 18 => '28-29-30', + 19 => '31-32-33', + 20 => '34-35-36', + 21 => '1-2-3-4-5-6', + 22 => '7-8-9-10-11-12', + 23 => '13-14-15-16-17-18', + 24 => '19-20-21-22-23-24', + 25 => '25-26-27-28-29-30', + 26 => '31-32-33-34-35-36', + 27 => '4-5-6-7-8-9', + 28 => '10-11-12-13-14-15', + 29 => '16-17-18-19-20-21', + 30 => '22-23-24-25-26-27', + 31 => '28-29-30-31-32-33', + 32 => '1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18', + 33 => '19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36', + 34 => '1-3-5-7-9-11-13-15-17-19-21-23-25-27-29-31-33-35', + 35 => '2-4-6-8-10-12-14-16-18-20-22-24-26-28-30-32-34-36', + 36 => '38-1', + 37 => '1-2-38', + 38 => '2-3-37', + 39 => '32-33-35-36', + 40 => '31-32-34-35', + 41 => '29-30-32-33', + 42 => '28-29-31-32', + 43 => '26-27-29-30', + 44 => '25-26-28-29', + 45 => '23-24-26-27', + 46 => '22-23-25-26', + 47 => '20-21-23-24', + 48 => '19-20-22-23', + 49 => '17-18-20-21', + 50 => '16-17-19-20', + 51 => '14-15-17-18', + 52 => '13-14-16-17', + 53 => '11-12-14-15', + 54 => '10-11-13-14', + 55 => '8-9-11-12', + 56 => '7-8-10-11', + 57 => '5-6-8-9', + 58 => '4-5-7-8', + 59 => '2-3-5-6', + 60 => '1-2-4-5', + 61 => '1-2', + 62 => '2-3', + 63 => '4-5', + 64 => '5-6', + 65 => '7-8', + 66 => '8-9', + 67 => '10-11', + 68 => '11-12', + 69 => '13-14', + 70 => '14-15', + 71 => '16-17', + 72 => '17-18', + 73 => '19-20', + 74 => '20-21', + 75 => '22-23', + 76 => '23-24', + 77 => '25-26', + 78 => '26-27', + 79 => '28-29', + 80 => '29-30', + 81 => '31-32', + 82 => '32-33', + 83 => '34-35', + 84 => '35-36', + ]; + + function testCoin($s, $stt) + { + global $u, $win; + $sp = mysql_query( + 'SELECT * FROM `ruletka_coin` WHERE `game_id` = "' . $s . '" AND `money` > 0 AND `win2` = "' . $stt . '" AND `uid` != "' . $u->info['id'] . '"' + ); + $cr = 0; + $am = 0; + $usr = ''; + $lu = []; + while ($pl = mysql_fetch_array($sp)) { + $cr = $pl['money']; + if (!isset($lu[$pl['uid']]) && count($lu) < 4) { + $usr .= '-' . $pl['money']; + $lu[$pl['uid']] = true; + } + $am++; + } + $us = 0; //Ставка игрока + $sp = mysql_query( + 'SELECT * FROM `ruletka_coin` WHERE `game_id` = "' . $s . '" AND `money` > 0 AND `win2` = "' . $stt . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 100' + ); + while ($pl = mysql_fetch_array($sp)) { + $cr = $pl['money']; + $us += $pl['money']; + $am++; + } + $i = 0; + while ($i < 4) { + if ($i > count($lu)) { + $usr .= '-0'; + } + $i++; + } + if ($am > 0) { + $win[4] .= $stt . '|' . $cr . '-' . $us . '' . $usr . ','; + } + } + + //ставки на числа + $i = 1; + while ($i <= 38) { + testCoin($gid['id'], $i); + $i++; + } + //комбинированные ставки + $i = 0; + while ($i < count($pos)) { + testCoin($gid['id'], $pos[$i]); + $i++; + } + + if ($add == true) { + //создаем новую игру + $gid2 = ['id' => 0, 'room' => $u->info['room'], 'time' => time(), 'time_start' => time() + 74, 'win' => floor( + rand(100, 3800) / 100 + ), 'win_line' => '', 'end' => 0]; + $s37 = mysql_fetch_array( + mysql_query( + 'SELECT `id` FROM `ruletka` WHERE `win` = "37" OR `win` = "38" AND `time` > "' . (time() - round( + 3600 / 10000 * rand(5000, 10000) + )) . '" LIMIT 1' + ) + ); + if (isset($s37['id'])) { + $gid2['win'] = floor(rand(100, 3600) / 100); + } + $ins = mysql_query( + 'INSERT INTO `ruletka` (`room`,`time`,`time_start`,`win`,`win_line`) VALUES ("' . $gid2['room'] . '","' . $gid2['time'] . '","' . $gid2['time_start'] . '","' . $gid2['win'] . '","' . $gid2['win_line'] . '")' + ); + $gid2['id'] = mysql_insert_id(); + if ($ins) { + $gid = $gid2; + } + unset($gid2); + } + + $u_w = [0 => [], 1 => [], 2 => [], 3 => []]; + + $sm = $u->testAction('`city` = "' . $u->info['city'] . '" AND `vars` = "casino_balance" LIMIT 1', 1); + if (!isset($sm['id'])) { + $u->addAction(time(), 'casino_balance', 0); + } + + //обновляем выйгрыши + $sp = mysql_query('SELECT * FROM `ruletka` WHERE `end` = "0" AND `time_start` <= ' . time() . ''); + while ($pl = mysql_fetch_array($sp)) { + /*$pl['win'] = floor(rand(10000000,360000000)/10000000); + if( rand(0,1) == 1 ) { + $pl['win'] = floor(rand(10000000,360000000)/10000000); + } + if( rand(0,1) == 1 ) { + $pl['win'] = floor(rand(10000000,360000000)/10000000); + }*/ + $end = mysql_query('UPDATE `ruletka` SET `end` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + if ($end) { + //выдаем выйгрышь + $sp2 = mysql_query('SELECT * FROM `ruletka_coin` WHERE `end` = "0" AND `game_id` = "' . $pl['id'] . '"'); + while ($pl2 = mysql_fetch_array($sp2)) { + $upd = mysql_query( + 'UPDATE `ruletka_coin` SET `end` = "' . time() . '" WHERE `id` = "' . $pl2['id'] . '" LIMIT 1' + ); + if ($upd) { + $wn = 0; + $wn2 = 0; + $xv = 2; + if ($pl2['win2'] == $pl['win']) { + $wn++; + } else { + $i = 0; + $j = explode('-', $pl2['win2']); + $xv = floor(1 + 34 / count($j)); + while ($i < count($j)) { + if ($j[$i] == $pl['win']) { + $wn2++; + } + $i++; + } + } + + if ($wn > 0) { + //перечисляем деньги [x8], если зеро то [x36] + if ($pl['win'] > 36) { + $nmn = ((int)$pl2['money'] * 35); + } else { + $nmn = ((int)$pl2['money'] * 35); + } + mysql_query( + 'UPDATE `bank` SET `money1` = `money1` + "' . $nmn . '" WHERE `uid` = "' . $pl2['uid'] . '" ORDER BY `useNow` DESC LIMIT 1' + ); + } elseif ($wn2 > 0) { + //перечисляем деньги по определенной формуле + $nmn = ((int)$pl2['money'] * $xv); + mysql_query( + 'UPDATE `bank` SET `money1` = `money1` + "' . $nmn . '" WHERE `uid` = "' . $pl2['uid'] . '" ORDER BY `useNow` DESC LIMIT 1' + ); + } else { + //проиграли + mysql_query('UPDATE `ruletka_coin` SET `end` = "1" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `actions` SET `vals` = `vals` + "' . mysql_real_escape_string( + 0 + $pl2['money'] + ) . '" WHERE `id` = "' . $sm['id'] . '" LIMIT 1' + ); + } + + if ($wn > 0 || $wn2 > 0) { + $u->addDelo( + 1, $pl2['uid'], + '"Casino.' . $u->info['city'] . '": Выиграл ' . $nmn . ' екр.', + time(), $u->info['city'], 'Casino.' . $u->info['city'] . '', 0, 0 + ); + if (!isset($u_w[1][$pl2['uid']])) { + $u_w[0][count($u_w[0])] = $pl2['uid']; + $u_w[2][count($u_w[0]) - 1] = $pl2['game_id']; + } + $u_w[1][$pl2['uid']] += (int)$nmn; + } + $u_w[3][$pl2['uid']] += (int)$pl2['money']; + + } + } + } + } + + if (count($u_w[0]) > 0) { + //mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$pl['city']."','225','Крупье','','Игрок ".$pl['login']." выиграл ".$nmn.".00 кр.','".time()."','6','0')"); + $i = 0; + while ($i < count($u_w[0])) { + if ($u_w[1][$u_w[0][$i]] > 0) { + $infu = mysql_fetch_array( + mysql_query( + 'SELECT `u`.`id`, `u`.`align`, `u`.`login`, @@ -666,56 +650,63 @@ if($u->room['name']!=' `u`.`online`, `u`.`sex`, `u`.`cityreg` - FROM `users` AS `u` WHERE `u`.`id`="'.mysql_real_escape_string($u_w[0][$i]).'" LIMIT 1')); - - mysql_query('UPDATE `actions` SET `vals` = `vals` + "'.mysql_real_escape_string((0+$u_w[3][$u_w[0][$i]])-$u_w[1][$u_w[0][$i]]).'" WHERE `id` = "'.$sm['id'].'" LIMIT 1'); - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$u->info['city']."','389','','','[Крупье] Игрок ".mysql_real_escape_string($infu['login'])." выиграл ".$u_w[1][$u_w[0][$i]].".00 екр., ставка: ".(0+$u_w[3][$u_w[0][$i]]).".00 екр., игра №".$u_w[2][$i]."','".time()."','6','0')"); - } - $i++; - } - } - - if(isset($gid['id'])) - { - if($time<0) - { - $time = 0; - } - //Выбираем статус игры - if($time>0) - { - //делаем ставки - $status = 1; - $sp = mysql_query('SELECT * FROM `ruletka_coin` WHERE `end` = "0" AND `uid` = "'.$u->info['id'].'" AND `game_id` = "'.$gid['id'].'"'); - $win[3] = 0; - while($pl = mysql_fetch_array($sp)) - { - $win[3] += $pl['money']; - } - }else{ - //играем - $status = 2; - //выводим выйгрыш + ставку - $sp = mysql_query('SELECT * FROM `ruletka_coin` WHERE `end` > "0" AND `uid` = "'.$u->info['id'].'" AND `game_id` = "'.$gid['id'].'"'); - $win[2] = 0; - while($pl = mysql_fetch_array($sp)) - { - $win[2] += $pl['money']; - $win[3] += $pl['money']; - $win[1] += $pl['money']; - } - } - if($win[0]>0) - { - unset($mnr); - } - if(isset($mnr)) - { - $mnr = '&cash='.floor(0+$u->bank['money1']); - } - $r = 'time='.$time.'&game='.$gid['id'].''.$mnr.'&betsum='.$win[3].'&status='.$status.'&players='.$win[5].'&bets='.$win[4].'&win='.$win[0].'&wbets='.$win[1].'&wmoney='.$win[2].''; - echo $r; - } + FROM `users` AS `u` WHERE `u`.`id`="' . mysql_real_escape_string($u_w[0][$i]) . '" LIMIT 1' + ) + ); + + mysql_query( + 'UPDATE `actions` SET `vals` = `vals` + "' . mysql_real_escape_string( + (0 + $u_w[3][$u_w[0][$i]]) - $u_w[1][$u_w[0][$i]] + ) . '" WHERE `id` = "' . $sm['id'] . '" LIMIT 1' + ); + mysql_query( + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','389','','','[Крупье] Игрок " . mysql_real_escape_string( + $infu['login'] + ) . " выиграл " . $u_w[1][$u_w[0][$i]] . ".00 екр., ставка: " . (0 + $u_w[3][$u_w[0][$i]]) . ".00 екр., игра №" . $u_w[2][$i] . "','" . time( + ) . "','6','0')" + ); + } + $i++; + } + } + + if (isset($gid['id'])) { + if ($time < 0) { + $time = 0; + } + //Выбираем статус игры + if ($time > 0) { + //делаем ставки + $status = 1; + $sp = mysql_query( + 'SELECT * FROM `ruletka_coin` WHERE `end` = "0" AND `uid` = "' . $u->info['id'] . '" AND `game_id` = "' . $gid['id'] . '"' + ); + $win[3] = 0; + while ($pl = mysql_fetch_array($sp)) { + $win[3] += $pl['money']; + } + } else { + //играем + $status = 2; + //выводим выйгрыш + ставку + $sp = mysql_query( + 'SELECT * FROM `ruletka_coin` WHERE `end` > "0" AND `uid` = "' . $u->info['id'] . '" AND `game_id` = "' . $gid['id'] . '"' + ); + $win[2] = 0; + while ($pl = mysql_fetch_array($sp)) { + $win[2] += $pl['money']; + $win[3] += $pl['money']; + $win[1] += $pl['money']; + } + } + if ($win[0] > 0) { + unset($mnr); + } + if (isset($mnr)) { + $mnr = '&cash=' . floor(0 + $u->bank['money1']); + } + $r = 'time=' . $time . '&game=' . $gid['id'] . '' . $mnr . '&betsum=' . $win[3] . '&status=' . $status . '&players=' . $win[5] . '&bets=' . $win[4] . '&win=' . $win[0] . '&wbets=' . $win[1] . '&wmoney=' . $win[2] . ''; + echo $r; + } } mysql_query('UNLOCK TABLES'); -?> \ No newline at end of file diff --git a/seasons.php b/seasons.php index c8883a09..e9d24802 100644 --- a/seasons.php +++ b/seasons.php @@ -1,260 +1,303 @@ \n"; var_dump($vars); echo "\n"; - if ($d) exit(); + if ($d) { + exit(); + } } -define('IP',GetRealIp()); -die(); +define('IP', GetRealIp()); + +die('off'); include('_incl_data/__config.php'); -define('GAME',true); +const GAME = true; include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__magic.php'); -include('_incl_data/class/__user.php'); -include('_incl_data/class/__filter_class.php'); -include('_incl_data/class/__quest.php'); -include('_incl_data/class/__seasons.php'); +$u = User::start(); +$filter = new Filter(); -if(isset($_GET['upi'])) { - $k = explode(',',$_GET['upi']); - $i = 0; - while( $i < count($k) ) { - // - $i1 = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.mysql_real_escape_string($k[$i-1]).'" LIMIT 1')); - $i2 = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.mysql_real_escape_string($k[$i]).'" LIMIT 1')); - $i3 = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.mysql_real_escape_string($k[$i+1]).'" LIMIT 1')); - if(isset($i2['id'])) { - //Проводим работу - if(isset($i3['id'])) { - //Добавляем апгрейд i2 -> i3 - $test = mysql_fetch_array(mysql_query('SELECT * FROM `items_upgrade` WHERE `iid` = "'.$i2['id'].'" AND `iup` = "'.$i3['id'].'" LIMIT 1')); - if(!isset($test['id'])) { - mysql_query('INSERT INTO `items_upgrade` (`iid`,`iup`,`price1`,`price2`) VALUES ( - "'.$i2['id'].'","'.$i3['id'].'","0","'.($i3['price2']-$i2['price2']).'" - )'); - echo '['.$i2['id'].']->['.$i3['id'].'] за '.($i3['price2']-$i2['price2']).'екр.
    '; - } - } - if(isset($i1['id']) || !isset($i3['id'])) { - //Удаляем i2 из магазина - echo '[Удаляем '.$i2['id'].' с прилавка]
    '; - mysql_query('UPDATE `items_shop` SET `kolvo` = 0 WHERE `item_id` = "'.$i2['id'].'"'); - } - } - // - $i++; - } -}else{ - die(); +if (isset($_GET['upi'])) { + $k = explode(',', $_GET['upi']); + $i = 0; + while ($i < count($k)) { + // + $i1 = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `items_main` WHERE `id` = "' . mysql_real_escape_string($k[$i - 1]) . '" LIMIT 1' + ) + ); + $i2 = mysql_fetch_array( + mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . mysql_real_escape_string($k[$i]) . '" LIMIT 1') + ); + $i3 = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `items_main` WHERE `id` = "' . mysql_real_escape_string($k[$i + 1]) . '" LIMIT 1' + ) + ); + if (isset($i2['id'])) { + //Проводим работу + if (isset($i3['id'])) { + //Добавляем апгрейд i2 -> i3 + $test = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `items_upgrade` WHERE `iid` = "' . $i2['id'] . '" AND `iup` = "' . $i3['id'] . '" LIMIT 1' + ) + ); + if (!isset($test['id'])) { + mysql_query( + 'INSERT INTO `items_upgrade` (`iid`,`iup`,`price1`,`price2`) VALUES ( + "' . $i2['id'] . '","' . $i3['id'] . '","0","' . ($i3['price2'] - $i2['price2']) . '" + )' + ); + echo '[' . $i2['id'] . ']->[' . $i3['id'] . '] за ' . ($i3['price2'] - $i2['price2']) . 'екр.
    '; + } + } + if (isset($i1['id']) || !isset($i3['id'])) { + //Удаляем i2 из магазина + echo '[Удаляем ' . $i2['id'] . ' с прилавка]
    '; + mysql_query('UPDATE `items_shop` SET `kolvo` = 0 WHERE `item_id` = "' . $i2['id'] . '"'); + } + } + // + $i++; + } +} else { + die(); } $tjs = ''; -//if( $u->info['admin'] == 0 ) { -// header('location: main.php'); -// die(); -//} - -if($u->info['bithday'] == '01.01.1800' && $u->info['inTurnirnew'] == 0) { - header('location: main.php'); - die(); +if ($u->info['bithday'] == '01.01.1800' && $u->info['inTurnirnew'] == 0) { + header('location: main.php'); + die(); } -/*if( !eregi("new-combats\.com", $_SERVER['HTTP_REFERER']) ) { - //die('Перезайдите в игру, сессия закрыта.
    last_page:%'.$_SERVER['HTTP_REFERER'].''); -}*/ - -if( $u->info['id'] == 1000001 ) { - $u->info['admin'] = 0; +if ($u->info['id'] == 1000001) { + $u->info['admin'] = 0; } #--------для общаги, и позже для почты -if($u->info['online'] < time()-60) -{ - $filter->setOnline($u->info['online'],$u->info['id'],0); - $u->onlineBonus(); - mysql_query("UPDATE `users` SET `online`='".time()."',`timeMain`='".time()."' WHERE `id`='".$u->info['id']."' LIMIT 1"); -}elseif($u->info['timeMain'] < time()-60) -{ - mysql_query("UPDATE `users` SET `online`='".time()."',`timeMain`='".time()."' WHERE `id`='".$u->info['id']."' LIMIT 1"); +if ($u->info['online'] < time() - 60) { + $filter->setOnline($u->info['online'], $u->info['id']); + $u->onlineBonus(); + mysql_query( + "UPDATE `users` SET `online`='" . time() . "',`timeMain`='" . time( + ) . "' WHERE `id`='" . $u->info['id'] . "' LIMIT 1" + ); +} elseif ($u->info['timeMain'] < time() - 60) { + mysql_query( + "UPDATE `users` SET `online`='" . time() . "',`timeMain`='" . time( + ) . "' WHERE `id`='" . $u->info['id'] . "' LIMIT 1" + ); } -if(!isset($u->info['id']) || ($u->info['joinIP']==1 && $u->info['ip']!=$_SERVER['HTTP_X_REAL_IP']) || $u->info['banned']>0) -{ - die($c['exit']); +if (!isset($u->info['id']) || ($u->info['joinIP'] == 1 && $u->info['ip'] != $_SERVER['HTTP_X_REAL_IP']) || $u->info['banned'] > 0) { + die($c['exit']); } /* */ $rz = 1; -if( isset($_GET['rz']) ) { - if( $_GET['rz'] == 2 ) { - $rz = 2; - } +if (isset($_GET['rz'])) { + if ($_GET['rz'] == 2) { + $rz = 2; + } } /* */ -season::$date['Y'] = date('Y'); -season::$date['m'] = date('m'); -season::$date['d'] = date('d'); -season::$yy = season::$yy[season::$date['m']]; +Season::$date['Y'] = date('Y'); +Season::$date['m'] = date('m'); +Season::$date['d'] = date('d'); +Season::$yy = Season::$yy[Season::$date['m']]; ?> - - - - - - - + + + + + + + - -

    сезон,

    - - - - + + +

    сезон,

    +
    - - season::$date['d'] ) { - //Миссия еще закрыта - $html .= '
    '. - '
    Дата открытия
    '.$pl['dd'].'.'.season::$date['m'].'.'.season::$date['Y'].'
    '. - '
    '; - }else{ - //Открытая миссия - $html .= '
    '. - '
    Приступить!
    '. - '
    '; - } - } - if( $html == '' ) { - $html = 'Нет миссий для текущего сезона'; - } - echo '
    ' . $html . '
    '; - }elseif( $rz == 2 ) { - //Открытая миссия - $html = ''; - season::data( $_GET['mis'] ); - if( !isset(season::$m['id']) ) { - $html = 'Миссия для текущего сезона не найдена'; - }else{ - if( season::$m['dd'] > season::$date['d'] ) { - //Миссия еще закрыта - $html .= '
    '. - '
    Дата открытия
    '.season::$m['dd'].'.'.season::$date['m'].'.'.season::$date['Y'].'
    '. - '
    '; - }else{ - //Открытая миссия - $html .= '
    '. - '
     Выполнено заданий:
    0 / ??
    '. - '
    '; - //Задания в миссии - $sp = mysql_query('SELECT * FROM `sss_q` WHERE `m` = "'.season::$m['id'].'"'); - $ends = array(); - $i = 0; - $lstms = mysql_fetch_array(mysql_query('SELECT * FROM `sss_f` WHERE `uid` = "'.$u->info['id'].'" ORDER BY `id` DESC LIMIT 1')); - while( $pl = mysql_fetch_array($sp) ) { - - $qe = 0; - $tss = strtotime('01-'.season::$m['s'].'-'.season::$date['Y'].''); - if(isset($lstms['id'])) { - $tss = strtotime(''.date('d',$lstms['time']).'-'.date('m',$lstms['time']).'-'.date('Y',$lstms['time']).''); - } - // - if( $pl['type'] == 1 ) { - //Сбор ресурсов - $c1 = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `items_users` WHERE `time_create` > "'.$tss.'" AND `uid` = "'.$u->info['id'].'" AND `delete` < 1001 AND `item_id` = "'.$pl['value'].'" LIMIT 1')); - $qe = $c1[0]; - }elseif( $pl['type'] == 2 || $pl['type'] == 3 ) { - $c1 = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `actions` WHERE `time` > "'.$tss.'" AND `uid` = "'.$u->info['id'].'" AND `vars` LIKE "%win_bot_'.$pl['value'].'" LIMIT 1')); - $qe = $c1[0]; - } - // - if( $qe > $pl['var'] ) { - $qe = $pl['var']; - } - $f = 0; - // - $nogo = false; - if( !isset($ends[$i-1]) && $i != 0 ) { - $nogo = true; - } - // - $plf = mysql_fetch_array(mysql_query('SELECT * FROM `sss_f` WHERE `uid` = "'.$u->info['id'].'" AND `m` = "'.$pl['id'].'" AND `y` = "'.season::$date['Y'].'" LIMIT 1')); - if(isset($plf['id'])) { - $f = 1; - } - // - $html .= '
    '; - $html .= '
    '; - - $html .= '
    ' . $pl['info'] . '
    '; - - if( $nogo == true ) { - //Еще не готов выполнять - }elseif( $f == 1 ) { - //Выполнено - }elseif( $nogo == false && $f == 0 && isset($_GET['endq']) && $_GET['endq'] == $pl['id'] && $qe == $pl['var'] ) { - $f = 1; - mysql_query('INSERT INTO `sss_f` (`m`,`y`,`uid`,`time`) VALUES ( - "'.$pl['id'].'", - "'.season::$date['Y'].'", - "'.$u->info['id'].'", - "'.time().'" - )'); - }else{ - $html .= '
    '; - if( $qe == $pl['var'] ) { - $html .= ' '; - } - $html .= '   '.$qe.' / '.$pl['var'].''; - } - - if( $f == 1 ) { - $ends[$i] = true; - $html .= ' Задание выполнено.'; - }elseif( $nogo == true ) { - $html .= ' Требует выполнение предыдущего задания.'; - } - - $html .= '
    '; - $html .= '
    '; - // - $html .= ''; - $i++; - } - } - } - echo '
    ' . $html . '
    '; - } - ?> - -
    + + +
    + + Season::$date['d']) { + //Миссия еще закрыта + $html .= '
    ' . + '
    Дата открытия
    ' . $pl['dd'] . '.' . Season::$date['m'] . '.' . Season::$date['Y'] . '
    ' . + '
    '; + } else { + //Открытая миссия + $html .= '
    ' . + '
    Приступить!
    ' . + '
    '; + } + } + if ($html == '') { + $html = 'Нет миссий для текущего сезона'; + } + echo '
    ' . $html . '
    '; + } elseif ($rz == 2) { + //Открытая миссия + $html = ''; + Season::data($_GET['mis']); + if (!isset(Season::$m['id'])) { + $html = 'Миссия для текущего сезона не найдена'; + } else { + if (Season::$m['dd'] > Season::$date['d']) { + //Миссия еще закрыта + $html .= '
    ' . + '
    Дата открытия
    ' . Season::$m['dd'] . '.' . Season::$date['m'] . '.' . Season::$date['Y'] . '
    ' . + '
    '; + } else { + //Открытая миссия + $html .= '
    ' . + '
     Выполнено заданий:
    0 / ??
    ' . + '
    '; + //Задания в миссии + $sp = mysql_query('SELECT * FROM `sss_q` WHERE `m` = "' . Season::$m['id'] . '"'); + $ends = []; + $i = 0; + $lstms = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `sss_f` WHERE `uid` = "' . $u->info['id'] . '" ORDER BY `id` DESC LIMIT 1' + ) + ); + while ($pl = mysql_fetch_array($sp)) { + + $qe = 0; + $tss = strtotime('01-' . Season::$m['s'] . '-' . Season::$date['Y'] . ''); + if (isset($lstms['id'])) { + $tss = strtotime( + '' . date('d', $lstms['time']) . '-' . date('m', $lstms['time']) . '-' . date( + 'Y', $lstms['time'] + ) . '' + ); + } + // + if ($pl['type'] == 1) { + //Сбор ресурсов + $c1 = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(*) FROM `items_users` WHERE `time_create` > "' . $tss . '" AND `uid` = "' . $u->info['id'] . '" AND `delete` < 1001 AND `item_id` = "' . $pl['value'] . '" LIMIT 1' + ) + ); + $qe = $c1[0]; + } elseif ($pl['type'] == 2 || $pl['type'] == 3) { + $c1 = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(*) FROM `actions` WHERE `time` > "' . $tss . '" AND `uid` = "' . $u->info['id'] . '" AND `vars` LIKE "%win_bot_' . $pl['value'] . '" LIMIT 1' + ) + ); + $qe = $c1[0]; + } + // + if ($qe > $pl['var']) { + $qe = $pl['var']; + } + $f = 0; + // + $nogo = false; + if (!isset($ends[$i - 1]) && $i != 0) { + $nogo = true; + } + // + $plf = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `sss_f` WHERE `uid` = "' . $u->info['id'] . '" AND `m` = "' . $pl['id'] . '" AND `y` = "' . Season::$date['Y'] . '" LIMIT 1' + ) + ); + if (isset($plf['id'])) { + $f = 1; + } + // + $html .= '
    '; + $html .= '
    '; + + $html .= '
    ' . $pl['info'] . '
    '; + + if ($nogo == true) { + //Еще не готов выполнять + } elseif ($f == 1) { + //Выполнено + } elseif ($nogo == false && $f == 0 && isset($_GET['endq']) && $_GET['endq'] == $pl['id'] && $qe == $pl['var']) { + $f = 1; + mysql_query( + 'INSERT INTO `sss_f` (`m`,`y`,`uid`,`time`) VALUES ( + "' . $pl['id'] . '", + "' . Season::$date['Y'] . '", + "' . $u->info['id'] . '", + "' . time() . '" + )' + ); + } else { + $html .= '
    '; + if ($qe == $pl['var']) { + $html .= ' '; + } + $html .= '   ' . $qe . ' / ' . $pl['var'] . ''; + } + + if ($f == 1) { + $ends[$i] = true; + $html .= ' Задание выполнено.'; + } elseif ($nogo == true) { + $html .= ' Требует выполнение предыдущего задания.'; + } + + $html .= '
    '; + $html .= '
    '; + // + $html .= ''; + $i++; + } + } + } + echo '
    ' . $html . '
    '; + } + ?> + +
    diff --git a/settings.php b/settings.php index f3ea2c39..f7bf275c 100644 --- a/settings.php +++ b/settings.php @@ -1,271 +1,376 @@ - - + - -Бойцовский Клуб - Настройки - - - - - - - - - + body { + background-color: #000000; + margin: 0; + font-family: Tahoma, Arial, Helvetica, sans-serif; + font-size: 12pt; + color: #000000; + } + + .nicname { + color: #bfa178; + font-size: 9pt; + font-weight: bold; + } + + td.text { + background-position: right top; + background-repeat: no-repeat; + } + + .place { + color: #cc8e43; + font-size: 8pt; + font-weight: bold; + } + + .nomber { + color: #7c3e00; + font-size: 8pt; + font-weight: bold; + } + + .green { + color: #526700; + font-size: 8pt; + font-weight: bold; + } + + .about { + font-size: 9pt; + } + + .levels { + color: #bfa178; + font-family: Tahoma, Arial, Helvetica, sans-serif; + font-size: 7pt; + } + + TD.topbgl { + background-image: url(https://new-combats.com/new/register/topbgl.jpg); + background-position: right top + } + + .style1 { + color: #4b2500; + font-weight: bold; + font-size: 9pt; + } + + a.lnkstyle1, a.lnkstyle1:link, a.lnkstyle1:visited, a.lnkstyle1:hover, a.lnkstyle1:active { + color: #4b2500; + font-weight: bold; + font-size: 9pt; + } + + a.lnkstyle2 { + font-size: 9pt; + font-weight: bold; + color: #4b2500; + } + + a.lnkstyle2:link { + font-weight: bold; + color: #4b2500; + text-decoration: none + } + + a.lnkstyle2:visited { + font-weight: bold; + color: #4b2500; + text-decoration: none + } + + a.lnkstyle2:hover, a.lnkstyle2:active { + font-weight: bold; + color: #84643e; + text-decoration: none; + } + + input { + font-size: 12px; + } + + --> + + + -spamFiltr($_POST['name'])!='0' || $filter->spamFiltr($_POST['city'])!='0' || $filter->spamFiltr($_POST['city2'])!='0' || $filter->spamFiltr($_POST['homepage'])!='0' || $filter->spamFiltr($_POST['about'])!='0' || $filter->spamFiltr($_POST['hobby'])!='0') - { - if ($u->info['level']<9) - { - mysql_query('UPDATE `users` SET `info_delete` = "'.(time()+86400).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - } - $_POST['city'] = htmlspecialchars($_POST['city'],NULL,'cp1251'); - $_POST['city2'] = htmlspecialchars($_POST['city2'],NULL,'cp1251'); - $_POST['icq'] = htmlspecialchars($_POST['icq'],NULL,'cp1251'); - if(!isset($_POST['mat'])) { $_POST['mat'] == NULL; } - if(!isset($_POST['hide_icq'])){ $_POST['hide_icq'] = NULL; } - $_POST['skype'] = htmlspecialchars($_POST['skype'],NULL,'cp1251'); - if(!isset($_POST['hide_skype'])){ $_POST['hide_skype'] = NULL; }else{ $_POST['hide_skype'] = 1; } - $_POST['hide_icq'] = htmlspecialchars($_POST['hide_icq'],NULL,'cp1251'); - $_POST['homepage'] = htmlspecialchars($_POST['homepage'],NULL,'cp1251'); - $_POST['about'] = htmlspecialchars($_POST['about'],NULL,'cp1251'); - if( $u->info['admin'] == 0 ) { - $_POST['hobby'] = htmlspecialchars($_POST['hobby'],NULL,'cp1251'); - } - $_POST['ChatColor'] = htmlspecialchars($_POST['ChatColor'],NULL,'cp1251'); - - $_POST['hobby']= str_replace("\\n","
    ",$_POST['hobby']); - $_POST['hobby']= str_replace("\\r","",$_POST['hobby']); - $_POST['hobby']= str_replace("<BR>","
    ",$_POST['hobby']); - $simbolcount = strlen($_POST['hobby']); - if (isset($_POST['ChatColor']) && $u->info['admin']=='0' && !($_POST['ChatColor'] == "Black" || $_POST['ChatColor'] == "Blue" || $_POST['ChatColor'] == "Lilac" || $_POST['ChatColor'] == "Fuchsia" || $_POST['ChatColor'] == "Gray" || $_POST['ChatColor'] == "Green" || $_POST['ChatColor'] == "Maroon" || $_POST['ChatColor'] == "Navy" || $_POST['ChatColor'] == "Olive" || $_POST['ChatColor'] == "Purple" || $_POST['ChatColor'] == "Teal" || $_POST['ChatColor'] == "Orange" || $_POST['ChatColor'] == "Chocolate" || $_POST['ChatColor'] == "DarkKhaki" || $_POST['ChatColor'] == "SandyBrown")) { - echo "
    Возможно использовать цвета указанные только в меню анкеты !
    "; - $_POST['ChatColor'] = "Black"; - } - if(!$_POST['city']){$city=$_POST['city2'];} - elseif($_POST['city'] && $_POST['city2']){$city=$_POST['city2'];} - else{$city=$_POST['city'];} +spamFiltr($_POST['name']) != '0' || + $filter->spamFiltr($_POST['city']) != '0' || + $filter->spamFiltr($_POST['city2']) != '0' || + $filter->spamFiltr($_POST['homepage']) != '0' || + $filter->spamFiltr($_POST['about']) != '0' || + $filter->spamFiltr($_POST['hobby']) != '0' + ) && + $u->info['level'] < 9 + ) { + mysql_query( + 'UPDATE `users` SET `info_delete` = "' . (time( + ) + 86400) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + } + $_POST['city'] = htmlspecialchars($_POST['city'], null, 'cp1251'); + $_POST['city2'] = htmlspecialchars($_POST['city2'], null, 'cp1251'); + $_POST['icq'] = htmlspecialchars($_POST['icq'], null, 'cp1251'); + if (!isset($_POST['mat'])) { + $_POST['mat'] = null; + } + if (!isset($_POST['hide_icq'])) { + $_POST['hide_icq'] = null; + } + $_POST['skype'] = htmlspecialchars($_POST['skype'], null, 'cp1251'); + if (!isset($_POST['hide_skype'])) { + $_POST['hide_skype'] = null; + } else { + $_POST['hide_skype'] = 1; + } + $_POST['hide_icq'] = htmlspecialchars($_POST['hide_icq'], null, 'cp1251'); + $_POST['homepage'] = htmlspecialchars($_POST['homepage'], null, 'cp1251'); + $_POST['about'] = htmlspecialchars($_POST['about'], null, 'cp1251'); + if ($u->info['admin'] == 0) { + $_POST['hobby'] = htmlspecialchars($_POST['hobby'], null, 'cp1251'); + } + $_POST['ChatColor'] = htmlspecialchars($_POST['ChatColor'], null, 'cp1251'); + + $_POST['hobby'] = str_replace("\\n", "
    ", $_POST['hobby']); + $_POST['hobby'] = str_replace("\\r", "", $_POST['hobby']); + $_POST['hobby'] = str_replace("<BR>", "
    ", $_POST['hobby']); + $simbolcount = strlen($_POST['hobby']); + if (isset($_POST['ChatColor']) && $u->info['admin'] == '0' && !($_POST['ChatColor'] == "Black" || $_POST['ChatColor'] == "Blue" || $_POST['ChatColor'] == "Lilac" || $_POST['ChatColor'] == "Fuchsia" || $_POST['ChatColor'] == "Gray" || $_POST['ChatColor'] == "Green" || $_POST['ChatColor'] == "Maroon" || $_POST['ChatColor'] == "Navy" || $_POST['ChatColor'] == "Olive" || $_POST['ChatColor'] == "Purple" || $_POST['ChatColor'] == "Teal" || $_POST['ChatColor'] == "Orange" || $_POST['ChatColor'] == "Chocolate" || $_POST['ChatColor'] == "DarkKhaki" || $_POST['ChatColor'] == "SandyBrown")) { + echo "
    Возможно использовать цвета указанные только в меню анкеты !
    "; + $_POST['ChatColor'] = "Black"; + } + if (!$_POST['city']) { + $city = $_POST['city2']; + } elseif ($_POST['city'] && $_POST['city2']) { + $city = $_POST['city2']; + } else { + $city = $_POST['city']; + } } -if(isset($_POST['saveanketa'])) { -if( $u->info['level'] <= 1 ) { - $dt = explode('.',$_POST['0day']); - if(isset($dt[0],$dt[1],$dt[2])) - { - $erd = 0; - $dt[0] = round($dt[0]); - $dt[1] = round($dt[1]); - $dt[2] = round($dt[2]); - if($dt[0]<1 || $dt[0]>31) - { - $erd = 1; - } - if($dt[1]<1 || $dt[1]>12) - { - $erd = 2; - } - if($dt[2]<1920 || $dt[2]>2006) - { - $erd = 3; - } - if($erd==0) - { - $_POST['0day'] = $dt[0].'.'.$dt[1].'.'.$dt[2]; - $dateofbirth = "`bithday` = '".mysql_real_escape_string($_POST['0day'])."',"; - }else{ - //ошибка - - } - } - - $u->info['bithday'] = $_POST['0day']; -} -$st = $u->lookStats($u->info['stats']); -$maxsimbols = 2000+($st['os6']*200); - if($_POST['mat'] == 1 ) { - $_POST['mat'] = 1; - }else{ - $_POST['mat'] = 0; - } - if($simbolcount>$maxsimbols && $u->info['admin'] == 0) { - }else{ - $lastdes = $u->info['design']; - if($_POST['design'] == 1) { - $u->info['design'] = 1; - }else{ - $u->info['design'] = 0; - } - } - if($simbolcount>$maxsimbols && $u->info['admin'] == 0) { - echo '
    Максимальный размер поля "Увлечения / хобби" - '.$maxsimbols.' символов.
    '; - }elseif(mysql_query("UPDATE +if (isset($_POST['saveanketa'])) { + if ($u->info['level'] <= 1) { + $dt = explode('.', $_POST['0day']); + if (isset($dt[0], $dt[1], $dt[2])) { + $erd = 0; + $dt[0] = round($dt[0]); + $dt[1] = round($dt[1]); + $dt[2] = round($dt[2]); + if ($dt[0] < 1 || $dt[0] > 31) { + $erd = 1; + } + if ($dt[1] < 1 || $dt[1] > 12) { + $erd = 2; + } + if ($dt[2] < 1920 || $dt[2] > 2006) { + $erd = 3; + } + if ($erd == 0) { + $_POST['0day'] = $dt[0] . '.' . $dt[1] . '.' . $dt[2]; + $dateofbirth = "`bithday` = '" . mysql_real_escape_string($_POST['0day']) . "',"; + } + } + + $u->info['bithday'] = $_POST['0day']; + } + $st = $u->lookStats($u->info['stats']); + $maxsimbols = 2000 + ($st['os6'] * 200); + if ($_POST['mat'] == 1) { + $_POST['mat'] = 1; + } else { + $_POST['mat'] = 0; + } + if ($simbolcount <= $maxsimbols || $u->info['admin'] != 0) { + $lastdes = $u->info['design']; + if ($_POST['design'] == 1) { + $u->info['design'] = 1; + } else { + $u->info['design'] = 0; + } + } + if ($simbolcount > $maxsimbols && $u->info['admin'] == 0) { + echo '
    Максимальный размер поля "Увлечения / хобби" - ' . $maxsimbols . ' символов.
    '; + } elseif (mysql_query( + "UPDATE `users` SET - `design` = '".$u->info['design']."', - `name` = '".mysql_real_escape_string($_POST['name'])."', - `city_real` = '".mysql_real_escape_string($_POST['city2'])."', - `icq` = '".mysql_real_escape_string((int)$_POST['icq'])."', - `icq_hide` = '".mysql_real_escape_string($_POST['hide_icq'])."', - `skype` = '".mysql_real_escape_string($_POST['skype'])."', - `skype_hide` = '".mysql_real_escape_string($_POST['hide_skype'])."', - `homepage` = '".mysql_real_escape_string($_POST['homepage'])."', - ".$dateofbirth." - `deviz` = '".mysql_real_escape_string($_POST['about'])."', - `hobby` = '".mysql_real_escape_string($_POST['hobby'])."', - `chatColor` = '".mysql_real_escape_string($_POST['ChatColor'])."', - `mat` = '".mysql_real_escape_string((int)$_POST['mat'])."' + `design` = '" . $u->info['design'] . "', + `name` = '" . mysql_real_escape_string($_POST['name']) . "', + `city_real` = '" . mysql_real_escape_string($_POST['city2']) . "', + `icq` = '" . mysql_real_escape_string((int)$_POST['icq']) . "', + `icq_hide` = '" . mysql_real_escape_string($_POST['hide_icq']) . "', + `skype` = '" . mysql_real_escape_string($_POST['skype']) . "', + `skype_hide` = '" . mysql_real_escape_string($_POST['hide_skype']) . "', + `homepage` = '" . mysql_real_escape_string($_POST['homepage']) . "', + " . $dateofbirth . " + `deviz` = '" . mysql_real_escape_string($_POST['about']) . "', + `hobby` = '" . mysql_real_escape_string($_POST['hobby']) . "', + `chatColor` = '" . mysql_real_escape_string($_POST['ChatColor']) . "', + `mat` = '" . mysql_real_escape_string((int)$_POST['mat']) . "' WHERE - `id` = '".mysql_real_escape_string($u->info['id'])."' LIMIT 1;")) -{echo '
    Сохранено
    '; - if( $u->info['design'] != $lastdes ) { - echo ''; - } -$u->info['name'] = $_POST['name']; -$u->info['city_real'] = $city; -$u->info['icq'] = $_POST['icq']; -$u->info['icq_hide'] = $_POST['hide_icq']; -$u->info['skype'] = $_POST['skype']; -$u->info['skype_hide'] = $_POST['hide_skype']; -$u->info['homepage'] = $_POST['homepage']; -$u->info['deviz'] = $_POST['about']; -$u->info['hobby'] = $_POST['hobby']; -$u->info['chatColor'] = $_POST['ChatColor']; -$u->info['mat'] = $_POST['mat']; -} -else{echo 'что-то не так...';} + `id` = '" . mysql_real_escape_string($u->info['id']) . "' LIMIT 1;" + )) { + echo '
    Сохранено
    '; + if ($u->info['design'] != $lastdes) { + echo ''; + } + $u->info['name'] = $_POST['name']; + $u->info['city_real'] = $city; + $u->info['icq'] = $_POST['icq']; + $u->info['icq_hide'] = $_POST['hide_icq']; + $u->info['skype'] = $_POST['skype']; + $u->info['skype_hide'] = $_POST['hide_skype']; + $u->info['homepage'] = $_POST['homepage']; + $u->info['deviz'] = $_POST['about']; + $u->info['hobby'] = $_POST['hobby']; + $u->info['chatColor'] = $_POST['ChatColor']; + $u->info['mat'] = $_POST['mat']; + } else { + echo 'что-то не так...'; + } } +?> + +info['pass']) { + if ($_POST['pass_new'] == $_POST['pass_new2']) { + $u->info['pass'] = md5($_POST['pass_new']); + mysql_query( + 'UPDATE `users` SET `pass` = "' . $u->info['pass'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + // + setcookie('login', $u->info['login'], time() + 86400 * 365, '', $c['host']); + setcookie('pass', $u->info['pass'], time() + 86400 * 365, '', $c['host']); + // + echo '
    Новый пароль успешно записан!
    '; + } else { + echo '
    Новый пароль не сповпадает со вторым полем!
    '; + } + } else { + echo '
    Неверный текущий пароль, попробуйте снова!
    '; + } } ?> @@ -273,168 +378,284 @@ if(isset($_POST['pass_old'])) { - - - - - - - - - - - - - - - - - + + + + + + + + + + + + +
    - - - -
     
    -
    - - - - - - - - - - -
    - - - + +
    + + + + + + + + +
    + - + +
    +  
    +
    + + + + + + + + + + + + + +
    + + + + + + + +
    + + + - - - - -
    - - - - - - -
    + + + + + + -
    -
    -
    microLogin($u->info['id'],1)?>
    -
    -
    - Смена пароля - Старый пароль:

    - Новый пароль:

    - Новый пароль (еще раз):

    - -
    -
    +
    +
    microLogin($u->info['id'], 1) ?>
    +
    +
    + Смена пароля + + Старый пароль:

    + Новый пароль:

    + Новый пароль (еще раз):

    + +
    +
    -
    +
    -
    -
    - Анкета -
    - Ваше реальное имя:

    - Город:
    -
    - Цвет сообщений в чате:
    -
    + Город:
    +
    + Цвет сообщений в чате:
    + - -
    -
    - info['icq'] == 0 ) { - $u->info['icq'] = ''; - } - ?> - ICQ:

    - Skype:

    - Вариант дизайна:
    - - -
    -
    -
    - Увлечения / хобби (ограничение символов и 300 строк) -
    - -
    -
    -
    + } + ?> + + + +
    + info['icq'] == 0) { + $u->info['icq'] = ''; + } + ?> + ICQ:

    + Skype:

    + Вариант дизайна:
    + + +
    +
    +
    + Увлечения / хобби (ограничение + символов и 300 строк) +
    + + + +
    +
    +
    +

    -
    - - - -
     
      
      - - - - - -
      - -
    Бойцовский Клуб © 2013-2016 -

    -   -
    -
     

    +
    + + + + +
     
    +
      
      + + + + + + +
      + +
    Бойцовский Клуб © 2013-2016 +

    +   +
    +
     
    -
    - - - -
    - +
    + \ No newline at end of file diff --git a/shop_editor.php b/shop_editor.php index 52a6240e..e0c2acf2 100644 --- a/shop_editor.php +++ b/shop_editor.php @@ -1,10 +1,11 @@ -info['id']) || $u->info['admin'] < 1) { +if(!$u->info['admin']) { header('location: /index.php'); die(); } diff --git a/sms.php b/sms.php index 64f3a3bc..33df3dc9 100644 --- a/sms.php +++ b/sms.php @@ -1,17 +1,22 @@ - 0 AND `banned` = 0 ORDER BY `id` DESC'); - while( $pl = mysql_fetch_array($sp) ) { - $prc = mysql_fetch_array(mysql_query('SELECT SUM(`2price`) AS `a` , SUM(`1price`) AS `b` FROM `items_users` WHERE `uid` = "'.$pl['id'].'" AND `delete` < `time_create` LIMIT 1')); - if( $prc['a'] > 0 ) { - echo $u->microLogin($pl,2) . '   - - - - - - - - '.($prc['a']).' (вещи) + '.$pl['money2'].' ЕКР \ '.($prc['b']+$pl['money1']).' КР
    '; - echo '
    '; - } - } +if (isset($_GET['test'])) { + $sp = mysql_query('SELECT * FROM `users` WHERE `real` > 0 AND `banned` = 0 ORDER BY `id` DESC'); + while ($pl = mysql_fetch_array($sp)) { + $prc = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`2price`) AS `a` , SUM(`1price`) AS `b` FROM `items_users` WHERE `uid` = "' . $pl['id'] . '" AND `delete` < `time_create` LIMIT 1' + ) + ); + if ($prc['a'] > 0) { + echo $u->microLogin( + $pl, 2 + ) . '   - - - - - - - - ' . ($prc['a']) . ' (вещи) + ' . $pl['money2'] . ' ЕКР \ ' . ($prc['b'] + $pl['money1']) . ' КР
    '; + echo '
    '; + } + } } -?> \ No newline at end of file diff --git a/social.php b/social.php index f23332ac..7536d42e 100644 --- a/social.php +++ b/social.php @@ -5,7 +5,7 @@ die(); define('GAME',true); include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); -include('_incl_data/class/__user.php'); +$u = User::start(); // if(isset($u->info['id'])) { $mcf = mysql_fetch_array(mysql_query('SELECT * FROM `mini_actions` WHERE `uid` = "'.$u->info['id'].'" AND (`val` = "vkauth" OR `val` = "fbauth" OR `val` = "okauth") LIMIT 1')); diff --git a/spam.php b/spam.php index d6b0cbaa..f8770b66 100644 --- a/spam.php +++ b/spam.php @@ -1,124 +1,151 @@ 0 AND `id` > "'.mysql_real_escape_string($_GET['test_login']).'" LIMIT 1')); - $sp = mysql_query('SELECT `id`,`login`,`pass` FROM `users` WHERE `real` > 0 AND `id` IN ( SELECT `uid` FROM `logs_auth` WHERE `depass` != "" GROUP BY `uid` ) AND `id` > "'.mysql_real_escape_string($_GET['test_login']).'" ORDER BY `id` ASC LIMIT 1'); - while( $pl = mysql_fetch_array($sp) ) { - $test = false; - $cn = file_get_contents('https://old-combats.com/info/'.$pl['login'].''); - $cn = explode('',$cn); - $cn = explode('',$cn[1]); - $cn = $cn[0]; - echo '['.$cn.']'; - if( $cn != 'Произошла ошибка' ) { - $test = true; - } - if($test == true) { - $logs = mysql_fetch_array(mysql_query('SELECT `depass` FROM `logs_auth` WHERE `uid` = "'.$pl['id'].'" AND `depass` != ""')); - echo ''.$pl['login'].' - '.$pl['pass'].' - '.$pl['id'].' -> ('.$xx[0].') "'; - print_r($logs); - echo '"

    '; - }else{ - die('location: /spam.php?test_login='.$pl['id'].''); - } - } - die(); -}elseif(isset($_GET['test_login2'])) { - die(); - $xx = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `real` > 0 AND `id` > "'.mysql_real_escape_string($_GET['test_login2']).'" LIMIT 1')); - $sp = mysql_query('SELECT `id`,`login`,`pass` FROM `users` WHERE `real` > 0 AND `id` IN ( SELECT `uid` FROM `logs_auth` WHERE `depass` != "" GROUP BY `uid` ) AND `id` > "'.mysql_real_escape_string($_GET['test_login2']).'" ORDER BY `id` ASC LIMIT 1'); - while( $pl = mysql_fetch_array($sp) ) { - $test = false; - $cn = file_get_contents('https://mycombats.com/info/'.$pl['login'].''); - $cn = explode('',$cn); - $cn = explode('',$cn[1]); - $cn = $cn[0]; - echo '['.$cn.']'; - if( $cn != 'Произошла ошибка' ) { - $test = true; - } - if($test == true) { - $logs = mysql_fetch_array(mysql_query('SELECT `depass` FROM `logs_auth` WHERE `uid` = "'.$pl['id'].'" AND `depass` != ""')); - echo ''.$pl['login'].' - '.$pl['pass'].' - '.$pl['id'].' -> ('.$xx[0].') "'; - print_r($logs); - echo '"

    '; - }else{ - die('location: /spam.php?test_login2='.$pl['id'].''); - } - } - die(); +if (isset($_GET['test_login'])) { + die(); + $xx = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(*) FROM `users` WHERE `real` > 0 AND `id` > "' . mysql_real_escape_string( + $_GET['test_login'] + ) . '" LIMIT 1' + ) + ); + $sp = mysql_query( + 'SELECT `id`,`login`,`pass` FROM `users` WHERE `real` > 0 AND `id` IN ( SELECT `uid` FROM `logs_auth` WHERE `depass` != "" GROUP BY `uid` ) AND `id` > "' . mysql_real_escape_string( + $_GET['test_login'] + ) . '" ORDER BY `id` ASC LIMIT 1' + ); + while ($pl = mysql_fetch_array($sp)) { + $test = false; + $cn = file_get_contents('https://old-combats.com/info/' . $pl['login'] . ''); + $cn = explode('', $cn); + $cn = explode('', $cn[1]); + $cn = $cn[0]; + echo '[' . $cn . ']'; + if ($cn != 'Произошла ошибка') { + $test = true; + } + if ($test) { + $logs = mysql_fetch_array( + mysql_query('SELECT `depass` FROM `logs_auth` WHERE `uid` = "' . $pl['id'] . '" AND `depass` != ""') + ); + echo '' . $pl['login'] . ' - ' . $pl['pass'] . ' - ' . $pl['id'] . ' -> (' . $xx[0] . ') "'; + print_r($logs); + echo '"

    '; + } else { + die('location: /spam.php?test_login=' . $pl['id'] . ''); + } + } + die(); +} elseif (isset($_GET['test_login2'])) { + die(); + $xx = mysql_fetch_array( + mysql_query('SELECT COUNT(*) FROM `users` WHERE `real` > 0 AND `id` > ' . (int)$_GET['test_login2'])); + $sp = mysql_query( + 'SELECT `id`,`login`,`pass` FROM `users` WHERE `real` > 0 AND `id` IN ( SELECT `uid` FROM `logs_auth` WHERE `depass` != "" GROUP BY `uid` ) AND `id` > "' . mysql_real_escape_string( + $_GET['test_login2'] + ) . '" ORDER BY `id` LIMIT 1' + ); + while ($pl = mysql_fetch_array($sp)) { + $test = false; + $cn = file_get_contents('https://mycombats.com/info/' . $pl['login'] . ''); + $cn = explode('', $cn); + $cn = explode('', $cn[1]); + $cn = $cn[0]; + echo '[' . $cn . ']'; + if ($cn != 'Произошла ошибка') { + $test = true; + } + if ($test) { + $logs = mysql_fetch_array( + mysql_query('SELECT `depass` FROM `logs_auth` WHERE `uid` = "' . $pl['id'] . '" AND `depass` != ""') + ); + echo '' . $pl['login'] . ' - ' . $pl['pass'] . ' - ' . $pl['id'] . ' -> (' . $xx[0] . ') "'; + print_r($logs); + echo '"

    '; + } else { + die('location: /spam.php?test_login2=' . $pl['id'] . ''); + } + } + die(); } -if(isset($_GET['chat'])) { - $sp = mysql_query('SELECT * FROM `chat` WHERE `spam` > 0 ORDER BY `time` DESC'); - while($pl = mysql_fetch_array($sp) ) { - echo date('d.m.Y H:i',$pl['time']).' '.$pl['login'].': '.$pl['text'].'
    '; - } - die(); +if (isset($_GET['chat'])) { + $sp = mysql_query('SELECT * FROM `chat` WHERE `spam` > 0 ORDER BY `time` DESC'); + while ($pl = mysql_fetch_array($sp)) { + echo date('d.m.Y H:i', $pl['time']) . ' ' . $pl['login'] . ': ' . $pl['text'] . '
    '; + } + die(); } -if( $u->info['admin'] > 0 || $u->info['id'] == 618775 ) { -?> - - - -Редактирование фильтра от спама - - - - - - - - -Список запрещенных слов\ссылок:  

    -Слово "'.$spam[floor((int)$_GET['del'])].'" удалено.

    '; - unset($spam[floor((int)$_GET['del'])]); - $spam = implode('|',$spam); - mysql_query('UPDATE `spam_word` SET `data` = "'.mysql_real_escape_string($spam).'" WHERE `id` = "1" LIMIT 1'); - $spam = explode('|',$spam); -}elseif(isset($_POST['add'])){ - $_POST['add'] = htmlspecialchars($_POST['add'],NULL,'cp1251'); - echo '
    Слово "'.$_POST['add'].'" добавлено.

    '; - $spam = implode('|',$spam); - $spam .= '|'.$_POST['add'].''; - mysql_query('UPDATE `spam_word` SET `data` = "'.mysql_real_escape_string($spam).'" WHERE `id` = "1" LIMIT 1'); - $spam = explode('|',$spam); +if ($u->info['admin']) { + ?> + + + + Редактирование фильтра от спама + + + + + + + + + Список запрещенных слов\ссылок:  

    + Слово "' . $spam[floor( + (int)$_GET['del'] + )] . '" удалено.

    '; + unset($spam[floor((int)$_GET['del'])]); + $spam = implode('|', $spam); + mysql_query( + 'UPDATE `spam_word` SET `data` = "' . mysql_real_escape_string($spam) . '" WHERE `id` = "1" LIMIT 1' + ); + $spam = explode('|', $spam); + } elseif (isset($_POST['add'])) { + $_POST['add'] = htmlspecialchars($_POST['add'], null, 'cp1251'); + echo '
    Слово "' . $_POST['add'] . '" добавлено.

    '; + $spam = implode('|', $spam); + $spam .= '|' . $_POST['add'] . ''; + mysql_query( + 'UPDATE `spam_word` SET `data` = "' . mysql_real_escape_string($spam) . '" WHERE `id` = "1" LIMIT 1' + ); + $spam = explode('|', $spam); + } + // + $i = 0; + while ($i < count($spam)) { + echo '' . $spam[$i] . '
    '; + $i++; + } + ?> +
    + +
    + + +
    '; - $i++; -} -?> -
    - -
    - - - \ No newline at end of file diff --git a/telegraf.php b/telegraf.php index bf0a454f..adac2bf4 100644 --- a/telegraf.php +++ b/telegraf.php @@ -1,243 +1,290 @@ ',$v); - //$v = $chat->expworld($v,32); - $v = str_replace('\\','\\\\',$v); - $v = str_replace('"','[s1;]',$v); - $v = str_replace("'",'[s2;]',$v); - $v = str_replace('<','[s3;]',$v); - $v = str_replace('>','[s4;]',$v); - $v = str_replace(' ',' ',$v); - $v = htmlspecialchars($v,NULL,'cp1251'); - return $v; - } - - if(!isset($u->info['id']) || $u->info['banned']>0) - { - die('-1'); - }elseif($u->info['ip']!=$_SERVER['HTTP_X_REAL_IP']) - { - //die('-4'); - } - - $r = round((int)$_POST['r']); - if($r != 1 && $r != 2 && $r != 3) { - $r = 1; - } - $html = ''; - $js = ''; - - if(isset($_POST['see_msg'])) { - $msg = mysql_fetch_array(mysql_query('SELECT * FROM `telegram` WHERE `id` = "'.mysql_real_escape_string($_POST['see_msg']).'" AND (`uid` = "'.$u->info['id'].'" OR `from` = "'.$u->info['id'].'") LIMIT 1')); - if(!isset($msg['id'])) { - $html = '







    Сообщение не найдено.
    '; - }elseif($msg['uid'] == $u->info['id'] && ($msg['delete'] == 2 || $msg['delete'] == 3)) { - $html = '







    Сообщение было удалено.
    '; - }elseif($msg['uid'] == $u->info['id'] && ($msg['delete'] == 2 || $msg['delete'] == 3)) { - $html = '







    Сообщение было удалено.
    '; - }else{ - $to = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`banned` FROM `users` WHERE `id` = "'.$msg['uid'].'" LIMIT 1')); - $from = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`banned` FROM `users` WHERE `id` = "'.$msg['from'].'" LIMIT 1')); - if($msg['read'] == 0 || $msg['read'] == 1) { - if($to['id'] == $u->info['id']) { - mysql_query('UPDATE `telegram` SET `read` = `read` + 2 WHERE `id` = "'.$msg['id'].'" LIMIT 1'); - } - } - $html = '
    '; - $html .= '
    От:    '.$from['login'].'Закрыть
    '; - $html .= '
    Кому: '.$to['login'].''.date('d.m.Y H:i',$msg['time']).'
    '; - $html .= '
    Тема: '.$msg['tema'].'
    '; - $html .= '
    Сообщение:
    '.$msg['text'].'
    '; - $html .= ''; - $html .= '
    '; - //$html .= '
    '.$error.'
    '; - $html .= '
    '; - } - }elseif($r == 3) { - if($u->info['noreal'] == 1) { - $html = '







    Отправлять сообщения по телеграфу возможно только с основного персонажа
    '; - }elseif($u->info['level'] < 4) { - $html = '







    Отправлять сообщения по телеграфу возможно с 4-го уровня.
    '; - }elseif($u->info['molch1'] > time()){ - $html = '







    Персонажи с молчанкой не могут пользоваться телеграфом.
    '; - }else{ - if(isset($_POST['to'])) { - $_POST['to'] = go_text(iconv('UTF-8', 'windows-1251', $_POST['to'])); - $_POST['text'] = go_text(iconv('UTF-8', 'windows-1251', $_POST['text'])); - $_POST['tema'] = go_text(iconv('UTF-8', 'windows-1251', $_POST['tema'])); - - if(test_line($_POST['to']) == false) { - $error = 'Пустое поле "Кому".'; - }elseif(test_line($_POST['text']) == false) { - $error = 'Пустое поле "Сообщение".'; - }elseif(test_line($_POST['tema']) == false) { - $error = 'Пустое поле "Тема".'; - }else{ - $to = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`banned` FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['to']).'" LIMIT 1')); - if(!isset($to['id'])) { - $error = 'Получатель не найден в базе.'; - }elseif($to['banned'] > 0) { - $error = 'Получатель был заблокирован.'; - }elseif($to['id'] == $u->info['id']) { - $error = 'Нельзя отправлять самому себе.'; - }else{ - $_POST['text'] = str_replace("\n",'
    ',$_POST['text']); - $_POST['text'] = str_replace("\r",'
    ',$_POST['text']); - mysql_query('INSERT INTO `telegram` (`uid`,`from`,`tema`,`text`,`time`,`ip`) VALUES ("'.$to['id'].'","'.$u->info['id'].'","'.mysql_real_escape_string($_POST['tema']).'","'.mysql_real_escape_string($_POST['text']).'","'.time().'","'.mysql_real_escape_string($u->info['ip']).'")'); - unset($_POST['to'],$_POST['text'],$_POST['tema']); - $error = 'Сообщение доставлено "'.$to['login'].'".'; - } - } - } - if(isset($_POST['re']) && $_POST['re'] > 0 && !isset($_POST['to'])) { - $msg = mysql_fetch_array(mysql_query('SELECT * FROM `telegram` WHERE `id` = "'.mysql_real_escape_string($_POST['re']).'" AND (`uid` = "'.$u->info['id'].'" OR `from` = "'.$u->info['id'].'") LIMIT 1')); - if(isset($msg['id'])) { - $to = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`banned` FROM `users` WHERE `id` = "'.$msg['uid'].'" LIMIT 1')); - $from = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`banned` FROM `users` WHERE `id` = "'.$msg['from'].'" LIMIT 1')); - if($msg['from'] == $u->info['id']) { - $_POST['to'] = $to['login']; - }elseif($msg['uid'] == $u->info['id']) { - $_POST['to'] = $from['login']; - }else{ - unset($msg); - } - $_POST['tema'] = 'Re:'.str_replace('Re:','',$msg['tema']); - } - } - $html = '
    '; - $html .= '
    От:    '.$u->info['login'].'
    '; - $html .= '
    Кому:
    '; - $html .= '
    Тема:
    '; - $html .= '
    Сообщение:
    '; - $html .= '
    '.$error.'
    '; - $html .= '
    '; - } - }elseif($r == 1 || $r == 2) { - if($r == 1) { - mysql_query('UPDATE `telegram` SET `open` = "1" WHERE `uid` = "'.$u->info['id'].'" AND `open` = "0" LIMIT 100'); - } - $pg = round((int)$_POST['p']); - if($pg < 1) { - $pg = 1; - } - $pgssee = ceil(($pg-1)*9); - if($r == 1) { - if(isset($_POST['del_msg'])) { - mysql_query('UPDATE `telegram` SET `delete` = `delete` + 2 WHERE `uid` = "'.$u->info['id'].'" AND (`delete` = 0 OR `delete` = 1) AND `id` = "'.mysql_real_escape_string($_POST['del_msg']).'" LIMIT 1'); - } - $sp = mysql_query('SELECT * FROM `telegram` WHERE `uid` = "'.$u->info['id'].'" AND (`delete` = 0 OR `delete` = 1) ORDER BY `id` DESC LIMIT '.mysql_real_escape_string($pgssee).',10'); - }elseif($r == 2) { - if(isset($_POST['del_msg'])) { - mysql_query('UPDATE `telegram` SET `delete` = `delete` + 1 WHERE `from` = "'.$u->info['id'].'" AND (`delete` = 0 OR `delete` = 2) AND `id` = "'.mysql_real_escape_string($_POST['del_msg']).'" LIMIT 1'); - } - $sp = mysql_query('SELECT * FROM `telegram` WHERE `from` = "'.$u->info['id'].'" AND (`delete` = 0 OR `delete` = 2) ORDER BY `id` DESC LIMIT '.mysql_real_escape_string($pgssee).',10'); - } - $msgs = 0; - while($pl = mysql_fetch_array($sp)) { - if($msgs < 9) { - if($r == 1) { - $from = mysql_fetch_array(mysql_query('SELECT `id`,`login` FROM `users` WHERE `id` = "'.$pl['from'].'" LIMIT 1')); - } - if($r == 2) { - $from = mysql_fetch_array(mysql_query('SELECT `id`,`login` FROM `users` WHERE `id` = "'.$pl['uid'].'" LIMIT 1')); - } - if(!isset($from['id'])) { - $from = ''.$pl['from'].''; - }else{ - $from = ''.$from['login'].''; - } - //if($r == 1) { - if($pl['read'] == 0 || $pl['read'] == 1) { - $pl['read'] = 0; - }else{ - $pl['read'] = 1; - } - //} - //if($r == 2) { - //if($pl['read'] == 0 || $pl['read'] == 2) { - // $pl['read'] = 0; - //}else{ - // $pl['read'] = 1; - //} - //} - - if($r == 1) { - $html .= ' -
    - '.date('d.m.y',$pl['time']).' - От: '.$from.' - Тема: '.$pl['tema'].' - +header('Content-Type: text/html; charset=windows-1251'); + +const GAME = true; +include('_incl_data/__config.php'); +include('_incl_data/class/__db_connect.php'); +$u = User::start(); +function test_line($v) +{ + $r = true; + $v = str_replace(' ', '', $v); + $v = str_replace(' ', '', $v); + if ($v == '') { + $r = false; + } + return $r; +} + +function go_text($v) +{ + $v = str_replace('\x3C', '<', $v); + $v = str_replace('\x3', '>', $v); + $v = str_replace('\\', '\\\\', $v); + $v = str_replace('"', '[s1;]', $v); + $v = str_replace("'", '[s2;]', $v); + $v = str_replace('<', '[s3;]', $v); + $v = str_replace('>', '[s4;]', $v); + $v = str_replace(' ', ' ', $v); + $v = htmlspecialchars($v, null, 'cp1251'); + return $v; +} + +if (!isset($u->info['id']) || $u->info['banned'] > 0) { + die('-1'); +} +$r = round((int)$_POST['r']); +if ($r != 1 && $r != 2 && $r != 3) { + $r = 1; +} +$html = ''; +$js = ''; + +if (isset($_POST['see_msg'])) { + $msg = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `telegram` WHERE `id` = "' . mysql_real_escape_string( + $_POST['see_msg'] + ) . '" AND (`uid` = "' . $u->info['id'] . '" OR `from` = "' . $u->info['id'] . '") LIMIT 1' + ) + ); + if (!isset($msg['id'])) { + $html = '







    Сообщение не найдено.
    '; + } elseif ($msg['uid'] == $u->info['id'] && ($msg['delete'] == 2 || $msg['delete'] == 3)) { + $html = '







    Сообщение было удалено.
    '; + } else { + $to = mysql_fetch_array( + mysql_query('SELECT `id`,`login`,`banned` FROM `users` WHERE `id` = "' . $msg['uid'] . '" LIMIT 1') + ); + $from = mysql_fetch_array( + mysql_query('SELECT `id`,`login`,`banned` FROM `users` WHERE `id` = "' . $msg['from'] . '" LIMIT 1') + ); + if (($msg['read'] == 0 || $msg['read'] == 1) && $to['id'] == $u->info['id']) { + mysql_query('UPDATE `telegram` SET `read` = `read` + 2 WHERE `id` = "' . $msg['id'] . '" LIMIT 1'); + } + $html = '
    '; + $html .= '
    От:    ' . $from['login'] . 'Закрыть
    '; + $html .= '
    Кому: ' . $to['login'] . '' . date( + 'd.m.Y H:i', $msg['time'] + ) . '
    '; + $html .= '
    Тема: ' . $msg['tema'] . '
    '; + $html .= '
    Сообщение:
    ' . $msg['text'] . '
    '; + $html .= ''; + $html .= '
    '; + $html .= '
    '; + } +} elseif ($r == 3) { + if ($u->info['noreal'] == 1) { + $html = '







    Отправлять сообщения по телеграфу возможно только с основного персонажа
    '; + } elseif ($u->info['level'] < 4) { + $html = '







    Отправлять сообщения по телеграфу возможно с 4-го уровня.
    '; + } elseif ($u->info['molch1'] > time()) { + $html = '







    Персонажи с молчанкой не могут пользоваться телеграфом.
    '; + } else { + if (isset($_POST['to'])) { + $_POST['to'] = go_text(iconv('UTF-8', 'windows-1251', $_POST['to'])); + $_POST['text'] = go_text(iconv('UTF-8', 'windows-1251', $_POST['text'])); + $_POST['tema'] = go_text(iconv('UTF-8', 'windows-1251', $_POST['tema'])); + + if (test_line($_POST['to']) == false) { + $error = 'Пустое поле "Кому".'; + } elseif (test_line($_POST['text']) == false) { + $error = 'Пустое поле "Сообщение".'; + } elseif (test_line($_POST['tema']) == false) { + $error = 'Пустое поле "Тема".'; + } else { + $to = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`login`,`banned` FROM `users` WHERE `login` = "' . mysql_real_escape_string( + $_POST['to'] + ) . '" LIMIT 1' + ) + ); + if (!isset($to['id'])) { + $error = 'Получатель не найден в базе.'; + } elseif ($to['banned'] > 0) { + $error = 'Получатель был заблокирован.'; + } elseif ($to['id'] == $u->info['id']) { + $error = 'Нельзя отправлять самому себе.'; + } else { + $_POST['text'] = str_replace("\n", '
    ', $_POST['text']); + $_POST['text'] = str_replace("\r", '
    ', $_POST['text']); + mysql_query( + 'INSERT INTO `telegram` (`uid`,`from`,`tema`,`text`,`time`,`ip`) VALUES ("' . $to['id'] . '","' . $u->info['id'] . '","' . mysql_real_escape_string( + $_POST['tema'] + ) . '","' . mysql_real_escape_string($_POST['text']) . '","' . time( + ) . '","' . mysql_real_escape_string($u->info['ip']) . '")' + ); + unset($_POST['to'], $_POST['text'], $_POST['tema']); + $error = 'Сообщение доставлено "' . $to['login'] . '".'; + } + } + } + if (isset($_POST['re']) && $_POST['re'] > 0 && !isset($_POST['to'])) { + $msg = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `telegram` WHERE `id` = "' . mysql_real_escape_string( + $_POST['re'] + ) . '" AND (`uid` = "' . $u->info['id'] . '" OR `from` = "' . $u->info['id'] . '") LIMIT 1' + ) + ); + if (isset($msg['id'])) { + $to = mysql_fetch_array( + mysql_query('SELECT `id`,`login`,`banned` FROM `users` WHERE `id` = "' . $msg['uid'] . '" LIMIT 1') + ); + $from = mysql_fetch_array( + mysql_query('SELECT `id`,`login`,`banned` FROM `users` WHERE `id` = "' . $msg['from'] . '" LIMIT 1') + ); + if ($msg['from'] == $u->info['id']) { + $_POST['to'] = $to['login']; + } elseif ($msg['uid'] == $u->info['id']) { + $_POST['to'] = $from['login']; + } else { + unset($msg); + } + $_POST['tema'] = 'Re:' . str_replace('Re:', '', $msg['tema']); + } + } + $html = '
    '; + $html .= '
    От:    ' . $u->info['login'] . '
    '; + $html .= '
    Кому:
    '; + $html .= '
    Тема:
    '; + $html .= '
    Сообщение:
    '; + $html .= '
    ' . $error . '
    '; + $html .= '
    '; + } +} elseif ($r == 1 || $r == 2) { + if ($r == 1) { + mysql_query( + 'UPDATE `telegram` SET `open` = "1" WHERE `uid` = "' . $u->info['id'] . '" AND `open` = "0" LIMIT 100' + ); + } + $pg = round((int)$_POST['p']); + if ($pg < 1) { + $pg = 1; + } + $pgssee = ceil(($pg - 1) * 9); + if ($r == 1) { + if (isset($_POST['del_msg'])) { + mysql_query( + 'UPDATE `telegram` SET `delete` = `delete` + 2 WHERE `uid` = "' . $u->info['id'] . '" AND (`delete` = 0 OR `delete` = 1) AND `id` = "' . mysql_real_escape_string( + $_POST['del_msg'] + ) . '" LIMIT 1' + ); + } + $sp = mysql_query( + 'SELECT * FROM `telegram` WHERE `uid` = "' . $u->info['id'] . '" AND (`delete` = 0 OR `delete` = 1) ORDER BY `id` DESC LIMIT ' . mysql_real_escape_string( + $pgssee + ) . ',10' + ); + } elseif ($r == 2) { + if (isset($_POST['del_msg'])) { + mysql_query( + 'UPDATE `telegram` SET `delete` = `delete` + 1 WHERE `from` = "' . $u->info['id'] . '" AND (`delete` = 0 OR `delete` = 2) AND `id` = "' . mysql_real_escape_string( + $_POST['del_msg'] + ) . '" LIMIT 1' + ); + } + $sp = mysql_query( + 'SELECT * FROM `telegram` WHERE `from` = "' . $u->info['id'] . '" AND (`delete` = 0 OR `delete` = 2) ORDER BY `id` DESC LIMIT ' . mysql_real_escape_string( + $pgssee + ) . ',10' + ); + } + $msgs = 0; + while ($pl = mysql_fetch_array($sp)) { + if ($msgs < 9) { + if ($r == 1) { + $from = mysql_fetch_array( + mysql_query('SELECT `id`,`login` FROM `users` WHERE `id` = "' . $pl['from'] . '" LIMIT 1') + ); + } + if ($r == 2) { + $from = mysql_fetch_array( + mysql_query('SELECT `id`,`login` FROM `users` WHERE `id` = "' . $pl['uid'] . '" LIMIT 1') + ); + } + if (!isset($from['id'])) { + $from = '' . $pl['from'] . ''; + } else { + $from = '' . $from['login'] . ''; + } + //if($r == 1) { + if ($pl['read'] == 0 || $pl['read'] == 1) { + $pl['read'] = 0; + } else { + $pl['read'] = 1; + } + + + if ($r == 1) { + $html .= ' +
    + ' . date('d.m.y', $pl['time']) . ' + От: ' . $from . ' + Тема: ' . $pl['tema'] . ' +
    '; - } - if($r == 2) { - $html .= ' -
    - '.date('d.m.y',$pl['time']).' - Кому: '.$from.' - Тема: '.$pl['tema'].' - + } + if ($r == 2) { + $html .= ' +
    + ' . date('d.m.y', $pl['time']) . ' + Кому: ' . $from . ' + Тема: ' . $pl['tema'] . ' +
    '; - } - } - $msgs++; - } - - if($msgs > 9 || $pg > 1) { - if($html != '') { - $html .= '
    '; - if($r == 1) { - $pgs = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `telegram` WHERE `uid` = "'.$u->info['id'].'" AND (`delete` = 0 OR `delete` = 1)')); - }else if($r == 2) { - $pgs = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `telegram` WHERE `from` = "'.$u->info['id'].'" AND (`delete` = 0 OR `delete` = 2)')); - } - $pgs = $pgs[0]; - $pga = ceil($pgs/9); - $i = 1; - while($i <= $pga) { - if($i == $pg) { - $html .= ' '.$i.''; - }else{ - $html .= ' '.$i.''; - } - $i++; - } - $html .= '
    '; - }else{ - $js .= 'top.tgf_rz('.$r.','.($pg-1).');'; - } - } - } - - $js .= 'top.tgf_loading(2)'; - if($js != '') { - $js = ''; - } - if($html == '') { - if($r == 1) { - $html = '







    У Вас нет сообщений от других пользователей
    '; - }elseif($r == 2) { - $html = '







    У Вас нет сообщений отправленных другим пользователям
    '; - } - } - - echo $html.$js; -?> \ No newline at end of file + } + } + $msgs++; + } + + if ($msgs > 9 || $pg > 1) { + if ($html != '') { + $html .= '
    '; + if ($r == 1) { + $pgs = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(`id`) FROM `telegram` WHERE `uid` = "' . $u->info['id'] . '" AND (`delete` = 0 OR `delete` = 1)' + ) + ); + } else { + if ($r == 2) { + $pgs = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(`id`) FROM `telegram` WHERE `from` = "' . $u->info['id'] . '" AND (`delete` = 0 OR `delete` = 2)' + ) + ); + } + } + $pgs = $pgs[0]; + $pga = ceil($pgs / 9); + $i = 1; + while ($i <= $pga) { + if ($i == $pg) { + $html .= ' ' . $i . ''; + } else { + $html .= ' ' . $i . ''; + } + $i++; + } + $html .= '
    '; + } else { + $js .= 'top.tgf_rz(' . $r . ',' . ($pg - 1) . ');'; + } + } +} + +$js .= 'top.tgf_loading(2)'; +if ($js != '') { + $js = ''; +} +if ($html == '') { + if ($r == 1) { + $html = '







    У Вас нет сообщений от других пользователей
    '; + } elseif ($r == 2) { + $html = '







    У Вас нет сообщений отправленных другим пользователям
    '; + } +} + +echo $html . $js; diff --git a/testing.php b/testing.php index b9f6043b..efa37206 100644 --- a/testing.php +++ b/testing.php @@ -1,253 +1,354 @@ -info['id']) || $u->info['admin'] < 1 ) { - header('location: https://new-combats.com/'); - die(); +if (!$u->info['admin']) { + header('location: https://new-combats.com/'); + die(); } $i = 0; -while( $i < 100 ) { - if(!isset($c['battle_cfg'][$i])) { - $c['battle_cfg'][$i] = 0; - } - $i++; +while ($i < 100) { + if (!isset($c['battle_cfg'][$i])) { + $c['battle_cfg'][$i] = 0; + } + $i++; } -if($u->info['admin'] > 0) { ?> - -Тестирование ботов - - - - - - - - - - - - + + Тестирование ботов + + + + + + + + + + + + - +

    Создать тестовый бой (Записать icq персу и скрыть: 17768719)



    -
    - + addNewbot(0,NULL,$user1,false,false); - $bot2 = $u->addNewbot(0,NULL,$user2,false,false); - mysql_query('UPDATE `users` SET `battle` = "'.$logid.'" WHERE `id` = "'.$bot1.'" LIMIT 1'); - mysql_query('UPDATE `users` SET `battle` = "'.$logid.'" WHERE `id` = "'.$bot2.'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `hpNow` = 100000000 , `bot` = 2 , `team` = "1" WHERE `id` = "'.$bot1.'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `hpNow` = 100000000 , `bot` = 2 , `team` = "2" WHERE `id` = "'.$bot2.'" LIMIT 1'); - // - mysql_query('INSERT INTO `battle_logs` ( + if (isset($_POST['botadminatack2'])) { + $error = ''; + $user1 = mysql_fetch_array( + mysql_query( + 'SELECT `a`.*,`b`.* FROM `users` AS `a` LEFT JOIN `stats` AS `b` ON `a`.`id` = `b`.`id` WHERE `a`.`id` = "' . mysql_real_escape_string( + $_POST['botadminatack1'] + ) . '" LIMIT 1' + ) + ); + $user2 = mysql_fetch_array( + mysql_query( + 'SELECT `a`.*,`b`.* FROM `users` AS `a` LEFT JOIN `stats` AS `b` ON `a`.`id` = `b`.`id` WHERE `a`.`id` = "' . mysql_real_escape_string( + $_POST['botadminatack2'] + ) . '" LIMIT 1' + ) + ); + if (isset($user1['id'], $user2['id'])) { + $user1['loclon'] = 1; + $user2['loclon'] = 1; + $user1['loclon555'] = 1; + $user2['loclon555'] = 1; + // + mysql_query( + 'INSERT INTO `battle` (`start1` , `city` , `time_start` , `timeout` , `type` ) VALUES ( + "' . time() . '","capitalcity" , "' . time() . '" , "60" , "329" + )' + ); + $logid = mysql_insert_id(); + // + $user1['login'] = $user1['login'] . ' (Бот для боя ' . $logid . ')'; + $user2['login'] = $user2['login'] . ' (Бот для боя ' . $logid . ')'; + // + $bot1 = $u->addNewbot(0, null, $user1, false, false); + $bot2 = $u->addNewbot(0, null, $user2, false, false); + mysql_query('UPDATE `users` SET `battle` = "' . $logid . '" WHERE `id` = "' . $bot1 . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `battle` = "' . $logid . '" WHERE `id` = "' . $bot2 . '" LIMIT 1'); + mysql_query( + 'UPDATE `stats` SET `hpNow` = 100000000 , `bot` = 2 , `team` = "1" WHERE `id` = "' . $bot1 . '" LIMIT 1' + ); + mysql_query( + 'UPDATE `stats` SET `hpNow` = 100000000 , `bot` = 2 , `team` = "2" WHERE `id` = "' . $bot2 . '" LIMIT 1' + ); + // + mysql_query( + 'INSERT INTO `battle_logs` ( `time`,`battle`,`id_hod`,`type`,`text` ) VALUES ( - "'.time().'","'.$logid.'","1","1","Часы показывали '.date('d.m.Y H:i:s').', когда '.$user1['login'].' и '.$user2['login'].' бросили вызов друг другу." - )'); - // - //Эффекты - $i = 0; - while( $i < 1000 ) { - // - $efs = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "'.$i.'" LIMIT 1')); - if( $_POST['eu1_'.$efs['id2']] == 1 ) { - mysql_query('INSERT INTO `eff_users` + "' . time() . '","' . $logid . '","1","1","Часы показывали ' . date( + 'd.m.Y H:i:s' + ) . ', когда ' . $user1['login'] . ' и ' . $user2['login'] . ' бросили вызов друг другу." + )' + ); + // + //Эффекты + $i = 0; + while ($i < 1000) { + // + $efs = mysql_fetch_array( + mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $i . '" LIMIT 1') + ); + if ($_POST['eu1_' . $efs['id2']] == 1) { + mysql_query( + 'INSERT INTO `eff_users` ( `id_eff` , `uid` , `name` , `data` , `timeUse` ) VALUES ( - "'.$efs['id2'].'" , "'.$bot1.'" , "'.$efs['mname'].'" , "'.$efs['mdata'].'" , "'.time().'" - )'); - } - if( $_POST['eu2_'.$efs['id2']] == 1 ) { - mysql_query('INSERT INTO `eff_users` + "' . $efs['id2'] . '" , "' . $bot1 . '" , "' . $efs['mname'] . '" , "' . $efs['mdata'] . '" , "' . time( + ) . '" + )' + ); + } + if ($_POST['eu2_' . $efs['id2']] == 1) { + mysql_query( + 'INSERT INTO `eff_users` ( `id_eff` , `uid` , `name` , `data` , `timeUse` ) VALUES ( - "'.$efs['id2'].'" , "'.$bot2.'" , "'.$efs['mname'].'" , "'.$efs['mdata'].'" , "'.time().'" - )'); - } - // - $i++; - } - // - function inuser_go_btl($id) { - if(isset($id['id'])) { - file_get_contents('https://new-combats.com/jx/battle/refresh.php?uid='.$id['id'].'&cron_core='.md5($id['id'].'_brfCOreW@!_'.$id['pass']).'&pass='.$id['pass']); - } - } - $sp = mysql_query('SELECT `id`,`time_start` FROM `battle` WHERE `team_win` = "-1" AND `time_over` = "0" AND `type` = 329 LIMIT 100'); - while($pl = mysql_fetch_array($sp)) { - $user1 = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `battle` = "'.$pl['id'].'" LIMIT 1')); - inuser_go_btl($user1); - } - // - $error = 'Бой между '.$user1['login'].' ['.$user1['level'].'] и '.$user2['login'].' ['.$user2['level'].'] начался! Лог боя'; - }else{ - $error = 'Один из персонажей не найден в базе.'; - } - - echo '
    '.$error.'
    '; -} + "' . $efs['id2'] . '" , "' . $bot2 . '" , "' . $efs['mname'] . '" , "' . $efs['mdata'] . '" , "' . time( + ) . '" + )' + ); + } + // + $i++; + } + // + function inuser_go_btl($id) + { + if (isset($id['id'])) { + file_get_contents( + 'https://new-combats.com/jx/battle/refresh.php?uid=' . $id['id'] . '&cron_core=' . md5( + $id['id'] . '_brfCOreW@!_' . $id['pass'] + ) . '&pass=' . $id['pass'] + ); + } + } -// -$ef1 = ''; -$ef2 = ''; -$sp = mysql_query('SELECT * FROM `eff_main` WHERE `mdata` != "" AND `actionTime` > 0 ORDER BY `mname` ASC'); -$i = 0; -while( $pl = mysql_fetch_array($sp) ) { - $i++; - // - //Действие эффекта - $ei = ''; - $tr = ''; $t = $u->items['add']; - $x = 0; $ed = $u->lookStats($pl['mdata']); - while($xis[$n])) { - $z = ''; - if($ed['add_'.$n]>0) { - $z = '+'; - } - $tr .= '
    '.$u->is[$n].': '.$z.''.$ed['add_'.$n]; - } - $x++; - } - if($tr!='') { - $ei .= $tr; - } - if($e['info']!='') { - $ei .= '
    Информация:
    '.$e['info']; - } - // - $ef = ''; - $ef1 .= ''.$ef.''; - $ef2 .= ''.$ef.''; -} -// -$dv = ''; -$da = ''; -$dv .= ''; -$da = ''; -?> - - - - - - - - - - - - - - - - -
      -

    - -  

    -

     

      против    -

    - -  

    -

     

     эффекты
     
     

     
    -
    - + $sp = mysql_query( + 'SELECT `id`,`time_start` FROM `battle` WHERE `team_win` = "-1" AND `time_over` = "0" AND `type` = 329 LIMIT 100' + ); + while ($pl = mysql_fetch_array($sp)) { + $user1 = mysql_fetch_array( + mysql_query('SELECT * FROM `users` WHERE `battle` = "' . $pl['id'] . '" LIMIT 1') + ); + inuser_go_btl($user1); + } + // + $error = 'Бой между ' . $user1['login'] . ' [' . $user1['level'] . '] и ' . $user2['login'] . ' [' . $user2['level'] . '] начался! Лог боя'; + } else { + $error = 'Один из персонажей не найден в базе.'; + } + + echo '
    ' . $error . '
    '; + } + + // + $ef1 = ''; + $ef2 = ''; + $sp = mysql_query('SELECT * FROM `eff_main` WHERE `mdata` != "" AND `actionTime` > 0 ORDER BY `mname` ASC'); + $i = 0; + while ($pl = mysql_fetch_array($sp)) { + $i++; + // + //Действие эффекта + $ei = ''; + $tr = ''; + $t = $u->items['add']; + $x = 0; + $ed = $u->lookStats($pl['mdata']); + while ($x < count($t)) { + $n = $t[$x]; + if (isset($ed['add_' . $n], $u->is[$n])) { + $z = ''; + if ($ed['add_' . $n] > 0) { + $z = '+'; + } + $tr .= '
    ' . $u->is[$n] . ': ' . $z . '' . $ed['add_' . $n]; + } + $x++; + } + if ($tr != '') { + $ei .= $tr; + } + if ($e['info'] != '') { + $ei .= '
    Информация:
    ' . $e['info']; + } + // + $ef = ''; + $ef1 .= '' . $ef . ''; + $ef2 .= '' . $ef . ''; + } + // + $dv = ''; + $da = ''; + $dv .= ''; + $da = ''; + ?> + + + + + + + + + + + + + + + + +
      +

    + +  

    +

     

      против    +

    + +  

    +

     

     эффекты
     
     

     
    +
    +
    - \ No newline at end of file diff --git a/towerlog.php b/towerlog.php index 29a66848..b6a05dba 100644 --- a/towerlog.php +++ b/towerlog.php @@ -1,67 +1,129 @@ - +$r = ''; +$p = ''; +$b = '
    '; -if( !isset($_GET['towerid'])) { - $_GET['towerid'] = 1; +if (!isset($_GET['towerid'])) { + $_GET['towerid'] = 1; } $_GET['towerid'] = round((int)$_GET['towerid']); $notowerlog = false; -$log = mysql_fetch_array(mysql_query('SELECT `id`,`count_bs`,`m` FROM `bs_logs` WHERE `count_bs` = "'.mysql_real_escape_string((int)$_GET['id']).'" AND `id_bs` = "'.mysql_real_escape_string($_GET['towerid']).'" ORDER BY `id` ASC LIMIT 1')); -if(!isset($log['id'])) -{ - $notowerlog = true; - $r = '

    Скорее всего Архивариус снова потерял пергамент с хрониками турниров ...
    '; -}else{ - $sp = mysql_query('SELECT * FROM `bs_logs` WHERE `count_bs` = "'.$log['count_bs'].'" ORDER BY `id` ASC'); - while( $pl = mysql_fetch_array($sp) ) { - $datesb = ''; - if( $pl['type'] == 2 ) { - $datesb = '2'; - } - $r .= '
    '.date('d.m.y H:i',$pl['time']).' '.$pl['text'].''; - } +$log = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`count_bs`,`m` FROM `bs_logs` WHERE `count_bs` = "' . mysql_real_escape_string( + (int)$_GET['id'] + ) . '" AND `id_bs` = "' . mysql_real_escape_string($_GET['towerid']) . '" ORDER BY `id` LIMIT 1' + ) +); +if (!isset($log['id'])) { + $notowerlog = true; + $r = '

    Скорее всего Архивариус снова потерял пергамент с хрониками турниров ...
    '; +} else { + $sp = mysql_query('SELECT * FROM `bs_logs` WHERE `count_bs` = "' . $log['count_bs'] . '" ORDER BY `id` '); + while ($pl = mysql_fetch_array($sp)) { + $datesb = ''; + if ($pl['type'] == 2) { + $datesb = '2'; + } + $r .= '
    ' . date('d.m.y H:i', $pl['time']) . ' ' . $pl['text'] . ''; + } } ?> - -Архив: Турнир в Башне Смерти - - - + + Архив: Турнир в Башне Смерти + + +

    Башня Смерти. Отчет о турнире.   www.new-combats.com

    - -Призовой фонд: кр. + + Призовой фонд: кр. diff --git a/transfer.php b/transfer.php index 66f9bcec..c3f2b80c 100644 --- a/transfer.php +++ b/transfer.php @@ -1,386 +1,449 @@ info['repass'] > 0) { - die(); - } - - if(isset($u->tfer['id']) && $u->info['align'] != 2) - { - if($u->tfer['finish1']==0 && $u->tfer['finish2']==0) - { - $js = ''; $mn = 0; - if(isset($_POST['cancel2'])) - { - $u->tfer['r0'] = time(); - $u->tfer['good1'] = 0; - $u->tfer['good2'] = 0; - $_POST['id'] = 'reflesh'; - mysql_query('UPDATE `transfers` SET `r0` = "'.$u->tfer['r0'].'",`r1` = "0",`r2` = "0",`good1` = "0",`good2` = "0" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - }elseif(isset($_POST['start2'])) - { - //сохраняем обмен - if($u->tfer['good1']>0 && $u->tfer['good2']>0) - { - //завершаем обмен - $u->tfer['cancel1'] = time(); - $u->tfer['cancel2'] = time(); - $u->tfer['finish1'] = time(); - $u->tfer['finish2'] = time(); - //меняем вещи + передаем КР и завершаем передачи, переход на лог передач - $upd2 = mysql_query('UPDATE `transfers` SET `cancel1` = "'.$u->tfer['cancel1'].'",`cancel2` = "'.$u->tfer['cancel2'].'",`finish1` = "'.$u->tfer['finish1'].'",`finish2` = "'.$u->tfer['finish2'].'" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - //Обмениваем деньги - $mn1 = 0; - $mn2 = 0; - $inf = array(); - $inf[$u->tfer['uid1']] = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$u->tfer['uid1'].'" LIMIT 1')); - $inf[$u->tfer['uid2']] = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$u->tfer['uid2'].'" LIMIT 1')); - if($inf[$u->tfer['uid1']]['money']<$u->tfer['money1']) - { - $u->tfer['money1'] = $inf[$u->tfer['uid1']]['money']; - } - if($inf[$u->tfer['uid2']]['money']<$u->tfer['money2']) - { - $u->tfer['money2'] = $inf[$u->tfer['uid2']]['money']; - } +if ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') { + define('GAME', true); + include('_incl_data/__config.php'); + include('_incl_data/class/__db_connect.php'); + $u = User::start(); - $mn1 = $u->tfer['money1']; - $mn2 = $u->tfer['money2']; - if($mn1<0){ $mn1 = 0; } - if($mn2<0){ $mn2 = 0; } - - if($mn1>0) - { - //игрок 1 передает деньги игроку 2 - $upd = mysql_query('UPDATE `users` SET `money` = `money` - "'.$mn1.'" WHERE `id` = "'.$inf[$u->tfer['uid1']]['id'].'" LIMIT 1'); - if($upd) - { - $upd = mysql_query('UPDATE `users` SET `money` = `money` + "'.$mn1.'" WHERE `id` = "'.$inf[$u->tfer['uid2']]['id'].'" LIMIT 1'); - if($upd) - { - $u->addDelo(2,$inf[$u->tfer['uid1']]['id'],'"System.transfer.MONEY": Передано '.$mn1.' кр. персонажу "'.$inf[$u->tfer['uid2']]['login'].'" ('.$inf[$u->tfer['uid2']]['id'].').',time(),$u->info['city'],'System.transfer',0,0); - $u->addDelo(2,$inf[$u->tfer['uid2']]['id'],'"System.transfer.MONEY": Получено '.$mn1.' кр. от персонажа "'.$inf[$u->tfer['uid1']]['login'].'" ('.$inf[$u->tfer['uid1']]['id'].').',time(),$u->info['city'],'System.transfer',0,0); - }else{ - $u->addDelo(2,$inf[$u->tfer['uid1']]['id'],'"System.transfer.MONEY": Передано '.$mn1.' кр. персонажу "'.$inf[$u->tfer['uid2']]['login'].'" ('.$inf[$u->tfer['uid2']]['id'].'), ошибка во время передачи.',time(),$u->info['city'],'System.transfer',0,0); - } - } - } - - if($mn2>0) - { - //игрок 2 передает деньги игроку 1 - $upd = mysql_query('UPDATE `users` SET `money` = `money` - "'.$mn2.'" WHERE `id` = "'.$inf[$u->tfer['uid2']]['id'].'" LIMIT 1'); - if($upd) - { - $upd = mysql_query('UPDATE `users` SET `money` = `money` + "'.$mn2.'" WHERE `id` = "'.$inf[$u->tfer['uid1']]['id'].'" LIMIT 1'); - if($upd) - { - $u->addDelo(2,$inf[$u->tfer['uid2']]['id'],'"System.transfer.MONEY": Передано '.$mn2.' кр. персонажу "'.$inf[$u->tfer['uid1']]['login'].'" ('.$inf[$u->tfer['uid1']]['id'].').',time(),$u->info['city'],'System.transfer',0,0); - $u->addDelo(2,$inf[$u->tfer['uid1']]['id'],'"System.transfer.MONEY": Получено '.$mn2.' кр. от персонажа "'.$inf[$u->tfer['uid2']]['login'].'" ('.$inf[$u->tfer['uid2']]['id'].').',time(),$u->info['city'],'System.transfer',0,0); - }else{ - $u->addDelo(2,$inf[$u->tfer['uid2']]['id'],'"System.transfer.MONEY": Передано '.$mn2.' кр. персонажу "'.$inf[$u->tfer['uid1']]['login'].'" ('.$inf[$u->tfer['uid1']]['id'].'), ошибка во время передачи.',time(),$u->info['city'],'System.transfer',0,0); - } - } - } - - //Обмениваем предметы - $sp = mysql_query('SELECT `u`.*,`m`.`price1`,`m`.`price2`,`m`.`name` FROM `items_users` AS `u` LEFT JOIN `items_main` AS `m` ON `m`.`id` = `u`.`item_id` WHERE (`u`.`uid`="'.$u->tfer['uid1'].'" OR `u`.`uid`="'.$u->tfer['uid2'].'") AND `u`.`delete`="0" AND `u`.`inOdet`="0" AND `u`.`inShop`="0" AND `u`.`inTransfer` > "0" AND `u`.`data` NOT LIKE "%|zazuby=%"'); - $nalog = 0; $fu = 0; $x = 0; $uus = array(); - while($pl = mysql_fetch_array($sp)) - { - $x = $u->itemsX($pl['id'],$pl['uid']); - $fu = $pl['uid']; - if($pl['uid']==$u->tfer['uid1']) - { - $pl['uid'] = $u->tfer['uid2']; - }elseif($pl['uid']==$u->tfer['uid2']) - { - $pl['uid'] = $u->tfer['uid1']; - } - $us = $inf[$pl['uid']]; - $uus = $inf[$fu]; - if($pl['inTransfer']==1) - { - //подарок - $pl['gift'] = $uus['login']; - }else{ - //налог - $nalog += 1; - } - $upd = mysql_query('UPDATE `items_users` SET `uid` = "'.$pl['uid'].'",`gift` = "'.$pl['gift'].'" WHERE `id` = "'.$pl['id'].'" AND `inShop` = "0" AND `delete` < "1234567891" AND `inOdet` = "0" AND `data` NOT LIKE "%|zazuby=%"'); - if($upd) - { - if( $pl['2price'] == 0 && $pl['1price'] == 0 ) { - $pl['2price'] = $pl['price2']; - } - if( $pl['1price'] == 0 && $pl['2price'] == 0) { - $pl['1price'] = $pl['price1']; - } - $po = $u->lookStats($pl['data']); - $i_s = ''; - if(isset($po['frompisher']) && $po['frompisher'] > 0) { $i_s = '[Предмет из подземелья]'; } - //заносим в личные дела - $u->addDelo(2,$fu,'"System.transfer": Предмет "'.$pl['name'].' (стоимость: '.$pl['1price'].' кр. , '.$pl['2price'].' екр.) (x'.$x.')" [itm:'.$pl['id'].'] '.$i_s.' был передан персонажу "'.$us['login'].'"('.$pl['uid'].'), Тип передачи: '.$pl['inTransfer'].'.',time(),$u->info['city'],'System.transfer',0,0); - $u->addDelo(2,$pl['uid'],'"System.transfer": Персонаж "'.$uus['login'].'"('.$uus['id'].') передал предмет "'.$pl['name'].' '.$i_s.' (стоимость: '.$pl['1price'].' кр. , '.$pl['2price'].' екр.) (x'.$x.')" [itm:'.$pl['id'].'], Тип передачи: '.$pl['inTransfer'].'.',time(),$u->info['city'],'System.transfer',0,0); - }else{ - echo 'Ошибка передачи предмета'; - } - } - $upd1 = mysql_query('UPDATE `items_users` SET `inTransfer` = "0" WHERE (`uid`="'.$u->tfer['uid1'].'" OR `uid`="'.$u->tfer['uid2'].'") AND `delete` < "1234567891" AND `inOdet`="0" AND `inShop`="0" AND `inTransfer` > "0" AND `data` NOT LIKE "%|zazuby=%"'); - if($upd1 && $upd2) - { - $js .= 'location = location;'; - } - unset($upd1,$upd2,$fu,$nalog,$x,$us,$uus,$inf); - }else{ - //подтверждение обмена - $u->tfer['r0'] = time(); - if($u->tfer['uid1']==$u->info['id']) - { - $u->tfer['good1'] = time(); $mn = 1; - mysql_query('UPDATE `transfers` SET `r0` = "'.$u->tfer['r0'].'",`r1` = "0",`r2` = "0",`good1` = "'.$u->tfer['good1'].'" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - }else{ - $u->tfer['good2'] = time(); $mn = 1; - mysql_query('UPDATE `transfers` SET `r0` = "'.$u->tfer['r0'].'",`r1` = "0",`r2` = "0",`good2` = "'.$u->tfer['good2'].'" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - } - $_POST['id'] = 'reflesh'; - } - }elseif($_POST['id']=='sale' && isset($_POST['cancelid']) && $u->tfer['good1']==0 && $u->tfer['good2']==0) - { - $upd = mysql_query('UPDATE `items_users` SET `inTransfer` = "0" WHERE `id` = "'.mysql_real_escape_string($_POST['cancelid']).'" AND `uid`="'.$u->info['id'].'" AND `delete`="0" AND `inOdet`="0" AND `inShop`="0" AND `inTransfer` > "0" AND `data` NOT LIKE "%|zazuby=%" LIMIT 1'); - if($upd) - { - $u->tfer['r0'] = time(); - mysql_query('UPDATE `transfers` SET `r0` = "'.$u->tfer['r0'].'" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - $_POST['id'] = 'reflesh'; - } - }elseif($_POST['id']=='sale' && isset($_POST['itemid']) && $u->tfer['good1']==0 && $u->tfer['good2']==0) - { - $g = 1; - $itm = mysql_fetch_array(mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`id` = "'.mysql_real_escape_string($_POST['itemid']).'" AND `iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`inTransfer` = "0" AND `iu`.`data` NOT LIKE "%|zazuby=%" LIMIT 1')); - if(isset($itm['id'])) - { - $po = $u->lookStats($itm['data']); - if(isset($po['sudba']) && $po['sudba']!='0') - { - $g = 0; - } - if($itm['inTransfer']>0) - { - $g = 0; - } - }else{ - $g = 0; - } - if($g==1) - { - if($_POST['saletype']==2) - { - $g = 2; - }else{ - $g = 1; - } - mysql_query('UPDATE `items_users` SET `inTransfer` = "'.((int)$g).'",`inGroup` = "0" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - $u->tfer['r0'] = time(); - mysql_query('UPDATE `transfers` SET `r0` = "'.$u->tfer['r0'].'" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - $_POST['id'] = 'reflesh'; - } - } - - if($_POST['id']=='reflesh') - { - //обновление инвентаря - $i = 1; - while($i<=6) - { - $itmAll = ''; $itmAllSee = ''; - $itmAll = $u->genInv(5,'`iu`.`uid` = "'.$u->info['id'].'" AND `iu`.`data` NOT LIKE "%toclan='.$u->info['clan'].'#%" AND `iu`.`delete` = 0 AND `iu`.`inOdet` =0 AND `iu`.`inShop` = 0 AND `im`.`inRazdel` = "'.$i.'" AND `iu`.`inTransfer` = 0 ORDER BY `lastUPD` DESC'); - - if($itmAll[0]==0) - { - $itmAllSee = '
    ПУСТО
    '.$r.'
    '; - $r = '
    '.$r.'
    '; - unset($x); - return $r; - } - //Точно обновляем :) - $itm = array(1=>'',2=>''); - //предметы персонажа 1 - $sp = mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`uid`="'.$u->tfer['uid1'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`inTransfer` > "0" AND `iu`.`data` NOT LIKE "%|zazuby=%" ORDER BY `iu`.`lastUPD` DESC'); - $cl = 2; - while($pl = mysql_fetch_array($sp)) - { - if($cl==2) - { - $cl = 1; - }else{ - $cl = 2; - } - $itm[1] .= itmInfotf($pl,$cl); - } - //предметы персонажа 2 - $sp = mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`uid`="'.$u->tfer['uid2'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`inTransfer` > "0" AND `iu`.`data` NOT LIKE "%|zazuby=%" ORDER BY `iu`.`lastUPD` DESC'); - $cl = 2; - while($pl = mysql_fetch_array($sp)) - { - if($cl==2) - { - $cl = 1; - }else{ - $cl = 2; - } - $itm[2] .= itmInfotf($pl,$cl); - } - unset($cl); - if($itm[1]=='') - { - $itm[1] = ' '; - } - if($itm[2]=='') - { - $itm[2] = ' '; - } - - if($u->info['id']==$u->tfer['uid1']) - { - $js .= '$("#s2g3").html(\''.$itm[1].'\');$("#s2g2").html(\''.$itm[2].'\');'; - }else{ - $js .= '$("#s2g3").html(\''.$itm[2].'\');$("#s2g2").html(\''.$itm[1].'\');'; - } - $u->tfer['r'.$f] = $u->tfer['r0']; - mysql_query('UPDATE `transfers` SET `r'.$f.'` = "'.$u->tfer['r'.$f].'" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - } - if(($u->tfer['good1']>0 && $u->info['id']==$u->tfer['uid1']) || ($u->tfer['good2']>0 && $u->info['id']==$u->tfer['uid2'])) - { - $js .= '$(\'#btn1\').html(\'Обменять\');'; - if($u->tfer['good1']>0 && $u->tfer['good2']>0) - { - $js .= '$(\'#btn1\').attr(\'disabled\',\'\');'; - }else{ - $js .= '$(\'#btn1\').attr(\'disabled\',\'disabled\');'; - } - }else{ - $js .= '$(\'#btn1\').html(\'Готов к обмену\');$(\'#btn1\').attr(\'disabled\',\'\');'; - } - - //Обновляем деньги в кассе :) - if($u->tfer['uid1']==$u->info['id']) - { - if($u->tfer['good1']>0){ $js .= '$(\'#gd2\').css(\'display\',\'\');'; }else{ $js .= '$(\'#gd2\').css(\'display\',\'none\');'; } //вы - if($u->tfer['good2']>0){ $js .= '$(\'#gd1\').css(\'display\',\'\');'; }else{ $js .= '$(\'#gd1\').css(\'display\',\'none\');'; } - - if(($u->tfer['good1']==0 && $u->tfer['good2']==0) || $mn == 1) - { - if( $u->tfer['money1'] != round($_POST['money'],2) ) { - $u->tfer['money1'] = round($_POST['money'],2); - if($u->tfer['money1']>$u->info['money']) - { - $u->tfer['money1'] = $u->info['money']; - } - if($u->tfer['money1']<0) - { - $u->tfer['money1'] = 0; - } - mysql_query('UPDATE `transfers` SET `money1` = "'.mysql_real_escape_string($u->tfer['money1']).'",`good1` = 0,`good2` = 0 WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - } - } - }else{ - if($u->tfer['good2']>0){ $js .= '$(\'#gd2\').css(\'display\',\'\');'; }else{ $js .= '$(\'#gd2\').css(\'display\',\'none\');'; } //вы - if($u->tfer['good1']>0){ $js .= '$(\'#gd1\').css(\'display\',\'\');'; }else{ $js .= '$(\'#gd1\').css(\'display\',\'none\');'; } - - if(($u->tfer['good1']==0 && $u->tfer['good2']==0) || $mn == 1) - { - if( $u->tfer['money2'] != round($_POST['money'],2) ) { - $u->tfer['money2'] = round($_POST['money'],2); - if($u->tfer['money2']>$u->info['money']) - { - $u->tfer['money2'] = $u->info['money']; - } - if($u->tfer['money1']<0) - { - $u->tfer['money1'] = 0; - } - mysql_query('UPDATE `transfers` SET `money2` = "'.mysql_real_escape_string($u->tfer['money2']).'",`good1` = 0,`good2` = 0 WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - } - } - } - if($u->info['id']==$u->tfer['uid1']) - { - $js .= 'refmoney('.$u->round2($u->tfer['money2']).','.$u->round2($u->tfer['money1']).');'; - }else{ - $js .= 'refmoney('.$u->round2($u->tfer['money1']).','.$u->round2($u->tfer['money2']).');'; - } - } - if($js!='') - { - echo ''; - } - }else{ - echo ''; - } - }else{ - echo ''; - } + if ($u->info['repass'] > 0) { + die(); + } + + if (isset($u->tfer['id']) && $u->info['align'] != 2) { + if ($u->tfer['finish1'] == 0 && $u->tfer['finish2'] == 0) { + $js = ''; + $mn = 0; + if (isset($_POST['cancel2'])) { + $u->tfer['r0'] = time(); + $u->tfer['good1'] = 0; + $u->tfer['good2'] = 0; + $_POST['id'] = 'reflesh'; + mysql_query( + 'UPDATE `transfers` SET `r0` = "' . $u->tfer['r0'] . '",`r1` = "0",`r2` = "0",`good1` = "0",`good2` = "0" WHERE `id` = "' . $u->tfer['id'] . '" LIMIT 1' + ); + } elseif (isset($_POST['start2'])) { + //сохраняем обмен + if ($u->tfer['good1'] > 0 && $u->tfer['good2'] > 0) { + //завершаем обмен + $u->tfer['cancel1'] = time(); + $u->tfer['cancel2'] = time(); + $u->tfer['finish1'] = time(); + $u->tfer['finish2'] = time(); + //меняем вещи + передаем КР и завершаем передачи, переход на лог передач + $upd2 = mysql_query( + 'UPDATE `transfers` SET `cancel1` = "' . $u->tfer['cancel1'] . '",`cancel2` = "' . $u->tfer['cancel2'] . '",`finish1` = "' . $u->tfer['finish1'] . '",`finish2` = "' . $u->tfer['finish2'] . '" WHERE `id` = "' . $u->tfer['id'] . '" LIMIT 1' + ); + //Обмениваем деньги + $mn1 = 0; + $mn2 = 0; + $inf = []; + $inf[$u->tfer['uid1']] = mysql_fetch_array( + mysql_query('SELECT * FROM `users` WHERE `id` = "' . $u->tfer['uid1'] . '" LIMIT 1') + ); + $inf[$u->tfer['uid2']] = mysql_fetch_array( + mysql_query('SELECT * FROM `users` WHERE `id` = "' . $u->tfer['uid2'] . '" LIMIT 1') + ); + if ($inf[$u->tfer['uid1']]['money'] < $u->tfer['money1']) { + $u->tfer['money1'] = $inf[$u->tfer['uid1']]['money']; + } + if ($inf[$u->tfer['uid2']]['money'] < $u->tfer['money2']) { + $u->tfer['money2'] = $inf[$u->tfer['uid2']]['money']; + } + + $mn1 = $u->tfer['money1']; + $mn2 = $u->tfer['money2']; + if ($mn1 < 0) { + $mn1 = 0; + } + if ($mn2 < 0) { + $mn2 = 0; + } + + if ($mn1 > 0) { + //игрок 1 передает деньги игроку 2 + $upd = mysql_query( + 'UPDATE `users` SET `money` = `money` - "' . $mn1 . '" WHERE `id` = "' . $inf[$u->tfer['uid1']]['id'] . '" LIMIT 1' + ); + if ($upd) { + $upd = mysql_query( + 'UPDATE `users` SET `money` = `money` + "' . $mn1 . '" WHERE `id` = "' . $inf[$u->tfer['uid2']]['id'] . '" LIMIT 1' + ); + if ($upd) { + $u->addDelo( + 2, $inf[$u->tfer['uid1']]['id'], + '"System.transfer.MONEY": Передано ' . $mn1 . ' кр. персонажу "' . $inf[$u->tfer['uid2']]['login'] . '" (' . $inf[$u->tfer['uid2']]['id'] . ').', + time(), $u->info['city'], 'System.transfer', 0, 0 + ); + $u->addDelo( + 2, $inf[$u->tfer['uid2']]['id'], + '"System.transfer.MONEY": Получено ' . $mn1 . ' кр. от персонажа "' . $inf[$u->tfer['uid1']]['login'] . '" (' . $inf[$u->tfer['uid1']]['id'] . ').', + time(), $u->info['city'], 'System.transfer', 0, 0 + ); + } else { + $u->addDelo( + 2, $inf[$u->tfer['uid1']]['id'], + '"System.transfer.MONEY": Передано ' . $mn1 . ' кр. персонажу "' . $inf[$u->tfer['uid2']]['login'] . '" (' . $inf[$u->tfer['uid2']]['id'] . '), ошибка во время передачи.', + time(), $u->info['city'], 'System.transfer', 0, 0 + ); + } + } + } + + if ($mn2 > 0) { + //игрок 2 передает деньги игроку 1 + $upd = mysql_query( + 'UPDATE `users` SET `money` = `money` - "' . $mn2 . '" WHERE `id` = "' . $inf[$u->tfer['uid2']]['id'] . '" LIMIT 1' + ); + if ($upd) { + $upd = mysql_query( + 'UPDATE `users` SET `money` = `money` + "' . $mn2 . '" WHERE `id` = "' . $inf[$u->tfer['uid1']]['id'] . '" LIMIT 1' + ); + if ($upd) { + $u->addDelo( + 2, $inf[$u->tfer['uid2']]['id'], + '"System.transfer.MONEY": Передано ' . $mn2 . ' кр. персонажу "' . $inf[$u->tfer['uid1']]['login'] . '" (' . $inf[$u->tfer['uid1']]['id'] . ').', + time(), $u->info['city'], 'System.transfer', 0, 0 + ); + $u->addDelo( + 2, $inf[$u->tfer['uid1']]['id'], + '"System.transfer.MONEY": Получено ' . $mn2 . ' кр. от персонажа "' . $inf[$u->tfer['uid2']]['login'] . '" (' . $inf[$u->tfer['uid2']]['id'] . ').', + time(), $u->info['city'], 'System.transfer', 0, 0 + ); + } else { + $u->addDelo( + 2, $inf[$u->tfer['uid2']]['id'], + '"System.transfer.MONEY": Передано ' . $mn2 . ' кр. персонажу "' . $inf[$u->tfer['uid1']]['login'] . '" (' . $inf[$u->tfer['uid1']]['id'] . '), ошибка во время передачи.', + time(), $u->info['city'], 'System.transfer', 0, 0 + ); + } + } + } + + //Обмениваем предметы + $sp = mysql_query( + 'SELECT `u`.*,`m`.`price1`,`m`.`price2`,`m`.`name` FROM `items_users` AS `u` LEFT JOIN `items_main` AS `m` ON `m`.`id` = `u`.`item_id` WHERE (`u`.`uid`="' . $u->tfer['uid1'] . '" OR `u`.`uid`="' . $u->tfer['uid2'] . '") AND `u`.`delete`="0" AND `u`.`inOdet`="0" AND `u`.`inShop`="0" AND `u`.`inTransfer` > "0" AND `u`.`data` NOT LIKE "%|zazuby=%"' + ); + $nalog = 0; + $fu = 0; + $x = 0; + $uus = []; + while ($pl = mysql_fetch_array($sp)) { + $x = $u->itemsX($pl['id'], $pl['uid']); + $fu = $pl['uid']; + if ($pl['uid'] == $u->tfer['uid1']) { + $pl['uid'] = $u->tfer['uid2']; + } elseif ($pl['uid'] == $u->tfer['uid2']) { + $pl['uid'] = $u->tfer['uid1']; + } + $us = $inf[$pl['uid']]; + $uus = $inf[$fu]; + if ($pl['inTransfer'] == 1) { + //подарок + $pl['gift'] = $uus['login']; + } else { + //налог + $nalog += 1; + } + $upd = mysql_query( + 'UPDATE `items_users` SET `uid` = "' . $pl['uid'] . '",`gift` = "' . $pl['gift'] . '" WHERE `id` = "' . $pl['id'] . '" AND `inShop` = "0" AND `delete` < "1234567891" AND `inOdet` = "0" AND `data` NOT LIKE "%|zazuby=%"' + ); + if ($upd) { + if ($pl['2price'] == 0 && $pl['1price'] == 0) { + $pl['2price'] = $pl['price2']; + } + if ($pl['1price'] == 0 && $pl['2price'] == 0) { + $pl['1price'] = $pl['price1']; + } + $po = $u->lookStats($pl['data']); + $i_s = ''; + if (isset($po['frompisher']) && $po['frompisher'] > 0) { + $i_s = '[Предмет из подземелья]'; + } + //заносим в личные дела + $u->addDelo( + 2, $fu, + '"System.transfer": Предмет "' . $pl['name'] . ' (стоимость: ' . $pl['1price'] . ' кр. , ' . $pl['2price'] . ' екр.) (x' . $x . ')" [itm:' . $pl['id'] . '] ' . $i_s . ' был передан персонажу "' . $us['login'] . '"(' . $pl['uid'] . '), Тип передачи: ' . $pl['inTransfer'] . '.', + time(), $u->info['city'], 'System.transfer', 0, 0 + ); + $u->addDelo( + 2, $pl['uid'], + '"System.transfer": Персонаж "' . $uus['login'] . '"(' . $uus['id'] . ') передал предмет "' . $pl['name'] . ' ' . $i_s . ' (стоимость: ' . $pl['1price'] . ' кр. , ' . $pl['2price'] . ' екр.) (x' . $x . ')" [itm:' . $pl['id'] . '], Тип передачи: ' . $pl['inTransfer'] . '.', + time(), $u->info['city'], 'System.transfer', 0, 0 + ); + } else { + echo 'Ошибка передачи предмета'; + } + } + $upd1 = mysql_query( + 'UPDATE `items_users` SET `inTransfer` = "0" WHERE (`uid`="' . $u->tfer['uid1'] . '" OR `uid`="' . $u->tfer['uid2'] . '") AND `delete` < "1234567891" AND `inOdet`="0" AND `inShop`="0" AND `inTransfer` > "0" AND `data` NOT LIKE "%|zazuby=%"' + ); + if ($upd1 && $upd2) { + $js .= 'location = location;'; + } + unset($upd1, $upd2, $fu, $nalog, $x, $us, $uus, $inf); + } else { + //подтверждение обмена + $u->tfer['r0'] = time(); + if ($u->tfer['uid1'] == $u->info['id']) { + $u->tfer['good1'] = time(); + $mn = 1; + mysql_query( + 'UPDATE `transfers` SET `r0` = "' . $u->tfer['r0'] . '",`r1` = "0",`r2` = "0",`good1` = "' . $u->tfer['good1'] . '" WHERE `id` = "' . $u->tfer['id'] . '" LIMIT 1' + ); + } else { + $u->tfer['good2'] = time(); + $mn = 1; + mysql_query( + 'UPDATE `transfers` SET `r0` = "' . $u->tfer['r0'] . '",`r1` = "0",`r2` = "0",`good2` = "' . $u->tfer['good2'] . '" WHERE `id` = "' . $u->tfer['id'] . '" LIMIT 1' + ); + } + $_POST['id'] = 'reflesh'; + } + } elseif ($_POST['id'] == 'sale' && isset($_POST['cancelid']) && $u->tfer['good1'] == 0 && $u->tfer['good2'] == 0) { + $upd = mysql_query( + 'UPDATE `items_users` SET `inTransfer` = "0" WHERE `id` = "' . mysql_real_escape_string( + $_POST['cancelid'] + ) . '" AND `uid`="' . $u->info['id'] . '" AND `delete`="0" AND `inOdet`="0" AND `inShop`="0" AND `inTransfer` > "0" AND `data` NOT LIKE "%|zazuby=%" LIMIT 1' + ); + if ($upd) { + $u->tfer['r0'] = time(); + mysql_query( + 'UPDATE `transfers` SET `r0` = "' . $u->tfer['r0'] . '" WHERE `id` = "' . $u->tfer['id'] . '" LIMIT 1' + ); + $_POST['id'] = 'reflesh'; + } + } elseif ($_POST['id'] == 'sale' && isset($_POST['itemid']) && $u->tfer['good1'] == 0 && $u->tfer['good2'] == 0) { + $g = 1; + $itm = mysql_fetch_array( + mysql_query( + 'SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`id` = "' . mysql_real_escape_string( + $_POST['itemid'] + ) . '" AND `iu`.`uid`="' . $u->info['id'] . '" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`inTransfer` = "0" AND `iu`.`data` NOT LIKE "%|zazuby=%" LIMIT 1' + ) + ); + if (isset($itm['id'])) { + $po = $u->lookStats($itm['data']); + if (isset($po['sudba']) && $po['sudba'] != '0') { + $g = 0; + } + if ($itm['inTransfer'] > 0) { + $g = 0; + } + } else { + $g = 0; + } + if ($g == 1) { + if ($_POST['saletype'] == 2) { + $g = 2; + } else { + $g = 1; + } + mysql_query( + 'UPDATE `items_users` SET `inTransfer` = "' . ((int)$g) . '",`inGroup` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1' + ); + $u->tfer['r0'] = time(); + mysql_query( + 'UPDATE `transfers` SET `r0` = "' . $u->tfer['r0'] . '" WHERE `id` = "' . $u->tfer['id'] . '" LIMIT 1' + ); + $_POST['id'] = 'reflesh'; + } + } + + if ($_POST['id'] == 'reflesh') { + //обновление инвентаря + $i = 1; + while ($i <= 6) { + $itmAll = ''; + $itmAllSee = ''; + $itmAll = $u->genInv( + 5, + '`iu`.`uid` = "' . $u->info['id'] . '" AND `iu`.`data` NOT LIKE "%toclan=' . $u->info['clan'] . '#%" AND `iu`.`delete` = 0 AND `iu`.`inOdet` =0 AND `iu`.`inShop` = 0 AND `im`.`inRazdel` = "' . $i . '" AND `iu`.`inTransfer` = 0 ORDER BY `lastUPD` DESC' + ); + + if ($itmAll[0] == 0) { + $itmAllSee = '
    ПУСТО
    ' . $r . '
    '; + $r = '
    ' . $r . '
    '; + unset($x); + return $r; + } + + //Точно обновляем :) + $itm = [1 => '', 2 => '']; + //предметы персонажа 1 + $sp = mysql_query( + 'SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`uid`="' . $u->tfer['uid1'] . '" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`inTransfer` > "0" AND `iu`.`data` NOT LIKE "%|zazuby=%" ORDER BY `iu`.`lastUPD` DESC' + ); + $cl = 2; + while ($pl = mysql_fetch_array($sp)) { + if ($cl == 2) { + $cl = 1; + } else { + $cl = 2; + } + $itm[1] .= itmInfotf($pl, $cl); + } + //предметы персонажа 2 + $sp = mysql_query( + 'SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`uid`="' . $u->tfer['uid2'] . '" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`inTransfer` > "0" AND `iu`.`data` NOT LIKE "%|zazuby=%" ORDER BY `iu`.`lastUPD` DESC' + ); + $cl = 2; + while ($pl = mysql_fetch_array($sp)) { + if ($cl == 2) { + $cl = 1; + } else { + $cl = 2; + } + $itm[2] .= itmInfotf($pl, $cl); + } + unset($cl); + if ($itm[1] == '') { + $itm[1] = ' '; + } + if ($itm[2] == '') { + $itm[2] = ' '; + } + + if ($u->info['id'] == $u->tfer['uid1']) { + $js .= '$("#s2g3").html(\'' . $itm[1] . '\');$("#s2g2").html(\'' . $itm[2] . '\');'; + } else { + $js .= '$("#s2g3").html(\'' . $itm[2] . '\');$("#s2g2").html(\'' . $itm[1] . '\');'; + } + $u->tfer['r' . $f] = $u->tfer['r0']; + mysql_query( + 'UPDATE `transfers` SET `r' . $f . '` = "' . $u->tfer['r' . $f] . '" WHERE `id` = "' . $u->tfer['id'] . '" LIMIT 1' + ); + } + if (($u->tfer['good1'] > 0 && $u->info['id'] == $u->tfer['uid1']) || ($u->tfer['good2'] > 0 && $u->info['id'] == $u->tfer['uid2'])) { + $js .= '$(\'#btn1\').html(\'Обменять\');'; + if ($u->tfer['good1'] > 0 && $u->tfer['good2'] > 0) { + $js .= '$(\'#btn1\').attr(\'disabled\',\'\');'; + } else { + $js .= '$(\'#btn1\').attr(\'disabled\',\'disabled\');'; + } + } else { + $js .= '$(\'#btn1\').html(\'Готов к обмену\');$(\'#btn1\').attr(\'disabled\',\'\');'; + } + + //Обновляем деньги в кассе :) + if ($u->tfer['uid1'] == $u->info['id']) { + if ($u->tfer['good1'] > 0) { + $js .= '$(\'#gd2\').css(\'display\',\'\');'; + } else { + $js .= '$(\'#gd2\').css(\'display\',\'none\');'; + } //вы + if ($u->tfer['good2'] > 0) { + $js .= '$(\'#gd1\').css(\'display\',\'\');'; + } else { + $js .= '$(\'#gd1\').css(\'display\',\'none\');'; + } + + if (($u->tfer['good1'] == 0 && $u->tfer['good2'] == 0) || $mn == 1) { + if ($u->tfer['money1'] != round($_POST['money'], 2)) { + $u->tfer['money1'] = round($_POST['money'], 2); + if ($u->tfer['money1'] > $u->info['money']) { + $u->tfer['money1'] = $u->info['money']; + } + if ($u->tfer['money1'] < 0) { + $u->tfer['money1'] = 0; + } + mysql_query( + 'UPDATE `transfers` SET `money1` = "' . mysql_real_escape_string( + $u->tfer['money1'] + ) . '",`good1` = 0,`good2` = 0 WHERE `id` = "' . $u->tfer['id'] . '" LIMIT 1' + ); + } + } + } else { + if ($u->tfer['good2'] > 0) { + $js .= '$(\'#gd2\').css(\'display\',\'\');'; + } else { + $js .= '$(\'#gd2\').css(\'display\',\'none\');'; + } //вы + if ($u->tfer['good1'] > 0) { + $js .= '$(\'#gd1\').css(\'display\',\'\');'; + } else { + $js .= '$(\'#gd1\').css(\'display\',\'none\');'; + } + + if (($u->tfer['good1'] == 0 && $u->tfer['good2'] == 0) || $mn == 1) { + if ($u->tfer['money2'] != round($_POST['money'], 2)) { + $u->tfer['money2'] = round($_POST['money'], 2); + if ($u->tfer['money2'] > $u->info['money']) { + $u->tfer['money2'] = $u->info['money']; + } + if ($u->tfer['money1'] < 0) { + $u->tfer['money1'] = 0; + } + mysql_query( + 'UPDATE `transfers` SET `money2` = "' . mysql_real_escape_string( + $u->tfer['money2'] + ) . '",`good1` = 0,`good2` = 0 WHERE `id` = "' . $u->tfer['id'] . '" LIMIT 1' + ); + } + } + } + if ($u->info['id'] == $u->tfer['uid1']) { + $js .= 'refmoney(' . $u->round2($u->tfer['money2']) . ',' . $u->round2($u->tfer['money1']) . ');'; + } else { + $js .= 'refmoney(' . $u->round2($u->tfer['money1']) . ',' . $u->round2($u->tfer['money2']) . ');'; + } + } + if ($js != '') { + echo ''; + } + } else { + echo ''; + } + } else { + echo ''; + } } -?> \ No newline at end of file -- 2.45.2 From 7cfa75f09ad82720578e442705454ab94ebb2a9c Mon Sep 17 00:00:00 2001 From: Ivor Barhansky Date: Thu, 25 Aug 2022 20:07:39 +0300 Subject: [PATCH 3/5] =?UTF-8?q?=D0=95=D0=B4=D0=B8=D0=BD=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D1=87=D0=B8=D0=BA=20=D1=84?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + _incl_data/class/Uploader.php | 174 + modules_data/_clan.php | 6351 +++++++++++++++------------ modules_data/_clan_oldversion.php | 5882 ++++++++++++++----------- modules_data/location/a_clanreg.php | 561 ++- 5 files changed, 7271 insertions(+), 5698 deletions(-) create mode 100644 .gitignore create mode 100644 _incl_data/class/Uploader.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..85e7c1df --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.idea/ diff --git a/_incl_data/class/Uploader.php b/_incl_data/class/Uploader.php new file mode 100644 index 00000000..56abfdf8 --- /dev/null +++ b/_incl_data/class/Uploader.php @@ -0,0 +1,174 @@ + + */ + +class Uploader +{ + private $width = ['min' => 0, 'max' => 0]; + private $height = ['min' => 0, 'max' => 0]; + private $maxFileSizeMb; + private $savePath; + private $extensions = 'jpg|png|jpeg|gif'; + private $extMatches = []; + private $FILE; + private $cnm = null; + public static $error; + + public function __construct($name, $cnm = null) + { + $this->FILE = $_FILES; + if (!$this->FILE[$name]) { + return; + } + $this->cnm = $cnm; + } + + /** + * @param int $max + * @param int $min + * @return void + */ + public function setWidth($max, $min = null) + { + $this->width['min'] = is_null($min) ? $max : $min; + $this->width['max'] = $max; + } + + /** + * @param int $max + * @param int $min + * @return void + */ + public function setHeight($max, $min = null) + { + $this->height['min'] = is_null($min) ? $max : $min; + $this->height['max'] = $max; + } + + /** + * @param $megabytes + * @return void + */ + public function setMaxFileSize($megabytes) + { + $this->maxFileSizeMb = $megabytes * (1024 * 1024); + } + + /** + * @param string $path путь от корня до конечной папки без открывающего слеша. + * @return void + */ + public function setSavePath($path) + { + $this->savePath = __DIR__ . '/' . $path; + } + + /** + * @param string|array $ext + * @return void + */ + public function setExtentions($ext) + { + if (is_array($ext)) { + $arr = $ext; + } else { + $arr[] = $ext; + } + if (!$arr) { + return; + } + $this->extensions = implode('|', $arr); + } + + /** + * @param int $width + * @param int $height + * @return void + */ + public function setDimensions($width, $height) + { + $this->setWidth($width); + $this->setHeight($height); + } + + private function hasNormalDimensions() + { + list($width, $height) = getimagesize($this->FILE['tmp_name']); + if ( + $width < $this->width['min'] || + $width > $this->width['max'] || + $height < $this->height['min'] || + $height > $this->height['max'] + ) { + self::$error = "Требования к размеру [{$this->width['max']}x{$this->height['max']}] не соблюдены."; + if ($this->width['min'] !== $this->width['max'] || $this->height['min'] !== $this->height['max']) { + self::$error .= " Минимум [{$this->width['min']}x{$this->height['min']}]."; + } + self::$error .= " [{$width}x$height]"; + return false; + } + return true; + } + + private function hasNormalFileSize() + { + if (!$this->maxFileSizeMb) { + $this->setMaxFileSize(2); + } + if ($this->FILE['size'] > $this->maxFileSizeMb || $this->FILE['size'] <=0) { + self::$error = 'Неверный размер файла. Максимальный размер файла ' . $this->maxFileSizeMb . ' МБ'; + return false; + } + return true; + } + + private function hasNormalType() + { + if ( + !preg_match('/\.(' . $this->extensions . ')$/i', $this->FILE['name'], $this->extMatches) || + !preg_match('/image/i', $this->FILE['type']) + ) { + self::$error = 'Неверный тип файла. Допустимые типы : ' . $this->extensions; + return false; + } + return true; + } + + private function hasNormalFilePath() + { + if (!$this->savePath || !is_dir($this->savePath)) { + self::$error = 'Ошибка загрузки: нет такой папки.'; + return false; + } + return true; + } + + private function upload() + { + $this->extMatches[1] = strtolower($this->extMatches[1]); + $fn = uniqid('f_', true) . '.' . $this->extMatches[1]; + $fn2 = uniqid('f_', true) . '.gif'; + if ($this->cnm) { + $fn = $this->cnm; + $fn2 = $this->cnm; + } + if (!move_uploaded_file($this->FILE['tmp_name'], $this->savePath . $fn)) { + self::$error = 'Ошибка загрузки файла'; + return false; + } + return [$fn2, $fn, $this->savePath . $fn]; + } + + function saveimg() + { + return $this->hasNormalFilePath() && + $this->hasNormalDimensions() && + $this->hasNormalFileSize() && + $this->hasNormalType() ? $this->upload() : false; + } +} \ No newline at end of file diff --git a/modules_data/_clan.php b/modules_data/_clan.php index e0237758..77e6d8fe 100644 --- a/modules_data/_clan.php +++ b/modules_data/_clan.php @@ -1,2944 +1,3595 @@ -info['clan'])."' LIMIT 1")); -$cpr = explode('|', $u->info['clan_prava']); - -if(!isset($res['id'])) { - die('Клан был расформирован.'); +info['clan']) . "' LIMIT 1") +); +$cpr = explode('|', $u->info['clan_prava']); + +if (!isset($res['id'])) { + die('Клан был расформирован.'); +} + +if (!isset($_GET['events']) && !isset($_GET['diplom']) && !isset($_GET['control']) && !isset($_GET['deposit']) && !isset($_GET['titul']) && !isset($_GET['rules']) && !isset($_GET['info']) && !isset($_GET['members'])) { + $_GET['events'] = 1; } //Возможности текущего титула -$tt = array( - 0 => array('000000000','Доступные каналы'), - 1 => array(0,'Просмотр событий клана'), - 2 => array(0,'Создание событий клана'), - 3 => array(0,'Просмотр хранилища'), - 4 => array(0,'Использование вещей из хранилища'), - 5 => array(0,'Изъятие предметов из хранилища'), - 6 => array(0,'Просмотр казны и списка игроков, пополнявших казну'), - 7 => array(0,'Пополнение казны и доступ к абилкам'), - 8 => array(0,'Использование казны'), - 9 => array(0,'Прием в клан'), - 10 => array(0,'Изгнание из клана'), - 11 => array(0,'Редактирование информации о клане'), - 12 => array(0,'Клановые союзы и альянсы'), - 13 => array(0,'Управление клановыми союзами и альянсами'), - 14 => array(0,'Обьявление войны'), - 15 => array(0,0), - 15 => array(0,0), - 16 => array(0,0), - 17 => array(0,0), - 18 => array(0,0), - 19 => array(0,0), - 20 => array(0,0) -); +$tt = [ + 0 => ['000000000', 'Доступные каналы'], + 1 => [0, 'Просмотр событий клана'], + 2 => [0, 'Создание событий клана'], + 3 => [0, 'Просмотр хранилища'], + 4 => [0, 'Использование вещей из хранилища'], + 5 => [0, 'Изъятие предметов из хранилища'], + 6 => [0, 'Просмотр казны и списка игроков, пополнявших казну'], + 7 => [0, 'Пополнение казны и доступ к абилкам'], + 8 => [0, 'Использование казны'], + 9 => [0, 'Прием в клан'], + 10 => [0, 'Изгнание из клана'], + 11 => [0, 'Редактирование информации о клане'], + 12 => [0, 'Клановые союзы и альянсы'], + 13 => [0, 'Управление клановыми союзами и альянсами'], + 14 => [0, 'Обьявление войны'], + 15 => [0, 0], + 15 => [0, 0], + 16 => [0, 0], + 17 => [0, 0], + 18 => [0, 0], + 19 => [0, 0], + 20 => [0, 0], +]; -if($u->info['clan_prava'] != 'glava') { - $utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = "'.$u->info['clan_prava'].'" LIMIT 1')); - if(!isset($utitl['id'])) { - $utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = 2 LIMIT 1')); - } +if ($u->info['clan_prava'] != 'glava') { + $utitl = mysql_fetch_array( + mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = "' . $u->info['clan_prava'] . '" LIMIT 1') + ); + if (!isset($utitl['id'])) { + $utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = 2 LIMIT 1')); + } } else { - $utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = 1 LIMIT 1')); + $utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = 1 LIMIT 1')); } -if(isset($utitl['id'])) { - $i = 1; - while($i < count($tt)) { - if($utitl['prava'][$i] > 0) { - $tt[$i][0] = 1; - } - $i++; - } +if (isset($utitl['id'])) { + $i = 1; + while ($i < count($tt)) { + if ($utitl['prava'][$i] > 0) { + $tt[$i][0] = 1; + } + $i++; + } } $u->info['tt'] = $tt; //Уровень клана -$lvl_exp = array( - 0 => 0, - 1 => 500000, - 2 => 2000000, - 3 => 5500000, - 4 => 10500000, - 5 => 20500000, - 6 => 35500000, - 7 => 65500000, - 8 => 100000000, - 9 => 200000000, - 10 => 300000000, - 11=> 1000000000 - -); +$lvl_exp = [ + 0 => 0, + 1 => 500000, + 2 => 2000000, + 3 => 5500000, + 4 => 10500000, + 5 => 20500000, + 6 => 35500000, + 7 => 65500000, + 8 => 100000000, + 9 => 200000000, + 10 => 300000000, + 11 => 1000000000, -if($res['exp'] >= $lvl_exp[$res['level']+1]) { - $res['level']++; - mysql_query('UPDATE `clan` SET `level` = "'.$res['level'].'" WHERE `id` = "'.$res['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( - "'.$res['id'].'","'.time().'","'.date('d.m.Y').'","0","127.0.0.1","Администрация","Клановое сообщение","Ваш клан достиг уровня '.$res['level'].'!" - )'); +]; + +if ($res['exp'] >= $lvl_exp[$res['level'] + 1]) { + $res['level']++; + mysql_query('UPDATE `clan` SET `level` = "' . $res['level'] . '" WHERE `id` = "' . $res['id'] . '" LIMIT 1'); + mysql_query( + 'INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( + "' . $res['id'] . '","' . time() . '","' . date( + 'd.m.Y' + ) . '","0","127.0.0.1","Администрация","Клановое сообщение","Ваш клан достиг уровня ' . $res['level'] . '!" + )' + ); } -$r1 = mysql_fetch_array(mysql_query('SELECT * FROM `aaa_clan_reting_list` WHERE `clan` = "'.$res['id'].'" AND `date` = "'.date('dmY').'" LIMIT 1')); // читаем позицию клана +$r1 = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `aaa_clan_reting_list` WHERE `clan` = "' . $res['id'] . '" AND `date` = "' . date( + 'dmY' + ) . '" LIMIT 1' + ) +); // читаем позицию клана //Права клана -$lvl_prava = array( - 0 => array(8,0,0,0,0,50,20,200), - 1 => array(12,1,0,0,0,50,20,200), - 2 => array(16,1,0,0,0,50,20,200), - 3 => array(20,1,0,0,0,50,20,200), - 4 => array(24,1,1,0,0,100,40,200), - 5 => array(28,1,1,0,0,100,40,200), - 6 => array(32,1,1,0,0,100,40,200), - 7 => array(36,1,1,0,0,200,80,200), - 8 => array(40,1,1,1,1,200,80,200), - 9 => array(44,1,1,1,1,200,80,200), - 10 => array(48,1,1,1,1,200,80,200), - 11 => array(52,1,1,1,1,200,80,200) -) +$lvl_prava = [ + 0 => [8, 0, 0, 0, 0, 50, 20, 200], + 1 => [12, 1, 0, 0, 0, 50, 20, 200], + 2 => [16, 1, 0, 0, 0, 50, 20, 200], + 3 => [20, 1, 0, 0, 0, 50, 20, 200], + 4 => [24, 1, 1, 0, 0, 100, 40, 200], + 5 => [28, 1, 1, 0, 0, 100, 40, 200], + 6 => [32, 1, 1, 0, 0, 100, 40, 200], + 7 => [36, 1, 1, 0, 0, 200, 80, 200], + 8 => [40, 1, 1, 1, 1, 200, 80, 200], + 9 => [44, 1, 1, 1, 1, 200, 80, 200], + 10 => [48, 1, 1, 1, 1, 200, 80, 200], + 11 => [52, 1, 1, 1, 1, 200, 80, 200], +] ?> -
    - - - - -
    - События - info['id'].'" AND `time` > '.(time()-10).' LIMIT 1')); - if(isset($lmsg['id'])) { - $c_r .= 'Нельзя добавлять сообщения чаще одного раза в 10 секунд
    '; - }else{ - $tadd = htmlspecialchars($_POST['textadd'],NULL,'cp1251'); - $ttadd = htmlspecialchars($_POST['titleadd'],NULL,'cp1251'); - if(str_replace(' ','',str_replace(' ','',$tadd)) == '') { - $c_r .= 'Нельзя отправлять пустое событие
    '; - }elseif(str_replace(' ','',str_replace(' ','',$ttadd)) == '') { - $c_r .= 'Нельзя отправлять пустой заголовок
    '; - }else{ - $tadd = str_replace("\n",'
    ',$tadd); - mysql_query('INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( - "'.$res['id'].'","'.time().'","'.date('d.m.Y').'","'.$u->info['id'].'","'.$u->info['ip'].'","'.$u->info['login'].'","'.mysql_real_escape_string($ttadd).'","'.mysql_real_escape_string($tadd).'" - )'); - $c_r .= 'Событие было успешно добавлено
    '; - } - } - }elseif(isset($_GET['delete']) && $tt[2][0] == 1) { - $upd = mysql_query('UPDATE `clan_news` SET `delete` = "'.$u->info['id'].'" WHERE `clan` = "'.$res['id'].'" AND `delete` = "0" AND `uid` != "0" AND `id` = "'.mysql_real_escape_string($_GET['delete']).'" LIMIT 1'); - if($upd) { - $c_r .= 'Событие было успешно удалено
    '; - }else{ - $c_r .= 'Событие не найдено
    '; - } - } - - $dd = date('d'); - $mm = date('m'); - $yy = date('Y'); - - if(isset($_GET['mm'])) { - $mm = ceil((int)$_GET['mm']); - } - if(isset($_GET['dd'])) { - $dd = ceil((int)$_GET['dd']); - } - if(isset($_GET['yy'])) { - $yy = ceil((int)$_GET['yy']); - } - - $mml = ceil($mm)-1; - $mmr = ceil($mm)+1; - $yyl = $yy; - $yyr = $yy; - if($mml < 1) { - $yyl--; - $mml = 12; - } - if($mmr > 12) { - $yyr++; - $mmr = 1; - } - $dds = array('','пн','вт','ср','чт','пт','сб','вс'); - $mms = array('','январь','февраль','март','апрель','май','июнь','июль','август','сентябрь','октябрь','ноябрь','декабрь'); - $num = 0; $lday = 0; - for($i = 0; $i < 7; $i++) - { - $dayofweek = date('w',mktime(0, 0, 0, $mm, $day_count, $yy)); - $dayofweek = $dayofweek - 1; - if($dayofweek == -1) $dayofweek = 6; - - if($dayofweek == $i) - { - $week[$num][$i] = $day_count; - $lday = $day_count; - $day_count++; - }else{ - $week[$num][$i] = ""; - } - } - - function freenews($d,$m,$y) { - global $res; - $r = $d; - if($d < 9) { - $d = '0'.$d; - } - if($m < 9) { - $m = '0'.((int)$m); - } - $n = mysql_fetch_array(mysql_query('SELECT `id` FROM `clan_news` WHERE `clan` = "'.$res['id'].'" AND `delete` = "0" AND `ddmmyyyy` = "'.$d.'.'.$m.'.'.$y.'" LIMIT 1')); - if(isset($n['id'])) { - $r = ''.$r.''; - } - return $r; - } - - $i = 1; - $c_c .= '
    '; - if($tt[2][0] > 0) { - $c_c .= '

    '; - } - $c_c .= '
    <>
    '.$yy.' '.$mms[ceil($mm)].'

    '; - while($i <= 49) { - if($i <= 7) { - $c_c .= ''.$dds[$i].''; - }else{ - if($i-7 > 7) { - $lday++; - if(date('d',mktime(0, 0, 0, $mm, $lday)) == $lday) { - if($lday == date('d') && $mm == ceil(date('m')) && $yy == date('Y')) { - $c_c .= ''.freenews($lday,$mm,$yy).''; - }else{ - $c_c .= ''.freenews($lday,$mm,$yy).''; - } - }else{ - $c_c .= ' '; - } - }else{ - if($week[0][$i-8] > 0) { - if($week[0][$i-8] == date('d') && $mm == ceil(date('m')) && $yy == date('Y')) { - $c_c .= ''.freenews($week[0][$i-8],$mm,$yy).''; - }else{ - $c_c .= ''.freenews($week[0][$i-8],$mm,$yy).''; - } - }elseif($lday > 0) { - $c_c .= ' '; - } - } - } - if($i == 7 || $i == 14 || $i == 21 || $i == 28 || $i == 35 || $i == 42) { - if($lday > 0 || $i != 14) { - $c_c .= '
    '; - } - } - $i++; - } - $c_c .= '
    '; - - if($tt[1][0] == 1) { - $cnftr = ''; - if(isset($_GET['ftr'])) { - if($_GET['ftr'] == 1) { - $dd1 = $dd; - $mm1 = $mm; - $yy1 = $yy; - if($dd1 < 9) { - $dd1 = '0'.$dd1; - } - if($mm1 < 9) { - $mm1 = '0'.$mm1; - } - $cnftr = ' AND `ddmmyyyy` = "'.mysql_real_escape_string($dd1.'.'.$mm1.'.'.$yy1).'"'; - } - } - $pg = round((int)$_GET['pg']); - if($pg < 1) { - $pg = 1; - } - $pgssee = ceil(($pg-1)*5); - - $pgs = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `clan_news` WHERE `clan` = "'.$res['id'].'" AND `delete` = "0"'.$cnftr)); - $pgs = $pgs[0]; - $pga = ceil($pgs/5); - - $i = 1; - while($i <= $pga) { - if($pg == $i) { - $c_p .= ' '.$i.' '; - }else{ - if(isset($_GET['ftr'])) { - $c_p .= ' '.$i.' '; - }else{ - $c_p .= ' '.$i.' '; - } - } - $i++; - } - - if($c_p != '') { - $c_p = 'Страицы: '.$c_p; - } - - $sp = mysql_query('SELECT * FROM `clan_news` WHERE `clan` = "'.$res['id'].'" AND `delete` < 1'.$cnftr.' ORDER BY `id` DESC LIMIT '.mysql_real_escape_string($pgssee).',5'); - while($pl = mysql_fetch_array($sp)) { - if($pl['uid'] > 0) { - $login = $u->microLogin($pl['uid'],1); - if($tt[2][0] == 1){ - $pl['text'] = ''.$pl['text']; - } - }else{ - $login = ''; - } - - $c_r .= ' - - - - - - - -
    '.date('d.m.Y H:i',$pl['time']).'       '.$pl['title'].'
    '.$login.'
    '.$pl['text'].'

    '; - } - } - if($c_r == '') { - $c_r .= '







    Событий пока нет или глава клана не предоставил вам к ним доступ
    '; - } - - ?> - - - - - - - - - -
     
    -
    -
    - - -
    -
    - Тип управления кланом: ДиктатураДемократия -
    - Каналы чата сохранены
    '; - $res['canals'] = $_POST['svb_canals']; - $rce = explode(); - $i = 1; - while($i <= 9) { - - $i++; - } - mysql_query('UPDATE `clan` SET `canals` = "'.mysql_real_escape_string($res['canals']).'" WHERE `id` = "'.$res['id'].'" LIMIT 1'); - }elseif(isset($_POST['svb_site']) && $tt[11][0] == 1) { - echo 'Клановый сайт сохранен
    '; - $res['site'] = $_POST['svb_site']; - $rce = explode(); - $i = 1; - while($i <= 9) { - - $i++; - } - mysql_query('UPDATE `clan` SET `site` = "'.mysql_real_escape_string($res['site']).'" WHERE `id` = "'.$res['id'].'" LIMIT 1'); - - }elseif(isset($_POST['svb_give_money']) && $tt[7][0] == 1) { - $mn = round((int)$_POST['svb_give_money'],2); - if($mn >= 0.01) { - if($res['money1'] < $mn) { - echo 'В клане недостаточно средств
    '; - }else{ - $res['money1'] -= $mn; - $u->info['money'] += $mn; - echo 'Вы успешно сняли с казны клана '.$mn.' кр.
    '; - mysql_query('UPDATE `clan` SET `money1` = "'.mysql_real_escape_string($res['money1']).'" WHERE `id` = "'.$res['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `money` = "'.mysql_real_escape_string($u->info['money']).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `clan_operations` (`clan`,`time`,`type`,`text`,`val`,`uid`) VALUES ("'.$res['id'].'","'.time().'","1","'.$u->info['login'].'","'.mysql_real_escape_string($mn).'","'.$u->info['id'].'")'); - } - } - }elseif(isset($_POST['svb_give_money2']) && $u->info['clan_prava'] == 'glava') { - $mn = round((int)$_POST['svb_give_money2'],2); - if($mn >= 0.01) { - if($res['money2'] < $mn) { - echo 'В клане недостаточно Екр.
    '; - }else{ - - $res['money2'] -= $mn; - $u->info['money2'] += $mn; - echo 'Вы успешно сняли с казны клана '.$mn.' Екр.
    '; - mysql_query('UPDATE `clan` SET `money2` = "'.mysql_real_escape_string($res['money2']).'" WHERE `id` = "'.$res['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `money2` = "'.mysql_real_escape_string($u->info['money2']).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `clan_operations` (`clan`,`time`,`type`,`text`,`val`,`uid`) VALUES ("'.$res['id'].'","'.time().'","3","'.$u->info['login'].'","'.(mysql_real_escape_string($mn)*-1).'","'.$u->info['id'].'")'); - - } - } - }elseif(isset($_POST['svb_take_money']) && $tt[6][0] == 1) { - $mn = round((int)$_POST['svb_take_money'],2); - if($mn >= 0.01) { - if($u->info['money'] < $mn) { - echo 'У вас недостаточно средств
    '; - }elseif($res['money1'] + $mn > 99999) { - echo 'В казне клана не может быть больше 99999кр.
    '; - }else{ - $res['money1'] += $mn; - $u->info['money'] -= $mn; - echo 'Вы успешно положили в казну клана '.$mn.' кр.
    '; - mysql_query('UPDATE `clan` SET `money1` = "'.mysql_real_escape_string($res['money1']).'" WHERE `id` = "'.$res['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `money` = "'.mysql_real_escape_string($u->info['money']).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `clan_operations` (`clan`,`time`,`type`,`text`,`val`,`uid`) VALUES ("'.$res['id'].'","'.time().'","2","'.$u->info['login'].'","'.mysql_real_escape_string($mn).'","'.$u->info['id'].'")'); - } - } - }elseif(isset($_POST['svb_take_money2']) && $tt[6][0] == 1) { - $mn = round((int)$_POST['svb_take_money2'],2); - if($mn >= 0.01) { - if($u->info['money2'] < $mn) { - echo 'У вас недостаточно Екр.
    '; - }else{ - $maxs=mysql_fetch_array(mysql_query('SELECT SUM(`val`) AS val FROM `clan_operations` WHERE `uid` = "'.$u->info['id'].'" AND `clan` = "'.$res['id'].'" AND `type` = 3')); - if (!isset($maxs['val'])){$maxs['val']=0;} - if ($maxs['val']+$mn > 100) - { - echo 'Максимальная сумма взноса: 100 Екр. Можете положить еще: '.(100-$maxs['val']).' Екр.
    '; - } - else - { - $res['money2'] += $mn; - $u->info['money2'] -= $mn; - echo 'Вы успешно положили в казну клана '.$mn.' екр.
    '; - mysql_query('UPDATE `clan` SET `money2` = "'.mysql_real_escape_string($res['money2']).'" WHERE `id` = "'.$res['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `money2` = "'.mysql_real_escape_string($u->info['money2']).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `clan_operations` (`clan`,`time`,`type`,`text`,`val`,`uid`) VALUES ("'.$res['id'].'","'.time().'","3","'.$u->info['login'].'","'.mysql_real_escape_string($mn).'","'.$u->info['id'].'")'); - } - } - } - }elseif(isset($_POST['invite']) && ($_POST['invite'] == 'Принять' || $_POST['invite'] == 'Выгнать' || $_POST['invite'] == 'Назначить') && $tt[11][0] == 1) { - if($_POST['invite'] == "Выгнать" && $tt[10][0] == 1) { - $usr = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['logingo']).'" AND `clan` = "'.$res['id'].'" LIMIT 1')); - //$ttus = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = "'.$usr['clan_prava'].'" LIMIT 1')); - if(!isset($usr['id'])) { - echo 'Игрок не найден в клане
    '; - } elseif($tt['prioritet'] >= $utitl['prioritet']) { - echo 'Игрок старше вас по званию, либо звания совпадают
    '; - } elseif($u->info['money'] < $c_pr[1]) { - echo 'У вас не достаточно кр. для исключения игрока из клана (Требуется: '.$c_pr[1].' кр.)
    '; - } elseif($usr['clan_prava'] == 'galva' && $u->info['clan_prava'] != 'glava') { - echo 'Игрок старше вас по званию, либо звания совпадают
    '; - } else { - $ar = $u->rem_itm_cl($usr, $res['id'], 8); - if ($usr['level'] < 10) - { - mysql_query('UPDATE `users` SET `palpro` = 0, `clan_prava` = 0, `clan` = 0, `clan_zv` = 0, `mod_zvanie` = "", `align` = 0, `clan_delay` = "0" WHERE `id` = "'.$usr['id'].'" LIMIT 1'); - } - else - { - mysql_query('UPDATE `users` SET `palpro` = 0, `clan_prava` = 0, `clan` = 0, `clan_zv` = 0, `mod_zvanie` = "", `align` = 0, `clan_delay` = "'.time().'" WHERE `id` = "'.$usr['id'].'" LIMIT 1'); - } - $u->info['money'] -= $c_pr[1]; - mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $c_r .= 'Игрок "'.$usr['login'].'" был исключен из клана за '.$c_pr[1].' кр.
    '; - $txt = 'Игрок '.$u->info['login'].'['.$u->info['level'].'] исключил из клана игрока '.$usr['login'].'['.$usr['level'].']'; - mysql_query('INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( - "'.$res['id'].'","'.time().'","'.date('d.m.Y').'","0","127.0.0.1","Администрация","Клановое сообщение","'.mysql_real_escape_string($txt).'" - )'); - } - }elseif($_POST['invite'] == "Назначить" && $u->info['clan_prava'] == 'glava') { - $usr = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['logingo']).'" AND `clan` = "'.$res['id'].'" AND `banned` = "0" LIMIT 1')); - if(!isset($usr['id'])) { - echo 'Игрок не найден в клане
    '; - }elseif($u->info['money'] < $c_pr[2]) { - echo 'У вас не достаточно кр. для назначения игрока на пост главы клана (Требуется: '.$c_pr[2].' кр.)
    '; - }elseif($usr['clan_prava'] == 'galva') { - echo 'Игрок уже является главой клана
    '; - }else{ - mysql_query('UPDATE `users` SET `clan_prava` = "glava", `clan` = "'.$res['id'].'", `mod_zvanie` = "глава клана", `align` = "'.$res['align'].'" WHERE `id` = "'.$usr['id'].'" LIMIT 1'); - $u->info['money'] -= $c_pr[2]; - mysql_query('UPDATE `users` SET `clan_prava` = "2", `mod_zvanie` = "новичок", `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $c_r .= 'Игрок "'.$usr['login'].'" был назначен главой клан за '.$c_pr[0].' кр.
    '; - $txt = 'Игрок '.$u->info['login'].'['.$u->info['level'].'] назначил игрока '.$usr['login'].'['.$usr['level'].'] на должность Главы клана'; - mysql_query('INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( - "'.$res['id'].'","'.time().'","'.date('d.m.Y').'","0","127.0.0.1","Администрация","Клановое сообщение","'.mysql_real_escape_string($txt).'" - )'); - } - }elseif($_POST['invite'] == "Принять" && $tt[9][0] == 1) { - $is_cl = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM `users` WHERE `clan` = '".$res['id']."'")); - $usr = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['logingo']).'" AND `clan` != "'.$res['id'].'" AND `clan_zv` = "'.$res['id'].'" LIMIT 1')); - if(!isset($usr['id'])) { - echo 'Подходящий игрок не найден или не подал заявку в Ваш клан.
    '; - }elseif($usr['clan_prava'] == 'galva') { - echo 'Игрок уже является главой клана
    '; - // }elseif($usr['palpro'] < time()) { - // echo 'Игрок должен пройти проверку у паладинов
    '; - }elseif($usr['clan_delay'] + 10*24*60*60 > time()) { - echo 'У игрока задержка на вступление в клан до '.date('d.m.Y H:i',$usr['clan_delay'] + 10*24*60*60).'
    '; - }elseif($u->info['money'] < $c_pr[0]) { - echo 'У вас не достаточно кр. для приема игрока в клан (Требуется: '.$c_pr[0].' кр.)
    '; - }elseif($usr['clan'] != '0' || $usr['align'] != '0') { - echo 'Персонаж уже находится в клане, либо имеет склонность
    '; - } elseif($is_cl[0] >= $lvl_prava[$res['level']][0]) { - echo 'Достигнут лимит приглашений. Повысте уровень клана.
    '; - }else{ - // `palpro` = "'.(time()+86400*7).'", - mysql_query('UPDATE `users` SET `clan_prava` = "2",`clan` = "'.$res['id'].'",`mod_zvanie` = "",`align` = "'.$res['align'].'" WHERE `id` = "'.$usr['id'].'" LIMIT 1'); - $u->info['money'] -= $c_pr[0]; - mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo 'Игрок "'.$usr['login'].'" был принят в клан за '.$c_pr[0].' кр.
    '; - $txt = 'Игрок '.$u->info['login'].'['.$u->info['level'].'] принял в клан игрока '.$usr['login'].'['.$usr['level'].']'; - mysql_query('INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( - "'.$res['id'].'","'.time().'","'.date('d.m.Y').'","0","127.0.0.1","Администрация","Клановое сообщение","'.mysql_real_escape_string($txt).'" - )'); - } - } - } - ?> - 0) { ?> -
    - - (это вам обойдется в кр.)
    - (Для приема в клан персонаж должен подать заявку через Регистратуру Кланов)
    - Список подавших заявку: - '.$plnew['login'].'['.$plnew['level'].']
    '; - } - - ?> -
    -
    - - 0) { ?> -
    - - (это вам обойдется в кр.)
    -
    - - info['clan_prava'] == 'glava') { ?> -
    - (глава клана вправе сложить с себя полномочия, назначив главой клана другого персонажа)
    -
    -
    -
    Клан сайт:

    -
    - - - -
    - - 0) { ?> -
    - Редактирование статуса персонажа - 0 [rp_titul] => 0 [rp_zvanie] => [rp_canals] => - $c_r = ''; - $usr = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.mysql_real_escape_string($_POST['rp_login']).'" AND `clan` = "'.$res['id'].'" LIMIT 1')); - if(isset($usr['id'])) { - if($usr['clan_prava'] != 'glava') { - $tt = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = "'.$usr['clan_prava'].'" LIMIT 1')); - if($tt['prioritet'] < $utitl['prioritet']) { - //новый титул - if((int)$_POST['rp_titul'] > 0) { - $tt_new = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = "'.mysql_real_escape_string($_POST['rp_titul']).'" AND `clan` = "'.$res['id'].'" LIMIT 1')); - if(isset($tt_new['id'])) { - if($tt_new['prioritet'] < $utitl['prioritet']) { - mysql_query('UPDATE `users` SET `clan_prava` = "'.$tt_new['id'].'" WHERE `id` = "'.$usr['id'].'" LIMIT 1'); - $c_r .= 'Игроку "'.$usr['login'].'" был присвоен титул "'.$tt_new['name'].'"
    '; - if($tt_new['prioritet'] < $tt['prioritet']) { - //понижен - $txt = 'Игрок '.$u->info['login'].'['.$u->info['level'].'] понизил титул игроку '.$usr['login'].'['.$usr['level'].'] до "'.$tt_new['name'].'"'; - }else{ - //присвоен - $txt = 'Игрок '.$u->info['login'].'['.$u->info['level'].'] присвоил титул "'.$tt_new['name'].'" игроку '.$usr['login'].'['.$usr['level'].']'; - } - - mysql_query('INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( - "'.$res['id'].'","'.time().'","'.date('d.m.Y').'","0","127.0.0.1","Администрация","Клановое сообщение","'.mysql_real_escape_string($txt).'" - )'); - - }else{ - $c_r .= 'Вы не можете назначать титул старше вашего титула
    '; - } - } - } - mysql_query('UPDATE `users` SET `mod_zvanie` = "'.mysql_real_escape_string($_POST['rp_zvanie']).'",`ccanals` = "'.mysql_real_escape_string($_POST['rp_canals']).'" WHERE `id` = "'.$usr['id'].'" LIMIT 1'); - $c_r .= 'Информация успешно сохранена
    '; - - }else{ - $c_r .= 'Игрок старше вас по званию, либо звания совпадают
    '; // Тут - } - }else{ - $c_r .= 'Игрок старше вас по званию, либо звания совпадают
    '; - } - }else{ - $c_r .= 'Игрок не состоит в клане '.$res['name'].'
    '; - } - } - echo $c_r; - ?> -
    -
    -
    Логин:
    -
    -
    -
    Титул:
    -
    -
    -
    Присвоить титул:
    -
    -
    -
    Реликты
    -
    -
    -
    Звание в клане:
    -
    -
    -
    Каналы чата:

    - (Перепешите через запятую номера доступных каналов. Например: 1,3,7. Доступные каналы: 1-9) -
    -
    -
    -
    -
    -
    Каналы чата:

    - (Перепешите через запятую номера открытых каналов. Например: 2,4,8. Доступные каналы: 1-9) -
    -
    - - - 0 && $res['money2'] > 0 && $u->info['admin'] > 0) { ?> -
    - Заказать изображение -
    - Изображение было успешно загружено на сервер! Воспользоваться им возможно в инвентаре, в разделе "Галерея".
    '; - }elseif(isset($_POST['img_load1type'])) { - - class upload { - - protected function __construct() { } - - static $save_path = 'clan_prw/'; - static $error = ''; - - static function saveimg($name,$max_mb = 2,$exts = 'jpg|png|jpeg|gif',$cnm = '') { - if (isset($_FILES[$name])) { - $f = &$_FILES[$name]; - if (($f['size'] <= $max_mb*1024*1024) && ($f['size'] > 0)) { - if ( - (preg_match('/\.('.$exts.')$/i',$f['name'],$ext))&& - (preg_match('/image/i',$f['type'])) - ) { - - $ext[1] = strtolower($ext[1]); - $fn = uniqid('f_',true).'_'.$cnm.'.'.$ext[1]; - $fn2 = uniqid('f_',true).''; - if (move_uploaded_file($f['tmp_name'], self::$save_path . $fn)) { - // система изменения размера , требуется Rimage - //Rimage::resize(self::$save_path . $fn, self::$save_path . $fn2); - //@unlink(self::$save_path . $fn); // удаление файла - return array($fn2,$fn,self::$save_path . $fn); - } else { - self::$error = 'Ошибка загрузки файла'; - } - } else { - self::$error = 'Неверный тип файла. Допустимые типы : '.$exts.''; - } - } else { - self::$error = 'Неверный размер файла. Максимальный размер файла '.$max_mb.' МБ'; - } - } else { - self::$error = 'Файл не найден'; - } - return false; - } // end saveimg - - } // end class - - $data = array( - 'obraz' => $_FILES['load_image1'], - 'sex' => round((int)$_POST['img_load3type']), - 'w' => '', - 'h' => '', - 'type' => round((int)$_POST['img_load1type']), - 'animation' => round((int)$_POST['img_load2type']) - ); - - $ers = ''; - - if($data['sex'] != 0 && $data['sex'] != 1) { - $ers = 'Ошибка! Вы не выбрали пол кому будет доступно изображение!'; - }elseif($data['animation'] != 0 && $data['animation'] != 1) { - $ers = 'Ошибка! Вы не выбрали тип изображения: Анимированное, не анимированное!'; - }elseif($data['type'] < 1 || $data['type'] > 18) { - $ers = 'Ошибка! Вы не выбрали тип слота замещения изображения!'; - } - - if($res['id'] !=2) { - //$ers = 'NO!'; - } - - $types = array( - 1 => array('Образ',120,220,100), - 2 => array('Заглушка (снизу)',120,40,15), - 3 => array('Заглушка (сверху)',120,20,5), - 4 => array('Шлем',60,60,25), - 5 => array('Наручи',60,40,25), - 6 => array('Левая рука',60,60,25), - 7 => array('Правая рука',60,60,25), - 8 => array('Броня',60,80,25), - 9 => array('Пояс',60,40,25), - 10 => array('Ботинки',60,40,25), - 11 => array('Поножи',60,80,25), - 12 => array('Перчатки',60,40,25), - 13 => array('Кольца №1',20,20,10), - 14 => array('Кулон',60,20,25), - 15 => array('Серьги',60,20,25), - 16 => array('Заглушка под информацию о персонаже',244,287,5), - 17 => array('Кольцо №2',20,20,10), - 18 => array('Кольцо №3',20,20,10) - ); - - $data['price'] = $types[$data['type']][3]; - - - if($data['price'] > $res['money2']) { - $ers = 'Ошибка! В казне клана недостаточно Евро-кредитов для приобретения данного изображения.'; - } - - if($ers != '') { - echo ''.$ers.'
    '; - }else{ - /* Сохраняем изображение */ - $imgname = md5(rand(0,1000000000000).'&'.rand(0,10000000).'&'.microtime()); - if($file = upload::saveimg('load_image1',0.35,'jpg|png|jpeg|gif',$imgname)) { - $size = getimagesize ("https://new-combats.com/clan_prw/".htmlspecialchars($file[1],NULL,'cp1251').""); - - $bag = 0; - - if($types[$data['type']][1] != $size[0] || $types[$data['type']][2] != $size[1]) { - $bag = 1; - } - - mysql_query('INSERT INTO `reimage` (`login`,`uid`,`time`,`src`,`clan`,`type`,`sex`,`animation`,`w`,`h`,`bag`) VALUES ( - "'.$u->info['login'].'", - "'.$u->info['id'].'","'.time().'", - "'.mysql_real_escape_string(htmlspecialchars($file[1],NULL,'cp1251')).'", - "'.$u->info['clan'].'", - "'.mysql_real_escape_string($data['type']).'", - "'.mysql_real_escape_string($data['sex']).'", - "'.mysql_real_escape_string($data['animation']).'", - "'.mysql_real_escape_string((int)$size[0]).'", - "'.mysql_real_escape_string((int)$size[1]).'", - "'.$bag.'" - )'); - - $res['money2'] -= $data['price']; - - mysql_query('UPDATE `clan` SET `money2` = "'.$res['money2'].'" WHERE `id` = "'.$res['id'].'" LIMIT 1'); - die(''); - }else{ - echo ''.upload::$error.'
    '; - } - } - } - - ?> -
    -
    -
    - Размер изображения не должен привышать 350 кб! -
    -
    - Внимание! - Изображения нарушающие правила игры, правила публикации изображения, либо содержащие элементы оскорбляющие достоинство других людей будут блокироваться без компенсации денежных средств и без возможности замены изображения на новое. -
    -
    - -
    - Казна клана -
    - Кр. в казне клана: -
    - 0) { ?> - Забрать из казны Кр: - -
    - 0) { ?> -
    -
    - Положить Кр в казну: - (при себе: info['money']?>кр.) -
    -
    - - -
    -
    - Екр. в казне клана: .
    -
    - info['clan_prava'] == 'glava') { ?> -
    - Забрать из казны Екр: - -
    - - - 0) { ?> -
    -
    - Положить Екр в казну: - (при себе: info['money2']?>кр.) -
    -
    - - -
    - - 0 && $tt[3][0] == 1) { ?> -
    -
    - Заказать выписку для хранилища: (услуга стоит 1кр.) -
    -
    - - - Остроумно, но здесь так делать нельзя :-)
    ', - 'Это будет очень сложно сделать, Ваши сокланы против!
    ', - 'Не уподобляйтесь большинству, защищайте интересы своего клана!
    '); - echo $rn[rand(0,2)]; - }elseif($clnta['global'] < $clntn['global']/2 ) { - echo 'Противник слишком слаб
    '; - }elseif($cln['join1'] == $res['join1'] && $res['join1'] > 0) { - echo 'Вы состоите в союзе с этим кланом
    '; - }elseif($cln['join2'] == $res['join2'] && $res['join2'] > 0) { - echo 'Вы состоите в альянсе с этим кланом
    '; - }else{ - $lwar = mysql_fetch_array(mysql_query('SELECT * FROM `clan_wars` WHERE `time_finish` > '.time().' AND ((`clan1` = "'.$cln['id'].'" AND `clan2` = "'.$res['id'].'") OR (`clan2` = "'.$cln['id'].'" AND `clan1` = "'.$res['id'].'")) LIMIT 1 ')); - if(!isset($lwar['id'])) { - $mkr = 10; $tpcw = 1; - if($_POST['RadioGroup1'] == 2) { - $mkr = 20; $tpcw = 2; - } - if(isset($lwar['id'])) { // было true == true - echo 'Нельзя обьявить войну прямо сейчас
    '; - }elseif($mkr > $res['money2']) { - echo 'В казне клана не достаточно средств
    '; - }else{ - mysql_query('UPDATE `clan` SET `money2` = `money2` - '.$mkr.' WHERE `id` = "'.$res['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `clan_wars` (`clan1`,`clan2`,`time_start`,`time_finish`,`type`,`text`) VALUES ("'.$res['id'].'","'.$cln['id'].'","'.time().'","'.(time()+60*60*24).'","'.$tpcw.'","Война!")'); - mysql_query('INSERT INTO `clan_operations` (`clan`,`time`,`type`,`text`,`val`,`uid`) VALUES ("'.$res['id'].'","'.time().'","4","'.$u->info['login'].'","clanwar_'.$mkr.'_'.$cln['id'].'","'.$u->info['id'].'")'); - echo 'Вы успешно обьявили войну клану "'.$cln['name'].'" за '.$mkr.' екр.
    '; - } - }else{ - echo 'Вы уже ведете войну с данным кланом
    '; - } - } - }else{ - echo 'Клан с таким названием не найден
    '; - } - } - } - - ?> -

    -
    - Клановые войны - "'.time().'" LIMIT 1')); - $warc = $warc[0]; - if($tt[14][0] == 1){ - if ($warc<3) - { - ?> - - Зафиксированны войны: '.$warc.' шт.
    '; - } - else - { - echo 'У Вашего клана уже 3 и более войн
    '; - } - - } - ?> -
    -
    - "'.time().'"'); - while($pl = mysql_fetch_array($sp)) { - $cln1 = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.$pl['clan1'].'" LIMIT 1')); - $cln2 = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.$pl['clan2'].'" LIMIT 1')); - $ms .= '
    Война между кланами '.$cln1['name'].' и '.$cln2['name'].'.
    '; - if($pl['text'] != '') { - $ms .= 'Причина войны: '.$pl['text'].'
    '; - } - $ms .= 'Время войны: '.date('d.m.Y H:i',$pl['time_start']).' - '.date('d.m.Y H:i',$pl['time_finish']).'
    '; - } - if($ms == '') { - ?> - В данный момент Ваш клан не ведет войн. - -
    -
    -
    - Союзы и альянсы - Ваш клан уже подал заявку в данный союз
    '; - }elseif($res['join1'] > 0) { - echo 'Ваш клан уже находится в союзе
    '; - }else{ - mysql_query('UPDATE `clan` SET `join1` = "'.$cnm['id'].'" WHERE `id` = "'.$res['id'].'" LIMIT 1'); - echo 'Вы успешно подали заявку в союз "'.$cnm['name'].'"
    '; - mysql_query('INSERT INTO `clan_join` (`clan`,`alians`,`time`,`type`) VALUES ("'.$res['id'].'","'.$cnm['id'].'","'.time().'","1")'); - } - }else{ - echo 'Альянс или союз с такиим названием не существует
    '; - } - }else{ - //вступление в альянс - $nm = htmlspecialchars($_POST['logingo'],NULL,'cp1251'); - $cnm = mysql_fetch_array(mysql_query('SELECT * FROM `clan_joint` WHERE `name` = "'.mysql_real_escape_string($nm).'" AND `type` = "2" LIMIT 1')); - if(isset($cnm['id'])) { - $cnmz = mysql_fetch_array(mysql_query('SELECT * FROM `clan_join` WHERE `alians` = "'.$cnm['id'].'" AND `clan` = "'.$res['id'].'" AND `time_end` = "0" AND `time_start` = "0" AND `type` = "2" LIMIT 1')); - if(isset($cnmz['id'])) { - echo 'Ваш клан уже подал заявку в данный альянс
    '; - }elseif($res['join1'] == 0) { - echo 'Для вступления в альянс требуется вступить в союз
    '; - }elseif($res['join2'] > 0) { - echo 'Ваш клан уже находится в альянсе
    '; - }else{ - mysql_query('UPDATE `clan` SET `join1` = "'.$cnm['id'].'" WHERE `id` = "'.$res['id'].'" LIMIT 1'); - echo 'Вы успешно подали заявку в альянс "'.$cnm['name'].'"
    '; - mysql_query('INSERT INTO `clan_join` (`clan`,`alians`,`time`,`type`) VALUES ("'.$res['id'].'","'.$cnm['id'].'","'.time().'","2")'); - } - }else{ - echo 'Альянс или союз с такиим названием не существует
    '; - } - } - }elseif(isset($_GET['newjoint']) && $tt[13][0] == 1) { - if($_GET['newjoint'] == 1) { - //союзы - if($res['join1'] > 0) { - echo 'Ваш клан уже состоит в союзе
    '; - }else{ - $nm = htmlspecialchars($_POST['logingo'],NULL,'cp1251'); - if(str_replace(' ','',str_replace(' ','',$nm)) == '') { - echo 'Введите название союза
    '; - }else{ - $cnm = mysql_fetch_array(mysql_query('SELECT `id` FROM `clan_joint` WHERE `name` = "'.mysql_real_escape_string($nm).'" LIMIT 1')); - if(!isset($cnm['id'])) { - mysql_query('INSERT INTO `clan_joint` (`time_open`,`name`,`type`,`clan_open`,`clan_glava`) VALUES ("'.time().'","'.mysql_real_escape_string($nm).'","1","'.$res['id'].'","'.$res['id'].'")'); - $id = mysql_insert_id(); - $res['join1'] = $id; - mysql_query('INSERT INTO `clan_join` (`clan`,`alians`,`time`,`type`,`time_start`) VALUES ("'.$res['id'].'","'.$id.'","'.time().'","1","'.time().'")'); - mysql_query('UPDATE `clan` SET `join1` = "'.$id.'" WHERE `id` = "'.$res['id'].'" LIMIT 1'); - echo 'Вы успешно создали союз "'.$nm.'"
    '; - }else{ - echo 'Альянс или союз с такиим названием уже существует
    '; - } - } - } - }else{ - //альянсы - if($res['join1'] == 0) { - echo 'Ваш клан должен состоять в союзе
    '; - }elseif($res['join2'] > 0) { - echo 'Ваш клан уже состоит в альянсе
    '; - }else{ - $nm = htmlspecialchars($_POST['logingo'],NULL,'cp1251'); - if(str_replace(' ','',str_replace(' ','',$nm)) == '') { - echo 'Введите название альянса
    '; - }else{ - $cnm = mysql_fetch_array(mysql_query('SELECT `id` FROM `clan_joint` WHERE `name` = "'.mysql_real_escape_string($nm).'" LIMIT 1')); - if(!isset($cnm['id'])) { - mysql_query('INSERT INTO `clan_joint` (`time_open`,`name`,`type`,`clan_open`,`clan_glava`) VALUES ("'.time().'","'.mysql_real_escape_string($nm).'","2","'.$res['id'].'","'.$res['id'].'")'); - $id = mysql_insert_id(); - $res['join2'] = $id; - mysql_query('INSERT INTO `clan_join` (`clan`,`alians`,`time`,`type`,`time_start`) VALUES ("'.$res['id'].'","'.$id.'","'.time().'","2","'.time().'")'); - mysql_query('UPDATE `clan` SET `join2` = "'.$id.'" WHERE `id` = "'.$res['id'].'" LIMIT 1'); - echo 'Вы успешно создали альянс "'.$nm.'"
    '; - }else{ - echo 'Альянс или союз с такиим названием уже существует
    '; - } - } - } - } - }elseif(isset($_GET['cancel']) && $tt[13][0] == 1) { - $zvn = mysql_fetch_array(mysql_query('SELECT * FROM `clan_join` WHERE `id` = "'.mysql_real_escape_string($_GET['cancel']).'" AND `time_start` = "0" AND `time_end` = "0" LIMIT 1')); - if(!isset($zvn['id'])) { - echo 'Заявка на вступление не найдена
    '; - }else{ - $rzv = ''; - if($zvn['clan'] == $res['id']) { - //отмена присоединения - $szu = mysql_fetch_array(mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "'.$zvn['alians'].'" LIMIT 1')); - if($szu['type'] == 1) { - $rzv = 'Клан '.$res['name'].' отказался от присоединения к союзу '.$szu['name'].'.'; - }else{ - $rzv = 'Клан '.$res['name'].' отказался от присоединения к альянсу '.$szu['name'].'.'; - } - }elseif($zvn['alians'] == $res['join1']) { - //отказ в присоединении к союзу - $szu = mysql_fetch_array(mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "'.$zvn['alians'].'" LIMIT 1')); - $zvy = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.$zvn['clan'].'" LIMIT 1')); - $rzv = 'Союз '.$szu['name'].' отказал клану '.$zvy['name'].' в присоединении.'; - }elseif($zvn['alians'] == $res['join2']) { - //отказ в присоединении к альянсу - $szu = mysql_fetch_array(mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "'.$zvn['alians'].'" LIMIT 1')); - $zvy = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.$zvn['clan'].'" LIMIT 1')); - $rzv = 'Альянс '.$szu['name'].' отказал клану '.$zvy['name'].' в присоединении.'; - } - if($rzv != '') { - echo ''.$rzv.'
    '; - mysql_query('UPDATE `clan_join` SET `time_end` = "'.time().'" WHERE `id` = "'.$zvn['id'].'"'); - } - } - }elseif(isset($_GET['ok']) && $tt[13][0] == 1) { - $zvn = mysql_fetch_array(mysql_query('SELECT * FROM `clan_join` WHERE `id` = "'.mysql_real_escape_string($_GET['ok']).'" AND `time_start` = "0" AND `time_end` = "0" LIMIT 1')); - if(!isset($zvn['id'])) { - echo 'Заявка на вступление не найдена
    '; - }else{ - $rzv = ''; - if($zvn['alians'] == $res['join1']) { - //присоединение к союзу - $szu = mysql_fetch_array(mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "'.$zvn['alians'].'" LIMIT 1')); - $zvy = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.$zvn['clan'].'" LIMIT 1')); - $rzv = 'Союз '.$szu['name'].' принял клан '.$zvy['name'].'.'; - mysql_query('UPDATE `clan_join` SET `time_end` = "'.time().'" WHERE `id` != "'.$zvn['id'].'" AND `clan` = "'.$szu['clan'].'" AND `type` = "1"'); - //mysql_query('INSERT INTO `clan_join` (`clan`,`alians`,`time`,`type`) VALUES ("'.$res['id'].'","'.$szu['id'].'","'.time().'","1")'); - mysql_query('UPDATE `clan` SET `join1` = "'.$zvn['alians'].'" WHERE `id` = "'.$szu['id'].'"'); - }elseif($zvn['alians'] == $res['join2']) { - //присоединение к альянсу - $szu = mysql_fetch_array(mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "'.$zvn['alians'].'" LIMIT 1')); - $zvy = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.$zvn['clan'].'" LIMIT 1')); - $rzv = 'Альянс '.$szu['name'].' принял клан '.$zvy['name'].'.'; - mysql_query('UPDATE `clan_join` SET `time_end` = "'.time().'" WHERE `id` != "'.$zvn['id'].'" AND `clan` = "'.$szu['clan'].'" AND `type` = "2" AND `time_end` = "0"'); - //mysql_query('INSERT INTO `clan_join` (`clan`,`alians`,`time`,`type`) VALUES ("'.$res['id'].'","'.$szu['id'].'","'.time().'","2")'); - mysql_query('UPDATE `clan` SET `join2` = "'.$zvn['alians'].'" WHERE `id` = "'.$szu['id'].'"'); - } - if($rzv != '') { - echo ''.$rzv.'
    '; - mysql_query('UPDATE `clan_join` SET `time_start` = "'.time().'" WHERE `id` = "'.$zvn['id'].'"'); - } - } - } - ?> - 0) { ?> - - - 0) { ?> - - -

    -
    - 0) { - $j1 = mysql_fetch_array(mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "'.$res['join1'].'" LIMIT 1')); - if(isset($j1['id'])) { - $ms .= '
    '; - $ms .= 'Вы состоите в клановом союзе '.$j1['name'].'.'; - if( $j1['clan_glava'] != $res['id'] ) { - $ms .= ' '; - } - $ms .= '
    Состав союза: '; - //$ms .= ''.$res['name'].''; - $i = 0; - if( isset($_GET['delclanme']) ) { - if( $j1['clan_glava'] != $res['id'] && ($u->info['clan_prava'] == 'glava' || $u->info['admin'] > 0) ) { - $dels = mysql_fetch_array(mysql_query('SELECT * FROM `clan_join` WHERE `clan` = "'.$res['id'].'" AND `alians` = "'.$j1['id'].'" AND `time_end` = "0" AND `time_start` > 0 LIMIT 1')); - if(isset($dels['id'])) { - mysql_query('UPDATE `clan` SET `join1` = "0" WHERE `id` = "'.$res['id'].'" LIMIT 1'); - mysql_query('UPDATE `clan_join` SET `time_end` = "'.time().'" WHERE `id` = "'.$dels['id'].'" LIMIT 1'); - echo '
    Вы успешно покинули союз "'.$j1['name'].'"
    '; - header('location: main.php?clan&diplom'); - }else{ - echo '
    Ваш клан не состоит в данном союзе
    '; - - } - }else{ - echo '
    Вы не можете покинуть данный союз
    '; - } - }elseif( $j1['clan_glava'] == $res['id'] && ($u->info['clan_prava'] == 'glava' || $u->info['admin'] > 0) ) { - if( isset($_GET['delclan']) ) { - $delc = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.mysql_real_escape_string($_GET['delclan']).'" LIMIT 1')); - $dels = mysql_fetch_array(mysql_query('SELECT * FROM `clan_join` WHERE `clan` = "'.$delc['id'].'" AND `alians` = "'.$j1['id'].'" AND `time_end` = "0" AND `time_start` > 0 LIMIT 1')); - - if( isset($delc['id']) && isset($dels['id']) ) { - if( $delc['id'] != $res['id'] ) { - mysql_query('UPDATE `clan` SET `join1` = "0" WHERE `id` = "'.$dels['id'].'" LIMIT 1'); - mysql_query('UPDATE `clan_join` SET `time_end` = "'.time().'" WHERE `id` = "'.$dels['id'].'" LIMIT 1'); - echo '
    Клан "'.$delc['name'].'" был исключен из данного союза
    '; - header('location: main.php?clan&diplom'); - }else{ - echo '
    Клан ответственный за союз не может покинуть данный союз
    '; - } - }else{ - echo '
    Клан не состоит в данном союзе
    '; - } - } - } - $sp1 = mysql_query('SELECT `u`.*,`s`.* FROM `clan_join` AS `u` LEFT JOIN `clan` AS `s` ON `s`.`id` = `u`.`clan` WHERE `u`.`alians` = "'.$j1['id'].'" AND `u`.`time_end` = "0" AND `u`.`time_start` > 0'); - while($pl1 = mysql_fetch_array($sp1)) { - if($i > 0) { - $ms .= ','; - } - $ms .= ' '.$pl1['name'].''; - if( $j1['clan_glava'] == $res['id'] ) { - if($res['id'] != $pl1['clan']) { - if($u->info['clan_prava'] == 'glava' || $u->info['admin'] > 0) { - $ms .= ' '; - } - } - } - $i++; - } - if( $j1['clan_glava'] == $res['id'] && ($u->info['clan_prava'] == 'glava' || $u->info['admin'] > 0) ) { - $ms .= '
    Вы основатель союза, можете ограничить каналы союза чата:
    '; - $cnls = 'выключено'; - //$ms .= '
    '.$res['name'].'   '.$cnls.'  
    '; - $sp1 = mysql_query('SELECT `u`.*,`s`.* FROM `clan_join` AS `u` LEFT JOIN `clan` AS `s` ON `s`.`id` = `u`.`clan` WHERE `u`.`alians` = "'.$j1['id'].'" AND `u`.`time_end` = "0" AND `u`.`time_start` > 0'); - while($pl1 = mysql_fetch_array($sp1)) { - $ms .= '
    '.$pl1['name'].'   '.$cnls.'  
    '; - } - } - //Перечисляем открытые каналы клана - - $ms .= '
    '; - } - } - if($res['join2'] > 0) { - $j1 = mysql_fetch_array(mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "'.$res['join2'].'" LIMIT 1')); - if(isset($j1['id'])) { - $ms .= '
    '; - $ms .= 'Вы состоите в клановом альянсе '.$j1['name'].'. Состав альянса: '; - //$ms .= ''.$res['name'].''; - $sp1 = mysql_query('SELECT `u`.*,`s`.* FROM `clan_join` AS `u` LEFT JOIN `clan` AS `s` ON `s`.`id` = `u`.`clan` WHERE `u`.`alians` = "'.$j1['id'].'" AND `u`.`time_end` = "0" AND `u`.`time_start` > 0'); - $i = 0; - while($pl1 = mysql_fetch_array($sp1)) { - if($i > 0) { - $ms .= ', '; - } - $ms .= ''.$pl1['name'].''; - $i++; - } - $ms .= '
    Вы основатель альянса.
    '; - $ms .= '
    '; - } - } - - //Союзы и альянсы в которых состоит клан - - - if($ms == '') { - ?> -
    В данный момент у вашего клана нет дипломатических отношений.
    - -
    - -
    -
    Заявки на союзы
    -
    - - - - - -
    -
    - Ваши заявки на установление союза -
    -
    - Вы подали заявку на вступление в союз '.$suz['name'].'.
    Время подачи заявки: '.date('d.m.Y H:i',$pl['time']).'
    Отменить
    '; - } - if($ms == '') { - ?> - С Вами никто не подавал заявки - - -
    -
    - Заявки на установление союза с вами -
    -
    - Клан '.$clz['name'].' подал заявку на вступление в Ваш союз '.$suz['name'].'.
    Время подачи заявки: '.date('d.m.Y H:i',$pl['time']).'

    '; - } - if($ms == '') { - ?> - С Вами никто не подавал заявки - - -
    -
    -
    Заявки на альянсы
    -
    - - - - - -
    -
    - Ваши заявки на установление альянса -
    -
    - Вы подали заявку на вступление в альянс '.$suz['name'].'.
    Время подачи заявки: '.date('d.m.Y H:i',$pl['time']).'
    Отменить
    '; - } - if($ms == '') { - ?> - С Вами никто не подавал заявки - - -
    -
    - Заявки на установление альянса с вами -
    -
    - Клан '.$clz['name'].' подал заявку на вступление в Ваш альянс '.$suz['name'].'.
    Время подачи заявки: '.date('d.m.Y H:i',$pl['time']).'

    '; - } - if($ms == '') { - ?> - С Вами никто не подавал заявки - - -
    - -
    - = 0 AND `iu`.`delete` = "0" - AND `iu`.`id` = "'.mysql_real_escape_string($_GET['ungive_itm']).'" LIMIT 1')); - $ps = $u->lookStats($itms['data']); - $ps['cl'] = explode('#', $ps['toclan']); - $use_s = $ps['cl'][1]; - if(isset($_GET['ungive_itm']) && $ps['cl'][0] == $res['id'] && ($tt[14][0] == 1 || ($u->info['id'] == $use_s))) { - $itm = mysql_fetch_array(mysql_query('SELECT `iu`.*,`im`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `iu`.`item_id` = `im`.`id` WHERE `iu`.`uid` >= 0 AND `iu`.`delete` = "0" - AND `iu`.`id` = "'.mysql_real_escape_string($_GET['ungive_itm']).'" LIMIT 1')); - if(isset($itm['id'])) { - $btlud = mysql_fetch_array(mysql_query('SELECT `id`,`battle` FROM `users` WHERE `id` = "'.$itm['uid'].'" LIMIT 1')); - if( $u->testBattle($btlud['battle']) == true ) { - echo 'Нельзя изымать предметы с персонажа в бою
    '; - }else{ - echo $u->ungive_itm_cl($_GET['ungive_itm'], $u->info, $res['id']); - } - } - } elseif(isset($_GET['take_itm']) && $tt[4][0] == 1) { - $itm = mysql_fetch_array(mysql_query('SELECT `iu`.*,`im`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `iu`.`item_id` = `im`.`id` WHERE `iu`.`uid`="-21'.$res['id'].'" AND `iu`.`delete`="0" - AND `iu`.`id` = "'.mysql_real_escape_string($_GET['take_itm']).'" LIMIT 1')); - if(isset($itm['id'])) { - echo $u->take_itm_cl($_GET['take_itm'], $u->info, $res['id']); - } - } elseif(isset($_GET['give_itm'])) { - $itm = mysql_fetch_array(mysql_query('SELECT `iu`.*,`im`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `iu`.`item_id` = `im`.`id` WHERE `iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `im`.`inslot` > 0 AND `iu`.`gift` = "" AND `iu`.`data` NOT LIKE "%frompisher=%" - AND `iu`.`id` = "'.mysql_real_escape_string($_GET['give_itm']).'" LIMIT 1')); - if($itmc >= $lvl_prava[$res['level']][5]) { - echo 'Хранилище переполнено
    '; - } elseif(isset($itm['id'])) { - echo $u->set_cl_item($_GET['give_itm'], $u->info, $res['id']); - } - } - if($tt[4][0] == 1) { - $itm_clan = $u->genInv(66, '(`iu`.`uid` = "-21'.$u->info['clan'].'" OR `iu`.`data` LIKE "%toclan='.$u->info['clan'].'#%") AND `iu`.`delete` = 0 AND `iu`.`inShop` = 0 ORDER BY `lastUPD` DESC'); - } else { - $itm_clan[2] = '

    У вас нет доступа к использованию хранилища
    '; - } - $itm_user = $u->genInv(65, '`iu`.`uid` = '.$u->info['id'].' AND `iu`.`delete` = 0 AND `iu`.`inOdet` = 0 AND `iu`.`inShop` = 0 AND `im`.`inslot` > 0 AND `iu`.`gift` = "" AND `iu`.`data` NOT LIKE "%frompisher=%" ORDER BY `lastUPD` DESC'); - - ?> -
    - - - - - -
    -
    - Хранилище (предметов : /) - - - -
    -
    Хранилище клана пусто

    '; } ?> -
    -
    -
    - Рюкзак - - - -
    -
    Рюкзак пуст

    '; } ?> -
    -
    -
    - - -
    - = 20) { - echo 'Нельзя добавлять более 25-ти титулов, для добавления нового сотрите старые
    '; - }else{ - $nm = htmlspecialchars($_POST['tituladd'],NULL,'cp1251'); - if(str_replace(' ','',str_replace(' ','',$nm)) == '') { - echo 'Название титула не должно быть пустым
    '; - }else{ - mysql_query('INSERT INTO `clan_tituls` (`clan`,`user_add`,`time_add`,`name`) VALUES ("'.$res['id'].'","'.$u->info['id'].'","'.time().'","'.mysql_real_escape_string($nm).'")'); - echo 'Титул был успешно добавлен
    '; - } - } - }elseif(isset($_GET['save'])) { - //сохраняем титул - $tc = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `clan` = "'.$res['id'].'" AND `id` = "'.mysql_real_escape_string($_GET['save']).'" AND `delete` = "0" LIMIT 1')); - if(isset($tc['id'])) { - $tc['info'] = htmlspecialchars($_POST['t_info'],NULL,'cp1251'); - $i = 1; - $tc['canals'] = ''; - while($i <= 9) { - if($_POST['t_klan'.$i]) { - $tc['canals'] .= '1'; - }else{ - $tc['canals'] .= '0'; - } - $i++; - } - $i = 0; - $tc['prava'] = ''; - while($i <= 20) { - if($_POST['t_tr'.$i]) { - $tc['prava'] .= '1'; - }else{ - $tc['prava'] .= '0'; - } - $i++; - } - $_POST['colorsp'] = preg_replace('/[^a-zа-яё0-9]/i','',$_POST['colorsp']); - // Тут - - if($tc['prava'][11] == 1) - { - mysql_query('UPDATE `clan_tituls` SET `prioritet` = 1, `info` = "'.mysql_real_escape_string($tc['info']).'", `color` = "'.mysql_real_escape_string($_POST['colorsp']).'", `canals` = "'.$tc['canals'].'", `prava` = "'.$tc['prava'].'" WHERE `id` = "'.$tc['id'].'" LIMIT 1'); - } - else - { - mysql_query('UPDATE `clan_tituls` SET `prioritet` = 0, `info` = "'.mysql_real_escape_string($tc['info']).'", `color` = "'.mysql_real_escape_string($_POST['colorsp']).'", `canals` = "'.$tc['canals'].'", `prava` = "'.$tc['prava'].'" WHERE `id` = "'.$tc['id'].'" LIMIT 1'); - } - echo 'Титул был успешно сохранен
    '; - }else{ - echo 'Титул не найден
    '; - } - }elseif(isset($_GET['delete'])) { - $tc = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `clan` = "'.$res['id'].'" AND `id` = "'.mysql_real_escape_string($_GET['delete']).'" AND `delete` = "0" LIMIT 1')); - if(isset($tc['id'])) { - mysql_query('UPDATE `clan_tituls` SET `delete` = "'.$u->info['id'].'" WHERE `id` = "'.$tc['id'].'" LIMIT 1'); - echo 'Титул был удален
    '; - }else{ - echo 'Титул не найден
    '; - } - } -?> - - - -
    - - *   - - + if ($tc['prava'][11] == 1) { + mysql_query( + 'UPDATE `clan_tituls` SET `prioritet` = 1, `info` = "' . mysql_real_escape_string( + $tc['info'] + ) . '", `color` = "' . mysql_real_escape_string( + $_POST['colorsp'] + ) . '", `canals` = "' . $tc['canals'] . '", `prava` = "' . $tc['prava'] . '" WHERE `id` = "' . $tc['id'] . '" LIMIT 1' + ); + } else { + mysql_query( + 'UPDATE `clan_tituls` SET `prioritet` = 0, `info` = "' . mysql_real_escape_string( + $tc['info'] + ) . '", `color` = "' . mysql_real_escape_string( + $_POST['colorsp'] + ) . '", `canals` = "' . $tc['canals'] . '", `prava` = "' . $tc['prava'] . '" WHERE `id` = "' . $tc['id'] . '" LIMIT 1' + ); + } + echo 'Титул был успешно сохранен
    '; + } else { + echo 'Титул не найден
    '; + } + } elseif (isset($_GET['delete'])) { + $tc = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_tituls` WHERE `clan` = "' . $res['id'] . '" AND `id` = "' . mysql_real_escape_string( + $_GET['delete'] + ) . '" AND `delete` = "0" LIMIT 1' + ) + ); + if (isset($tc['id'])) { + mysql_query( + 'UPDATE `clan_tituls` SET `delete` = "' . $u->info['id'] . '" WHERE `id` = "' . $tc['id'] . '" LIMIT 1' + ); + echo 'Титул был удален
    '; + } else { + echo 'Титул не найден
    '; + } + } + ?> + - + function ssclrttl() { + if ($('#clrttl').css('display') == 'none') { + $('#clrttl').css({'display': ''}); + } else { + $('#clrttl').css({'display': 'none'}); + } + } + + +
    - if($i == 0) { - echo 'В клане нет ни одного титула'; - } - ?> - -
    - -
    -
    - Права персонажа "info['login']?>" -
    - Звание в клане: info['clan_prava'] != 'glava') { - echo $u->info['moder_zvanie']; - }else{ - echo 'глава клана'; - } - - ?> -
    -
    - Титул:   -   -
    -
    - Каналы чата: - klan-'.$j.', '; - } - $j++; - } - echo rtrim($r,', '); - ?> -
    - -
    -
    + *   + + - - -
    -
    - -
    -
    - Название клана: () +
    + +
    -
    - Уровень клана: + +
    +
    + Права персонажа "info['login'] ?>" +
    + Звание в клане: info['clan_prava'] != 'glava') { + echo $u->info['moder_zvanie']; + } else { + echo 'глава клана'; + } + + ?> +
    +
    + Титул:   -   +
    +
    + Каналы чата: + klan-' . $j . ', '; + } + $j++; + } + echo rtrim($r, ', '); + ?> +
    + +
    +
    + •
    +
    + + +
    -
    - Позиция клана: -
    -
    - Опыт клана: / -
    -
    - % + +
    +
    + Название клана: () +
    +
    + Уровень клана: +
    +
    + Позиция клана: +
    +
    + Опыт клана: / +
    +
    + % +
    +
    +
    +
    + + + + + + + + + + + + + + + + +
    Статистика кланового опыта:• За сегодня:
     • За неделю:
     • За месяц:
    +
    +
    + + + + + + + + + + + + + = $i) { + $bgclr = ' bgcolor="#8fd155"'; + } + if ($i < count($lvl_prava) - 1) { + ?> + > + + + + + + + + + + + + > + + + + + + + + + + + +
    + Уровень + Игроки + Союз + Создать союз + Альянс + Создать альянс + Хранилище + Передач на игрока + Передач всего
    + +
    +
    + Соклановцы + + + + + +
    + '; + $j = 0; + $i = 0; + if ($res['join1'] > 0 || $res['join2'] > 0) { + $r .= '
    + Основной состав'; + } + while ($pl = mysql_fetch_array($sp)) { + if (!isset($_GET['online']) || $pl['online'] > time() - 120) { + $pl['textcolor1'] = ''; + if ($pl['online'] > time() - 120) { + $ico = ''; + $j++; + } else { + $pl['textcolor1'] = '#837f82'; + $ico = ''; + } + $zvn = $pl['mod_zvanie']; + $zvn = str_replace('[b]', '', $zvn); + $zvn = str_replace('[/b]', '', $zvn); + $zvn = str_replace('[i]', '', $zvn); + $zvn = str_replace('[/i]', '', $zvn); + $zvn = str_replace('[u]', '', $zvn); + $zvn = str_replace('[/u]', '', $zvn); + $zvn = str_replace('[c=', '', $zvn); + $zvn = str_replace('[/c]', '', $zvn); + if ($pl['clan_prava'] == 'glava') { + if ($zvn == 'Стажер' || $zvn == '') { + $zvn = 'глава клана'; + } + $zvn = '' . $zvn; + } + $ttl = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_tituls` WHERE `clan` = "' . $res['id'] . '" AND `id` = "' . $pl['clan_prava'] . '" LIMIT 1' + ) + ); + if (isset($ttl['id'])) { + $zvn = '' . $ttl['name'] . ' - ' . $zvn; + } + if ($pl['online'] > time() - 120) { + $rm = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`name`,`city` FROM `room` WHERE `id` = "' . $pl['room'] . '" LIMIT 1' + ) + ); + if (isset($rm['id'])) { + $zvn .= ' - ' . $rm['name'] . ''; + } + } else { + $zvn .= ' - персонаж сейчас не в клубе'; + } + if ($pl['battle'] > 0) { + $zvn .= ' '; + } + $r .= '
    ' . $ico . '      ' . $pl['login'] . '[' . $pl['level'] . ']' . $zvn . '
    '; + } + $i++; + } + + if ($res['join1'] > 0 || $res['join2'] > 0) { + $r .= '
    '; + } + $nacln = ''; + if ($res['join1'] > 0) { + $clna = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_joint` WHERE `id` = "' . $res['join1'] . '" AND `type` = "1" AND `time_close` = "0" LIMIT 1' + ) + ); + $cn_sp = mysql_query( + 'SELECT * FROM `clan_join` WHERE `alians` = "' . $clna['id'] . '" AND `clan` != "' . $res['id'] . '" AND `time_end` = "0" AND `time_start` > 0' + ); + while ($cn_pl = mysql_fetch_array($cn_sp)) { + /* ----------------------------------------------------------------------------------------------------------------------------- */ + $nacln .= ' AND `clan` != "' . $cn_pl['clan'] . '"'; + $clnf = mysql_fetch_array( + mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $cn_pl['clan'] . '" LIMIT 1') + ); + $sp = mysql_query( + 'SELECT `id`,`battle`,`login`,`clan`,`level`,`room`,`cityreg`,`align`,`clan_prava`,`mod_zvanie`,`sex`,`city`,`online`,`banned` FROM `users` WHERE `clan` = "' . $cn_pl['clan'] . '"' + ); + $r .= '
    + Состав "' . $clna['name'] . '"'; + $j = 0; + $i = 0; + while ($pl = mysql_fetch_array($sp)) { + if (!isset($_GET['online']) || $pl['online'] > time() - 120) { + $pl['textcolor1'] = ''; + if ($pl['online'] > time() - 120) { + $ico = ''; + $j++; + } else { + $pl['textcolor1'] = '#837f82'; + $ico = ''; + } + $zvn = $pl['mod_zvanie']; + $zvn = str_replace('[b]', '', $zvn); + $zvn = str_replace('[/b]', '', $zvn); + $zvn = str_replace('[i]', '', $zvn); + $zvn = str_replace('[/i]', '', $zvn); + $zvn = str_replace('[u]', '', $zvn); + $zvn = str_replace('[/u]', '', $zvn); + $zvn = str_replace('[c=', '', $zvn); + $zvn = str_replace('[/c]', '', $zvn); + if ($pl['clan_prava'] == 'glava') { + if ($zvn == 'Стажер' || $zvn == '') { + $zvn = 'глава клана'; + } + $zvn = '' . $zvn; + } + $ttl = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_tituls` WHERE `clan` = "' . $clnf['id'] . '" AND `id` = "' . $pl['clan_prava'] . '" LIMIT 1' + ) + ); + if (isset($ttl['id'])) { + $zvn = '' . $ttl['name'] . ' - ' . $zvn; + } + if ($pl['online'] > time() - 120) { + $rm = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`name`,`city` FROM `room` WHERE `id` = "' . $pl['room'] . '" LIMIT 1' + ) + ); + if (isset($rm['id'])) { + $zvn .= ' - ' . $rm['name'] . ''; + } + } else { + $zvn .= ' - персонаж сейчас не в клубе'; + } + if ($pl['battle'] > 0) { + $zvn .= ' '; + } + $r .= '
    ' . $ico . '      ' . $pl['login'] . '[' . $pl['level'] . ']' . $zvn . '
    '; + } + $i++; + } + $r .= '
    '; + /* ----------------------------------------------------------------------------------------------------------------------------- */ + } + } + if ($res['join2'] > 0) { + $cn_sp0 = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_joint` WHERE `id` = "' . $res['join2'] . '" AND `type` = "2" AND `time_close` = "0" LIMIT 1' + ) + ); + $cn_sp = mysql_query( + 'SELECT * FROM `clan_join` WHERE `alians` = "' . $cn_sp0['id'] . '" AND `clan` != "' . $res['id'] . '"' . $nacln . ' AND `time_end` = "0" AND `time_start` > 0' + ); + while ($cn_pl = mysql_fetch_array($cn_sp)) { + /* ----------------------------------------------------------------------------------------------------------------------------- */ + $clnf = mysql_fetch_array( + mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $cn_pl['clan'] . '" LIMIT 1') + ); + $clna = mysql_fetch_array( + mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "' . $res['join2'] . '" LIMIT 1') + ); + $sp = mysql_query( + 'SELECT `id`,`battle`,`login`,`clan`,`level`,`room`,`cityreg`,`align`,`clan_prava`,`mod_zvanie`,`sex`,`city`,`online`,`banned` FROM `users` WHERE `clan` = "' . $cn_pl['clan'] . '"' + ); + $r .= '
    + Состав "' . $clna['name'] . '"'; + $j = 0; + $i = 0; + while ($pl = mysql_fetch_array($sp)) { + if (!isset($_GET['online']) || $pl['online'] > time() - 120) { + $pl['textcolor1'] = ''; + if ($pl['online'] > time() - 120) { + $ico = ''; + $j++; + } else { + $pl['textcolor1'] = '#837f82'; + $ico = ''; + } + $zvn = $pl['mod_zvanie']; + $zvn = str_replace('[b]', '', $zvn); + $zvn = str_replace('[/b]', '', $zvn); + $zvn = str_replace('[i]', '', $zvn); + $zvn = str_replace('[/i]', '', $zvn); + $zvn = str_replace('[u]', '', $zvn); + $zvn = str_replace('[/u]', '', $zvn); + $zvn = str_replace('[c=', '', $zvn); + $zvn = str_replace('[/c]', '', $zvn); + if ($pl['clan_prava'] == 'glava') { + if ($zvn == 'Стажер' || $zvn == '') { + $zvn = 'глава клана'; + } + $zvn = '' . $zvn; + } + $ttl = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_tituls` WHERE `clan` = "' . $clnf['id'] . '" AND `id` = "' . $pl['clan_prava'] . '" LIMIT 1' + ) + ); + if (isset($ttl['id'])) { + $zvn = '' . $ttl['name'] . ' - ' . $zvn; + } + if ($pl['online'] > time() - 120) { + $rm = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`name`,`city` FROM `room` WHERE `id` = "' . $pl['room'] . '" LIMIT 1' + ) + ); + if (isset($rm['id'])) { + $zvn .= ' - ' . $rm['name'] . ''; + } + } else { + $zvn .= ' - персонаж сейчас не в клубе'; + } + if ($pl['battle'] > 0) { + $zvn .= ' '; + } + $r .= '
    ' . $ico . '      ' . $pl['login'] . '[' . $pl['level'] . ']' . $zvn . '
    '; + } + $i++; + } + $r .= '
    '; + /* ----------------------------------------------------------------------------------------------------------------------------- */ + } + } + + $r .= '
    Online: ' . $j . '
    Всего: ' . $i . '
    (список обновляется в полночь)'; + echo $r; + ?> +
    -
    - - - - - - - - - - - - - - - - -
    Статистика кланового опыта:• За сегодня:
     • За неделю:
     • За месяц:
    -
    -
    - - - - - - - - - - - - - = $i) { - $bgclr = ' bgcolor="#8fd155"'; - } - if($i < count($lvl_prava)-1) { - ?> - > - - - - - - - - - - - - > - - - - - - - - - - - -
    УровеньИгрокиСоюзСоздать союзАльянсСоздать альянсХранилищеПередач на игрокаПередач всего
    -
    -
    - -
    -
    - Соклановцы - - - - - -
    - '; $j = 0; $i = 0; - if($res['join1'] > 0 || $res['join2'] > 0) { - $r .= '
    - Основной состав'; - } - while($pl = mysql_fetch_array($sp)) { - if(!isset($_GET['online']) || $pl['online'] > time()-120) { - $pl['textcolor1'] = ''; - if($pl['online'] > time()-120) { - $ico = ''; - $j++; - }else{ - $pl['textcolor1'] = '#837f82'; - $ico = ''; - } - $zvn = $pl['mod_zvanie']; - $zvn = str_replace('[b]','',$zvn); - $zvn = str_replace('[/b]','',$zvn); - $zvn = str_replace('[i]','',$zvn); - $zvn = str_replace('[/i]','',$zvn); - $zvn = str_replace('[u]','',$zvn); - $zvn = str_replace('[/u]','',$zvn); - $zvn = str_replace('[c=','',$zvn); - $zvn = str_replace('[/c]','',$zvn); - if($pl['clan_prava'] == 'glava') { - if($zvn == 'Стажер' || $zvn == '') { - $zvn = 'глава клана'; - } - $zvn = ''.$zvn; - } - $ttl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `clan` = "'.$res['id'].'" AND `id` = "'.$pl['clan_prava'].'" LIMIT 1')); - if(isset($ttl['id'])) { - $zvn = ''.$ttl['name'].' - '.$zvn; - } - if($pl['online'] > time()-120) { - $rm = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`city` FROM `room` WHERE `id` = "'.$pl['room'].'" LIMIT 1')); - if(isset($rm['id'])) { - $zvn .= ' - '.$rm['name'].''; - } - }else{ - $zvn .= ' - персонаж сейчас не в клубе'; - } - if($pl['battle'] > 0) { - $zvn .= ' '; - } - $r .= '
    '.$ico.'      '.$pl['login'].'['.$pl['level'].']'.$zvn.'
    '; - } - $i++; - } - - if($res['join1'] > 0 || $res['join2'] > 0) { - $r .= '
    '; - } - $nacln = ''; - if($res['join1'] > 0) { - $clna = mysql_fetch_array(mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "'.$res['join1'].'" AND `type` = "1" AND `time_close` = "0" LIMIT 1')); - $cn_sp = mysql_query('SELECT * FROM `clan_join` WHERE `alians` = "'.$clna['id'].'" AND `clan` != "'.$res['id'].'" AND `time_end` = "0" AND `time_start` > 0'); - while($cn_pl = mysql_fetch_array($cn_sp)) { - /* ----------------------------------------------------------------------------------------------------------------------------- */ - $nacln .= ' AND `clan` != "'.$cn_pl['clan'].'"'; - $clnf = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.$cn_pl['clan'].'" LIMIT 1')); - $sp = mysql_query('SELECT `id`,`battle`,`login`,`clan`,`level`,`room`,`cityreg`,`align`,`clan_prava`,`mod_zvanie`,`sex`,`city`,`online`,`banned` FROM `users` WHERE `clan` = "'.$cn_pl['clan'].'"'); - $r .= '
    - Состав "'.$clna['name'].'"'; - $j = 0; $i = 0; - while($pl = mysql_fetch_array($sp)) { - if(!isset($_GET['online']) || $pl['online'] > time()-120) { - $pl['textcolor1'] = ''; - if($pl['online'] > time()-120) { - $ico = ''; - $j++; - }else{ - $pl['textcolor1'] = '#837f82'; - $ico = ''; - } - $zvn = $pl['mod_zvanie']; - $zvn = str_replace('[b]','',$zvn); - $zvn = str_replace('[/b]','',$zvn); - $zvn = str_replace('[i]','',$zvn); - $zvn = str_replace('[/i]','',$zvn); - $zvn = str_replace('[u]','',$zvn); - $zvn = str_replace('[/u]','',$zvn); - $zvn = str_replace('[c=','',$zvn); - $zvn = str_replace('[/c]','',$zvn); - if($pl['clan_prava'] == 'glava') { - if($zvn == 'Стажер' || $zvn == '') { - $zvn = 'глава клана'; - } - $zvn = ''.$zvn; - } - $ttl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `clan` = "'.$clnf['id'].'" AND `id` = "'.$pl['clan_prava'].'" LIMIT 1')); - if(isset($ttl['id'])) { - $zvn = ''.$ttl['name'].' - '.$zvn; - } - if($pl['online'] > time()-120) { - $rm = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`city` FROM `room` WHERE `id` = "'.$pl['room'].'" LIMIT 1')); - if(isset($rm['id'])) { - $zvn .= ' - '.$rm['name'].''; - } - }else{ - $zvn .= ' - персонаж сейчас не в клубе'; - } - if($pl['battle'] > 0) { - $zvn .= ' '; - } - $r .= '
    '.$ico.'      '.$pl['login'].'['.$pl['level'].']'.$zvn.'
    '; - } - $i++; - } - $r .= '
    '; - /* ----------------------------------------------------------------------------------------------------------------------------- */ - } - } - if($res['join2'] > 0) { - $cn_sp0 = mysql_fetch_array(mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "'.$res['join2'].'" AND `type` = "2" AND `time_close` = "0" LIMIT 1')); - $cn_sp = mysql_query('SELECT * FROM `clan_join` WHERE `alians` = "'.$cn_sp0['id'].'" AND `clan` != "'.$res['id'].'"'.$nacln.' AND `time_end` = "0" AND `time_start` > 0'); - while($cn_pl = mysql_fetch_array($cn_sp)) { - /* ----------------------------------------------------------------------------------------------------------------------------- */ - $clnf = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.$cn_pl['clan'].'" LIMIT 1')); - $clna = mysql_fetch_array(mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "'.$res['join2'].'" LIMIT 1')); - $sp = mysql_query('SELECT `id`,`battle`,`login`,`clan`,`level`,`room`,`cityreg`,`align`,`clan_prava`,`mod_zvanie`,`sex`,`city`,`online`,`banned` FROM `users` WHERE `clan` = "'.$cn_pl['clan'].'"'); - $r .= '
    - Состав "'.$clna['name'].'"'; - $j = 0; $i = 0; - while($pl = mysql_fetch_array($sp)) { - if(!isset($_GET['online']) || $pl['online'] > time()-120) { - $pl['textcolor1'] = ''; - if($pl['online'] > time()-120) { - $ico = ''; - $j++; - }else{ - $pl['textcolor1'] = '#837f82'; - $ico = ''; - } - $zvn = $pl['mod_zvanie']; - $zvn = str_replace('[b]','',$zvn); - $zvn = str_replace('[/b]','',$zvn); - $zvn = str_replace('[i]','',$zvn); - $zvn = str_replace('[/i]','',$zvn); - $zvn = str_replace('[u]','',$zvn); - $zvn = str_replace('[/u]','',$zvn); - $zvn = str_replace('[c=','',$zvn); - $zvn = str_replace('[/c]','',$zvn); - if($pl['clan_prava'] == 'glava') { - if($zvn == 'Стажер' || $zvn == '') { - $zvn = 'глава клана'; - } - $zvn = ''.$zvn; - } - $ttl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `clan` = "'.$clnf['id'].'" AND `id` = "'.$pl['clan_prava'].'" LIMIT 1')); - if(isset($ttl['id'])) { - $zvn = ''.$ttl['name'].' - '.$zvn; - } - if($pl['online'] > time()-120) { - $rm = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`city` FROM `room` WHERE `id` = "'.$pl['room'].'" LIMIT 1')); - if(isset($rm['id'])) { - $zvn .= ' - '.$rm['name'].''; - } - }else{ - $zvn .= ' - персонаж сейчас не в клубе'; - } - if($pl['battle'] > 0) { - $zvn .= ' '; - } - $r .= '
    '.$ico.'      '.$pl['login'].'['.$pl['level'].']'.$zvn.'
    '; - } - $i++; - } - $r .= '
    '; - /* ----------------------------------------------------------------------------------------------------------------------------- */ - } - } - - $r .= '
    Online: '.$j.'
    Всего: '.$i.'
    (список обновляется в полночь)'; - echo $r; - ?> -
    -
    - +
    \ No newline at end of file diff --git a/modules_data/_clan_oldversion.php b/modules_data/_clan_oldversion.php index 1a6c6a56..b28bfdbc 100644 --- a/modules_data/_clan_oldversion.php +++ b/modules_data/_clan_oldversion.php @@ -1,2644 +1,3414 @@ info['clan'])."' LIMIT 1")); -$cpr = explode('|', $u->info['clan_prava']); - -if(!isset($res['id'])) { - die('Клан был расформирован.'); +if (!defined('GAME')) { + die(); } -if(!isset($_GET['events']) && !isset($_GET['diplom']) && !isset($_GET['control']) && !isset($_GET['deposit']) && !isset($_GET['titul']) && !isset($_GET['rules']) && !isset($_GET['info']) && !isset($_GET['members'])) { - $_GET['events'] = 1; +$res = mysql_fetch_array( + mysql_query("SELECT * FROM `clan` WHERE `id` = '" . mysql_real_escape_string($u->info['clan']) . "' LIMIT 1") +); +$cpr = explode('|', $u->info['clan_prava']); + +if (!isset($res['id'])) { + die('Клан был расформирован.'); +} + +if (!isset($_GET['events']) && !isset($_GET['diplom']) && !isset($_GET['control']) && !isset($_GET['deposit']) && !isset($_GET['titul']) && !isset($_GET['rules']) && !isset($_GET['info']) && !isset($_GET['members'])) { + $_GET['events'] = 1; } //Возможности текущего титула -$tt = array( - 0 => array('000000000','Доступные каналы'), - 1 => array(0,'Просмотр событий клана'), - 2 => array(0,'Создание событий клана'), - 3 => array(0,'Просмотр хранилища'), - 4 => array(0,'Использование вещей из хранилища'), - 5 => array(0,'Изъятие предметов из хранилища'), - 6 => array(0,'Просмотр казны и списка игроков, пополнявших казну'), - 7 => array(0,'Пополнение казны'), - 8 => array(0,'Использование казны'), - 9 => array(0,'Прием в клан'), - 10 => array(0,'Изгнание из клана'), - 11 => array(0,'Редактирование информации о клане'), - 12 => array(0,'Клановые союзы и альянсы'), - 13 => array(0,'Управление клановыми союзами и альянсами'), - 14 => array(0,'Обьявление войны'), - 15 => array(0,0), - 15 => array(0,0), - 16 => array(0,0), - 17 => array(0,0), - 18 => array(0,0), - 19 => array(0,0), - 20 => array(0,0) -); +$tt = [ + 0 => ['000000000', 'Доступные каналы'], + 1 => [0, 'Просмотр событий клана'], + 2 => [0, 'Создание событий клана'], + 3 => [0, 'Просмотр хранилища'], + 4 => [0, 'Использование вещей из хранилища'], + 5 => [0, 'Изъятие предметов из хранилища'], + 6 => [0, 'Просмотр казны и списка игроков, пополнявших казну'], + 7 => [0, 'Пополнение казны'], + 8 => [0, 'Использование казны'], + 9 => [0, 'Прием в клан'], + 10 => [0, 'Изгнание из клана'], + 11 => [0, 'Редактирование информации о клане'], + 12 => [0, 'Клановые союзы и альянсы'], + 13 => [0, 'Управление клановыми союзами и альянсами'], + 14 => [0, 'Обьявление войны'], + 15 => [0, 0], + 15 => [0, 0], + 16 => [0, 0], + 17 => [0, 0], + 18 => [0, 0], + 19 => [0, 0], + 20 => [0, 0], +]; -if($u->info['clan_prava'] != 'glava') { - $utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = "'.$u->info['clan_prava'].'" LIMIT 1')); - if(!isset($utitl['id'])) { - $utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = 2 LIMIT 1')); - } +if ($u->info['clan_prava'] != 'glava') { + $utitl = mysql_fetch_array( + mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = "' . $u->info['clan_prava'] . '" LIMIT 1') + ); + if (!isset($utitl['id'])) { + $utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = 2 LIMIT 1')); + } } else { - $utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = 1 LIMIT 1')); + $utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = 1 LIMIT 1')); } -if(isset($utitl['id'])) { - $i = 1; - while($i < count($tt)) { - if($utitl['prava'][$i] > 0) { - $tt[$i][0] = 1; - } - $i++; - } +if (isset($utitl['id'])) { + $i = 1; + while ($i < count($tt)) { + if ($utitl['prava'][$i] > 0) { + $tt[$i][0] = 1; + } + $i++; + } } $u->info['tt'] = $tt; //Уровень клана -$lvl_exp = array( - 0 => 0, - 1 => 500000, - 2 => 2000000, - 3 => 5500000, - 4 => 10500000, - 5 => 20500000, - 6 => 35500000, - 7 => 65500000 -); +$lvl_exp = [ + 0 => 0, + 1 => 500000, + 2 => 2000000, + 3 => 5500000, + 4 => 10500000, + 5 => 20500000, + 6 => 35500000, + 7 => 65500000, +]; -if($res['exp'] >= $lvl_exp[$res['level']+1]) { - $res['level']++; - mysql_query('UPDATE `clan` SET `level` = "'.$res['level'].'" WHERE `id` = "'.$res['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( - "'.$res['id'].'","'.time().'","'.date('d.m.Y').'","0","127.0.0.1","Администрация","Клановое сообщение","Ваш клан достиг уровня '.$res['level'].'!" - )'); +if ($res['exp'] >= $lvl_exp[$res['level'] + 1]) { + $res['level']++; + mysql_query('UPDATE `clan` SET `level` = "' . $res['level'] . '" WHERE `id` = "' . $res['id'] . '" LIMIT 1'); + mysql_query( + 'INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( + "' . $res['id'] . '","' . time() . '","' . date( + 'd.m.Y' + ) . '","0","127.0.0.1","Администрация","Клановое сообщение","Ваш клан достиг уровня ' . $res['level'] . '!" + )' + ); } //Права клана -$lvl_prava = array( - 0 => array(8,0,0,0,0,50,20,200), - 1 => array(12,1,0,0,0,50,20,200), - 2 => array(16,1,0,0,0,50,20,200), - 3 => array(20,1,0,0,0,50,20,200), - 4 => array(24,1,1,0,0,100,40,200), - 5 => array(28,1,1,0,0,100,40,200), - 6 => array(32,1,1,0,0,100,40,200), - 7 => array(36,1,1,0,0,200,80,200), - 8 => array(40,1,1,1,1,200,80,200), - 9 => array(44,1,1,1,1,200,80,200), - 10 => array(48,1,1,1,1,200,80,200), - 11 => array(52,1,1,1,1,200,80,200) -) +$lvl_prava = [ + 0 => [8, 0, 0, 0, 0, 50, 20, 200], + 1 => [12, 1, 0, 0, 0, 50, 20, 200], + 2 => [16, 1, 0, 0, 0, 50, 20, 200], + 3 => [20, 1, 0, 0, 0, 50, 20, 200], + 4 => [24, 1, 1, 0, 0, 100, 40, 200], + 5 => [28, 1, 1, 0, 0, 100, 40, 200], + 6 => [32, 1, 1, 0, 0, 100, 40, 200], + 7 => [36, 1, 1, 0, 0, 200, 80, 200], + 8 => [40, 1, 1, 1, 1, 200, 80, 200], + 9 => [44, 1, 1, 1, 1, 200, 80, 200], + 10 => [48, 1, 1, 1, 1, 200, 80, 200], + 11 => [52, 1, 1, 1, 1, 200, 80, 200], +] ?> -
    -
    - - - - - - - - - - - - - - - - -
    Статистика кланового опыта:• За сегодня:
     • За неделю:
     • За месяц:
    -
    -
    - - - - - - - - - - - - - = $i) { - $bgclr = ' bgcolor="#8fd155"'; - } - if($i < count($lvl_prava)-1) { - ?> - > - - - - - - - - - - - - > - - - - - - - - - - - -
    УровеньИгрокиСоюзСоздать союзАльянсСоздать альянсХранилищеПередач на игрокаПередач всего
    -
    -
    - -
    -
    - Соклановцы - - - - - -
    - '; $j = 0; $i = 0; - if($res['join1'] > 0 || $res['join2'] > 0) { - $r .= '
    - Основной состав'; - } - while($pl = mysql_fetch_array($sp)) { - if(!isset($_GET['online']) || $pl['online'] > time()-120) { - $pl['textcolor1'] = ''; - if($pl['online'] > time()-120) { - $ico = ''; - $j++; - }else{ - $pl['textcolor1'] = '#837f82'; - $ico = ''; - } - $zvn = $pl['mod_zvanie']; - $zvn = str_replace('[b]','',$zvn); - $zvn = str_replace('[/b]','',$zvn); - $zvn = str_replace('[i]','',$zvn); - $zvn = str_replace('[/i]','',$zvn); - $zvn = str_replace('[u]','',$zvn); - $zvn = str_replace('[/u]','',$zvn); - $zvn = str_replace('[c=','',$zvn); - $zvn = str_replace('[/c]','',$zvn); - if($pl['clan_prava'] == 'glava') { - if($zvn == 'Стажер' || $zvn == '') { - $zvn = 'глава клана'; - } - $zvn = ''.$zvn; - } - $ttl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `clan` = "'.$res['id'].'" AND `id` = "'.$pl['clan_prava'].'" LIMIT 1')); - if(isset($ttl['id'])) { - $zvn = ''.$ttl['name'].' - '.$zvn; - } - if($pl['online'] > time()-120) { - $rm = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`city` FROM `room` WHERE `id` = "'.$pl['room'].'" LIMIT 1')); - if(isset($rm['id'])) { - $zvn .= ' - '.$rm['name'].''; - } - }else{ - $zvn .= ' - персонаж сейчас не в клубе'; - } - if($pl['battle'] > 0) { - $zvn .= ' '; - } - $r .= '
    '.$ico.'      '.$pl['login'].'['.$pl['level'].']'.$zvn.'
    '; - } - $i++; - } - - if($res['join1'] > 0 || $res['join2'] > 0) { - $r .= '
    '; - } - $nacln = ''; - if($res['join1'] > 0) { - $clna = mysql_fetch_array(mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "'.$res['join1'].'" AND `type` = "1" AND `time_close` = "0" LIMIT 1')); - $cn_sp = mysql_query('SELECT * FROM `clan_join` WHERE `alians` = "'.$clna['id'].'" AND `clan` != "'.$res['id'].'" AND `time_end` = "0" AND `time_start` > 0'); - while($cn_pl = mysql_fetch_array($cn_sp)) { - /* ----------------------------------------------------------------------------------------------------------------------------- */ - $nacln .= ' AND `clan` != "'.$cn_pl['clan'].'"'; - $clnf = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.$cn_pl['clan'].'" LIMIT 1')); - $sp = mysql_query('SELECT `id`,`battle`,`login`,`clan`,`level`,`room`,`cityreg`,`align`,`clan_prava`,`mod_zvanie`,`sex`,`city`,`online`,`banned` FROM `users` WHERE `clan` = "'.$cn_pl['clan'].'"'); - $r .= '
    - Состав "'.$clna['name'].'"'; - $j = 0; $i = 0; - while($pl = mysql_fetch_array($sp)) { - if(!isset($_GET['online']) || $pl['online'] > time()-120) { - $pl['textcolor1'] = ''; - if($pl['online'] > time()-120) { - $ico = ''; - $j++; - }else{ - $pl['textcolor1'] = '#837f82'; - $ico = ''; - } - $zvn = $pl['mod_zvanie']; - $zvn = str_replace('[b]','',$zvn); - $zvn = str_replace('[/b]','',$zvn); - $zvn = str_replace('[i]','',$zvn); - $zvn = str_replace('[/i]','',$zvn); - $zvn = str_replace('[u]','',$zvn); - $zvn = str_replace('[/u]','',$zvn); - $zvn = str_replace('[c=','',$zvn); - $zvn = str_replace('[/c]','',$zvn); - if($pl['clan_prava'] == 'glava') { - if($zvn == 'Стажер' || $zvn == '') { - $zvn = 'глава клана'; - } - $zvn = ''.$zvn; - } - $ttl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `clan` = "'.$clnf['id'].'" AND `id` = "'.$pl['clan_prava'].'" LIMIT 1')); - if(isset($ttl['id'])) { - $zvn = ''.$ttl['name'].' - '.$zvn; - } - if($pl['online'] > time()-120) { - $rm = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`city` FROM `room` WHERE `id` = "'.$pl['room'].'" LIMIT 1')); - if(isset($rm['id'])) { - $zvn .= ' - '.$rm['name'].''; - } - }else{ - $zvn .= ' - персонаж сейчас не в клубе'; - } - if($pl['battle'] > 0) { - $zvn .= ' '; - } - $r .= '
    '.$ico.'      '.$pl['login'].'['.$pl['level'].']'.$zvn.'
    '; - } - $i++; - } - $r .= '
    '; - /* ----------------------------------------------------------------------------------------------------------------------------- */ - } - } - if($res['join2'] > 0) { - $cn_sp0 = mysql_fetch_array(mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "'.$res['join2'].'" AND `type` = "2" AND `time_close` = "0" LIMIT 1')); - $cn_sp = mysql_query('SELECT * FROM `clan_join` WHERE `alians` = "'.$cn_sp0['id'].'" AND `clan` != "'.$res['id'].'"'.$nacln.' AND `time_end` = "0" AND `time_start` > 0'); - while($cn_pl = mysql_fetch_array($cn_sp)) { - /* ----------------------------------------------------------------------------------------------------------------------------- */ - $clnf = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.$cn_pl['clan'].'" LIMIT 1')); - $clna = mysql_fetch_array(mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "'.$res['join2'].'" LIMIT 1')); - $sp = mysql_query('SELECT `id`,`battle`,`login`,`clan`,`level`,`room`,`cityreg`,`align`,`clan_prava`,`mod_zvanie`,`sex`,`city`,`online`,`banned` FROM `users` WHERE `clan` = "'.$cn_pl['clan'].'"'); - $r .= '
    - Состав "'.$clna['name'].'"'; - $j = 0; $i = 0; - while($pl = mysql_fetch_array($sp)) { - if(!isset($_GET['online']) || $pl['online'] > time()-120) { - $pl['textcolor1'] = ''; - if($pl['online'] > time()-120) { - $ico = ''; - $j++; - }else{ - $pl['textcolor1'] = '#837f82'; - $ico = ''; - } - $zvn = $pl['mod_zvanie']; - $zvn = str_replace('[b]','',$zvn); - $zvn = str_replace('[/b]','',$zvn); - $zvn = str_replace('[i]','',$zvn); - $zvn = str_replace('[/i]','',$zvn); - $zvn = str_replace('[u]','',$zvn); - $zvn = str_replace('[/u]','',$zvn); - $zvn = str_replace('[c=','',$zvn); - $zvn = str_replace('[/c]','',$zvn); - if($pl['clan_prava'] == 'glava') { - if($zvn == 'Стажер' || $zvn == '') { - $zvn = 'глава клана'; - } - $zvn = ''.$zvn; - } - $ttl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `clan` = "'.$clnf['id'].'" AND `id` = "'.$pl['clan_prava'].'" LIMIT 1')); - if(isset($ttl['id'])) { - $zvn = ''.$ttl['name'].' - '.$zvn; - } - if($pl['online'] > time()-120) { - $rm = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`city` FROM `room` WHERE `id` = "'.$pl['room'].'" LIMIT 1')); - if(isset($rm['id'])) { - $zvn .= ' - '.$rm['name'].''; - } - }else{ - $zvn .= ' - персонаж сейчас не в клубе'; - } - if($pl['battle'] > 0) { - $zvn .= ' '; - } - $r .= '
    '.$ico.'      '.$pl['login'].'['.$pl['level'].']'.$zvn.'
    '; - } - $i++; - } - $r .= '
    '; - /* ----------------------------------------------------------------------------------------------------------------------------- */ - } - } - - $r .= '
    Online: '.$j.'
    Всего: '.$i.'
    (список обновляется в полночь)'; - echo $r; - ?> -
    -
    - + + +
    +
    + Тип управления кланом: ДиктатураДемократия +
    + Каналы чата сохранены
    '; + $res['canals'] = $_POST['svb_canals']; + $rce = explode(); + $i = 1; + while ($i <= 9) { + + $i++; + } + mysql_query( + 'UPDATE `clan` SET `canals` = "' . mysql_real_escape_string( + $res['canals'] + ) . '" WHERE `id` = "' . $res['id'] . '" LIMIT 1' + ); + } elseif (isset($_POST['svb_give_money']) && $tt[7][0] == 1) { + $mn = round((int)$_POST['svb_give_money'], 2); + if ($mn >= 0.01) { + if ($res['money1'] < $mn) { + echo 'В клане недостаточно средств
    '; + } else { + $res['money1'] -= $mn; + $u->info['money'] += $mn; + echo 'Вы успешно сняли с казны клана ' . $mn . ' кр.
    '; + mysql_query( + 'UPDATE `clan` SET `money1` = "' . mysql_real_escape_string( + $res['money1'] + ) . '" WHERE `id` = "' . $res['id'] . '" LIMIT 1' + ); + mysql_query( + 'UPDATE `users` SET `money` = "' . mysql_real_escape_string( + $u->info['money'] + ) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + mysql_query( + 'INSERT INTO `clan_operations` (`clan`,`time`,`type`,`text`,`val`,`uid`) VALUES ("' . $res['id'] . '","' . time( + ) . '","1","' . $u->info['login'] . '","' . mysql_real_escape_string( + $mn + ) . '","' . $u->info['id'] . '")' + ); + } + } + } elseif (isset($_POST['svb_take_money']) && $tt[6][0] == 1) { + $mn = round((int)$_POST['svb_take_money'], 2); + if ($mn >= 0.01) { + if ($u->info['money'] < $mn) { + echo 'У вас недостаточно средств
    '; + } else { + $res['money1'] += $mn; + $u->info['money'] -= $mn; + echo 'Вы успешно положили в казну клана ' . $mn . ' кр.
    '; + mysql_query( + 'UPDATE `clan` SET `money1` = "' . mysql_real_escape_string( + $res['money1'] + ) . '" WHERE `id` = "' . $res['id'] . '" LIMIT 1' + ); + mysql_query( + 'UPDATE `users` SET `money` = "' . mysql_real_escape_string( + $u->info['money'] + ) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + mysql_query( + 'INSERT INTO `clan_operations` (`clan`,`time`,`type`,`text`,`val`,`uid`) VALUES ("' . $res['id'] . '","' . time( + ) . '","2","' . $u->info['login'] . '","' . mysql_real_escape_string( + $mn + ) . '","' . $u->info['id'] . '")' + ); + } + } + } elseif (isset($_POST['invite']) && ($_POST['invite'] == 'Принять' || $_POST['invite'] == 'Выгнать' || $_POST['invite'] == 'Назначить') && $tt[11][0] == 1) { + if ($_POST['invite'] == "Выгнать" && $tt[10][0] == 1) { + $usr = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `users` WHERE `login` = "' . mysql_real_escape_string( + $_POST['logingo'] + ) . '" AND `clan` = "' . $res['id'] . '" LIMIT 1' + ) + ); + //$ttus = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = "'.$usr['clan_prava'].'" LIMIT 1')); + if (!isset($usr['id'])) { + echo 'Игрок не найден в клане
    '; + } elseif ($tt['prioritet'] >= $utitl['prioritet']) { + echo 'Игрок старше вас по званию, либо звания совпадают
    '; + } elseif ($u->info['money'] < $c_pr[1]) { + echo 'У вас не достаточно кр. для исключения игрока из клана (Требуется: ' . $c_pr[1] . ' кр.)
    '; + } elseif ($usr['clan_prava'] == 'galva' && $u->info['clan_prava'] != 'glava') { + echo 'Игрок старше вас по званию, либо звания совпадают
    '; + } else { + $ar = $u->rem_itm_cl($usr, $res['id'], 8); + mysql_query( + 'UPDATE `users` SET `palpro` = 0, `clan_prava` = 0, `clan` = 0, `mod_zvanie` = "", `align` = 0 WHERE `id` = "' . $usr['id'] . '" LIMIT 1' + ); + $u->info['money'] -= $c_pr[1]; + mysql_query( + 'UPDATE `users` SET `money` = "' . $u->info['money'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + $c_r .= 'Игрок "' . $usr['login'] . '" был исключен из клана за ' . $c_pr[1] . ' кр.
    '; + $txt = 'Игрок ' . $u->info['login'] . '[' . $u->info['level'] . '] исключил из клана игрока ' . $usr['login'] . '[' . $usr['level'] . ']'; + mysql_query( + 'INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( + "' . $res['id'] . '","' . time() . '","' . date( + 'd.m.Y' + ) . '","0","127.0.0.1","Администрация","Клановое сообщение","' . mysql_real_escape_string( + $txt + ) . '" + )' + ); + } + } elseif ($_POST['invite'] == "Назначить" && $u->info['clan_prava'] == 'glava') { + $usr = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `users` WHERE `login` = "' . mysql_real_escape_string( + $_POST['logingo'] + ) . '" AND `clan` = "' . $res['id'] . '" AND `banned` = "0" LIMIT 1' + ) + ); + if (!isset($usr['id'])) { + echo 'Игрок не найден в клане
    '; + } elseif ($u->info['money'] < $c_pr[2]) { + echo 'У вас не достаточно кр. для назначения игрока на пост главы клана (Требуется: ' . $c_pr[2] . ' кр.)
    '; + } elseif ($usr['clan_prava'] == 'galva') { + echo 'Игрок уже является главой клана
    '; + } else { + mysql_query( + 'UPDATE `users` SET `clan_prava` = "glava", `clan` = "' . $res['id'] . '", `mod_zvanie` = "глава клана", `align` = "' . $res['align'] . '" WHERE `id` = "' . $usr['id'] . '" LIMIT 1' + ); + $u->info['money'] -= $c_pr[2]; + mysql_query( + 'UPDATE `users` SET `clan_prava` = "2", `mod_zvanie` = "новичок", `money` = "' . $u->info['money'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + $c_r .= 'Игрок "' . $usr['login'] . '" был назначен главой клан за ' . $c_pr[0] . ' кр.
    '; + $txt = 'Игрок ' . $u->info['login'] . '[' . $u->info['level'] . '] назначил игрока ' . $usr['login'] . '[' . $usr['level'] . '] на должность Главы клана'; + mysql_query( + 'INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( + "' . $res['id'] . '","' . time() . '","' . date( + 'd.m.Y' + ) . '","0","127.0.0.1","Администрация","Клановое сообщение","' . mysql_real_escape_string( + $txt + ) . '" + )' + ); + } + } elseif ($_POST['invite'] == "Принять" && $tt[9][0] == 1) { + $is_cl = mysql_fetch_row( + mysql_query("SELECT COUNT(*) FROM `users` WHERE `clan` = '" . $res['id'] . "'") + ); + $usr = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `users` WHERE `login` = "' . mysql_real_escape_string( + $_POST['logingo'] + ) . '" AND `clan` != "' . $res['id'] . '" LIMIT 1' + ) + ); + if (!isset($usr['id'])) { + echo 'Подходящий игрок не найден, либо не прошел проверку на чистоту
    '; + } elseif ($usr['clan_prava'] == 'galva') { + echo 'Игрок уже является главой клана
    '; + } elseif ($usr['palpro'] < time()) { + echo 'Игрок должен пройти проверку у паладинов
    '; + } elseif ($u->info['money'] < $c_pr[0]) { + echo 'У вас не достаточно кр. для приема игрока в клан (Требуется: ' . $c_pr[0] . ' кр.)
    '; + } elseif ($usr['clan'] != '0' || $usr['align'] != '0') { + echo 'Персонаж уже находится в клане, либо имеет склонность
    '; + } elseif ($is_cl[0] >= $lvl_prava[$res['level']][0]) { + echo 'Достигнут лимит приглашений. Повысте уровень клана.
    '; + } else { + mysql_query( + 'UPDATE `users` SET `palpro` = "0",`clan_prava` = "2",`clan` = "' . $res['id'] . '",`mod_zvanie` = "",`align` = "' . $res['align'] . '" WHERE `id` = "' . $usr['id'] . '" LIMIT 1' + ); + $u->info['money'] -= $c_pr[0]; + mysql_query( + 'UPDATE `users` SET `money` = "' . $u->info['money'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + echo 'Игрок "' . $usr['login'] . '" был принят в клан за ' . $c_pr[0] . ' кр.
    '; + $txt = 'Игрок ' . $u->info['login'] . '[' . $u->info['level'] . '] принял в клан игрока ' . $usr['login'] . '[' . $usr['level'] . ']'; + mysql_query( + 'INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( + "' . $res['id'] . '","' . time() . '","' . date( + 'd.m.Y' + ) . '","0","127.0.0.1","Администрация","Клановое сообщение","' . mysql_real_escape_string( + $txt + ) . '" + )' + ); + } + } + } + ?> + 0) { ?> +
    + + (это вам обойдется в кр.)
    + (перед приемом в клан, персонаж должен пройти проверку у паладинов)
    +
    + + 0) { ?> +
    + + (это вам обойдется в кр.)
    +
    + + info['clan_prava'] == 'glava') { ?> +
    + (глава клана вправе сложить с себя полномочия, назначив главой клана другого + персонажа)
    +
    + + 0) { ?> +
    + Редактирование статуса персонажа + 0 [rp_titul] => 0 [rp_zvanie] => [rp_canals] => + $c_r = ''; + $usr = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `users` WHERE `id` = "' . mysql_real_escape_string( + $_POST['rp_login'] + ) . '" AND `clan` = "' . $res['id'] . '" LIMIT 1' + ) + ); + if (isset($usr['id'])) { + if ($usr['clan_prava'] != 'glava') { + $tt = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_tituls` WHERE `id` = "' . $usr['clan_prava'] . '" LIMIT 1' + ) + ); + if ($tt['prioritet'] < $utitl['prioritet']) { + //новый титул + if ((int)$_POST['rp_titul'] > 0) { + $tt_new = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_tituls` WHERE `id` = "' . mysql_real_escape_string( + $_POST['rp_titul'] + ) . '" AND `clan` = "' . $res['id'] . '" LIMIT 1' + ) + ); + if (isset($tt_new['id'])) { + if ($tt_new['prioritet'] < $utitl['prioritet']) { + mysql_query( + 'UPDATE `users` SET `clan_prava` = "' . $tt_new['id'] . '" WHERE `id` = "' . $usr['id'] . '" LIMIT 1' + ); + $c_r .= 'Игроку "' . $usr['login'] . '" был присвоен титул "' . $tt_new['name'] . '"
    '; + if ($tt_new['prioritet'] < $tt['prioritet']) { + //понижен + $txt = 'Игрок ' . $u->info['login'] . '[' . $u->info['level'] . '] понизил титул игроку ' . $usr['login'] . '[' . $usr['level'] . '] до "' . $tt_new['name'] . '"'; + } else { + //присвоен + $txt = 'Игрок ' . $u->info['login'] . '[' . $u->info['level'] . '] присвоил титул "' . $tt_new['name'] . '" игроку ' . $usr['login'] . '[' . $usr['level'] . ']'; + } + + mysql_query( + 'INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( + "' . $res['id'] . '","' . time() . '","' . date( + 'd.m.Y' + ) . '","0","127.0.0.1","Администрация","Клановое сообщение","' . mysql_real_escape_string( + $txt + ) . '" + )' + ); + + } else { + $c_r .= 'Вы не можете назначать титул старше вашего титула
    '; + } + } + } + mysql_query( + 'UPDATE `users` SET `mod_zvanie` = "' . mysql_real_escape_string( + $_POST['rp_zvanie'] + ) . '",`ccanals` = "' . mysql_real_escape_string( + $_POST['rp_canals'] + ) . '" WHERE `id` = "' . $usr['id'] . '" LIMIT 1' + ); + $c_r .= 'Информация успешно сохранена
    '; + + } else { + $c_r .= 'Игрок старше вас по званию, либо звания совпадают
    '; + } + } else { + $c_r .= 'Игрок старше вас по званию, либо звания совпадают
    '; + } + } else { + $c_r .= 'Игрок не состоит в клане ' . $res['name'] . '
    '; + } + } + echo $c_r; + ?> +
    +
    +
    Логин:
    + +
    +
    +
    Титул:
    + +
    +
    +
    Присвоить титул:
    + +
    +
    +
    Реликты
    +
    +
    +
    Звание в клане:
    + +
    +
    +
    Каналы чата:
    +
    + (Перепешите через запятую номера доступных каналов. Например: 1,3,7. Доступные + каналы: 1-9) +
    +
    +
    +
    +
    +
    Каналы чата:
    +
    + (Перепешите через запятую номера открытых каналов. Например: 2,4,8. Доступные каналы: + 1-9) +
    +
    + + + 0 && $res['money2'] > 0) { ?> +
    + Заказать изображение +
    + Изображение было успешно загружено на сервер! Воспользоваться им возможно в инвентаре, в разделе "Галерея".
    '; + } elseif (isset($_POST['img_load1type'])) { + $data = [ + 'obraz' => $_FILES['load_image1'], + 'sex' => round((int)$_POST['img_load3type']), + 'w' => '', + 'h' => '', + 'type' => round((int)$_POST['img_load1type']), + 'animation' => round((int)$_POST['img_load2type']), + ]; + + $ers = ''; + + if ($data['sex'] != 0 && $data['sex'] != 1) { + $ers = 'Ошибка! Вы не выбрали пол кому будет доступно изображение!'; + } elseif ($data['animation'] != 0 && $data['animation'] != 1) { + $ers = 'Ошибка! Вы не выбрали тип изображения: Анимированное, не анимированное!'; + } elseif ($data['type'] < 1 || $data['type'] > 18) { + $ers = 'Ошибка! Вы не выбрали тип слота замещения изображения!'; + } + + $types = [ + 1 => ['Образ', 120, 220, 100], + 2 => ['Заглушка (снизу)', 120, 40, 15], + 3 => ['Заглушка (сверху)', 120, 20, 5], + 4 => ['Шлем', 60, 60, 25], + 5 => ['Наручи', 60, 40, 25], + 6 => ['Левая рука', 60, 60, 25], + 7 => ['Правая рука', 60, 60, 25], + 8 => ['Броня', 60, 80, 25], + 9 => ['Пояс', 60, 40, 25], + 10 => ['Ботинки', 60, 40, 25], + 11 => ['Поножи', 60, 80, 25], + 12 => ['Перчатки', 60, 40, 25], + 13 => ['Кольца №1', 20, 20, 10], + 14 => ['Кулон', 60, 20, 25], + 15 => ['Серьги', 60, 20, 25], + 16 => ['Заглушка под информацию о персонаже', 244, 287, 5], + 17 => ['Кольцо №2', 20, 20, 10], + 18 => ['Кольцо №3', 20, 20, 10], + ]; + + $data['price'] = $types[$data['type']][3]; + + + if ($data['price'] > $res['money2']) { + $ers = 'Ошибка! В казне клана недостаточно Евро-кредитов для приобретения данного изображения.'; + } + + if ($ers != '') { + echo '' . $ers . '
    '; + } else { + /* Сохраняем изображение */ + $imgname = md5( + rand(0, 1000000000000) . '&' . rand(0, 10000000) . '&' . microtime() + ); + $upload = new Uploader('load_image1', $imgname); + $upload->setSavePath('clan_prw/'); + $upload->setMaxFileSize(.35); + $upload->setDimensions($types[$data['type']][1], $types[$data['type']][2]); + if ($file = $upload->saveimg()) { + $size = getimagesize( + "https://new-combats.com/clan_prw/" . htmlspecialchars( + $file[1], null, 'cp1251' + ) + ); + + $bag = 0; + + if ($types[$data['type']][1] != $size[0] || $types[$data['type']][2] != $size[1]) { + $bag = 1; + } + + mysql_query( + 'INSERT INTO `reimage` (`login`,`uid`,`time`,`src`,`clan`,`type`,`sex`,`animation`,`w`,`h`,`bag`) VALUES ( + "' . $u->info['login'] . '", + "' . $u->info['id'] . '","' . time() . '", + "' . mysql_real_escape_string(htmlspecialchars($file[1], null, 'cp1251')) . '", + "' . $u->info['clan'] . '", + "' . mysql_real_escape_string($data['type']) . '", + "' . mysql_real_escape_string($data['sex']) . '", + "' . mysql_real_escape_string($data['animation']) . '", + "' . mysql_real_escape_string((int)$size[0]) . '", + "' . mysql_real_escape_string((int)$size[1]) . '", + "' . $bag . '" + )' + ); + + $res['money2'] -= $data['price']; + + mysql_query( + 'UPDATE `clan` SET `money2` = "' . $res['money2'] . '" WHERE `id` = "' . $res['id'] . '" LIMIT 1' + ); + die(''); + } else { + echo '' . Uploader::$error . '
    '; + } + } + } + + ?> +
    +
    +
    + Размер изображения не должен привышать 350 кб! +
    + + +
    + Внимание! + Изображения нарушающие правила игры, правила публикации изображения, + либо содержащие элементы оскорбляющие достоинство других людей будут блокироваться без + компенсации денежных средств и без возможности замены изображения на новое. +
    +
    + + 0 && $u->info['clan'] == 17 || $u->info['clan'] == 1) { ?> +
    + Заклятия + '15 минут', 30 => '30 минут', 60 => 'один час', 180 => 'три часа', 360 => 'шесть часов', 720 => 'двенадцать часов', 1440 => 'одни сутки', 4320 => 'трое суток']; + + if (isset($_GET['usemod'])) { + if (isset($_POST['usem1'])) { + include('moder/usem1.php'); + } elseif (isset($_POST['teleport'])) { + include('moder/teleport.php'); + } + } + ?> + + +   +
    +
    + +
    + Казна клана +
    + Деньги в казне клана: кр. 0) { ?>
    +                                 екр. +
    + 0) { ?> + Забрать из казны: + + +
    + 0) { ?> +
    +
    + Положить деньги в казну: + (при себе: info['money'] ?>кр.) +
    +
    + +
    + + 0 && $tt[3][0] == 1) { ?> +
    +
    + Заказать выписку для хранилища: (услуга стоит 1кр.) + +
    +
    + +
    + Остроумно, но здесь так делать нельзя :-)
    ', + 'Это будет очень сложно сделать, Ваши сокланы против!
    ', + 'Не уподобляйтесь большинству, защищайте интересы своего клана!
    ']; + echo $rn[rand(0, 2)]; + } elseif ($cln['join1'] == $res['join1'] && $res['join1'] > 0) { + echo 'Вы состоите в союзе с этим кланом
    '; + } elseif ($cln['join2'] == $res['join2'] && $res['join2'] > 0) { + echo 'Вы состоите в альянсе с этим кланом
    '; + } else { + $lwar = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_wars` WHERE `time_finish` > ' . time( + ) . ' AND ((`clan1` = "' . $cln['id'] . '" AND `clan2` = "' . $res['id'] . '") OR (`clan2` = "' . $cln['id'] . '" AND `clan1` = "' . $res['id'] . '")) LIMIT 1 ' + ) + ); + if (!isset($lwar['id'])) { + $mkr = 300; + $tpcw = 1; + if ($_POST['RadioGroup1'] == 2) { + $mkr = 600; + $tpcw = 2; + } + if (true == true) { + echo 'Нельзя обьявить войну прямо сейчас
    '; + } elseif ($mkr > $res['money1']) { + echo 'В казне клана не достаточно средств
    '; + } else { + mysql_query( + 'UPDATE `clan` SET `money1` = `money1` - ' . $mkr . ' WHERE `id` = "' . $res['id'] . '" LIMIT 1' + ); + mysql_query( + 'INSERT INTO `clan_wars` (`clan1`,`clan2`,`time_start`,`time_finish`,`type`,`text`) VALUES ("' . $res['id'] . '","' . $cln['id'] . '","' . time( + ) . '","' . (time() + 60 * 60 * 24 * 3) . '","' . $tpcw . '","Война!")' + ); + mysql_query( + 'INSERT INTO `clan_operations` (`clan`,`time`,`type`,`text`,`val`,`uid`) VALUES ("' . $res['id'] . '","' . time( + ) . '","4","' . $u->info['login'] . '","clanwar_' . $mkr . '_' . $cln['id'] . '","' . $u->info['id'] . '")' + ); + echo 'Вы успешно обьявили войну клану "' . $cln['name'] . '" за ' . $mkr . ' кр.
    '; + } + } else { + echo 'Вы уже ведете войну с данным кланом
    '; + } + } + } else { + echo 'Клан с таким названием не найден
    '; + } + } + } + + ?> +

    +
    + Клановые войны + + + +
    +
    + "' . time( + ) . '"' + ); + while ($pl = mysql_fetch_array($sp)) { + $cln1 = mysql_fetch_array( + mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $pl['clan1'] . '" LIMIT 1') + ); + $cln2 = mysql_fetch_array( + mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $pl['clan2'] . '" LIMIT 1') + ); + $ms .= '
    Война между кланами ' . $cln1['name'] . ' и ' . $cln2['name'] . '.
    '; + if ($pl['text'] != '') { + $ms .= 'Причина войны: ' . $pl['text'] . '
    '; + } + $ms .= 'Время войны: ' . date('d.m.Y H:i', $pl['time_start']) . ' - ' . date( + 'd.m.Y H:i', $pl['time_finish'] + ) . '
    '; + } + if ($ms == '') { + ?> + В данный момент Ваш клан не ведет войн. + +
    +
    +
    + Союзы и альянсы + Ваш клан уже подал заявку в данный союз
    '; + } elseif ($res['join1'] > 0) { + echo 'Ваш клан уже находится в союзе
    '; + } else { + mysql_query( + 'UPDATE `clan` SET `join1` = "' . $cnm['id'] . '" WHERE `id` = "' . $res['id'] . '" LIMIT 1' + ); + echo 'Вы успешно подали заявку в союз "' . $cnm['name'] . '"
    '; + mysql_query( + 'INSERT INTO `clan_join` (`clan`,`alians`,`time`,`type`) VALUES ("' . $res['id'] . '","' . $cnm['id'] . '","' . time( + ) . '","1")' + ); + } + } else { + echo 'Альянс или союз с такиим названием не существует
    '; + } + } else { + //вступление в альянс + $nm = htmlspecialchars($_POST['logingo'], null, 'cp1251'); + $cnm = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_joint` WHERE `name` = "' . mysql_real_escape_string( + $nm + ) . '" AND `type` = "2" LIMIT 1' + ) + ); + if (isset($cnm['id'])) { + $cnmz = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_join` WHERE `alians` = "' . $cnm['id'] . '" AND `clan` = "' . $res['id'] . '" AND `time_end` = "0" AND `time_start` = "0" AND `type` = "2" LIMIT 1' + ) + ); + if (isset($cnmz['id'])) { + echo 'Ваш клан уже подал заявку в данный альянс
    '; + } elseif ($res['join1'] == 0) { + echo 'Для вступления в альянс требуется вступить в союз
    '; + } elseif ($res['join2'] > 0) { + echo 'Ваш клан уже находится в альянсе
    '; + } else { + mysql_query( + 'UPDATE `clan` SET `join1` = "' . $cnm['id'] . '" WHERE `id` = "' . $res['id'] . '" LIMIT 1' + ); + echo 'Вы успешно подали заявку в альянс "' . $cnm['name'] . '"
    '; + mysql_query( + 'INSERT INTO `clan_join` (`clan`,`alians`,`time`,`type`) VALUES ("' . $res['id'] . '","' . $cnm['id'] . '","' . time( + ) . '","2")' + ); + } + } else { + echo 'Альянс или союз с такиим названием не существует
    '; + } + } + } elseif (isset($_GET['newjoint']) && $tt[13][0] == 1) { + if ($_GET['newjoint'] == 1) { + //союзы + if ($res['join1'] > 0) { + echo 'Ваш клан уже состоит в союзе
    '; + } else { + $nm = htmlspecialchars($_POST['logingo'], null, 'cp1251'); + if (str_replace(' ', '', str_replace(' ', '', $nm)) == '') { + echo 'Введите название союза
    '; + } else { + $cnm = mysql_fetch_array( + mysql_query( + 'SELECT `id` FROM `clan_joint` WHERE `name` = "' . mysql_real_escape_string( + $nm + ) . '" LIMIT 1' + ) + ); + if (!isset($cnm['id'])) { + mysql_query( + 'INSERT INTO `clan_joint` (`time_open`,`name`,`type`,`clan_open`,`clan_glava`) VALUES ("' . time( + ) . '","' . mysql_real_escape_string( + $nm + ) . '","1","' . $res['id'] . '","' . $res['id'] . '")' + ); + $id = mysql_insert_id(); + $res['join1'] = $id; + mysql_query( + 'INSERT INTO `clan_join` (`clan`,`alians`,`time`,`type`,`time_start`) VALUES ("' . $res['id'] . '","' . $id . '","' . time( + ) . '","1","' . time() . '")' + ); + mysql_query( + 'UPDATE `clan` SET `join1` = "' . $id . '" WHERE `id` = "' . $res['id'] . '" LIMIT 1' + ); + echo 'Вы успешно создали союз "' . $nm . '"
    '; + } else { + echo 'Альянс или союз с такиим названием уже существует
    '; + } + } + } + } else { + //альянсы + if ($res['join1'] == 0) { + echo 'Ваш клан должен состоять в союзе
    '; + } elseif ($res['join2'] > 0) { + echo 'Ваш клан уже состоит в альянсе
    '; + } else { + $nm = htmlspecialchars($_POST['logingo'], null, 'cp1251'); + if (str_replace(' ', '', str_replace(' ', '', $nm)) == '') { + echo 'Введите название альянса
    '; + } else { + $cnm = mysql_fetch_array( + mysql_query( + 'SELECT `id` FROM `clan_joint` WHERE `name` = "' . mysql_real_escape_string( + $nm + ) . '" LIMIT 1' + ) + ); + if (!isset($cnm['id'])) { + mysql_query( + 'INSERT INTO `clan_joint` (`time_open`,`name`,`type`,`clan_open`,`clan_glava`) VALUES ("' . time( + ) . '","' . mysql_real_escape_string( + $nm + ) . '","2","' . $res['id'] . '","' . $res['id'] . '")' + ); + $id = mysql_insert_id(); + $res['join2'] = $id; + mysql_query( + 'INSERT INTO `clan_join` (`clan`,`alians`,`time`,`type`,`time_start`) VALUES ("' . $res['id'] . '","' . $id . '","' . time( + ) . '","2","' . time() . '")' + ); + mysql_query( + 'UPDATE `clan` SET `join2` = "' . $id . '" WHERE `id` = "' . $res['id'] . '" LIMIT 1' + ); + echo 'Вы успешно создали альянс "' . $nm . '"
    '; + } else { + echo 'Альянс или союз с такиим названием уже существует
    '; + } + } + } + } + } elseif (isset($_GET['cancel']) && $tt[13][0] == 1) { + $zvn = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_join` WHERE `id` = "' . mysql_real_escape_string( + $_GET['cancel'] + ) . '" AND `time_start` = "0" AND `time_end` = "0" LIMIT 1' + ) + ); + if (!isset($zvn['id'])) { + echo 'Заявка на вступление не найдена
    '; + } else { + $rzv = ''; + if ($zvn['clan'] == $res['id']) { + //отмена присоединения + $szu = mysql_fetch_array( + mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "' . $zvn['alians'] . '" LIMIT 1') + ); + if ($szu['type'] == 1) { + $rzv = 'Клан ' . $res['name'] . ' отказался от присоединения к союзу ' . $szu['name'] . '.'; + } else { + $rzv = 'Клан ' . $res['name'] . ' отказался от присоединения к альянсу ' . $szu['name'] . '.'; + } + } elseif ($zvn['alians'] == $res['join1']) { + //отказ в присоединении к союзу + $szu = mysql_fetch_array( + mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "' . $zvn['alians'] . '" LIMIT 1') + ); + $zvy = mysql_fetch_array( + mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $zvn['clan'] . '" LIMIT 1') + ); + $rzv = 'Союз ' . $szu['name'] . ' отказал клану ' . $zvy['name'] . ' в присоединении.'; + } elseif ($zvn['alians'] == $res['join2']) { + //отказ в присоединении к альянсу + $szu = mysql_fetch_array( + mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "' . $zvn['alians'] . '" LIMIT 1') + ); + $zvy = mysql_fetch_array( + mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $zvn['clan'] . '" LIMIT 1') + ); + $rzv = 'Альянс ' . $szu['name'] . ' отказал клану ' . $zvy['name'] . ' в присоединении.'; + } + if ($rzv != '') { + echo '' . $rzv . '
    '; + mysql_query( + 'UPDATE `clan_join` SET `time_end` = "' . time() . '" WHERE `id` = "' . $zvn['id'] . '"' + ); + } + } + } elseif (isset($_GET['ok']) && $tt[13][0] == 1) { + $zvn = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_join` WHERE `id` = "' . mysql_real_escape_string( + $_GET['ok'] + ) . '" AND `time_start` = "0" AND `time_end` = "0" LIMIT 1' + ) + ); + if (!isset($zvn['id'])) { + echo 'Заявка на вступление не найдена
    '; + } else { + $rzv = ''; + if ($zvn['alians'] == $res['join1']) { + //присоединение к союзу + $szu = mysql_fetch_array( + mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "' . $zvn['alians'] . '" LIMIT 1') + ); + $zvy = mysql_fetch_array( + mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $zvn['clan'] . '" LIMIT 1') + ); + $rzv = 'Союз ' . $szu['name'] . ' принял клан ' . $zvy['name'] . '.'; + mysql_query( + 'UPDATE `clan_join` SET `time_end` = "' . time( + ) . '" WHERE `id` != "' . $zvn['id'] . '" AND `clan` = "' . $szu['clan'] . '" AND `type` = "1"' + ); + //mysql_query('INSERT INTO `clan_join` (`clan`,`alians`,`time`,`type`) VALUES ("'.$res['id'].'","'.$szu['id'].'","'.time().'","1")'); + mysql_query( + 'UPDATE `clan` SET `join1` = "' . $zvn['alians'] . '" WHERE `id` = "' . $szu['id'] . '"' + ); + } elseif ($zvn['alians'] == $res['join2']) { + //присоединение к альянсу + $szu = mysql_fetch_array( + mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "' . $zvn['alians'] . '" LIMIT 1') + ); + $zvy = mysql_fetch_array( + mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $zvn['clan'] . '" LIMIT 1') + ); + $rzv = 'Альянс ' . $szu['name'] . ' принял клан ' . $zvy['name'] . '.'; + mysql_query( + 'UPDATE `clan_join` SET `time_end` = "' . time( + ) . '" WHERE `id` != "' . $zvn['id'] . '" AND `clan` = "' . $szu['clan'] . '" AND `type` = "2" AND `time_end` = "0"' + ); + //mysql_query('INSERT INTO `clan_join` (`clan`,`alians`,`time`,`type`) VALUES ("'.$res['id'].'","'.$szu['id'].'","'.time().'","2")'); + mysql_query( + 'UPDATE `clan` SET `join2` = "' . $zvn['alians'] . '" WHERE `id` = "' . $szu['id'] . '"' + ); + } + if ($rzv != '') { + echo '' . $rzv . '
    '; + mysql_query( + 'UPDATE `clan_join` SET `time_start` = "' . time( + ) . '" WHERE `id` = "' . $zvn['id'] . '"' + ); + } + } + } + ?> + 0) { ?> + + + 0) { ?> + + +

    +
    + 0) { + $j1 = mysql_fetch_array( + mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "' . $res['join1'] . '" LIMIT 1') + ); + if (isset($j1['id'])) { + $ms .= '
    '; + $ms .= 'Вы состоите в клановом союзе ' . $j1['name'] . '.'; + if ($j1['clan_glava'] != $res['id']) { + $ms .= ' '; + } + $ms .= '
    Состав союза: '; + //$ms .= ''.$res['name'].''; + $i = 0; + if (isset($_GET['delclanme'])) { + if ($j1['clan_glava'] != $res['id'] && ($u->info['clan_prava'] == 'glava' || $u->info['admin'] > 0)) { + $dels = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_join` WHERE `clan` = "' . $res['id'] . '" AND `alians` = "' . $j1['id'] . '" AND `time_end` = "0" AND `time_start` > 0 LIMIT 1' + ) + ); + if (isset($dels['id'])) { + mysql_query( + 'UPDATE `clan` SET `join1` = "0" WHERE `id` = "' . $res['id'] . '" LIMIT 1' + ); + mysql_query( + 'UPDATE `clan_join` SET `time_end` = "' . time( + ) . '" WHERE `id` = "' . $dels['id'] . '" LIMIT 1' + ); + echo '
    Вы успешно покинули союз "' . $j1['name'] . '"
    '; + header('location: main.php?clan&diplom'); + } else { + echo '
    Ваш клан не состоит в данном союзе
    '; + + } + } else { + echo '
    Вы не можете покинуть данный союз
    '; + } + } elseif ($j1['clan_glava'] == $res['id'] && ($u->info['clan_prava'] == 'glava' || $u->info['admin'] > 0)) { + if (isset($_GET['delclan'])) { + $delc = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan` WHERE `id` = "' . mysql_real_escape_string( + $_GET['delclan'] + ) . '" LIMIT 1' + ) + ); + $dels = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_join` WHERE `clan` = "' . $delc['id'] . '" AND `alians` = "' . $j1['id'] . '" AND `time_end` = "0" AND `time_start` > 0 LIMIT 1' + ) + ); + + if (isset($delc['id']) && isset($dels['id'])) { + if ($delc['id'] != $res['id']) { + mysql_query( + 'UPDATE `clan` SET `join1` = "0" WHERE `id` = "' . $dels['id'] . '" LIMIT 1' + ); + mysql_query( + 'UPDATE `clan_join` SET `time_end` = "' . time( + ) . '" WHERE `id` = "' . $dels['id'] . '" LIMIT 1' + ); + echo '
    Клан "' . $delc['name'] . '" был исключен из данного союза
    '; + header('location: main.php?clan&diplom'); + } else { + echo '
    Клан ответственный за союз не может покинуть данный союз
    '; + } + } else { + echo '
    Клан не состоит в данном союзе
    '; + } + } + } + $sp1 = mysql_query( + 'SELECT `u`.*,`s`.* FROM `clan_join` AS `u` LEFT JOIN `clan` AS `s` ON `s`.`id` = `u`.`clan` WHERE `u`.`alians` = "' . $j1['id'] . '" AND `u`.`time_end` = "0" AND `u`.`time_start` > 0' + ); + while ($pl1 = mysql_fetch_array($sp1)) { + if ($i > 0) { + $ms .= ','; + } + $ms .= ' ' . $pl1['name'] . ''; + if ($j1['clan_glava'] == $res['id']) { + if ($res['id'] != $pl1['clan']) { + if ($u->info['clan_prava'] == 'glava' || $u->info['admin'] > 0) { + $ms .= ' '; + } + } + } + $i++; + } + if ($j1['clan_glava'] == $res['id'] && ($u->info['clan_prava'] == 'glava' || $u->info['admin'] > 0)) { + $ms .= '
    Вы основатель союза, можете ограничить каналы союза чата:
    '; + $cnls = 'выключено'; + //$ms .= '
    '.$res['name'].'   '.$cnls.'  
    '; + $sp1 = mysql_query( + 'SELECT `u`.*,`s`.* FROM `clan_join` AS `u` LEFT JOIN `clan` AS `s` ON `s`.`id` = `u`.`clan` WHERE `u`.`alians` = "' . $j1['id'] . '" AND `u`.`time_end` = "0" AND `u`.`time_start` > 0' + ); + while ($pl1 = mysql_fetch_array($sp1)) { + $ms .= '
    ' . $pl1['name'] . '   ' . $cnls . '  
    '; + } + } + //Перечисляем открытые каналы клана + + $ms .= '
    '; + } + } + if ($res['join2'] > 0) { + $j1 = mysql_fetch_array( + mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "' . $res['join2'] . '" LIMIT 1') + ); + if (isset($j1['id'])) { + $ms .= '
    '; + $ms .= 'Вы состоите в клановом альянсе ' . $j1['name'] . '. Состав альянса: '; + //$ms .= ''.$res['name'].''; + $sp1 = mysql_query( + 'SELECT `u`.*,`s`.* FROM `clan_join` AS `u` LEFT JOIN `clan` AS `s` ON `s`.`id` = `u`.`clan` WHERE `u`.`alians` = "' . $j1['id'] . '" AND `u`.`time_end` = "0" AND `u`.`time_start` > 0' + ); + $i = 0; + while ($pl1 = mysql_fetch_array($sp1)) { + if ($i > 0) { + $ms .= ', '; + } + $ms .= '' . $pl1['name'] . ''; + $i++; + } + $ms .= '
    Вы основатель альянса.
    '; + $ms .= '
    '; + } + } + + //Союзы и альянсы в которых состоит клан + + + if ($ms == '') { + ?> +
    В данный момент у вашего клана нет дипломатических отношений.
    + +
    + +
    +
    Заявки на союзы
    +
    + + + + + +
    +
    + Ваши заявки на установление союза +
    +
    + Вы подали заявку на вступление в союз ' . $suz['name'] . '.
    Время подачи заявки: ' . date( + 'd.m.Y H:i', $pl['time'] + ) . '
    Отменить
    '; + } + if ($ms == '') { + ?> + С Вами никто не подавал заявки + + +
    +
    + Заявки на установление союза с вами +
    +
    + Клан ' . $clz['name'] . ' подал заявку на вступление в Ваш союз ' . $suz['name'] . '.
    Время подачи заявки: ' . date( + 'd.m.Y H:i', $pl['time'] + ) . '

    '; + } + if ($ms == '') { + ?> + С Вами никто не подавал заявки + + +
    +
    +
    Заявки на альянсы
    +
    + + + + + +
    +
    + Ваши заявки на установление альянса +
    +
    + Вы подали заявку на вступление в альянс ' . $suz['name'] . '.
    Время подачи заявки: ' . date( + 'd.m.Y H:i', $pl['time'] + ) . '
    Отменить
    '; + } + if ($ms == '') { + ?> + С Вами никто не подавал заявки + + +
    +
    + Заявки на установление альянса с вами +
    +
    + Клан ' . $clz['name'] . ' подал заявку на вступление в Ваш альянс ' . $suz['name'] . '.
    Время подачи заявки: ' . date( + 'd.m.Y H:i', $pl['time'] + ) . '

    '; + } + if ($ms == '') { + ?> + С Вами никто не подавал заявки + + +
    + +
    + = 0 AND `iu`.`delete` = "0" + AND `iu`.`id` = "' . mysql_real_escape_string($_GET['ungive_itm']) . '" LIMIT 1' + ) + ); + $ps = $u->lookStats($itms['data']); + $ps['cl'] = explode('#', $ps['toclan']); + $use_s = $ps['cl'][1]; + if (isset($_GET['ungive_itm']) && $ps['cl'][0] == $res['id'] && ($tt[14][0] == 1 || ($u->info['id'] == $use_s))) { + $itm = mysql_fetch_array( + mysql_query( + 'SELECT `iu`.*,`im`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `iu`.`item_id` = `im`.`id` WHERE `iu`.`uid` >= 0 AND `iu`.`delete` = "0" + AND `iu`.`id` = "' . mysql_real_escape_string($_GET['ungive_itm']) . '" LIMIT 1' + ) + ); + if (isset($itm['id'])) { + $btlud = mysql_fetch_array( + mysql_query('SELECT `id`,`battle` FROM `users` WHERE `id` = "' . $itm['uid'] . '" LIMIT 1') + ); + if ($u->testBattle($btlud['battle']) == true) { + echo 'Нельзя изымать предметы с персонажа в бою
    '; + } else { + echo $u->ungive_itm_cl($_GET['ungive_itm'], $u->info, $res['id']); + } + } + } elseif (isset($_GET['take_itm']) && $tt[4][0] == 1) { + $itm = mysql_fetch_array( + mysql_query( + 'SELECT `iu`.*,`im`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `iu`.`item_id` = `im`.`id` WHERE `iu`.`uid`="-21' . $res['id'] . '" AND `iu`.`delete`="0" + AND `iu`.`id` = "' . mysql_real_escape_string($_GET['take_itm']) . '" LIMIT 1' + ) + ); + if (isset($itm['id'])) { + echo $u->take_itm_cl($_GET['take_itm'], $u->info, $res['id']); + } + } elseif (isset($_GET['give_itm'])) { + $itm = mysql_fetch_array( + mysql_query( + 'SELECT `iu`.*,`im`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `iu`.`item_id` = `im`.`id` WHERE `iu`.`uid`="' . $u->info['id'] . '" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `im`.`inslot` > 0 AND `iu`.`gift` = "" AND `iu`.`data` NOT LIKE "%frompisher=%" + AND `iu`.`id` = "' . mysql_real_escape_string($_GET['give_itm']) . '" LIMIT 1' + ) + ); + if ($itmc >= $lvl_prava[$res['level']][5]) { + echo 'Хранилище переполнено
    '; + } elseif (isset($itm['id'])) { + echo $u->set_cl_item($_GET['give_itm'], $u->info, $res['id']); + } + } + if ($tt[4][0] == 1) { + $itm_clan = $u->genInv( + 66, + '(`iu`.`uid` = "-21' . $u->info['clan'] . '" OR `iu`.`data` LIKE "%toclan=' . $u->info['clan'] . '#%") AND `iu`.`delete` = 0 AND `iu`.`inShop` = 0 ORDER BY `lastUPD` DESC' + ); + } else { + $itm_clan[2] = '

    У вас нет доступа к использованию хранилища
    '; + } + $itm_user = $u->genInv( + 65, + '`iu`.`uid` = ' . $u->info['id'] . ' AND `iu`.`delete` = 0 AND `iu`.`inOdet` = 0 AND `iu`.`inShop` = 0 AND `im`.`inslot` > 0 AND `iu`.`gift` = "" AND `iu`.`data` NOT LIKE "%frompisher=%" ORDER BY `lastUPD` DESC' + ); + + ?> +
    + + + + + +
    +
    + Хранилище (предметов : /) + + + + +
    +
    Хранилище клана пусто

    '; + } ?> +
    +
    +
    + Рюкзак + + + +
    +
    Рюкзак пуст

    '; + } ?> +
    +
    +
    + + +
    + = 20) { + echo 'Нельзя добавлять более 25-ти титулов, для добавления нового сотрите старые
    '; + } else { + $nm = htmlspecialchars($_POST['tituladd'], null, 'cp1251'); + if (str_replace(' ', '', str_replace(' ', '', $nm)) == '') { + echo 'Название титула не должно быть пустым
    '; + } else { + mysql_query( + 'INSERT INTO `clan_tituls` (`clan`,`user_add`,`time_add`,`name`) VALUES ("' . $res['id'] . '","' . $u->info['id'] . '","' . time( + ) . '","' . mysql_real_escape_string($nm) . '")' + ); + echo 'Титул был успешно добавлен
    '; + } + } + } elseif (isset($_GET['save'])) { + //сохраняем титул + $tc = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_tituls` WHERE `clan` = "' . $res['id'] . '" AND `id` = "' . mysql_real_escape_string( + $_GET['save'] + ) . '" AND `delete` = "0" LIMIT 1' + ) + ); + if (isset($tc['id'])) { + $tc['info'] = htmlspecialchars($_POST['t_info'], null, 'cp1251'); + $i = 1; + $tc['canals'] = ''; + while ($i <= 9) { + if ($_POST['t_klan' . $i]) { + $tc['canals'] .= '1'; + } else { + $tc['canals'] .= '0'; + } + $i++; + } + $i = 0; + $tc['prava'] = ''; + while ($i <= 20) { + if ($_POST['t_tr' . $i]) { + $tc['prava'] .= '1'; + } else { + $tc['prava'] .= '0'; + } + $i++; + } + $_POST['colorsp'] = preg_replace('/[^a-zа-яё0-9]/i', '', $_POST['colorsp']); + mysql_query( + 'UPDATE `clan_tituls` SET `info` = "' . mysql_real_escape_string( + $tc['info'] + ) . '", `color` = "' . mysql_real_escape_string( + $_POST['colorsp'] + ) . '", `canals` = "' . $tc['canals'] . '", `prava` = "' . $tc['prava'] . '" WHERE `id` = "' . $tc['id'] . '" LIMIT 1' + ); + echo 'Титул был успешно сохранен
    '; + } else { + echo 'Титул не найден
    '; + } + } elseif (isset($_GET['delete'])) { + $tc = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_tituls` WHERE `clan` = "' . $res['id'] . '" AND `id` = "' . mysql_real_escape_string( + $_GET['delete'] + ) . '" AND `delete` = "0" LIMIT 1' + ) + ); + if (isset($tc['id'])) { + mysql_query( + 'UPDATE `clan_tituls` SET `delete` = "' . $u->info['id'] . '" WHERE `id` = "' . $tc['id'] . '" LIMIT 1' + ); + echo 'Титул был удален
    '; + } else { + echo 'Титул не найден
    '; + } + } + ?> + + + +
    + + *   + + +
    + + +
    + +
    +
    + Права персонажа "info['login'] ?>" +
    + Звание в клане: info['clan_prava'] != 'glava') { + echo $u->info['moder_zvanie']; + } else { + echo 'глава клана'; + } + + ?> +
    +
    + Титул:   -   +
    +
    + Каналы чата: + klan-' . $j . ', '; + } + $j++; + } + echo rtrim($r, ', '); + ?> +
    + +
    +
    + •
    +
    + + +
    +
    + +
    +
    + Название клана: () +
    +
    + Уровень клана: +
    +
    + Опыт клана: / +
    +
    + % +
    +
    +
    +
    + + + + + + + + + + + + + + + + +
    Статистика кланового опыта:• За сегодня:
     • За неделю:
     • За месяц:
    +
    +
    + + + + + + + + + + + + + = $i) { + $bgclr = ' bgcolor="#8fd155"'; + } + if ($i < count($lvl_prava) - 1) { + ?> + > + + + + + + + + + + + + > + + + + + + + + + + + +
    + Уровень + Игроки + Союз + Создать союз + Альянс + Создать альянс + Хранилище + Передач на игрока + Передач всего
    +
    +
    + +
    +
    + Соклановцы + + + + + +
    + '; + $j = 0; + $i = 0; + if ($res['join1'] > 0 || $res['join2'] > 0) { + $r .= '
    + Основной состав'; + } + while ($pl = mysql_fetch_array($sp)) { + if (!isset($_GET['online']) || $pl['online'] > time() - 120) { + $pl['textcolor1'] = ''; + if ($pl['online'] > time() - 120) { + $ico = ''; + $j++; + } else { + $pl['textcolor1'] = '#837f82'; + $ico = ''; + } + $zvn = $pl['mod_zvanie']; + $zvn = str_replace('[b]', '', $zvn); + $zvn = str_replace('[/b]', '', $zvn); + $zvn = str_replace('[i]', '', $zvn); + $zvn = str_replace('[/i]', '', $zvn); + $zvn = str_replace('[u]', '', $zvn); + $zvn = str_replace('[/u]', '', $zvn); + $zvn = str_replace('[c=', '', $zvn); + $zvn = str_replace('[/c]', '', $zvn); + if ($pl['clan_prava'] == 'glava') { + if ($zvn == 'Стажер' || $zvn == '') { + $zvn = 'глава клана'; + } + $zvn = '' . $zvn; + } + $ttl = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_tituls` WHERE `clan` = "' . $res['id'] . '" AND `id` = "' . $pl['clan_prava'] . '" LIMIT 1' + ) + ); + if (isset($ttl['id'])) { + $zvn = '' . $ttl['name'] . ' - ' . $zvn; + } + if ($pl['online'] > time() - 120) { + $rm = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`name`,`city` FROM `room` WHERE `id` = "' . $pl['room'] . '" LIMIT 1' + ) + ); + if (isset($rm['id'])) { + $zvn .= ' - ' . $rm['name'] . ''; + } + } else { + $zvn .= ' - персонаж сейчас не в клубе'; + } + if ($pl['battle'] > 0) { + $zvn .= ' '; + } + $r .= '
    ' . $ico . '      ' . $pl['login'] . '[' . $pl['level'] . ']' . $zvn . '
    '; + } + $i++; + } + + if ($res['join1'] > 0 || $res['join2'] > 0) { + $r .= '
    '; + } + $nacln = ''; + if ($res['join1'] > 0) { + $clna = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_joint` WHERE `id` = "' . $res['join1'] . '" AND `type` = "1" AND `time_close` = "0" LIMIT 1' + ) + ); + $cn_sp = mysql_query( + 'SELECT * FROM `clan_join` WHERE `alians` = "' . $clna['id'] . '" AND `clan` != "' . $res['id'] . '" AND `time_end` = "0" AND `time_start` > 0' + ); + while ($cn_pl = mysql_fetch_array($cn_sp)) { + /* ----------------------------------------------------------------------------------------------------------------------------- */ + $nacln .= ' AND `clan` != "' . $cn_pl['clan'] . '"'; + $clnf = mysql_fetch_array( + mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $cn_pl['clan'] . '" LIMIT 1') + ); + $sp = mysql_query( + 'SELECT `id`,`battle`,`login`,`clan`,`level`,`room`,`cityreg`,`align`,`clan_prava`,`mod_zvanie`,`sex`,`city`,`online`,`banned` FROM `users` WHERE `clan` = "' . $cn_pl['clan'] . '"' + ); + $r .= '
    + Состав "' . $clna['name'] . '"'; + $j = 0; + $i = 0; + while ($pl = mysql_fetch_array($sp)) { + if (!isset($_GET['online']) || $pl['online'] > time() - 120) { + $pl['textcolor1'] = ''; + if ($pl['online'] > time() - 120) { + $ico = ''; + $j++; + } else { + $pl['textcolor1'] = '#837f82'; + $ico = ''; + } + $zvn = $pl['mod_zvanie']; + $zvn = str_replace('[b]', '', $zvn); + $zvn = str_replace('[/b]', '', $zvn); + $zvn = str_replace('[i]', '', $zvn); + $zvn = str_replace('[/i]', '', $zvn); + $zvn = str_replace('[u]', '', $zvn); + $zvn = str_replace('[/u]', '', $zvn); + $zvn = str_replace('[c=', '', $zvn); + $zvn = str_replace('[/c]', '', $zvn); + if ($pl['clan_prava'] == 'glava') { + if ($zvn == 'Стажер' || $zvn == '') { + $zvn = 'глава клана'; + } + $zvn = '' . $zvn; + } + $ttl = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_tituls` WHERE `clan` = "' . $clnf['id'] . '" AND `id` = "' . $pl['clan_prava'] . '" LIMIT 1' + ) + ); + if (isset($ttl['id'])) { + $zvn = '' . $ttl['name'] . ' - ' . $zvn; + } + if ($pl['online'] > time() - 120) { + $rm = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`name`,`city` FROM `room` WHERE `id` = "' . $pl['room'] . '" LIMIT 1' + ) + ); + if (isset($rm['id'])) { + $zvn .= ' - ' . $rm['name'] . ''; + } + } else { + $zvn .= ' - персонаж сейчас не в клубе'; + } + if ($pl['battle'] > 0) { + $zvn .= ' '; + } + $r .= '
    ' . $ico . '      ' . $pl['login'] . '[' . $pl['level'] . ']' . $zvn . '
    '; + } + $i++; + } + $r .= '
    '; + /* ----------------------------------------------------------------------------------------------------------------------------- */ + } + } + if ($res['join2'] > 0) { + $cn_sp0 = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_joint` WHERE `id` = "' . $res['join2'] . '" AND `type` = "2" AND `time_close` = "0" LIMIT 1' + ) + ); + $cn_sp = mysql_query( + 'SELECT * FROM `clan_join` WHERE `alians` = "' . $cn_sp0['id'] . '" AND `clan` != "' . $res['id'] . '"' . $nacln . ' AND `time_end` = "0" AND `time_start` > 0' + ); + while ($cn_pl = mysql_fetch_array($cn_sp)) { + /* ----------------------------------------------------------------------------------------------------------------------------- */ + $clnf = mysql_fetch_array( + mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $cn_pl['clan'] . '" LIMIT 1') + ); + $clna = mysql_fetch_array( + mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "' . $res['join2'] . '" LIMIT 1') + ); + $sp = mysql_query( + 'SELECT `id`,`battle`,`login`,`clan`,`level`,`room`,`cityreg`,`align`,`clan_prava`,`mod_zvanie`,`sex`,`city`,`online`,`banned` FROM `users` WHERE `clan` = "' . $cn_pl['clan'] . '"' + ); + $r .= '
    + Состав "' . $clna['name'] . '"'; + $j = 0; + $i = 0; + while ($pl = mysql_fetch_array($sp)) { + if (!isset($_GET['online']) || $pl['online'] > time() - 120) { + $pl['textcolor1'] = ''; + if ($pl['online'] > time() - 120) { + $ico = ''; + $j++; + } else { + $pl['textcolor1'] = '#837f82'; + $ico = ''; + } + $zvn = $pl['mod_zvanie']; + $zvn = str_replace('[b]', '', $zvn); + $zvn = str_replace('[/b]', '', $zvn); + $zvn = str_replace('[i]', '', $zvn); + $zvn = str_replace('[/i]', '', $zvn); + $zvn = str_replace('[u]', '', $zvn); + $zvn = str_replace('[/u]', '', $zvn); + $zvn = str_replace('[c=', '', $zvn); + $zvn = str_replace('[/c]', '', $zvn); + if ($pl['clan_prava'] == 'glava') { + if ($zvn == 'Стажер' || $zvn == '') { + $zvn = 'глава клана'; + } + $zvn = '' . $zvn; + } + $ttl = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `clan_tituls` WHERE `clan` = "' . $clnf['id'] . '" AND `id` = "' . $pl['clan_prava'] . '" LIMIT 1' + ) + ); + if (isset($ttl['id'])) { + $zvn = '' . $ttl['name'] . ' - ' . $zvn; + } + if ($pl['online'] > time() - 120) { + $rm = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`name`,`city` FROM `room` WHERE `id` = "' . $pl['room'] . '" LIMIT 1' + ) + ); + if (isset($rm['id'])) { + $zvn .= ' - ' . $rm['name'] . ''; + } + } else { + $zvn .= ' - персонаж сейчас не в клубе'; + } + if ($pl['battle'] > 0) { + $zvn .= ' '; + } + $r .= '
    ' . $ico . '      ' . $pl['login'] . '[' . $pl['level'] . ']' . $zvn . '
    '; + } + $i++; + } + $r .= '
    '; + /* ----------------------------------------------------------------------------------------------------------------------------- */ + } + } + + $r .= '
    Online: ' . $j . '
    Всего: ' . $i . '
    (список обновляется в полночь)'; + echo $r; + ?> +
    +
    +
    \ No newline at end of file diff --git a/modules_data/location/a_clanreg.php b/modules_data/location/a_clanreg.php index a07d2dcd..c30f480d 100644 --- a/modules_data/location/a_clanreg.php +++ b/modules_data/location/a_clanreg.php @@ -1,314 +1,291 @@ -room['file']=='a_clanreg') -{ - - +if ($u->room['file'] != 'a_clanreg') { + return; +} function alignc($al) { - if ($al==1){$value="(светлый)";} - elseif ($al==3){$value="(темный)";} - elseif ($al==7){$value="(нейтральный)";} - else {$value="(серый)";} - return $value; -} -// класс загрузки файлов - -class upload { - -protected function __construct() { } - -static $save_path = 'clan_prw/'; -static $error = ''; - -static function saveimg($name,$max_mb = 2,$exts = 'jpg|png|jpeg|gif',$cnm = '',$mnw = 0,$mxw = 0,$mnh = 0,$mxh = 0) { - if (isset($_FILES[$name])) { - $f = &$_FILES[$name]; - - if(isset($f['tmp_name'])) { - $width = 0; - $height = 0; - list($width, $height) = getimagesize($f['tmp_name']); - } - - if( $mnw != 0 && $mnw > $width ) { - self::$error = 'Минимальная ширина картинки '.$mnw.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; - }elseif( $mxw != 0 && $mxw < $width ) { - self::$error = 'Максимальная ширина картинки '.$mxw.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; - }elseif( $mnh != 0 && $mnh > $height ) { - self::$error = 'Минимальная высота картинки '.$mnh.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; - }elseif( $mxh != 0 && $mxh < $height ) { - self::$error = 'Максимальная высота картинки '.$mxh.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; - }elseif (($f['size'] <= $max_mb*1024*1024) && ($f['size'] > 0)) { - if ( - (preg_match('/\.('.$exts.')$/i',$f['name'],$ext))&& - (preg_match('/image/i',$f['type'])) - ) { - - $ext[1] = strtolower($ext[1]); - $fn = uniqid('f_',true).'.'.$ext[1]; - $fn2 = uniqid('f_',true).'.gif'; - if (move_uploaded_file($f['tmp_name'], self::$save_path . $fn)) { - // система изменения размера , требуется Rimage - //Rimage::resize(self::$save_path . $fn, self::$save_path . $fn2); - //@unlink(self::$save_path . $fn); // удаление файла - return array($fn2,$fn,self::$save_path . $fn); - } else { - self::$error = 'Ошибка загрузки файла'; - } - } else { - self::$error = 'Неверный тип файла. Допустимые типы : '.$exts.''; - } - } else { - self::$error = 'Неверный размер файла. Максимальный размер файла '.$max_mb.' МБ'; - } + if ($al == 1) { + $value = "(светлый)"; + } elseif ($al == 3) { + $value = "(темный)"; + } elseif ($al == 7) { + $value = "(нейтральный)"; } else { - self::$error = 'Файл не найден'; + $value = "(серый)"; } - return false; -} // end saveimg -} // end class + return $value; +} -$lzv = mysql_fetch_array(mysql_query('SELECT * FROM `_clan` WHERE `uid` = "'.$u->info['id'].'" AND `admin_time` = "0" LIMIT 1')); +$lzv = mysql_fetch_array( + mysql_query('SELECT * FROM `_clan` WHERE `uid` = "' . $u->info['id'] . '" AND `admin_time` = "0" LIMIT 1') +); /*Заявка на вступление*/ -if(isset($_POST['clan_enter'])) -{ - - mysql_query('UPDATE `users` SET `clan_zv`= "'.$_POST['clan_enter'].'" WHERE `id` = "'.$u->info['id'].'" '); +if (isset($_POST['clan_enter'])) { + + mysql_query('UPDATE `users` SET `clan_zv`= "' . $_POST['clan_enter'] . '" WHERE `id` = "' . $u->info['id'] . '" '); } /* Регистрация клана */ -if(isset($_POST['clan_name'])) { - /*if($_POST['clan_align'] != 0) { - $_POST['clan_align'] = 0; - }*/ - - $tr_money2 = 0; - if($_POST['clan_align'] == 1) { - $tr_money2 = 50; - $_POST['clan_align'] = 1; - }elseif($_POST['clan_align'] == 3) { - $tr_money2 = 50; - $_POST['clan_align'] = 3; - }elseif($_POST['clan_align'] == 7) { - $tr_money2 = 50; - $_POST['clan_align'] = 7; - } - - $clan_name = substr(htmlspecialchars($_POST['clan_name'],NULL,'cp1251'), 0, 30); - - $cnt = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `name` = "'.mysql_real_escape_string($clan_name).'" LIMIT 1')); - - if(isset($cnt['id'])) { - $re = 'Клан с названием "'.$cnt['name'].'" уже зарегистрирован.'; - }elseif(true == false) { - $re = 'Регистрация кланов временно не работает.'; - }elseif(isset($lzv['id'])) { - $re = 'Вы уже подали заявку на регистрацию клана, ожидайте ответа от администрации'; - //}elseif( $u->testAlign($_POST['clan_align'],$u->info['id']) == 0 ) { - //$re = 'Вы не можете зарегистрировать клан с данной склонностью. (Действует ограничение на выбор склонности для вашего персонажа)'; - }elseif($tr_money2 > $u->info['money2']) { - $re = 'У вас не хватает денег, требуется '.$tr_money2.'екр.'; - }elseif($u->info['clan'] > 0){ - $re = 'Вы состоите в одном из кланов, требуется покинуть его'; - }elseif($u->info['align'] > 0){ - $re = 'Персонажи со склонностью не могут создавать клан, избавьтесь от неё'; - }else{ - /* заносим данные в базу */ - //$clan_name = str_replace('.','',$clan_name); - //$clan_name = str_replace(' ','',$clan_name); - //$clan_name = str_replace(' ','',$clan_name); - if(!preg_match("/^[-a-zA-Z0-9]+$/", $clan_name)) { - $re = 'В названии клана присутствуют запрещенные символы.'; - }elseif($file = upload::saveimg('clan_img1',0.3,'gif',$clan_name,24,24,15,15)) { - //if($file2 = upload::saveimg('clan_img2',0.5,'gif',$clan_name)) { - if($tr_money2 < 0) { - $tr_money2 = 0; - } - $u->info['money2'] -= $tr_money2; - - mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `_clan` (`uid`,`time`,`city`,`name`,`name2`,`site`,`img1`,`img2`,`info`,`money`,`align`) VALUES ( - "'.$u->info['id'].'","'.time().'", - "'.$u->info['city'].'", - "'.mysql_real_escape_string(htmlspecialchars($_POST['clan_name'],NULL,'cp1251')).'", - "'.mysql_real_escape_string(htmlspecialchars($_POST['clan_name'],NULL,'cp1251')).'", - "'.mysql_real_escape_string(htmlspecialchars($_POST['clan_site'],NULL,'cp1251')).'", - "'.mysql_real_escape_string(htmlspecialchars($file[1],NULL,'cp1251')).'", +if (isset($_POST['clan_name'])) { + + $tr_money2 = 0; + if ($_POST['clan_align'] == 1) { + $tr_money2 = 50; + $_POST['clan_align'] = 1; + } elseif ($_POST['clan_align'] == 3) { + $tr_money2 = 50; + $_POST['clan_align'] = 3; + } elseif ($_POST['clan_align'] == 7) { + $tr_money2 = 50; + $_POST['clan_align'] = 7; + } + + $clan_name = substr(htmlspecialchars($_POST['clan_name'], null, 'cp1251'), 0, 30); + + $cnt = mysql_fetch_array( + mysql_query('SELECT * FROM `clan` WHERE `name` = "' . mysql_real_escape_string($clan_name) . '" LIMIT 1') + ); + + $upload = new Uploader($clan_name); + $upload->setMaxFileSize(.3); + $upload->setDimensions(24, 15); + $upload->setExtentions('gif'); + $upload->setSavePath('clan_prw/'); + + if (isset($cnt['id'])) { + $re = 'Клан с названием "' . $cnt['name'] . '" уже зарегистрирован.'; + } elseif (isset($lzv['id'])) { + $re = 'Вы уже подали заявку на регистрацию клана, ожидайте ответа от администрации'; + } elseif ($tr_money2 > $u->info['money2']) { + $re = 'У вас не хватает денег, требуется ' . $tr_money2 . 'екр.'; + } elseif ($u->info['clan'] > 0) { + $re = 'Вы состоите в одном из кланов, требуется покинуть его'; + } elseif ($u->info['align'] > 0) { + $re = 'Персонажи со склонностью не могут создавать клан, избавьтесь от неё'; + } else { + /* заносим данные в базу */ + if (!preg_match("/^[-a-zA-Z0-9]+$/", $clan_name)) { + $re = 'В названии клана присутствуют запрещенные символы.'; + } elseif ($file = $upload->saveimg()) { + if ($tr_money2 < 0) { + $tr_money2 = 0; + } + $u->info['money2'] -= $tr_money2; + + mysql_query( + 'UPDATE `users` SET `money2` = "' . $u->info['money2'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + mysql_query( + 'INSERT INTO `_clan` (`uid`,`time`,`city`,`name`,`name2`,`site`,`img1`,`img2`,`info`,`money`,`align`) VALUES ( + "' . $u->info['id'] . '","' . time() . '", + "' . $u->info['city'] . '", + "' . mysql_real_escape_string(htmlspecialchars($_POST['clan_name'], null, 'cp1251')) . '", + "' . mysql_real_escape_string(htmlspecialchars($_POST['clan_name'], null, 'cp1251')) . '", + "' . mysql_real_escape_string(htmlspecialchars($_POST['clan_site'], null, 'cp1251')) . '", + "' . mysql_real_escape_string(htmlspecialchars($file[1], null, 'cp1251')) . '", "", "", - "'.$tr_money2.'", - "'.mysql_real_escape_string(htmlspecialchars($_POST['clan_align'],NULL,'cp1251')).'" - )'); - $lzv = array( - 'id' => mysql_insert_id(), - 'name' => htmlspecialchars($_POST['clan_name'],NULL,'cp1251'), - 'time' => time() - ); - $re = 'Вы успешно подали заявку на регистрацию клана "'.htmlspecialchars($_POST['clan_name'],NULL,'cp1251').'". ('.$tr_money2.'екр.)'; - //}else{ - // @unlink($file[2]); // удаление файла - // $re = 'Большой значок: '.upload::$error; - //} - }else{ - $re = 'Маленький значок: '.upload::$error; - } - } + "' . $tr_money2 . '", + "' . mysql_real_escape_string(htmlspecialchars($_POST['clan_align'], null, 'cp1251')) . '" + )' + ); + $lzv = [ + 'id' => mysql_insert_id(), + 'name' => htmlspecialchars($_POST['clan_name'], null, 'cp1251'), + 'time' => time(), + ]; + $re = 'Вы успешно подали заявку на регистрацию клана "' . htmlspecialchars( + $_POST['clan_name'], null, 'cp1251' + ) . '". (' . $tr_money2 . 'екр.)'; + } else { + $re = 'Маленький значок: ' . Uploader::$error; + } + } } ?> - - - - - - -
    -
    -

    Заявка на регистрацию клана

    -
    -
    - '.$re.''; - } - ?> -
    - + +
    - - + + -
      - - - -
    - - - - - - -
    - - - - -
    Страшилкина улица
    +
    +
    +

    Заявка на регистрацию клана

    +
    +
    + ' . $re . ''; + } + ?> +
    +
    + + + + + +
      + + + + +
    + + + + + + +
    + + + + + +
    Страшилкина улица
    +
    +
    +
    +
    +
    -
    -info['clan'] > 0 ) { - $clan = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.$u->info['clan'].'" LIMIT 1')); -?> -Вы уже состоите в клане и не можете подать заявку на регистрацию нового клана.

    -
    -

    Клановые войны

    - info['clan_prava'] == 'glava' ) { - echo 'Нет ни одной войны, но вы можете обьявить её!'; - }else{ - echo 'Нет ни одной войны, но ваш глава клана может обьявить её!'; - } - ?> -
    - - - -

    Требования к значку: размер (ШхВ в пикселях) 24х15, графический тип GIF, размер до 30кб.

    -

    - Стоимость регистрации кланов:
    - нейтральный - 50 екр.
    - светлый - 50 екр.
    - тёмный - 50 екр.
    -

    +
    +info['clan'] > 0) { + $clan = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $u->info['clan'] . '" LIMIT 1')); + ?> + Вы уже состоите в клане и не можете подать заявку на регистрацию нового клана.

    +
    +

    Клановые войны

    + info['clan_prava'] == 'glava') { + echo 'Нет ни одной войны, но вы можете обьявить её!'; + } else { + echo 'Нет ни одной войны, но ваш глава клана может обьявить её!'; + } + ?> +
    + + + + + + + + + +

    Требования к значку: размер (ШхВ в пикселях) 24х15, графический тип GIF, размер до 30кб.

    +

    + Стоимость регистрации кланов:
    + нейтральный - 50 + екр.
    + светлый - 50 + екр.
    + тёмный - 50 + екр.
    +

    +

    + Заявка на регистрацию подает будущий глава клана, у которого должна быть при себе необходимая сумма. +

    +
    +
    +
    +

    Заявка на регистрацию клана

    +
    + + Название клана (только английские буквы или цифры, одно слово): + +
    + Клан сайт (необязательно Пример https://new-combats.com/): + +
    + Значок + +
    + Склонность клана + +
    + + +     Вы уже подали заявку на регистрацию клана " + ". Ожидайте ответа от Администрации. + +
    +
    +
    +
    +
    +

    Заявка на вступление в клан

    + info['id'] . '" LIMIT 1') + ); + if ($clnt['clan_zv'] != 0) { + $clnn = mysql_fetch_array( + mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $clnt['clan_zv'] . '" LIMIT 1') + ); + echo 'Вы подали заявку в клан ' . $clnn['name'] . ' ' . alignc( + $clnn['align'] + ) . ' ' . $tmpc . '
    '; + echo 'Ожидайте рассмотрения вашей заявки. Если решения долго нет просто выбирите из списка другой клан.
    '; + } + ?> + Выбирите клан: +
    + +

    + +
    +
    +
    +

    Примечание:

    - Заявка на регистрацию подает будущий глава клана, у которого должна быть при себе необходимая сумма. + При подаче заявки с вас снимается сумма необходимая для регистрации клана.
    + В случаи отказа в регистрации клана (по любой причине), еврокредиты возвращаются персонажу.
    + Администрация вправе отказать в регистрации без объяснения причин.
    + При регистрации клана, глава клана в течении 60 дней не имеет право передавать своё главенство другому + игроку.

    - - - - -
    -
    -

    Заявка на регистрацию клана

    -
    - - Название клана (только английские буквы или цифры, одно слово): - -
    - Клан сайт (необязательно Пример https://new-combats.com/): - -
    - Значок - -
    - Склонность клана - -
    - - -     Вы уже подали заявку на регистрацию клана "". Ожидайте ответа от Администрации. - -
    -
    - - -
    -
    -

    Заявка на вступление в клан

    - info['id'].'" LIMIT 1')); - if ($clnt['clan_zv']!=0) - { - $clnn = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.$clnt['clan_zv'].'" LIMIT 1')); - echo 'Вы подали заявку в клан '.$clnn['name'].' '.alignc($clnn['align']).' '.$tmpc.'
    '; - echo 'Ожидайте рассмотрения вашей заявки. Если решения долго нет просто выбирите из списка другой клан.
    '; - } - ?> - Выбирите клан: -
    - -

    - -
    -
    - - - -

    Примечание:

    -

    -При подаче заявки с вас снимается сумма необходимая для регистрации клана.
    -В случаи отказа в регистрации клана (по любой причине), еврокредиты возвращаются персонажу.
    -Администрация вправе отказать в регистрации без объяснения причин.
    -При регистрации клана, глава клана в течении 60 дней не имеет право передавать своё главенство другому игроку. -

    - - \ No newline at end of file + \ No newline at end of file -- 2.45.2 From b94516a0a471cb81055843c61b04c524d7e23e8f Mon Sep 17 00:00:00 2001 From: Ivor Barhansky Date: Thu, 25 Aug 2022 20:08:08 +0300 Subject: [PATCH 4/5] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ekr.bac.php | 1391 ------------------------------- ekr.php | 2258 +++++++++++++++++++++++++++++---------------------- logs.php | 2 + 3 files changed, 1289 insertions(+), 2362 deletions(-) delete mode 100644 ekr.bac.php diff --git a/ekr.bac.php b/ekr.bac.php deleted file mode 100644 index 70a2db59..00000000 --- a/ekr.bac.php +++ /dev/null @@ -1,1391 +0,0 @@ -0.13 ЕКР
    . Приятной Вам игры! - - include('_incl_data/__config.php'); - include('_incl_data/class/__db_connect.php'); - $u = User::start(); - if (!isset($u->info['id'])) { - header('location: https://new-combats.com/'); - die(); - } - - class upload - { - - protected function __construct() {} - - //static $save_path = '/var/www/bk2ru/data/www/new-combats.com/clan_prw/'; - static $save_path = 'clan_prw/'; - static $error = ''; - - static function saveimg( - $name, $max_mb = 2, $exts = 'jpg|png|jpeg|gif', $cnm = '', $mnw = 0, $mxw = 0, $mnh = 0, $mxh = 0 - ) { - if (isset($_FILES[$name])) { - $f = &$_FILES[$name]; - if (isset($f['tmp_name'])) { - $width = 0; - $height = 0; - list($width, $height) = getimagesize($f['tmp_name']); - } - - if ($mnw != 0 && $mnw > $width) { - self::$error = 'Минимальная ширина картинки ' . $mnw . ' пикселей. (Размер этой картинки ' . $width . 'x' . $height . ')'; - } elseif ($mxw != 0 && $mxw < $width) { - self::$error = 'Максимальная ширина картинки ' . $mxw . ' пикселей. (Размер этой картинки ' . $width . 'x' . $height . ')'; - } elseif ($mnh != 0 && $mnh > $height) { - self::$error = 'Минимальная высота картинки ' . $mnh . ' пикселей. (Размер этой картинки ' . $width . 'x' . $height . ')'; - } elseif ($mxh != 0 && $mxh < $height) { - self::$error = 'Максимальная высота картинки ' . $mxh . ' пикселей. (Размер этой картинки ' . $width . 'x' . $height . ')'; - } elseif (!is_dir(self::$save_path)) { - self::$error = 'Ошибка на стороне сервера!'; - } elseif (($f['size'] <= $max_mb * 1024 * 1024) && ($f['size'] > 0)) { - if ( - (preg_match('/\.(' . $exts . ')$/i', $f['name'], $ext)) && - (preg_match('/image/i', $f['type'])) - ) { - - $ext[1] = strtolower($ext[1]); - $fn = uniqid('f_', true) . '.' . $ext[1]; - $fn2 = uniqid('f_', true) . '.gif'; - if ($cnm != '') { - $fn = $cnm; - $fn2 = $cnm; - } - if (move_uploaded_file($f['tmp_name'], self::$save_path . $fn)) { - // система изменения размера , требуется Rimage - //Rimage::resize(self::$save_path . $fn, self::$save_path . $fn2); - //@unlink(self::$save_path . $fn); // удаление файла - return [$fn2, $fn, self::$save_path . $fn]; - } else { - self::$error = 'Ошибка загрузки файла'; - } - } else { - self::$error = 'Неверный тип файла. Допустимые типы : ' . $exts . ''; - } - } else { - self::$error = 'Неверный размер файла. Максимальный размер файла ' . $max_mb . ' МБ'; - } - } else { - self::$error = 'Файл не найден'; - } - return false; - } // end saveimg - - } // end class - - $ball = mysql_fetch_array( - mysql_query( - 'SELECT SUM(`ekr`) FROM `pay_operation` WHERE `uid` = "' . $u->info['id'] . '" AND `good` > 0 LIMIT 1' - ) - ); - $ball = 0 + $ball[0]; -} else { - $ball = mysql_fetch_array( - mysql_query('SELECT SUM(`ekr`) FROM `pay_operation` WHERE `uid` = "' . $user['id'] . '" AND `good` > 0 LIMIT 1') - ); - $ball = 0 + $ball[0]; -} - -$day1def = 50; //сколько екр. в день можно менять на кр. -$day2def = 1000 * ($u->info['level'] - 7); //сколько кр. в день можно менять на екр. - -$day1 = $day1def; -$day2 = $day2def; - -if ($day2 < 0) { - $day2 = 0; -} - -$timetoday = strtotime(date('d.m.Y')); -// -$dc1 = mysql_fetch_array( - mysql_query( - 'SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен ЕКР на КР" LIMIT 1' - ) -); -$dc2 = mysql_fetch_array( - mysql_query( - 'SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен КР на ЕКР" LIMIT 1' - ) -); -$dc1 = $dc1[0]; -$dc2 = $dc2[0]; - -$day1 = round($day1 + $dc1, 2); -$day2 = round($day2 + $dc2, 2); - -if ($day1 < 0) { - $day1 = 0; -} -if ($day2 < 0) { - $day2 = 0; -} - - -$b1 = 0; //бонус накопительный - -$bt = mysql_fetch_array(mysql_query('SELECT * FROM `bank_table` ORDER BY `time` DESC LIMIT 1')); - -$bns = [ - [0, 0, 0], - [10, 1, 0], - [50, 2, 0], - [100, 3, 0], - [200, 4, 0], - [300, 5, 0], - [400, 6, 0], - [500, 7, 0], - [600, 8, 0], - [700, 9, 0], - [800, 10, 0], - [900, 11, 0], - [1000, 13, 1], - [1100, 15, 2], - [1200, 17, 3], - [1300, 19, 4], - [1500, 21, 5], - [1700, 23, 6], - [2000, 25, 7], - [2500, 27, 8], - [3000, 30, 9], -]; - -$bns2 = [ - [0, 0], - [10, 10], - [20, 10], - [30, 10], - [40, 10], - [50, 10], - [60, 10], - [70, 10], - [80, 10], - [90, 10], - [100, 20], -]; - -$i = 0; -while ($i < count($bns)) { - if (isset($bns[$i][0]) && $ball > $bns[$i][0]) { - $b1 = $i; - } - $i++; -} - -if (isset($backdoor)) { - $i = 0; - while ($i < count($bns2)) { - if (isset($bns2[$i][0]) && $pay['ekr'] >= $bns2[$i][0]) { - $b2 = $i; - } - $i++; - } -} - -if (isset($backdoor)) { - return; -} -if (isset($_POST['do']) && $_POST['do'] == 'newShadow') { - $o = mysql_fetch_array( - mysql_query( - 'SELECT * FROM `_obraz` WHERE `uid` = "' . $u->info['id'] . '" AND `good` = 0 AND `cancel` = 0 AND `img` = "' . mysql_real_escape_string( - $_POST['ffinput'] - ) . '" LIMIT 1' - ) - ); - if (!isset($o['id'])) { - $u->error = 'Данный образ не найден! Возможно он уже был подтвержден!'; - } elseif ($o['price'] > $u->info['money2']) { - $u->error = 'На счету недостаточно ЕКР'; - } else { - // - $u->info['money2'] -= $o['price']; - mysql_query( - 'UPDATE `users` SET `money2` = "' . $u->info['money2'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' - ); - // - mysql_query('UPDATE `_obraz` SET `good` = "' . time() . '" WHERE `id` = "' . $o['id'] . '" LIMIT 1'); - if ($o['type'] == 1 || $o['type'] == 2) { - //Личный или Клановый - copy('clan_prw/' . $o['img'], './img.new-combats.com/i/obraz/' . $o['sex'] . '/buy' . $o['id'] . '.gif'); - } elseif ($o['type'] == 3) { - //Питомец - copy('clan_prw/' . $o['img'], './img.new-combats.com/pet/buy' . $o['id'] . '.gif'); - } elseif ($o['type'] == 5) { - //Питомец - copy('clan_prw/' . $o['img'], './img.new-combats.com/i/smile/s' . $o['id'] . '.gif'); - } - // - if ($_POST['ffsex'] == 1) { - $o['sex'] = 1; - } elseif ($_POST['ffsex'] == 0) { - $o['sex'] = 0; - } - // - if ($o['clan'] > 0) { - $o['uid1'] = 0; - } else { - $o['uid1'] = $o['uid']; - } - // - if ($o['type'] == 1 || $o['type'] == 2) { - //Личный и клановый - mysql_query( - 'INSERT INTO `obraz` ( - `sex`,`uid`,`img`,`usr_add`,`clan` - ) VALUES ( - "' . $o['sex'] . '","' . $o['uid1'] . '","buy' . $o['id'] . '.gif","' . $o['uid'] . '","' . $o['clan'] . '" - )' - ); - } elseif ($o['type'] == 3) { - //Питомца - mysql_query( - 'INSERT INTO `obraz_pet` ( - `uid`,`time`,`img` - ) VALUES ( - "' . $u->info['id'] . '","' . time() . '","' . mysql_real_escape_string('buy' . $o['id'] . '.gif') . '" - )' - ); - } elseif ($o['type'] == 5) { - //Смайлик - $u->info['add_smiles'] .= ',s' . $o['id'] . ''; - $u->info['add_smiles'] = ltrim($u->info['add_smiles'], ','); - mysql_query( - 'UPDATE `users` SET `add_smiles` = "' . $u->info['add_smiles'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' - ); - } - // - if ($o['type'] == 1) { - $u->error = 'Личный образ успешно установлен! Можете выбрать его в инвентаре, в разделе Образ.'; - } elseif ($o['type'] == 2) { - $u->error = 'Клановый образ успешно установлен! Можете выбрать его в инвентаре, в разделе Образ.'; - } elseif ($o['type'] == 3) { - $u->error = 'Личный образ питомца успешно установлен! Можете выбрать его в инвентаре, в разделе Звери.'; - } elseif ($o['type'] == 5) { - $u->error = 'Личный смайлик успешно установлен! Можете выбрать его в разделе Личные смайлики. Код смайлика :s' . $o['id'] . ':'; - } - } -} elseif (isset($_FILES['img'])) { - //Личный образ - $ekr = 100; - if ($u->info['money2'] < $ekr) { - echo '{"err":"На счету недостаточно ЕКР"}'; - } else { - $obraz = 'f_shadow1_' . $u->info['id'] . '-' . md5((time() - rand(0, 1000)) . '#shadow1') . '.gif'; - // - if ($file = upload::saveimg('img', 0.5, 'gif', $obraz, 120, 120, 220, 220)) { - // - //$u->info['money2'] -= $ekr; - //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - mysql_query( - 'INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( - "' . $u->info['id'] . '", - "' . time() . '", - "' . mysql_real_escape_string($ekr) . '", - "0", - "0", - "' . mysql_real_escape_string($obraz) . '", - "' . $u->info['sex'] . '", - "1", - "0" - ) ' - ); - echo '{"img":"' . $obraz . '"}'; - } else { - echo '{"err":"' . upload::$error . '"}'; - } - } - die(); -} elseif (isset($_FILES['img5'])) { - //Личный смайлик - $ekr = 10; - $ekr_smile = 10; - if ($u->info['money2'] < $ekr) { - echo '{"err":"На счету недостаточно ЕКР"}'; - } else { - $obraz = 'f_smile_' . $u->info['id'] . '-' . md5((time() - rand(0, 1000)) . '#smile') . '.gif'; - // - if ($file = upload::saveimg('img5', 0.05, 'gif', $obraz, 15, 100, 15, 50)) { - // - //$u->info['money2'] -= $ekr; - //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - mysql_query( - 'INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( - "' . $u->info['id'] . '", - "' . time() . '", - "' . mysql_real_escape_string($ekr) . '", - "0", - "0", - "' . mysql_real_escape_string($obraz) . '", - "0", - "5", - "0" - ) ' - ); - echo '{"img":"' . $obraz . '"}'; - } else { - echo '{"err":"' . upload::$error . '"}'; - } - } - die(); -} elseif (isset($_FILES['img2'])) { - //Клановый образ - $ekr = 49.99; - if ($u->info['clan'] == 0) { - echo '{"err":"Вы должны состоять в клане"}'; - } elseif ($u->info['money2'] < $ekr) { - echo '{"err":"На счету недостаточно ЕКР"}'; - } else { - $obraz = 'f_shadow2_' . $u->info['id'] . '-' . md5((time() - rand(0, 1000)) . '#shadow2') . '.gif'; - // - if ($file = upload::saveimg('img2', 0.3, 'gif', $obraz, 120, 120, 220, 220)) { - // - //$u->info['money2'] -= $ekr; - //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - mysql_query( - 'INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( - "' . $u->info['id'] . '", - "' . time() . '", - "' . mysql_real_escape_string($ekr) . '", - "0", - "0", - "' . mysql_real_escape_string($obraz) . '", - "' . $u->info['sex'] . '", - "2", - "' . $u->info['clan'] . '" - ) ' - ); - echo '{"img":"' . $obraz . '"}'; - } else { - echo '{"err":"' . upload::$error . '"}'; - } - } - die(); -} elseif (isset($_FILES['img4'])) { - //Питомец образ - $ekr = 4.99; - if ($u->info['money2'] < $ekr) { - echo '{"err":"На счету недостаточно ЕКР"}'; - } else { - $obraz = 'f_shadow3_' . $u->info['id'] . '-' . md5((time() - rand(0, 1000)) . '#shadow3') . '.gif'; - // - if ($file = upload::saveimg('img4', 0.3, 'gif', $obraz, 120, 120, 40, 40)) { - // - //$u->info['money2'] -= $ekr; - //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - mysql_query( - 'INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( - "' . $u->info['id'] . '", - "' . time() . '", - "' . mysql_real_escape_string($ekr) . '", - "0", - "0", - "' . mysql_real_escape_string($obraz) . '", - "' . $u->info['sex'] . '", - "3", - "' . $u->info['clan'] . '" - ) ' - ); - echo '{"img":"' . $obraz . '"}'; - } else { - echo '{"err":"' . upload::$error . '"}'; - } - } - die(); -} elseif (isset($_POST['kr001'])) { - //Обмен екр на кр. - $kr = round($_POST['kr001'], 2); - if ($c['crtoecr'] < 0.01) { - $u->error = 'Сегодня обменник закрыт.'; - } elseif ($day2 < 0.01) { - $u->error = 'Сегодня для вас обмен закрыт, приходите завтра.'; - } elseif ($kr < round($c['crtoecr'] / 100, 2)) { - $u->error = 'Минимальная сумма обмена ' . round($c['crtoecr'] / 100, 2) . ' КР.'; - } elseif ($kr > $day2) { - $u->error = 'Вы можете обменять еще ' . $day2 . ' КР сегодня.'; - } elseif ($kr > $u->info['money']) { - $u->error = 'Недостаточно денег для обмена.'; - } else { - $ekr = round($kr / $c['crtoecr'], 2); - $u->error = 'Вы успешно обменяли ' . $kr . ' КР на ' . $ekr . ' ЕКР.'; - // - $u->info['money'] -= $kr; - $u->info['money2'] += $ekr; - // - mysql_query( - 'UPDATE `users` SET `money` = "' . $u->info['money'] . '",`money2` = "' . $u->info['money2'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' - ); - mysql_query( - 'INSERT INTO `user_operation` ( `uid`,`time`,`money`,`money2`,`type`,`b1`,`b2` ) VALUES ( - "' . $u->info['id'] . '","' . time() . '","' . round(-$kr, 2) . '","' . round( - $ekr, 2 - ) . '","Обмен КР на ЕКР","' . $u->info['money'] . '","' . $u->info['money2'] . '" - )' - ); - } - $dc1 = mysql_fetch_array( - mysql_query( - 'SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен ЕКР на КР" LIMIT 1' - ) - ); - $dc2 = mysql_fetch_array( - mysql_query( - 'SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен КР на ЕКР" LIMIT 1' - ) - ); - $dc1 = $dc1[0]; - $dc2 = $dc2[0]; - $day1 = round($day1def + $dc1, 2); - $day2 = round($day2def + $dc2, 2); -} elseif (isset($_POST['ekr2'])) { - //Обмен екр на кр. - $ekr = round($_POST['ekr2'], 2); - if ($c['ecrtocr'] * 2.5 < 0.01) { - $u->error = 'Сегодня обменник закрыт.'; - } elseif ($day1 < 0.01) { - $u->error = 'Сегодня для вас обмен закрыт, приходите завтра.'; - } elseif ($ekr < 0.01) { - $u->error = 'Минимальная сумма обмена 0.01 ЕКР.'; - } elseif ($ekr > $day1) { - $u->error = 'Вы можете обменять еще ' . $day1 . ' ЕКР сегодня.'; - } elseif ($ekr > $u->info['money2']) { - $u->error = 'Недостаточно денег для обмена.'; - } else { - $kr = round($ekr * $c['ecrtocr'] * 2.5, 2); - $u->error = 'Вы успешно обменяли ' . $ekr . ' ЕКР на ' . $kr . ' КР.'; - // - $u->info['money'] += $kr; - $u->info['money2'] -= $ekr; - // - mysql_query( - 'UPDATE `users` SET `money` = "' . $u->info['money'] . '",`money2` = "' . $u->info['money2'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' - ); - mysql_query( - 'INSERT INTO `user_operation` ( `uid`,`time`,`money`,`money2`,`type`,`b1`,`b2` ) VALUES ( - "' . $u->info['id'] . '","' . time() . '","' . round($kr, 2) . '","' . round( - -$ekr, 2 - ) . '","Обмен ЕКР на КР","' . $u->info['money'] . '","' . $u->info['money2'] . '" - )' - ); - } - $dc1 = mysql_fetch_array( - mysql_query( - 'SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен ЕКР на КР" LIMIT 1' - ) - ); - $dc2 = mysql_fetch_array( - mysql_query( - 'SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен КР на ЕКР" LIMIT 1' - ) - ); - $dc1 = $dc1[0]; - $dc2 = $dc2[0]; - $day1 = round($day1def + $dc1, 2); - $day2 = round($day2def + $dc2, 2); -} elseif (isset($_POST['login'])) { - // - function en_ru($txt) - { - $g = false; - $en = preg_match("/^(([0-9a-zA-Z _-])+)$/i", $txt); - $ru = preg_match("/^(([0-9а-яА-Я _-])+)$/i", $txt); - if (($ru && $en) || (!$ru && !$en)) { - $g = true; - } - return $g; - } - - // - function testBad($txt) - { - $white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёйцукенгшщзхъфывапролджэячсмитьбю'; - $r = false; - $i = 0; - while ($i != -1) { - if (isset($txt[$i])) { - $g = false; - $j = 0; - while ($j != -1) { - if (isset($white[$j])) { - if ($white[$j] == $txt[$i]) { - $g = true; - } - } else { - $j = -2; - } - $j++; - } - if ($g == false) { - $r = true; - } - } else { - $i = -2; - } - $i++; - } - return $r; - } - - function is_login($login) - { - $r = true; - // - $login = htmlspecialchars($login, null, 'cp1251'); - // - $bad = [ - 'Мусорщик' => 1, - 'Мироздатель' => 1, - ]; - // - $login_db = mysql_fetch_array( - mysql_query('SELECT `id` FROM `users` WHERE `login` = "' . mysql_real_escape_string($login) . '" LIMIT 1') - ); - if (isset($login_db['id']) || isset($bad[$login])) { - $r = false; - } else { - $true = true; - // - /* - Логин может содержать от 4 до 16 символов, и состоять только из букв русского ИЛИ английского алфавита, цифр, символов '_', '-' и пробела. - Логин не может начинаться или заканчиваться символами '_', '-' или пробелом. - */ - // - $login = str_replace(' ', ' ', $login); - $login = str_replace('%', ' ', $login); - $login = str_replace(' ', ' ', $login); - // - if (strlen($login) > 16) { - $true = false; - } elseif (strlen($login) < 4) { - $true = false; - } elseif (strripos($login, ' ') == true) { - $true = false; - } elseif (substr($login, 1) == ' ' || substr($login, -1) == ' ') { - $true = false; - } elseif (substr($login, 1) == '-' || substr($login, -1) == '-') { - $true = false; - } elseif (substr($login, 1) == '_' || substr($login, -1) == '_') { - $true = false; - } elseif (testBad($login) == true) { - $true = false; - } elseif (en_ru(str_replace('ё', 'е', str_replace('Ё', 'Е', $login))) == true) { - $true = false; - } - // - if ($true == false) { - $r = false; - } else { - $r = true; - } - } - return $r; - } - - if ($u->info['login'] == $_POST['login']) { - $u->error = 'Выберите другой логин...'; - } elseif ($u->info['money2'] < 25) { - $u->error = 'Недостаточно средств.'; - } else { - $login = htmlspecialchars($_POST['login'], null, 'cp1251'); - if (is_login($login) == true) { - mysql_query( - 'INSERT INTO `lastnames` ( `uid`,`login`,`newlogin`,`time` ) VALUES ( - "' . $u->info['id'] . '","' . $u->info['login'] . '","' . mysql_real_escape_string( - $login - ) . '","' . time() . '" - )' - ); - $u->info['login_last'] = $u->info['login']; - $u->info['login'] = $login; - $u->info['money2'] -= 25; - // - mysql_query( - "UPDATE `items_users` SET `data` = replace( `data` , 'sudba=" . $u->info['login_last'] . "', 'sudba=" . mysql_real_escape_string( - $u->info['login'] - ) . "') WHERE `data` LIKE '%sudba=" . mysql_real_escape_string( - $u->info['login_last'] - ) . "%' AND `uid` = '" . $u->info['id'] . "'" - ); - // - mysql_query( - 'UPDATE `users` SET `login` = "' . mysql_real_escape_string( - $u->info['login'] - ) . '", `money2` = "' . $u->info['money2'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' - ); - $u->error = 'Вы успешно сменили логин на "' . $u->info['login'] . '" перезайдите в игру с главной страницы.'; - } else { - $u->error = 'Выберите другой логин...'; - } - } -} elseif (isset($_GET['buy_ekr'])) { - // - $mrh_login = "65643"; - $mrh_pass1 = "qtzl0igb"; - // - $inv_id = 0; - // - $out_ekr = round($_POST['ekr'], 2); - if ($out_ekr < 0) { - // - $out_ekr = 0; - } - $out_summ = round($out_ekr * $bt['cur'], 2); - $inv_desc = 'Приобрести ' . $out_ekr . ' екр., персонаж №' . $u->info['id'] . ', дилер №' . round( - (int)$_POST['ref'] - ) . ''; - // - $shp_item = 0; - // - //Бонус опытовый, первичный и накопительный - $out_ekr0 = $out_ekr; - // - $out_ekr += round($out_ekr0 / 100 * $bns[$b1][1], 2); - $i = 0; - while ($i < count($bns2)) { - if (isset($bns2[$i][0]) && $out_ekr >= $bns2[$i][0]) { - $b2_2 = $i; - } - $i++; - } - $out_ekr += round($out_ekr0 / 100 * $bns2[$b2_2][1], 2); - if ($ball == 0) { - $out_ekr += round($out_ekr0 / 100 * 20, 2); - } - // - //Добавляем в базу - mysql_query( - 'INSERT INTO `pay_operation` ( - `uid`,`bank`,`code`,`ekr`,`time`,`good`,`cur`,`var`,`val`,`ref`,`ref2`,`ip`,`date` - ) VALUES ( - "' . $u->info['id'] . '","' . $u->bank['id'] . '","' . mysql_real_escape_string( - (int)$_GET['code'] - ) . '","' . mysql_real_escape_string($out_ekr) . '", - "' . time() . '","0","' . mysql_real_escape_string( - $cur['cur'] - ) . '","buy_ekr","0","' . mysql_real_escape_string($u->info['host_reg']) . '", - "' . mysql_real_escape_string((int)$_GET['ref']) . '","' . mysql_real_escape_string(IP) . '","' . date( - 'Y-m-d H:i:s' - ) . '" - )' - ); - - $shp_item = mysql_insert_id(); - - if ($shp_item > 0) { - //ожидаем оплаты - } else { - die('Ошибка в обработке платежа, обратитесь к Администрации'); - } - if ($out_ekr < 1) { - die('Минимальная сумма покупки 1 екр.'); - } - // - // предлагаемая валюта платежа - // default payment e-currency - $in_curr = ""; - - // язык - // language - $culture = "ru"; - - // формирование подписи - // generate signature - - - //$crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item"); - $crc = md5($mrh_login . ':' . $out_summ . ':' . $mrh_pass1 . ':' . $shp_item); - - // форма оплаты товара - // payment form - $url = 'https://www.free-kassa.ru/merchant/cash.php?'; - $url .= 'm=' . $mrh_login . '&'; - $url .= 'oa=' . $out_summ . '&'; - $url .= 'InvId=' . $inv_id . '&'; - $url .= 'Desc=' . $inv_desc . '&'; - $url .= 's=' . $crc . '&'; - $url .= 'o=' . $shp_item . '&'; - $url .= 'i=' . $in_curr . '&'; - $url .= 'lang=' . $culture . '&'; - // - header('location: ' . $url); - die(); - print "" . - "
    " . - "Сумма платежа: " . $out_ekr . " Екр. " . - "" . - "" . - "" . - "" . - "" . - "" . - "" . - "" . - "
    " . - "(Все средства идут на развитие и улучшение игры)" . - "
    "; - die(); -} - -?> - - - Покупка ЕвроКредитов - Бойцовский Клуб - - - - - - - - - - - - -
    - - - - - - - - - info['id'])) { ?> -
    Персонаж: ' . $u->microLogin( - $u->info['id'], 1 - ) . ''; ?>
    - error != '') { - echo '
    ' . $u->error . '
    '; - } - ?> - freekassa  - interkassa - - - - - - - - - - - - - - - - - - - - - -
    -
    Акция! При первом пополнении баланса,
    Вы получаете дополнительно 20% - ЕКР к сумме покупки БЕСПЛАТНО. -
    -
    -
    -
    - Ваш накопительный бонус: % ( ЕКР) -
    - -
    - Покупка ЕКР - -
    - Сумма ЕКР:  
    - - - -
    -  
     
      -
    - - - - - - - - - - - - -
    1 ЕКР Рублей
    1 ЕКР Доллара *
    - - * - зависит от текущих курсов валют
    - Доставка игровой валюты производится в автоматическом режиме, сразу же после оплаты! -

    - При оплате могут возникать задержки на пополнение, обычно не более 1 часа. Если по истечению - нескольких часов деньги так и не поступили на ваш баланс, то необходимо обратиться в службу поддержки - FREE-KASSA. -
    -

    -
    - - -
    -
    - -
    - Если Вы очень хотели бы положить деньги на игровой счёт, но нет подходящей платёжной системы, - обратитесь за помощью к Администратору проекта. -

    -
    -
    - -
    -
    - Ваш баланс счёта: info['money2'] ?> ЕКР и info['money'] ?> КР. -
    - -
    - Обмен -
    - Обменять ЕКР на КР по курсу 1ЕКР=КР:   -  
    -
    -
    - Обменять КР на ЕКР по курсу КР=1ЕКР: -  
    -
    - -
    - -
    - Накопительные бонусы - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ЕКРБонусЕКРБонус
    800 ЕКР10%3 000 ЕКР 30%
    700 ЕКР9%2 500 ЕКР 27%
    600 ЕКР8%2 000 ЕКР 25%
    500 ЕКР7%1 700 ЕКР 23%
    400 ЕКР6%1 500 ЕКР 21%
    300 ЕКР5%1 300 ЕКР 19%
    200 ЕКР4%1 200 ЕКР 17%
    100 ЕКР3%1 100 ЕКР 15%
    50 ЕКР2%1 000 ЕКР 13%
    10 ЕКР1%900 ЕКР11%
    -
    - -
    - Оптовые бонусы - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Бонус10%10%10%10%10%
    Сумма10 ЕКР20 ЕКР30 ЕКР40 ЕКР50 ЕКР
    Бонус10%10%10%10%20%
    Сумма60 ЕКР70 ЕКР80 ЕКР90 ЕКР100 ЕКР
    -
    - -
    -
    Коммерческие услуги
    -
    - - - - -
    - Покупка личного образа - - Стоимость услуги: 100 ЕКР
    - Требования к персональному образу:
    - GIF-картинка размером 120x220 (ШхВ) и весом до 300 Кб.
    -
    - Выберите картинку: - -
    -
    - -
    - Покупка личного смайлика - - Стоимость услуги: ЕКР
    - Требования к смайлику:
    - GIF-картинка размером от 15x15 до 95x21 (ШхВ) и весом до 30 Кб.
    -
    - Выберите картинку: - -
    -
    - -
    - Смена имени персонажа - - Стоимость услуги: 25 ЕКР
    - Текущее имя: info['login'] ?>
    -
    - -
    - -
    - -
    -
    - -
     
    - -
    - - diff --git a/ekr.php b/ekr.php index 62d8280e..fb26022d 100644 --- a/ekr.php +++ b/ekr.php @@ -1,1029 +1,1345 @@ -0.13 ЕКР
    . Приятной Вам игры! - - require_once('_incl_data/__config.php'); - require_once('_incl_data/class/__db_connect.php'); - $u = User::start(); - if(!isset($u->info['id'])) { - header('location: https://new-combats.com/'); - die(); - } - - class upload { - - protected function __construct() { } - - //static $save_path = '/var/www/bk2ru/data/www/new-combats.com/clan_prw/'; - static $save_path = 'clan_prw/'; - static $error = ''; - - static function saveimg($name,$max_mb = 2,$exts = 'jpg|png|jpeg|gif',$cnm = '',$mnw = 0,$mxw = 0,$mnh = 0,$mxh = 0) { - if (isset($_FILES[$name])) { - $f = &$_FILES[$name]; - if(isset($f['tmp_name'])) { - $width = 0; - $height = 0; - list($width, $height) = getimagesize($f['tmp_name']); - } - - if( $mnw != 0 && $mnw > $width ) { - self::$error = 'Минимальная ширина картинки '.$mnw.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; - }elseif( $mxw != 0 && $mxw < $width ) { - self::$error = 'Максимальная ширина картинки '.$mxw.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; - }elseif( $mnh != 0 && $mnh > $height ) { - self::$error = 'Минимальная высота картинки '.$mnh.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; - }elseif( $mxh != 0 && $mxh < $height ) { - self::$error = 'Максимальная высота картинки '.$mxh.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; - }elseif( !is_dir( self::$save_path ) ) { - self::$error = 'Ошибка на стороне сервера!'; - }elseif (($f['size'] <= $max_mb*1024*1024) && ($f['size'] > 0)) { - if ( - (preg_match('/\.('.$exts.')$/i',$f['name'],$ext))&& - (preg_match('/image/i',$f['type'])) - ) { - - $ext[1] = strtolower($ext[1]); - $fn = uniqid('f_',true).'.'.$ext[1]; - $fn2 = uniqid('f_',true).'.gif'; - if( $cnm != '' ) { - $fn = $cnm; - $fn2 = $cnm; - } - if (move_uploaded_file($f['tmp_name'], self::$save_path . $fn)) { - // система изменения размера , требуется Rimage - //Rimage::resize(self::$save_path . $fn, self::$save_path . $fn2); - //@unlink(self::$save_path . $fn); // удаление файла - return array($fn2,$fn,self::$save_path . $fn); - } else { - self::$error = 'Ошибка загрузки файла'; - } - } else { - self::$error = 'Неверный тип файла. Допустимые типы : '.$exts.''; - } - } else { - self::$error = 'Неверный размер файла. Максимальный размер файла '.$max_mb.' МБ'; - } - } else { - self::$error = 'Файл не найден'; - } - return false; - } // end saveimg - - } // end class - - $ball = mysql_fetch_array(mysql_query('SELECT SUM(`ekr`) FROM `pay_operation` WHERE `uid` = "'.$u->info['id'].'" AND `good` > 0 LIMIT 1')); - $ball = 0+$ball[0]; -}else{ - $ball = mysql_fetch_array(mysql_query('SELECT SUM(`ekr`) FROM `pay_operation` WHERE `uid` = "'.$user['id'].'" AND `good` > 0 LIMIT 1')); - $ball = 0+$ball[0]; +0.13 ЕКР
    . Приятной Вам игры! + +require_once('_incl_data/__config.php'); +require_once('_incl_data/class/__db_connect.php'); +$u = User::start(); +if (!isset($u->info['id'])) { + header('location: https://new-combats.com/'); + die(); } +$ball = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`ekr`) FROM `pay_operation` WHERE `uid` = "' . $u->info['id'] . '" AND `good` > 0 LIMIT 1' + ) +); + +$ball = 0 + $ball[0]; + $day1def = 50; //сколько екр. в день можно менять на кр. -$day2def = 1000 * ($u->info['level']-7); //сколько кр. в день можно менять на екр. +$day2def = 1000 * ($u->info['level'] - 7); //сколько кр. в день можно менять на екр. $day1 = $day1def; $day2 = $day2def; -if( $day2 < 0 ) { $day2 = 0; } +if ($day2 < 0) { + $day2 = 0; +} $timetoday = strtotime(date('d.m.Y')); // -$dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен ЕКР на КР" LIMIT 1')); -$dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен КР на ЕКР" LIMIT 1')); +$dc1 = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен ЕКР на КР" LIMIT 1' + ) +); +$dc2 = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен КР на ЕКР" LIMIT 1' + ) +); $dc1 = $dc1[0]; $dc2 = $dc2[0]; -$day1 = round($day1+$dc1,2); -$day2 = round($day2+$dc2,2); +$day1 = round($day1 + $dc1, 2); +$day2 = round($day2 + $dc2, 2); -if($day1 < 0) { $day1 = 0; } -if($day2 < 0) { $day2 = 0; } +if ($day1 < 0) { + $day1 = 0; +} +if ($day2 < 0) { + $day2 = 0; +} $b1 = 0; //бонус накопительный $bt = mysql_fetch_array(mysql_query('SELECT * FROM `bank_table` ORDER BY `time` DESC LIMIT 1')); -$bns = array( - array( 0 , 0 , 0 ), - array( 10 , 1 , 0 ), - array( 50 , 2 , 0 ), - array( 100 , 3 , 0 ), - array( 200 , 4 , 0 ), - array( 300 , 5 , 0 ), - array( 400 , 6 , 0 ), - array( 500 , 7 , 0 ), - array( 600 , 8 , 0 ), - array( 700 , 9 , 0 ), - array( 800 , 10 , 0 ), - array( 900 , 11 , 0 ), - array( 1000 , 13 , 1 ), - array( 1100 , 15 , 2 ), - array( 1200 , 17 , 3 ), - array( 1300 , 19 , 4 ), - array( 1500 , 21 , 5 ), - array( 1700 , 23 , 6 ), - array( 2000 , 25 , 7 ), - array( 2500 , 27 , 8 ), - array( 3000 , 30 , 9 ) -); +$bns = [ + [0, 0, 0], + [10, 1, 0], + [50, 2, 0], + [100, 3, 0], + [200, 4, 0], + [300, 5, 0], + [400, 6, 0], + [500, 7, 0], + [600, 8, 0], + [700, 9, 0], + [800, 10, 0], + [900, 11, 0], + [1000, 13, 1], + [1100, 15, 2], + [1200, 17, 3], + [1300, 19, 4], + [1500, 21, 5], + [1700, 23, 6], + [2000, 25, 7], + [2500, 27, 8], + [3000, 30, 9], +]; -$bns2 = array( - array(0,0), - array(10,10), - array(20,10), - array(30,10), - array(40,10), - array(50,10), - array(60,10), - array(70,10), - array(80,10), - array(90,10), - array(100,20) -); +$bns2 = [ + [0, 0], + [10, 10], + [20, 10], + [30, 10], + [40, 10], + [50, 10], + [60, 10], + [70, 10], + [80, 10], + [90, 10], + [100, 20], +]; $i = 0; -while( $i < count($bns) ) { - if( isset($bns[$i][0]) && $ball > $bns[$i][0] ) { - $b1 = $i; - } - $i++; +while ($i < count($bns)) { + if (isset($bns[$i][0]) && $ball > $bns[$i][0]) { + $b1 = $i; + } + $i++; } -if( isset($backdoor) ) { - $i = 0; - while( $i < count($bns2) ) { - if( isset($bns2[$i][0]) && $pay['ekr'] >= $bns2[$i][0] ) { - $b2 = $i; - } - $i++; - } +if (isset($backdoor)) { + $i = 0; + while ($i < count($bns2)) { + if (isset($bns2[$i][0]) && $pay['ekr'] >= $bns2[$i][0]) { + $b2 = $i; + } + $i++; + } } -if(!isset($backdoor)) { - - if(isset($_POST['do']) && $_POST['do'] == 'newShadow') { - $o = mysql_fetch_array(mysql_query('SELECT * FROM `_obraz` WHERE `uid` = "'.$u->info['id'].'" AND `good` = 0 AND `cancel` = 0 AND `img` = "'.mysql_real_escape_string($_POST['ffinput']).'" LIMIT 1')); - if(!isset($o['id'])) { - $u->error = 'Данный образ не найден! Возможно он уже был подтвержден!'; - }elseif( $o['price'] > $u->info['money2'] ) { - $u->error = 'На счету недостаточно ЕКР'; - }else{ - // - $u->info['money2'] -= $o['price']; - mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - mysql_query('UPDATE `_obraz` SET `good` = "'.time().'" WHERE `id` = "'.$o['id'].'" LIMIT 1'); - if( $o['type'] == 1 || $o['type'] == 2 ) { - //Личный или Клановый - copy('clan_prw/'.$o['img'],'./img.new-combats.com/i/obraz/'.$o['sex'].'/buy'.$o['id'].'.gif'); - }elseif( $o['type'] == 3 ) { - //Питомец - copy('clan_prw/'.$o['img'],'./img.new-combats.com/pet/buy'.$o['id'].'.gif'); - }elseif( $o['type'] == 5 ) { - //Питомец - copy('clan_prw/'.$o['img'],'./img.new-combats.com/i/smile/s'.$o['id'].'.gif'); - } - // - if( $_POST['ffsex'] == 1 ) { - $o['sex'] = 1; - }elseif( $_POST['ffsex'] == 0 ) { - $o['sex'] = 0; - } - // - if( $o['clan'] > 0 ) { - $o['uid1'] = 0; - }else{ - $o['uid1'] = $o['uid']; - } - // - if( $o['type'] == 1 || $o['type'] == 2 ) { - //Личный и клановый - mysql_query('INSERT INTO `obraz` ( +if (!isset($backdoor)) { + if (isset($_POST['do']) && $_POST['do'] == 'newShadow') { + $o = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `_obraz` WHERE `uid` = "' . $u->info['id'] . '" AND `good` = 0 AND `cancel` = 0 AND `img` = "' . mysql_real_escape_string( + $_POST['ffinput'] + ) . '" LIMIT 1' + ) + ); + if (!isset($o['id'])) { + $u->error = 'Данный образ не найден! Возможно он уже был подтвержден!'; + } elseif ($o['price'] > $u->info['money2']) { + $u->error = 'На счету недостаточно ЕКР'; + } else { + // + $u->info['money2'] -= $o['price']; + mysql_query( + 'UPDATE `users` SET `money2` = "' . $u->info['money2'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + // + mysql_query('UPDATE `_obraz` SET `good` = "' . time() . '" WHERE `id` = "' . $o['id'] . '" LIMIT 1'); + if ($o['type'] == 1 || $o['type'] == 2) { + //Личный или Клановый + copy( + 'clan_prw/' . $o['img'], './img.new-combats.com/i/obraz/' . $o['sex'] . '/buy' . $o['id'] . '.gif' + ); + } elseif ($o['type'] == 3) { + //Питомец + copy('clan_prw/' . $o['img'], './img.new-combats.com/pet/buy' . $o['id'] . '.gif'); + } elseif ($o['type'] == 5) { + //Питомец + copy('clan_prw/' . $o['img'], './img.new-combats.com/i/smile/s' . $o['id'] . '.gif'); + } + // + if ($_POST['ffsex'] == 1) { + $o['sex'] = 1; + } elseif ($_POST['ffsex'] == 0) { + $o['sex'] = 0; + } + // + if ($o['clan'] > 0) { + $o['uid1'] = 0; + } else { + $o['uid1'] = $o['uid']; + } + // + if ($o['type'] == 1 || $o['type'] == 2) { + //Личный и клановый + mysql_query( + 'INSERT INTO `obraz` ( `sex`,`uid`,`img`,`usr_add`,`clan` ) VALUES ( - "'.$o['sex'].'","'.$o['uid1'].'","buy'.$o['id'].'.gif","'.$o['uid'].'","'.$o['clan'].'" - )'); - }elseif( $o['type'] == 3 ) { - //Питомца - mysql_query('INSERT INTO `obraz_pet` ( + "' . $o['sex'] . '","' . $o['uid1'] . '","buy' . $o['id'] . '.gif","' . $o['uid'] . '","' . $o['clan'] . '" + )' + ); + } elseif ($o['type'] == 3) { + //Питомца + mysql_query( + 'INSERT INTO `obraz_pet` ( `uid`,`time`,`img` ) VALUES ( - "'.$u->info['id'].'","'.time().'","'.mysql_real_escape_string('buy'.$o['id'].'.gif').'" - )'); - }elseif( $o['type'] == 5 ) { - //Смайлик - $u->info['add_smiles'] .= ',s'.$o['id'].''; - $u->info['add_smiles'] = ltrim($u->info['add_smiles'],','); - mysql_query('UPDATE `users` SET `add_smiles` = "'.$u->info['add_smiles'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - // - if( $o['type'] == 1 ) { - $u->error = 'Личный образ успешно установлен! Можете выбрать его в инвентаре, в разделе Образ.'; - }elseif( $o['type'] == 2 ) { - $u->error = 'Клановый образ успешно установлен! Можете выбрать его в инвентаре, в разделе Образ.'; - }elseif( $o['type'] == 3 ) { - $u->error = 'Личный образ питомца успешно установлен! Можете выбрать его в инвентаре, в разделе Звери.'; - }elseif( $o['type'] == 5 ) { - $u->error = 'Личный смайлик успешно установлен! Можете выбрать его в разделе Личные смайлики. Код смайлика :s'.$o['id'].':'; - } - } - }elseif(isset($_FILES['img'])) { - //Личный образ - $ekr = 100; - if( $u->info['money2'] < $ekr ) { - echo '{"err":"На счету недостаточно ЕКР"}'; - }else{ - $obraz = 'f_shadow1_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#shadow1').'.gif'; - // - if($file = upload::saveimg('img',0.5,'gif',$obraz,120,120,220,220)) { - // - //$u->info['money2'] -= $ekr; - //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - mysql_query('INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( - "'.$u->info['id'].'", - "'.time().'", - "'.mysql_real_escape_string($ekr).'", + "' . $u->info['id'] . '","' . time() . '","' . mysql_real_escape_string('buy' . $o['id'] . '.gif') . '" + )' + ); + } elseif ($o['type'] == 5) { + //Смайлик + $u->info['add_smiles'] .= ',s' . $o['id'] . ''; + $u->info['add_smiles'] = ltrim($u->info['add_smiles'], ','); + mysql_query( + 'UPDATE `users` SET `add_smiles` = "' . $u->info['add_smiles'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + } + // + if ($o['type'] == 1) { + $u->error = 'Личный образ успешно установлен! Можете выбрать его в инвентаре, в разделе Образ.'; + } elseif ($o['type'] == 2) { + $u->error = 'Клановый образ успешно установлен! Можете выбрать его в инвентаре, в разделе Образ.'; + } elseif ($o['type'] == 3) { + $u->error = 'Личный образ питомца успешно установлен! Можете выбрать его в инвентаре, в разделе Звери.'; + } elseif ($o['type'] == 5) { + $u->error = 'Личный смайлик успешно установлен! Можете выбрать его в разделе Личные смайлики. Код смайлика :s' . $o['id'] . ':'; + } + } + } elseif (isset($_FILES['img'])) { + //Личный образ + $ekr = 100; + if ($u->info['money2'] < $ekr) { + echo '{"err":"На счету недостаточно ЕКР"}'; + } else { + $obraz = 'f_shadow1_' . $u->info['id'] . '-' . md5((time() - rand(0, 1000)) . '#shadow1') . '.gif'; + $upload = new Uploader('img', $obraz); + $upload->setSavePath('clan_prw/'); + $upload->setExtentions('gif'); + $upload->setMaxFileSize(.5); + $upload->setDimensions(120, 220); + // + if ($file = $upload->saveimg()) { + mysql_query( + 'INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( + "' . $u->info['id'] . '", + "' . time() . '", + "' . mysql_real_escape_string($ekr) . '", "0", "0", - "'.mysql_real_escape_string($obraz).'", - "'.$u->info['sex'].'", + "' . mysql_real_escape_string($obraz) . '", + "' . $u->info['sex'] . '", "1", "0" - ) '); - echo '{"img":"'.$obraz.'"}'; - }else{ - echo '{"err":"'.upload::$error.'"}'; - } - } - die(); - }elseif(isset($_FILES['img5'])) { - //Личный смайлик - $ekr = 10; - $ekr_smile = 10; - if( $u->info['money2'] < $ekr ) { - echo '{"err":"На счету недостаточно ЕКР"}'; - }else{ - $obraz = 'f_smile_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#smile').'.gif'; - // - if($file = upload::saveimg('img5',0.05,'gif',$obraz,15,100,15,50)) { - // - //$u->info['money2'] -= $ekr; - //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - mysql_query('INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( - "'.$u->info['id'].'", - "'.time().'", - "'.mysql_real_escape_string($ekr).'", + ) ' + ); + echo '{"img":"' . $obraz . '"}'; + } else { + echo '{"err":"' . Uploader::$error . '"}'; + } + } + die(); + } elseif (isset($_FILES['img5'])) { + //Личный смайлик + $ekr = 10; + $ekr_smile = 10; + if ($u->info['money2'] < $ekr) { + echo '{"err":"На счету недостаточно ЕКР"}'; + } else { + $obraz = 'f_smile_' . $u->info['id'] . '-' . md5((time() - rand(0, 1000)) . '#smile') . '.gif'; + $upload = new Uploader('img5', $obraz); + $upload->setSavePath('clan_prw/'); + $upload->setExtentions('gif'); + $upload->setMaxFileSize(.05); + $upload->setWidth(100, 15); + $upload->setHeight(50, 15); + // + if ($file = $upload->saveimg()) { + mysql_query( + 'INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( + "' . $u->info['id'] . '", + "' . time() . '", + "' . mysql_real_escape_string($ekr) . '", "0", "0", - "'.mysql_real_escape_string($obraz).'", + "' . mysql_real_escape_string($obraz) . '", "0", "5", "0" - ) '); - echo '{"img":"'.$obraz.'"}'; - }else{ - echo '{"err":"'.upload::$error.'"}'; - } - } - die(); - }elseif(isset($_FILES['img2'])) { - //Клановый образ - $ekr = 49.99; - if( $u->info['clan'] == 0 ) { - echo '{"err":"Вы должны состоять в клане"}'; - }elseif( $u->info['money2'] < $ekr ) { - echo '{"err":"На счету недостаточно ЕКР"}'; - }else{ - $obraz = 'f_shadow2_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#shadow2').'.gif'; - // - if($file = upload::saveimg('img2',0.3,'gif',$obraz,120,120,220,220)) { - // - //$u->info['money2'] -= $ekr; - //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - mysql_query('INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( - "'.$u->info['id'].'", - "'.time().'", - "'.mysql_real_escape_string($ekr).'", + ) ' + ); + echo '{"img":"' . $obraz . '"}'; + } else { + echo '{"err":"' . Uploader::$error . '"}'; + } + } + die(); + } elseif (isset($_FILES['img2'])) { + //Клановый образ + $ekr = 49.99; + if ($u->info['clan'] == 0) { + echo '{"err":"Вы должны состоять в клане"}'; + } elseif ($u->info['money2'] < $ekr) { + echo '{"err":"На счету недостаточно ЕКР"}'; + } else { + $obraz = 'f_shadow2_' . $u->info['id'] . '-' . md5((time() - rand(0, 1000)) . '#shadow2') . '.gif'; + $upload = new Uploader('img2', $obraz); + $upload->setSavePath('clan_prw/'); + $upload->setExtentions('gif'); + $upload->setMaxFileSize(.3); + $upload->setDimensions(120, 220); + // + if ($file = $upload->saveimg()) { + mysql_query( + 'INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( + "' . $u->info['id'] . '", + "' . time() . '", + "' . mysql_real_escape_string($ekr) . '", "0", "0", - "'.mysql_real_escape_string($obraz).'", - "'.$u->info['sex'].'", + "' . mysql_real_escape_string($obraz) . '", + "' . $u->info['sex'] . '", "2", - "'.$u->info['clan'].'" - ) '); - echo '{"img":"'.$obraz.'"}'; - }else{ - echo '{"err":"'.upload::$error.'"}'; - } - } - die(); - }elseif(isset($_FILES['img4'])) { - //Питомец образ - $ekr = 4.99; - if( $u->info['money2'] < $ekr ) { - echo '{"err":"На счету недостаточно ЕКР"}'; - }else{ - $obraz = 'f_shadow3_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#shadow3').'.gif'; - // - if($file = upload::saveimg('img4',0.3,'gif',$obraz,120,120,40,40)) { - // - //$u->info['money2'] -= $ekr; - //mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - mysql_query('INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( - "'.$u->info['id'].'", - "'.time().'", - "'.mysql_real_escape_string($ekr).'", + "' . $u->info['clan'] . '" + ) ' + ); + echo '{"img":"' . $obraz . '"}'; + } else { + echo '{"err":"' . Uploader::$error . '"}'; + } + } + die(); + } elseif (isset($_FILES['img4'])) { + //Питомец образ + $ekr = 4.99; + if ($u->info['money2'] < $ekr) { + echo '{"err":"На счету недостаточно ЕКР"}'; + } else { + $obraz = 'f_shadow3_' . $u->info['id'] . '-' . md5((time() - rand(0, 1000)) . '#shadow3') . '.gif'; + $upload = new Uploader('img4', $obraz); + $upload->setSavePath('clan_prw/'); + $upload->setExtentions('gif'); + $upload->setMaxFileSize(.3); + $upload->setDimensions(120, 40); + // + if ($file = $upload->saveimg()) { + mysql_query( + 'INSERT INTO `_obraz` ( `uid`,`time`,`price`,`good`,`cancel`,`img`,`sex`,`type`,`clan` ) VALUES ( + "' . $u->info['id'] . '", + "' . time() . '", + "' . mysql_real_escape_string($ekr) . '", "0", "0", - "'.mysql_real_escape_string($obraz).'", - "'.$u->info['sex'].'", + "' . mysql_real_escape_string($obraz) . '", + "' . $u->info['sex'] . '", "3", - "'.$u->info['clan'].'" - ) '); - echo '{"img":"'.$obraz.'"}'; - }else{ - echo '{"err":"'.upload::$error.'"}'; - } - } - die(); - }elseif(isset($_POST['kr001'])) { - //Обмен екр на кр. - $kr = round($_POST['kr001'],2); - if( $c['crtoecr'] < 0.01 ) { - $u->error = 'Сегодня обменник закрыт.'; - }elseif( $day2 < 0.01 ) { - $u->error = 'Сегодня для вас обмен закрыт, приходите завтра.'; - }elseif( $kr < round($c['crtoecr']/100,2) ) { - $u->error = 'Минимальная сумма обмена '.round($c['crtoecr']/100,2).' КР.'; - }elseif( $kr > $day2 ) { - $u->error = 'Вы можете обменять еще '.$day2.' КР сегодня.'; - }elseif( $kr > $u->info['money']) { - $u->error = 'Недостаточно денег для обмена.'; - }else{ - $ekr = round($kr / $c['crtoecr'],2); - $u->error = 'Вы успешно обменяли '.$kr.' КР на '.$ekr.' ЕКР.'; - // - $u->info['money'] -= $kr; - $u->info['money2'] += $ekr; - // - mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'",`money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `user_operation` ( `uid`,`time`,`money`,`money2`,`type`,`b1`,`b2` ) VALUES ( - "'.$u->info['id'].'","'.time().'","'.round(-$kr,2).'","'.round($ekr,2).'","Обмен КР на ЕКР","'.$u->info['money'].'","'.$u->info['money2'].'" - )'); - } - $dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен ЕКР на КР" LIMIT 1')); - $dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен КР на ЕКР" LIMIT 1')); - $dc1 = $dc1[0]; - $dc2 = $dc2[0]; - $day1 = round($day1def+$dc1,2); - $day2 = round($day2def+$dc2,2); - }elseif(isset($_POST['ekr2'])) { - //Обмен екр на кр. - $ekr = round($_POST['ekr2'],2); - if( $c['ecrtocr']*2.5 < 0.01 ) { - $u->error = 'Сегодня обменник закрыт.'; - }elseif( $day1 < 0.01 ) { - $u->error = 'Сегодня для вас обмен закрыт, приходите завтра.'; - }elseif( $ekr < 0.01 ) { - $u->error = 'Минимальная сумма обмена 0.01 ЕКР.'; - }elseif( $ekr > $day1 ) { - $u->error = 'Вы можете обменять еще '.$day1.' ЕКР сегодня.'; - }elseif( $ekr > $u->info['money2']) { - $u->error = 'Недостаточно денег для обмена.'; - }else{ - $kr = round($ekr * $c['ecrtocr']*2.5,2); - $u->error = 'Вы успешно обменяли '.$ekr.' ЕКР на '.$kr.' КР.'; - // - $u->info['money'] += $kr; - $u->info['money2'] -= $ekr; - // - mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'",`money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `user_operation` ( `uid`,`time`,`money`,`money2`,`type`,`b1`,`b2` ) VALUES ( - "'.$u->info['id'].'","'.time().'","'.round($kr,2).'","'.round(-$ekr,2).'","Обмен ЕКР на КР","'.$u->info['money'].'","'.$u->info['money2'].'" - )'); - } - $dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен ЕКР на КР" LIMIT 1')); - $dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен КР на ЕКР" LIMIT 1')); - $dc1 = $dc1[0]; - $dc2 = $dc2[0]; - $day1 = round($day1def+$dc1,2); - $day2 = round($day2def+$dc2,2); - }elseif(isset($_POST['login'])) { - // - function en_ru($txt) { - $g = false; - $en = preg_match("/^(([0-9a-zA-Z _-])+)$/i", $txt); - $ru = preg_match("/^(([0-9а-яА-Я _-])+)$/i", $txt); - if(($ru && $en) || (!$ru && !$en)) { - $g = true; - } - return $g; - } - // - function testBad($txt) { - $white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMїЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮїйцукенгшщзхъфывапролджэячсмитьбю'; - $r = false; - $i = 0; - while( $i != -1 ) { - if( isset($txt[$i]) ) { - $g = false; - $j = 0; - while( $j != -1 ) { - if(isset($white[$j])) { - if( $white[$j] == $txt[$i] ) { - $g = true; - } - }else{ - $j = -2; - } - $j++; - } - if( $g == false ) { - $r = true; - } - }else{ - $i = -2; - } - $i++; - } - return $r; - } - - function is_login($login) { - $r = true; - // - $login = htmlspecialchars($login,NULL,'cp1251'); - // - $bad = array( - 'Мусорщик' => 1, - 'Мироздатель' => 1 - ); - // - $login_db = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `login` = "'.mysql_real_escape_string($login).'" LIMIT 1')); - if( isset($login_db['id']) || isset($bad[$login]) ) { - $r = false; - }else{ - $true = true; - // - /* - Логин может содержать от 4 до 16 символов, и состоять только из букв русского ИЛИ английского алфавита, цифр, символов '_', '-' и пробела. - Логин не может начинаться или заканчиваться символами '_', '-' или пробелом. - */ - // - $login = str_replace(' ',' ',$login); - $login = str_replace('%',' ',$login); - $login = str_replace(' ',' ',$login); - // - if( strlen($login) > 16 ) { - $true = false; - }elseif( strlen($login) < 4 ) { - $true = false; - }elseif( strripos($login,' ') == true ) { - $true = false; - }elseif( substr($login,1) == ' ' || substr($login,-1) == ' ' ) { - $true = false; - }elseif( substr($login,1) == '-' || substr($login,-1) == '-' ) { - $true = false; - }elseif( substr($login,1) == '_' || substr($login,-1) == '_' ) { - $true = false; - }elseif( testBad($login) == true ) { - $true = false; - }elseif( en_ru(str_replace('ї','е',str_replace('ї','Е',$login))) == true ) { - $true = false; - } - // - if( $true == false ) { - $r = false; - }else{ - $r = true; - } - } - return $r; - } - if( $u->info['login'] == $_POST['login'] ) { - $u->error = 'Выберите другой логин...'; - }elseif( $u->info['money2'] < 25 ) { - $u->error = 'Недостаточно средств.'; - }else{ - $login = htmlspecialchars($_POST['login'],NULL,'cp1251'); - if( is_login($login) == true ) { - mysql_query('INSERT INTO `lastnames` ( `uid`,`login`,`newlogin`,`time` ) VALUES ( - "'.$u->info['id'].'","'.$u->info['login'].'","'.mysql_real_escape_string($login).'","'.time().'" - )'); - $u->info['login_last'] = $u->info['login']; - $u->info['login'] = $login; - $u->info['money2'] -= 25; - // - mysql_query("UPDATE `items_users` SET `data` = replace( `data` , 'sudba=".$u->info['login_last']."', 'sudba=".mysql_real_escape_string($u->info['login'])."') WHERE `data` LIKE '%sudba=".mysql_real_escape_string($u->info['login_last'])."%' AND `uid` = '".$u->info['id']."'"); - // - mysql_query('UPDATE `users` SET `login` = "'.mysql_real_escape_string($u->info['login']).'", `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = 'Вы успешно сменили логин на "'.$u->info['login'].'" перезайдите в игру с главной страницы.'; - }else{ - $u->error = 'Выберите другой логин...'; - } - } - }elseif(isset($_GET['buy_ekr'])) { - // - $mrh_login = "15922";//"65643"; - $mrh_pass1 = "6?ljVLf]RSiBM2F"; - // - $inv_id = 0; - // - $out_ekr = round($_POST['ekr'],2); - if( $out_ekr < 0) { - // - $out_ekr = 0; - } - $out_summ = round($out_ekr*$bt['cur'],2); - $inv_desc = 'Приобрести '.$out_ekr.' екр., персонаж №'.$u->info['id'].', дилер №'.round((int)$_POST['ref']).''; - // - $shp_item = 0; - // - //Бонус опытовый, первичный и накопительный - $out_ekr0 = $out_ekr; - // - $out_ekr += round($out_ekr0/100*$bns[$b1][1],2); - $i = 0; - while( $i < count($bns2) ) { - if( isset($bns2[$i][0]) && $out_ekr >= $bns2[$i][0] ) { - $b2_2 = $i; - } - $i++; - } - $out_ekr += round($out_ekr0/100*$bns2[$b2_2][1],2); - if($ball == 0) { - $out_ekr += round($out_ekr0/100*20,2); - } - // - //Добавляем в базу - mysql_query('INSERT INTO `pay_operation` ( + "' . $u->info['clan'] . '" + ) ' + ); + echo '{"img":"' . $obraz . '"}'; + } else { + echo '{"err":"' . Uploader::$error . '"}'; + } + } + die(); + } elseif (isset($_POST['kr001'])) { + //Обмен екр на кр. + $kr = round($_POST['kr001'], 2); + if ($c['crtoecr'] < 0.01) { + $u->error = 'Сегодня обменник закрыт.'; + } elseif ($day2 < 0.01) { + $u->error = 'Сегодня для вас обмен закрыт, приходите завтра.'; + } elseif ($kr < round($c['crtoecr'] / 100, 2)) { + $u->error = 'Минимальная сумма обмена ' . round($c['crtoecr'] / 100, 2) . ' КР.'; + } elseif ($kr > $day2) { + $u->error = 'Вы можете обменять еще ' . $day2 . ' КР сегодня.'; + } elseif ($kr > $u->info['money']) { + $u->error = 'Недостаточно денег для обмена.'; + } else { + $ekr = round($kr / $c['crtoecr'], 2); + $u->error = 'Вы успешно обменяли ' . $kr . ' КР на ' . $ekr . ' ЕКР.'; + // + $u->info['money'] -= $kr; + $u->info['money2'] += $ekr; + // + mysql_query( + 'UPDATE `users` SET `money` = "' . $u->info['money'] . '",`money2` = "' . $u->info['money2'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + mysql_query( + 'INSERT INTO `user_operation` ( `uid`,`time`,`money`,`money2`,`type`,`b1`,`b2` ) VALUES ( + "' . $u->info['id'] . '","' . time() . '","' . round(-$kr, 2) . '","' . round( + $ekr, 2 + ) . '","Обмен КР на ЕКР","' . $u->info['money'] . '","' . $u->info['money2'] . '" + )' + ); + } + $dc1 = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен ЕКР на КР" LIMIT 1' + ) + ); + $dc2 = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен КР на ЕКР" LIMIT 1' + ) + ); + $dc1 = $dc1[0]; + $dc2 = $dc2[0]; + $day1 = round($day1def + $dc1, 2); + $day2 = round($day2def + $dc2, 2); + } elseif (isset($_POST['ekr2'])) { + //Обмен екр на кр. + $ekr = round($_POST['ekr2'], 2); + if ($c['ecrtocr'] * 2.5 < 0.01) { + $u->error = 'Сегодня обменник закрыт.'; + } elseif ($day1 < 0.01) { + $u->error = 'Сегодня для вас обмен закрыт, приходите завтра.'; + } elseif ($ekr < 0.01) { + $u->error = 'Минимальная сумма обмена 0.01 ЕКР.'; + } elseif ($ekr > $day1) { + $u->error = 'Вы можете обменять еще ' . $day1 . ' ЕКР сегодня.'; + } elseif ($ekr > $u->info['money2']) { + $u->error = 'Недостаточно денег для обмена.'; + } else { + $kr = round($ekr * $c['ecrtocr'] * 2.5, 2); + $u->error = 'Вы успешно обменяли ' . $ekr . ' ЕКР на ' . $kr . ' КР.'; + // + $u->info['money'] += $kr; + $u->info['money2'] -= $ekr; + // + mysql_query( + 'UPDATE `users` SET `money` = "' . $u->info['money'] . '",`money2` = "' . $u->info['money2'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + mysql_query( + 'INSERT INTO `user_operation` ( `uid`,`time`,`money`,`money2`,`type`,`b1`,`b2` ) VALUES ( + "' . $u->info['id'] . '","' . time() . '","' . round($kr, 2) . '","' . round( + -$ekr, 2 + ) . '","Обмен ЕКР на КР","' . $u->info['money'] . '","' . $u->info['money2'] . '" + )' + ); + } + $dc1 = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен ЕКР на КР" LIMIT 1' + ) + ); + $dc2 = mysql_fetch_array( + mysql_query( + 'SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "' . $timetoday . '" AND `uid` = "' . $u->info['id'] . '" AND `type` = "Обмен КР на ЕКР" LIMIT 1' + ) + ); + $dc1 = $dc1[0]; + $dc2 = $dc2[0]; + $day1 = round($day1def + $dc1, 2); + $day2 = round($day2def + $dc2, 2); + } elseif (isset($_POST['login'])) { + // + function en_ru($txt) + { + $g = false; + $en = preg_match("/^(([0-9a-zA-Z _-])+)$/i", $txt); + $ru = preg_match("/^(([0-9а-яА-Я _-])+)$/i", $txt); + if (($ru && $en) || (!$ru && !$en)) { + $g = true; + } + return $g; + } + + // + function testBad($txt) + { + $white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMїЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮїйцукенгшщзхъфывапролджэячсмитьбю'; + $r = false; + $i = 0; + while ($i != -1) { + if (isset($txt[$i])) { + $g = false; + $j = 0; + while ($j != -1) { + if (isset($white[$j])) { + if ($white[$j] == $txt[$i]) { + $g = true; + } + } else { + $j = -2; + } + $j++; + } + if ($g == false) { + $r = true; + } + } else { + $i = -2; + } + $i++; + } + return $r; + } + + function is_login($login) + { + $r = true; + // + $login = htmlspecialchars($login, null, 'cp1251'); + // + $bad = [ + 'Мусорщик' => 1, + 'Мироздатель' => 1, + ]; + // + $login_db = mysql_fetch_array( + mysql_query( + 'SELECT `id` FROM `users` WHERE `login` = "' . mysql_real_escape_string($login) . '" LIMIT 1' + ) + ); + if (isset($login_db['id']) || isset($bad[$login])) { + $r = false; + } else { + $true = true; + // + /* + Логин может содержать от 4 до 16 символов, и состоять только из букв русского ИЛИ английского алфавита, цифр, символов '_', '-' и пробела. + Логин не может начинаться или заканчиваться символами '_', '-' или пробелом. + */ + // + $login = str_replace(' ', ' ', $login); + $login = str_replace('%', ' ', $login); + $login = str_replace(' ', ' ', $login); + // + if (strlen($login) > 16) { + $true = false; + } elseif (strlen($login) < 4) { + $true = false; + } elseif (strripos($login, ' ') == true) { + $true = false; + } elseif (substr($login, 1) == ' ' || substr($login, -1) == ' ') { + $true = false; + } elseif (substr($login, 1) == '-' || substr($login, -1) == '-') { + $true = false; + } elseif (substr($login, 1) == '_' || substr($login, -1) == '_') { + $true = false; + } elseif (testBad($login) == true) { + $true = false; + } elseif (en_ru(str_replace('ї', 'е', str_replace('ї', 'Е', $login))) == true) { + $true = false; + } + // + if ($true == false) { + $r = false; + } else { + $r = true; + } + } + return $r; + } + + if ($u->info['login'] == $_POST['login']) { + $u->error = 'Выберите другой логин...'; + } elseif ($u->info['money2'] < 25) { + $u->error = 'Недостаточно средств.'; + } else { + $login = htmlspecialchars($_POST['login'], null, 'cp1251'); + if (is_login($login) == true) { + mysql_query( + 'INSERT INTO `lastnames` ( `uid`,`login`,`newlogin`,`time` ) VALUES ( + "' . $u->info['id'] . '","' . $u->info['login'] . '","' . mysql_real_escape_string( + $login + ) . '","' . time() . '" + )' + ); + $u->info['login_last'] = $u->info['login']; + $u->info['login'] = $login; + $u->info['money2'] -= 25; + // + mysql_query( + "UPDATE `items_users` SET `data` = replace( `data` , 'sudba=" . $u->info['login_last'] . "', 'sudba=" . mysql_real_escape_string( + $u->info['login'] + ) . "') WHERE `data` LIKE '%sudba=" . mysql_real_escape_string( + $u->info['login_last'] + ) . "%' AND `uid` = '" . $u->info['id'] . "'" + ); + // + mysql_query( + 'UPDATE `users` SET `login` = "' . mysql_real_escape_string( + $u->info['login'] + ) . '", `money2` = "' . $u->info['money2'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + $u->error = 'Вы успешно сменили логин на "' . $u->info['login'] . '" перезайдите в игру с главной страницы.'; + } else { + $u->error = 'Выберите другой логин...'; + } + } + } elseif (isset($_GET['buy_ekr'])) { + // + $mrh_login = "15922";//"65643"; + $mrh_pass1 = "6?ljVLf]RSiBM2F"; + // + $inv_id = 0; + // + $out_ekr = round($_POST['ekr'], 2); + if ($out_ekr < 0) { + // + $out_ekr = 0; + } + $out_summ = round($out_ekr * $bt['cur'], 2); + $inv_desc = 'Приобрести ' . $out_ekr . ' екр., персонаж №' . $u->info['id'] . ', дилер №' . round( + (int)$_POST['ref'] + ) . ''; + // + $shp_item = 0; + // + //Бонус опытовый, первичный и накопительный + $out_ekr0 = $out_ekr; + // + $out_ekr += round($out_ekr0 / 100 * $bns[$b1][1], 2); + $i = 0; + while ($i < count($bns2)) { + if (isset($bns2[$i][0]) && $out_ekr >= $bns2[$i][0]) { + $b2_2 = $i; + } + $i++; + } + $out_ekr += round($out_ekr0 / 100 * $bns2[$b2_2][1], 2); + if ($ball == 0) { + $out_ekr += round($out_ekr0 / 100 * 20, 2); + } + // + //Добавляем в базу + mysql_query( + 'INSERT INTO `pay_operation` ( `uid`,`bank`,`code`,`ekr`,`time`,`good`,`cur`,`var`,`val`,`ref`,`ref2`,`ip`,`date` ) VALUES ( - "'.$u->info['id'].'","'.$u->bank['id'].'","'.mysql_real_escape_string((int)$_GET['code']).'","'.mysql_real_escape_string($out_ekr).'", - "'.time().'","0","'.mysql_real_escape_string($cur['cur']).'","buy_ekr","0","'.mysql_real_escape_string($u->info['host_reg']).'", - "'.mysql_real_escape_string((int)$_GET['ref']).'","'.mysql_real_escape_string(IP).'","'.date('Y-m-d H:i:s').'" - )'); - - $shp_item = mysql_insert_id(); - - if($shp_item > 0) { - //ожидаем оплаты - }else{ - die('Ошибка в обработке платежа, обратитесь к Администрации'); - } - if($out_ekr < 1) { - die('Минимальная сумма покупки 1 екр.'); - } - // - // предлагаемая валюта платежа - // default payment e-currency - $in_curr = ""; - - // язык - // language - $culture = "ru"; - $currency = "RUB"; - - // формирование подписи - // generate signature - - - - - //$crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item"); - $crc = md5($mrh_login.':'.$out_summ.':'.$mrh_pass1.':'.$currency.':'.$shp_item); //$sign = md5($merchant_id.':'.$order_amount.':'.$secret_word.':'.$currency.':'.$order_id); - - // форма оплаты товара - // payment form - $url = 'https://pay.freekassa.ru/?'; - $url .= 'm='.$mrh_login.'&'; - $url .= 'oa='.$out_summ.'&'; - //$url .= 'InvId='.$inv_id.'&'; - //$url .= 'Desc='.$inv_desc.'&'; - $url .= 'currency='.$currency.'&'; - $url .= 'o='.$shp_item.'&'; - $url .= 's='.$crc; - //$url .= 'i='.$in_curr.'&'; - //$url .= 'lang='.$culture.'&'; - // - - /* -
    - - - - - - - - '> - -
    - */ - header('location: '.$url); - die(); - print "". - "
    ". - "Сумма платежа: ".$out_ekr." Екр. ". - "". - "". - "". - "". - "". - "". - "". - "". - "
    ". - "(Все средства идут на развитие и улучшение игры)". - "
    "; - die(); - } + "' . $u->info['id'] . '","' . $u->bank['id'] . '","' . mysql_real_escape_string( + (int)$_GET['code'] + ) . '","' . mysql_real_escape_string($out_ekr) . '", + "' . time() . '","0","' . mysql_real_escape_string( + $cur['cur'] + ) . '","buy_ekr","0","' . mysql_real_escape_string($u->info['host_reg']) . '", + "' . mysql_real_escape_string((int)$_GET['ref']) . '","' . mysql_real_escape_string(IP) . '","' . date( + 'Y-m-d H:i:s' + ) . '" + )' + ); -?> - - - Покупка ЕвроКредитов - Бойцовский Клуб - - - - - - - + $shp_item = mysql_insert_id(); - - - - -
    - - - - - - - info['id'])) { ?> -
    Персонаж: '.$u->microLogin($u->info['id'],1).'';?>
    - error != '' ) { - echo '
    '.$u->error.'
    '; - } - ?> - freekassa  - - - - - - - - - - - - + // + // предлагаемая валюта платежа + // default payment e-currency + $in_curr = ""; - + // язык + // language + $culture = "ru"; + $currency = "RUB"; + + // формирование подписи + // generate signature -
    Акция! При первом пополнении баланса,
    Вы получаете дополнительно 20% ЕКР к сумме покупки БЕСПЛАТНО. -
    -
    -
    - Ваш накопительный бонус: % ( ЕКР) -
    - -
    - Покупка ЕКР - -
    - Сумма ЕКР:  
    - - - -
     
     
     
    - - - - - - -
    1 ЕКР Рублей
    1 ЕКР Доллара *
    - - * - зависит от текущих курсов валют
    - Доставка игровой валюты производится в автоматическом режиме, сразу же после оплаты! -

    - При оплате могут возникать задержки на пополнение, обычно не более 1 часа. Если по истечению нескольких часов деньги так и не поступили на ваш баланс, то необходимо обратиться в службу поддержки FREE-KASSA. -
    -

    -
    - - -
    -
    - -
    - Если Вы очень хотели бы положить деньги на игровой счїт, но нет подходящей платїжной системы, обратитесь за помощью к Администратору проекта. -

    -
    -
    - -
    -
    - Ваш баланс счїта: info['money2']?> ЕКР и info['money']?> КР. -
    - -
    - Обмен -
    - Обменять ЕКР на КР по курсу 1ЕКР=КР:    
    -
    -
    - Обменять КР на ЕКР по курсу КР=1ЕКР:  
    -
    - -
    - -
    - Накопительные бонусы - - - - - - - - - - - - -
    ЕКРБонусЕКРБонус
    800 ЕКР10%3 000 ЕКР 30%
    700 ЕКР9%2 500 ЕКР 27%
    600 ЕКР8%2 000 ЕКР 25%
    500 ЕКР7%1 700 ЕКР 23%
    400 ЕКР6%1 500 ЕКР 21%
    300 ЕКР5%1 300 ЕКР 19%
    200 ЕКР4%1 200 ЕКР 17%
    100 ЕКР3%1 100 ЕКР 15%
    50 ЕКР2%1 000 ЕКР 13%
    10 ЕКР1%900 ЕКР11%
    -
    - -
    - Оптовые бонусы - - - - - - -
    Бонус10%10%10%10%10%
    Сумма10 ЕКР20 ЕКР30 ЕКР40 ЕКР50 ЕКР
    Бонус10%10%10%10%20%
    Сумма60 ЕКР70 ЕКР80 ЕКР90 ЕКР100 ЕКР
    -
    - -
    Коммерческие услуги
    - - - - -
    - Покупка личного образа - - Стоимость услуги: 100 ЕКР
    - Требования к персональному образу:
    - GIF-картинка размером 120x220 (ШхВ) и весом до 300 Кб.
    -
    - Выберите картинку: - -
    -
    - -
    - Покупка личного смайлика - - Стоимость услуги: ЕКР
    - Требования к смайлику:
    - GIF-картинка размером от 15x15 до 95x21 (ШхВ) и весом до 30 Кб.
    -
    - Выберите картинку: - -
    -
    - -
    - Смена имени персонажа - - Стоимость услуги: 25 ЕКР
    - Текущее имя: info['login']?>
    -
    - -
    - -
    - -
    -
    - -
     
    + //$crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item"); + $crc = md5( + $mrh_login . ':' . $out_summ . ':' . $mrh_pass1 . ':' . $currency . ':' . $shp_item + ); //$sign = md5($merchant_id.':'.$order_amount.':'.$secret_word.':'.$currency.':'.$order_id); -
    - - - + + + + + + + + '> + + + */ + header('location: ' . $url); + die(); + print "" . + "
    " . + "Сумма платежа: " . $out_ekr . " Екр. " . + "" . + "" . + "" . + "" . + "" . + "" . + "" . + "" . + "
    " . + "(Все средства идут на развитие и улучшение игры)" . + "
    "; + die(); + } + + ?> + + + Покупка ЕвроКредитов - Бойцовский Клуб + + + + + + + + + + + + +
    + + + + + + + + + info['id'])) { ?> +
    Персонаж: ' . $u->microLogin( + $u->info['id'], 1 + ) . ''; ?>
    + error != '') { + echo '
    ' . $u->error . '
    '; + } + ?> + freekassa  + + + + + + + + + + + + + + + + + + + + + + +
    +
    Акция! При первом пополнении баланса,
    Вы получаете дополнительно + 20% ЕКР к сумме покупки БЕСПЛАТНО. +
    +
    +
    +
    + Ваш накопительный бонус: % ( ЕКР) +
    + +
    + Покупка ЕКР + +
    + Сумма ЕКР:   +
    + + + +
    +  
     
      +
    + + + + + + + + + + + + +
    1 ЕКР Рублей
    1 ЕКР Доллара *
    + + * - зависит от текущих курсов валют
    + Доставка игровой валюты производится в автоматическом режиме, сразу же после + оплаты! +

    + При оплате могут возникать задержки на пополнение, обычно не более 1 часа. Если по + истечению нескольких часов деньги так и не поступили на ваш баланс, то необходимо + обратиться в службу + поддержки FREE-KASSA. +
    +

    +
    + + +
    +
    + +
    + Если Вы очень хотели бы положить деньги на игровой счїт, но нет подходящей платїжной + системы, обратитесь за помощью к Администратору проекта. +

    +
    +
    + +
    +
    + Ваш баланс счїта: info['money2'] ?> ЕКР и info['money'] ?> КР. +
    + +
    + Обмен +
    + Обменять ЕКР на КР по курсу 1ЕКР=КР:   +  
    +
    +
    + Обменять КР на ЕКР по курсу КР=1ЕКР: +  
    +
    + +
    + +
    + Накопительные бонусы + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ЕКРБонусЕКРБонус
    800 ЕКР10%3 000 ЕКР 30%
    700 ЕКР9%2 500 ЕКР 27%
    600 ЕКР8%2 000 ЕКР 25%
    500 ЕКР7%1 700 ЕКР 23%
    400 ЕКР6%1 500 ЕКР 21%
    300 ЕКР5%1 300 ЕКР 19%
    200 ЕКР4%1 200 ЕКР 17%
    100 ЕКР3%1 100 ЕКР 15%
    50 ЕКР2%1 000 ЕКР 13%
    10 ЕКР1%900 ЕКР11%
    +
    + +
    + Оптовые бонусы + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Бонус10%10%10%10%10%
    Сумма10 ЕКР20 ЕКР30 ЕКР40 ЕКР50 ЕКР
    Бонус10%10%10%10%20%
    Сумма60 ЕКР70 ЕКР80 ЕКР90 ЕКР100 ЕКР
    +
    + +
    +
    Коммерческие услуги
    +
    + + + + +
    + Покупка личного образа + + Стоимость услуги: 100 ЕКР
    + Требования к персональному образу:
    + GIF-картинка размером 120x220 (ШхВ) и весом до 300 Кб.
    +
    + Выберите картинку: + +
    +
    + +
    + Покупка личного смайлика + + Стоимость услуги: ЕКР
    + Требования к смайлику:
    + GIF-картинка размером от 15x15 до 95x21 (ШхВ) и весом до 30 Кб.
    +
    + Выберите картинку: + +
    +
    + +
    + Смена имени персонажа + + Стоимость услуги: 25 ЕКР
    + Текущее имя: info['login'] ?>
    +
    + +
    + +
    + +
    +
    + +
     
    + +
    + + + diff --git a/logs.php b/logs.php index 7ae19043..17ec6010 100644 --- a/logs.php +++ b/logs.php @@ -510,6 +510,8 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { '' . $d['login2'] . '', $rt ); + $d['time1'] = intval($d['time1']); + $d['time2'] = intval($d['time2']); $rt = str_replace('{pr}', '' . $d['prm'] . '', $rt); $rt = str_replace('^^^^', '=', $rt); $rt = str_replace('{tm1}', '' . date('H:i', $d['time1']) . '', $rt); -- 2.45.2 From 8a3313d17a2b5a3b9e029d1c1fc82d6e4077287e Mon Sep 17 00:00:00 2001 From: Ivor Barhansky Date: Sun, 4 Sep 2022 00:12:26 +0300 Subject: [PATCH 5/5] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/obraz.css | 85 ++++++++++ obraz.php | 434 ++++++++++++-------------------------------------- 2 files changed, 184 insertions(+), 335 deletions(-) create mode 100644 css/obraz.css diff --git a/css/obraz.css b/css/obraz.css new file mode 100644 index 00000000..dc908181 --- /dev/null +++ b/css/obraz.css @@ -0,0 +1,85 @@ +body { + background-color: black; + margin: 0; +} + +A:link { + FONT-WEIGHT: bold; + COLOR: #5B3E33; + TEXT-DECORATION: none +} + +A:visited { + FONT-WEIGHT: bold; + COLOR: #633525; + TEXT-DECORATION: none +} + +A:active { + FONT-WEIGHT: bold; + COLOR: #77684d; + TEXT-DECORATION: none +} + +A:hover { + COLOR: #000000; + TEXT-DECORATION: underline +} + +img { + border: none; +} + +div.header { + height: 135px; + background-image: url(https://new-combats.com/forum_script/img/line_capitalcity.jpg); +} + +div.footer { + background-image: url(https://img.new-combats.com/i/encicl/ln_footer.jpg); + background-repeat: repeat-x; + background-color: black; + padding: 12px; + text-align: center; + color: #DFD3A3; + font-size: 9px; +} + +img.logo { + display: block; + margin: auto; +} + +hr { + display: block; + height: 11px; + border: 0; + background-image: url(https://img.new-combats.com/ram12_33.gif), + url(https://img.new-combats.com/ram12_35.gif), + url(https://img.new-combats.com/ram12_34.gif); + background-position: left top, + right top, + center top; + background-repeat: no-repeat, + no-repeat, + repeat-x; +} + +ul { + margin: 0; + padding-left: 16px; +} + +li::marker { + content: "· "; +} + +table.main { + width: 100%; + background-color: #f2e5b1; + border-collapse: collapse; +} + +table.main td { + padding: 0; +} \ No newline at end of file diff --git a/obraz.php b/obraz.php index 151ad59f..f043ca1c 100644 --- a/obraz.php +++ b/obraz.php @@ -1,352 +1,116 @@ '; +if (in_array($rv, [1, 2])) { + if ($rv == 1) { + $sex = 0; + //Мужские стандартные + } else { + $sex = 1; + //Женские стандартные + } + $sp = Db::getRows( + 'select * from obraz where sex = ? and usr_add = 0 and align = 0 and clan = 0 and login = \'\' and tr = \'\' and itm = 0', + [$sex] + ); +} +if ($rv === 3) { + $sp = Db::getRows('select * from obraz where login != \'\''); } -/* разделы */ -$rz = array( - '', - 'Мужские', - 'Женские' -); - -// Отображать 3Д изображение? True - отображать в любом случае, False - только если существует. -$img3dShow = true; - -/* Пользователь */ -$u = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`banned` FROM `users` WHERE `login` = "'.mysql_real_escape_string($_COOKIE['login']).'" AND `pass` = "'.mysql_real_escape_string($_COOKIE['pass']).'" LIMIT 1')); - -/* Предмет */ -$itm = mysql_fetch_array(mysql_query('SELECT * FROM `obraz` WHERE `id` = "'.mysql_real_escape_string($_GET['id']).'" LIMIT 1')); - - - function timeOut($ttm) { - $out = ''; - $time_still = $ttm; - $tmp = floor($time_still/2592000); - $id=0; - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." мес. ";} - $time_still = $time_still-$tmp*2592000; - } - /* - $tmp = floor($time_still/604800); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." нед. ";} - $time_still = $time_still-$tmp*604800; - } - */ - $tmp = floor($time_still/86400); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." дн. ";} - $time_still = $time_still-$tmp*86400; - } - $tmp = floor($time_still/3600); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." ч. ";} - $time_still = $time_still-$tmp*3600; - } - $tmp = floor($time_still/60); - if ($tmp > 0) - { - $id++; - if ($id<3) {$out .= $tmp." мин. ";} - } - if($out=='') - { - if($time_still<0) - { - $time_still = 0; - } - $out = $time_still.' сек.'; - } - return $out; - } - -function lookStats($m) { - $ist = array(); - $di = explode('|',$m); - $i = 0; $de = false; - while($i + {$itm['name']} +
    {$itm['name']}
    + +HTML; + } } -$itd = lookStats($itm['tr']); -if( $itm['name'] == '' ) { - $itm['name'] = 'Образ №'.$itm['id'].''; -} -if( $itm['history'] == '' ) { - $itm['history'] = 'Летописи Алхимика о нем умалчивают...'; -} - -$items = array( - 'tr' => array('lvl','s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','a1','a2','a3','a4','a5','a6','a7','mg1','mg2','mg3','mg4','mg5','mg6','mg7','mall','m2all','aall'), - 'add' => array('min_heal_proc','no_yv1','no_bl1','no_pr1','no_yv2','no_bl2','no_pr2','silver','pza','pza1','pza2','pza3','pza4','pzm','pzm1','pzm2','pzm3','pzm4','pzm5','pzm6','pzm7','yron_min','yron_max','notravma','min_zonb','min_zona','nokrit','pog','min_use_mp','za1proc','za2proc','za3proc','za4proc','zaproc','zmproc','zm1proc','zm2proc','zm3proc','zm4proc','shopSale','s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','aall','a1','a2','a3','a4','a5','a6','a7','m2all','mall','mg1','mg2','mg3','mg4','mg5','mg6','mg7','hpAll','mpAll','m1','m2','m3','m4','m5','m6','m7','m8','m9','m14','m15','m16','m17','m18','m19','m20','pa1','pa2','pa3','pa4','pm1','pm2','pm3','pm4','pm5','pm6','pm7','za','za1','za2','za3','za4','zma','zm','zm1','zm2','zm3','zm4','zm5','zm6','zm7','mib1','mab1','mib2','mab2','mib3','mab3','mib4','mab4','speedhp','speedmp','m10','m11','zona','zonb','maxves','minAtack','maxAtack'), - 'sv' => array('pza','pza1','pza2','pza3','pza4','pzm','pzm1','pzm2','pzm3','pzm4','pzm5','pzm6','pzm7','notravma','min_zonb','min_zona','nokrit','pog','min_use_mp','za1proc','za2proc','za3proc','za4proc','zaproc','zmproc','zm1proc','zm2proc','zm3proc','zm4proc','shopSale','s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','aall','a1','a2','a3','a4','a5','a6','a7','m2all','mall','mg1','mg2','mg3','mg4','mg5','mg6','mg7','hpAll','mpAll','m1','m2','m3','m4','m5','m6','m7','m8','m9','m14','m15','m16','m17','m18','m19','m20','pa1','pa2','pa3','pa4','pm1','pm2','pm3','pm4','pm5','pm6','pm7','min_use_mp','za','za1','za2','za3','za4','zma','zm','zm1','zm2','zm3','zm4','zm5','zm6','zm7','mib1','mab1','mib2','mab2','mib3','mab3','mib4','mab4','speedhp','speedmp','m10','m11','zona','zonb','maxves','minAtack','maxAtack') - ); - -$is = array('oza'=>'Защита от урона','oza1'=>'Защита от колющего урона','oza2'=>'Защита от рубящего урона','oza3'=>'Защита от дробящего урона','oza4'=>'Защита от режущего урона','hpAll'=>'Уровень жизни (HP)','mpAll'=>'Уровень маны','sex'=>'Пол','lvl'=>'Уровень','s1'=>'Сила','s2'=>'Ловкость','s3'=>'Интуиция','s4'=>'Выносливость','s5'=>'Интелект','s6'=>'Мудрость','s7'=>'Духовность','s8'=>'Воля','s9'=>'Свобода духа','s10'=>'Божественность','m1'=>'Мф. критического удара (%)','m2'=>'Мф. против критического удара (%)','m3'=>'Мф. мощности критического удара (%)','m4'=>'Мф. увертывания (%)','m5'=>'Мф. против увертывания (%)','m6'=>'Мф. контрудара (%)','m7'=>'Мф. парирования (%)','m8'=>'Мф. блока щитом (%)','m9'=>'Мф. пробоя брони (%)','m14'=>'Мф. абс. критического удара (%)','m15'=>'Мф. абс. увертывания (%)','m16'=>'Мф. абс. парирования (%)','m17'=>'Мф. абс. контрудара (%)','m18'=>'Мф. абс. блока щитом (%)','m19'=>'Мф. абс. магический промах (%)','m20'=>'Мф. удача (%)','a1'=>'Мастерство владения ножами, кинжалами','a2'=>'Мастерство владения топорами, секирами','a3'=>'Мастерство владения дубинами, молотами','a4'=>'Мастерство владения мечами','a5'=>'Мастерство владения магическими посохами','a6'=>'Мастерство владения луками','a7'=>'Мастерство владения арбалетами','aall'=>'Мастерство владения оружием','mall'=>'Мастерство владения магией стихий','m2all'=>'Мастерство владения магией','mg1'=>'Мастерство владения магией огня','mg2'=>'Мастерство владения магией воздуха','mg3'=>'Мастерство владения магией воды','mg4'=>'Мастерство владения магией земли','mg5'=>'Мастерство владения магией Света','mg6'=>'Мастерство владения магией Тьмы','mg7'=>'Мастерство владения серой магией','tj'=>'Тяжелая броня','lh'=>'Легкая броня','minAtack'=>'Минимальный урон','maxAtack'=>'Максимальный урон','m10'=>'Мф. мощности урона','m11'=>'Мф. мощности магии стихий','m11a'=>'Мф. мощности магии','pa1'=>'Мф. мощности колющего урона','pa2'=>'Мф. мощности рубящего урона','pa3'=>'Мф. мощности дробящий урона','pa4'=>'Мф. мощности режущий урона','pm1'=>'Мф. мощности магии огня','pm2'=>'Мф. мощности магии воздуха','pm3'=>'Мф. мощности магии воды','pm4'=>'Мф. мощности магии земли','pm5'=>'Мф. мощности магии Света','pm6'=>'Мф. мощности магии Тьмы','pm7'=>'Мф. мощности серой магии','za'=>'Защита от урона','zm'=>'Защита от магии стихий','zma'=>'Защита от магии','za1'=>'Защита от колющего урона','za2'=>'Защита от рубящего урона','za3'=>'Защита от дробящий урона','za4'=>'Защита от режущий урона','zm1'=>'Защита от магии огня','zm2'=>'Защита от магии воздуха','zm3'=>'Защита от магии воды','zm4'=>'Защита от магии земли','zm5'=>'Защита от магии Света','zm6'=>'Защита от магии Тьмы','zm7'=>'Защита от серой магии','pza'=>'Понижение защиты от урона','pzm'=>'Понижение защиты от магии','pza1'=>'Понижение защиты от колющего урона','min_heal_proc'=>'Эффект лечения (%)','silver'=>'Премиум','notravma'=>'Защита от травм','yron_min'=>'Минимальный урон','yron_max'=>'Максимальный урон','pza2'=>'Понижение защиты от рубящего урона','pza3'=>'Понижение защиты от дробящего урона','pza4'=>'Понижение защиты от режущего урона','pzm1'=>'Понижение защиты от магии огня','pzm2'=>'Понижение защиты от магии воздуха','pzm3'=>'Понижение защиты от магии воды','pzm4'=>'Понижение защиты от магии земли','pzm5'=>'Понижение защиты от магии Света','pzm6'=>'Понижение защиты от магии Тьмы','pzm7'=>'Понижение защиты от серой магии','speedhp'=>'Регенерация здоровья (НР)','speedmp'=>'Регенерация маны (МР)','tya1'=>'Колющие атаки','tya2'=>'Рубящие атаки','tya3'=>'Дробящие атаки','tya4'=>'Режущие атаки','tym1'=>'Огненные атаки','tym2'=>'Электрические атаки','tym3'=>'Ледяные атаки','tym4'=>'Земляные атаки','tym5'=>'Атаки Света','tym6'=>'Атаки Тьмы','tym7'=>'Серые атаки','min_use_mp'=>'Уменьшает расход маны','pog'=>'Поглощение урона','maxves'=>'Увеличивает рюкзак'); - -if( !file_exists('../img.new-combats.com/i/encicl/pict_'.$rz[$rt[$itm['type']]][0].'.jpg') == true ) { - //subject - $rz[$rt[$itm['type']]][0] = 'subject'; -} - -if( !isset($rz[$rt[$itm['type']]][1])) { - $rz[$rt[$itm['type']]][1] = ''; -} - ?> - + - -Новый Бойцовский клуб | Библиотека <? if(isset($itm['id'])) { ?>| <?=$rz[$rt[$itm['type']]][1]?> | <?=$itm['name']?><? } ?> - - + + Новый Бойцовский клуб | Библиотека образов + + - - - - - -
    - - - -
    - - - - - - - - - - - - - - - -
    -

    -
    -

    » Образы / -

    - -

    - -
    - - - - - - - - - - - - - - - - -
      
    -
    - -

     

    -
    - - - -
    - - - - - -
    - -

    -История образа:
    -
    + +
    + +
    -
    -

    - -

        
     
    - 0 ) { - - if($rv == 1) { - //Мужские стандартные - $sp = mysql_query('SELECT * FROM `obraz` WHERE `sex` = 0 AND `standart` = 1'); - }elseif($rv == 2) { - //Женские стандартные - $sp = mysql_query('SELECT * FROM `obraz` WHERE `sex` = 1 AND `standart` = 1'); - } - - } - - - -?> - - - - - - - - - - - - - - -
    -

    » Образы / -

    - -

    - '; - }else{ - - - while( $itm = mysql_fetch_array($sp) ) { - if( $itm['name'] == '' ) { - $itm['name'] = 'Образ №'.$itm['id']; - } - ?> - - - -
    - - - -


    <?=$itm['name']?>
    -
    - -

     

    -
    -

    - -

        
    - - - - Образы персонажей
    - +
    + + + + + + + - - - - -
    + + + +
    +
    +

    Библиотека образов Бойцовского Клуба

    + hr
    + +
    + + +      +

    - Мужские
    -    · Стандартные 
    - Женские
    -    · Стандартные 
    -


    - - -
     
    - - - - - - - - - - - - - - + + + +
    -  -
    Copyright © «www.new-combats.com»

    + Образы персонажей +
    + Мужские
    + +
    + Женские
    + +
    + · Именные +
    + + +   +
    + -- 2.45.2