[Pedido] GetVehiclePos / OnPlayerEnterVehicle
#1

Bem estou tentando fazer com que certa funзгo seja executa se o veнculo estar em tal posiзгo.. Parti de GetVehiclePos, pois ele detecta a posiзгo do veнculo, mas nгo cheguei a um cуdigo final, tentei e parei aqui:

pawn Код:
SendClientMessage(playerid, 0xFFFFFFAA, "Muito bem vamos comeзar o transporte, pegue uma das vans que se encontram no estacionamento.");
             new Float:vehx1, Float:vehy1, Float:vehz1;
             GetVehiclePos(vcrack1, vehx1, vehy1, vehz1);
             if(GetVehiclePos(vcrack1, 197.8399, -243.1895, 1.6034) // ERRO
             {
             SetVehicleParamsForPlayer(vcrack1, playerid, 1, 0);
             }
             
             new Float:vehx2, Float:vehy2, Float:vehz2;
             GetVehiclePos(vcrack2, vehx2, vehy2, vehz2);
             if(GetVehiclePos(vcrack2, 203.6481, -252.7208, 1.6034) // ERRO
             {
             SetVehicleParamsForPlayer(vcrack2, playerid, 1, 0);
             }
             
             new Float:vehx3, Float:vehy3, Float:vehz3;
             GetVehiclePos(vcrack3, vehx3, vehy3, vehz3);
             if(GetVehiclePos(vcrack3, 209.0737, -252.7017, 1.6034) //ERRO
             {
             SetVehicleParamsForPlayer(vcrack3, playerid, 1, 0);
             }
O erro retornado й:

pawn Код:
C:\Users\Erika\Desktop\Servidor\Projeto Serron\filterscripts\DEM.pwn(96) : error 035: argument type mismatch (argument 2)
C:\Users\Erika\Desktop\Servidor\Projeto Serron\filterscripts\DEM.pwn(100) : error 035: argument type mismatch (argument 2)
C:\Users\Erika\Desktop\Servidor\Projeto Serron\filterscripts\DEM.pwn(104) : error 035: argument type mismatch (argument 2)
A linha estб na callback public OnPlayerSelectedMenuRow(playerid, row), pois quero que estes comandos sejam executados apуs o jogador selecionar a opзгo em um menu, se alguйm souber, por favor.

//-------------------------------------------------------------

O segundo problema seria mais uma ajuda do que um pedido, na public OnPlayerEnterVehicle, de fato os cуdigos nгo estгo retornando nenhum erro de compilaзгo, porйm, quando adentro no determinado veнculo especificado na public, nada acontece, nenhuma das funзхes й executada, seja texto, respawn, ou re-set de parвmetro.

pawn Код:
new van;
    van = GetPlayerVehicleID(playerid);
    if(van == vcrack1)
    {
    GameTextForPlayer(playerid,"~w~Pegue as caixas de crack e carregue a van.", 5000, 1);
    SetPlayerCheckpoint(playerid, 204.852279, -233.177963, 1.778618, 5.0);
    SetVehicleParamsForPlayer(vcrack2, playerid, 0, 1);
    SetVehicleParamsForPlayer(vcrack3, playerid, 0, 1);
    SetVehicleToRespawn(vcrack2);
    SetVehicleToRespawn(vcrack3);
    }
Dados adicionais:

pawn Код:
new vcrack1, vcrack2 ,vcrack3;
pawn Код:
//Vans
        vcrack1 = AddStaticVehicleEx(498, 197.8399, -243.1895, 1.6034, -90.0000, -1, -1, -1);
    vcrack2 = AddStaticVehicleEx(498, 203.6481, -252.7208, 1.6034, 0.0000, -1, -1, -1);
    vcrack3 = AddStaticVehicleEx(498, 209.0737, -252.7017, 1.6034, 0.0000, -1, -1, -1);
Considerando que isto й um pedido, se o autor requisitar, seus direitos poderгo ser adicionados no final deste FS.
Obrigado desde jб.
Reply
#2

Sobre a public OnPlayerEnterVehicle ela й executada quando se pressiona a tecla enter ou F, nгo quando entra de fato no veнculo. Aн no seu codigo ele checa o veнculo do player, logo o player nгo estarб em nenhum veнculo no momento da execuзгo da callback.

Sugiro que use OnPlayerStateChange que executa assim que o player Entra/sair de fato de um veнculo.

Sobre os erros, quais as linhas exatamente?
Reply
#3

Grande arakuta, vou estudar sobre essa callback agora mesmo.
As linhas dos erros foram explicitadas no primeiro post.
Reply
#4

pawn Код:
new vcrack[3];
        vcrack[0] = AddStaticVehicleEx(498, 197.8399, -243.1895, 1.6034, -90.0000, -1, -1, -1);
    vcrack[1] = AddStaticVehicleEx(498, 203.6481, -252.7208, 1.6034, 0.0000, -1, -1, -1);
    vcrack[2]= AddStaticVehicleEx(498, 209.0737, -252.7017, 1.6034, 0.0000, -1, -1, -1);
E substitua todo o resto... onder tem vcrack1 por vcrack[0], vcrack2 por vcrack[1] e vcrack3 por vcrack [2];
Testa ai

@EDIT agora que vi...

Faz isso aque (Caso nгo utilizar o jeito que ensinei nesse mesmo post)

pawn Код:
GetVehiclePos(vcrack1, vehx1, vehy1, vehz1);
if(vehx1 == 197.8399 && vehy1 == -243.1895 && vehz1 ==  1.6034
Se fez como eu disse antes, entгo usa vcrack[0] no lugar no vrack1


quando vocк obtem a posiзгo vocк coloca a posiзгo obtida nas varнaveis, entгo й sу compara-las com as posiзхes desejadas... testa ai, abraзos
Reply
#5

Fail

Apesar de na hora da compilaзгo nгo haver erros, os comandos nгo sгo executados, como se a checagem da posiзгo do veнculo acontecesse, porйm, ele em 100% dos casos identifica o veнculo fora da posiзгo original.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)