Lunix

/model id (исправлено)

Recommended Posts

 

Здравствуйте. Для ленивых и не знающих, предоставляю небольшой пример как использовать /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 by Lunix
  • Like 4

Share this post


Link to post
Share on other sites

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 by N1kS
  • Like 3

Share this post


Link to post
Share on other sites
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. Спасибо за корректировку, я потом уже понял эту глупость, я подправил код)

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.