پرش به مطلب اصلی

OnPlayerTakeDamage

توضیحات​

این کالبک زمانی فراخوانده می‌شود که یک بازیکن آسیب ببیند.

نامتوضیحات
playeridشناسه بازیکنی که آسیب دیده است.
issueridشناسه بازیکنی که آسیب وارد کرده است. INVALID_PLAYER_ID اگر خودزنی باشد.
Float:amountمقدار آسیب که بازیکن دیده است (سلامتی و زره ترکیبی).
WEAPON:weaponidشناسه اسلحه/دلیل آسیب.
bodypartقسمت بدن که مورد اصابت قرار گرفته است.

مقادیر برگشتی​

1 - کالبک در filterscript های دیگر فراخوانده نخواهد شد.

0 - اجازه می‌دهد این کالبک در filterscript های دیگر فراخوانده شود.

همیشه اول در filterscript ها فراخوانده می‌شود بنابراین برگرداندن 1 در آنجا سایر filterscript ها را از پردازش آن مسدود می‌کند.

مثال‌ها​

public OnPlayerTakeDamage(playerid, issuerid, Float:amount, WEAPON:weaponid, bodypart)
{
if (issuerid != INVALID_PLAYER_ID) // If not self-inflicted
{
new
infoString[128],
weaponName[24],
victimName[MAX_PLAYER_NAME],
attackerName[MAX_PLAYER_NAME];

GetPlayerName(playerid, victimName, sizeof (victimName));
GetPlayerName(issuerid, attackerName, sizeof (attackerName));

GetWeaponName(weaponid, weaponName, sizeof (weaponName));

format(infoString, sizeof(infoString), "%s has made %.0f damage to %s, weapon: %s, bodypart: %d", attackerName, amount, victimName, weaponName, bodypart);
SendClientMessageToAll(-1, infoString);
}
return 1;
}

public OnPlayerTakeDamage(playerid, issuerid, Float:amount, WEAPON:weaponid, bodypart)
{
if (issuerid != INVALID_PLAYER_ID && weaponid == 34 && bodypart == 9)
{
// One shot to the head to kill with sniper rifle
SetPlayerHealth(playerid, 0.0);
}
return 1;
}

نکته‌ها​

یادداشت
  • weaponid مقدار 37 (flame thrower) را از هر منبع آتش (مثل مولوتوف، 18) برخواهد گرداند.
  • weaponid مقدار 51 را از هر اسلحه‌ای که انفجار ایجاد می‌کند (مثل RPG، نارنجک) برخواهد گرداند
  • playerid تنها کسی است که می‌تواند کالبک را فراخوانی کند.
  • amount همیشه حداکثر آسیبی است که weaponid می‌تواند وارد کند، حتی وقتی سلامتی باقی‌مانده کمتر از آن حداکثر آسیب باشد. بنابراین وقتی بازیکن 100.0 سلامتی دارد و با Desert Eagle که مقدار آسیب 46.2 دارد شلیک می‌شود، برای کشتن آن بازیکن 3 تیر لازم است. هر 3 تیر مقدار 46.2 را نشان خواهند داد، حتی وقتی تیر آخر برخورد کند، بازیکن فقط 7.6 سلامتی باقی دارد.
هشدار
  • GetPlayerHealth و GetPlayerArmour مقادیر قدیمی بازیکن را قبل از این کالبک برخواهند گرداند.
  • همیشه قبل از استفاده از issuerid به عنوان ایندکس آرایه، بررسی کنید که معتبر است.

کالبک‌های مرتبط​

کالبک‌های زیر ممکن است مفید باشند، زیرا به نوعی با این کالبک مرتبط هستند.

  • OnPlayerGiveDamage: این کالبک زمانی فراخوانده می‌شود که بازیکن آسیب وارد کند.
  • OnPlayerWeaponShot: این کالبک زمانی فراخوانده می‌شود که بازیکن با اسلحه تیراندازی کند.

منابع مرتبط​