[AJUDA] Entra e sai rapidamente do interior das casas
#1

Ola todos eu estou com um problema que vem me incomodando a tempos, que e quando eu entro no interior das minhas casas algumas vezes ele acaba saindo rapidamente, e como meu sistema de casas e com VirtualWorld o player acaba bugando do lado de fora com o VirtualWorld setado como se estive-se dentro do interior da casa.

Eu jб pesquisei por tudo mais nada que ajuda-se.
Reply
#2

pawn Код:
#define MAXPLAYERS 50 // Define a quantidade de players configurados para entrar em seu servidor
pawn Код:
new ForadeCasa[MAXPLAYERS]; // Defina como variбvel global 'ForadeCasa'
pawn Код:
ForadeCasa[playerid] = 1; // Quando ele tiver fora de casa
pawn Код:
ForadeCasa[playerid] = 0; // Quando ele tiver em um interior
SetPlayerVirtualWorld(playerid, 1); // Quando ele tiver em algum interior, sete o 1 para o VW que deseja.
pawn Код:
if(ForadeCasa[playerid] == 1)
{
     SetPlayerVirtualWorld(playerid, 0); // Quando ele tiver em um interior
     return 1;
}
else
{
     SetPlayerVirtualWorld(playerid, 1); // Quando ele tiver em algum interior, sete o 1 para o VW que deseja.
     return 1;
}
Reply
#3

Acredito que a soluзгo a cima seja apenas um 'tapa' buracos, e a melhor maneira seria vocк postar o seu /entrar e /sair, ai podemos resolver seu problema sem ficar colocando coisas inъteis no GM.
Reply
#4

Bom meu /entrar /sair e este:
pawn Код:
if(strcmp(cmd, "/entrar", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(GetPlayerState(playerid) == 1) TeleportParaInteriores(playerid);
            for(new i = 0; i < sizeof(HouseInfo); i++)
            {
                if (PlayerToPoint(3, playerid,HouseInfo[i][hEntrancex], HouseInfo[i][hEntrancey], HouseInfo[i][hEntrancez]))
                {
                    //printf("Found House :%d",i);
                    if(PlayerInfo[playerid][pPhousekey] == i || HouseInfo[i][hLock] == 0)
                    {
                        new OldWorld = GetPlayerVirtualWorld(playerid);
                        new NewWorld;
                        SetPlayerInterior(playerid,HouseInfo[i][hInt]);
                        SetPlayerVirtualWorld(playerid,HouseInfo[i][hWorld]);
                        SetPlayerPos(playerid,HouseInfo[i][hExitx],HouseInfo[i][hExity],HouseInfo[i][hExitz]);
                        GameTextForPlayer(playerid, "~w~Bem Vindo Em casa", 5000, 1);
                        PlayerInfo[playerid][pInt] = HouseInfo[i][hInt];
                        PlayerInfo[playerid][pLocal] = i;
                        TaNaCasa[playerid] = i;
                        NewWorld = GetPlayerVirtualWorld(playerid);
                        format(string, sizeof(string), "DEBUG: seu world foi mudado de: %d para: %d.", OldWorld,NewWorld);
                        SendClientMessage(playerid, COLOR_GREY, string);
                    }
                    else
                    {
                        GameTextForPlayer(playerid, "~r~Trancado", 5000, 1);
                    }
                }
            }
            for(new i = 0; i < sizeof(BizzInfo); i++)
            {
                if (PlayerToPoint(3, playerid,BizzInfo[i][bEntranceX], BizzInfo[i][bEntranceY], BizzInfo[i][bEntranceZ]))
                {
                    //printf("Found House :%d",i);
                    if(!Policiais(playerid) && i == 3)
                    {
                        SendClientMessage(playerid, COLOR_GREY, "   Sao apenas policiais !");
                        return 1;
                    }
                    if(PlayerInfo[playerid][pPbiskey] == i || GetPlayerMoneyEx(playerid) >= BizzInfo[i][bEntranceCost])
                    {
                        if(PlayerInfo[playerid][pPbiskey] != i)
                        {
                            if(BizzInfo[i][bLocked] == 1)
                            {
                                GameTextForPlayer(playerid, "~r~Fechado", 5000, 1);
                                return 1;
                            }
                            GivePlayerMoneyEx(playerid,-BizzInfo[i][bEntranceCost]);
                            format(string, sizeof(string), "~r~-$%d~n~~w~Digite /sair~n~para sair", BizzInfo[i][bEntranceCost]);
                            BizzInfo[i][bTill] += BizzInfo[i][bEntranceCost];
                            ExtortionBiz(i, BizzInfo[i][bEntranceCost]);
                            OnPropUpdate();
                            GameTextForPlayer(playerid, string, 5000, 3);
                        }
                        SetPlayerInterior(playerid,BizzInfo[i][bInterior]);
                        SetPlayerPos(playerid,BizzInfo[i][bExitX],BizzInfo[i][bExitY],BizzInfo[i][bExitZ]);
                        PlayerInfo[playerid][pInt] = BizzInfo[i][bInterior];
                        PlayerInfo[playerid][pLocal] = i+99;
                        new dood[MAX_PLAYER_NAME];
                        GetPlayerName(playerid, dood, sizeof(dood));
                        format(string, sizeof(string), "%s pagar $%d para entrar na empresa %d", dood, BizzInfo[i][bEntranceCost], i);
                        printf("%s", string);
                        PayLog(string);
                        //PlayerInfo[playerid][pLocal] = i;
                    }
                    else
                    {
                        GameTextForPlayer(playerid, "~r~Voce nao tem dinheiro", 5000, 1);
                    }
                }
            }
            for(new i = 0; i < sizeof(SBizzInfo); i++)
            {
                if (PlayerToPoint(3, playerid,SBizzInfo[i][sbEntranceX], SBizzInfo[i][sbEntranceY], SBizzInfo[i][sbEntranceZ]))
                {
                    if(PlayerInfo[playerid][pPbiskey] == i || GetPlayerMoneyEx(playerid) >= SBizzInfo[i][sbEntranceCost])
                    {
                        if(PlayerInfo[playerid][pPbiskey] != i)
                        {
                            if(SBizzInfo[i][sbLocked] == 1)
                            {
                                GameTextForPlayer(playerid, "~r~Fechado", 5000, 1);
                                return 1;
                            }
                            if(i == 10)
                            {
                                PaintballPlayers ++;
                                PlayerPaintballing[playerid] = 1;
                                new rand = random(sizeof(PaintballSpawns));
                                SetPlayerPos(playerid, PaintballSpawns[rand][0], PaintballSpawns[rand][1], PaintballSpawns[rand][2]);
                                TogglePlayerControllable(playerid, 0);
                            }
                            else if(i == 11)
                            {
                                PlayerKarting[playerid] = 1;
                                SendClientMessage(playerid, TEAM_GROVE_COLOR, "Vocк й o novo participate da corida de kart, va a linha de saida");
                            }
                            else
                            {
                                return 1;
                            }
                            GivePlayerMoneyEx(playerid,-SBizzInfo[i][sbEntranceCost]);
                            gSpentCash[playerid] = GetPlayerMoneyEx(playerid);
                            SBizzInfo[i][sbProducts]--;
                            SBizzInfo[i][sbTill] += SBizzInfo[i][sbEntranceCost];
                            ExtortionSBiz(i, SBizzInfo[i][sbEntranceCost]);
                            new dood[MAX_PLAYER_NAME];
                            GetPlayerName(playerid, dood, sizeof(dood));
                            format(string, sizeof(string), "%s pagar $%d para entrar na empresa %d", dood, SBizzInfo[i][sbEntranceCost], i);
                            printf("%s", string);
                            PayLog(string);
                            OnPropUpdate();
                        }
                    }
                    else
                    {
                        GameTextForPlayer(playerid, "~r~Voce nao tem dinheiro", 5000, 1);
                    }
                }
            }
            for(new i = 0; i < sizeof(HQOrg); i++)
            {
                if (PlayerToPoint(1, playerid,HQOrg[i][hqInteriorex], HQOrg[i][hqInteriorey], HQOrg[i][hqInteriorez]))
                {
                    if(HQOrg[i][hqLock] == 0)
                    {
                        SetPlayerInterior(playerid,HQOrg[i][hqInt]);
                        SetPlayerPos(playerid,HQOrg[i][hqInteriorx],HQOrg[i][hqInteriory],HQOrg[i][hqInteriorz]);
                        PlayerInfo[playerid][pInt] = HQOrg[i][hqInt];
                        PlayerInfo[playerid][pLocal] = i+900;
                        SetPlayerVirtualWorld(playerid,HQOrg[i][hqWorld]+900);
                        TaNaHQ[playerid] = i;
                    }
                    else
                    {
                        GameTextForPlayer(playerid, "~r~Porta da Hq Fechada", 5000, 1);
                    }
                }
            }
            if (PlayerToPoint(3.0, playerid,1073.0619,-344.5148,73.9922))
            {
                if(PlayerInfo[playerid][pMember] == 8 || PlayerInfo[playerid][pLeader] == 8)
                {
                    SetPlayerInterior(playerid,2);
                    SetPlayerPos(playerid,1205.0947,-10.1685,1000.9219);
                    PlayerInfo[playerid][pInt] = 2;
                    PlayerInfo[playerid][pLocal] = 242;
                }
            }
            else if (PlayerToPoint(3.0, playerid,2695.6235,-1704.6960,11.8438))
            {
                GameTextForPlayer(playerid, "~w~Bem vindo ao 8ball Track", 5000, 1);
                SetPlayerInterior(playerid,7);
                SetPlayerPos(playerid,-1404.5299,-259.0602,1043.6563);
            }
            else if (PlayerToPoint(8.0, playerid,-2111.5686,-443.9720,38.7344))
            {
                GameTextForPlayer(playerid, "~w~Bem vindo ao Dirt Track", 5000, 1);
                SetPlayerInterior(playerid,4);
                SetPlayerPos(playerid,-1443.0554,-581.1879,1055.0472);
            }
            else if (PlayerToPoint(8.0, playerid,-2080.3079,-406.0309,38.7344))
            {
                GameTextForPlayer(playerid, "~w~Bem vindo ao Stunting Track", 5000, 1);
                SetPlayerInterior(playerid,14);
                SetPlayerPos(playerid,-1464.7732,1557.5533,1052.5313);
            }
            else if (PlayerToPoint(1.0, playerid,1086.5247,-1234.9617,15.8203))
            {
                if(PlayerInfo[playerid][pPbiskey] != 102 && SBizzInfo[2][sbLocked] == 1)
                {
                    GameTextForPlayer(playerid, "~r~Fechado", 5000, 1);
                    return 1;
                }
                if(PlayerInfo[playerid][pPbiskey] == 102)
                {
                    KillTimer(TimerPortasBancoLS);
                    APortasBancoLS();
                    TimerPortasBancoLS = SetTimer("FPortasBancoLS", 7000, 0);
                }
                else
                {
                    KillTimer(TimerPortasBancoLS);
                    APortasBancoLS();
                    TimerPortasBancoLS = SetTimer("FPortasBancoLS", 7000, 0);
                    GivePlayerMoneyEx(playerid,-SBizzInfo[2][sbEntranceCost]);
                    format(string, sizeof(string), "~r~-R$%d", SBizzInfo[2][sbEntranceCost]);
                    GameTextForPlayer(playerid, string, 5000, 1);
                    gSpentCash[playerid] = GetPlayerMoneyEx(playerid);
                    SBizzInfo[2][sbTill] += SBizzInfo[2][sbEntranceCost];
                    ExtortionSBiz(2, SBizzInfo[2][sbEntranceCost]);
                    new dood[MAX_PLAYER_NAME];
                    GetPlayerName(playerid, dood, sizeof(dood));
                    format(string, sizeof(string), "%s pagar $%d para entrar na empresa %d", dood, SBizzInfo[2][sbEntranceCost], 2);
                    printf("%s", string);
                    PayLog(string);
                    OnPropUpdate();
                }
            }
        }
        return 1;
    }
    if(strcmp(cmd, "/sair", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            for(new i = 0; i <  sizeof(HouseInfo); i++)
            {
                if (PlayerToPoint(3, playerid,HouseInfo[i][hExitx], HouseInfo[i][hExity], HouseInfo[i][hExitz]))
                {
                    if(TaNaCasa[playerid] == i)
                    {
                        new OldWorld = GetPlayerVirtualWorld(playerid);
                        new NewWorld;
                        SetPlayerInterior(playerid,0);
                        SetPlayerVirtualWorld(playerid,0);
                        SetPlayerPos(playerid,HouseInfo[i][hEntrancex],HouseInfo[i][hEntrancey],HouseInfo[i][hEntrancez]);
                        PlayerInfo[playerid][pInt] = 0;
                        SetPlayerVirtualWorld(playerid,0);
                        PlayerInfo[playerid][pLocal] = 255;
                        TaNaCasa[playerid] = 255;
                        if(HouseInfo[i][hHel] == 1)
                        {
                            new Float:tempheal;
                            GetPlayerHealth(playerid,tempheal);
                            if(tempheal < 100.0)
                            {
                                SetPlayerHealth(playerid,100.0);
                            }
                        }
                        NewWorld = GetPlayerVirtualWorld(playerid);
                        format(string, sizeof(string), "DEBUG: seu world foi mudado de: %d para: %d.", OldWorld,NewWorld);
                        SendClientMessage(playerid, COLOR_GREY, string);
                        return 1;
                    }
                }
            }
            for(new i = 0; i <  sizeof(BizzInfo); i++)
            {
                //printf("Bizz :%d",i);
                if (PlayerToPoint(3, playerid,BizzInfo[i][bExitX], BizzInfo[i][bExitY], BizzInfo[i][bExitZ]))
                {
                    SetPlayerInterior(playerid,0);
                    PlayerInfo[playerid][pInt] = 0;
                    SetPlayerPos(playerid,BizzInfo[i][bEntranceX],BizzInfo[i][bEntranceY],BizzInfo[i][bEntranceZ]);
                    PlayerInfo[playerid][pLocal] = 255;
                }
            }
            if(GetPlayerVehicleID(playerid) >= 71 && GetPlayerVehicleID(playerid) <= 77)
            {
                TogglePlayerControllable(playerid, 1);
                RemovePlayerFromVehicle(playerid);
            }
            else if (PlayerToPoint(6.0, playerid,-1404.5299,-259.0602,1043.6563))
            {
                SetPlayerInterior(playerid,0);
                SetPlayerPos(playerid,2695.6235,-1704.6960,11.8438);
            }
            else if (PlayerToPoint(8.0, playerid,-1443.0554,-581.1879,1055.0472))
            {
                SetPlayerInterior(playerid,0);
                SetPlayerPos(playerid,-2111.5686,-443.9720,38.7344);
            }
            else if (PlayerToPoint(8.0, playerid,-1464.7732,1557.5533,1052.5313))
            {
                SetPlayerInterior(playerid,0);
                SetPlayerPos(playerid,-2080.3079,-406.0309,38.7344);
            }
            else if (PlayerToPoint(1.0, playerid,1086.5479,-1237.4865,16.1183))
            {
                KillTimer(TimerPortasBancoLS);
                APortasBancoLS();
                TimerPortasBancoLS = SetTimer("FPortasBancoLS", 7000, 0);
            }
            else if(NoFuel[playerid] == 1)
            {
                TogglePlayerControllable(playerid, 1);
                RemovePlayerFromVehicle(playerid);
                NoFuel[playerid] = 0;
            }
        }
        return 1;
    }
bom meu GameMode e feito a partir do GF jб esta com 40 mil linhas mais eu nгo consigo arruma este bug, espero que alguйm me ajude ^^
Reply
#5

Deve estar entrando em conflito com outras funзхes, mas antes de ver isso tente:
Coloque:
pawn Код:
SetPlayerPos // primeiro
SetPlayerInterior // depois
SetPlayerVirtualWorld // depois
Pode ser que esteja entrando em conflito com outra funзгo que faзa a pessoa sair do interior, exemplo, uma funзгo para a pessoa sair do interior se ela estiver perto da porta.

Exemplo:

Code coloca o player na coordenada da porta de entrada da casa, a mesma й a porta de saнda, dai como a entrada e saнda й automбtica vai tirar a pessoa do interior.
Reply
#6

Ok vou tentar aviso se funcionar ou nгo funcionar
Reply
#7

Quote:
Originally Posted by Victor Cesaroni
Посмотреть сообщение
Deve estar entrando em conflito com outras funзхes, mas antes de ver isso tente:
Coloque:
pawn Код:
SetPlayerPos // primeiro
SetPlayerInterior // depois
SetPlayerVirtualWorld // depois
Pode ser que esteja entrando em conflito com outra funзгo que faзa a pessoa sair do interior, exemplo, uma funзгo para a pessoa sair do interior se ela estiver perto da porta.

Exemplo:

Code coloca o player na coordenada da porta de entrada da casa, a mesma й a porta de saнda, dai como a entrada e saнda й automбtica vai tirar a pessoa do interior.
Olha mesmo mudando a ordem nгo mudou em nada, continua a sair, eu dei uma procurar e nгo achei nada que possa estar dando conflito com o /entrar, mais eu me pergunto porque ele sai? eu tenho uma hipуtese que ele sai porque da uma pequena travada na hora que eu entro no interior mais o motivo por que sai quando isso acontece eu nгo sei.

Ps: vou gravar um vнdeo pra ficar mais claro qual e o bug.

Edit:
Aqui esta o vнdeo: [ame]http://www.youtube.com/watch?v=QuPD-HiFuK4[/ame]
reparem que eu aperto "F" para entrar na casa e acabo saindo quase que na mesma hora mais fico com o VirtualWorld setado como se estive-se la dentro.
Reply
#8

entao o problema esta no 'F'
bota isso
pawn Код:
public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
{
    if(newkeys == 16)
    {
        OnPlayerCommandText(playerid,"/entrar");
        OnPlayerCommandText(playerid,"/sair");
    }
    return 1;
}
Reply
#9

host bom й outra coisa nй...
tenta isso aki
pawn Код:
if(strcmp(cmd, "/entrar", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(GetPlayerState(playerid) == 1) TeleportParaInteriores(playerid);
            for(new i = 0; i < sizeof(HouseInfo); i++)
            {
                if (PlayerToPoint(3, playerid,HouseInfo[i][hEntrancex], HouseInfo[i][hEntrancey], HouseInfo[i][hEntrancez]))
                {
                    //printf("Found House :%d",i);
                    if(PlayerInfo[playerid][pPhousekey] == i || HouseInfo[i][hLock] == 0)
                    {
                        new OldWorld = GetPlayerVirtualWorld(playerid);
                        new NewWorld;
                        SetPlayerInterior(playerid,HouseInfo[i][hInt]);
                        SetPlayerVirtualWorld(playerid,HouseInfo[i][hWorld]);
                        SetPlayerPos(playerid,HouseInfo[i][hExitx],HouseInfo[i][hExity],HouseInfo[i][hExitz]+4.0);
                        GameTextForPlayer(playerid, "~w~Bem Vindo Em casa", 5000, 1);
                        PlayerInfo[playerid][pInt] = HouseInfo[i][hInt];
                        PlayerInfo[playerid][pLocal] = i;
                        NewWorld = GetPlayerVirtualWorld(playerid);
                        format(string, sizeof(string), "DEBUG: seu world foi mudado de: %d para: %d.", OldWorld,NewWorld);
                        SendClientMessage(playerid, COLOR_GREY, string);
                    }
                    else
                    {
                        GameTextForPlayer(playerid, "~r~Trancado", 5000, 1);
                    }
                }
            }
            for(new i = 0; i < sizeof(BizzInfo); i++)
            {
                if (PlayerToPoint(3, playerid,BizzInfo[i][bEntranceX], BizzInfo[i][bEntranceY], BizzInfo[i][bEntranceZ]))
                {
                    //printf("Found House :%d",i);
                    if(!Policiais(playerid) && i == 3)
                    {
                        SendClientMessage(playerid, COLOR_GREY, "   Sao apenas policiais !");
                        return 1;
                    }
                    if(PlayerInfo[playerid][pPbiskey] == i || GetPlayerMoneyEx(playerid) >= BizzInfo[i][bEntranceCost])
                    {
                        if(PlayerInfo[playerid][pPbiskey] != i)
                        {
                            if(BizzInfo[i][bLocked] == 1)
                            {
                                GameTextForPlayer(playerid, "~r~Fechado", 5000, 1);
                                return 1;
                            }
                            GivePlayerMoneyEx(playerid,-BizzInfo[i][bEntranceCost]);
                            format(string, sizeof(string), "~r~-$%d~n~~w~Digite /sair~n~para sair", BizzInfo[i][bEntranceCost]);
                            BizzInfo[i][bTill] += BizzInfo[i][bEntranceCost];
                            ExtortionBiz(i, BizzInfo[i][bEntranceCost]);
                            OnPropUpdate();
                            GameTextForPlayer(playerid, string, 5000, 3);
                        }
                        SetPlayerInterior(playerid,BizzInfo[i][bInterior]);
                        SetPlayerPos(playerid,BizzInfo[i][bExitX],BizzInfo[i][bExitY],BizzInfo[i][bExitZ]);
                        PlayerInfo[playerid][pInt] = BizzInfo[i][bInterior];
                        PlayerInfo[playerid][pLocal] = i+99;
                        new dood[MAX_PLAYER_NAME];
                        GetPlayerName(playerid, dood, sizeof(dood));
                        format(string, sizeof(string), "%s pagar $%d para entrar na empresa %d", dood, BizzInfo[i][bEntranceCost], i);
                        printf("%s", string);
                        PayLog(string);
                        //PlayerInfo[playerid][pLocal] = i;
                    }
                    else
                    {
                        GameTextForPlayer(playerid, "~r~Voce nao tem dinheiro", 5000, 1);
                    }
                }
            }
            for(new i = 0; i < sizeof(SBizzInfo); i++)
            {
                if (PlayerToPoint(3, playerid,SBizzInfo[i][sbEntranceX], SBizzInfo[i][sbEntranceY], SBizzInfo[i][sbEntranceZ]))
                {
                    if(PlayerInfo[playerid][pPbiskey] == i || GetPlayerMoneyEx(playerid) >= SBizzInfo[i][sbEntranceCost])
                    {
                        if(PlayerInfo[playerid][pPbiskey] != i)
                        {
                            if(SBizzInfo[i][sbLocked] == 1)
                            {
                                GameTextForPlayer(playerid, "~r~Fechado", 5000, 1);
                                return 1;
                            }
                            if(i == 10)
                            {
                                PaintballPlayers ++;
                                PlayerPaintballing[playerid] = 1;
                                new rand = random(sizeof(PaintballSpawns));
                                SetPlayerPos(playerid, PaintballSpawns[rand][0], PaintballSpawns[rand][1], PaintballSpawns[rand][2]);
                                TogglePlayerControllable(playerid, 0);
                            }
                            else if(i == 11)
                            {
                                PlayerKarting[playerid] = 1;
                                SendClientMessage(playerid, TEAM_GROVE_COLOR, "Vocк й o novo participate da corida de kart, va a linha de saida");
                            }
                            else
                            {
                                return 1;
                            }
                            GivePlayerMoneyEx(playerid,-SBizzInfo[i][sbEntranceCost]);
                            gSpentCash[playerid] = GetPlayerMoneyEx(playerid);
                            SBizzInfo[i][sbProducts]--;
                            SBizzInfo[i][sbTill] += SBizzInfo[i][sbEntranceCost];
                            ExtortionSBiz(i, SBizzInfo[i][sbEntranceCost]);
                            new dood[MAX_PLAYER_NAME];
                            GetPlayerName(playerid, dood, sizeof(dood));
                            format(string, sizeof(string), "%s pagar $%d para entrar na empresa %d", dood, SBizzInfo[i][sbEntranceCost], i);
                            printf("%s", string);
                            PayLog(string);
                            OnPropUpdate();
                        }
                    }
                    else
                    {
                        GameTextForPlayer(playerid, "~r~Voce nao tem dinheiro", 5000, 1);
                    }
                }
            }
            for(new i = 0; i < sizeof(HQOrg); i++)
            {
                if (PlayerToPoint(1, playerid,HQOrg[i][hqInteriorex], HQOrg[i][hqInteriorey], HQOrg[i][hqInteriorez]))
                {
                    if(HQOrg[i][hqLock] == 0)
                    {
                        SetPlayerInterior(playerid,HQOrg[i][hqInt]);
                        SetPlayerPos(playerid,HQOrg[i][hqInteriorx],HQOrg[i][hqInteriory],HQOrg[i][hqInteriorz]);
                        PlayerInfo[playerid][pInt] = HQOrg[i][hqInt];
                        PlayerInfo[playerid][pLocal] = i+900;
                        SetPlayerVirtualWorld(playerid,HQOrg[i][hqWorld]+900);
                        TaNaHQ[playerid] = i;
                    }
                    else
                    {
                        GameTextForPlayer(playerid, "~r~Porta da Hq Fechada", 5000, 1);
                    }
                }
            }
            if (PlayerToPoint(3.0, playerid,1073.0619,-344.5148,73.9922))
            {
                if(PlayerInfo[playerid][pMember] == 8 || PlayerInfo[playerid][pLeader] == 8)
                {
                    SetPlayerInterior(playerid,2);
                    SetPlayerPos(playerid,1205.0947,-10.1685,1000.9219);
                    PlayerInfo[playerid][pInt] = 2;
                    PlayerInfo[playerid][pLocal] = 242;
                }
            }
            else if (PlayerToPoint(3.0, playerid,2695.6235,-1704.6960,11.8438))
            {
                GameTextForPlayer(playerid, "~w~Bem vindo ao 8ball Track", 5000, 1);
                SetPlayerInterior(playerid,7);
                SetPlayerPos(playerid,-1404.5299,-259.0602,1043.6563);
            }
            else if (PlayerToPoint(8.0, playerid,-2111.5686,-443.9720,38.7344))
            {
                GameTextForPlayer(playerid, "~w~Bem vindo ao Dirt Track", 5000, 1);
                SetPlayerInterior(playerid,4);
                SetPlayerPos(playerid,-1443.0554,-581.1879,1055.0472);
            }
            else if (PlayerToPoint(8.0, playerid,-2080.3079,-406.0309,38.7344))
            {
                GameTextForPlayer(playerid, "~w~Bem vindo ao Stunting Track", 5000, 1);
                SetPlayerInterior(playerid,14);
                SetPlayerPos(playerid,-1464.7732,1557.5533,1052.5313);
            }
            else if (PlayerToPoint(1.0, playerid,1086.5247,-1234.9617,15.8203))
            {
                if(PlayerInfo[playerid][pPbiskey] != 102 && SBizzInfo[2][sbLocked] == 1)
                {
                    GameTextForPlayer(playerid, "~r~Fechado", 5000, 1);
                    return 1;
                }
                if(PlayerInfo[playerid][pPbiskey] == 102)
                {
                    KillTimer(TimerPortasBancoLS);
                    APortasBancoLS();
                    TimerPortasBancoLS = SetTimer("FPortasBancoLS", 7000, 0);
                }
                else
                {
                    KillTimer(TimerPortasBancoLS);
                    APortasBancoLS();
                    TimerPortasBancoLS = SetTimer("FPortasBancoLS", 7000, 0);
                    GivePlayerMoneyEx(playerid,-SBizzInfo[2][sbEntranceCost]);
                    format(string, sizeof(string), "~r~-R$%d", SBizzInfo[2][sbEntranceCost]);
                    GameTextForPlayer(playerid, string, 5000, 1);
                    gSpentCash[playerid] = GetPlayerMoneyEx(playerid);
                    SBizzInfo[2][sbTill] += SBizzInfo[2][sbEntranceCost];
                    ExtortionSBiz(2, SBizzInfo[2][sbEntranceCost]);
                    new dood[MAX_PLAYER_NAME];
                    GetPlayerName(playerid, dood, sizeof(dood));
                    format(string, sizeof(string), "%s pagar $%d para entrar na empresa %d", dood, SBizzInfo[2][sbEntranceCost], 2);
                    printf("%s", string);
                    PayLog(string);
                    OnPropUpdate();
                }
            }
        }
        return 1;
    }
    if(strcmp(cmd, "/sair", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            for(new i = 0; i <  sizeof(HouseInfo); i++)
            {
                if (PlayerToPoint(1, playerid,HouseInfo[i][hExitx], HouseInfo[i][hExity], HouseInfo[i][hExitz]))
                {
                    new OldWorld = GetPlayerVirtualWorld(playerid);
                    new NewWorld;
                    SetPlayerInterior(playerid,0);
                    SetPlayerVirtualWorld(playerid,0);
                    SetPlayerPos(playerid,HouseInfo[i][hEntrancex],HouseInfo[i][hEntrancey],HouseInfo[i][hEntrancez]);
                    PlayerInfo[playerid][pInt] = 0;
                    SetPlayerVirtualWorld(playerid,0);
                    PlayerInfo[playerid][pLocal] = 255;
                    if(HouseInfo[i][hHel] == 1)
                    {
                        new Float:tempheal;
                        GetPlayerHealth(playerid,tempheal);
                        if(tempheal < 100.0)
                        {
                            SetPlayerHealth(playerid,100.0);
                        }
                    }
                    NewWorld = GetPlayerVirtualWorld(playerid);
                    format(string, sizeof(string), "DEBUG: seu world foi mudado de: %d para: %d.", OldWorld,NewWorld);
                    SendClientMessage(playerid, COLOR_GREY, string);
                    return 1;
                }
            }
            for(new i = 0; i <  sizeof(BizzInfo); i++)
            {
                //printf("Bizz :%d",i);
                if (PlayerToPoint(3, playerid,BizzInfo[i][bExitX], BizzInfo[i][bExitY], BizzInfo[i][bExitZ]))
                {
                    SetPlayerInterior(playerid,0);
                    PlayerInfo[playerid][pInt] = 0;
                    SetPlayerPos(playerid,BizzInfo[i][bEntranceX],BizzInfo[i][bEntranceY],BizzInfo[i][bEntranceZ]);
                    PlayerInfo[playerid][pLocal] = 255;
                }
            }
            if(GetPlayerVehicleID(playerid) >= 71 && GetPlayerVehicleID(playerid) <= 77)
            {
                TogglePlayerControllable(playerid, 1);
                RemovePlayerFromVehicle(playerid);
            }
            else if (PlayerToPoint(6.0, playerid,-1404.5299,-259.0602,1043.6563))
            {
                SetPlayerInterior(playerid,0);
                SetPlayerPos(playerid,2695.6235,-1704.6960,11.8438);
            }
            else if (PlayerToPoint(8.0, playerid,-1443.0554,-581.1879,1055.0472))
            {
                SetPlayerInterior(playerid,0);
                SetPlayerPos(playerid,-2111.5686,-443.9720,38.7344);
            }
            else if (PlayerToPoint(8.0, playerid,-1464.7732,1557.5533,1052.5313))
            {
                SetPlayerInterior(playerid,0);
                SetPlayerPos(playerid,-2080.3079,-406.0309,38.7344);
            }
            else if (PlayerToPoint(1.0, playerid,1086.5479,-1237.4865,16.1183))
            {
                KillTimer(TimerPortasBancoLS);
                APortasBancoLS();
                TimerPortasBancoLS = SetTimer("FPortasBancoLS", 7000, 0);
            }
            else if(NoFuel[playerid] == 1)
            {
                TogglePlayerControllable(playerid, 1);
                RemovePlayerFromVehicle(playerid);
                NoFuel[playerid] = 0;
            }
        }
        return 1;
    }
Reply
#10

Quote:
Originally Posted by Vai_Besta
Посмотреть сообщение
entao o problema esta no 'F'
bota isso
pawn Код:
public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
{
    if(newkeys == 16)
    {
        OnPlayerCommandText(playerid,"/entrar");
        OnPlayerCommandText(playerid,"/sair");
    }
    return 1;
}
olha meu 'F' e parecido mais ele que verifica se esta no carro ou nгo.
pawn Код:
if(!IsPlayerInAnyVehicle(playerid) && newkeys == KEY_SECONDARY_ATTACK)
    {
        OnPlayerCommandText(playerid, "/elevador"); //Elevador
        OnPlayerCommandText(playerid, "/infohq"); //InfoHQ
        OnPlayerCommandText(playerid, "/entrar");
        OnPlayerCommandText(playerid, "/sair");
        OnPlayerCommandText(playerid, "/sairhq");
        if(PlayerToPoint(1, playerid,361.1669,175.8103,1008.3828))
        {
            OnPlayerCommandText(playerid, "/licencas");
        }
        if(PlayerToPoint(1, playerid,361.1525,171.3832,1008.3828))
        {
            OnPlayerCommandText(playerid, "/empregos");
        }
        if(LocalAutorizacao(playerid))
        {
            OnPlayerCommandText(playerid, "/autorizacao");
        }
        if(PlayerToPoint(1,playerid,2177.1448,1619.1744,999.9766))
        {
            ShowPlayerDialog(playerid, DIALOGLARMAS, DIALOG_STYLE_LIST,"Armas!", "Eagle\r\nMP5\r\nAK-47\r\nM4\r\nShotGun\r\nKit-Vip", "Selecionar", "Cancelar");
        }
        if(PlayerToPoint(1,playerid,295.8839,-38.3344,1001.5156))
        {
            ShowPlayerDialog(playerid, DIALOGLARMAS, DIALOG_STYLE_LIST,"Armas!", "Eagle\r\nMP5\r\nAK-47\r\nM4\r\nShotGun\r\nKit-Vip", "Selecionar", "Cancelar");
        }
        if(PlayerToPoint(1, playerid, 245.1406,71.9752,1003.6406) || PlayerToPoint(1, playerid, 245.2565,73.5590,1003.6406))//Portoes Dentro DP
        {
            OnPlayerCommandText(playerid, "/pp");
        }
        if(PlayerToPoint(1, playerid, 245.2438,77.0644,1003.6406) || PlayerToPoint(1, playerid, 241.0484,74.6795,1005.0391))//Portoes Dentro DP
        {
            OnPlayerCommandText(playerid, "/pae");
        }
        if(PlayerToPoint(1, playerid, 247.5309,74.6055,1003.6406) || PlayerToPoint(1, playerid, 248.7608,74.4314,1003.6406))//Portoes Dentro DP
        {
            OnPlayerCommandText(playerid, "/pv");
        }
        if(PlayerToPoint(1, playerid, 249.7150,64.6253,1003.6406) || PlayerToPoint(1, playerid, 251.6062,64.5585,1003.6406))//Portoes Dentro DP
        {
            OnPlayerCommandText(playerid, "/pe");
        }
    }
Ps: eu jб testei digitando /entrar e da a mesma coisa ele sai.

Quote:
Originally Posted by Chefгo
Посмотреть сообщение
host bom й outra coisa nй...
tenta isso aki
pawn Код:
if(strcmp(cmd, "/entrar", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(GetPlayerState(playerid) == 1) TeleportParaInteriores(playerid);
            for(new i = 0; i < sizeof(HouseInfo); i++)
            {
                if (PlayerToPoint(3, playerid,HouseInfo[i][hEntrancex], HouseInfo[i][hEntrancey], HouseInfo[i][hEntrancez]))
                {
                    //printf("Found House :%d",i);
                    if(PlayerInfo[playerid][pPhousekey] == i || HouseInfo[i][hLock] == 0)
                    {
                        new OldWorld = GetPlayerVirtualWorld(playerid);
                        new NewWorld;
                        SetPlayerInterior(playerid,HouseInfo[i][hInt]);
                        SetPlayerVirtualWorld(playerid,HouseInfo[i][hWorld]);
                        SetPlayerPos(playerid,HouseInfo[i][hExitx],HouseInfo[i][hExity],HouseInfo[i][hExitz]+4.0);
                        GameTextForPlayer(playerid, "~w~Bem Vindo Em casa", 5000, 1);
                        PlayerInfo[playerid][pInt] = HouseInfo[i][hInt];
                        PlayerInfo[playerid][pLocal] = i;
                        NewWorld = GetPlayerVirtualWorld(playerid);
                        format(string, sizeof(string), "DEBUG: seu world foi mudado de: %d para: %d.", OldWorld,NewWorld);
                        SendClientMessage(playerid, COLOR_GREY, string);
                    }
                    else
                    {
                        GameTextForPlayer(playerid, "~r~Trancado", 5000, 1);
                    }
                }
            }
            for(new i = 0; i < sizeof(BizzInfo); i++)
            {
                if (PlayerToPoint(3, playerid,BizzInfo[i][bEntranceX], BizzInfo[i][bEntranceY], BizzInfo[i][bEntranceZ]))
                {
                    //printf("Found House :%d",i);
                    if(!Policiais(playerid) && i == 3)
                    {
                        SendClientMessage(playerid, COLOR_GREY, "   Sao apenas policiais !");
                        return 1;
                    }
                    if(PlayerInfo[playerid][pPbiskey] == i || GetPlayerMoneyEx(playerid) >= BizzInfo[i][bEntranceCost])
                    {
                        if(PlayerInfo[playerid][pPbiskey] != i)
                        {
                            if(BizzInfo[i][bLocked] == 1)
                            {
                                GameTextForPlayer(playerid, "~r~Fechado", 5000, 1);
                                return 1;
                            }
                            GivePlayerMoneyEx(playerid,-BizzInfo[i][bEntranceCost]);
                            format(string, sizeof(string), "~r~-$%d~n~~w~Digite /sair~n~para sair", BizzInfo[i][bEntranceCost]);
                            BizzInfo[i][bTill] += BizzInfo[i][bEntranceCost];
                            ExtortionBiz(i, BizzInfo[i][bEntranceCost]);
                            OnPropUpdate();
                            GameTextForPlayer(playerid, string, 5000, 3);
                        }
                        SetPlayerInterior(playerid,BizzInfo[i][bInterior]);
                        SetPlayerPos(playerid,BizzInfo[i][bExitX],BizzInfo[i][bExitY],BizzInfo[i][bExitZ]);
                        PlayerInfo[playerid][pInt] = BizzInfo[i][bInterior];
                        PlayerInfo[playerid][pLocal] = i+99;
                        new dood[MAX_PLAYER_NAME];
                        GetPlayerName(playerid, dood, sizeof(dood));
                        format(string, sizeof(string), "%s pagar $%d para entrar na empresa %d", dood, BizzInfo[i][bEntranceCost], i);
                        printf("%s", string);
                        PayLog(string);
                        //PlayerInfo[playerid][pLocal] = i;
                    }
                    else
                    {
                        GameTextForPlayer(playerid, "~r~Voce nao tem dinheiro", 5000, 1);
                    }
                }
            }
            for(new i = 0; i < sizeof(SBizzInfo); i++)
            {
                if (PlayerToPoint(3, playerid,SBizzInfo[i][sbEntranceX], SBizzInfo[i][sbEntranceY], SBizzInfo[i][sbEntranceZ]))
                {
                    if(PlayerInfo[playerid][pPbiskey] == i || GetPlayerMoneyEx(playerid) >= SBizzInfo[i][sbEntranceCost])
                    {
                        if(PlayerInfo[playerid][pPbiskey] != i)
                        {
                            if(SBizzInfo[i][sbLocked] == 1)
                            {
                                GameTextForPlayer(playerid, "~r~Fechado", 5000, 1);
                                return 1;
                            }
                            if(i == 10)
                            {
                                PaintballPlayers ++;
                                PlayerPaintballing[playerid] = 1;
                                new rand = random(sizeof(PaintballSpawns));
                                SetPlayerPos(playerid, PaintballSpawns[rand][0], PaintballSpawns[rand][1], PaintballSpawns[rand][2]);
                                TogglePlayerControllable(playerid, 0);
                            }
                            else if(i == 11)
                            {
                                PlayerKarting[playerid] = 1;
                                SendClientMessage(playerid, TEAM_GROVE_COLOR, "Vocк й o novo participate da corida de kart, va a linha de saida");
                            }
                            else
                            {
                                return 1;
                            }
                            GivePlayerMoneyEx(playerid,-SBizzInfo[i][sbEntranceCost]);
                            gSpentCash[playerid] = GetPlayerMoneyEx(playerid);
                            SBizzInfo[i][sbProducts]--;
                            SBizzInfo[i][sbTill] += SBizzInfo[i][sbEntranceCost];
                            ExtortionSBiz(i, SBizzInfo[i][sbEntranceCost]);
                            new dood[MAX_PLAYER_NAME];
                            GetPlayerName(playerid, dood, sizeof(dood));
                            format(string, sizeof(string), "%s pagar $%d para entrar na empresa %d", dood, SBizzInfo[i][sbEntranceCost], i);
                            printf("%s", string);
                            PayLog(string);
                            OnPropUpdate();
                        }
                    }
                    else
                    {
                        GameTextForPlayer(playerid, "~r~Voce nao tem dinheiro", 5000, 1);
                    }
                }
            }
            for(new i = 0; i < sizeof(HQOrg); i++)
            {
                if (PlayerToPoint(1, playerid,HQOrg[i][hqInteriorex], HQOrg[i][hqInteriorey], HQOrg[i][hqInteriorez]))
                {
                    if(HQOrg[i][hqLock] == 0)
                    {
                        SetPlayerInterior(playerid,HQOrg[i][hqInt]);
                        SetPlayerPos(playerid,HQOrg[i][hqInteriorx],HQOrg[i][hqInteriory],HQOrg[i][hqInteriorz]);
                        PlayerInfo[playerid][pInt] = HQOrg[i][hqInt];
                        PlayerInfo[playerid][pLocal] = i+900;
                        SetPlayerVirtualWorld(playerid,HQOrg[i][hqWorld]+900);
                        TaNaHQ[playerid] = i;
                    }
                    else
                    {
                        GameTextForPlayer(playerid, "~r~Porta da Hq Fechada", 5000, 1);
                    }
                }
            }
            if (PlayerToPoint(3.0, playerid,1073.0619,-344.5148,73.9922))
            {
                if(PlayerInfo[playerid][pMember] == 8 || PlayerInfo[playerid][pLeader] == 8)
                {
                    SetPlayerInterior(playerid,2);
                    SetPlayerPos(playerid,1205.0947,-10.1685,1000.9219);
                    PlayerInfo[playerid][pInt] = 2;
                    PlayerInfo[playerid][pLocal] = 242;
                }
            }
            else if (PlayerToPoint(3.0, playerid,2695.6235,-1704.6960,11.8438))
            {
                GameTextForPlayer(playerid, "~w~Bem vindo ao 8ball Track", 5000, 1);
                SetPlayerInterior(playerid,7);
                SetPlayerPos(playerid,-1404.5299,-259.0602,1043.6563);
            }
            else if (PlayerToPoint(8.0, playerid,-2111.5686,-443.9720,38.7344))
            {
                GameTextForPlayer(playerid, "~w~Bem vindo ao Dirt Track", 5000, 1);
                SetPlayerInterior(playerid,4);
                SetPlayerPos(playerid,-1443.0554,-581.1879,1055.0472);
            }
            else if (PlayerToPoint(8.0, playerid,-2080.3079,-406.0309,38.7344))
            {
                GameTextForPlayer(playerid, "~w~Bem vindo ao Stunting Track", 5000, 1);
                SetPlayerInterior(playerid,14);
                SetPlayerPos(playerid,-1464.7732,1557.5533,1052.5313);
            }
            else if (PlayerToPoint(1.0, playerid,1086.5247,-1234.9617,15.8203))
            {
                if(PlayerInfo[playerid][pPbiskey] != 102 && SBizzInfo[2][sbLocked] == 1)
                {
                    GameTextForPlayer(playerid, "~r~Fechado", 5000, 1);
                    return 1;
                }
                if(PlayerInfo[playerid][pPbiskey] == 102)
                {
                    KillTimer(TimerPortasBancoLS);
                    APortasBancoLS();
                    TimerPortasBancoLS = SetTimer("FPortasBancoLS", 7000, 0);
                }
                else
                {
                    KillTimer(TimerPortasBancoLS);
                    APortasBancoLS();
                    TimerPortasBancoLS = SetTimer("FPortasBancoLS", 7000, 0);
                    GivePlayerMoneyEx(playerid,-SBizzInfo[2][sbEntranceCost]);
                    format(string, sizeof(string), "~r~-R$%d", SBizzInfo[2][sbEntranceCost]);
                    GameTextForPlayer(playerid, string, 5000, 1);
                    gSpentCash[playerid] = GetPlayerMoneyEx(playerid);
                    SBizzInfo[2][sbTill] += SBizzInfo[2][sbEntranceCost];
                    ExtortionSBiz(2, SBizzInfo[2][sbEntranceCost]);
                    new dood[MAX_PLAYER_NAME];
                    GetPlayerName(playerid, dood, sizeof(dood));
                    format(string, sizeof(string), "%s pagar $%d para entrar na empresa %d", dood, SBizzInfo[2][sbEntranceCost], 2);
                    printf("%s", string);
                    PayLog(string);
                    OnPropUpdate();
                }
            }
        }
        return 1;
    }
    if(strcmp(cmd, "/sair", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            for(new i = 0; i <  sizeof(HouseInfo); i++)
            {
                if (PlayerToPoint(1, playerid,HouseInfo[i][hExitx], HouseInfo[i][hExity], HouseInfo[i][hExitz]))
                {
                    new OldWorld = GetPlayerVirtualWorld(playerid);
                    new NewWorld;
                    SetPlayerInterior(playerid,0);
                    SetPlayerVirtualWorld(playerid,0);
                    SetPlayerPos(playerid,HouseInfo[i][hEntrancex],HouseInfo[i][hEntrancey],HouseInfo[i][hEntrancez]);
                    PlayerInfo[playerid][pInt] = 0;
                    SetPlayerVirtualWorld(playerid,0);
                    PlayerInfo[playerid][pLocal] = 255;
                    if(HouseInfo[i][hHel] == 1)
                    {
                        new Float:tempheal;
                        GetPlayerHealth(playerid,tempheal);
                        if(tempheal < 100.0)
                        {
                            SetPlayerHealth(playerid,100.0);
                        }
                    }
                    NewWorld = GetPlayerVirtualWorld(playerid);
                    format(string, sizeof(string), "DEBUG: seu world foi mudado de: %d para: %d.", OldWorld,NewWorld);
                    SendClientMessage(playerid, COLOR_GREY, string);
                    return 1;
                }
            }
            for(new i = 0; i <  sizeof(BizzInfo); i++)
            {
                //printf("Bizz :%d",i);
                if (PlayerToPoint(3, playerid,BizzInfo[i][bExitX], BizzInfo[i][bExitY], BizzInfo[i][bExitZ]))
                {
                    SetPlayerInterior(playerid,0);
                    PlayerInfo[playerid][pInt] = 0;
                    SetPlayerPos(playerid,BizzInfo[i][bEntranceX],BizzInfo[i][bEntranceY],BizzInfo[i][bEntranceZ]);
                    PlayerInfo[playerid][pLocal] = 255;
                }
            }
            if(GetPlayerVehicleID(playerid) >= 71 && GetPlayerVehicleID(playerid) <= 77)
            {
                TogglePlayerControllable(playerid, 1);
                RemovePlayerFromVehicle(playerid);
            }
            else if (PlayerToPoint(6.0, playerid,-1404.5299,-259.0602,1043.6563))
            {
                SetPlayerInterior(playerid,0);
                SetPlayerPos(playerid,2695.6235,-1704.6960,11.8438);
            }
            else if (PlayerToPoint(8.0, playerid,-1443.0554,-581.1879,1055.0472))
            {
                SetPlayerInterior(playerid,0);
                SetPlayerPos(playerid,-2111.5686,-443.9720,38.7344);
            }
            else if (PlayerToPoint(8.0, playerid,-1464.7732,1557.5533,1052.5313))
            {
                SetPlayerInterior(playerid,0);
                SetPlayerPos(playerid,-2080.3079,-406.0309,38.7344);
            }
            else if (PlayerToPoint(1.0, playerid,1086.5479,-1237.4865,16.1183))
            {
                KillTimer(TimerPortasBancoLS);
                APortasBancoLS();
                TimerPortasBancoLS = SetTimer("FPortasBancoLS", 7000, 0);
            }
            else if(NoFuel[playerid] == 1)
            {
                TogglePlayerControllable(playerid, 1);
                RemovePlayerFromVehicle(playerid);
                NoFuel[playerid] = 0;
            }
        }
        return 1;
    }
Nгo entendi esse seu 'host bom й outra coisa nй...'

Olha nгo funcionou porque esse /entrar e /sair esta sem o meu TaNaCasa que faz com que na hora de sair ele verifique em qual casa esta pra sai na porta da mesma, porque desse jeito eu sempre vou sair na casa numero 0 nгo importa qual casa eu entre.

E tambйm eu percebi que vocк faz com que o player entre na casa mais alto do que esta no meu outro /entrar, mais mesmo assim ele entra e sai.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)