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

OnPlayerWeaponShot

توضیحات

این کالبک زمانی فراخوانده می‌شود که یک بازیکن با اسلحه تیراندازی کند. فقط اسلحه‌های آتشین پشتیبانی می‌شوند.

نامتوضیحات
playeridشناسه بازیکنی که اسلحه را شلیک کرده است.
WEAPON:weaponidشناسه اسلحه شلیک شده توسط بازیکن.
BULLET_HIT_TYPE:hittypeنوع هدف اصابت شده توسط شلیک.
hitidشناسه بازیکن، وسیله نقلیه، یا آبجکتی که مورد اصابت قرار گرفته است.
Float:fXمختصات X جایی که شلیک برخورد کرده است.
Float:fYمختصات Y جایی که شلیک برخورد کرده است.
Float:fZمختصات Z جایی که شلیک برخورد کرده است.

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

0 - جلوگیری از آسیب زدن گلوله.

1 - اجازه آسیب زدن گلوله.

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

مثال‌ها

public OnPlayerWeaponShot(playerid, WEAPON:weaponid, BULLET_HIT_TYPE:hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
new string[144];
format(string, sizeof(string), "Weapon %i fired. hittype: %i hitid: %i pos: %f, %f, %f", weaponid, hittype, hitid, fX, fY, fZ);
SendClientMessage(playerid, -1, string);
return 1;
}

نکته‌ها

نکته

این کالبک فقط زمانی فراخوانده می‌شود که lag compensation فعال باشد. اگر hittype برابر باشد با:

  • BULLET_HIT_TYPE_NONE: پارامترهای fX، fY، و fZ مختصات مطلق هستند. اگر چیزی اصابت نشده باشد (مثل آبجکت دوری که گلوله نمی‌تواند به آن برسد) مقدار 0.0 برخواهند گرداند.
  • سایر مقادیر: مقادیر fX، fY، و fZ آفست‌هایی نسبت به hitid هستند.
نکته

می‌توان از GetPlayerLastShotVectors در این کالبک برای اطلاعات دقیق‌تر بردار گلوله استفاده کرد.

باگ‌ها و مسائل شناخته شده

هشدار

این کالبک هنگام شلیک از وسیله نقلیه به عنوان راننده یا هنگام تیراندازی در حالی که با aim فعال به عقب نگاه می‌کنید (تیراندازی به هوا) فراخوانده نمی‌شود.

هشدار

هنگام تیراندازی به بازیکن داخل وسیله نقلیه، این کالبک به عنوان BULLET_HIT_TYPE_VEHICLE با hitid صحیح (vehicleid بازیکن اصابت‌زده) فعال خواهد شد. به عنوان BULLET_HIT_TYPE_PLAYER فعال نخواهد شد.

هشدار

تا حدی در SA-MP 0.3.7 رفع شده: اگر داده اسلحه جعلی توسط کلاینت مخرب ارسال شود، کلاینت‌های سایر بازیکنان ممکن است منجمد یا crash شوند. برای جلوگیری از این، بررسی کنید که weaponid گزارش شده واقعاً می‌تواند پرتابه شلیک کند.

هشدار

این کالبک هنگام drive-by به عنوان راننده، تیراندازی با توپ Seasparrow، Hunter، یا هر وسیله مسلح دیگری فراخوانده نمی‌شود.

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

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

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

توابع مرتبط

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

منابع مرتبط