[Ajuda] Erro na morte
#1

Pessoal meu gm estб com um Bug na hora que o player morre... ele tipo .. na primeira morte ele vai para em um lugar estranho no mapa.. e na segunda ele vai certo pro hospital porem com a skin 0 .. alguem sabe pq?


e detalhe mostra aquele negocio do spawnplayer com a setas e o butгo "spawn"


se precisar da public avise - me.. deis de ja agradeзo .
Reply
#2

manda sua onplayerdeath e a onplayerspawn amigo
Reply
#3

pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    print("teste 1");
    Morreu[playerid] = 1;
    print("teste 2");
    KillTimer(timerDominando[playerid]);
    print("teste 3");
    KillTimer(TimerPassBanco[playerid]);
    print("teste 4");
    new name[MAX_PLAYER_NAME];
    if(dominando[playerid] == 1)
    {
        if(gzDominando[playerid] == 1)
            GangZoneShowForAll(GZFavela, CORTR_NINGUEM);
        if(gzDominando[playerid] == 2)
            GangZoneShowForAll(GZParque, CORTR_NINGUEM);
        if(gzDominando[playerid] == 3)
            GangZoneShowForAll(GZEstacao, CORTR_NINGUEM);
        if(gzDominando[playerid] == 4)
            GangZoneShowForAll(GZCasarao, CORTR_NINGUEM);
    }
    if(IsPlayerInGuerra(killerid) == 0)
    {
        if(!IsACop(killerid))
        {
            InfoGabriel[killerid][pNivelProcurado] += 2;
            format(String, 128, "{007BB7}HQ Todas as unidades:");
            MensagemOrg(1, -1, String);
            MensagemOrg(2, -1, String);
            MensagemOrg(3, -1, String);
            MensagemOrg(4, -1, String);
            format(String, 128, "{007BB7}Suspeito: %s Crime: Assasinato - Aplicante: Testemunhas", pNome(killerid), pNome(playerid));
            MensagemOrg(1, -1, String);
            MensagemOrg(2, -1, String);
            MensagemOrg(3, -1, String);
            MensagemOrg(4, -1, String);
            format(String, 128, "{FF6666}Vocк cometeu um crime: 'Assasinato' Reportado: Testemunhas");
            SCM(killerid,-1,String);
        }
    }
    print("teste 5");
    if(pGuerra == 1)
    {
        print("teste 1");
        new org;
        new killerorg;
        if(InfoGabriel[playerid][pMembro] > 0)
        {
            org = InfoGabriel[playerid][pMembro];
        }
        if(InfoGabriel[killerid][pMembro] > 0)
        {
            killerorg = InfoGabriel[killerid][pMembro];
        }

        if(OrgDeGuerra(playerid,org) && OrgDeGuerra(killerid,killerorg))
        {
            print("teste 2");
            if(IsPlayerInGuerra(playerid) && IsPlayerInGuerra(killerid))
            {
                print("teste 3");
                GuerraPontos[killerorg] += 1;
            }
        }

    }
    new pricewan = InfoGabriel[playerid][pNivelProcurado] * 60;
    if(!IsPlayerInGuerra(killerid))
    {
        if(IsACop(killerid) && InfoGabriel[playerid][pNivelProcurado] >= 1)
        {
            format(String, sizeof(String), "~w~Suspeito ~r~Morto~n~Bonus~g~R$%d", pricewan/2);
            GameTextForPlayer(killerid, String, 5000, 1);
            GivePlayerMoneyEx(killerid, pricewan / 2);
            PlayerPlaySound(killerid, 1058, 0.0, 0.0, 0.0);
            InfoGabriel[playerid][pNivelProcurado] = 0;
            InfoGabriel[playerid][pCadeia] = 2;
            SetPlayerInterior(playerid, 6);
            InfoGabriel[playerid][pTempoCadeia] = pricewan;
            format(String, sizeof(String), "* Vocк estб preso por %d Segundos no HQ da Policia Militar, e perdeu R$%d por trocar tiros e fugir dos policiais.", InfoGabriel[playerid][pTempoCadeia], pricewan/3);
            SCM(playerid, COR_VERMELHOCLARO, String);
        }
    }
    print("teste 6");
    print("teste 7");
    if(ProvocoBanco[playerid] == 1)
    {
        SCMTA(COR_VERDE, "*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~* Roubo ao banco deu falha *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*");
        format(String, sizeof(String), "%s[ID:%d] Nгo conseguio completar o assalto que estava fazendo ao Banco Central!", pNome(playerid), playerid);
        SCMTA(COR_CINZA2, String);
        ProvocoBanco[playerid] = 0;
        RemovePlayerAttachedObject(playerid, 4);
        temporoubobanco = 0;
        KillTimer(tempobanco);
    }
    print("teste 8");
    new caller = Mobile[playerid];
    if(caller != 255)
    {
        if(caller < 255)
        {
            SendClientMessage(caller,  COR_BRANCO, "Morreram do outro lado da linha");
            CellTime[caller] = 0;
            CellTime[playerid] = 0;
            Mobile[caller] = 255;
        }
        Mobile[playerid] = 255;
        CellTime[playerid] = 0;
    }
    print("teste 9");
    MSG_Preso[playerid] = 0;
    ComDoenca[playerid] = 0;
    if(Sequestrado[playerid] == 1)
    {
        KillTimer(MandouSequestro);
        format(String, 100, "[SEQUESTRO] A vнtima do sequestro, %s[ID:%d] morreu, sequestro finalizado!",pNome(playerid), playerid);
        SCMTA(COR_AZULZAO, String);
        Sequestrado[playerid] = 0;
        Amarrado[playerid] = 0;
        FitaNele[playerid] = 0;
        NomeSequestrado[playerid] = 0;
        NomeSequestrado[iddele] = 0;
        TogglePlayerControllable(playerid, 1);
        TextDrawHideForPlayer(iddele, Venda1);
        TextDrawHideForPlayer(iddele, Venda2);
        TextDrawHideForPlayer(iddele, Vendado);
        CaraVendado[playerid] = 0;
    }
    print("teste 10");
    if(GetPlayerState(killerid) == 2 && GetVehicleModel(GetPlayerVehicleID(killerid)) != 425 && GetVehicleModel(GetPlayerVehicleID(killerid)) != 520)
    {
        format(String, 115, "[AdmCmd] %s[ID:%d] matou o %s[ID:%d] atropelado, e serб kickado pelo admin", pNome(killerid), killerid, pNome(playerid), playerid);
        SCMTA(COR_VERMELHOCLARO, String);
    }
    print("teste 11");

    print("teste 12");
    if(FazendoTeste[playerid] == 1)
    {
        DestroyVehicle(VAutoEscolaTeste[playerid]);
    }
    print("teste 13");
    FazendoTeste[playerid] = 0;
    if(IsPlayerConnected(killerid))
    {
        InfoGabriel[killerid][pMatou]++;
    }
    print("teste 14");
    InfoGabriel[playerid][pMorreu]++;
    if(usandolavacarro == playerid)
    {
        SetVehicleToRespawn(GetPlayerVehicleID(playerid));
        usandolavacarro = -1;
        Update3DTextLabelText(textoentrada, COR_AZULZAO, "Ninguйm estб usando o Lava Rбpido agora, o preзo й de R$ 20,00\n(/lavarcarro)");
    }
    print("antpenu");
    if(InfoGabriel[killerid][pMembro] == 13)
    {
        if(GoChase[killerid] == playerid)
        {
            new killer[MAX_PLAYER_NAME];
            new precomorte = InfoGabriel[playerid][pHeadValue];
            GetPlayerName(playerid,name,sizeof(name));
            GetPlayerName(killerid, killer, sizeof(killer));
            GivePlayerMoneyEx(killerid, precomorte);
            format(String,128,"<< Assasino %s Completou o contrato em %s pelo preзo de $%d >>",killer,name,InfoGabriel[playerid][pHeadValue]);
            MensagemOrg(13,COR_AMARELO,String);
            format(String,128,"<< O Matador %s matou vocк por um contrato de R$%d, entгo nгo foi DM. >>",killer,InfoGabriel[playerid][pHeadValue]);
            SCM(playerid, COR_BRANCO, String);
            format(String,128,"<< O Matador %s matou o seu contrato (%s) pelo preзo de: R$%d>>",killer,name,InfoGabriel[playerid][pHeadValue]);
            SCM(ColocouContrato, COR_AMARELO, String);
            format(String,128,"AVISO: %s[ID:%d] matou %s[ID:%d] com contrato, entгo nгo foi DM.",pNome(killerid),killerid,pNome(playerid),playerid);
            MensagemADM(COR_VERMELHOCLARO, String, 1);
            InfoGabriel[playerid][pHeadValue] = 0;
            GotHit[playerid] = 0;
            GetChased[playerid] = 999;
            GoChase[killerid] = 999;
        }
        if(GoChase[killerid] != playerid)
        {
            format(String,128,"AVISO: %s[ID:%d] matou %s[ID:%d] sem contrato, fique de olho nele.",pNome(killerid),killerid,pNome(playerid),playerid);
            MensagemADM(COR_VERMELHOCLARO, String, 1);
        }
    }
    print("penultimo");

    print("final");
    return 1;
}
pawn Код:
public OnPlayerSpawn(playerid)
{
    if(Morreu[playerid] == 1 && PosicaoDeslogar[playerid] == 0)
    {
        SetPlayerHealth(playerid, 5.0);
        new randmaca = random(sizeof(MacaAposMorrer));
        SetPlayerPos(playerid, MacaAposMorrer[randmaca][0], MacaAposMorrer[randmaca][1], MacaAposMorrer[randmaca][2]);
        SetPlayerFacingAngle(playerid, MacaAposMorrer[randmaca][3]);
        SetPlayerVirtualWorld(playerid, 10);
        SetPlayerInterior(playerid, 1);
        ClearAnimations(playerid);
        ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
        SetPlayerCameraPos(playerid, 1718.8020,1193.7950,35.8823);
        SetPlayerCameraLookAt(playerid, 1711.1898,1185.1813,35.7302);
        SCM(playerid, COR_CINZA1,"Digite /alta para saber quanto tempo ainda lhe falta.");
        return 1;
    }
    if (!AlreadyGiveWeapons[playerid]) SetTimerEx("LoadArmasToFile",250,false,"i",playerid);
    timer = SetTimerEx("TimeFome",80000,true,"d",playerid);
    StopAudioStreamForPlayer(playerid); // Stop the audio stream
    TextDrawShowForPlayer(playerid, Relogio0);//nome da draw no caso a que definimos la emcima
    TextDrawShowForPlayer(playerid, Relogio1);
    new arquivo[128];
    format(arquivo,sizeof(arquivo),"Fome/%s.ini", pNome(playerid));
    FomePlayer[playerid] = DOF2_GetInt(arquivo,"Fome");
    AtuFome(playerid);
    TextDrawShowForPlayer(playerid, TForum);// "liga" a text draw que fica em la em baixo (forum...).
    TextDrawShowForPlayer(playerid, TForum1);
    TempoAdmin = SetTimerEx("EstadoAdmin", 2000, 1, "i", playerid);// Inicia o SetTimer de admin!
    SetPlayerSkin(playerid, InfoGabriel[playerid][pSkin]);// Seta a skin do player!
    SetPlayerHealth(playerid, InfoGabriel[playerid][pMaxHealth]);
    MostrarStatus(playerid);
    titi[playerid] = SetTimerEx("TextDrawUpdate", 1000, true,"i", playerid);
    SetPlayerScore(playerid, DOF2_GetInt(Arquivo(playerid), "Level"));//Irб setar o Nivel do player.
    SetTimerEx("Atualizar", 1000, false, "i", playerid);
    if(InfoGabriel[playerid][pTutorial] == 0)
    {
        InfoGabriel[playerid][pTutorial] = 1;
        pNascimento(playerid);
    }
    if(InfoGabriel[playerid][pCadeia] == 1 && MSG_Preso[playerid] == 0)
    {
        SCM(playerid, COR_VERMELHOCLARO, "Sentenзa incompleta, vocк voltou para a prisгo!");
        SetPlayerHealth(iddele, 99999);
        SetPlayerPos(iddele, 322.197998,302.497985,999.148437);
        SetPlayerInterior(iddele, 5);
        MSG_Preso[playerid] = 1;
    }
    if(InfoGabriel[playerid][pCadeia] == 2 && MSG_Preso[playerid] == 0)
    {
        SCM(playerid, COR_VERMELHOCLARO, "Sentenзa incompleta, vocк voltou para a prisгo!");
        SetPlayerHealth(iddele, 99999);
        SetPlayerPos(iddele,264.6288,77.5742,1001.0391);
        SetPlayerInterior(iddele, 6);
        SetPlayerVirtualWorld(iddele, 0);
    }
   
    if(mandoumensagem[playerid] == 0)
    {
        if(InfoGabriel[playerid][pAdmin] >= 1)
        {
            format(String,70 , "Vocк logou com nнvel %d de administrador", InfoGabriel[playerid][pAdmin]);
            SCM(playerid, COR_AZULCLARO, String);
        }
        if(InfoGabriel[playerid][pVip] == 1)
        {
            SCM(playerid, COR_AZULCLARO, "Vocк й um player VIP");
        }
        else if(InfoGabriel[playerid][pVip] == 2)
        {
            SCM(playerid, COR_AZULCLARO, "Vocк й um player SUPER-VIP");
        }

        mandoumensagem[playerid] = 1;
    }
    new voltarcoordenada[256];
    new STR[200];
    format(voltarcoordenada, sizeof(voltarcoordenada), "Spawn/%s.ini", pNome(playerid));
    if(fexist(voltarcoordenada) && PosicaoDeslogar[playerid] == 1 && InfoGabriel[playerid][pGmx] == 0)
    {
       
        mandoumensagem[playerid] = 1;
        PosicaoDeslogar[playerid] = 0;
        SendClientMessage(playerid, 0x11BF08AA, "=======================================================");
        format(STR, sizeof(STR), "True Live RPG:  Bem-Vindo %s", pNome(playerid));
        SendClientMessage(playerid, 0xFFFFFFAA, STR);
        SendClientMessage(playerid, 0xFFFFFFAA, "True Live RPG:  Ъltimo GMX: 14/3 19:20");
        SendClientMessage(playerid, 0xFFFFFFAA, "True Live RPG:  Fуrum: www.truelive.forumeiros.com");
        format(STR, sizeof(STR), "True Live RPG:  Vocк tem %i hora(s) de jogo.", InfoGabriel[playerid][pHorasJogadas]);
        SendClientMessage(playerid, 0xFFFFFFAA, STR);
        SendClientMessage(playerid, 0x11BF08AA, "=======================================================");
        CarregarSpawn(playerid);
        SetPlayerPosEx(playerid, SpawnX[playerid],SpawnY[playerid],SpawnZ[playerid],SpawnA[playerid]);
        SetPlayerHealth(playerid, VidaDeslogar[playerid]);
        SetPlayerArmour(playerid, ColeteDeslogar[playerid]);
        SetPlayerVirtualWorld(playerid, Mundo[playerid]);
        SetPlayerInterior(playerid, Int[playerid]);
        SetPlayerTeamColor(playerid);
        SetPlayerScore(playerid, InfoGabriel[playerid][pNivel]);
        SendClientMessage(playerid, 0xFFFFFFAA, "* Vocк voltou para a posiзгo onde estava antes de deslogar!");
        return 1;
    }
    else if(!fexist(voltarcoordenada))
    {
   
        CriarSpawn(playerid);
        pNascimento(playerid);
        SetPlayerHealth(playerid, InfoGabriel[playerid][pMaxHealth]);
       
    }
    if(InfoGabriel[playerid][pGmx] == 1)
    {
        pNascimento(playerid);
        InfoGabriel[playerid][pGmx] = 0;
        SCM(playerid,COR_CINZA1,"A ъltima vez que vocк deslogou foi por causa de um GMX portanto volto para o нnicio.");
    }
   
    SetPlayerTeamColor(playerid);
    PosicaoDeslogar[playerid] = 0;
    return 1;
}
Reply
#4

sinceramente nгo consigo lhe ajudar pois nгo consegui intender nada ai amigo
Reply
#5

Obrigado
Reply
#6

Nгo dei uma grande analise no cуdigo no entanto, eu jб tive um problema semelhante a esse e penso que o problema possa estar no uso da funзгo SpawnPlayer no primeiro spawn, que provavelmente й usado para saltar a seleзгo de class de forma o player ser logo spawnado, o acontece й que quando se salta a seleзгo de class (OnPlayerRequestClass) da proxima vez que o player morrer ele serб forзado a ir na seleзгo de class, eu sugiro que tente adicionar uma verificaзгo, desta de forma a quando nгo й suposto ir na seleзгo de class returnar SpawnPlayer.

Exemplo, pode ser que ajude:
pawn Код:
public OnPlayerRequestClass(playerid,classid)
{
    if(Morreu[playerid] == 1) //Verfica se o player morreu e caso tenha morrido irб forcar o player a spawnar
        SpawnPlayer(playerid); //Spawna o player
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)