Fly function works only for ID 0, weird ...
#9

Quote:
Originally Posted by jlalt
Посмотреть сообщение
Yo nigga, calling a function as much as possible every milli-second causes in crash xp.

@NeXoR your code has nothing wrong, I have used this system before it was working perfect however I've optimized its codes so try the new system:

PHP код:
#include a_samp
#include zcmd
/*******************************Superman System********************************/
#define DontUSEOnPlayerUpdate       false
new bool:flying[MAX_PLAYERS char];
#if DontUSEOnPlayerUpdate
new SuperManTimerID[MAX_PLAYERS];
forward public AdminFly(playerid);
#endif
/******************************************************************************/
Float:SetPlayerToFacePos(playeridFloat:XFloat:Y)
{
    new
        
Float:pX1,
        
Float:pY1,
        
Float:pZ1,
        
Float:ang;
    if(!
IsPlayerConnected(playerid)) return 0.0;
    
GetPlayerPos(playeridpX1pY1pZ1);
    if( 
pY1 ang = (-acos((pX1) / floatsqroot((pX1)*(pX1) + (pY1)*(pY1))) - 90.0);
    else if( 
pY1 && pX1 ang = (acos((pX1) / floatsqroot((pX1)*(pX1) + (pY1)*(pY1))) - 450.0);
    else if( 
pY1 ang = (acos((pX1) / floatsqroot((pX1)*(pX1) + (pY1)*(pY1))) - 90.0);
    if(
pX1ang = (floatabs(floatabs(ang) + 180.0));
    else 
ang = (floatabs(ang) - 180.0);
    
ang += 180.0;
    
SetPlayerFacingAngle(playeridang);
     return 
ang;
}
public 
OnPlayerUpdate(playerid)
{
    
#if !DontUSEOnPlayerUpdate
    
if(flying{playerid})
    {
        if(!
IsPlayerInAnyVehicle(playerid))
        {
            new
                
keys,
                
ud,
                
lr,
                
Float:x[2],
                
Float:y[2],
                
Float:z;
            
GetPlayerKeys(playeridkeysudlr);
            
GetPlayerVelocity(playeridx[0], y[0], z);
            if(
ud == KEY_UP)
            {
                
GetPlayerCameraPos(playeridx[0], y[0], z);
                
GetPlayerCameraFrontVector(playeridx[1], y[1], z);
                
ApplyAnimation(playerid"SWIM""SWIM_crawl"4.101100);
                
SetPlayerToFacePos(playeridx[0] + x[1], y[0] + y[1]);
                
SetPlayerVelocity(playeridx[1], y[1], z);
            }
            else
            {
                
SetPlayerVelocity(playerid0.00.00.01);
            }
        }
    }
    
#endif
    
return 1;
}
public 
OnPlayerConnect(playerid)
{
    
flying{playerid} = false;
    
#if DontUSEOnPlayerUpdate
    
SuperManTimerID[playerid] = 0;
    
#endif
}
public 
OnPlayerDisconnect(playerid,reason)
{
    
#if DontUSEOnPlayerUpdate
    
if(SuperManTimerID[playerid])
    {
        
KillTimer(SuperManTimerID[playerid]);
        
SuperManTimerID[playerid] = 0;
    }
    
#endif
}
#if DontUSEOnPlayerUpdate
public AdminFly(playerid)
{
    if(!
IsPlayerConnected(playerid))
        return 
KillTimer(SuperManTimerID[playerid]);
    if(
flying{playerid})
    {
        if(!
IsPlayerInAnyVehicle(playerid))
        {
            new
                
keys,
                
ud,
                
lr,
                
Float:x[2],
                
Float:y[2],
                
Float:z;
            
GetPlayerKeys(playeridkeysudlr);
            
GetPlayerVelocity(playeridx[0], y[0], z);
            if(
ud == KEY_UP)
            {
                
GetPlayerCameraPos(playeridx[0], y[0], z);
                
GetPlayerCameraFrontVector(playeridx[1], y[1], z);
                
ApplyAnimation(playerid"SWIM""SWIM_crawl"4.101100);
                
SetPlayerToFacePos(playeridx[0] + x[1], y[0] + y[1]);
                
SetPlayerVelocity(playeridx[1], y[1], z);
            }
            else
            
SetPlayerVelocity(playerid0.00.00.01);
        }
    }
    return 
1;
}
#endif
CMD:superman(playeridparams[])
{
    if(!
IsAllowed(playerid2))
    {
        new 
Float:xFloat:yFloat:z;
        if(!
flying{playerid})
        {
            
GetPlayerPos(playeridxyz);
            
SetPlayerPos(playeridxyz+5);
            
SetPlayerArmour(playerid1000000000.0);
            
SetPlayerHealth(playerid1000000000.0);
            
#if DontUSEOnPlayerUpdate
            
SuperManTimerID[playerid] = SetTimerEx("AdminFly"100true"d"playerid);
            
#endif
            
flying{playerid} = true;
        }
        else
        {
            
GetPlayerPos(playeridxyz);
            
SetPlayerPos(playeridxyz+0.5);
            
ClearAnimations(playerid);
            
SetPlayerArmour(playerid100.0);
            
SetPlayerHealth(playerid100.0);
            
flying{playerid} = false;
            
#if DontUSEOnPlayerUpdate
            
KillTimer(SuperManTimerID[playerid]);
            
SuperManTimerID[playerid] = 0;
            
#endif
            
return 1;
        }
    }
    else
    {
        
NoAuth(playerid);
    }
    return 
1;

Still not working for ID 1
Reply


Messages In This Thread
Fly function works only for ID 0, weird ... - by NeXoR - 29.10.2016, 13:42
Re: Fly function works only for ID 0, weird ... - by iLearner - 29.10.2016, 14:17
Re: Fly function works only for ID 0, weird ... - by NeXoR - 29.10.2016, 14:57
Re: Fly function works only for ID 0, weird ... - by Yaa - 29.10.2016, 15:00
Re: Fly function works only for ID 0, weird ... - by NeXoR - 29.10.2016, 16:01
Re: Fly function works only for ID 0, weird ... - by oMa37 - 29.10.2016, 16:42
Re: Fly function works only for ID 0, weird ... - by NeXoR - 29.10.2016, 18:01
Re: Fly function works only for ID 0, weird ... - by jlalt - 29.10.2016, 18:04
Re: Fly function works only for ID 0, weird ... - by NeXoR - 30.10.2016, 12:40
Re: Fly function works only for ID 0, weird ... - by NeXoR - 31.10.2016, 01:38

Forum Jump:


Users browsing this thread: 1 Guest(s)