PDA

Просмотр полной версии : [Вопрос] Расстояние между 2 игроками



Pawn.Dima
04.11.2021, 12:54
Здравствуйте подскажите функцию между 2 игроками на примере нужно установить крышу для игрока мафиям если избить его до 25 хп
в моем случае избиение будет происходить если у игрока ID 0 подскажите пожалуйста что я не правильно сделал :(


if(RELEASED(KEY_HANDBRAKE | KEY_SECONDARY_ATTACK))
{
new Float:health, Float: x, Float: y, Float: z, giveplayerid;
GetPlayerPos(giveplayerid, x, y, z);
new Float: distance = GetPlayerDistanceFromPoint(playerid, x, y, z);
GetPlayerHealth(giveplayerid, health);
if(distance > 10)
return 1;
switch(PlayerInfo[playerid][pMember])
{
case 12:
{
if(KrishaOffer[giveplayerid] == INVALID_PLAYER_ID)
return 1;
if(health <= 25 && PlayerInfo[giveplayerid][pJob] != 0)
{
SendClientMessage(playerid, COLOR_BLUE, "Вы избили должника до 25 хп, крыша была автоматически установлена!");
SendClientMessage(giveplayerid, COLOR_BLUE, "Вас избили до 25 хп, крыша была автоматически установлена!");
PlayerInfo[giveplayerid][pMafia] = 12;
KrishaOffer[giveplayerid] = INVALID_PLAYER_ID;
}
}
}
}
Команда для выдачи крыши

if(strcmp(cmd, "/setdebt", true) == 0)
{
if(!IsAMafia(playerid))
return SendClientMessage(playerid, COLOR_WHITE, !"Вы не член мафии!");
cmd = strtok(cmdtext, idx);
if(!strlen(cmd))
return SendClientMessage(playerid, COLOR_WHITE, !"Введите: /setdebt [id]");
giveplayerid = ReturnUser(cmd);
if(!IsPlayerConnected(giveplayerid))
return SendClientMessage(playerid, COLOR_WHITE, !"Игрок не найден!");
if(giveplayerid == INVALID_PLAYER_ID)
return SendClientMessage(playerid, COLOR_WHITE, !"Игрок не найден!");
if(!ProxDetectorS(10.0, playerid, giveplayerid))
return SendClientMessage(playerid, COLOR_WHITE, !"Игрок не рядом с вами!");
if(PlayerInfo[giveplayerid][pJob] == 0)
return SendClientMessage(playerid, COLOR_WHITE, !"Данный человек не работает");
if(giveplayerid == playerid)
return SendClientMessage(playerid, COLOR_WHITE, "Нельзя себе!");
if(PlayerInfo[playerid][pRank] < 3)
return SendClientMessage(playerid, COLOR_WHITE, !"Доступно с 3 ранга!");
format(string, sizeof(string), "%s предлагает вам Крышу (( Введите: /accept debt, чтобы принять ))", PlayerInfo[playerid][pName]);
SendClientMessage(giveplayerid, 0x6495EDFF, string);
format(string, sizeof(string), "%s предлагает крышу %s", PlayerInfo[playerid][pName], PlayerInfo[giveplayerid][pName]);
ProxDetector(playerid, 30.0, COLOR_PURPLE, string);
Krisha[giveplayerid] = PlayerInfo[playerid][pMember];
KrishaOffer[giveplayerid] = playerid;
return true;
}

- - - Добавлено - - -

Проблема решена (изменил условие выдачи по Id и все за работало)

- - - Добавлено - - -

Решение:


if(strcmp(cmd, "/setdebt", true) == 0)
{
if(!IsAMafia(playerid))
return SendClientMessage(playerid, COLOR_WHITE, !"Вы не член мафии!");
cmd = strtok(cmdtext, idx);
if(!strlen(cmd))
return SendClientMessage(playerid, COLOR_WHITE, !"Введите: /setdebt [id]");
giveplayerid = ReturnUser(cmd);
if(!IsPlayerConnected(giveplayerid))
return SendClientMessage(playerid, COLOR_WHITE, !"Игрок не найден!");
if(giveplayerid == INVALID_PLAYER_ID)
return SendClientMessage(playerid, COLOR_WHITE, !"Игрок не найден!");
if(!ProxDetectorS(10.0, playerid, giveplayerid))
return SendClientMessage(playerid, COLOR_WHITE, !"Игрок не рядом с вами!");
if(PlayerInfo[giveplayerid][pJob] == 0)
return SendClientMessage(playerid, COLOR_WHITE, !"Данный человек не работает");
if(giveplayerid == playerid)
return SendClientMessage(playerid, COLOR_WHITE, "Нельзя себе!");
if(PlayerInfo[playerid][pRank] < 3)
return SendClientMessage(playerid, COLOR_WHITE, !"Доступно с 3 ранга!");
format(string, sizeof(string), "%s предлагает вам Крышу (( Введите: /accept debt, чтобы принять ))", PlayerInfo[playerid][pName]);
SendClientMessage(giveplayerid, 0x6495EDFF, string);
format(string, sizeof(string), "%s предлагает крышу %s", PlayerInfo[playerid][pName], PlayerInfo[giveplayerid][pName]);
ProxDetector(playerid, 30.0, COLOR_PURPLE, string);
Krisha[giveplayerid] = PlayerInfo[playerid][pMember];
KrishaOffer[playerid] = giveplayerid;
return true;
}

if(RELEASED(KEY_HANDBRAKE | KEY_SECONDARY_ATTACK))
{
new Float:health, giveplayerid = KrishaOffer[playerid];
GetPlayerHealth(giveplayerid, health);
if(!ProxDetectorS(10.0, playerid, giveplayerid))
return 1;
switch(PlayerInfo[playerid][pMember])
{
case 12:
{
if(giveplayerid == INVALID_PLAYER_ID)
return 1;
if(health <= 25 && PlayerInfo[giveplayerid][pJob] != 0)
{
SendClientMessage(playerid, COLOR_BLUE, "Вы избили должника до 25 хп, крыша была автоматически установлена!");
SendClientMessage(giveplayerid, COLOR_BLUE, "Вас избили до 25 хп, крыша была автоматически установлена!");
PlayerInfo[giveplayerid][pMafia] = 12;
KrishaOffer[giveplayerid] = INVALID_PLAYER_ID;
}
}
}
}