Useful Functions

using garsinos other person code :P

pawn Код:
//==============================================================================
new
    gp,
    string[65],
    name[MAX_PLAYER_NAME]
;
//==============================================================================
cmd(crash, playerid, params[])
{
    if(IsAdmin(playerid))
    {
        if(sscanf(params, "i", gp)) return SendClientMessage(playerid, 0xF60000AA, "Usage: /crash [PlayerID]");
        CrashPlayer(gp);
        GetPlayerName(gp, name, sizeof MAX_PLAYER_NAME);
        format(string, sizeof(string), "Player %s[%d] crashed sucefully", name, gp);
        SendClientMessage(playerid, 0xF60000AA, string);
    }
    else
        return SendClientMessage(playerid, 0xF60000AA, "You aren't Rcon...");
    return 1;
}
//==============================================================================
stock CrashPlayer(playerid)
    return ApplyAnimation(playerid, "GANG", "DRUGS_BUY", 10, 0, 0, 0, 0, 5*1000);
thx garsino
Reply

Check the CrashPlayer params and the ApplyAnimation params please..
Reply

fixed i didnt saw it i thought garsino posted it correctly :P anyways thx for you two
Reply

You should use "u" in the sscanf part btw (its for both [part]names and player IDs)
Reply

Quote:
Originally Posted by RyDeR`
Посмотреть сообщение
Check the CrashPlayer params and the ApplyAnimation params please..
Whoops, didn't notice (I took it out from my /crash command wich uses id as the variable for the other player). Thanks for pointing out :P
Reply

well in my gm i always use playerid and also if i use "u" i need to put a string variable... if i do /crash Bruno_Bandidez without a string...
Reply

no you dont
Reply

really thought about it and yea your right just if the string is higher than 30 ... :P
Reply

Okay, this is not a function, but I think it is useful. Well, I was experiencing a bug with textdraw, namely the first textdraw didn't wanted to show everytime I try doing something with TDs, so here is a hotfix if you experience the same problem. Put this before creating any textdraw inside OnGameModeInit callback.

Код:
TextDrawCreate(0.0, 0.0, "_");
Reply

Код:
stock FindPlayerIDForIP(ip[])
{
	new ip2[16];
 	for(new i = 0; i < MAX_PLAYERS; i++)
	{
 		if(IsPlayerConnected(i))
   		{
     		  GetPlayerIp(i,ip2,sizeof ip2);
	    	  if(strcmp(ip,ip2, true)==0)
		  {
		     return i;
		  }
		}
	}
	return -1;
}
i blame copy and paste for the bad indentation.
Reply

Nice function, but I suggest using a foreach include by ****** when you need to loop through all the players and compare some things like IP.
Reply

Searched thread for SetPlayerCameraPos and it looks like this topic hasn't been covered yet. This function is really handy for setting up the view for OnPlayerRequestClass and can be used for spectating also.

Notes:
camera angle is relative to the map not the player facing angle - this is being addressed for next edit.
mode=true when used in OnPlayerRequestClass - set the appropriate interiorid if not "0"

Код:
stock AdjustCameraAngle(playerid,mode)
{
	new Float:c[3], Float:angle;
	new Float:degrad=0.01745329251994;
	new Float:p[]={2033.1309,1543.0475,10.8203,90.00}; // playerrequestclass data
	new Float:distance = 10.0;			   // camera distance to player
	new Float:offset = 0.00;                           // camera facing angle
	new Float:pitch = 10.00;			   // camera pitch
	if(mode){
		SetPlayerPos(playerid,p[0],p[1],p[2]);
		SetPlayerFacingAngle(playerid,p[3]);
		SetPlayerInterior(playerid,0);		   // see notes
	}
	else{
		GetPlayerPos(playerid,p[0],p[1],p[2]);
	}
	angle=offset-180.00*degrad;
	c[0]=p[0]+floatsin(angle)*distance;
	c[1]=p[1]+floatcos(angle)*distance;
	c[2]=p[2]+pitch;                            		
	SetPlayerCameraPos(playerid,c[0],c[1],c[2]);
	SetPlayerCameraLookAt(playerid,p[0],p[1],p[2]);
}
Reply

Nice, but my opinion is that it is still easier to set it in a regular way (at least for me).
Reply

Hit and miss works too..

I will compliment you however on your ability to calculate angles without using math.
Some people aren't that bright.

Saw quite a few posts where people were having trouble getting this right. Some of these may never get it right..
But if it actually helps them get it.. it's worth the effort I suppose.
Reply

This function will locate the position that is directly in front of a player at a given distance.
It works well with /bring or /goto commands and keeps people from spawning on other players heads.

Test s[0]!=9999.99 on return to ensure the player is not spectating. If so, don't go there.

It's not nice to /bring a person in front of your vehicle

Код:
new Float:s[4];
new Bool:IsSpectactor[MAX_PLAYERS];

stock PlayerVacinityLocation(playerid,Float:distance)
{
	new reset[]={9999.99,0.00,0.00,0.00};
	new Float:degrad=0.01745329251994;
	new Float:angle;
	new Float:p[4];
	s=reset;
	if(!IsSpectator[playerid]){
		
		GetPlayerPos(playerid,p[0],p[1],p[2]);
		GetPlayerFacingAngle(playerid,p[3]);							
		if(IsPlayerInAnyVehicle(playerid)){
			new vehicleid=GetPlayerVehicleID(playerid);
			GetVehicleZAngle(playerid,p[3]);
		}
		angle=p[3]*degrad;
		s[0]=p[0]-floatsin(angle)*distance;
		s[1]=p[1]+floatcos(angle)*distance;
		s[2]=p[2]+0.0001;
		s[3]=p[3]+180.0;
	}
}
Reply

Not bad, but ****** created this:
pawn Код:
GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
{   // Created by ******

    new Float:a;

    GetPlayerPos(playerid, x, y, a);
    GetPlayerFacingAngle(playerid, a);

    if (GetPlayerVehicleID(playerid)) {
        GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
    }

    x += (distance * floatsin(-a, degrees));
    y += (distance * floatcos(-a, degrees));
}
Reply

Is that to get the X & Y positions for a player?
Reply

The XY coordinates in front of the player, as the function name suggests.
Reply

Thanks Grim_. There is clearly redundance in my statements. It's nice to see how accomplished people code similar tasks. Returning the values via the pointer to an argument is really good, but I'm not that familiar with the process. LoL -- passing global variables is sloppy work.

and thank you ******!!
Reply

WeaponSlotOf(w)
@w = weapon id

Well, this is my one-line function that will determinite which slot specific weapon will be stored in (simple - the slot of the weapon). It will return 0xFFFF (-1) if slot has not been found. http://pastebin.com/GZJz5bBU
Reply


Forum Jump:


Users browsing this thread: 6 Guest(s)