Перевести код на SourcePawn

x330122

Участник
Сообщения
357
Реакции
152
Есть код, можно как-то сделать так чтобы он работал в Sourcepawn ?
P.S Взято из Samp Pawn
Код:
PHP:
float GetDistanceBetweenPlayers(int client, int target)
{
    new Float:pl1p[3];
    new Float:pl2p[3];
    GetClientAbsOrigin(client, pl1p);
    GetClientAbsOrigin(target, pl2p);
    if(!IsPlayerConnected(client) || !IsPlayerConnected(target))
    {
        return -1.00;
    }
 
    return floatsqroot(floatpower(floatabs(floatsub(pl2p[0],pl1p[0])),2)+floatpower(floatabs(floatsub(pl2p[1],pl1p[1])),2)+floatpower(floatabs(floatsub(pl2p[2],pl1p[2])),2));
}
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
967
PHP:
float GetDistanceBetweenPlayers(int client, int target)
{
    float pl1p[3];
    float pl2p[3];
    GetClientAbsOrigin(client, pl1p);
    GetClientAbsOrigin(target, pl2p);
    if(!IsClientConnected(client) || !IsClientConnected(target))
    {
        return -1.0;
    }

    return GetVectorDistance(pl1p, pl2p)
}

В sourcepawn есть функция GetVectorDistance
 

panikajo

Участник
Сообщения
866
Реакции
231
Есть код, можно как-то сделать так чтобы он работал в Sourcepawn ?
P.S Взято из Samp Pawn
Код:
PHP:
float GetDistanceBetweenPlayers(int client, int target)
{
    new Float:pl1p[3];
    new Float:pl2p[3];
    GetClientAbsOrigin(client, pl1p);
    GetClientAbsOrigin(target, pl2p);
    if(!IsPlayerConnected(client) || !IsPlayerConnected(target))
    {
        return -1.00;
    }
 
    return floatsqroot(floatpower(floatabs(floatsub(pl2p[0],pl1p[0])),2)+floatpower(floatabs(floatsub(pl2p[1],pl1p[1])),2)+floatpower(floatabs(floatsub(pl2p[2],pl1p[2])),2));
}
вот если чё
GetVectorDistance · vector · SourceMod Scripting API Reference
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
967
Так-же замена тех функций, что ты нам скинул:
floatsqroot - SquareRoot
floatabs - FloatAbs
floatpower - Pow
floatsub - FloatSub
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #5
PHP:
float GetDistanceBetweenPlayers(int iClient, int iTarget) {
  if (!IsClientConnected(iClient) || !IsClientConnected(iTarget))
    return -1.0;

  float vecPos[2][3];
  GetClientAbsOrigin(iClient, vecPos[0]);
  GetClientAbsOrigin(iTarget, vecPos[1]);
 
  return GetVectorDistance(vecPos[0], vecPos[1]);
}

Намного проще и оптимизированнее. И без ошибок точно.
Ибо это дико странно, сначала получить позицию игрока, и только потом проверить, а на сервере ли он...
 
Сверху Снизу