Hilfe bei kidnap System

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
  • Mein Problem ist.
    Ich brauche eine abfrage um herauszufinden ob ein Platz im auto frei ist wo ich ihn hinsetzen kann.
    Bzw. wenn kein Platz frei ist das die meldung kommt das jeder platz belegt ist im auto


    Hier der Befehl:



    ocmd:kidnap(playerid,params[]){
    //Hier die Frak Abfragen einfügen
    new pID;
    if(sscanf(params,"u",pID))return SendClientMessage(playerid, Rot, "INFO: {FFFFFF}/kidnap [ID/Name]");
    if(PlayerInfo[pID][fraktion] == 1) || if(PlayerInfo[pID][fraktion] == 2) || if(PlayerInfo[pID][fraktion] == 3) || if(PlayerInfo[pID][fraktion] == 4)return SendClientMessage(playerid,Rot,"INFO:{FFFFFF} Du kannst keine Beamte kidnappen");
    if(!IsPlayerInAnyVehicle(playerid);return SendClientMessage(playerid,Rot,"INFO: {FFFFFF}Du musst dich in einem Fahrzeug befinden im jemand zu kidnappen");
    if(IsPlayerInAnyVehicle(pID)return SendClientMessage(playerid,Rot,"INFO:{FFFFFF} Dein Opfer befindet sich in einem Fahrzeug zu kannst es nicht kidnappen");
    if(PlayerInfo[pID][fraktion] == PlayerInfo[playerid][fraktion])return SendClientMessage(playerid,Rot,"INFO:{FFFFFF} Du kannst kein Mitglied deiner Fraktion kidnappen");
    new Float:health;
    health = GetPlayerHealth(pID);
    if(health < 15)return SendClientMessage(playerid, Rot, "INFO:{FFFFFF} Dein Opfer muss weniger als 15HP besitzen um gekidnappt zu werden");
    return 1;
    }


  • Naja..doch das hilft dir weiter:


    stock GetVehicleFreeSeat(vehicleid)
    {
    const max_sitze = 4; //Gehen wir davon aus, dein Fahrzeug hat max 4 sitze:
    new bool:free[max_sitze] = {true, ...};
    for(new i=GetPlayerPoolSize()+1; --i!=-1;)
    {
    if(!IsPlayerConnected(i) || !IsPlayerInVehicle(i,vehicleid)) continue;
    switch(GetPlayerVehicleSeat(i))
    {
    case 0: free[0] = false;
    case 1: free[1] = false;
    case 2: free[2] = false;
    case 3: free[3] = false;
    default: continue;
    }
    }
    for(new i; i<max_sitze; i++) if(free[i]) return i;
    return -1;
    }


    Wenn -1 returnt wird, ist alles voll ;)


    PS: Den switch hab ich gemacht, damit kein Memory accsess Fehler auftritt :)


    mfg. :thumbup:


    //Edit: :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • OK und wie sieht dann die abfrage aus?
    Und wie die funktion wenn er letzendlich ins fahrzeug gesetzt wird?

  • Und wie die funktion wenn er letzendlich ins fahrzeug gesetzt wird?


    Naja...so:


    new seat = GetVehicleFreeSeat(vehicleid);
    if(seat == -1) return //Hier ist alles voll
    PutPlayerInVehicle(pID,vehicleid,seat);

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S