From 81881e3805e12253aa30cf4f886160ba1afd2f1d Mon Sep 17 00:00:00 2001 From: Mr-Inject0r <88905637+Mr-Inject0r@users.noreply.github.com> Date: Thu, 26 Dec 2024 22:01:51 +0330 Subject: [PATCH 1/3] Create SetTimer.md for tranlsations/fa --- .../fa/scripting/functions/SetTimer.md | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 docs/translations/fa/scripting/functions/SetTimer.md diff --git a/docs/translations/fa/scripting/functions/SetTimer.md b/docs/translations/fa/scripting/functions/SetTimer.md new file mode 100644 index 000000000..69fbeeebc --- /dev/null +++ b/docs/translations/fa/scripting/functions/SetTimer.md @@ -0,0 +1,78 @@ +--- +title: SetTimer +description: یک 'تایمر' تنظیم می‌کند تا یک تابع را پس از مدتی فراخوانی کند. +tags: ["timer"] +--- + +## توضیحات + +یک 'تایمر' تنظیم می‌کند تا یک تابع را پس از مدتی فراخوانی کند. قابل تنظیم برای تکرار. + +| اسم | توضیحات | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +| const functionName[] | نام تابعی که باید به عنوان یک رشته فراخوانی شود. این باید یک تابع عمومی باشد. یک رشته خالی در اینجا باعث کرش سرور خواهد شد. | +| interval | فاصله زمانی (مدت زمان تایمر) به میلی‌ثانیه. | +| bool:repeating | مقدار بولین (true/false) برای مشخص کردن اینکه تایمر باید تکرار شود یا خیر. | + +## مقادیر بازگشتی + +شناسه تایمر شروع شده. + +شناسه تایمر ها شروع می‌شوند از **1**. + +## مثال ها + +```c +public OnGameModeInit() +{ + print("Starting timer..."); + SetTimer("OneSecondTimer", 1000, true); // تنظیم یک تایمر تکرار شونده برای هر 1000 میلی‌ثانیه (1 ثانیه) +} + +forward OneSecondTimer(); +public OneSecondTimer() +{ + print("1 second has passed."); +} +``` + +## نکته ها + +:::warning + +فواصل زمانی تایمرها دقیق نیستند (تقریباً ۲۵٪ خطا) در SA-MP. راه حل هایی موجود هستند در [اینجا](https://sampforum.blast.hk/showthread.php?tid=289675) و [اینجا](https://sampforum.blast.hk/showthread.php?tid=650736). + +اما این مشکل در open.mp حل شده است. + +::: + +:::warning + +استفاده از تایمر های زیاد باعث افزایش مصرف رم/سی‌پی‌یو خواهد شد. + +::: + +:::tip + +شناسه‌های تایمر هرگز دوباره استفاده نمی‌شوند. + + +شما می‌توانید با استفاده از [KillTimer](KillTimer) یک شناسه تایمر را متوقف کنید و مهم نیست که در حال اجرا باشد یا نه. تابعی که باید فراخوانی شود، باید عمومی باشد، به این معنی که باید forwarded باشد. + +::: + +## تعریف شده ها + +| تعریف | مقدار | +|---------------|-------| +| INVALID_TIMER | 0 | + +## تابع های مرتبط + +- [SetTimerEx](SetTimerEx): تنظیم تایمر با پارامتر ها. +- [KillTimer](KillTimer): متوقف کردن یک تایمر +- [IsValidTimer](IsValidTimer): بررسی وجود یک تایمر. +- [IsRepeatingTimer](IsRepeatingTimer): بررسی اینکه آیا تایمر تکراری است یا خیر. +- [GetTimerInterval](GetTimerInterval): گرفتن فاصله زمانی یک تایمر. +- [GetTimerRemaining](GetTimerRemaining): گرفتن فاصله زمانی باقی مانده یک تایمر. +- [CountRunningTimers](CountRunningTimers): گرفتن تایمر های درحال اجرا. From 303262284367e06d0c0c155c902f939b9e237e58 Mon Sep 17 00:00:00 2001 From: Mr-Inject0r <88905637+Mr-Inject0r@users.noreply.github.com> Date: Thu, 26 Dec 2024 22:26:42 +0330 Subject: [PATCH 2/3] Create SetTimerEx.md for tranlations/fa --- .../fa/scripting/functions/SetTimerEx.md | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 docs/translations/fa/scripting/functions/SetTimerEx.md diff --git a/docs/translations/fa/scripting/functions/SetTimerEx.md b/docs/translations/fa/scripting/functions/SetTimerEx.md new file mode 100644 index 000000000..a5e25116f --- /dev/null +++ b/docs/translations/fa/scripting/functions/SetTimerEx.md @@ -0,0 +1,100 @@ +--- +title: SetTimerEx +description: تنظیم یک تایمر برای فراخوانی تابع پس از یک بازه زمانی مشخص. با قابلیت ارسال مقادیر +tags: ["timer"] +--- + +## توضیحات + +یک تایمر برای فراخوانی تابع پس از یک بازه زمانی مشخص تنظیم می‌کند. این نسخه ('Ex') امکان ارسال پارامترها (مانند شناسه بازیکن) به تابع را فراهم می‌کند. + +| نام | توضیحات | +| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| const functionName[] | نام یک تابع عمومی که پس از انقضای تایمر فراخوانی می‌شود. | +| interval | بازه زمانی به میلی‌ثانیه (1 ثانیه = 1000 میلی‌ثانیه). | +| bool:repeating | مقدار بولی (true/false یا 1/0) که مشخص می‌کند آیا تایمر باید به صورت مکرر فراخوانی شود (فقط با KillTimer متوقف می‌شود) یا تنها یک بار اجرا شود. | +| const specifiers[] | فرمت خاصی که نشان‌دهنده نوع مقادیر ارسالی تایمر است. | +| OPEN_MP_TAGS:... | تعداد نامحدودی از آرگومان‌ها برای ارسال (باید مطابق فرمت مشخص شده در پارامتر قبلی باشد). | + +## مقادیر بازگشتی + +شناسه تایمری که شروع شده است. شناسه تایمرها از 1 شروع شده و دوباره استفاده نمی‌شوند. هیچ بررسی داخلی برای صحت پارامترهای ارسال‌شده انجام نمی‌شود (مثلاً اگر مدت‌زمان مقدار منفی باشد). افزونه 'fixes2' از Y_Less این بررسی‌ها را انجام داده و دقت تایمرها را به طور قابل توجهی بهبود می‌بخشد و همچنین امکان ارسال آرایه/رشته را اضافه می‌کند. + +## مثال‌ها + +```c +SetTimerEx("EndAntiSpawnKill", 5000, false, "i", playerid); +// EndAntiSpawnKill - این تابع فراوخوانی خواهد شد +// 5000 - 5000 میلی‌ثانیه (5 ثانیه). این بازه زمانی است. تایمر پس از 5 ثانیه فراخوانی می‌شود. +// false - بدون تکرار. فقط یک بار فراخوانی خواهد شد. +// "i" - 'i' نشان‌دهنده عدد صحیح (عدد کامل) است. ما یک عدد صحیح (شناسه بازیکن) را به تابع ارسال می‌کنیم. +// playerid - مقداری که باید ارسال شود. این مقدار همان عدد صحیح مشخص شده در پارامتر قبلی است. +``` + +
+ +```c +// The event callback (OnPlayerSpawn) - Inja ma yek timer shoro mikonim. +public OnPlayerSpawn(playerid) +{ + // Anti-Spawnkill (5 saanie) - Jelogiri az koshte shodan dar spawn ta 5 saanie. + + // Health(Joon) player ro be meghdar bala set mikonam ta koshte nashavad. + SetPlayerHealth(playerid, 999999.0); + + // Etela midim behesh. + SendClientMessage(playerid, -1, "You are protected against spawn-killing for 5 seconds."); + + // Yek timer timer misazim ta Spawn kill ro ba'ad az 5 saanie gheyr fa'al kone. + SetTimerEx("EndAntiSpawnKill", 5000, false, "i", playerid); +} + +// Forward (make public) the function so the server can 'see' it +forward EndAntiSpawnKill(playerid); +// The timer function - in code vaghti ke zaman timer resid ejra mishe. +public EndAntiSpawnKill(playerid) +{ + // 5 saanie gozashte, pas joon player ro be halat normal bar migardonim. + SetPlayerHealth(playerid, 100.0); + + // Bezar behesh etela ham bedim. + SendClientMessage(playerid, -1, "You are no longer protected against spawn-killing."); + return 1; +} +``` + +## نکته ها + +:::warning + + +فواصل زمانی تایمرها دقیق نیستند (تقریباً ۲۵٪ خطا) در SA-MP. راه حل هایی موجود هستند در [اینجا](https://sampforum.blast.hk/showthread.php?tid=289675) و [اینجا](https://sampforum.blast.hk/showthread.php?tid=650736). + +اما این مشکل در open.mp حل شده است. + +::: + +:::tip + +متغیرهای شناسه تایمر باید زمانی که دیگر مورد استفاده نیستند به 0 تنظیم شوند تا احتمال از کار انداختن اشتباهی تایمرهای جدید به حداقل برسد. مقدار `-1` معمولاً به اشتباه به عنوان شناسه نامعتبر در نظر گرفته می‌شود - که نیست. + +تابعی که باید فراخوانی شود، باید عمومی باشد، به این معنی که باید forwarded باشد. +::: + +## تعریف شده ها + +| تعریف | مقدار | +|---------------|-------| +| INVALID_TIMER | 0 | + +## تابع های مرتبط + +- [SetTimer](SetTimer): تنظیم یک تایمر. +- [KillTimer](KillTimer): متوقف کردن یک تایمر. +- [IsValidTimer](IsValidTimer): بررسی می‌کند که آیا یک تایمر معتبر است. +- [IsRepeatingTimer](IsRepeatingTimer): بررسی می‌کند که آیا یک تایمر به صورت تکراری تنظیم شده است. +- [GetTimerInterval](GetTimerInterval): دریافت بازه زمانی یک تایمر. +- [GetTimerRemaining](GetTimerRemaining): دریافت بازه زمانی باقی‌مانده یک تایمر. +- [CountRunningTimers](CountRunningTimers): دریافت تعداد تایمرهای در حال اجرا. +- [CallLocalFunction](CallLocalFunction): فراخوانی یک تابع در اسکریپت. +- [CallRemoteFunction](CallRemoteFunction): فراخوانی یک تابع در هر اسکریپت بارگذاری شده. From 004340a87d772ea83696fea726d7f5d44c3abb23 Mon Sep 17 00:00:00 2001 From: Mr-Inject0r <88905637+Mr-Inject0r@users.noreply.github.com> Date: Thu, 26 Dec 2024 22:29:08 +0330 Subject: [PATCH 3/3] Update SetTimer.md in tranlations/fa Add a missing new line. --- docs/translations/fa/scripting/functions/SetTimer.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/translations/fa/scripting/functions/SetTimer.md b/docs/translations/fa/scripting/functions/SetTimer.md index 69fbeeebc..8da5931dd 100644 --- a/docs/translations/fa/scripting/functions/SetTimer.md +++ b/docs/translations/fa/scripting/functions/SetTimer.md @@ -57,7 +57,9 @@ public OneSecondTimer() شناسه‌های تایمر هرگز دوباره استفاده نمی‌شوند. -شما می‌توانید با استفاده از [KillTimer](KillTimer) یک شناسه تایمر را متوقف کنید و مهم نیست که در حال اجرا باشد یا نه. تابعی که باید فراخوانی شود، باید عمومی باشد، به این معنی که باید forwarded باشد. +شما می‌توانید با استفاده از [KillTimer](KillTimer) یک شناسه تایمر را متوقف کنید و مهم نیست که در حال اجرا باشد یا نه. + +تابعی که باید فراخوانی شود، باید عمومی باشد، به این معنی که باید forwarded باشد. :::