GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Tomee - 2014. Április 06. - 18:39:17

Cím: NPC buszok
Írta: Tomee - 2014. Április 06. - 18:39:17
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);
    }
}
Cím: NPC buszok
Írta: Wiliam Levy - 2014. Április 06. - 21:18:55
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
Cím: NPC buszok
Írta: Tomee - 2014. Április 07. - 06:27:31
Ez jó ötlet, du ki is próbálom. Köszi
Cím: NPC buszok
Írta: Wiliam Levy - 2014. Április 07. - 06:34:39
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!!!!
Cím: NPC buszok
Írta: ZyZu. - 2014. Április 07. - 06:42:13
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
Cím: NPC buszok
Írta: Wiliam Levy - 2014. Április 07. - 09:40:28
Nem sajnos az a_ npc.inc-ben nem szerepel az IsPlayerNPC
Cím: NPC buszok
Írta: Szilard - 2014. Április 07. - 15:37:06
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
Cím: NPC buszok
Írta: Wiliam Levy - 2014. Április 07. - 15:50:28
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]
Cím: NPC buszok
Írta: Tomee - 2014. Április 07. - 19:34:07
A GetVehicleModel nicns definiálva :/ de ha össze tudod hozni azt megköszönném.
Ment is az email
Cím: NPC buszok
Írta: Wiliam Levy - 2014. Április 08. - 06:17:35
Ha szeretnéd akkor egy teljes NPC busz filterszkriptet összeálítok neked a hétvégén ;)
Cím: NPC buszok
Írta: Flash - 2014. Április 09. - 14:47:03
[mod]Zártam![/mod]
Cím: NPC buszok
Írta: Tomee - 2014. Április 06. - 18:39:17
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);
    }
}
Cím: NPC buszok
Írta: Wiliam Levy - 2014. Április 06. - 21:18:55
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
Cím: NPC buszok
Írta: Tomee - 2014. Április 07. - 06:27:31
Ez jó ötlet, du ki is próbálom. Köszi
Cím: NPC buszok
Írta: Wiliam Levy - 2014. Április 07. - 06:34:39
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!!!!
Cím: NPC buszok
Írta: ZyZu. - 2014. Április 07. - 06:42:13
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
Cím: NPC buszok
Írta: Wiliam Levy - 2014. Április 07. - 09:40:28
Nem sajnos az a_ npc.inc-ben nem szerepel az IsPlayerNPC
Cím: NPC buszok
Írta: Szilard - 2014. Április 07. - 15:37:06
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
Cím: NPC buszok
Írta: Wiliam Levy - 2014. Április 07. - 15:50:28
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]
Cím: NPC buszok
Írta: Tomee - 2014. Április 07. - 19:34:07
A GetVehicleModel nicns definiálva :/ de ha össze tudod hozni azt megköszönném.
Ment is az email
Cím: NPC buszok
Írta: Wiliam Levy - 2014. Április 08. - 06:17:35
Ha szeretnéd akkor egy teljes NPC busz filterszkriptet összeálítok neked a hétvégén ;)
Cím: NPC buszok
Írta: Flash - 2014. Április 09. - 14:47:03
[mod]Zártam![/mod]