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

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

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

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

/shove

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

MrJunior

Компетентный
Здравствуйте вновь. На этот раз уже команда создана для мафиози. А точнее возможно запихнуть человека в багажник.
Перейдём к коду. Сперва ко всем new:
PHP:
new shove[MAX_PLAYERS];
+ нужен
PHP:
#define SCM SendClientMessage
Дальше сама команда:
PHP:
	if(strcmp(cmdtext, "/shove", true) == 0)
	{
		if(PlayerInfo[playerid][pMember] == 24 || PlayerInfo[playerid][pMember] == 25 || PlayerInfo[playerid][pMember] == 26)
		{
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp)) return SendClientMessage(playerid, 0xFF0000FF, !"Введите: /shove [id]");
			new giveplayerid = ReturnUser(tmp),
				string[62+ (MAX_PLAYER_NAME+1)] = "Вы засунули ",
				giveplayer[MAX_PLAYER_NAME+1], sendername[MAX_PLAYER_NAME+1],
				SHOVE = GetPlayerVehicleID(playerid),
				Float: x, Float: y, Float:z;
			GetPlayerName(playerid, sendername, sizeof(sendername));
			GetPlayerName(playerid, giveplayer, sizeof(giveplayer));
			if(shove[playerid] != 1)
			{
				if(IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, 0xFF0000FF, !"Игрок не найдён!");
				if(giveplayerid == playerid) return SendClientMessage(playerid, 0xFF0000FF, !"Вы указали свой ID!");
				if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xFF0000FF, !"Что-бы засунуть человека в багажник нужно быть в машине!");
				if(!ProxDetectorS(10.0, playerid, giveplayerid)) return SendClientMessage(playerid, 0xFF0000FF, !"Игрок слижком далеко!");
				SetPlayerPos(giveplayerid, 264.99420, 1307.02405, 1079.83289), SetPlayerVirtualWorld(giveplayerid, 123);
				TogglePlayerControllable(giveplayerid, 0);
				strcat(string, giveplayer);
				strcat(string, !" в багажник. Что-бы его вытащить введите /shove.");
				SendClientMessage(playerid, -1, string);
				string = "";
				strcat(string, sendername);
				strcat(string, " засунул вас в багажник.");
				SendClientMessage(giveplayerid, -1, string);
				SetPlayerChatBubble(playerid, !"Засунул человека в багажник машины", 0x7D03FFFF, 40.0, 3000);
				shove[playerid] = 1;
				return 1;
			}
			if(shove[playerid] == 1)
			{
				if(IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, 0xFF0000FF, !"Игрок не найдён!");
				if(giveplayerid == playerid) return SendClientMessage(playerid, 0xFF0000FF, !"Вы указали свой ID!");
				if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xFF0000FF, !"Что-бы высунуть человека с багажника нужно быть в машине!");
				if(GetPlayerVehicleID(playerid) != SHOVE) return SendClientMessage(playerid, 0xFF0000FF, !"В этой машине нет указаного игрока");
				SendClientMessage(playerid, -1, !"Вы ватащили человека с багажника");
				SendClientMessage(giveplayerid, -1, !"Вас вытащили с багажника");
				GetVehiclePos(SHOVE, x, y, z);
				SetPlayerPos(giveplayerid, x+0.0613, y-5.1647, z+1.2065);
				SetPlayerVirtualWorld(giveplayerid, 0);
				TogglePlayerControllable(giveplayerid, 1);
				shove[playerid] = 0;
			}
		}
		else SendClientMessage(playerid, 0xFF0000FF, "Вы не мафиози!");
		return 1;
	}
Предупреждения:
1. В начале в проверке указаны мои id фракции мафий. Измените на своё!
2. Всё баги, вопросы в тему.



ВНИМАНИЕ: в коде присутствует функция: ProxDetectorS(radius, playerid, targetid); Она проверяет расстояние. Ниже её код. Также говорю зразу. Я сделал недокубик куда телепортирует игрока. По желанию меняем на свой.
(P.S: Размер = 3 + B, U, I , COLOR.)

ProxDetectorS:
PHP:
forward ProxDetectorS(Float:radi, playerid, targetid);
public ProxDetectorS(Float:radi, playerid, targetid)
{
	if(IsPlayerConnected(playerid)&&IsPlayerConnected(targetid))
	{
		new Float:posx, Float:posy, Float:posz;
		new Float:oldposx, Float:oldposy, Float:oldposz;
		new Float:tempposx, Float:tempposy, Float:tempposz;
		GetPlayerPos(playerid, oldposx, oldposy, oldposz);
		GetPlayerPos(targetid, posx, posy, posz);
		tempposx = (oldposx -posx);
		tempposy = (oldposy -posy);
		tempposz = (oldposz -posz);
		if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
		{
			return true;
		}
	}
	return false;
}
Автор: MrJunior(Я).
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу