[AJUDA]sobre Stock
#1

ae alguem pode me passar um tutorial de como criar stock?

eu sei que stock й tipo um resumo de uma funзгo e tals, mas eu queria saber como eu crio stock e uso ela em um if

olha sу oque eu to querendo fazer:

pawn Код:
stock IsPlayerInRangeOfObject(playerid, objectid)
{
    new
        Float: X,
        Float: Y,
        Float: Z;
    GetObjectPos(objectid, X, Y, Z);
    if(IsPlayerInRangeOfPoint(playerid, 20, X, Y, Z)) return 1;
}
essa stock esta correta? eu criei ela mais с tenho certeza se ta certo

eu quero fazer pra verificar se o player ta no raio da posiзгo do objeto, como eu faзo isso?
Reply
#2

й fбcil, й sу utilizar:
pawn Код:
if(IsPlayerInRangeOfObject(playerid, id_do_objeto))
Exemplo:

pawn Код:
new meu_objeto;

//OnFilterScriptInit
meu_objeto = CreateObject(...);

// OnPlayerUpdate  // EXEMPLO
if(IsPlayerInRangeOfObject(playerid, meu_objeto))
{
       print("VOCК ESTБ EM MEU OBJETO");
}
Espero ter ajudado.
se ajudei, olhe minha assinatura ^^
Reply
#3

Cara... stock nгo tem nada a ver com "resumo" de funзгo ou coisa parecida. Da onde tirou isso? rs Estгo te ensinando umas coisas aн... que por favor.

Enfim, resuminho do tipo de funзхs pra vocкs que ainda nгo sabem:

pawn Код:
PlayerAccount(playerid)
Essa й uma funзгo "normal". Nгo й identificada nem como pъblica e nem como "stock".

Quando serб compilada? Desde o momento em que vocк escrevк-la em seu script. Mesmo que vocк a chame ou nгo.

Pode ser compartilhada com outros scripts (usando CallRemoteFunction)? Nгo.

pawn Код:
stock PlayerAccount(playerid)
Essa й uma funзгo "stock". Ela й uma funзгo como qualquer outra.

Quando serб compilada? Somente quando ela estiver sendo chamada em algum lugar do mesmo script. Caso ela contenha infinitos erros em seu cуdigo mas nгo seja chamada, o compilador irб ignorб-la como se ela nгo estivesse lб ou estivesse comentada.

Pode ser compartilhada com outros scripts (usando CallRemoteFunction)? Nгo.

pawn Код:
public PlayerAccount(playerid)
Essa й uma funзгo pъblica. Ela й uma funзгo como qualquer outra, mas difere-se no fato de que pode ser chamada externamente por outro script, como um filtro (fitlerscript) por exemplo, atravйs da funзгo CallRemoteFunction.

Quando serб compilada? Desde o momento em que vocк escrevк-la em seu script. Mesmo que vocк a chame ou nгo.

* Funзхes pъblicas precisam do seu forward para definir que podem ser acessadas atravйs de outro script e tambйm por alguma outra frescura do compilador que atй hoje nгo descobri, rs.

Pode ser compartilhada com outros scripts (usando CallRemoteFunction)? Sim.
Reply
#4

Quote:
Originally Posted by DarkScripter
Посмотреть сообщение
й fбcil, й sу utilizar:
pawn Код:
if(IsPlayerInRangeOfObject(playerid, id_do_objeto))
Exemplo:

pawn Код:
new meu_objeto;

//OnFilterScriptInit
meu_objeto = CreateObject(...);

// OnPlayerUpdate  // EXEMPLO
if(IsPlayerInRangeOfObject(playerid, meu_objeto))
{
       print("VOCК ESTБ EM MEU OBJETO");
}
Espero ter ajudado.
se ajudei, olhe minha assinatura ^^
entгo essa stock que eu criei esta correta?? quando eu compilo da warning que a funзгo nгo retorna nenhum valor, que valor eu devo colocar exatamente?
Reply
#5

pawn Код:
stock IsPlayerInRangeOfObject(playerid, objectid)
{
    new Float: X,
        Float: Y,
        Float: Z;
    GetObjectPos(objectid, X, Y, Z);
    if(IsPlayerInRangeOfPoint(playerid, 20.0, X, Y, Z)) return 1;
    return 0;
}
Assim.
Reply
#6

pawn Код:
stock IsPlayerInRangeOfObject(playerid, objectid)
{
    new
        Float: X,
        Float: Y,
        Float: Z;
    GetObjectPos(objectid, X, Y, Z);
    if(IsPlayerInRangeOfPoint(playerid, 20, X, Y, Z)) return 1;
    else return 0;
}
Reply
#7

nгo deu certo nгo....

olha a stock:

pawn Код:
stock IsPlayerInRangeOfObject(playerid, objectid)
{
    new
        Float: X,
        Float: Y,
        Float: Z;
    GetObjectPos(objectid, X, Y, Z);
    if(IsPlayerInRangeOfPoint(playerid, 20, X, Y, Z)) return 1;
    return 0;
}
e o comando

pawn Код:
CMD:cortar(playerid, params[])
    {
                #pragma unused params
        if(IsPlayerInRangeOfObject(playerid,Arvore[0]))
        {
            SendClientMessage(playerid, AMARELO, "cortando a madeira, aguarde");
        }
        else if(!IsPlayerInRangeOfObject(playerid, Arvore[0]))
        {
            SendClientMessage(playerid, AMARELO, "vocк nгo esta perto de nenhuma arvore!");
        }
        return 1;
    }
acontece que ele sempre manda a mensagem "vocк nгo esta perto de nenhuma arvore", mesmo que eu esteja dentro da arvore.... eu atй criei um teleporte pra setar a posiзгo do player exatamente pra posiзгo do objeto, mas msm assim nгo da
Reply
#8

pawn Код:
stock IsPlayerInRangeOfObject(float:radi, playerid, objectid)
{
    new Float: Pos[3],      
    GetObjectPos(objectid, Pos[0], Pos[1], Pos[2]);
    if(IsPlayerInRangeOfPoint(playerid, radi, X, Y, Z)) return 1;
    return 0;
}

CMD:cortar(playerid, params[])
{
    #pragma unused params
    if(IsPlayerInRangeOfObject(50.0, playerid, Arvore[0]))
    {
        SendClientMessage(playerid, AMARELO, "cortando a madeira, aguarde");
    }
    else
    {
        SendClientMessage(playerid, AMARELO, "vocк nгo esta perto de nenhuma arvore!");
    }
    return 1;
}
Tenta ai, se nгo der, manda o Arvore[0] = ..
Reply
#9

deu uns erros e warning tag mismath mas eu arrumei e mesmo assim nгo deu certo
o arvore й um objeto...

pawn Код:
Arvore[0] = CreateDynamicObject(690,2953.30004883,-3999.50000000,7.59999990,0.00000000,0.00000000,0.00000000);
Reply
#10

Quote:
Originally Posted by Lucas_Alemao
Посмотреть сообщение
deu uns erros e warning tag mismath mas eu arrumei e mesmo assim nгo deu certo
o arvore й um objeto...

pawn Код:
Arvore[0] = CreateDynamicObject(690,2953.30004883,-3999.50000000,7.59999990,0.00000000,0.00000000,0.00000000);
Tem parвmetros mais do que necessбrio ae.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)