03/07/2022 12:35
Galera, criei um sisteminha de remover um objeto do mapa, e depois de um tempo ele é recriado automaticamente.
Está praticamente tudo funcionando perfeitamente. O objeto (cone) começa no mapa, e se algum player encostar nele e digitar /removercone, começa a contagem até 60 e vai mostrando na tela, e qnd termina o objeto é destruido, aparece a mensagem: "%s removeu um cone.", dps de um tempo ele automaticamente é recriado e avisa que foi recriado: "%s o cone da DP foi recriado.".
porém quando ele é recriado, se o player for novamente fazer a remoção, assim que ele é removido começa a floodar a mensagem: "%s removeu um cone." e além do flood, ele fica removendo varias vezes o objeto e não permite que o objeto seja recriado novamente.
Alguém pode ajudar a perceber onde está o erro?
Está praticamente tudo funcionando perfeitamente. O objeto (cone) começa no mapa, e se algum player encostar nele e digitar /removercone, começa a contagem até 60 e vai mostrando na tela, e qnd termina o objeto é destruido, aparece a mensagem: "%s removeu um cone.", dps de um tempo ele automaticamente é recriado e avisa que foi recriado: "%s o cone da DP foi recriado.".
porém quando ele é recriado, se o player for novamente fazer a remoção, assim que ele é removido começa a floodar a mensagem: "%s removeu um cone." e além do flood, ele fica removendo varias vezes o objeto e não permite que o objeto seja recriado novamente.
Alguém pode ajudar a perceber onde está o erro?
Código:
dcmd_removerbrc(playerid, params[])
{
#pragma unused params
if(RmvCone == true) return SendClientMessage(playerid,0xF23C3CFF, "ERRO: {FFFFFF}Esse cone já está sendo removido.");
if(RemovidoCone == true) return SendClientMessage(playerid,0xF23C3CFF, "ERRO: {FFFFFF}Esse cone já foi removido.");
if(PlayerToPoint(0.7, playerid, 849.29999,-928.79999,55.9))
{
ContagemCone[playerid] = SetTimerEx("ConeObjeto", 1000,1, "i", playerid);
ApplyAnimation(playerid, "BOMBER", "BOM_Plant_Loop", 4.0, 1, 0, 0, 1, 0);
RmvCone = true;
new string[128];
format(string, sizeof(string), "%s está removendo um cone.", getPName(playerid));
MensagemLocal(playerid, 0xF23C3CFF, string, 50);
}
else SendClientMessage(playerid, 0xF23C3CFF, "ERRO: {FFFFFF}Você não está próximo a um cone!");
return 1;
}
forward ConeObjeto(playerid);
public ConeObjeto(playerid)
{
new string[128];
if(GetPVarInt(playerid,"TempoConeObjeto") == 60)
{
format(string, sizeof(string), "%s removeu um cone.", getPName(playerid));
MensagemLocal(playerid, 0x96D742FF, string, 50);
RmvCone = false;
RemovidoCone = true;
ClearAnimations(playerid);
DestroyDynamicObject(Cone1);
Delete3DTextLabel(Cone1TEXT);
KillTimer(ContagemCone[GetPVarInt(playerid,"Cone")]);
ContagemCone[GetPVarInt(playerid,"Cone")] = 0;
SetPVarInt(playerid,"Cone",-1);
SetPVarInt(playerid,"TempoConeObjeto",0);
SetTimerEx("RefazerCone", 10000, 0, "i", playerid);
return 1;
}
else
{
SetPVarInt(playerid,"TempoConeObjeto",GetPVarInt(playerid,"TempoConeObjeto")+1);
format(string,sizeof(string),"~w~%i / ~r~60", GetPVarInt(playerid,"TempoConeObjeto"));
GameTextForPlayer(playerid, string, 2500, 3);
}
return 1;
}
forward RefazerCone(playerid);
public RefazerCone(playerid)
{
new string[128];
format(string, sizeof(string), "%s o cone da DP foi recriado.", getPName(playerid));
MensagemLocal(playerid, 0x96D742FF, string, 50);
Cone1 = CreateDynamicObject(2960, 849.29999, -928.79999, 55.9, 0, 98.994, 307.987);
Cone1TEXT = Create3DTextLabel("Para remover este cone\nuse '/removercone'",0xE3E3E3FF,849.29999, -928.79999, 56.9,25.0,0);
RemovidoCone = false;
return 1;
}