[Ajuda] Transformar veiculo morto por carcaзa.
#1

Hoje estava olhando meu GM, quando vi a "public OnVehicleDeath" sozinha lб sem nada, entгo queria que alguйm me mostrasse como eu faco um veiculo morto se transformar em carcaзa, exemplo estou andando de boa com meu veiculo, que esta com a vida 300 de repente eu bato na parece e ele pega fogo, antes de explodir ele se transforma em carcaзa ( aquela carcaзa enfrente a casa do Ryder )... e uma comando que remova a carcaзa se o player da profissгo lixeiro estiver a 20 metros da mesma... alguйm pode me ajudar?
Reply
#2

Faзa o seu pedido aqui: https://sampforum.blast.hk/showthread.php?tid=446719
Reply
#3

Testa e vк se funciona, fis agora so olhando a wiki sem testar, comentei bastante o code pra vocк saber o que ta acontecendo no code e editar do jeito que quiser.
pawn Код:
#include <a_samp>

#define COLOR_WHITE 0xFFFFFFAA //Cor branco pra usar no SendClientMessage

new Carcaca[MAX_VEHICLES]; //Aqui vai ficar o id do objeto criado pra ser destruнdo pelo lixeiro
new Lixeiro[MAX_PLAYERS]; //Essa variбvel guarda se o player й lixeiro ou nгo, vocк pode usar na enum PlayerInfo se quiser

public OnPlayerConnect(playerid)
{
    Lixeiro[playerid] = 0; //Aqui vocк pode colocar um code pra carregar do arquivo se o player й lixeiro ou nгo
    return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
    new Float:VehX, Float:VehY, Float:VehZ, Float:VehAngle; //Aqui eu crio umas variбveis pra armazenar a posiзгo do veнculo
    GetVehiclePos(vehicleid, VehX, VehY, VehZ); //Pego a posiзгo X, Y e Z do veнculo
    GetVehicleZAngle(vehicleid, VehAngle); //E o angulo do veнculo
    SetVehicleToRespawn(vehicleid); //E depois respawno o veнculo pra nгo bugar, ficaria melhor usando um timer, porque aqui ele й respawnado bem na hora da explosгo ou se encostar na бgua
    Carcaca[vehicleid] = CreateObject(3594, VehX, VehY, VehZ, 0.0, 0.0, VehAngle); //Aqui eu crio o objeto da carcaзa e armazeno o id na variбvel Carcaca[vehicleid]
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/virarlixeiro", true))
    {
        Lixeiro[playerid] = 1; //Aqui eu seto o player para lixeiro
        SendClientMessage(playerid, COLOR_WHITE, "Parabйns, agora vocк й um lixeiro.");
        return 1;
    }
    if(!strcmp(cmdtext, "/limparrua", true))
    {
        if(!Lixeiro[playerid]) return SendClientMessage(playerid, COLOR_WHITE, "Vocк nгo й um lixeiro.");
        new Float:ObjX, Float:ObjY, Float:ObjZ, Limpezas = 0; //Aqui eu crio umas variбveis pra armazenar a posiзгo das carcaзas e o nъmero de carcaзas limpas
        for(new i = 0; i < MAX_VEHICLES; i++) //Aqui eu faзo um loop por todos os carros do server
        {
            if(Carcaca[i]) //E vejo quais tem carcaзa
            {
                GetObjectPos(Carcaca[i], ObjX, ObjY, ObjZ); //Armazeno as coordenadas da carcaзa
                if(IsPlayerInRangeOfPoint(playerid, 20.0, ObjX, ObjY, ObjZ)) //E vejo se o player estб a 20 metros de alguma carcaзa
                {
                    DestroyObject(Carcaca[i]); //Removo a carcaзa
                    Limpezas++; //E aumento o count de quantas carcaзas limpei
                }
            }
        }
        if(!Limpezas)
        {
            SendClientMessage(playerid, COLOR_WHITE, "Nгo hб nenhuma carcaзa perto pra ser limpa.");
        }
        else if(Limpezas >= 1)
        {
            new string[129]; //Variбvel que vai conter a mensagem formatada (128 max characters + 1 EOS character = 129 cells)
            format(string, sizeof(string), "Vocк limpou %i carcaзas da rua.", Limpezas);
            SendClientMessage(playerid, COLOR_WHITE, string);
        }
        return 1;
    }
    return 0;
}
Reply
#4

Quote:
Originally Posted by andreasbleck
Посмотреть сообщение
Testa e vк se funciona, fis agora so olhando a wiki sem testar, comentei bastante o code pra vocк saber o que ta acontecendo no code e editar do jeito que quiser.
pawn Код:
#include <a_samp>

#define COLOR_WHITE 0xFFFFFFAA //Cor branco pra usar no SendClientMessage

new Carcaca[MAX_VEHICLES]; //Aqui vai ficar o id do objeto criado pra ser destruнdo pelo lixeiro
new Lixeiro[MAX_PLAYERS]; //Essa variбvel guarda se o player й lixeiro ou nгo, vocк pode usar na enum PlayerInfo se quiser

public OnPlayerConnect(playerid)
{
    Lixeiro[playerid] = 0; //Aqui vocк pode colocar um code pra carregar do arquivo se o player й lixeiro ou nгo
    return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
    new Float:VehX, Float:VehY, Float:VehZ, Float:VehAngle; //Aqui eu crio umas variбveis pra armazenar a posiзгo do veнculo
    GetVehiclePos(vehicleid, VehX, VehY, VehZ); //Pego a posiзгo X, Y e Z do veнculo
    GetVehicleZAngle(vehicleid, VehAngle); //E o angulo do veнculo
    SetVehicleToRespawn(vehicleid); //E depois respawno o veнculo pra nгo bugar, ficaria melhor usando um timer, porque aqui ele й respawnado bem na hora da explosгo ou se encostar na бgua
    Carcaca[vehicleid] = CreateObject(3594, VehX, VehY, VehZ, 0.0, 0.0, VehAngle); //Aqui eu crio o objeto da carcaзa e armazeno o id na variбvel Carcaca[vehicleid]
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/virarlixeiro", true))
    {
        Lixeiro[playerid] = 1; //Aqui eu seto o player para lixeiro
        SendClientMessage(playerid, COLOR_WHITE, "Parabйns, agora vocк й um lixeiro.");
        return 1;
    }
    if(!strcmp(cmdtext, "/limparrua", true))
    {
        if(!Lixeiro[playerid]) return SendClientMessage(playerid, COLOR_WHITE, "Vocк nгo й um lixeiro.");
        new Float:ObjX, Float:ObjY, Float:ObjZ, Limpezas = 0; //Aqui eu crio umas variбveis pra armazenar a posiзгo das carcaзas e o nъmero de carcaзas limpas
        for(new i = 0; i < MAX_VEHICLES; i++) //Aqui eu faзo um loop por todos os carros do server
        {
            if(Carcaca[i]) //E vejo quais tem carcaзa
            {
                GetObjectPos(Carcaca[i], ObjX, ObjY, ObjZ); //Armazeno as coordenadas da carcaзa
                if(IsPlayerInRangeOfPoint(playerid, 20.0, ObjX, ObjY, ObjZ)) //E vejo se o player estб a 20 metros de alguma carcaзa
                {
                    DestroyObject(Carcaca[i]); //Removo a carcaзa
                    Limpezas++; //E aumento o count de quantas carcaзas limpei
                }
            }
        }
        if(!Limpezas)
        {
            SendClientMessage(playerid, COLOR_WHITE, "Nгo hб nenhuma carcaзa perto pra ser limpa.");
        }
        else if(Limpezas >= 1)
        {
            new string[129]; //Variбvel que vai conter a mensagem formatada (128 max characters + 1 EOS character = 129 cells)
            format(string, sizeof(string), "Vocк limpou %i carcaзas da rua.", Limpezas);
            SendClientMessage(playerid, COLOR_WHITE, string);
        }
        return 1;
    }
    return 0;
}
Meu caro, ha um pequeno bug: quando eu explodi mais de 1 carcaзa em seguida, nгo consigo limpar nem a primeira nem a segunda, e nem as futuras carcaзas, assim tendo que reiniciar o servidor pra desbugar... se tiver como vocк arrumar o bug... rs. Muito obrigado por enquanto
Reply
#5

Que tipo de GM vocк tem? Eu testei compilando esse code como filterscript e funcionou normal, consegui limpar varias sem bug.
Reply
#6

Quote:
Originally Posted by andreasbleck
Посмотреть сообщение
Que tipo de GM vocк tem? Eu testei compilando esse code como filterscript e funcionou normal, consegui limpar varias sem bug.
RPG, tambйm coloquei como FS, sу deu esse ъnico probleminha ae.
Reply
#7

Desculpe o Double mas, tem outros problemas: as vezes buga o numero de carcaзas que limpei, trava no 2, posso limpar 54646 carcaзas que fala que limpei somente 2.

e o outro bug que citei acima e o seguinte, para melhor entender: eu explodo um carro, nгo limpo ele, depois explodi outro, tambйm nгo limpo ele, depois explodo outro, e vou explodindo sem limpar... chega na hora de limpar, ele limpa sу os 2 ou 3 ultimas, depois fica falando que nгo ha nenhuma carcaзa por perto...
Reply
#8

Tentei ACOPLAR este code em meu server mas da a seguinte warning:

Quote:

C:\Users\xxxxxxx\Downloads\xxxxxxxxx [0.3d]\gamemodes\xxxxxxx.pwn(2777) : warning 219: local variable "string" shadows a variable at a preceding level
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


1 Warning.

o q fasso para remover essa warning string?
Reply
#9

Quote:
Originally Posted by F1N4L
Посмотреть сообщение
Tentei ACOPLAR este code em meu server mas da a seguinte warning:

o q fasso para remover essa warning string?
Muda o nome da string por outra qualquer.
Reply
#10

Quote:
Originally Posted by clerISoN
Посмотреть сообщение
Muda o nome da string por outra qualquer.
Desculpe mas a Warning permanece com qualquer outro nome...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)