Jump to content
Sign in to follow this  
Abyss

function/snipset IsPlayerInWater/IsPlayerInWaterZone (Xác định người chơi đứng ở trong vùng nước)

Recommended Posts

  GetDayOfWeek
Author: Mr_David (IsPlayerInWaterZone) / OKStyle (IsPlayerInWater)

I. GIỚI THIỆU CHUNG

a) IsPlayerInWater

Hàm này cho phép bạn xác định người chơi có đứng ở trong nước hay không bằng Animation, có thể hiểu là xác định xem người chơi có đang trong trạng thái bơi hay không để nhận biết người chơi đó hiện đang đứng ở mặt đất hay ở trong vùng nước.

b) IsPlayerInWaterZone

Hàm này cho phép bạn xác định người chơi đứng ở trong vùng nước hay không bằng tọa độ (coordinate), để mà nói thì hàm này mang tính bao quát hơn so với hàm sử dụng bằng Animation, bởi khi check bằng Animation bạn sẽ không thể xác định nếu người chơi đó đang bị Freeze hay ngồi trong phương tiện.

Cả 2 hàm này đều có cách sử dụng riêng của chúng, hãy sử dụng nó theo cách của bạn.

 II. Function

stock IsPlayerInWater(playerid)
{
	if(IsPlayerInAnyVehicle(playerid)) return false;
	new animlib[32], animname[32];
	GetAnimationName(GetPlayerAnimationIndex(playerid), animlib, sizeof(animlib), animname, sizeof(animname));
	return (strfind(animname, "swim", true) != -1 || strfind(animname, "water", true) != -1) ? true : false;
}

stock IsPlayerInWaterZone(playerid);
{
	new Float:FXF_wpos[3]; 
	GetPlayerPos(playerid,FXF_wpos[0],FXF_wpos[1],FXF_wpos[2]); 
	if((FXF_wpos[2] > 0.00) || IsPlayerInZone(playerid,1808.2019,1424.5392,-2230.5024,-2347.7979)) return false;
	else if((FXF_wpos[2] < 0.00) && (FXF_wpos[2] > -1.00)) return true; // 1
	else if(FXF_wpos[2] < -1.00) return true; // 2
	return false;
}

stock IsPlayerInZone(playerid, Float:minX, Float:minY, Float:maxX, Float:maxY) 
{
	new Float:FXF_ZoneX, Float:FXF_ZoneY, Float:FXF_ZoneZ; 
	GetPlayerPos(playerid, FXF_ZoneX, FXF_ZoneY, FXF_ZoneZ);
	if((FXF_ZoneX >= minX && FXF_ZoneX <= maxX) && (FXF_ZoneY >= minY && FXF_ZoneY <= maxY) && FXF_ZoneZ <= 500) return true; 
	return false;
}

III. SỬ DỤNG

CMD:test(playerid, params[])
{
	if(IsPlayerInWater(playerid)) SendClientMessage(playerid, -1, "Ban dang boi");
	return 1;
}

CMD:test1(playerid, params[])
{
	if(IsPlayerInWaterZone(playerid)) SendClientMessage(playerid, -1, "Ban dang dung o trong nuoc");
	return 1;
}

 

  • Like 2

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...