Bumsnudel

SetVehicleMod endet mit Error

Recommended Posts

Hallo Leute,

ich habe in meinem Code folgende Zeile implementiert:

[Command("addmod")]
public void AddVehicleModCommand(Vehicle vehicle, int modType, int mod)
{
    NAPI.Vehicle.SetVehicleMod(vehicle, modType, mod);
}

Wenn ich nun Ingame: z.B

"/addmod 69 2"    (zur Scheibentönung)

in die Console eingebe bringt er im Server-Fenster folgenden Fehler:

UNHANDLED EXCEPTION IN COMMAND addmod FOR RESOURCE GTANFreeroam
System.ArgumentException: Object of type 'GTANetworkAPI.Client' cannot be converted to type 'GTANetworkAPI.Vehicle'.
   at object RuntimeType.TryChangeType(object value, Binder binder, CultureInfo culture, bool needsSpecialCast)
   at object[] System.Reflection.MethodBase.CheckArguments(object[] parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature sig)
   at object[] System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture)
   at object System.Reflection.RuntimeMethodInfo.Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture)
   at bool GTANetworkInternals.CommandParser.Parse(Client sender, string cmdRaw, string ourcmd, string[] args) in C:\Users\Adam\Documents\Git\comp-layer2\BootstrapperNC\Handlers\CommandHandler.cs:line 246

Kann mir jemand helfen worum es sich handelt und wie ich den Error weg bekomme.

LG

Share this post


Link to post
Share on other sites

vermutlich musst du ihm sagen welches fahrzeug.

also das in dem du sitzt.

NAPI.Vehicle.SetVehicleMod(NAPI.Player.GetPlayerVehicle(vehicle), modType, mod);

bei unserem developmentmenü funktioniert es ;)

Share this post


Link to post
Share on other sites
        // Die "GreedyArgs" ermöglichen mehrere Wörter in einen Command zu nehmen
        [Command("addmod", GreedyArg = true)]
        public void AddVehicleModCommand(Client player, string modTypeText, string modText)
        {
            // Das entsprechende Fahrzeug rufst Du über den Spieler ab (Also das, in dem er sitzt)
            var vehicle = NAPI.Player.GetPlayerVehicle(player);

            // Hier prüfst Du, ob der Spieler im Auto sitzt, da der Command sonst nicht funktioniert.
            if (player.IsInVehicle)
            {
                try
                {
                    // Die Strings, die im Befahl übergeben werden in Integer umwandeln (hier ausführlich :-) )
                    // Man kann dann die Eingabe auf gültige werte überprüfen. Ich hab hier einfach schnell über
                    // einen try-catch-Block gemacht.
                    int modType = Convert.ToInt32(modTypeText);
                    int mod = Convert.ToInt32(modText);

                    NAPI.Vehicle.SetVehicleMod(vehicle, modType, mod);
                }
                catch
                {
                    NAPI.Notification.SendNotificationToPlayer(player, "Bitte gib Ganzzahlen für ModTyp und Mod ein! - /addmod <Zahl> <Zahl>");
                }
            }
            else
            {
                NAPI.Notification.SendNotificationToPlayer(player, "Steig in das Auto ein, welches Du modifizieren willst!");
            }            
        }

 

Edited by Whooza

Share this post


Link to post
Share on other sites

Dein Problem zu beschreiben, du musst bei einem Befehl immer zu erst den Spieler angeben sprich

 

anstatt

public void AddVehicleModCommand(Vehicle vehicle, int modType, int mod)

 

machst du

public void AddVehicleModCommand(Client player, Vehicle vehicle, int modType, int mod)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.