Ai galera, tipo eu jб tinha tentado fazer etc, mas tipo o mбximo, com oque eu consigo usar da minha logica e dos meus conhecimentos, foi cria a mochila e guarda os items!
Quero saber como crio um "sistema" pra pegar items do chгo? E se tiverem um "curso" em PDF me mandem! os que eu acho nгo consigo me evoluir!, tipo eu quero aprender sу para uso pessoal, pois nгo tem futuro em emprego k, mas manda quem tiver um bom. |
#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.
}
}
}
Vou fazer um pra vocк, mais, nao vai dar pra explicar coisa por coisa, vc vai ter que entender sozinho, vc usa streamer ?
|
#define MAX_OBJETOS 1000
enum ob
{
oColocado,
oObjeto,
oID,
oUnidades,
Float:oPos[3],
oTimer
}
new Objetos[MAX_OBJETOS][ob];
CMD:derrubar(playerid,params[])
{
//vinge que aqui e o inventбrio
new item = 5;
new unidades = 1;
CriarObjeto(playerid, item, unidades);
//seria assim?
return 1;
}
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.
}
}
}
Variavel[outroplayer] = Variavel[playerid]; Variavel[playerid] = 0;
Tipo, com a funзгo que eu disse, vc consegue dropar um item, pra transferir um itempra outro player, ai й pelo inventario, й vc que tem que fazer isso, vc esta guadando as variaveis dos items do inventario pra cada player certo? entгo vc transfere do player para outro, ou seja:
Код:
Variavel[outroplayer] = Variavel[playerid]; Variavel[playerid] = 0; |