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:radi, playerid, Float:x, Float:y, Float:z);
forward VladenieBall(playerid);
new 
FootBallBall;
new 
PlayGameTheFootBall[MAX_PLAYERS];
public 
OnGameModeInit()
{
    
UsePlayerPedAnims();
    
FootBallBall = CreateObject(1598, 89.615692, 2500.632324, 15.789375, 0.0000, 0.0000, 0.0000);
    return 
1;
}
public 
OnPlayerCommandText(playerid, cmdtext[])
{
    if (
strcmp("/mycommand", cmdtext, true, 10) == 0)
    {
        
SetPlayerPos(playerid,45.6425,2490.3450,16.4844);
        
SetTimer("Attach",100,1);
        
PlayGameTheFootBall[playerid] = 1;
        return 
1;
    }
    if(!
strcmp(cmdtext, "/leave", true))
    {
        
SendClientMessage(playerid, 0xFFFFFFFF, "");
        
PlayGameTheFootBall[playerid] = 0;
        return 
1;
    }
    return 
0;
}
forward Attach(playerid);
public 
Attach(playerid)
{
    new 
Float:PosX, Float:PosY, Float:PosZ;
    
GetObjectPos(FootBallBall, PosX, PosY, PosZ);
    new 
Float:px, Float:py, Float:pz;
    if(
PlayerToPoint(1.7,playerid,PosX,PosY,PosZ))
    {
    
GetPlayerPos(playerid, px, py, pz);
    
GetXYInFrontOfPlayer(playerid, px, py, 7.0);
    
AttachObjectToPlayer(FootBallBall,playerid,-0.229000,0.548000,-0.232999,0.000000,0.000000,0.000000);
    }
    return 
1;
}
GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
{
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));
}
public 
OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    new 
Float:PosX, Float:PosY, Float:PosZ;
    
GetObjectPos(FootBallBall, PosX, PosY, PosZ);
    new 
Float:px, Float:py, Float:pz;
    new 
Float:angle;
    
GetPlayerFacingAngle(playerid, angle);
    if(
newkeys & KEY_WALK && PlayGameTheFootBall[playerid] == 1)
    {
    if(
PlayerToPoint(1.7,playerid,PosX,PosY,PosZ))
    {
    
GetPlayerPos(playerid, px, py, pz);GetXYInFrontOfPlayer(playerid, px, py, 7.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:radi, playerid, Float:x, Float:y, Float:z)
{
if(
IsPlayerConnected(playerid))
{
new 
Float:oldposx, Float:oldposy, Float:oldposz;
new 
Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
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

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