Jump to content

warpPedIntoVehicle


Recommended Posts

Помогите портировать\реализовать команду из сампа в мта, не получается( Когда в 4 дверной машине занято например 2 пассажирское место то игрока усаживало за 3 и т.д место.

if(strcmp(cmd,"/drag",true)==0) 
    { 
        tmp = strtok(cmdtext, idx); 
        if(!strlen(tmp)) 
        { 
            SendClientMessage(playerid,COLOR_WHITE,"{ff0500}• {ffffff}ИСПОЛЬЗОВАНИЕ: /drag [playerid]"); 
            return true; 
        } 
        if(IsACop(playerid)) 
        { 
            giveplayerid = ReturnUser(tmp); 
            new ta4a = 0; 
            new res; 
            new next = 0; 
            if(PlayerDrag[giveplayerid] == true) 
            { 
                RemovePlayerFromVehicle(giveplayerid); 
                TogglePlayerControllable(giveplayerid, 1); 
                SendClientMessage(playerid,COLOR_WHITE,"{ff0500}• {ffffff}Вы высадили преступника"); 
                format(string, sizeof(string), "* %s вытолкал из автомобиля %s", PlayerName[playerid] ,PlayerName[giveplayerid]); 
                ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); 
                PlayerDrag[giveplayerid] = false; 
                return true; 
            } 
            if(IsPlayerInAnyVehicle(playerid) || IsPlayerInAnyVehicle(giveplayerid)) 
            { 
                SendClientMessage(playerid,COLOR_WHITE,"Вы или тот игрок находитесь уже в тачке"); 
                return true; 
            } 
            if(PlayerCuffed[giveplayerid] > 0) 
            { 
                if(ProxDetectorS(3.0, playerid, giveplayerid)) 
                { 
                    for(new i; i != CAR_AMOUNT; i++) 
                    { 
                        new disto = CheckPlayerDistanceToVehicle(3.0, playerid, i); 
                        if(disto) 
                        { 
                            res = i; 
                            ta4a++; 
                        } 
                    } 
                    if(ta4a == 0) 
                    { 
                        SendClientMessage(playerid,COLOR_LIGHTRED,"Вы не рядом с автомобилем!"); 
                        return true; 
                    } 
                    if(ta4a == 1) 
                    { 
                        for(new i = 1; i < 3; i++) 
                        { 
                            if(next == 0) 
                            { 
                                if(!IsAnyPlayerInVehicle(res,i)) 
                                { 
                                    next = 1; 
                                    PutPlayerInVeh(giveplayerid,res,i); 
                                    TogglePlayerControllable(giveplayerid, 0); 
                                    PlayerDrag[giveplayerid] = true; 
                                    SendClientMessage(giveplayerid,COLOR_LIGHTRED,"Вас насильно затолкали в тачку!"); 
                                    format(string, sizeof(string), "* %s затолкал в автомобиль %s", PlayerName[playerid] ,PlayerName[giveplayerid]); 
                                    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); 
                                } 
                            } 
                        } 
                        if(next == 0) 
                        { 
                            SendClientMessage(playerid,COLOR_LIGHTRED,"В тачке нет свободных мест!"); 
                        } 
                    } 
                    if(ta4a > 1) 
                    { 
                        SendClientMessage(playerid,COLOR_LIGHTRED,"Вокруг вас слишком много автомобилей!"); 
                    } 
                } 
                else 
                { 
                    SendClientMessage(playerid,COLOR_LIGHTRED,"Вы слишком далеко от игрока!"); 
                } 
            } 
            else 
            { 
                SendClientMessage(playerid,COLOR_LIGHTRED,"Игрок не в наручниках!"); 
                return true; 
            } 
        } 
        else 
        { 
            SendClientMessage(playerid,COLOR_LIGHTRED,"Вы не законик!"); 
        } 
        return true; 

Набросал кое-что, но всё равно не работает(

function drag(thePlayer, commandName, target) 
    local targetPlayer, targetPlayerName = exports.global:findPlayerByPartialNick(thePlayer, target) 
    local ta4a = 0 
    local res 
    local next = 0 
    if getElementData(targetPlayer, "playerDrag") == true then 
        removePedFromVehicle(targetPlayer) 
        triggerClientEvent(thePlayer,"addNotification", root, "Вы высадили преступника!", 2) 
        setElementData(targetPlayer, "playerDrag", false) 
        return 
    end 
    local theVehicle = getPedOccupiedVehicle(thePlayer) 
    local theVehicleTarget = getPedOccupiedVehicle(targetPlayer) 
    if theVehicle or theVehicleTarget then 
        triggerClientEvent(thePlayer,"addNotification", root, "Вы или тот игрок находитесь уже в тачке", 3) 
        return 
    end 
    if getElementData(targetPlayer, "restrain") > 0 then 
        local posX , posY , posZ = getElementPosition(thePlayer) 
        local posX2 , posY2 , posZ2 = getElementPosition(targetPlayer) 
        if getDistanceBetweenPoints2D(posX, posY, posX2, posY2) < 3 then 
            for i, value in ipairs(exports.pool:getPoolElementsByType("vehicle")) do 
                local posX , posY , posZ = getElementPosition(thePlayer) 
                local posX2 , posY2 , posZ2 = getElementPosition(value) 
                local disto = getDistanceBetweenPoints2D(posX, posY, posX2, posY2) 
                if getDistanceBetweenPoints2D(posX, posY, posX2, posY2) < 3 then 
                    res = value 
                    ta4a = ta4a + 1 
                end 
            end 
            if ta4a == 0 then 
                triggerClientEvent(thePlayer,"addNotification", root, "Вы или тот игрок находитесь уже в тачке", 3) 
                return 
            end 
            if ta4a == 1 then 
                for i = 0, 3 do 
                    if next == 0 then 
                        if isPedInVehicle(res) then--??? 
                            next = 1 
                            warpPedIntoVehicle(targetPlayer, res, i) 
                            setElementData(targetPlayer, "playerDrag", true) 
                            triggerClientEvent(targetPlayer,"addNotification", root, "Вас насильно затолкали в тачку!", 2) 
                        end  
                    end 
                end 
                if next == 0 then 
                    triggerClientEvent(thePlayer,"addNotification", root, "В тачке нет свободных мест!", 3) 
                end 
            end 
            if ta4a > 1 then 
                triggerClientEvent(thePlayer,"addNotification", root, "Вокруг вас слишком много автомобилей!", 3) 
            end 
        else 
            triggerClientEvent(thePlayer,"addNotification", root, "Вы слишком далеко от игрока!", 3) 
        end 
    else 
        triggerClientEvent(thePlayer,"addNotification", root, "Игрок не в наручниках!", 3) 
        return 
    end 
end 
addCommandHandler("drag", drag)  

Link to comment
addCommandHandler("warp", 
    function(player, _, wPlayer) 
        local warpPlayer = getPlayerByName(wPlayer) 
        if(warpPlayer) then 
            local vehicle = getPedOccupiedVehicle(player) 
            if(vehicle and getPedOccupiedVehicleSeat(player) == 0) then 
                local occupants = getVehicleOccupants(vehicle) 
                local maxPassengers = getVehicleMaxPassengers(vehicle) 
                if(#occupants <= maxPassengers) then 
                    local seatID = 1 
                    for i = 2, maxPassengers do 
                        if(not isElement(occupants[i])) then  
                            seatID = i  
                            break 
                        end 
                    end 
                    warpPedIntoVehicle(vehicle, seatID) 
                else 
                    outputChatBox("В автомобиле нет мест!", player) 
                end 
            else 
                outputChatBox("Вы не в авто или не за рулем", player) 
            end 
        else 
            outputChatBox("Такого игрока нет", player) 
        end 
    end 
) 

Примерно так, адаптируешь под себя.

Edited by Guest
Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...