Lunix Posted January 4, 2017 Share 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 Link to comment Share on other sites More sharing options...
CocaColaBear Posted January 4, 2017 Share 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 Link to comment Share on other sites More sharing options...
Lunix Posted January 4, 2017 Author Share 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 Link to comment Share on other sites More sharing options...
M4rK Posted January 5, 2017 Share Posted January 5, 2017 Спасибо, очень полезно! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now