Szerző Téma: NPC buszok  (Megtekintve 1737 alkalommal)

Nem elérhető Tomee

  • 385
    • Profil megtekintése
NPC buszok
« Dátum: 2014. Április 06. - 18:39:17 »
0 Show voters
Sziasztok.
Olyan problémám lenne, hogy van egy olyan scriptem, amiben az NPC buszok megállnak, ha valakit érzékelnek maguk elõtt.
A problémám vele az, hogy ha NPC van elõttük, akkor is megállnak. Van két buszom, ami egymás mellett elmegy és úgy is érzékel ha a busz orra mellett van valaki így ha elmennek egymás mellett a buszok akkor megállnak és az istenért se akarnak tovább menni.
A kérdésem a következõ:
Hogy tudnám megoldani, hogy ha NPC van elõttük akkor ne álljon meg?
itt a script
 
#define RECORDING \"npc_buszfeher1\"
#define RECORDING_TYPE 1
#include <a_npc>
new gStoppedForTraffic = 0;
new megallo = 0;
#define AHEAD_OF_CAR_DISTANCE    8.0
#define SCAN_RADIUS            8.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));
}
public OnNPCModeInit()
{
SetTimer(\"ScanTimer\",200,1);
}
LookForAReasonToPause()
{
     new Float:X,Float:Y,Float:Z;
new x=0;
GetMyPos(X,Y,Z);
GetXYInfrontOfMe(AHEAD_OF_CAR_DISTANCE,X,Y);
while(x!=MAX_PLAYERS) {
    if(IsPlayerConnected(x) && IsPlayerStreamedIn(x))
{
   if( GetPlayerState(x) == PLAYER_STATE_DRIVER ||
       GetPlayerState(x) == PLAYER_STATE_ONFOOT )
   {
      if(IsPlayerInRangeOfPoint(x,SCAN_RADIUS,X,Y,Z)) {
         return 1;
      }
   }
}
x++;
}
    while(x!=MAX_VEHICLES)
{
if(IsPlayerInRangeOfPoint(x,SCAN_RADIUS,X,Y,Z)) {
   return 1;
}
x++;
}
return 0;
}
forward ScanTimer();
public ScanTimer()
{
if(megallo == 0)
{
    new ReasonToPause = LookForAReasonToPause();
if(ReasonToPause && !gStoppedForTraffic)
{
    //Megáll
PauseRecordingPlayback();
gStoppedForTraffic = 1;
}
else if(!ReasonToPause && gStoppedForTraffic)
{
    //Tovább megy
    ResumeRecordingPlayback();
    gStoppedForTraffic = 0;
}
}
}
 
public OnRecordingPlaybackEnd ( )
{
  StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
  return 0;
}
  public OnNPCEnterVehicle ( vehicleid, seatid )
  {
    StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
    return 0;
  }
  public OnNPCExitVehicle ( )
  {
    StopRecordingPlayback ( );
    return 0;
  }
new bool:Debug=true;
 
stock egyezik(string1[], string2[], bool:betumeretmindegy = true)
{
return !strcmp(string1, string2, betumeretmindegy);
}
stock PlayerNameEx(playerid)
{
new nev[MAX_PLAYER_NAME];
GetPlayerName(playerid, nev, sizeof(nev));
return nev;
}
public OnClientMessage(color, text[])
{
    if(egyezik(text,\"szünet\") || egyezik(text,\"szunet\"))
    {
        PauseRecordingPlayback();
        megallo = 1;
        if(Debug)
       printf(\"NPC: %s - Szüneteltetve\",RECORDING);
    }
    else if(egyezik(text,\"folytat\"))
    {
        ResumeRecordingPlayback();
       megallo = 0;
        if(Debug)
       printf(\"NPC: %s - Folytatva\",RECORDING);
    }
    else if(egyezik(text,\"stop\"))
    {
        StopRecordingPlayback();
       megallo = 1;
        if(Debug)
       printf(\"NPC: %s - Megállítva\",RECORDING);
    }
    else if(egyezik(text,\"play\"))
    {
       StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
       megallo = 0;
        if(Debug)
       printf(\"NPC: %s - elindítva\",RECORDING);
    }
}
« Utoljára szerkesztve: 2014. Április 06. - 18:40:52 írta Tomee »

Nem elérhető Wiliam Levy

  • 594
  • Wiliam Levy
    • Profil megtekintése
NPC buszok
« Válasz #1 Dátum: 2014. Április 06. - 21:18:55 »
0 Show voters
Tulajdonképpen sehogy, de van rá egy megoldás, olyan tipusu kocsi elõtt ne álljon meg mint ami maga, tehát pl. ha a te NPC-d tipusa COACH(437) akkor a 437-es modellû kocsit vezetõ ember elõtt nem áll meg... Mást nem nagyon tudsz csinálni... :S

Nem elérhető Tomee

  • 385
    • Profil megtekintése
NPC buszok
« Válasz #2 Dátum: 2014. Április 07. - 06:27:31 »
0 Show voters
Ez jó ötlet, du ki is próbálom. Köszi

Nem elérhető Wiliam Levy

  • 594
  • Wiliam Levy
    • Profil megtekintése
NPC buszok
« Válasz #3 Dátum: 2014. Április 07. - 06:34:39 »
0 Show voters
De látom neked benne van a clienmessages cucc igy a szkripteddel vagy gamemododdal ellenõrzöd hogyvan e valaki a buszelõtt és küldesz neki egy sendclientmessaget ami tartalmazza hogy \"szünet\" majd ha elment elõle a valaki akkor \"folytat\" dde vigyázz  csak egyet küldhet neki a szerver mindegyikbõl különben buggos lesz! Magyarul nrm küldhet neki kétszer szünetet ezért változoba kell tarolni!!!!

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
NPC buszok
« Válasz #4 Dátum: 2014. Április 07. - 06:42:13 »
0 Show voters
Idézetet írta: Wiliam Levy date=1396811935\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47582\" data-ipsquote-contentclass=\"forums_Topic
Tulajdonképpen sehogy, de van rá egy megoldás, olyan tipusu kocsi elõtt ne álljon meg mint ami maga, tehát pl. ha a te NPC-d tipusa COACH(437) akkor a 437-es modellû kocsit vezetõ ember elõtt nem áll meg... Mást nem nagyon tudsz csinálni... :S
 
Esetleg az NPC nem tudja lekérdezni a közelben lévõ X játékost, hogy az NPC -e..? :) Nem vagyok profi benne csak egy tipp volt, lehet hülyeség. :D

Nem elérhető Wiliam Levy

  • 594
  • Wiliam Levy
    • Profil megtekintése
NPC buszok
« Válasz #5 Dátum: 2014. Április 07. - 09:40:28 »
0 Show voters
Nem sajnos az a_ npc.inc-ben nem szerepel az IsPlayerNPC

Nem elérhető Szilard

  • Adminisztrátor
  • 1832
    • Profil megtekintése
NPC buszok
« Válasz #6 Dátum: 2014. Április 07. - 15:37:06 »
0 Show voters
Idézetet írta: Wiliam Levy date=1396856428\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47582\" data-ipsquote-contentclass=\"forums_Topic
Nem sajnos az a_ npc.inc-ben nem szerepel az IsPlayerNPC
 
http://wiki.sa-mp.com/wiki/IsPlayerNPC

Nem elérhető Wiliam Levy

  • 594
  • Wiliam Levy
    • Profil megtekintése
NPC buszok
« Válasz #7 Dátum: 2014. Április 07. - 15:50:28 »
0 Show voters
Idézetet írta: Szilard00 date=1396877826\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47582\" data-ipsquote-contentclass=\"forums_Topic


Nem sajnos az a_ npc.inc-ben nem szerepel az IsPlayerNPC
 
http://wiki.sa-mp.com/wiki/IsPlayerNPC
 
[/quote]
Ez a_samp.inc..... az a_npc INCLUDEban nincs IsPlayerNPC!!!!!!!

Dupla hozzászólás automatikusan összefûzve. ( 2014. Április 07. - 18:14:46 )

Na, kedves témanyitó, rászánom magam a hétvégén majd hogy összerakjak neked egy komplett NPC busz szkriptet, ha tudsz várni hétvégéig mert hétköznap gép eltiltásba vagyook a drágalátos osztályfõnököm miatt... -.-
Írd le emailben hogy mit szeretnél, hogy tudjon. -> [email protected]
« Utoljára szerkesztve: 2014. Április 07. - 18:14:46 írta Wiliam Levy »

Nem elérhető Tomee

  • 385
    • Profil megtekintése
NPC buszok
« Válasz #8 Dátum: 2014. Április 07. - 19:34:07 »
0 Show voters
A GetVehicleModel nicns definiálva :/ de ha össze tudod hozni azt megköszönném.
Ment is az email

Nem elérhető Wiliam Levy

  • 594
  • Wiliam Levy
    • Profil megtekintése
NPC buszok
« Válasz #9 Dátum: 2014. Április 08. - 06:17:35 »
+1 Show voters
Ha szeretnéd akkor egy teljes NPC busz filterszkriptet összeálítok neked a hétvégén ;)

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
NPC buszok
« Válasz #10 Dátum: 2014. Április 09. - 14:47:03 »
0 Show voters
[mod]Zártam![/mod]

Nem elérhető Tomee

  • 385
    • Profil megtekintése
NPC buszok
« Válasz #11 Dátum: 2014. Április 06. - 18:39:17 »
0 Show voters
Sziasztok.
Olyan problémám lenne, hogy van egy olyan scriptem, amiben az NPC buszok megállnak, ha valakit érzékelnek maguk elõtt.
A problémám vele az, hogy ha NPC van elõttük, akkor is megállnak. Van két buszom, ami egymás mellett elmegy és úgy is érzékel ha a busz orra mellett van valaki így ha elmennek egymás mellett a buszok akkor megállnak és az istenért se akarnak tovább menni.
A kérdésem a következõ:
Hogy tudnám megoldani, hogy ha NPC van elõttük akkor ne álljon meg?
itt a script
 
#define RECORDING \"npc_buszfeher1\"
#define RECORDING_TYPE 1
#include <a_npc>
new gStoppedForTraffic = 0;
new megallo = 0;
#define AHEAD_OF_CAR_DISTANCE    8.0
#define SCAN_RADIUS            8.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));
}
public OnNPCModeInit()
{
SetTimer(\"ScanTimer\",200,1);
}
LookForAReasonToPause()
{
     new Float:X,Float:Y,Float:Z;
new x=0;
GetMyPos(X,Y,Z);
GetXYInfrontOfMe(AHEAD_OF_CAR_DISTANCE,X,Y);
while(x!=MAX_PLAYERS) {
    if(IsPlayerConnected(x) && IsPlayerStreamedIn(x))
{
   if( GetPlayerState(x) == PLAYER_STATE_DRIVER ||
       GetPlayerState(x) == PLAYER_STATE_ONFOOT )
   {
      if(IsPlayerInRangeOfPoint(x,SCAN_RADIUS,X,Y,Z)) {
         return 1;
      }
   }
}
x++;
}
    while(x!=MAX_VEHICLES)
{
if(IsPlayerInRangeOfPoint(x,SCAN_RADIUS,X,Y,Z)) {
   return 1;
}
x++;
}
return 0;
}
forward ScanTimer();
public ScanTimer()
{
if(megallo == 0)
{
    new ReasonToPause = LookForAReasonToPause();
if(ReasonToPause && !gStoppedForTraffic)
{
    //Megáll
PauseRecordingPlayback();
gStoppedForTraffic = 1;
}
else if(!ReasonToPause && gStoppedForTraffic)
{
    //Tovább megy
    ResumeRecordingPlayback();
    gStoppedForTraffic = 0;
}
}
}
 
public OnRecordingPlaybackEnd ( )
{
  StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
  return 0;
}
  public OnNPCEnterVehicle ( vehicleid, seatid )
  {
    StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
    return 0;
  }
  public OnNPCExitVehicle ( )
  {
    StopRecordingPlayback ( );
    return 0;
  }
new bool:Debug=true;
 
stock egyezik(string1[], string2[], bool:betumeretmindegy = true)
{
return !strcmp(string1, string2, betumeretmindegy);
}
stock PlayerNameEx(playerid)
{
new nev[MAX_PLAYER_NAME];
GetPlayerName(playerid, nev, sizeof(nev));
return nev;
}
public OnClientMessage(color, text[])
{
    if(egyezik(text,\"szünet\") || egyezik(text,\"szunet\"))
    {
        PauseRecordingPlayback();
        megallo = 1;
        if(Debug)
       printf(\"NPC: %s - Szüneteltetve\",RECORDING);
    }
    else if(egyezik(text,\"folytat\"))
    {
        ResumeRecordingPlayback();
       megallo = 0;
        if(Debug)
       printf(\"NPC: %s - Folytatva\",RECORDING);
    }
    else if(egyezik(text,\"stop\"))
    {
        StopRecordingPlayback();
       megallo = 1;
        if(Debug)
       printf(\"NPC: %s - Megállítva\",RECORDING);
    }
    else if(egyezik(text,\"play\"))
    {
       StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
       megallo = 0;
        if(Debug)
       printf(\"NPC: %s - elindítva\",RECORDING);
    }
}
« Utoljára szerkesztve: 2014. Április 06. - 18:40:52 írta Tomee »

Nem elérhető Wiliam Levy

  • 594
  • Wiliam Levy
    • Profil megtekintése
NPC buszok
« Válasz #12 Dátum: 2014. Április 06. - 21:18:55 »
0 Show voters
Tulajdonképpen sehogy, de van rá egy megoldás, olyan tipusu kocsi elõtt ne álljon meg mint ami maga, tehát pl. ha a te NPC-d tipusa COACH(437) akkor a 437-es modellû kocsit vezetõ ember elõtt nem áll meg... Mást nem nagyon tudsz csinálni... :S

Nem elérhető Tomee

  • 385
    • Profil megtekintése
NPC buszok
« Válasz #13 Dátum: 2014. Április 07. - 06:27:31 »
0 Show voters
Ez jó ötlet, du ki is próbálom. Köszi

Nem elérhető Wiliam Levy

  • 594
  • Wiliam Levy
    • Profil megtekintése
NPC buszok
« Válasz #14 Dátum: 2014. Április 07. - 06:34:39 »
0 Show voters
De látom neked benne van a clienmessages cucc igy a szkripteddel vagy gamemododdal ellenõrzöd hogyvan e valaki a buszelõtt és küldesz neki egy sendclientmessaget ami tartalmazza hogy \"szünet\" majd ha elment elõle a valaki akkor \"folytat\" dde vigyázz  csak egyet küldhet neki a szerver mindegyikbõl különben buggos lesz! Magyarul nrm küldhet neki kétszer szünetet ezért változoba kell tarolni!!!!

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal