Lunix 12 Posted January 4, 2017 (edited) Здравствуйте. Для ленивых и не знающих, предоставляю небольшой пример как использовать /model по id. PS Этот пример является желательным для чистого сервера. Итак, давайте начнем!) Для того, чтобы начать работу в папке " events " создаем файл "skin.js" Потом мы объявляем глобальную переменную global.ped = { }; Затем вписываем список наших скинов, я взял только животных global.ped = { skin: mp.joaat(["A_C_Boar", "A_C_Chickenhawk", "A_C_Chimp", "A_C_Chop", "A_C_Cormorant", "A_C_Cow", "A_C_Coyote", "A_C_Crow", "A_C_Deer", "A_C_Fish", "A_C_Hen", "A_C_Husky", "A_C_MtLion", "A_C_ig", "A_C_igeon", "A_C_Rat", "A_C_Retriever", "A_C_Rhesus", "A_C_Rottweiler", "A_C_Seagull", "A_C_SharkTiger", "A_C_shepherd")] }; Прошу прощения за не красивый код)) в описании я оставлю файл с полным списком скинов)) Затем перейдем в папку " commands " в файле "basiccommands.js" Мы ищем строку "model": (player, args) => и заменяем команду "model": (player, args) => { if (args[1] >= 723) { player.outputChatBox("Используйте /model 0-722"); } else if (args[1] >= 0 || args[1] <= 722) { player.model = ped.skin[args[1]]; } else if (typeof args[1] === 'string') { player.outputChatBox("Используйте /model 0-722"); } }, 1. Мы проверили правильность ввода идентификатора скина 2. При вводе /model 0 выводим функцию player.model = ped.skin [args[1]]; 3. При вводе /model A_C_Boar выводим ошибку player.outputChatBox("Используйте /model 0-722"); Было принято решение выводить ошибку т.к. можно крашить используя допустим /model infernus И вот, что мы имеем: при вводе команды "/model 0" мы будем в скине кабана Если Вам, каким-то образом понравился пример, поддержите хорошим комментарием) Пишите в комментах если хотите также /veh и /weapon по id Замечен баг, не все скины отображаются, список будет чистится skin.js - https://yadi.sk/d/rNFgkcpm36n3dV Помог в корректировке кода CocaColaBear Edited January 4, 2017 by Lunix 4 Share this post Link to post Share on other sites
CocaColaBear 4 Posted January 4, 2017 (edited) 1. Не очень универсально с ID. Т.к. не все разработчики будут придерживаться одинакового порядка и ID на одном сервере будет не соответствовать ID с другого сервера. Даже если все будут сортировать по алфавиту, то при добавлении новой моделькой с новым патчем (к игре) есть шанс, что куда-то в середину добавится модель. Следовательно ID'шники сдвинутся. 2. Если входной параметр строка, то нет проверки на корректность. Правильно было бы: if (typeof(args[1]) === 'string') { const model = ped.skin.indexOf(args[1]) > -1 ? mp.joaat(args[1]) : null; if (model == null) player.outputChatBox("Invalid tag"); else player.model = model; } 3. После каждой if'ки нужно сделать return (или остальные делать через else if). Т.к. если юзер введет "/model 1488" то будет показано сообщение и дальше будут выполнены остальные if, которые всегда возвращают false (бесполезные действия) Edited January 4, 2017 by N1kS 3 Share this post Link to post Share on other sites
Lunix 12 Posted January 4, 2017 4 часа назад, CocaColaBear сказал: 1. Не очень универсально с ID. Т.к. не все разработчики будут придерживаться одинакового порядка и ID на одном сервере будет не соответствовать ID с другого сервера. Даже если все будут сортировать по алфавиту, то при добавлении новой моделькой с новым патчем (к игре) есть шанс, что куда-то в середину добавится модель. Следовательно ID'шники сдвинутся. 2. Если входной параметр строка, то нет проверки на корректность. Правильно было бы: if (typeof args[1] === 'string') { const model = ped.skin.indexOf(args[1]) > -1 ? mp.joaat(args[1]) : null; if (model == null) player.outputChatBox("Invalid tag"); else player.model = mp.joaat(args[1]); } 3. После каждой if'ки нужно сделать return (или остальные делать через else if). Т.к. если юзер введет "/model 1488" то будет показано сообщение и дальше будут выполнены остальные if, которые всегда возвращают false (бесполезные действия) Спасибо за поправление) Отмечу: 1. Я был приметил в начале что этот пример больше к чистым серверам, то есть к freeroam и думаю игрокам будет куда проще вписать цифры чем тег, по поводу новых, они если и будут то под новым тегом (например A_M_Y который есть) и проще их кинуть в конец и ничего не сдвинется) 2. Данный код делает так, что-бы при вводе любой текстовой информации выскакивала ошибка, я не знаю почему, тестил) Проще сделать, что-бы только по id вводить, т.к. это и проще и не вызовет крашей) 3. Спасибо за корректировку, я потом уже понял эту глупость, я подправил код) 1 Share this post Link to post Share on other sites
M4rK 3 Posted January 5, 2017 Спасибо, очень полезно! Share this post Link to post Share on other sites