[Ajuda] Coordenada Random.
#1

Bom, estou precisando de uma forma para gerar uma coordenada prуximo ao NPC para ele ficar andando em vez de ficar como uma estatua parado.

Alguйm sabe uma lуgica para fazer tal aзгo?

Grato.

OBS: Uso o FCNPC.
Reply
#2

Vocк quer que ele movimente aleatoriamente como em circulos, vai e volta etc.. Ou vocк pretende fazer que ele siga um caminho aleatуrio sempre indo pelos paths, checando obstбculos etc..?
Reply
#3

Basicamente 3 funзхes:
PHP код:
FCNPC_SetAngle(ncpid,random(360));// setar o angulo para ele nгo ir apenas para uma direзгo
stock GetXYInFrontOfZombie(npcid, &Float:x, &Float:yFloat:distance//pegar posiзгo na frente do npc
{
    new 
Float:a;
    
FCNPC_GetPosition(npcidxya);
    
FCNPC_GetAngle(npcid);
    
+= (distance floatsin(-adegrees));
    
+= (distance floatcos(-adegrees));
}
FCNPC_GoTo(npcidxyz...  //mover npc 
PS: Isso nгo verifica obstбculos
Reply
#4

Algo como isto, agora caso vocк queira apenas no caminhos de path, terб que implementar...
PHP код:

public OnGameModeInit()
{
    
CA_Init();
}
FCNPC_MoveIA(npcidFloat:xFloat:yFloat:zFloat:radius)
{
    new
        
Float:tx,
        
Float:ty,
        
Float:tz,
        
iters
    
;
    do
    {
        
GetRandomPointInCircle(xyradiustxty);
        
CA_FindZ_For2DCoord(txtytz);
        if(++
iters 10)
            return 
0;
    }
    while(
CA_RayCastLine(xyztxtytznullnullnull));
    return 
FCNPC_GoTo(npcidtxtytz);
}
//GetRandomPointInCircle by Crayder
//https://github.com/AbyssMorgan/SA-MP/blob/master/include/SAM/3DTryg.inc#L1823
stock GetRandomPointInCircle(Float:x,Float:y,Float:radius,&Float:tx,&Float:ty){
    
//"float(random(1000001)) / 1000000.0" is RandomFloat for 0.0 - 1.0.
    
new Float:v3D_alfa float(random(1000001))/1000000.0,
        
Float:v3D_beta float(random(1000001))/1000000.0;
    if(
v3D_beta v3D_alfa) (((v3D_alfa) ^= (v3D_beta)), ((v3D_beta) ^= (v3D_alfa)), ((v3D_alfa) ^= (v3D_beta)))
    
tx + (v3D_beta radius floatcos(2.0 3.14159265358979323846 v3D_alfa v3D_beta));
    
ty + (v3D_beta radius floatsin(2.0 3.14159265358979323846 v3D_alfa v3D_beta));

Reply
#5

Ok, ajudaram muito.. Mas agora outra questгo, como faзo para usar o MapAndreas para eles nгo saнrem do nнvel do chгo?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)