MrJunior
Компетентный
Здравствуйте вновь. На этот раз уже команда создана для мафиози. А точнее возможно запихнуть человека в багажник.
Перейдём к коду. Сперва ко всем new:
+ нужен
Дальше сама команда:
Предупреждения:
1. В начале в проверке указаны мои id фракции мафий. Измените на своё!
2. Всё баги, вопросы в тему.
ВНИМАНИЕ: в коде присутствует функция: ProxDetectorS(radius, playerid, targetid); Она проверяет расстояние. Ниже её код. Также говорю зразу. Я сделал недокубик куда телепортирует игрока. По желанию меняем на свой. (P.S: Размер = 3 + B, U, I , COLOR.)
ProxDetectorS:
Автор: 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;
}
Последнее редактирование:
