18/04/2023 14:53
Desculpa a demora, mas com base no que você disse, eu fiz o código:
Ele inclui:
- Verificar o jogador mais próximo.
- Enviar dinheiro a esse jogador mais próximo.
Código PHP:
new targetID[MAX_PLAYERS] = {INVALID_PLAYER_ID, ...};
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
new str[32];
format(str, sizeof(str), "dinheiro: \t\t %i", PPL[playerid][moneyAtPPL]);
ShowPlayerDialog(playerid, trade_money, DIALOG_STYLE_LIST, "dinheiro", str, "Enviar", "Fechar");
return 1;
}
OnDialogResponse(...)
{
if(dialogid == 613)
{
if(response)
{
new
string[128];
if((targetID[playerid] = GetNearestPlayer(playerid)) == INVALID_PLAYER_ID)
return SendClientMessage(playerid, -1, "Nao tem ninguem proximo de voce.");
format(str, sizeof(str), "Quanto deseja enviar para %s?", nomep(id));
ShowPlayerDialog(playerid, 630, DIALOG_STYLE_INPUT, "dinheiro", str, "Enviar", "Cancelar");
}
}
if(dialogid == 630)
{
if(response)
{
new
string[128],
id = targetID[playerid];
if(moneyreturn(playerid) < strval(inputtext))
return SendClientMessage(playerid, -1, "voce não possui essa quantia");
if(!IsPlayerConnected(id))
return SendClientMessage(playerid, -1, "O jogador desconectou-se.");
if(!IsPlayerNearPlayer(playerid, id, 3.0))
return SendClientMessage(playerid, -1, "O jogador se afastou demais!");
moneyAtPPL(i, strval(inputtext));
moneyAtPPL(playerid, - strval(inputtext));
format(string, sizeof(string), "Voce enviou $%d para %s.", strval(inputtext), nomep(i));
SendClientMessage(playerid, -1, string);
}
}
return 1;
}
stock GetNearestPlayer(playerid)
{
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(IsPlayerConnected(i) && IsPlayerNearPlayer(playerid, i, 3.0)) {
return i;
}
}
return INVALID_PLAYER_ID;
}
stock IsPlayerNearPlayer(playerid, targetid, Float:radius)
{
static
Float:fX,
Float:fY,
Float:fZ;
GetPlayerPos(targetid, fX, fY, fZ);
return (GetPlayerInterior(playerid) == GetPlayerInterior(targetid) && GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(targetid)) && IsPlayerInRangeOfPoint(playerid, radius, fX, fY, fZ);
}
Ele inclui:
- Verificar o jogador mais próximo.
- Enviar dinheiro a esse jogador mais próximo.