CMD:magicweaps(playerid,params[])
{
new path[256];
format(path,sizeof(path),"users/%s.ini",PlayerName(playerid));
if(IsPlayerAdmin(playerid) || dini_Int(path,"Admin Level") >= 3)
{
if(plInfo[playerid][tpw] == true)
{
plInfo[playerid][tpw] = false;
SendClientMessage(playerid,COLOR_GREEN,"You turned on magic weapons!");
}
else
{
plInfo[playerid][tpw] = true;
SendClientMessage(playerid,COLOR_RED,"You turned off magic weapons!");
}
}
return 1;
}
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
new path[256];
format(path,sizeof(path),"users/%s.ini",PlayerName(playerid));
if(IsPlayerAdmin(playerid) || dini_Int(path,"Admin Level") >= 3)
{
if(plInfo[playerid][tpw] == true)
{
if(hittype == BULLET_HIT_TYPE_NONE)
{
if(weaponid == 25) SetPlayerPos(playerid,fX,fY,fZ);
}
}
}
return 1;
}
I wish to make a pretty basic command that when you shoot a specific weapon, it does a special action. I tried first with shotgun that when you shot in a location, it TPs you there:
PHP код:
|
CMD:magicweaps(playerid,params[]) { new path[256]; format(path,sizeof(path),"users/%s.ini",PlayerName(playerid)); if(IsPlayerAdmin(playerid) || dini_Int(path,"Admin Level") >= 3) { if(plInfo[playerid][tpw] == true) { plInfo[playerid][tpw] = false; SendClientMessage(playerid,COLOR_GREEN,"You turned on magic weapons!"); } else { plInfo[playerid][tpw] = true; SendClientMessage(playerid,COLOR_RED,"You turned off magic weapons!"); } } return 1; } public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) { new path[256]; format(path,sizeof(path),"users/%s.ini",PlayerName(playerid)); if(IsPlayerAdmin(playerid) || dini_Int(path,"Admin Level") >= 3) { if(plInfo[playerid][tpw] == true) { if(hittype == BULLET_HIT_TYPE_NONE) { if(weaponid == 25) { new Float:fOriginX, Float:fOriginY, Float:fOriginZ,Float:fHitPosX, Float:fHitPosY, Float:fHitPosZ; GetPlayerLastShotVectors(playerid, fOriginX, fOriginY, fOriginZ, fHitPosX, fHitPosY, fHitPosZ); SetPlayerPos(playerid, fHitPosX, fHitPosY, fHitPosZ + 3); } } } } return 1; }
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
new path[256];
format(path,sizeof(path),"users/%s.ini",PlayerName(playerid));
if(IsPlayerAdmin(playerid) || dini_Int(path,"Admin Level") >= 3)
{
if(plInfo[playerid][tpw] == true)
{
if(hittype == BULLET_HIT_TYPE_NONE)
{
if(weaponid == 25)
{
new Float:fOriginX, Float:fOriginY, Float:fOriginZ,Float:fHitPosX, Float:fHitPosY, Float:fHitPosZ;
GetPlayerLastShotVectors(playerid, fOriginX, fOriginY, fOriginZ, fHitPosX, fHitPosY, fHitPosZ);
SetPlayerPos(playerid, fHitPosX, fHitPosY, fHitPosZ + 3);
}
}
else return 0;
}
}
return 1;
}
Return Values: 0 - Prevent the bullet from causing damage. 1 - Allow the bullet to cause damage. It is always called first in filterscripts so returning 0 there also blocks other scripts from seeing it. |
Thank you so much. It worked perfectly.
But how can I check if the player hits the ground or not? By so, the player wouldn't be TPed to the world's middle if he shot at the sky. I tried: PHP код:
|
new AdminPayer[MAX_PLAYERS]; public OnPlayerConnect(playerid) { new path[256]; format(path,sizeof(path),"users/%s.ini",PlayerName(playerid)); AdminPayer[playerid] = dini_Int(path,"Admin Level"); return true; } public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) { if(IsPlayerAdmin(playerid) || AdminPayer[playerid] >= 3) { if(plInfo[playerid][tpw] == true && weaponid == 25) { new Float:fOriginX, Float:fOriginY, Float:fOriginZ,Float:fHitPosX, Float:fHitPosY, Float:fHitPosZ; GetPlayerLastShotVectors(playerid, fOriginX, fOriginY, fOriginZ, fHitPosX, fHitPosY, fHitPosZ); SetPlayerPos(playerid, fHitPosX, fHitPosY, fHitPosZ + 3); } } return true; }