[jTuT] Fraktions-Fahrzeug-System mit MySQL R39-5

    • Kaito-sensei schrieb:

      dann können alle anderen die Fahrzeuge von allen anderen Auf/Zuschließen.

      Ah, sorry, stimmt. Hab falsch herum gedacht, weil wir die ganze Zeit beim Einstieg waren. Das ist ja ein Befehl zum Abschließen.
      Dennoch muss das && zu einem || dann gewechselt werden, wie @[IRP]Rob_Clare schon richtig sagte, sonst klappt es nur, wenn er Leader und Member ist, was er wahrscheinlich nicht gleichzeitig sein kann.
      Allerdings mit "playerid" anstatt "forplayerid".
      Habe den Code oben angepasst.

      Außerdem noch:

      PAWN-Quellcode

      1. iPlayerVehicle

      zu:

      PAWN-Quellcode

      1. vehicleid





      EDIT:

      Trafico schrieb:

      ok jetzt kann man immer einsteigen also egal was man ist


      Ich habe das grade mal ausprobiert, bei mir funktioniert es problemlos.


      Code:

      PAWN-Quellcode

      1. public OnVehicleStreamIn(vehicleid, forplayerid)
      2. {
      3. //Eine Schleife durch alle Fraktions-Fahrzeuge
      4. for(new i=0; i<MAX_FRAC_VEHICLES; i++)
      5. {
      6. //Wenn die vehicleid die gleiche ist, wie die des Fraktions-Fahrzeugs
      7. if(fracVehicle[i][e_vID] == vehicleid)
      8. {
      9. //Jetzt brauchen wir die Variable, mit der Dein vorher bereits existierendes Fraktions-System arbeitet.
      10. //Ich nehme jetzt einfach eine Beispiel-Variable, diese musst Du selbst mit der ersetzen,
      11. //die Dein System verwendet.
      12. //Es geht um diese Variable: PlayerInfo[playerid][pFraction]
      13. if(PlayerInfo[forplayerid][pFraction] != fracVehicle[i][e_fracID])
      14. {
      15. //Wenn der Spieler nicht in der Fraktion ist, die das Fahrzeug verwenden darf,
      16. //dann darf er es nicht betreten.
      17. SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 1);
      18. }
      19. break; //Es gibt ja keine zwei gleichen Fahrzeuge
      20. }
      21. }
      22. return 1;
      23. }
      Alles anzeigen


      Die Animation macht er allerdings nur, wenn man als Beifahrer (Taste G) einsteigen will.

      Bei dir wäre das dann:

      PAWN-Quellcode

      1. public OnVehicleStreamIn(vehicleid, forplayerid)
      2. {
      3. //Eine Schleife durch alle Fraktions-Fahrzeuge
      4. for(new i=0; i<MAX_FRAC_VEHICLES; i++)
      5. {
      6. //Wenn die vehicleid die gleiche ist, wie die des Fraktions-Fahrzeugs
      7. if(fracVehicle[i][e_vID] == vehicleid)
      8. {
      9. //Jetzt brauchen wir die Variable, mit der Dein vorher bereits existierendes Fraktions-System arbeitet.
      10. //Ich nehme jetzt einfach eine Beispiel-Variable, diese musst Du selbst mit der ersetzen,
      11. //die Dein System verwendet.
      12. //Es geht um diese Variable: PlayerInfo[playerid][pFraction]
      13. if(SpielerInfo[forplayerid][pMember] != fracVehicle[i][e_fracID] && SpielerInfo[forplayerid][pLeader] != fracVehicle[i][e_fracID])
      14. {
      15. //Wenn der Spieler nicht in der Fraktion ist, die das Fahrzeug verwenden darf,
      16. //dann darf er es nicht betreten.
      17. SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 1);
      18. }
      19. break; //Es gibt ja keine zwei gleichen Fahrzeuge
      20. }
      21. }
      22. return 1;
      23. }
      Alles anzeigen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jeffry ()

    • Jeffry schrieb:

      Dennoch muss das && zu einem || dann gewechselt werden
      Sorry, hab es gerade erst mitbekommen.

      Ich hatte ja gesagt, dass ich vll ein Befehl erstelle und nun ist er fertig, jedoch Ungetestet(Da gerade kein SA:MP)

      @Jeffry wenn du möchtest, kannst du den Code im Startpost einfügen, aber wie gesagt Ungetestet.

      Quellcode

      1. CMD:lock(playerid, params[])
      2. {
      3. new vehicleid = GetFactionVehicle(playerid, 5.0);
      4. if(vehicleid == -1) return SendClientMessage(playerid, -1, "Du bist nicht in der nähe eines Fraktionsfahrzeugs");
      5. new iEngine, iLights, iAlarm, iDoors, iBonnet, iBoot, iObjective;
      6. GetVehicleParamsEx(vehicleid, iEngine, iLights, iAlarm, iDoors, iBonnet, iBoot, iObjective);
      7. if(iDoors == VEHICLE_PARAMS_OFF || iDoors == VEHICLE_PARAMS_UNSET) SetVehicleParamsEx(vehicleid, iEngine, iLights, iAlarm, VEHICLE_PARAMS_ON, iBonnet, iBoot, iObjective);
      8. else SetVehicleParamsEx(vehicleid, iEngine, iLights, iAlarm, VEHICLE_PARAMS_OFF, iBonnet, iBoot, iObjective);
      9. return 1;
      10. }
      11. stock GetFactionVehicle(playerid, Float:range)
      12. {
      13. new Float:p_X, Float:p_Y, Float:p_Z;
      14. new Float:Distance;
      15. new Float:PretendentDistance = range +1;
      16. new vid = -1;
      17. GetPlayerPos(playerid, p_X, p_Y, p_Z);
      18. for(new vehicleid=1; vehicleid < MAX_FRAC_VEHICLES; vehicleid++)
      19. {
      20. if(PlayerInfo[playerid][pFraction] != fracVehicle[vehicleid][e_fracID]) continue;
      21. Distance = GetVehicleDistanceFromPoint(fracVehicle[vehicleid][e_vID], p_X, p_Y, p_Z);
      22. if(Distance <= range && Distance <= vIdDistance)
      23. {
      24. vid = vehicleid;
      25. vIdDistance = Distance;
      26. }
      27. }
      28. return vid;
      29. }
      Alles anzeigen
      Mit Freundlichen Grüßen
      Kaito-sensei
      P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.


      An die Wand mit allen Abwerbern