Motor 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
  • ocmd:motor(playerid,params[])
    {
    if(sInfo[playerid][eingeloggt] == 0)return SendClientMessage(playerid,ROT,"Du bist nicht eingeloggt!");
    new vID=GetPlayerVehicleID(playerid);
    new vModel=GetVehicleModel(vID);
    new Float:health;
    if(vModel != 509 && vModel != 510 && vModel != 481)
    {
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return SendClientMessage(playerid,ROT,"Du bist nicht der Fahrer eines Fahrzeuges!");
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vID,engine,lights,alarm,doors,bonnet,boot,objective);
    new frakcar = IsCarFrakCar(vID);
    new normcar = IsCarNormCar(vID);
    new jobcar = IsCarJobCar(vID);
    if(frakcar==1)
    {
    if(!IsPlayerInFrakt(playerid,fcInfo[GetFrakCarID(vID)][fcfraktion]))return SendClientMessage(playerid,ROT,"Du hast keinen Schlüssel!");
    if(tank[vID]<1)return SendClientMessage(playerid,ROT,"Der Tank ist leer!");
    //Motor EIN/AUS
    if(engine==1)
    {
    engine = 0;
    GameTextForPlayer(playerid,"Motor ~r~ausgeschaltet",600,5);
    }
    else
    {
    GetVehicleHealth(vID, health);
    if(health<=250)return SendClientMessage(playerid,ROT,"Motorschaden");
    if(GetPVarInt(vID,"Test")==1)return SendClientMessage(playerid,ROT,"Abgesoffen");
    engine = 1;
    GameTextForPlayer(playerid,"Motor ~g~eingeschaltet",600,5);
    }
    SetVehicleParamsEx(vID,engine,lights,alarm,doors,bonnet,boot,objective);
    }


    Hallo, habe ein Problem. Und zwar wenn der Motor eingeschaltet wird wird ja überprüft ob das Health kleiner gleich 250 ist.
    Aber das funktioniert irgendwie nicht.. Woran kann das liegen? Genau so wie er auch die Nachricht "Abgesoffen" nicht schickt, obwohl "Test" auf 1 ist..


    Bin am verzweifeln, hoffe mir kann jemand helfen. Danke

  • Da du auch einen Thread aufgemacht hast antworte ich dir nun hier, lösche bitte den letzten Post im Sammelthread, das muss ja nicht doppelt diskutiert werden.


    Zum Problem:


    Was genau geht denn nicht, wenn du den Code so hast?

  • Hier wird sekündlich das vhealth überprüft:
    new Float:health;
    for(new i=1; i<MAX_VEHICLES; i++)
    {
    if(!IsValidVehicle(i))continue;
    GetVehicleHealth(i, health);
    if(health<=249)
    {
    SetVehicleHealth(i,250);
    TogglePlayerControllable(GetVehicleDriver(i),0);
    if(IsEngineOn(i))
    {
    MotorStop(i);
    }
    }
    }


    Ich kann jetzt, auch wenn das vHealth auf 250 gesetzt wird trotzdem den Motor ganz normal einschalten..

  • Ändere das
    GetVehicleHealth(vID, health);
    mal zu:
    GetVehicleHealth(vID, health);
    printf("vID: %d / health: %f / schaden: %d", vID, health, motorschaden[vID]);


    Was steht dann im Server Log, wenn du das Fahrzeug an machen willst?

  • Das Health ist auf 300 immer, aber habe jetzt keine Ahnung woher das kommt:o
    [18:41:30] vID: 54 / health: 300.000000 / schaden: 0
    Hab jetzt mal die Werte auf 270 geändert, steht trotzdem noch 300 in der .cfg dann?
    Wie kann das denn sein..

    Einmal editiert, zuletzt von IceWave ()

  • Das Problem liegt an dem TogglePlayerControllable habe ich jetzt herausgefunden.. ?


    GetVehicleDriver(vehicleid)
    {
    new i;
    for(;i!=MAX_PLAYERS;i++) if(IsPlayerConnected(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER && GetPlayerVehicleID(i) == vehicleid) return i;
    return INVALID_PLAYER_ID;
    }


    Jeffry:

    3 Mal editiert, zuletzt von IceWave ()