"Vehicle Collisions" aus machen?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • leider gibt es die Möglichkeit nicht, die einzigste sache die geht wären verschiedene Virtual Worlds, wodurch die Spieler sich jedoch auch nicht unterienander sehen können.

  • leider gibt es die Möglichkeit nicht, die einzigste sache die geht wären verschiedene Virtual Worlds, wodurch die Spieler sich jedoch auch nicht unterienander sehen können.


    Vielen Dank für die Antwort. Gibt es kein serverseitiges oder clientseitiges Plugin, dass dies ermöglicht? Ich würde es gerne ohne den virtuellen Welten machen, da sie sich untereinander sehen sollten.


    Mit freundlichen Grüssen,
    Peek

  • Peek:
    Hier hättest du ein Beispiel, aber halt mit VW. Als Pessagner kann man aber Trotzdem einsteigen


    #if defined MAX_PLAYERS
    #undef MAX_PLAYERS
    #endif
    #define MAX_PLAYERS 32


    new playerPrevWorld[MAX_PLAYERS],
    maxPlayers;


    public OnFilterScriptInit()
    maxPlayers = GetMaxPlayers();


    public OnEnterExitModShop(playerid, enterexit, interiorid)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(vehicleid)
    {
    if(enterexit) // Enter
    {
    for(new worldid = 0; worldid < maxPlayers; worldid ++)
    {
    new world_players;
    for(new world_playerid = 0; world_playerid < maxPlayers; world_playerid ++)
    {
    if(IsPlayerConnected(world_playerid) && playerid != world_playerid && GetPlayerVirtualWorld(world_playerid) == worldid)
    world_players ++;
    }
    if(!world_players)
    {
    playerPrevWorld[playerid] = GetPlayerVirtualWorld(playerid);
    SetVehicleVirtualWorld(vehicleid, worldid);
    LinkVehicleToInterior(vehicleid, interiorid);
    for(new veh_playerid = 0; veh_playerid < maxPlayers; veh_playerid ++)
    {
    if(IsPlayerConnected(veh_playerid) && GetPlayerVehicleID(veh_playerid) == vehicleid)
    {
    SetPlayerVirtualWorld(veh_playerid, worldid);
    SetPlayerInterior(veh_playerid, interiorid);
    }
    }
    break;
    }
    }
    }
    else // Exit
    {
    SetVehicleVirtualWorld(vehicleid, playerPrevWorld[playerid]);
    LinkVehicleToInterior(vehicleid, 0);
    for(new veh_playerid = 0; veh_playerid < maxPlayers; veh_playerid ++)
    {
    if(IsPlayerConnected(veh_playerid) && GetPlayerVehicleID(veh_playerid) == vehicleid)
    {
    SetPlayerVirtualWorld(veh_playerid, playerPrevWorld[playerid]);
    SetPlayerInterior(veh_playerid, 0);
    }
    }
    }
    }
    }

  • Naja, ist es nicht möglich einfach eine Schleife in 'n Timer zu setzten die abfragt ob sich die Spieler (die in Fahrzeugen befinden) sich nah sind (IsPlayerInRangeOfPoint) und das Fahrzeug einfach ein paar (SA-) Meter weg zu setzten ?


    Klar, das geht.


    Schleife durch alle Spieler deren GetPlayerState = PLAYER_STATE_DRIVER ist, wenn ja, dann die selbe Schleife nochmal die prüft ob der Spieler irgend einem anderen Spieler der im Auto ist zu nahe ist, wenn ja, setze X Meter zur Seite/nach Vorne/nach Hinten.

  • Ja also gibt es ja ne Möglichkeit :p


    Ja, das stimmt, aber das schält nicht die "Vehicle Collisions" aus. Und bei Laggern wird auch der Code nur bedingt funktionieren. Und spätestens wenn du drei Autos nebeneinander hast wird es kräftig scheppern, weil dann ein Spieler in den anderen reingesetzt wird, dann zieht, je nach Ping einer den Kürzeren und fliegt weg. :D


    Man müsste das unter OnPlayerUpdate setzen, und jeweils noch prüfen, dass keine Objekte neben dem Spieler sind wo er hingesetzt wird, sonst bringt das auch nichts, wenn er dann in einem Objekt hängt.
    Zudem müsste man noch beurteilen, welcher Spieler weg-gesetzt wird, oder ob beide ein Stück weg-gesetzt werden (wohl das beste).


    Also das ist zwar eine Möglichkeit, aber besonders toll zum Spielen ist die nicht.