Szerző Téma: NPC blokkolás?  (Megtekintve 705 alkalommal)

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
NPC blokkolás?
« Dátum: 2016. január 24. - 19:51:01 »
0 Show voters
Sziasztok !
Érdekelne engem az a dolog, hogy hogyan lehet azt megcsinálni, hogyha valaki beáll az NPC elé, akkor Stopolja a Recordot, és csak akkor indul el, ha senki nem áll elötte.
Jó pár helyen láttam ezt, ezért gondoltam megkérdem !
Köszönöm a válaszokat !

Nem elérhető BVZS

  • 487
    • Profil megtekintése
NPC blokkolás?
« Válasz #1 Dátum: 2016. január 24. - 23:05:14 »
0 Show voters
// telo
Ha jol tudom van egy filterscript amiben ez a funkcio meg van irva. Ha letoltesz egy alap szervert akkor abban vagy az fs mappaban vagy npcmodes mappaban lesz, talav valami ls_ a neve

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
NPC blokkolás?
« Válasz #2 Dátum: 2016. január 25. - 16:49:48 »
0 Show voters
#include <a_npc>
new MegAllt;
forward ScanTimer();
#define AHEAD_OF_CAR_DISTANCE    11
#define SCAN_RADIUS            11
public OnNPCModeInit()
{
SetTimer(\"ScanTimer\",100,1);
}
public OnNPCEnterVehicle(vehicleid,seatid)
{
StartPlayback();
return 0;
}
public OnNPCExitVehicle()
{
StopRecordingPlayback();
return 0;
}
public OnNPCSpawn()
{
StartPlayback();
return 0;
}
public OnRecordingPlaybackEnd()
{
StartPlayback();
return 0;
}
public ScanTimer()

    new ReasonToPause = LookForAReasonToPause();
   
if(ReasonToPause && MegAllt == 0)
{
PauseRecordingPlayback();
MegAllt = 1;
}
else if(!ReasonToPause && MegAllt == 1)
{
    ResumeRecordingPlayback();
    MegAllt = 0;
}
}
stock LookForAReasonToPause()
{
     new Float:X,Float:Y,Float:Z;
GetMyPos(X,Y,Z);
GetXYInfrontOfMe(AHEAD_OF_CAR_DISTANCE,X,Y);
for(new x = 0; x < MAX_PLAYERS; x++)
{
    if(IsPlayerConnected(x))
{
   if(GetPlayerState(x) == PLAYER_STATE_DRIVER || GetPlayerState(x) == PLAYER_STATE_ONFOOT)
   {
      if(IsPlayerInRangeOfPoint(x,SCAN_RADIUS,X,Y,Z))
      {
         return 1;
      }
   }
}
}
return 0;
}
stock GetXYInfrontOfMe(Float:distance, &Float:x, &Float:y)
{
    new Float:z, Float:angle;
    GetMyPos(x,y,z);
    GetMyFacingAngle(angle);
    x += (distance * floatsin(-angle, degrees));
    y += (distance * floatcos(-angle, degrees));
}
stock StartPlayback()
{
StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER,\"BusNPC\");
MegAllt = 0;
}

 
Ez a kód van, kipróbáltam, azonban ha melette állok meg akkor is megáll, és ha elötte vagyok pl. kocsival akkor még el üt és csak utána ál meg.
Esetleg valami ötlet?

Nem elérhető BVZS

  • 487
    • Profil megtekintése
NPC blokkolás?
« Válasz #3 Dátum: 2016. január 25. - 20:05:54 »
0 Show voters
Igen ez azért van, mert jelen esetben nem a busz elejét nézi hanem a busz közepétől mért körzetet.
[include] Extended vehicle functions, ebből a
 
GetVehicleHood(vehicleid, &Float:x, &Float:y, &Float:z);

 
fog kelleni neked. Ezzel tudod csekkolni a járművek elejét.

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
NPC blokkolás?
« Válasz #4 Dátum: 2016. január 25. - 20:21:17 »
0 Show voters
Az a baj, hogy nincs vehicleid-m. :(
Ahogy most kinéz :
\"70tK9yg.png\"
Ahogy kellene  :
\"exrrF4S.png\"
Valami ötlet?

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal