Leaderboard


Popular Content

Showing most liked content since 07/22/17 in all areas

  1. 17 points
    Hello everyone, It has been a long time since we've posted a blog or kept the community up-to-date with our latest progress and we apologize for that. In return, we have very exciting news to bring you which will also prove that we've made tremendous progress during our months of silence! RAGE 0.2 will not be released. Why? Because we're releasing RAGE 0.3. Yeah, you read that right! We have surpassed the amount of work we originally planned for 0.2 greatly, instead of releasing an update that only added client-side scripting, we've started working on an update that will provide a major boost to every single aspect of our platform. The following changelog should give you an impression of what we've done so far. Modernized UI. We did tons of small changes that improved functionality a lot. Here's a little example of that: C++ SDK. It was planned for 0.2.1 however it is already implemented since we're at 0.3! You will be able to check it out at https://github.com/ragemultiplayer/ragemp-cppsdk in the upcoming days. Melee and combat roll synchronization. It's still experimental, so expect some bugs here and there (and don't forget to report them). Client- and server-side API improvements: customization of nametags, evented keybinding, improved ray casting, enhanced chat and cursor APIs, out-of-the-box command handling API, new events and more.. Completely rewritten resource transfer (previous one was based on RakNet). Our new one includes better server performance and safety and also more user-friendly downloading for clients (it's faster!). Remote FastDL already included! Client-side streamer for map entities that is optimized to an extent where it can be independent from your biggest maps not in the streaming range. "Bridge" plugin that builds a bridge for your server-side C# resources from GTA Network. NodeJS was moved out of the server core so you can disable this feature to keep additional hardware resources free and unoccupied! Chat secure mode and color tags (like "!{red}Player: !{255, 255, 255, 0.2} what's going on?"). Both could be disabled using clientside API. Server owners now have the possibility to limit and block players by ping, FPS, game version and packet loss. Tow truck and convertible roofs synchronization. Lots of stability improvements. And much more Oh, we almost forgot. You're wondering when 0.3 will be released? Well.. we can proudly announce that our first public build will be rolled out next week. Woohoo!
  2. 8 points
    Добрый вечер, Прошло много времени с тех пор, как был опубликован последний блог или мы делились с вами информацией о процессе разработки, однако сегодня мы приготовили для вас отличные новости, которые расскажут вам о прогрессе, который был достигнут за эти месяцы молчания. RAGE 0.2 не будет опубликован. Почему? Потому что будет выпущен RAGE 0.3. Да, вам не показалось! Мы давно превысили объем работы, изначально запланированный для 0.2, которое должно было просто добавить клиентский скриптинг, улучшив все аспекты платформы. Ниже перечислен неполный список проделанной с предыдущего блога работы: Улучшенный UI. Мы сделали множество небольших изменений, что позволило сделать UI намного более функциональным. Вот небольшой пример: C++ SDK. Это было запланировано для 0.2.1, и мы сделали это уже сейчас, ведь мы на 0.3! Вы сможете насладиться им в ближайшие дни на https://github.com/ragemultiplayer/ragemp-cppsdk. Синхронизация ближнего боя и кувырков. Она все ещё экспериментальна, поэтому иногда может работать не так, как положено. Улучшения клиентского и серверного API: кастомизация ников, событийный отлов клавиш, изменённые рейкасты, API чата и курсора, новый обработчик команд, новые события и другое.. Полностью переделанный трансфер ресурсов, дающий лучшую производительность и безопасность для сервера, а также удобность для клиента. Поддержка FastDL уже на борту! Клиентский стример объектов карты, оптимизированный для минимальной в зависимости от количества объектов, если они вне зоны видимости. Плагин для поддержки C# и ресурсов из GTA Network. NodeJS теперь вынесена из ядра и может быть отключена для экономии ресурсов сервера. Безопасный режим чата и теги для цветов (вроде "!{red}Игрок: !{255, 255, 255, 0.2} что здесь происходит?"). Может быть отключено через клиентское API. Владельцы серверов теперь могут ограничивать FPS, пинг, версию игры и потерю пакетов. Синхронизация буксировщика и крыши кабриолетов. Множество улучшений стабильности. И многое другое! Ах, мы почти забыли. Вам интересно, когда 0.3 будет выпущен? Ну.. мы можем гордо сообщить, что первая публичная сборка будет опубликована на следующей неделе. Ю-ху!
  3. 7 points
  4. 2 points
    https://github.com/Armyw0w/RAGEAngular RAGE Angular Hi, my name is Armyw0w, I made this Module to integrate Angular in RAGE Multiplayer (for the CEF more exactly) Installation You need NodeJS installed (You can download it from here) npm install [email protected] Import module I hope you know to import the module, if not, you should take a look here IMPORTANT! If you don't inject the RAGE in a component the RAGEInit() callback it will never be called. The real middle-man between Client and Angular You need to add a script after/before build in index.html, in that script you will hook the functions (Client <=> Middle-man <=> Angular) <script> function RAGEInit() { alert ( 'Woah, the Angular loaded RAGE Service, now I can use all these functions'); // No functions now :( } </script> TO DO Import all RAGE Multiplayer Functions Create custom functions Async functions (Promise type) #0.3 hype
  5. 2 points
    ВНИМАНИЕ !!! ТОЛЬКО ДЛЯ 0.2 Недавно понадобился getData для игроков, сделал на скорую руку простую реализацию. CLIENT
  6. 2 points
    Hi! I have created an online gallery of objects. Enjoy! http://gtan.codeshock.hu/objects
  7. 2 points
  8. 2 points
  9. 2 points
    Тут экстрасенсы не сидят, будь добр опиши где эта ошибка.
  10. 2 points
    Client Binaries (Launcher) Steam: https://rage.mp/dl/ragemp_steam.zip Social Club: https://rage.mp/dl/ragemp_sc.zip 1.36: https://rage.mp/dl/ragemp_136.zip (depends on your game version) Please notice you need the hotfix to play. Hotfix #3 Steam: https://rage.mp/dl/steam/hotfix3.zip Social Club: https://rage.mp/dl/sc/hotfix3.zip 1.36: https://rage.mp/dl/136/hotfix3.zip Installation Create a new folder on any place for example on the desktop, unzip the client binaries for the needed version and overwrite the existing files with the hotfix #2. Start the client with launcher.exe Server Binaries Windows (64 bit) : https://rage.mp/dl/winsrv64.zip Linux (64 bit) : https://rage.mp/dl/linsrv64.tar.gz For appearing in the serverlist you need to add "announce": true to the conf.json Changelogs will be added to this post.
  11. 1 point
    Доброго времени суток. Представляем Вам сервер, который берет фундамент на основе RP-режима. Los Santos Role Play – это инновационный игровой проект, созданный на базе GTA V. Вам нравится Role Play, но с графикой не самой свежей GTA San Andreas мириться уже не хочется? Тогда наш проект это то, что нужно для вас! Невероятное обилие возможностей, дружное сообщество игроков и невероятная атмосфера – вот что отличает наш проект! И все это на великолепном графическом движке GTA V. В качестве мультиплеерной платформы для наших серверов используется RAGE:MP, что обеспечивает отличную синхронизацию, стабильность и отсутствие читеров, мешающих насладится вам игровым процессом. Основной концепцией наших серверов является Role Play режим, поэтому мы уделяем огромное внимание проработке геймплея и делаем все, чтобы вы просто играли и получали удовольствие от игры после тяжело рабочего или учебного дня! Начать играть совсем просто, для этого нужно выполнить всего несколько простых действий. Заинтересованы? Тогда скорее переходите к подключению! Официальный сайт сервера: http://lsfivem.com Группа ВК: https://vk.com/lsfivem
  12. 1 point
    Как я понял: Нет, просто место js можно на других языках создавать... Спасибо за перевод!
  13. 1 point
  14. 1 point
  15. 1 point
  16. 1 point
  17. 1 point
  18. 1 point
  19. 1 point
    So look, friend, follow all the instructions: 1) Download (here) the correct version and hotfix; 2) Download (here) a patch that will rollback your GTA V to version 1.36 as at the moment the multiplayer is working on it (but the source code files of the original save for the future); 3) Downloaded the patch (2 paragraph) how do you understand you must move to the root folder with GTA V, but as I wrote above, the source of the original files just in case save; 4) In paragraph 1, to be honest, I don't know which version to download it, because in fact you've rolled back the game to version 1.36. In General, if there are problems, try all versions client and hotfix. Of ideas you now need version 1.36, but the binding in the Social Club remains, so try.
  20. 1 point
    Сообщение выводится в чат, чат сделан на CEF. CEF - обычный браузер поверх игры грубо говоря, в нем обьект window есть, т.к. это обычная html страница
  21. 1 point
    You bought GTA V the incentive or pirated version?
  22. 1 point
    The server you have a Social Club or Steam?
  23. 1 point
    The patch weighs in at half a gig, of course, in the game you have to throw. The game doesn't run because you have the official version that has been updated, and pirates of course not. And this patch rolls back the official version of the game to version pirates.
  24. 1 point
    Интерполяция, экстраполяция - это как раз таки высшая математика. А так же необходимо четкое понимание различных алгоритмов и способность проектировать свои. Вот, можешь статью на Хабре почитать, там рассказывается о некоторых сложностях https://m.habrahabr.ru/post/302394/
  25. 1 point
    1. Мультиплеер разрабатывается на C++. 2. Информация отсутствует. 3. В команду никого не берут
  26. 1 point
    На самом деле тебе стоит почитать про JavaScipt, хотя бы основы. Для того что бы понимать как работают объекты, переменные и т.д https://learn.javascript.ru/ - тут я изучал основы
  27. 1 point
    Есть freeroam мод от N1ks'а - https://github.com/n-n1ks/rage.mp-freeroam В принципе может дать начальное понятие что да как
  28. 1 point
    Например, ты захотел узнать имя игрока, id которого 4. Тогда юзай mp.players.at(4).name Захотел узнать здоровье игрока под 12 id? Используем mp.players.at(12).health P.S. Конечно же, можно не объявлять переменную (константа - тоже переменная).
  29. 1 point
    У меня в каждом проекте подключён `eslint` (`npm install eslint --save-dev`), а в `.eslintrc` (файле настроек валидации проекта, который должен располагаться в корневой директории проекта) прописан `mp` как глобальный объект + правила форматирования там же, типа этого: { "globals": { "mp" : false }, "rules": { "semi" : [2, "always"], "key-spacing" : "off", "max-len" : [2, 120, 2], "comma-dangle" : "off", "operator-linebreak" : ["error", "after", {"overrides": {"?": "ignore", ":": "ignore"}}] } } После добавления этого файла и при первом заходе в редактирование любого js-файла WebStorm предложит использовать `.eslintrc` как файл настройки валидации, и при нажатии "Yes" все глобальные переменные перестанут подсвечиваться красным.
  30. 1 point
    Possible variant, you have a bad patch 1.36. Download my patch and check it out, https://yadi.sk/d/caoburUX3LtRFP.
  31. 1 point
    И что тебя тут не устраивает? Написал потому, что нет точной даты выхода, причём здесь спешка? Будь проще)
  32. 1 point
    Ну вот подобное я и хотел услышать. Спасибо большое.
  33. 1 point
    You donwload Rage steam client, but you use version 1.36. Donwload this launcher, https://rage.mp/dl/ragemp_136.zip and instal hotfix #3.
  34. 1 point
    подожди до выхода 0.2 или скачай патч 1,36. (как то так)
  35. 1 point
    Все совершенно сложнее чем тебе кажется, есть такая профессия "левел дизайнер" (в народе маппер). Вот есть ряд отличных статей которые подойдут как для создания цифровой игры в целом так и для маппинга в гта: http://level-design.ru/pro-ld-book-index/ Также есть анализ отдельных игр: http://level-design.ru/archive/ (под анализ попала даже гта: http://level-design.ru/2014/03/grand-theft-auto-v/)
  36. 1 point
    Защита серверной части зависит от тебя и лишь только от тебя. Используй двухэтапную авторизацию, не делай простые пароли, меняй раз в месяц - два пароли. Клиент-сайд будет доступен для всем, ибо JavaScript не компилируемый язык. Как сказал харви, есть такой вариант обфускация + конкатинация + компиляция в ES5 + минификация. Это значительно усложнит понимание твоего кода. + еще решение от тестера
  37. 1 point
    1.Нет,смотря как держать будешь сервер.Если на пк то да.Если на хосте то нет. 2.Да.Но не так легко его взломать.
  38. 1 point
    На 0.1 просто сделать не получится, остаётся ждать 0.2. Вот код команды /b на 0.2. По такому методу можно "наклепать" ещё кучу roleplay команд. mp.events.addCommand("b", (player, text) => { if (text != undefined) { const pos = player.position; mp.players.broadcastInRange(pos, 15, '<font color=#D8D8D8>(( [OOC] ' + player.name + ' [' + player.id + '] ' + text + ' ))'); } else player.outputChatBox("<font color=#2E64FE>[Информация] <font color=#ffffff>используйте /b [Текст]"); });
  39. 1 point
    Если заглянуть на вики, то можно увидеть, что изменять размер можно будет.
  40. 1 point
    В нетворке сервер-сайд на C#, а клиент JS. В рейдже и сервер-сайд, и клиент-сайд JS
  41. 1 point
    Да, с помощью CEF ты можешь многое в плане интерфейса игры. Почитать о CEF'e можешь вот тут: https://vk.com/gtanw_dev?w=page-144756637_52833956
  42. 1 point
    Тем временем, наши новости по разработке выходят каждые 2 недели (иногда даже через неделю) Dev блог 1: https://fpgm.ru/topic/3-перезагрузка-разработки/ Dev блог 2: https://fpgm.ru/topic/4-неделя-разработки-№2/ Dev блог 3: https://fpgm.ru/topic/6-неделя-разработки-№3/
  43. 1 point
    ONLY 0.2 let interpolatecam = null; function lerp (vector1, vector2, deltaTime) { return new mp.Vector3( vector1.x + (vector2.x - vector1.x) * deltaTime, vector1.y + (vector2.y - vector1.y) * deltaTime, vector1.z + (vector2.z - vector1.z) * deltaTime ); } function init() { mp.events.add({ 'render': () => { if(interpolatecam) { interpolatecam.currentPosition = lerp(interpolatecam.positions[0], interpolatecam.positions[1], interpolatecam.progress); interpolatecam.progress = interpolatecam.progress + interpolatecam.speed / 1000; interpolatecam.cam.setCoord(interpolatecam.currentPosition.x, interpolatecam.currentPosition.y, interpolatecam.currentPosition.z); if(interpolatecam.progress >= 1) { interpolatecam = null; } } } }); } function interpolateCam (cam, positions, speed) { return interpolatecam = { cam, positions, speed, progress: 0, currentPosition: null }; } exports.interpolateCam = interpolateCam; exports.init = init; Using const {init, interpolateCam} = require('./interpolateCam'); init(); mp.events.add({ 'createCam': () { const cam = mp.cameras.new('default', new mp.Vector3(0, 0, 75), new mp.Vector3(), 90.0); cam.setActive(true); interpolateCam(cam, [new mp.Vector3(0, 0, 75), new mp.Vector3(1337, 1448, 228), 1]) } })
  44. 1 point
    ONLY 0.2 let interpolatecam = null; function lerp (vector1, vector2, deltaTime) { return new mp.Vector3( vector1.x + (vector2.x - vector1.x) * deltaTime, vector1.y + (vector2.y - vector1.y) * deltaTime, vector1.z + (vector2.z - vector1.z) * deltaTime ); } function init() { mp.events.add({ 'render': () => { if(interpolatecam) { interpolatecam.currentPosition = lerp(interpolatecam.positions[0], interpolatecam.positions[1], interpolatecam.progress); interpolatecam.progress = interpolatecam.progress + interpolatecam.speed / 1000; interpolatecam.cam.setCoord(interpolatecam.currentPosition.x, interpolatecam.currentPosition.y, interpolatecam.currentPosition.z); if(interpolatecam.progress >= 1) { interpolatecam = null; } } } }); } function interpolateCam (cam, positions, speed) { return interpolatecam = { cam, positions, speed, progress: 0, currentPosition: null }; } exports.interpolateCam = interpolateCam; exports.init = init; Использование const {init, interpolateCam} = require('./interpolateCam'); init(); mp.events.add({ 'createCam': () { const cam = mp.cameras.new('default', new mp.Vector3(0, 0, 75), new mp.Vector3(), 90.0); cam.setActive(true); interpolateCam(cam, [new mp.Vector3(0, 0, 75), new mp.Vector3(1337, 1448, 228), 1]) } })
  45. 1 point
    Всем доброго времени суток, в данной статье я хотел бы немного рассказать о Yarn. Если вы знаете, что это такое и используете, либо твердо решили для себя, что не будете использовать Yarn, то можете просто закрыть данную статью. Предусловие Yarn - это пакетный менеджер, разработанный компанией Facebook, на стадии его разработки так же подключились Google, Exponent и Tilde. Почему стоит использовать Yarn? Файл yarn.lock В файле package.json, с помощью которого Yarn и npm отслеживают зависимости, номера версий не указываются точно, вместо этого задается их диапазон. Таким образом, вы можете задать определенную основную или вспомогательную версию, при этом позволяя npm установить последний патч с исправлениями каких-либо багов. В идеальном мире семантического версионирования, релизы с патчами не содержат коренных изменений. Но, к сожалению, в реальности это не всегда верно. Стратегия, выбранная npm может привести к тому, что на двух машинах с идентичными файлами package.json будут установлены различные версии пакетов, что может привести к появлению багов. Чтобы избежать несоответствия версий, установленная версия закрепляется в файле блокировки. При каждом добавлении модуля создается файл yarn.lock. Таким образом вы можете гарантировать, что на другой машине будет установлен тот же самый пакет; при этом у нас сохраняется диапазон допустимых версий в файле package.json. В npm команда npm shrinkwrap так же генерирует файл блокировки, а команда npm install считывает его до чтения package.json, также как Yarn сначала читает yarn.lock. Разница состоит в том, что Yarn всегда автоматически обновляет yarn.lock, а в npm это надо делать вручную. Параллельная установка Независимо от того, устанавливается ли пакет с помощью npm или Yarn, при этом решается серия задач. В npm эти задачи выполняются последовательно и отдельно для каждого пакета, это значит, что пока пакет не установлен полностью, следующий пакет будет ждать. В Yarn эти операции выполняются параллельно, что улучшает производительность. Для сравнения я установил пакет express с помощью npm и Yarn, не используя кэш, файлы shrinkwrap или lock; всего в установке 42 файла. npm: 9 секунд Yarn: 1.37 секунд Я не поверил своим глазам. Повторение дало такие же результаты. Затем я установил gulp со 195 зависимостями. npm: 11 секунд Yarn: 7.81 секунд Кажется, что разница зависит от количества устанавливаемых пакетов, в любом случае Yarn быстрее. Yarn или npm: различия в интерфейсе командной строки Кроме функциональных отличий, в Yarn также отличаются команды. Некоторые команды npm удалены, некоторые модифицированы, а пара интересных команд добавлена. yarn global В отличие от npm, где глобальные операции выполняются за счет опции -g или --global, команды Yarn нуждаются в префиксе global. Также как и в npm, специфические для проекта зависимости глобально не устанавливаются. Префикс global работает только с командами yarn add, yarn bin, yarn ls и yarn remove. За исключением yarn add, все эти команды идентичны своим эквивалентам в npm. Документация global. yarn install Команда npm install устанавливает все зависимости из файла package.json и позволяет вам добавлять новые пакеты. Команда yarn install только устанавливает зависимости, перечисленные в файле yarn.lock или package.json, именно в таком порядке. Документация yarn install Документация npm install yarn add [–dev] Аналогично npm install <package>, команда yarn add <package> добавляет пакет и устанавливает зависимости. Как видно из названия команды, она добавляет зависимости, это означает автоматическое сохранение ссылки на пакет в файле package.json, также как это делается в npm с флагом --save. Флаг --dev в Yarn добавляет зависимости для разработки, также как флаг --save-dev в npm. Документация yarn add Документация npm install yarn licenses [ls|generate-disclaimer] На момент написания в npm нет эквивалента этой команды. Yarn licenses lsвыводит список лицензий всех установленных в проекте пакетов, а yarn licenses generate-disclaimer генерирует дисклеймер, содержащий текст всех лицензий всех пакетов в проекте. Некоторые лицензии требуют включать текст лицензии в ваш проект, поэтому этот инструмент весьма полезен. Документация yarn licenses yarn why Эта команда смотрит в граф зависимостей и выясняет, почему указанный пакет установлен в вашем проекте. Возможно, вы сами добавили его, а, может, это зависимость установленного вами пакета. Команда yarn why помогает вам с этим разобраться. Документация yarn why yarn upgrade Эта команда обновляет пакеты до последней версии, соответствующей диапазону из package.json вместо установки точных версий из yarn.lock. Чтобы добиться того же в npm, вам надо последовательно выполнить: rm -rf node_modules npm install Эту команду не надо путать с npm update, обновляющей пакеты до самой свежей версии. Документация yarn upgrade yarn generate-lock-entry Команда yarn generate-lock-entry генерирует файл yarn.lock на основе зависимостей из package.json. Это похоже на npm shrinkwrap. Эту команду следует использовать с осторожностью, так как файл блокировки генерируется и обновляется автоматически при добавлении и обновлении зависимостей с помощью yarn add и yarn upgrade. Документация yarn generate-lock-entry Документация npm shrinkwrap Стабильность и надежность А что, если шумиха вокруг Yarn преждевременна? В первый же день релиза появилось много сообщений о проблемах, но темпы решения проблем поражают. Это показывает серьезную работу по обнаружению и исправлению багов. Если смотреть на количество и типы проблем, Yarn кажется стабильным для большинства пользователей, но он может не подойти для каких-то отдельных случаев. Учтите, что несмотря на то, что пакетный менеджер может быть очень важен для вашего проекта, это всего лишь пакетный менеджер. Если возникают проблемы, то переустановка пакетов не должна быть сложной, также как и возврат к npm. Перспективы Возможно, вы опасаетесь повторения истории с Node.js и io.js. Напомню, что io.js был форком Node.js, созданным несколькими основными разработчиками после разногласий по поводу управления проектом. Меньше, чем через год, обе команды пришли к соглашению, io.js был слит с Node.js и прекращен. Независимо от того, кто был прав, это обогатило Node.js новыми функциями. Я вижу схожие паттерны между npm и Yarn. Хотя Yarn это не форк, он исправляет некоторые из недостатков npm. Разве будет плохо, если npm учтет это и попросит Facebook, Google и остальных разработчиков Yarn улучшить npm? Хотя об этом слишком рано пока говорить, но я надеюсь, что так и произойдет. В любом случае, будущее Yarn выглядит светлым. Сообщество проявляет интерес к появлению нового пакетного менеджера. К сожалению, пока отсутствует дорожная карта проекта, поэтому я не знаю, какие сюрпризы Yarn готовит для нас. Заключение По умолчанию Yarn набирает больше очков, чем npm. У нас есть файл блокировки, установка пакетов быстра, как никогда и они все автоматически сохраняются в package.json. Последствия установки и использования Yarn минимальны — вы можете попробовать его только в одном проекте, чтобы увидеть, подходит он вам или нет. Это делает Yarn превосходной заменой npm. Я мог бы однозначно рекомендовать попробовать Yarn в каком-нибудь проекте, раньше или позже. Если вы осторожны в установке и использовании новых программ, подождите пару месяцев. В конце концов, npm проверен в боевых условиях, а в мире разработки программного обеспечения это немаловажно. Если же вы замечали, что вам приходиться ждать окончания установки пакетов npm, то вам самое время ознакомиться с руководством по переходу на Yarn. Пару слов от себя Yarn устанавливает пакеты гораздо быстрее, чем npm. Если в вашем проекте более одного разработчика, то используя Yarn вы может быть уверенны в том, что у всех разработчиков будут установлены пакеты одинаковых версий, что исключит возможность некорректной работы кода из-за версии пакета. Официальный сайт: https://yarnpkg.com/ Источники: https://habrahabr.ru, http://prgssr.ru
  46. 1 point
    Данная статья является первой часть курса уроков по JavaScript. В ней будут рассмотрены основные моменты языка JavaScript. В данной статье мы познакомимся с основными элементами языка JavaScript, к ним относятся: Базовые типы: строки, числа, логические переменные. Операторы. Массивы. Функции. Регулярные выражения. Циклы. 1. Базовые типы let variableName; // объявление новой перемнной с именем 'variableName' let str = ‘Hello world!!’; // строка let a = 1; // целое число let b = 1.3; // дробное число let boolTrue = true; // истина let bollFalse = false; // ложь const myConst = 5; // объявление const задаёт константу, то есть переменную, которую нельзя менять myConst = 10; // ошибка, константу имзенить нельзя 2. Операторы 2.1. Арифметические К арифметическим оператором относятся: + (сложение) - (вычитаение) * (умножение) / (деление) % (остаток от деления) let a = 1; let b = 2; let c = a + b; // 3 let d = c * 2; // 6 let e = d / 3; // 2 let f = e % 2; // 0 let g = 1.5; let h = 2.3; let i = g + h; // 3.8 i++; // 4.8 i--; // 3.8 let str1 = "Hello"; let str2 = "World!"; let str3 = str1 + " " + str2; // "Hello World!" 2.2. Логические && (и) || (или) if (5 > 3 && 5 < 6 ) { // условие верно, т.к. 5 больше 3 и 5 меньше 6 } if (5 > 3 && 5 < 4) { // условие не верно, т.к 5 больше 3, но 5 не меньше 4 } if (5 > 3 || 5 < 4) { // условие верно, т.к 5 больше 3 или 5 меньше 4 } if (5 < 3 || 5 > 10) { // условие не верно, т.к 5 больше 3 и 5 меньше 10 } 2.3. Сравнение == (равно без приведения типов) === (равно с приведением типов) != (не равно без приведения типов) !== (не равно с приведением типов) < (меньше) > (больше) <= (меньше или равно) >= (больше или равно) 1 == 1; // true 1 == '1'; // true 1 === 1; // true 1 === '1'; // false, т.к. типы не совпадают 1 != 2; // true 1 != 1; // false 1 > 1; // false 1 >= 1; // true 2 > 1; // true 2 >= 1; // true 3 < 4; // true 3 < 3; // false 3 <= 3; // true 0 == false; // true 0 === false; // false, т.к. типы не совпадают 3. Массивы В JavaScript индексация массива начинается с 0, то есть первый элемент в массиве имеет индекс 0, второй 1 и т.д. 3.1 Создание и изменение массива let arr = []; // создание пустого массива let arr = [1, 2, 3, 'Bob', 4, 5, 678.95]; // создание массива с элементами arr[0]; // 1 arr[2]; // 3 arr[3]; // "Bob"; arr[6]; // 678.95 arr[3] = "RAGE"; arr[3]; // "RAGE" arr[2] = 176; arr[2]; // 176 3.2 Авто-длина length У каждого массива есть свойство length, которое автоматом меняется при каждом обновлении массива. Длина массива - это не количество элементов, а максимальный целый ключ + 1: a = []; a[0] = 1; a[1000] = 1; a.length; // в массиве всего 2 элемента, но результат будет равен 1001, т.к. максимальный целый ключ - 1000 3.3 Перебор элементов let a = [1, 2, 3, 4] for (let i = 0; i < a.length; i++) { console.log(a[i]); // выведет каждое значение массива } a.forEach(function(item, index, arr) { // item - значение, index - номер(индекс), arr - массив, который переберается console.log(item); // альтернативный вариант перебора массива. }); 3.4 Добавление и удаление элементов в массив let arr = [3, 5, 7, 9]; arr.push(11); // добавит в конец массива число 11 arr.pop(); // удалит с конца массива последний элемент arr.pop(); // удалит с конца массива последний элемент console.log(arr); // выведет все значения массива, в данном случае [3, 5, 7] arr.unshift(1); // добавит в начало массива число 1 console.log(arr); // выведет все значения массива, в данном случае [1, 3, 5, 7] arr.shift(); // удалит с начала массива первый элемент console.log(arr); // выведет все значения массива, в данном случае [3, 5, 7] Об остальных методах для работы с массива вы можете прочитать здесь. 4. Функции 4.1 Создание функция function имя(параметры) { // какой-то код } function summ(a, b) { return a + b; // функция вернет результат суммы числа a и b } let c = summ(1, 5); // 6 4.2 Функции - объекты В JavaScript функции являются полноценными объектами встроенного класса Function. Именно поэтому их можно присваивать переменным, передавать и, конечно, у них есть свойства: function f() { } f.test = 6 console.log(f.test) // 6 4.3 Параметры функции Функции можно запускать с любым числом параметров. Если функции передано меньше параметров, чем есть в определении, то отсутствующие считаются undefined. function division(a, b = 2) { return a / b; } let a = division(10, 5); // вернет 2, т.к. мы передали оба параметру в функцию let b = division(10); // вернет 5, т.к. мы передали только один параметр в функцию, а b = 2, если он не передан 4.4 Работа с неопределенным числом параметров function sayHi() { for (var i = 0; i < arguments.length; i++) { console.log("Привет, " + arguments[i]); } } sayHi("Винни", "Пятачок"); // 'Привет, Винни', 'Привет, Пятачок' Частая ошибка новичков – попытка применить методы Array к arguments. Это невозможно: function sayHi() { var a = arguments.shift(); // ошибка! нет такого метода! } sayHi(1); Дело в том, что arguments – это не массив Array. В действительности, это обычный объект, просто ключи числовые и есть length. На этом сходство заканчивается. Никаких особых методов у него нет, и методы массивов он тоже не поддерживает. Впрочем, никто не мешает сделать обычный массив из arguments, например так: function Foo() { var args = []; for (var i = 0; i < arguments.length; i++) { args[i] = arguments[i]; } console.log(args); // [1, 2, 3, 4]; } Foo(1, 2, 3, 4); 5. Регулярные выражения Регулярные выражения в javascript имеют особую краткую форму и стандартный PCRE-синтаксис. Работают они через специальный объект RegExp. Кроме того, у строк есть свои методы search,match,replace, но чтобы их понять - разберем-таки сначала RegExp. В дальнейшем на эту тему будет написан отдельный урок, в котором все будет объяснено более подробно. Объект типа RegExp, или, короче, регулярное выражение, можно создать двумя путями /pattern/флаги new RegExp("pattern"[, флаги]) pattern - регулярное выражение для поиска (о замене - позже), а флаги - строка из любой комбинации символов g(глобальный поиск), i(регистр неважен) и m(многострочный поиск). Первый способ используется часто, второй - иногда. Например, два таких вызова эквивалентны: var reg = /ab+c/i var reg = new RegExp("ab+c", "i") При втором вызове - т.к регулярное выражение в кавычках, то нужно дублировать \ // эквивалентны re = new RegExp("\\w+") re = /\w+/ При поиске можно использовать большинство возможностей современного PCRE-синтаксиса. 6. Циклы 6.1 Цикл while с предоусловием let i = 0; while (i < 10) { // цикл будет увеличивать значение перемнной i на 10 до тех пор, пока проверка i < 10 не вернет false i++; } 6.2 Цикл while с пост условием Цикл, описанный, таким образом, сначала выполняет тело, а затем проверяет условие. let i = 0; do { i++; } while (i < 10); Таким образом, цикл выполненный в разделе 6.1, после окончания итераций присвоит переменной i значение 10, а цикл выполненный в разделе 6.2, после окончания итерация присвоит переменной i значение 11. 6.3 Цикл for Чаще всего применяется цикл for. Выглядит он так: for (начало; условие; шаг) { // тело цикла } Пример цикла, который выведет значение для i от 0 до 10 включительно: for (let i = 0; i <= 10; i++) { console.log(i); } В данном цикле: Начало: i = 0. Условие: i <= 10. Шаг: i++. Тело цикла: console.log(i), т.е. код внутри фигурных скобок (они не обязательны, если только одна операция) 6.4 Прерывание цикла break Выйти из цикла можно не только при проверке условия но и, вообще, в любой момент. Эту возможность обеспечивает директива break. Например, следующий цикл остановиться если значение переменной i будет больше 50. for (let i = 0; i <= 100; i++) { if (i > 50) { break; } } Директива continue прекращает выполнение текущей итерации цикла. Она – в некотором роде «младшая сестра» директивы break: прерывает не весь цикл, а только текущее выполнение его тела, как будто оно закончилось. Её используют, если понятно, что на текущем повторе цикла делать больше нечего. Например, следующий цикл использует continue, чтобы не выводить нечетные числа: for (let i = 0; i <= 10; i++) { if (i % 2 != 0) { continue; } console.log(i); // выведет число, если оно четное. }
  47. 1 point
    Хотел бы помочь всем новичкам и посоветовать им, как начать учить JavaScript. Лучшими в рунете по изучению JS являются: Официальная документация от Mozila Developer Network - https://developer.mozilla.org/ru/docs/Web/JavaScript , Книга Ильи Кантора - Современный учебник по JavaScript https://learn.javascript.ru . Node JS: Документаций по Ноде значительно меньше, из годных я бы отметил видеокурс Ильи Кантора - https://learn.javascript.ru/screencast/nodejs . Надеюсь я кому-то помог. Удачи в скриптинге
  48. 1 point
    When you go to change the client settings, it just has bad english. (Change the path? "Not yet" In-Game Nickname : ______ "Yeap") Why can't i just click a button and choose my game directory? How do I change it? I tried to type in a different directory. It won't work.
  49. 1 point
    Возможно(!) кому-либо будет полезно в дальнейшем но вот файл как массив скинов Ссылка(тыкабельно)
  50. 1 point
    Hi folks ! Today we are proudly releasing our final hotfix for first public beta release. Changelog - Hotfix #3 Fixed error on start (ERR_NO_LAUNCHER) Launcher closes properly Fixed blip sprite changing Fire trucks were disabled Model streaming became idiot-proof (most of crashes were caused by guys who set player's model to vehicle model) Fixed model/clothes/prop unsync that was caused by serverside streamer Climbing sync was fixed (that bug caused by latest game update) Fixed disconnect message Overall stability improvements