Beiträge von Kasakow

    Hört doch auf den Thread immer umzubenennen zu "kann closed werden" oder "erledigt".
    Seid nicht so egoistisch, die anderen, wollen das vielleicht auch wissen, es gibt nicht nur euch.

    Leute echt, ihr müsst nicht alles aus eurem unzufrieden Leben, auf das Forum übertragen.
    Entweder ja ich könnte den Server schon gebrauchen und ich heule wegen Daten MiMimI.. Wobei ein Vorgänger bereits erwähnte.. Man sollte sich so ein Angebot nur zum Gamen etc. holen!

    Mich motiviert Real-Life gar nicht mehr, deswegen bin ich an etwas anderem dran, was sehr viele vermisst haben, als es fort war.
    Ansonsten schaue ich selten mal auf Nova-Newlife vorbei, das war mein erster Real-Life Server und mein letzter Server, wo ich wirklich richtig spiele.

    Mir stellt sich die Frage, wie ich das am besten angehe.
    Soll ich nun die Distanz jeweils immer auswerten und demnach handeln oder gibt es eine automatisierte Methode für alle meine Wunsch Werte angepasst auf meine Distanz?

    PlayerVehicle ist ein Makro für GetPlayerVehicleID, richtig, das kürzt es einfach ein bisschen ab.
    Ich hatte gar nicht daran gedacht, das die Funktion, den Wert einen Integer abrundet, jetzt funktioniert das Super!
    Vorher hatte ich ganz normal playerid verwendet, zu mindestens bei "meiner" Funktion.

    Ich habe die Funktion früher nutzen können und habe sie auch aus meinem alten Skript, aber irgendwie wird mir immer 0 ausgegeben, zu Fus und im Fahrzeug, beide Werte betragen 0.
    Die 2 Funktion habe ich aus dem Santos Skript genommen weil ich dachte, dass mit meiner irgendwas nicht mehr passte in dieser Version..leider gibt die auch 0 aus.


    Meine Funktion

    stock GetPlayerSpeed(playerid)
    {
    new Float:pPos[4];
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)GetVehicleVelocity(GetPlayerVehicleID(playerid), pPos[0], pPos[1], pPos[2]);
    else if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)GetPlayerVelocity(playerid, pPos[0], pPos[1], pPos[2]);
    pPos[3] = floatsqroot(pPos[0] * pPos[0] + pPos[1] * pPos[1]);
    return floatround(pPos[3] * 100 * 1.61);
    }



    //Gucci/Jonny

    stock GetVehicleSpeed(vehicleid)
    {
    new Float:SpeedVel[3],Float:Speeddistance,Speed;
    if(!IsValidVehicle(vehicleid))return true;
    GetVehicleVelocity(vehicleid,SpeedVel[0],SpeedVel[1],SpeedVel[2]);
    Speeddistance = floatsqroot(((SpeedVel[0]*SpeedVel[0])+(SpeedVel[1]*SpeedVel[1]))+(SpeedVel[2]*SpeedVel[2]))*144;
    Speed = floatround(Speeddistance,floatround_round);
    return Speed;
    }

    \pawno\include\progress2.inc(73) : error 017: undefined symbol "ITER_NONE"
    Ich hatte den fehler vorher schon habs aber abgeändert in:


    C
    if(!barid) {
       err("MAX_PLAYER_BARS limit reached.");
       return INVALID_PLAYER_BAR_ID;
    }


    Original, jetzt wieder, mit dem Oben beschriebenen Fehler:


    C
    if(barid == ITER_NONE) {
       err("MAX_PLAYER_BARS limit reached.");
       return INVALID_PLAYER_BAR_ID;
    }

    @Kaliber

    Also ich habe mir mal "Progess (2)" herunter geladen und auch die dazugehörigen Editor-Filterskripts, aber irgendwie läuft das nicht.. immer Unknown Command.


    Kann ich mir dann augenscheinlich mit dem Editor (pottus oder emmet) die Balken auch von der Höhe anders gestalten?
    Die Balken auf dem Bild, von ProcessBar (1), die so groß sind wie die Lebens&Rüstungsanzeige selbst.. sind mir zu klein.
    Das wäre für ein Tachometer nicht so schön.

    Für diese Sache brauche ich es.



    ocmd:destroycopcar(playerid, params[])
    {
    if(getAdmin(playerid) <6)return 1;
    new str[64];
    if(!sscanf(params, "s", str))
    {
    if(!strcmp(str, "radius", true))
    {
    new vID = GetClosestCopCar(playerid, 3.5);
    if(vID == INVALID_VEHICLE_ID)return SCM(playerid, COLOR_RED, "Es ist kein Polizei Fahrzeug in deiner Nähe.");
    SetPVarInt(playerid, "delRadCopCar", vID),
    format(str, sizeof str, "Möchtest du wirklich das Polizei Fahrzeug '%s' entfernen?", GetVehicleName(Vehicle[vID][vVehicle])),
    ShowPlayerDialog(playerid, D_DELCOPCAR, DIALOG_STYLE_MSGBOX, "Polizeifahrzeug Entfernen.", str, "Bestätigen", "Abbrechen");
    return 1;
    }
    }
    if(!IsACopCar(PlayerVehicle(playerid)))return SCM(playerid, COLOR_GREY, "Du sitzt in keinem Polizei Fahrzeug!");
    new CarIndex = PlayerVehicle(playerid);
    AdminLog(playerid, "delcopcar", "entfernt ein Polizei Fahrzeug. [VehID: %d, CarIndex: %d, SQL: %d]", Vehicle[CarIndex][vModel], CarIndex, Vehicle[CarIndex][vSQL]);
    DestroyCopCar(CarIndex),
    SCM(playerid, COLOR_LIGHTBLUE, "Du hast das Polizei Fahrzeug erfolgreich entfernt.");
    return 1;
    }


    stock DestroyCopCar(carindex)
    {
    new query[64];
    mysql_format(handle, query, sizeof query, "DELETE FROM copcar WHERE id = %d", Vehicle[carindex][vSQL]),
    mysql_pquery(handle, query);
    DestroyVehicleEx(Vehicle[carindex][vVehicle], true);
    return 1;
    }


    //Ondialogresponse
    case D_DELCOPCAR:
    {
    if(!response)return DeletePVar(playerid, "delRadCopCar");
    new idx = GetPVarInt(playerid, "delRadCopCar");
    AdminLog(playerid, "delcopcar", "entfernt ein Polizei Fahrzeug. [VehID: %d, CarIndex: %d, SQL: %d]", GetVehicleModel(Vehicle[idx][vVehicle]), idx, Vehicle[idx][vSQL]);
    DestroyCopCar(idx),
    SCM(playerid, COLOR_LIGHTBLUE, "Du hast das Polizei Fahrzeug erfolgreich entfernt.");
    }

    Ich stehe nach meinem Umdenken sowie Umbau immer mal wieder vor diesem einem Problem.
    Ich habe das Fahrzeug System unter ein Array verallgemeinert, egal ob es sich um das CopCar System dreht oder um das GlobalCar System.. irgendein Fahrzeug aus der Kette spawnt nicht, das gilt für beide Systeme.
    Ich nutze als Index (der Wert in der Mitte) die VehicleID selbst, ich finde so spare unnötig viele Schleifen.


    Quellcode:

    enum E_VEHICLE
    {
    //Int werde
    vSQL,
    vVehicle,
    vType,
    vModel,
    vColor1,
    vColor2,
    vRDelay,
    vSiren,
    vSkill,

    //Float werte
    Float:vTankvol,
    Float:vX,
    Float:vY,
    Float:vZ,
    Float:vR,

    //boolean werte
    bool:vTanktive,
    vEngine,
    };


    enum
    {
    VTYPE_COP,
    VTYPE_ADMIN,
    VTYPE_GLOBAL,
    };


    public QueryFinish(QUERY)
    {
    switch(QUERY)
    {
    case QUERY_LOADCOPVEH:
    {
    for(new i, cachedVehicle, cachedVehSQL, cachedModel, cachedSkill, Float:chX, Float:chY, Float:chZ, Float:chR;i<rows;i++)
    {
    if(Vehicle[i][vVehicle])continue;
    cache_get_value_name_int(i, "id", cachedVehSQL),
    cache_get_value_name_int(i, "Model", cachedModel),
    cache_get_value_name_int(i, "Skill", cachedSkill),
    cache_get_value_name_float(i, "X", chX),
    cache_get_value_name_float(i, "Y", chY),
    cache_get_value_name_float(i, "Z", chZ),
    cache_get_value_name_float(i, "R", chR),
    cachedVehicle = CreateVehicleEx(cachedModel, chX, chY, chZ, chR, -1, -1, -1, 1);


    Vehicle[cachedVehicle][vVehicle] = cachedVehicle,
    Vehicle[cachedVehicle][vSQL] = cachedVehSQL,
    Vehicle[cachedVehicle][vModel]= cachedModel,
    Vehicle[cachedVehicle][vSkill] = cachedSkill,
    Vehicle[cachedVehicle][vX] = chX,
    Vehicle[cachedVehicle][vY] = chY,
    Vehicle[cachedVehicle][vZ] = chZ,
    Vehicle[cachedVehicle][vR] = chR,
    Vehicle[cachedVehicle][vType] = VTYPE_COP,
    Vehicle[cachedVehicle][vTankvol] = 100.0,
    Vehicle[cachedVehicle][vTanktive] = true,


    printf("LOADCV: Type: %d, SQL: %d, Model: %d, Skill: %d, Pos: %f,%f,%f,%f, IVehID: %d", Vehicle[cachedVehicle][vType], cachedVehSQL, cachedModel, cachedSkill, chX, chY, chZ, chR, cachedVehicle);
    }
    }
    case QUERY_LOADGLOBALVEH:
    {
    for(new i, cachedVehicle, cachedVehSQL, cachedModel, cachedColOne, cachedColSecond, Float:chX, Float:chY, Float:chZ, Float:chR;i<rows;i++)
    {
    if(Vehicle[i][vVehicle])continue;
    cache_get_value_name_int(i, "DatabaseID", cachedVehSQL),
    cache_get_value_name_int(i, "Model", cachedModel),
    cache_get_value_name_int(i, "Color1", cachedColOne),
    cache_get_value_name_int(i, "Color2", cachedColSecond),
    cache_get_value_name_float(i, "X", chX),
    cache_get_value_name_float(i, "Y", chY),
    cache_get_value_name_float(i, "Z", chZ),
    cache_get_value_name_float(i, "R", chR),
    cachedVehicle = CreateVehicleEx(cachedModel, chX, chY, chZ, chR, cachedColOne, cachedColSecond, -1, 0);


    Vehicle[cachedVehicle][vVehicle] = cachedVehicle,
    Vehicle[cachedVehicle][vSQL] = cachedVehSQL,
    Vehicle[cachedVehicle][vModel]= cachedModel,
    Vehicle[cachedVehicle][vX] = chX,
    Vehicle[cachedVehicle][vY] = chY,
    Vehicle[cachedVehicle][vZ] = chZ,
    Vehicle[cachedVehicle][vR] = chR,
    Vehicle[cachedVehicle][vColor1] = cachedColOne,
    Vehicle[cachedVehicle][vColor2] = cachedColSecond,
    Vehicle[cachedVehicle][vType] = VTYPE_GLOBAL,
    Vehicle[cachedVehicle][vTankvol] = 100.0,
    Vehicle[cachedVehicle][vTanktive] = true;


    printf("LOADGLOBALCAR: Type: %d, SQL: %d, Model: %d, Pos: %f,%f,%f,%f, IVehID: %d", Vehicle[cachedVehicle][vType], cachedVehSQL, cachedModel, chX, chY, chZ, chR, cachedVehicle);
    }
    }
    }
    }

    Ich habe aktuell das vorhaben, ein Tacho zu gestalten mit Zustands & Tankbar.
    Leider weiß ich nicht wie ich es umrechnen soll das sich die jeweilige Bar auf jedes Volumen anpasst und automatisch kleiner wird.
    Hat da jemand einen Denkanstoß für mich?