При попытке тпхнуть игрока как пассажира, он тпается на 1 сиденье(всегда)

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

rraggerr

проверенный какой-то
Автор темы
1,626
846
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
CTaskSimpleCarSetPedInAsPassenger* pInTask = GAME->GetTasks()->CreateTaskSimpleCarSetPedInAsPassenger( Vehicle , SF->getSAMP()->getPlayers()->pLocalPlayer->passengerData.byteSeatID /*FIX ME*/ );
                if( pInTask )
                {
                    pInTask->SetIsWarpingPedIntoCar();
                    pInTask->ProcessPed( PEDSELF );
                    pInTask->Destroy();
                }

В данный момент пытаюсь тпхнуть себя, но изначально пробывал других игроков, но разницы нет что там что там
пробывал еще PEDSELF->GetOccupiedSeat(), но результат тот же, первое сидение
 

rraggerr

проверенный какой-то
Автор темы
1,626
846
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

rraggerr

проверенный какой-то
Автор темы
1,626
846
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

Revalto

Известный
532
225
C++:
void tpcar(USHORT vehid, BYTE seatid )
{
BitStream bs;
bs.Write( vehid);
bs.Write( seatid);
g_Raknet->emulateRecvRPC( ScriptRPCEnumeration::RPC_ScrPutPlayerInVehicle, &bs );
};
и нихуя
Вырежи отсюда :D
Код:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();

DWORD carid;


void wait() {
    SF->getSAMP()->sendEnterVehicle(carid, 1);
    BitStream bs;
    bs.ResetWritePointer();
    bs.Write(carid); // обязательно DWORD
    bs.Write((BYTE)1);
    SF->getRakNet()->emulateRecvRPC(ScriptRPCEnumeration::RPC_ScrPutPlayerInVehicle, &bs);
    Sleep(500);
    BitStream vk;
    bs.ResetWritePointer();
    SF->getRakNet()->emulateRecvRPC(ScriptRPCEnumeration::RPC_ScrRemovePlayerFromVehicle, &vk);
    Sleep(500);
    SF->getSAMP()->sendRequestSpawn();
    SF->getSAMP()->getPlayers()->pLocalPlayer->Spawn();
}




void CALLBACK cmd(std::string) {
    for (carid = 1; carid <= 2000; carid++) {
        if (SF->getSAMP()->getVehicles()->iIsListed[carid] != 1) continue;
        if (SF->getSAMP()->getVehicles()->iIsListed2[carid] != 1) continue;
        if (SF->getSAMP()->getVehicles()->pSAMP_Vehicle[carid] == NULL) continue;
        if (SF->getSAMP()->getVehicles()->pSAMP_Vehicle[carid]->pGTA_Vehicle == NULL) continue;
        if (SF->getSAMP()->getVehicles()->pSAMP_Vehicle[carid]->pGTA_Vehicle->door_status == 0) {
            CreateThread(0, 0, (LPTHREAD_START_ROUTINE)wait, 0, 0, 0);
    }
}



void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)  {
        if (GAME == nullptr || GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME ||!SF->getSAMP()->IsInitialized() ) return;
        SF->getSAMP()->registerChatCommand("uncf", cmd);
        init = true;
    }
}


BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
    case DLL_PROCESS_ATTACH: SF->initPlugin(mainloop, hModule); break;
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
 

jenekbueno

Известный
157
69
только вчера кореш тоже самое просил
C++:
void MOTYA_CLEO___036A_put_actor_in_car(int vehicle_id, int seat_id)
{
    if (vehicle_id < NULL || vehicle_id >= SAMP_MAX_VEHICLES)
        return;
    if (SF->getSAMP()->getVehicles()->iIsListed[vehicle_id] != TRUE)
        return;
    if (SF->getSAMP()->getVehicles()->pGTA_Vehicle[vehicle_id] == nullptr)
        return;
    // сверху проверки шоб не крашнуло, и кстати их мало
 
    vehicle_info        *pVehicleInfo = SF->getSAMP()->getVehicles()->pGTA_Vehicle[vehicle_id];
    CVehicle            *pVehicle = GAME->GetPools()->GetVehicle((DWORD *)pVehicleInfo);
 
    if (pVehicle)
    {
        if (seat_id == NULL)
        {
            CTaskSimpleCarSetPedInAsDriver *pInTask = GAME->GetTasks()->CreateTaskSimpleCarSetPedInAsDriver(pVehicle);
            if (pInTask)
            {
                pInTask->SetIsWarpingPedIntoCar();
                pInTask->ProcessPed(PEDSELF);
                pInTask->Destroy();
            }
        }
        else
        {
            CTaskSimpleCarSetPedInAsPassenger* pInTask = GAME->GetTasks()->CreateTaskSimpleCarSetPedInAsPassenger(pVehicle, seat_id);
            if (pInTask)
            {
                pInTask->SetIsWarpingPedIntoCar();
                pInTask->ProcessPed(PEDSELF);
                pInTask->Destroy();
            }
        }
 
        GAME->GetCamera()->RestoreWithJumpCut();
    }
}
 
 
void CALLBACK MOTYA_CLEO_COMANDA_SAMP(std::string text)
{
    int vehicle_id = -1; // обьявили переменную и задали ей число минус один
    sscanf(text.c_str(), "%d", &vehicle_id); // попытаемся получить число из строки
 
    MOTYA_CLEO___036A_put_actor_in_car(vehicle_id, 1); // вызываем (ВНИМАНИЕ) АПКОД! передаем туда ид машины и ид места
}
 
Статус
В этой теме нельзя размещать новые ответы.