Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

/pame

Статус
В этой теме нельзя размещать новые ответы.

execution

Компетентный
Добрый день, пишу в первый раз, так что не судите строго.​
Видел на форуме игроки задаются вопросом как сделать эту команду, но ответов на них я не нашел.
Сама команда предназначена для краткого описания персонажа в виде 3Д текста, которая привязана к игроку.
Сама команда популярна на различных серверах (Grinch, Trinity и т.д.)


Скриншот

Ко всем new
PHP:
new Text3D:pame_text[MAX_PLAYERS] = {Text3D:-1, ...}; // Создаём глобальную переменную для всех игроков.
В public OnPlayerCommandText
PHP:
CMD:pame(playerid, params[])
{
    if(isnull(params))  
        return SendClientMessage(playerid, -1, "Введите: /pame [ описание ]");

 	if(!(10 <= strlen(params) <= 60)) 
    	return SendClientMessage(playerid, -1, !"Используйте не меньше 10 и не больше 60 символов!"); // Использую упаковку текста , расписывать не буду, полно статей о них.

    if(pame_text[playerid] != Text3D: -1) 
		return SendClientMessage(playerid, -1, !"У вас уже стоит описание. Для удаление используйте: /dellpame");
    
	new
		Float:_pos_x,
		Float:_pos_y,
		Float:_pos_z;

	GetPlayerPos(playerid, _pos_x, _pos_y, _pos_z);

    pame_text[playerid] = CreateDynamic3DTextLabel(params, 0xFFFFFFD, _pos_x, _pos_y, _pos_z + 1.0, 15.0, playerid); // Создаём и прикрепляем к игроку

    new
		string[MAX_CHATBUBBLE_LENGTH + 1] =  "Вы создали описание персонажа: ";
	
	strcat(string, params);

    return SendClientMessage(playerid, -1, string);
}
Сюда же делаем команду для удаления
PHP:
CMD:dellpame(playerid, params[])
{
    if(pame_text[playerid] == Text3D: -1)
        return SendClientMessage(playerid, -1, !"Вы не создавали описание персонажа. Используйте: /pame [ описание ]"); // Проверка на то, создан ли у игрока описание или нет.
    
    DestroyDynamic3DTextLabel(pame_text[playerid]); 

    pame_text[playerid] = Text3D: -1;

    return SendClientMessage(playerid, -1, !"Вы удалили описание своего персонажа");
}
И теперь в public OnPlayerDisconnect делаем удаление 3D текста при выходе персонажа.
PHP:
if(pame_text[playerid] != Text3D: -1)
{
	DestroyDynamic3DTextLabel(pame_text[playerid]);

	pame_text[playerid] = Text3D: -1;
}
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу