aki esta, qualquer duvida pergunte:
PHP код:
#define MAX_OBJETOS 1000
enum ob
{
oColocado,
oObjeto,
oID,
oUnidades,
Float:oPos[3],
oTimer
}
new Objetos[MAX_OBJETOS][ob];
forward CriarObjeto(playerid, item, unid);
public CriarObjeto(playerid, item, unid)
{
new Float:ppp[3];
GetPlayerPos(playerid, ppp[0],ppp[1],ppp[2]);
for(new i; i<MAX_OBJETOS; i++)
{
if(Objetos[i][oColocado] == 0)
{
SendClientMessage(playerid, -1, " Vocк colocou um item no chao !");
Objetos[i][oColocado] = 1;
Objetos[i][oPos][0] = ppp[0];
Objetos[i][oPos][2] = ppp[2];
Objetos[i][oPos][3] = ppp[3]-0.95;
Objetos[i][oUnidades] = unid;
Objetos[i][oID] = item;
Objetos[i][oObjeto] = CreateObject(item, Objetos[i][oPos][0],Objetos[i][oPos][0],Objetos[i][oPos][0],0,0,random(360),100);
Objetos[i][oTimer] = SetTimerEx("DestruirObjeto", 5*(60000), 0, "i", i); // 5*(60000) = 5 minutos, isso para destruir o objeto sozinho
ApplyAnimation(playerid, "BOMBER", "BOM_Plant_2Idle", 4.0, 0, 0, 0, 0, 0);
break; // verifica algum objeto que nгo exista, e cria ele, o BREAK da um stop, para que nao crie mais de 1 objeto.
}
}
return 1;
}
forward DestruirObjeto(i);
public DestruirObjeto(i)
{
KillTimer(Objetos[i][oTimer]);
Objetos[i][oColocado] = 0;
DestroyObject(Objetos[i][oObjeto]);
return 1;
}
forward PegarItem(playerid, i);
public PegarItem(playerid, i)
{
new item = Objetos[i][oID]; // ID doobjeto que estava o chao
new unids = Objetos[i][oUnidades]; // unidades do objeto que estava no chao
// nesta parte, coloque a variavel onde vc vai armazenar o item e a unidade
// provavelmente seria um inventario, entao use as variavei acima como item e unidades.
SendClientMessage(playerid, -1, " Vocк pegou um item do chao !");
DestruirObjeto(i);
ApplyAnimation(playerid, "BOMBER", "BOM_Plant_2Idle", 4.0, 0, 0, 0, 0, 0);
return 1; // isso faz com que destrua o objeto apos pegar ele.
}
// agora na public OnPlayerKeyStateChange do seu server coloque ...
if(newkeys == KEY_SECONDARY_ATTACK)// << vamos verificar se ele apertou f ou enter.
{
for(new i; i<MAX_OBJETOS; i++)// faremos uma verificaзгo de todos os items
{
if(Objetos[i][oColocado] == 1)// isso verifica apenas os objetos criados.
{
if(IsPlayerInRangeOfPoint(playerid, 1.5,Objetos[i][Pos][0],Objetos[i][Pos][1],Objetos[i][Pos][2]))
{
// esta verificaзгo acima, serve para saber se ele esta proximo a um certo local, no raio de 1.5 metros
// no caso verificamos se ele esta a 1.5 metros de algum item que ja esteja no chao.
PegarItem(playerid, i);
break;
}// o BREAK novamente servio para terminar a verificaзгo.
}
}
}
Espero ter ajudado, apenas nao copie e cole, tente entender cada coisa !!
@edit
lembre de usar a funзгo CriarObjeto(playerid, id do item, e as unidades); para poder criar ( ele nao brota do chao rsrs )