Jump to content

Navigatie doet het niet.


Recommended Posts

Geplaatst: (bewerkt)

Hallo,

Ik ben nog steeds bezig het navigatie-systeem te maken waar ik het eerder nog over had (Bedankt Remi-X!). Misschien kennen jullie het wel, ik heb net na 2 uur scripten nog 'even snel' iets aangepast, werkt het hele script niet meer. Ik heb geen idee waarom, misschien ziet iemand hier het. Hier mijn pastebin link. Ik hoop dat iemand kan helpen!

sean5874

*EDIT*

Sorry voor de crappy uitlijning, maar dat doet mijn computer zelf als ik me script knip en plak, in het script staat het wel recht

Bewerkt: door sean5874
Geplaatst: (bewerkt)

Hier zit een fout:

public OnPlayerEnterCheckpoint(playerid)
{
       DisablePlayerCheckpoint(playerid)
       ;SendClientMessage(playerid, 0xAA3333AA,"[Navigation]: You have reached your destination");
       return 1;
}

Ik denk dat je per ongeluk te vroeg op Enter hebt gedrukt. De ; hoort namelijk achter DisablePlayerCheckpoint te staan, en niet voor SendClientMessage.

public OnPlayerEnterCheckpoint(playerid)
{
       DisablePlayerCheckpoint(playerid);
       SendClientMessage(playerid, 0xAA3333AA,"[Navigation]: You have reached your destination");
       return 1;
}

Bovendien zitten hier ook (minder belangrijke) fouten in:

if (strcmp("/cb east ls", cmdtext, true, 10) == 0)
if (strcmp("/cb pilgrim", cmdtext, true, 10) == 0)
if (strcmp("/cb ocean flats", cmdtext, true, 10) == 0)
if (strcmp("/cb downtown", cmdtext, true, 10) == 0)
if (strcmp("/cb angle pine", cmdtext, true, 10) == 0)
if (strcmp("/cb fort carson", cmdtext, true, 10) == 0)
if (strcmp("/cb old venturas strip", cmdtext, true, 10) == 0)
if (strcmp("/cb the emerald isle", cmdtext, true, 10) == 0)
if (strcmp("/cb willowfield", cmdtext, true, 10) == 0)

Deze commands zijn namenlijk allemaal langer dan 10 tekens. Bijna achteraan de regel staat namelijk 10. Deze 10 zorgt ervoor dat de server alleen de eerste 10 tekens vergelijkt met de command. Iemand kan dus gewoon /cb the emerald hallo typen, en alsnog het command /cb the emerald isle uitvoeren. Om deze fouten op te lossen verhoog je gewoon de 10 naar een hoger getal.

MVG,

Wanted

EDIT: @Hieronder met de #define FILTERSCRIPT: Oh ja, dat ik dat niet eerder gezien heb. :7

Bewerkt: door Wanted
Geplaatst: (bewerkt)

Sowieso zal ik een bool aanmaken, namelijk zo:

new bool:IsNavActivated[MAX_PLAYERS];

OnPlayerConnect en Disconnect
{
   if(IsNavActivated[playerid] == true)
   {
       IsNavActivated[playerid] = false; //Er geen navigatie meer
       DisablePlayerCheckpoint(playerid); //Weg met die checkpoint
   }
   return 1;
}

Command die nieuwe bestemming aangeeft:
{
   if(IsNavActivated[playerid] == true) //Als er al eerder een navigatie gestart is
   {
       DisablePlayerCheckPoint(playerid); //Haal die checkpoint weg
   }
   //Maar we hebben nog geen return gebruikt, dus dit script zal ook uitgevoerd worden
   SetPlayerCheckPoint(...);
   return 1;
}

Command dcancel:
{
   if(IsNavActivated[playerid] == false)// Als er nog geen navigatie gestart is kan je het ook niet weghalen
   {
       return SendClientMessage(playerid, kleur, "[Navigation]: You don't have a destination yet.");
   }
   //Omdat we zonet het script geindigd hebben met return, als er nog geen navigatie is, zal dit script hieronder als een "else" werken.
   IsNavActivated[playerid] = false;
   DisablePlayerCheckPoint(playerid);
   SendClientMessage(...);
   return 1;
}

Daarnaast zie ik wat nu op regel 175 en 176 staat:

   DisablePlayerCheckpoint(playerid)
   ;SendClientMessage(playerid, 0xAA3333AA,"[Navigation]: Your destination is cancelled");

De ; aan het begin van die tweede regel kan je beter achteraan de eerste regel zetten.

   DisablePlayerCheckpoint(playerid);
   SendClientMessage(playerid, 0xAA3333AA,"[Navigation]: Your destination is cancelled");

Nog een typ voor al je kleuren. Nu zet je bij elke command nog een Hex code, dat kan ook anders. Door de kleur te defineren.

//Onder de includes
#define MIJN_KLEUR_NAAM 0xAA3333AA // Die naam kan je dus veranderen

// Dan word SendClientMessage:
SendClientMessage(playerid, MIJN_KLEUR_NAAM, "tekst");

Dat kan het wat makkelijker houden. Je kan ook definities in definities zetten:

#define MIJN_KLEUR_NAAM 0xAA3333AA
#define COMMANDKLEUR MIJN_NAAM_KLEUR

SendClientMessage(playerid, COMMANDKLEUR, "tekst");

Definities hebben niet per se hoofdletter nodig, maar ikzelf vind dat wat makkelijker te gebruiken.


Zie ik eigenlijk ook dat het handig voor jouw is om DCMD of nog beter, ZCMD te gebruiken. Aangezien jij /cb spatie nog iets gebruikt, is het ook mogelijk om alleen /cb van de command te maken. Als er dan niks achter word ingevoerd, kan je een error melding maken. Als er wat anders word ingevoerd, kan je daarmee doen wat je wilt. Gebruik van DCMD en ZCMD lijkt behoorlijk op elkaar, alleen DCMD heeft het nodig om ook een stukje in OnPlayerCommandText te zetten, ZCMD niet.


Dan nu even het grote probleem van jouw script. Met je commands is niets mis tot zover ik heb gekeken, maar het HELE script word gewoon simpelweg niet uitgevoerd.

#if defined FILTERSCRIPT

Staat er bovenin. Maar nergens is dat geactiveerd, omdat je #define FILTERSCRIPT met 2 slashes ervoor hebt laten staan, dus als bijschrift. En pas helemaal onderaan je script staat #endif, zodat de andere optie word geactiveerd. Maar daaronder staat niks meer.

Haal dus #if defined FILTERSCRIPT en #endif weg, en dan kan je //#define FILTERSCRIPT ook weghalen omdat dat dan niks meer doet.

Bewerkt: door Remi-X
Geplaatst:

Ik heb het script even bijgewerkt, met de info die jullie me allebei gaven. Hij doet het weer! :klap: Bedankt voor jullie reacties!

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...