Hilfe beim Fraktionsfahrzeug Spawn

  • Hilfe beim Fraktionsfahrzeug Spawn

    Hallo,



    Ich möchte hier um Hilfe bitten. Ich werde zunächst die
    Problembeschreibung niederschreiben und anschliesend die; so glaube ich
    zumindestens; erforderlichen Scriptauszüge beilegen.



    Die Problembeschreibung:



    Ich habe ein Fraktionscar-system, das bedeutet ich kann in 2 Fraktionen
    als Fraktionsmitglied ( egal ob leader oder member ) den Befehl /fcar
    eingeben und anschliesend wird mir in besagter Fraktion ein Fahrzeug
    gespawnt. Das funktioniert bei den Medics ( Fraktionssnummer 4 ) und
    beim Taxiteam ( Fraktionsnummer 10 ). Wenn ich also Fraktionsmitglied
    oder Leader der Medics bin, mir ein Fraktionsfahrzeug erstelle
    funktioniert auch alles recht gut. Wenn ich das Fahrzeug lösche ist auch
    alles sehr gut. Wenn ich nach dem Löschen des Fahrzeuges mich aber zum
    Leader des Taxiteams mache, und dort ein Taxi erstelle und einsteige
    erhalte ich die Meldung: "Du bist kein Mitglied des Rettungsdienstes"
    und ich werde wieder aus dem Fahrzeug geschmissen. Obwohl ich wie
    bereits erwähnt kein Mitglied des Rettungsdienstes mehr bin, sondern
    Taxifahrer.



    Die Codeschnipsel:



    [pwn]new MedicCar[MAX_PLAYERS];

    new MedicAuto[MAX_PLAYERS];

    new TaxiCar[MAX_PLAYERS];

    new TaxiAuto [MAX_PLAYERS];



    #define DIALOG_MEDICCARS 1111

    #define DIALOG_TAXICARS 1116



    forward IsAnAmbulance(carid);//4

    forward IsATaxiCar(carid);//10



    [/pwn]





    [pwn]if(strcmp(cmdtext,"/fcar",true)==0)

    {

    if(SpielerInfo[playerid][sLeader] == 4 || SpielerInfo[playerid][sMember] == 4)

    {

    if(IsPlayerInRangeOfPoint(playerid,5.0,2036.8271,-1403.3060,17.2881))

    {

    if(MedicCar[playerid]==0)

    {

    if(SpielerInfo[playerid][pRank] >= 0)

    {


    ShowPlayerDialog(playerid,DIALOG_MEDICCARS,DIALOG_STYLE_LIST,"Rettungsdienst
    Fahrzeugwahl","Ambulance\nMedicopter","Bestätigen","Abbrechen");

    }

    if(SpielerInfo[playerid][pRank] >= 4)

    {


    ShowPlayerDialog(playerid,DIALOG_MEDICCARS,DIALOG_STYLE_LIST,"Rettungsdienst

    Fahrzeugwahl","Ambulance\nMedicopter\nNotarzt","Bestätigen","Abbrechen");

    }

    }

    else

    {

    SendClientMessage(playerid,COLOR_RED,"Du hast schon
    ein Rettungsdienst Fahrzeug - lösch es bitte erst mit '/delfcar'");

    }

    }

    return 1;

    }

    else if(SpielerInfo[playerid][sLeader] == 10 || SpielerInfo[playerid][sMember] == 10)

    {

    if(IsPlayerInRangeOfPoint(playerid,5.0,1236.2017,-1662.9456,11.7969))

    {

    if(TaxiCar[playerid]==0)

    {

    if(SpielerInfo[playerid][pRank] >= 0)

    {


    ShowPlayerDialog(playerid,DIALOG_TAXICARS,DIALOG_STYLE_LIST,"Taxi
    Fahrzeugwahl","Taxi","Bestätigen","Abbrechen");

    }

    if(SpielerInfo[playerid][pRank] >= 2)

    {


    ShowPlayerDialog(playerid,DIALOG_TAXICARS,DIALOG_STYLE_LIST,"Taxi
    Fahrzeugwahl","Taxi\nCabby","Bestätigen","Abbrechen");

    }

    if(SpielerInfo[playerid][pRank] >= 3)

    {


    ShowPlayerDialog(playerid,DIALOG_TAXICARS,DIALOG_STYLE_LIST,"Taxi
    Fahrzeugwahl","Taxi\nCabby\nStretch","Bestätigen","Abbrechen");

    }

    }

    else

    {

    SendClientMessage(playerid,COLOR_RED,"Du hast schon ein Taxi - lösch es bitte erst mit '/delfcar'");

    }

    }

    return 1;

    }

    else return SendClientMessage(playerid,COLOR_RED,"Du darfst dir kein Fahrzeug Spawnen!");

    }

    [/pwn]



    [pwn] if(strcmp(cmdtext,"/delfcar",true)==0)

    {

    if(SpielerInfo[playerid][sLeader] == 4 || SpielerInfo[playerid][sMember] == 4)

    {

    if(MedicCar[playerid]==1)

    {

    DestroyVehicle(MedicAuto[playerid]);

    SendClientMessage(playerid,COLOR_GREEN,"Du hast dein gespawntes Fahrzeug Entfernt!");

    MedicCar[playerid] = 0;

    }

    else

    {

    SendClientMessage(playerid,COLOR_RED,"Du hast noch kein Fahrzeug gespawnt!");

    }

    return 1;

    }

    else if(SpielerInfo[playerid][sLeader] == 10 || SpielerInfo[playerid][sMember] == 10)

    {

    if(TaxiCar[playerid]==1)

    {

    DestroyVehicle(TaxiAuto[playerid]);

    SendClientMessage(playerid,COLOR_GREEN,"Du hast dein gespawntes Fahrzeug Entfernt!");

    TaxiCar[playerid] = 0;

    }

    else

    {

    SendClientMessage(playerid,COLOR_RED,"Du hast noch kein Fahrzeug gespawnt!");

    }

    return 1;

    }

    else return SendClientMessage(playerid,COLOR_RED,"Du kannst kein Fahrzeug löschen, da du keins erstellen kannst!");

    }

    [/pwn]



    [pwn] if(dialogid == DIALOG_TAXICARS)

    {

    if(response)

    {

    if(listitem == 0)

    {

    TaxiAuto[playerid] = CreateVehicle(420,1227.8495,-1653.4192,11.5771,270.6812,6,6,-1);

    SendClientMessage(playerid,COLOR_GREEN,"Du hast dir ein Taxi als Fahrzeug gespawnt!");

    TaxiCar[playerid] = 1;

    }

    else if(listitem == 1)

    {

    TaxiAuto[playerid]=CreateVehicle(438,1227.8495,-1653.4192,11.5771,270.6812,6,6,-1);

    SendClientMessage(playerid,COLOR_GREEN,"Du hast dir ein Cabby als Fahrzeug gespawnt!");

    TaxiCar[playerid] = 1;

    }

    else if(listitem == 2)

    {

    TaxiAuto[playerid]=CreateVehicle(409,1227.8495,-1653.4192,11.5771,270.6812,6,6,-1);

    SendClientMessage(playerid,COLOR_GREEN,"Du hast dir eine Stretch Fahrzeug gespawnt!");

    TaxiCar[playerid] = 1;

    }

    }

    return 1;

    }

    if(dialogid == DIALOG_MEDICCARS)

    {

    if(response)

    {

    if(listitem == 0)

    {

    MedicAuto[playerid] = CreateVehicle(416,2014.5378,-1433.6283,13.7033,133.4530,1,3,-1);

    SendClientMessage(playerid,COLOR_GREEN,"Du hast dir ein Ambulance als Fahrzeug gespawnt!");

    MedicCar[playerid] = 1;

    }

    else if(listitem == 1)

    {

    MedicAuto[playerid] = CreateVehicle(563,2069.0349,-1425.1941,49.0407,86.4916,1,3,-1);

    SendClientMessage(playerid,COLOR_GREEN,"Du hast dir ein Medicopter als Fahrzeug gespawnt!");

    MedicCar[playerid] = 1;

    }

    else if(listitem == 2)

    {

    MedicAuto[playerid] = CreateVehicle(599,2014.5378,-1433.6283,13.7033,133.4530,1,3,-1);

    SendClientMessage(playerid,COLOR_GREEN,"Du hast dir ein Notarzt Fahrzeug gespawnt!");

    MedicCar[playerid] = 1;

    }

    }

    return 1;

    }

    [/pwn]



    [pwn]public IsAnAmbulance(carid)//4

    {

    for(new i = 0; i < sizeof(MedicAuto); i++)

    {

    if(carid == MedicAuto)

    {

    return 1;

    }

    }

    return 0;

    }

    [/pwn]



    [pwn]public IsATaxiCar(carid)//10

    {

    for(new x = 0; x < sizeof(TaxiAuto); x++)

    {

    if(carid == TaxiAuto[x])

    {

    return 1;

    }

    }

    return 0;

    }

    [/pwn]



    [pwn]if(!IsPlayerInFrac(playerid,4))

    {

    for(new pv = 0; pv < sizeof(MedicAuto); pv++)

    {

    if(newcar == MedicAuto[pv])

    {

    SendClientMessage(playerid,COLOR_RED,"Du bist kein Mitglied des Rettungsdienstes!");

    RemovePlayerFromVehicle(playerid);

    }

    }

    }

    [/pwn]



    [pwn]if(!IsPlayerInFrac(playerid,10))

    {

    for(new pv = 0; pv < sizeof(TaxiAuto); pv++)

    {

    if(newcar == TaxiAuto[pv])

    {

    SendClientMessage(playerid,COLOR_RED,"Du hast keine Schlüssel!");

    RemovePlayerFromVehicle(playerid);

    }

    }

    }[/pwn]





    Weitere Informationen:



    Compilen kann ich ohne Warnings / Errors, es funktioniert wie eingangs
    erwähnt auch alles Auser dass wenn ein Medic ein Fahrzeug erstellt, es
    auch wieder löscht, kein Taxifahrer mehr beim erstellen seines
    fahrzeuges in dieses einsteigen kann. ( Also erstellen geht, einsteigen
    nicht ).





    Ich hoffe ich habe alles ausreichend erklärt und bitte um entsprechende Hilfe zur Lösung des "Bugs" ....





    Liebe Grüße und vielen Dank bereits im Vorraus.



    Timon

    p.S.
    Entsprechende ewige Leerzeilen, falsches einrücken der klammern etc.
    bitte ich zu entschuldigen, das liegt etwas an meinem browser der das
    ganze falsch ans Forum wieder gibt, im Script ist alles richtig und die
    klammern sind auch richtig gesetzt und es sind da natürlich auch keine
    ewigen Leerzeilen drin.

    Danke für ihr Verständnis.

    p.p.S. Man hofft natürlich auf Hilfe ...

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

  • Vincent Petritz schrieb:

    Was mir als erstes auffällt ist, das du mit MAX_PLAYERS anstatt mit MAX_VEHICLES arbeitest.
    Joar, das hab ich auch schon umgeschrieben gehabt nachdem ich den beitrag hier verfasste. Ich habe also MedicCar, MedicAuto, TaxiCar und TaxiAuto in MAX_VEHICLES geändert und stellte fest dass das Problem immernoch besteht. Also es wird weiterhin um hilfe gebeten. Dennoch erstmal Danke nochmals für den Hinweis.
  • So, da bin ich, sorry für's warten. ;)

    Also ich sehe mehrere mögliche Ursachen. Hab dir das mal komplett überarbeitet und vll. kannst du ja damit was anfangen:
    [pwn]new playersCarID[MAX_PLAYERS],
    medicCar[MAX_VEHICLES],
    taxiCar[MAX_VEHICLES];

    if(strcmp(cmdtext,"/delfcar",true)==0) {
    new varCarFromPlayer = playersCarID[playerid];
    if(SpielerInfo[playerid][sLeader] == 4 || SpielerInfo[playerid][sMember] == 4) {
    if(playersCarID[playerid] != 0) {
    medicCar[varCarFromPlayer] = 0;
    DestroyVehicle(varCarFromPlayer);
    SendClientMessage(playerid,COLOR_GREEN,"Du hast dein gespawntes Fahrzeug Entfernt!");
    }
    else
    SendClientMessage(playerid,COLOR_RED,"Du hast noch kein Fahrzeug gespawnt!");
    return 1;
    }
    else if(SpielerInfo[playerid][sLeader] == 10 || SpielerInfo[playerid][sMember] == 10) {
    if(playersCarID[playerid] != 0) {
    TaxiCar[varCarFromPlayer] = 0;
    DestroyVehicle(varCarFromPlayer);
    SendClientMessage(playerid,COLOR_GREEN,"Du hast dein gespawntes Fahrzeug Entfernt!");
    }
    else
    SendClientMessage(playerid,COLOR_RED,"Du hast noch kein Fahrzeug gespawnt!");
    return 1;
    }
    else
    return SendClientMessage(playerid,COLOR_RED,"Du kannst kein Fahrzeug löschen, da du keins erstellen kannst!");
    }


    if(dialogid == DIALOG_TAXICARS) {
    if(response) {
    if(listitem == 0) {
    playersCarID[playerid] = CreateVehicle(420,1227.8495,-1653.4192,11.5771,270.6812,6,6,-1);
    SendClientMessage(playerid,COLOR_GREEN,"Du hast dir ein Taxi als Fahrzeug gespawnt!");
    taxiCar[playersCarID[playerid]] = 1;
    }
    else if(listitem == 1) {
    playersCarID[playerid] = CreateVehicle(438,1227.8495,-1653.4192,11.5771,270.6812,6,6,-1);
    SendClientMessage(playerid,COLOR_GREEN,"Du hast dir ein Taxi als Fahrzeug gespawnt!");
    taxiCar[playersCarID[playerid]] = 1;
    }
    else if(listitem == 2) {
    playersCarID[playerid] = CreateVehicle(409,1227.8495,-1653.4192,11.5771,270.6812,6,6,-1);
    SendClientMessage(playerid,COLOR_GREEN,"Du hast dir ein Taxi als Fahrzeug gespawnt!");
    taxiCar[playersCarID[playerid]] = 1;
    }
    }
    return 1;
    }[/pwn]

    #e: Der fcar-Befehl:
    [pwn]new playersCarID[MAX_PLAYERS],
    medicCar[MAX_VEHICLES],
    taxiCar[MAX_VEHICLES];

    if(strcmp(cmdtext,"/fcar",true)==0) {
    if(SpielerInfo[playerid][sLeader] == 4 || SpielerInfo[playerid][sMember] == 4) {
    if(IsPlayerInRangeOfPoint(playerid,5.0,2036.8271,-1403.3060,17.2881)) {
    if(playersCarID[playerid] == 0) {
    ShowPlayerDialog(playerid,DIALOG_MEDICCARS,DIALOG_STYLE_LIST,"Rettungsdienst Fahrzeugwahl","Ambulance\nMedicopter","Bestätigen","Abbrechen");
    if(SpielerInfo[playerid][pRank] >= 0) {
    }
    if(SpielerInfo[playerid][pRank] >= 4) {
    ShowPlayerDialog(playerid,DIALOG_MEDICCARS,DIALOG_STYLE_LIST,"Rettungsdienst Fahrzeugwahl","Ambulance\nMedicopter\nNotarzt","Bestätigen","Abbrechen");
    }
    }
    else {
    SendClientMessage(playerid,COLOR_RED,"Du hast schon ein Rettungsdienst Fahrzeug - lösch es bitte erst mit '/delfcar'");
    }
    }
    return 1;
    }
    else if(SpielerInfo[playerid][sLeader] == 10 || SpielerInfo[playerid][sMember] == 10) {
    if(IsPlayerInRangeOfPoint(playerid,5.0,1236.2017,-1662.9456,11.7969)) {
    if(playersCarID[playerid] == 0) {
    if(SpielerInfo[playerid][pRank] >= 0) {
    ShowPlayerDialog(playerid,DIALOG_TAXICARS,DIALOG_STYLE_LIST,"Taxi Fahrzeugwahl","Taxi","Bestätigen","Abbrechen");
    }
    if(SpielerInfo[playerid][pRank] >= 2) {
    ShowPlayerDialog(playerid,DIALOG_TAXICARS,DIALOG_STYLE_LIST,"Taxi Fahrzeugwahl","Taxi\nCabby","Bestätigen","Abbrechen");
    }
    if(SpielerInfo[playerid][pRank] >= 3) {
    ShowPlayerDialog(playerid,DIALOG_TAXICARS,DIALOG_STYLE_LIST,"Taxi Fahrzeugwahl","Taxi\nCabby\nStretch","Bestätigen","Abbrechen");
    }
    }
    else {
    SendClientMessage(playerid,COLOR_RED,"Du hast schon ein Taxi - lösch es bitte erst mit '/delfcar'");
    }
    }
    return 1;
    }
    else
    return SendClientMessage(playerid,COLOR_RED,"Du darfst dir kein Fahrzeug Spawnen!");
    }[/pwn]