Beiträge von Around.

    Danke für die schnelle Antwort aber ich kann damit leider nicht viel anfangen sry.
    Haste vllt nen Codeschnipsel als kleines beispiel? Das ich das in ner Schleife durchgehen muss ist klar aber mir ist noch nicht ganz klar wie die Abfrage in der Schleife auszusehen hat :/


    //EDIT: hab grade gesehen es gibt die Funktion GetPlayerDistanceFromPoint kann man mit der i-was anfangen in diesem Fall?

    Hey liebe Brotfischer,
    Ich habe mal eine Frage.
    Ich möchte ein Navigationsystem machen und möchte z.B. die nächste Tankstelle ermitteln.
    Ich habe einen Command erstellt der einen List-Dialog aufruft und einem die auswahlmöglichkeit "Nächste Tankstelle" anbietet.
    Ich habe alle Tankstellen in einem Array gespeichert (Tankstellen[][tankvars] die tankvars bestehen aus tx, ty und tz für die Position) nun möchte ich, das wenn man den Menüpunkt wählt ein Checkpoint an der Tankstelle mit der geringsten Distanz erstellt wird,
    nur weis ich nicht wie und da hab ich mir gedacht frage ich euch mal :D


    Vielen Dank für eure Antworten schonmal im Vorraus.


    mfg. Chris

    Ok hab es zwar etwas anders gemacht aber so geht es:


    Spoiler anzeigen

    ocmd:lock(playerid,params[])
    {

    new vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective;

    if(IsPlayerInAnyVehicle(playerid))// Falls der Spieler in einem Fahrzeug sitzt
    {
    vID = GetPlayerVehicleID(playerid);
    }
    else if(GetClosestVehicle(playerid, 20) != 0)// Falls ein Fahrzeug in der Nähe des Spielers ist
    {
    vID = GetClosestVehicle(playerid, 20);
    }
    else
    {
    vID = -1;
    }
    vID = GetCarID(vID);
    if(vID == -1) return SendClientMessage(playerid, 0xFF000FF, "ERROR: Auto ist kein mit MySQL erstelltes Auto.");
    //printf("vID:%i",vID);
    //printf("car_besitzer:%i", cInfo[vID][besitzer]);
    //printf("besitzer_dbid:%i", sInfo[playerid][db_id]);
    if(cInfo[vID][besitzer] == sInfo[playerid][db_id])
    {
    GetVehicleParamsEx(cInfo[vID][id_x], tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
    if(tmp_doors==1){
    SetVehicleParamsEx(cInfo[vID][id_x], tmp_engine, tmp_lights, tmp_alarm, 0, tmp_bonnet, tmp_boot, tmp_objective);
    GameTextForPlayer(playerid, "~w~Fahrzeug ~g~offen", 2000, 3);// Eine Meldung wird eingeblendet
    PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
    }else{
    SetVehicleParamsEx(cInfo[vID][id_x], tmp_engine, tmp_lights, tmp_alarm, 1, tmp_bonnet, tmp_boot, tmp_objective);
    GameTextForPlayer(playerid, "~w~Fahrzeug ~r~verschlossen", 2000, 3);// Eine Meldung wird eingeblendet
    PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
    }
    }
    return 1;
    }


    Vielen Dank für die Hilfe an alle und besonders an Jeffry


    mfg. Chris

    Lock-Befehl:

    Spoiler anzeigen

    ocmd:lock(playerid,params[])
    {

    new vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective;

    if(IsPlayerInAnyVehicle(playerid))// Falls der Spieler in einem Fahrzeug sitzt
    {
    vID = GetPlayerVehicleID(playerid);
    }
    else if(GetClosestVehicle(playerid, 20) != 0)// Falls ein Fahrzeug in der Nähe des Spielers ist
    {
    vID = GetClosestVehicle(playerid, 20);
    }
    else
    {
    vID = -1;
    }
    vID = GetCarID(vID);
    if(vID == -1) return SendClientMessage(playerid, 0xFF000FF, "ERROR: Auto ist kein mit MySQL erstelltes Auto.");
    //printf("vID:%i",vID);
    //printf("car_besitzer:%i", cInfo[vID][besitzer]);
    //printf("besitzer_dbid:%i", sInfo[playerid][db_id]);
    if(cInfo[vID][besitzer] == sInfo[playerid][db_id])
    {
    GetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
    if(tmp_doors==1){
    tmp_doors = 0;
    GameTextForPlayer(playerid, "~w~Fahrzeug ~g~offen", 2000, 3);// Eine Meldung wird eingeblendet
    PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
    }else{
    tmp_doors = 1;
    GameTextForPlayer(playerid, "~w~Fahrzeug ~r~verschlossen", 2000, 3);// Eine Meldung wird eingeblendet
    PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
    }
    SetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
    }
    return 1;
    }


    wenn ich /lock eingebe egal ob im auto oder nicht (aber in der nähe vom auto natürlich) kommt beim GameText:
    Fahrzeug Verschlossen
    man kann aber trozdem noch einsteigen

    geprintet wird das:


    Spoiler anzeigen

    [14:54:32] Vehicle 0: Besitzer 1
    [14:54:32] Vehicle 1: Besitzer 1
    [14:54:48] vID-GetCarID:52
    [14:54:48] vID:0
    [14:54:48] car_besitzer:1
    [14:54:48] besitzer_dbid:1


    soweit richtig nur ingame steht immer
    Fahrzeug Verschlossen
    wenn ich /lock eingebe und man kann trozdem noch einsteigen :S

    new cInfo[50][carEnum];


    enum carEnum{
    id_x,
    model,
    besitzer,
    besitzer_name[24],
    Float:c_x,
    Float:c_y,
    Float:c_z,
    Float:c_r,
    farbe1,
    farbe2,
    bool:abgeschleppt,
    tank,
    db_id
    }

    sry das meinte ich mit

    Zitat

    (so wie ich ab und zu) sich zu blöd anstellt


    Ich vestehe nicht ganz was soll ich mit MAX_PRIV_CARS machen?

    nein wie du siehst leider noch nicht aber ich denke uns wird bald einer helfen in der Zeit wo ich hier unterwegs bin ist mir aufgefallen das die User sehr hilfsbereit sind auch wenn man (so wie ich ab und zu) sich zu blöd anstellt etwas zu verstehen :)

    [16:41:39] vID:52
    [16:41:39] car_besitzer:1627389952 <- Besteht immernoch
    [16:41:39] besitzer_dbid:1


    somit funktioniert der lock befehl immernochnicht :S


    Aber danke schonmal für die Hilfe mit dem getClosestVehicle


    //Edit:
    Privatfahrzeuge wenn sie geladen werden:
    [16:46:34] Vehicle 0: Besitzer 1
    [16:46:34] Vehicle 1: Besitzer 1


    sprich die id wird richtig ausgelesen

    Also es zählt von 1 bis 699 hoch wenn du es unbeding sehen willst hier:

    Spoiler anzeigen

    [13:36:58] Vehicleid: 1 -> 1649.39
    [13:36:58] Vehicleid: 2 -> 1086.94
    [13:36:58] Vehicleid: 3 -> 1085.17
    [13:36:58] Vehicleid: 4 -> 1086.35
    [13:36:58] Vehicleid: 5 -> 1084.67
    [13:36:58] Vehicleid: 6 -> 1085.80
    [13:36:58] Vehicleid: 7 -> 1084.68
    [13:36:58] Vehicleid: 8 -> 1083.99
    [13:36:58] Vehicleid: 9 -> 1084.10
    [13:36:58] Vehicleid: 10 -> 1083.18
    [13:36:58] Vehicleid: 11 -> 1082.56
    [13:36:58] Vehicleid: 12 -> 1065.81
    [13:36:58] Vehicleid: 13 -> 1067.42
    [13:36:58] Vehicleid: 14 -> 1066.46
    [13:36:58] Vehicleid: 15 -> 1068.29
    [13:36:58] Vehicleid: 16 -> 1068.76
    [13:36:58] Vehicleid: 17 -> 1070.28
    [13:36:58] Vehicleid: 18 -> 1067.97
    [13:36:58] Vehicleid: 19 -> 1069.69
    [13:36:58] Vehicleid: 20 -> 1067.62
    [13:36:58] Vehicleid: 21 -> 1068.92
    [13:36:58] Vehicleid: 22 -> 3603.71
    [13:36:58] Vehicleid: 23 -> 3602.22
    [13:36:58] Vehicleid: 24 -> 3581.96
    [13:36:58] Vehicleid: 25 -> 3578.06
    [13:36:58] Vehicleid: 26 -> 3597.87
    [13:36:58] Vehicleid: 27 -> 3582.68
    [13:36:58] Vehicleid: 28 -> 3605.04
    [13:36:58] Vehicleid: 29 -> 3603.18
    [13:36:58] Vehicleid: 30 -> 3596.40
    [13:36:58] Vehicleid: 31 -> 1106.21
    [13:36:58] Vehicleid: 32 -> 1108.49
    [13:36:58] Vehicleid: 33 -> 1110.41
    [13:36:58] Vehicleid: 34 -> 1093.82
    [13:36:58] Vehicleid: 35 -> 1095.91
    [13:36:58] Vehicleid: 36 -> 1098.13
    [13:36:58] Vehicleid: 37 -> 1100.42
    [13:36:58] Vehicleid: 38 -> 1102.78
    [13:36:58] Vehicleid: 39 -> 1105.00
    [13:36:58] Vehicleid: 40 -> 1107.29
    [13:36:58] Vehicleid: 41 -> 761.99
    [13:36:58] Vehicleid: 42 -> 759.64
    [13:36:58] Vehicleid: 43 -> 756.55
    [13:36:58] Vehicleid: 44 -> 753.91
    [13:36:58] Vehicleid: 45 -> 751.59
    [13:36:58] Vehicleid: 46 -> 749.05
    [13:36:58] Vehicleid: 47 -> 746.29
    [13:36:58] Vehicleid: 48 -> 743.45
    [13:36:58] Vehicleid: 49 -> 740.37
    [13:36:58] Vehicleid: 50 -> 825.09
    [13:36:58] Vehicleid: 51 -> 821.60
    [13:36:58] Vehicleid: 52 -> 2.84
    [13:36:58] 2.84 <= 21.00 => vehicleid = 52
    [13:36:58] Vehicleid: 53 -> 24.43
    [13:36:58] Vehicleid: 54 -> 0.00
    [13:36:58] 0.00 <= 2.84 => vehicleid = 54
    [13:36:58] Vehicleid: 55 -> 0.00
    [13:36:58] 0.00 <= 0.00 => vehicleid = 55
    [13:36:58] Vehicleid: 56 -> 0.00
    [13:36:58] 0.00 <= 0.00 => vehicleid = 56
    [13:36:58] Vehicleid: 57 -> 0.00
    [13:36:58] 0.00 <= 0.00 => vehicleid = 57

    Spoiler anzeigen
    [13:36:58] Vehicleid: 695 -> 0.00
    [13:36:58] 0.00 <= 0.00 => vehicleid = 695
    [13:36:58] Vehicleid: 696 -> 0.00
    [13:36:58] 0.00 <= 0.00 => vehicleid = 696
    [13:36:58] Vehicleid: 697 -> 0.00
    [13:36:58] 0.00 <= 0.00 => vehicleid = 697
    [13:36:58] Vehicleid: 698 -> 0.00
    [13:36:58] 0.00 <= 0.00 => vehicleid = 698
    [13:36:58] Vehicleid: 699 -> 0.00
    [13:36:58] 0.00 <= 0.00 => vehicleid = 699
    [13:36:58] Vehicleid: 1 -> 1649.39
    [13:36:58] Vehicleid: 2 -> 1086.94
    [13:36:58] Vehicleid: 3 -> 1085.17
    [13:36:58] Vehicleid: 4 -> 1086.35
    [13:36:58] Vehicleid: 5 -> 1084.67
    [13:36:58] Vehicleid: 6 -> 1085.80
    [13:36:58] Vehicleid: 7 -> 1084.68
    [13:36:58] Vehicleid: 8 -> 1083.99
    [13:36:58] Vehicleid: 9 -> 1084.10
    [13:36:58] Vehicleid: 10 -> 1083.18
    [13:36:58] Vehicleid: 11 -> 1082.56
    [13:36:58] Vehicleid: 12 -> 1065.81
    [13:36:58] Vehicleid: 13 -> 1067.42
    [13:36:58] Vehicleid: 14 -> 1066.46
    [13:36:58] Vehicleid: 15 -> 1068.29
    [13:36:58] Vehicleid: 16 -> 1068.76
    [13:36:58] Vehicleid: 17 -> 1070.28
    [13:36:58] Vehicleid: 18 -> 1067.97
    [13:36:58] Vehicleid: 19 -> 1069.69
    [13:36:58] Vehicleid: 20 -> 1067.62
    [13:36:58] Vehicleid: 21 -> 1068.92
    [13:36:58] Vehicleid: 22 -> 3603.71
    [13:36:58] Vehicleid: 23 -> 3602.22
    [13:36:58] Vehicleid: 24 -> 3581.96
    [13:36:58] Vehicleid: 25 -> 3578.06
    [13:36:58] Vehicleid: 26 -> 3597.87
    [13:36:58] Vehicleid: 27 -> 3582.68
    [13:36:58] Vehicleid: 28 -> 3605.04
    [13:36:58] Vehicleid: 29 -> 3603.18
    [13:36:58] Vehicleid: 30 -> 3596.40
    [13:36:58] Vehicleid: 31 -> 1106.21
    [13:36:58] Vehicleid: 32 -> 1108.49
    [13:36:58] Vehicleid: 33 -> 1110.41
    [13:36:58] Vehicleid: 34 -> 1093.82
    [13:36:58] Vehicleid: 35 -> 1095.91
    [13:36:58] Vehicleid: 36 -> 1098.13
    [13:36:58] Vehicleid: 37 -> 1100.42
    [13:36:58] Vehicleid: 38 -> 1102.78
    [13:36:58] Vehicleid: 39 -> 1105.00
    [13:36:58] Vehicleid: 40 -> 1107.29
    [13:36:58] Vehicleid: 41 -> 761.99
    [13:36:58] Vehicleid: 42 -> 759.64
    [13:36:58] Vehicleid: 43 -> 756.55
    [13:36:58] Vehicleid: 44 -> 753.91
    [13:36:58] Vehicleid: 45 -> 751.59
    [13:36:58] Vehicleid: 46 -> 749.05
    [13:36:58] Vehicleid: 47 -> 746.29
    [13:36:58] Vehicleid: 48 -> 743.45
    [13:36:58] Vehicleid: 49 -> 740.37
    [13:36:58] Vehicleid: 50 -> 825.09
    [13:36:58] Vehicleid: 51 -> 821.60
    [13:36:58] Vehicleid: 52 -> 2.84
    [13:36:58] 2.84 <= 21.00 => vehicleid = 52
    [13:36:58] Vehicleid: 53 -> 24.43
    [13:36:58] Vehicleid: 54 -> 0.00


    Mir sagt das jetzt nicht wirklich viel :D

    dein printf wird nichteinmal geprintet warum auch immer ich nehme an da ist der Fehler.


    [18:24:27] vID:699 <- wenn ich nicht im auto sitze (also GetClosestVehicle)
    [18:24:27] car_besitzer:
    [18:24:27] besitzer_dbid:1


    [18:24:32] vID:52 <- wenn ich im auto sitze (also GetPlayerVehicleID)
    [18:24:32] car_besitzer:
    [18:24:32] besitzer_dbid:1


    GetClosestVehicle:

    Spoiler anzeigen

    stock GetClosestVehicle(playerid, Float:range)
    {
    new Float:p_X;
    new Float:p_Y;
    new Float:p_Z;

    Spoiler anzeigen
    new Float:Distance;
    new Float:PretendentDistance = range +1;
    new Pretendent;

    Spoiler anzeigen
    GetPlayerPos(playerid, p_X, p_Y, p_Z);

    Spoiler anzeigen
    for(new vehicleid=1; vehicleid < MAX_VEHICLES; vehicleid++)
    {
    Distance = GetVehicleDistanceFromPoint(vehicleid, p_X, p_Y, p_Z);

    Spoiler anzeigen
    if(Distance <= range && Distance <= PretendentDistance)
    {
    Pretendent = vehicleid;
    PretendentDistance = Distance;
    }
    }

    Spoiler anzeigen
    return Pretendent;
    }

    Das ist die Funktion in der das Auto erstellt wird:


    Spoiler anzeigen

    createPlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r)
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]!=0)continue;
    new name[24];GetPlayerName(playerid,name,24);
    format(cInfo[i][besitzer_name],24,"%s",name);
    cInfo[i][besitzer]=sInfo[playerid][db_id];
    cInfo[i][c_x]=x;
    cInfo[i][c_y]=y;
    cInfo[i][c_z]=z;
    cInfo[i][c_r]=r;
    cInfo[i][model]=modelid;
    cInfo[i][farbe1]=farbe1;
    cInfo[i][farbe2]=farbe2;
    cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,farbe1,farbe2,-1);
    CarTank[cInfo[i][id_x]]=MaxTank[modelid-400];
    SetVehicleNumberPlate(cInfo[i][id_x],cInfo[i][besitzer_name]);
    SetVehicleToRespawn(cInfo[i][id_x]);
    saveCarToDB(playerid,i);
    return 1;
    }
    return 1;
    }


    Und wenn es mal erstellt wurde lädt er es hier raus:


    Spoiler anzeigen

    public OnPlayerCarsLoad(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id=getFreeCarID(),zname[24];
    cInfo[id][model]=cache_get_field_content_int(i,"model",dbhandle);
    cInfo[id][besitzer]=cache_get_field_content_int(i,"besitzer",dbhandle);
    cache_get_field_content(i,"besitzer_name",zname,dbhandle);
    format(cInfo[id][besitzer_name],24,"%s",zname);
    cInfo[id][c_x]=cache_get_field_content_float(i,"x",dbhandle);
    cInfo[id][c_y]=cache_get_field_content_float(i,"y",dbhandle);
    cInfo[id][c_z]=cache_get_field_content_float(i,"z",dbhandle);
    cInfo[id][c_r]=cache_get_field_content_float(i,"r",dbhandle);
    cInfo[id][farbe1]=cache_get_field_content_int(i,"farbe1",dbhandle);
    cInfo[id][farbe2]=cache_get_field_content_int(i,"farbe2",dbhandle);
    cInfo[id][abgeschleppt]=!!cache_get_field_content_int(i,"abgeschleppt",dbhandle);
    cInfo[id][db_id]=cache_get_field_content_int(i,"id",dbhandle); //suchehier
    cInfo[id][id_x]=CreateVehicle(cInfo[id][model],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],cInfo[id][farbe1],cInfo[id][farbe2],-1);
    printf("%s",cInfo[id][besitzer_name]);
    SetVehicleNumberPlate(cInfo[id][id_x],cInfo[id][besitzer_name]);
    SetVehicleToRespawn(cInfo[id][id_x]);
    CarTank[cInfo[id][id_x]]=cache_get_field_content_int(i, "tank", dbhandle);
    }
    return 1;
    }

    leider nein cInfo[vID][besitzer] ist ein integer.


    //EDIT:
    zum test mal auf %s gesetzt


    [17:14:38] vID:52
    [17:14:38] car_besitzer:
    [17:14:38] besitzer_dbid:1


    war ja klar

    Hey liebes Forum,


    Ich bastle nun an einem /lock Befehl um die Privat autos abzuschließen.


    Befehl:

    Spoiler anzeigen

    ocmd:lock(playerid,params[])
    {

    new vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective;

    if(IsPlayerInAnyVehicle(playerid))// Falls der Spieler in einem Fahrzeug sitzt
    {
    vID = GetPlayerVehicleID(playerid);
    }
    else if(GetClosestVehicle(playerid, 20) != 0)// Falls ein Fahrzeug in der Nähe des Spielers ist
    {
    vID = GetClosestVehicle(playerid, 20);
    }
    else
    {
    vID = -1;
    }
    printf("vID:%i",vID);
    printf("car_besitzer:%i", cInfo[vID][besitzer]);
    printf("besitzer_dbid:%i", sInfo[playerid][db_id]);
    if(cInfo[vID][besitzer] == sInfo[playerid][db_id])
    {
    GetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
    if(tmp_doors==1){
    tmp_doors = 0;
    GameTextForPlayer(playerid, "~w~Fahrzeug ~g~offen", 2000, 3);// Eine Meldung wird eingeblendet
    PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
    }else{
    tmp_doors = 1;
    GameTextForPlayer(playerid, "~w~Fahrzeug ~r~verschlossen", 2000, 3);// Eine Meldung wird eingeblendet
    PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
    }
    SetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
    }
    return 1;
    }


    So weit so gut...


    Nur es funktioniert nicht also habe ich mal die variablen printen lassen wobei das rauskommt:

    Spoiler anzeigen

    [16:24:33] vID:52 <- richtig
    [16:24:33] car_besitzer:1627389952 <- falsch
    [16:24:33] besitzer_dbid:1 <- richtig


    Eigentlich sollte es funktionieren EIGENTLICH


    Ich kann den Fehler einfach nicht finden.


    Wenn ihr mehr Infos braucht einfach fragen :D


    mfg. Around.

    Ich steige bei den beiden Funktionen nicht ganz durch.


    Also im Dialog steht z.B.:
    Around(0) hat einen Motorschaden
    Ben(1) meldet einen falschparker


    und ich möchte das der inhalt zwischen den () ausgelesen wird und ausgegeben wird.
    Am besten ein Anwendungsbeispiel zu dem System von Jeffrey.
    Entschuldigung falls das zu viel verlangt ist.

    Gut das er sich automatisch updated ist ne tolle spielerei brauch ich aber nicht wirklich.
    Wenn ein Auftrag aufgegeben wurde, werden die O-Amt'ler ja benachrichtigt.


    Nun eine frage wie übermittle ich welchen "Fall" er ausgewählt hat?
    //EDIT: Und wie übermittle ich die PlayerID und irgendwie wird immer nur der erste Angezeigt

    Könntest du vllt. ein paar Ranggrafiken machen?


    Also brauchen würde ich so den Standard Kram wie:
    Projektleitung, Mapper, Scripter, Admin, Moderator, Supporter


    wäre geil.


    mfg. Around..


    //EDIT: Sry letzten Post zu spät gesenen kannst mich ja auf die Warteliste packen