SA-MP Forums Archive
Attach - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Attach (/showthread.php?tid=332711)



Attach - Seregamil - 09.04.2012

Всем привет, возникла такая проблемка,
Делаю скрипт футбола чтобы мячик атачился, но такая проблема,
Когда приатачился мяч, то его нельзя пнуть вообще
А если без атача то все норм делает
Код
PHP код:

#include <a_samp>
forward PlayerToPoint(Float:radiplayeridFloat:xFloat:yFloat:z);
forward VladenieBall(playerid);
new 
FootBallBall;
new 
PlayGameTheFootBall[MAX_PLAYERS];
public 
OnGameModeInit()
{
    
UsePlayerPedAnims();
    
FootBallBall CreateObject(159889.6156922500.63232415.7893750.00000.00000.0000);
    return 
1;
}
public 
OnPlayerCommandText(playeridcmdtext[])
{
    if (
strcmp("/mycommand"cmdtexttrue10) == 0)
    {
        
SetPlayerPos(playerid,45.6425,2490.3450,16.4844);
        
SetTimer("Attach",100,1);
        
PlayGameTheFootBall[playerid] = 1;
        return 
1;
    }
    if(!
strcmp(cmdtext"/leave"true))
    {
        
SendClientMessage(playerid0xFFFFFFFF"");
        
PlayGameTheFootBall[playerid] = 0;
        return 
1;
    }
    return 
0;
}
forward Attach(playerid);
public 
Attach(playerid)
{
    new 
Float:PosXFloat:PosYFloat:PosZ;
    
GetObjectPos(FootBallBallPosXPosYPosZ);
    new 
Float:pxFloat:pyFloat:pz;
    if(
PlayerToPoint(1.7,playerid,PosX,PosY,PosZ))
    {
    
GetPlayerPos(playeridpxpypz);
    
GetXYInFrontOfPlayer(playeridpxpy7.0);
    
AttachObjectToPlayer(FootBallBall,playerid,-0.229000,0.548000,-0.232999,0.000000,0.000000,0.000000);
    }
    return 
1;
}
GetXYInFrontOfPlayer(playerid, &Float:x, &Float:yFloat:distance)
{
new 
Float:a;
GetPlayerPos(playeridxya);
GetPlayerFacingAngle(playerida);
if (
GetPlayerVehicleID(playerid))
{
GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
}
+= (distance floatsin(-adegrees));
+= (distance floatcos(-adegrees));
}
public 
OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    new 
Float:PosXFloat:PosYFloat:PosZ;
    
GetObjectPos(FootBallBallPosXPosYPosZ);
    new 
Float:pxFloat:pyFloat:pz;
    new 
Float:angle;
    
GetPlayerFacingAngle(playeridangle);
    if(
newkeys KEY_WALK && PlayGameTheFootBall[playerid] == 1)
    {
    if(
PlayerToPoint(1.7,playerid,PosX,PosY,PosZ))
    {
    
GetPlayerPos(playeridpxpypz);GetXYInFrontOfPlayer(playeridpxpy7.0);
    
MoveObject(FootBallBall,px,py+5,15.789375,10.0);
    
ApplyAnimation(playerid,"FIGHT_D","FightD_1",4.1,0,1,1,0,0);
    }
    }
    }
public 
PlayerToPoint(Float:radiplayeridFloat:xFloat:yFloat:z)
{
if(
IsPlayerConnected(playerid))
{
new 
Float:oldposxFloat:oldposyFloat:oldposz;
new 
Float:tempposxFloat:tempposyFloat:tempposz;
GetPlayerPos(playeridoldposxoldposyoldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((
tempposx radi) && (tempposx > -radi)) && ((tempposy radi) && (tempposy > -radi)) && ((tempposz radi) && (tempposz > -radi)))
{
return 
1;
}
}
return 
0;




Re: Attach - RAIDER (RU) - 09.04.2012

Зачем SendClientMessage(playerid, 0xFFFFFFFF, ""); ?


Re: Attach - eakwarp - 09.04.2012

Зачем?
SendClientMessage(playerid, 0xFFFFFFFF, "");

Почему?
PlayerToPoint(Float:radi, playerid, Float, Float:y, Float:z)

Зачем оно здесь вообще?
GetPlayerFacingAngle(playerid, angle);
GetPlayerPos(playerid, px, py, pz);


Копипаст - зло. А так, нужно удалять объект для деаттача, создавать перед игроком, после уже двигать.


Re: Attach - Stepashka - 09.04.2012

eakwarp, поспокойней будь, тут тебе не src, и я тут не позволю ругаться и показывать свой гонор, так что держи себя в руках, спасибо.


Re: Attach - Seregamil - 09.04.2012

Quote:

Зачем?
SendClientMessage(playerid, 0xFFFFFFFF, "");

Почему?
PlayerToPoint(Float:radi, playerid, Float, Float:y, Float:z)

Зачем оно здесь вообще?
GetPlayerFacingAngle(playerid, angle);
GetPlayerPos(playerid, px, py, pz);

успокойся,
Quote:

А так, нужно удалять объект для деаттача, создавать перед игроком, после уже двигать.

я удалял, но он всеравно когда начинал пинать податачивался к игроку
как исправить лучше объясни ну или пример кода приведи)


Re: Attach - Stepashka - 09.04.2012

Ну очевидно что срабатывает таймер и аттачит объект, при "пинке" став ключ и если он стоит не аттачь объект, через какой-то промежуток времени удаляй ключ


Re: Attach - eakwarp - 09.04.2012

Quote:
Originally Posted by Seregamil
Посмотреть сообщение
успокойся
Что тут успокаиваться, бесполезный код, устаревший код, ненужный код. Я вам намекаю, а то потом будете спрашивать, почему у вас %FUNCTION_NAME% хреново работает.


Re: Attach - Seregamil - 09.04.2012

Quote:

став ключ

какой ключ?
приведи пример любой в pawn если не трудно чтобы доперло)


Re: Attach - eakwarp - 09.04.2012

Quote:
Originally Posted by Seregamil
Посмотреть сообщение
какой ключ?
приведи пример любой в pawn если не трудно чтобы доперло)
new key;
if(func())
key=1;
else
key=0;


Re: Attach - Seregamil - 09.04.2012

мож я туплю мож не то чето
можешь в этом скрипте вставить чтобы норм пинал?