Scripting Problem

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
  • Abend :)
    Also Kaliber hat mir die Autoliste gescriptet. Also das jeder user mit /autolist seine Autos orten kann. Es funktioniert auch soweit. Doch wenn ich den Dialog öffne werden nur die ersten 3 Cars aus dem Auto ordner angezeigt. Also auch die cars die einem nicht gehören. Wie kann ich das anders machen, das erst einmal die autos aus dem ordner rausgesucht werden, die einem gehören.


    Code Dialog:
    if(dialogid == DIALOG_AUTOLIST)
    {
    if(response == 1)
    {
    new Float: X, Float: Y, Float: Z;
    switch(listitem)
    {
    case 0:
    {
    GetVehiclePos(PlayerAuto[1][id_x], X, Y, Z);
    SetPlayerCheckpoint(playerid, X, Y, Z, 5.0);
    GameTextForPlayer(playerid, "~g~Dein Auto wurde dir markiert !", 5000, 5);
    }
    case 1:
    {
    GetVehiclePos(PlayerAuto[2][id_x], X, Y, Z);
    SetPlayerCheckpoint(playerid, X, Y, Z, 5.0);
    GameTextForPlayer(playerid, "~g~Dein Auto wurde dir markiert !", 5000, 5);
    }
    case 2:
    {
    GetVehiclePos(PlayerAuto[3][id_x], X, Y, Z);
    SetPlayerCheckpoint(playerid, X, Y, Z, 5.0);
    GameTextForPlayer(playerid, "~g~Dein Auto wurde dir markiert !", 5000, 5);
    }
    }
    }
    }


    Code Befehl /autolist:
    ocmd:autolist(playerid,params[])
    {
    if(GetPVarInt(playerid,"HatAuto") >=1)
    {
    new string[128];
    if(GetPVarInt(playerid,"HatAuto") == 1)
    {
    format(string, 128,"1. %s",FahrzeugName[GetVehicleModel(PlayerAuto[1][id_x])-400]);
    }
    else if(GetPVarInt(playerid,"HatAuto") == 2)
    {
    format(string, 128,"1. %s\n2. %s",FahrzeugName[GetVehicleModel(PlayerAuto[1][id_x])-400],FahrzeugName[GetVehicleModel(PlayerAuto[2][id_x])-400]);
    }
    else if(GetPVarInt(playerid,"HatAuto") == 3)
    {
    format(string, 128,"1. %s\n2. %s\n3. %s",FahrzeugName[GetVehicleModel(PlayerAuto[1][id_x])-400],FahrzeugName[GetVehicleModel(PlayerAuto[2][id_x])-400],FahrzeugName[GetVehicleModel(PlayerAuto[3][id_x])-400]);
    }
    ShowPlayerDialog(playerid,DIALOG_AUTOLIST,DIALOG_STYLE_LIST,"{FF0000}Autoliste",string,"Bestätigen","Abbrechen");
    }
    else return SendClientMessage(playerid,0xFF0000FF,"Du besitzt keine Autos !");
    return 1;
    }


    Ich hoffe mir kann jemand helfen, denn ich verzweifele daran.


    Bei weiteren Fragen, einfach drunter posten.


    //edit: problem besteht noch
    MFG
    TechnoLover

    Einmal editiert, zuletzt von TechnoLover ()

  • Hmmm..
    Auf den ersten Blick würde ich sagen, dass du in das PlayerAuto-Array noch einen Spalte für den Spieler machen sollst, denn damit kann dann der Spieler ermittelt werden.


    new PlayerAuto[MAX_PLAYER_CARS][MAX_PLAYERS][enum] //MAX_PLAYER_CARS halt deinem entsprechendem define anpassen


    Das Array muss dann halt im ganzen Script auch so angepasst werden, aber ich vermute mal daran liegt es.
    Das Problem ist ja, dass die ersten drei Autos generell angezeigt werden und nicht die ersten drei Autos des Spielers.
    Wenn das Array auch den Spieler beinhaltet, kann man das entsprechend angehen^^

  • Danke schonmal, doch ich verstehe nicht ganz :D Also in der Auto datei wird der Autobesitzer mit key=Spielername und im script mit vkey gekennzeichnet. Wie kann ich denn jettzt genau rausfinden welche autos dem spieler gehören?