problemas com TogglePlayerControllable - zBL4CK - 31/01/2021
eae galera blz
bom fiz um sistema de posto de combustivel e quando o player abre o menu apertando H eu seto TogglePlayerControllable(playerid, 0); para ele nao controlar o carro porem quando o player aperta espaço para fechar o menu eu seto TogglePlayerControllable(playerid, 1); porem nao funciona ele ainda continua travado alguem sabe o por que?
Código: public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
if(newkeys == KEY_SPRINT && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { // quando apertar 'H' NO POSTO
if(IsPlayerInRangeOfPoint(playerid, 7, 1939.1224, -1775.5885, 12.9718)) {
TogglePlayerControllable(playerid, 0);
for(new pc; pc != 4; pc++) PlayerTextDrawShow(playerid, PostGas[playerid][pc]);
}
}
if(newkeys == KEY_HANDBRAKE) { // quando apertar 'ESPAÇO' NO POSTO
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) {
TogglePlayerControllable(playerid, 1);
for(new pc; pc != 4; pc++) PlayerTextDrawHide(playerid, PostGas[playerid][pc]);
}
}
return 1;
}
RE: problemas com TogglePlayerControllable - Hatiro - 31/01/2021
Código: public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
if(newkeys == KEY_SPRINT && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { // quando apertar 'H' NO POSTO
if(IsPlayerInRangeOfPoint(playerid, 7, 1939.1224, -1775.5885, 12.9718)) {
TogglePlayerControllable(playerid, 0);
for(new pc; pc != 4; pc++) PlayerTextDrawShow(playerid, PostGas[playerid][pc]);
}
}
else if(newkeys == KEY_HANDBRAKE) { // quando apertar 'ESPAÇO' NO POSTO
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) {
TogglePlayerControllable(playerid, 1);
for(new pc; pc != 4; pc++) PlayerTextDrawHide(playerid, PostGas[playerid][pc]);
}
}
return 1;
}
talvez o if nem tava sendo executado
RE: problemas com TogglePlayerControllable - zBL4CK - 31/01/2021
(31/01/2021 20:25)Hatiro Escreveu: Código: public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
if(newkeys == KEY_SPRINT && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { // quando apertar 'H' NO POSTO
if(IsPlayerInRangeOfPoint(playerid, 7, 1939.1224, -1775.5885, 12.9718)) {
TogglePlayerControllable(playerid, 0);
for(new pc; pc != 4; pc++) PlayerTextDrawShow(playerid, PostGas[playerid][pc]);
}
}
else if(newkeys == KEY_HANDBRAKE) { // quando apertar 'ESPAÇO' NO POSTO
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) {
TogglePlayerControllable(playerid, 1);
for(new pc; pc != 4; pc++) PlayerTextDrawHide(playerid, PostGas[playerid][pc]);
}
}
return 1;
}
talvez o if nem tava sendo executado Nao funcionou mano eu to achando que quando o player ta travado com o TogglePlayerControllable as teclas funfam
RE: problemas com TogglePlayerControllable - Hatiro - 31/01/2021
tenta remover o if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) de quando aperta espaço pra testar
ou faz assim Código: public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
if(newkeys == KEY_SPRINT && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { // quando apertar 'H' NO POSTO
if(IsPlayerInRangeOfPoint(playerid, 7, 1939.1224, -1775.5885, 12.9718)) {
TogglePlayerControllable(playerid, 0);
for(new pc; pc != 4; pc++) PlayerTextDrawShow(playerid, PostGas[playerid][pc]);
}
}
else if(newkeys == KEY_HANDBRAKE) { // quando apertar 'ESPAÇO' NO POSTO
TogglePlayerControllable(playerid, 1);
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) {
for(new pc; pc != 4; pc++) PlayerTextDrawHide(playerid, PostGas[playerid][pc]);
}
}
return 1;
}
se pegar você vai ter que mudar o tipo de detecção
RE: problemas com TogglePlayerControllable - xbruno1000x - 31/01/2021
(31/01/2021 21:57)Hatiro Escreveu: tenta remover o if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) de quando aperta espaço pra testar
ou faz assim
Código: public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
if(newkeys == KEY_SPRINT && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { // quando apertar 'H' NO POSTO
if(IsPlayerInRangeOfPoint(playerid, 7, 1939.1224, -1775.5885, 12.9718)) {
TogglePlayerControllable(playerid, 0);
for(new pc; pc != 4; pc++) PlayerTextDrawShow(playerid, PostGas[playerid][pc]);
}
}
else if(newkeys == KEY_HANDBRAKE) { // quando apertar 'ESPAÇO' NO POSTO
TogglePlayerControllable(playerid, 1);
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) {
for(new pc; pc != 4; pc++) PlayerTextDrawHide(playerid, PostGas[playerid][pc]);
}
}
return 1;
}
se pegar você vai ter que mudar o tipo de detecção
Qual o sentido de usar else if em uma situação onde não está adicionando uma exceção/caminho alternativo? Isso nunca iria funcionar, são teclas distintas, else seria caso o cara quisesse utilizar a mesma tecla para ambas as situações.
Tente o seguinte:
Código: if(newkeys == KEY_HANDBRAKE) { // quando apertar 'ESPAÇO' NO POSTO
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) {
SetTimerEx("Descongelar", 1000, false, "i", playerid);
for(new pc; pc != 4; pc++) PlayerTextDrawHide(playerid, PostGas[playerid][pc]);
Stock para descongelar:
Código: forward Descongelar(playerid);
public Descongelar(playerid)
{
TogglePlayerControllable(playerid, 1);
return 1;
}
|