Attach
#1

Всем привет, возникла такая проблемка,
Делаю скрипт футбола чтобы мячик атачился, но такая проблема,
Когда приатачился мяч, то его нельзя пнуть вообще
А если без атача то все норм делает
Код
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;
} 
Reply
#2

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

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

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

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


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

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

Quote:

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

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

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

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

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

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

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

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

Quote:

став ключ

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

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

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


Forum Jump:


Users browsing this thread: 1 Guest(s)