Beiträge von #S.

    Falls du mit einem Streamer arbeitest, ist das sehr wohl möglich (Incognito Streamer). Dort kannst du mit



    CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 200.0);


    die 'worldid' auf deine gewünschte Welt festlegen, sodass diese Objekte auch nur dort gesehen werden.


    public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
    {
    return 1;
    }
    // Falls du noch das passende Gegenstück brauchst:
    public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid, bodypart)
    {
    return 1;
    }


    WantedTd = CreatePlayerTextDraw(playerid,523.000000, 99.000000, "1");


    und



    SternTd = CreatePlayerTextDraw(playerid,479.000000, 100.000000, "[]");


    zu



    WantedTd[playerid] = CreatePlayerTextDraw(playerid,523.000000, 99.000000, "1");


    und



    SternTd[playerid] = CreatePlayerTextDraw(playerid,479.000000, 100.000000, "[]");

    Guten Abend,


    Ich stehe vor einem blödem Problem. Ich möchte gerne für mein CTF Gangwar die Flagge punktgenau (oder wenigstens in der Nähe :b) der Mitte erstellen. Jetzt stehe Ich vor dem Problem: Ich weiß nicht wie.
    Ich habe nicht mal einen Code, da ich nicht weiß, wie ich anfangen soll. Die Vermutung, dass es eine Berechnung eines Rechtecks ist, dürfte für den Anfang schon einmal nicht falsch sein.
    Hoffentlich hat jemand einen Lösungsvorschlag oder ein ähnliches System. Schönen Abend noch. ^^

    Ich hatte gedacht das war gefordert, weil er oben schrieb "Es muss ja nur noch die Anzahl ausgelesen werden."
    Aber da du ja die Lösung geschrieben hast die er wollte, passt alles. :D

    Wenn ich dich richtig verstanden habe, meinst du cache_get_field_content_int.



    PlayerInfo[playerid][pWanted]=cache_get_field_content_int(spalte,"spaltenname");

    Das ist ja so schon richtig. Du musst nur - sofern noch nicht getan - die Wantedlevel noch bei deiner Speicherfunktion mit einbinden, die beim Disconnect abgerufen wird.

    "Parameters:


    (vehicleid, &engine, &lights, &alarm, &doors, &bonnet, &boot, &objective)"


    Du musst als erstes mal die Variablen erstellen dafür:



    new tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective;
    //Können beliebig geändert werden (Namen)
    //So benutzt du es dann:
    GetVehicleParamsEx(carid,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective);
    //So werden die Variablen damit befüllt und du kannst sie beliebig ändern. So benutzt du es:


    if(tmp_engine==1)
    {
    tmp_engine=0;
    }
    else
    {
    tmp_engine=1;
    }
    SetVehicleParamsEx(carid,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective);

    Probiere es mal so:



    if(strcmp(cmd, "/motor", true) == 0)
    {
    new carID = GetPlayerVehicleID(playerid);
    for(new i = 0; i < sizeof(Vehicle); i++)
    {
    if(!Vehicle[i][carSID])continue; // Oder wie auch immer du es nun genannt hast.
    if(!Vehicle[i][carSID] != carID)continue;
    if(Vehicle[i][fFrak] == PlayerInfo[playerid][frak]) //Die ID der Fraktion eintragen.
    {
    if(PlayerInfo[playerid][frak] != FRAKID)) //Die ID der Fraktion eintragen, die das Fahrzeug benutzen darf.
    {
    SendClientMessage(playerid, ROT, "Du hast keine Schlüssel.");
    break;
    }
    else
    {
    /* Hier jetzt Motor anschalten (Get- & SetVehicleParamsEx) */
    }
    }
    }
    return 1;
    }

    Mach einfach im Fahrzeugenum einen neuen Eintrag, den du z.B. carSID = carserverid nennst.
    Den verwendest du dann so:



    Vehicle[i][carSID] = CreateVehicle(Vehicle[i][fModel],Vehicle[i][fSposX],Vehicle[i][fSposY],Vehicle[i][fSposZ],Vehicle[i][fSposO],Vehicle[i][fColor1],Vehicle[i][fColor2], CAR_RESPAWN_TIME,Vehicle[i][fSirene]);
    //Da CreateVehicle die Server Auto ID wiedergibt, kannst du sie so einfach verwenden, da sie in Vehicle[i][carSID] nun gespeichert ist.
    //Mit Vehicle[xy[carSID] kannst du es dann überall benutzen.


    Oder reden wir immer noch aneinander vorbei?

    Ich habe einfach mal den ATM kaputt geboxt und siehe da, das 3DLabel kommt hervor. Es lag also am letzten Parameter beim Create3DTextLabel (testLOS jetzt auf 0 == funktioniert). Scheinbar hat der ATM das Label blockiert. :D

    Habe das Problem, dass meine ATMs einfach keinen 3DTextLabel haben wollen. Das passiert aber nur beim Serverstart (also haben sie quasi trotzdem keinen), weil sobald ich einen ATM create (Befehl) ist das Label da.



    // UpdateATM
    updateATM(id)
    {
    Delete3DTextLabel(atmInfo[id][a_text]);
    new string[128];
    format(string,sizeof(string),"ATM\nATM verbleidendes Geld: %i$\nATM momentaner Inhalt: %i$",atmInfo[id][a_inventory],atmInfo[id][a_savedmoney]);
    atmInfo[id][a_text]=Create3DTextLabel(string,CLR_YELLOW,atmInfo[id][ax],atmInfo[id][ay],atmInfo[id][az],20.0,0,1);
    return 1;
    }


    // ATMs Laden
    sqlLoadATMs()
    {
    new query[256],num_fields,num_rows,count;
    mysql_format(dbhandle,query,sizeof(query),"SELECT * FROM atms");
    mysql_query(dbhandle,query);
    cache_get_data(num_rows,num_fields,dbhandle);
    if(!num_rows)return 1;
    for(new i=0;i<num_rows;i++)
    {
    count++;
    atmInfo[i][a_dbid]=cache_get_field_content_int(i,"id");
    atmInfo[i][ax]=cache_get_field_content_float(i,"x");
    atmInfo[i][ay]=cache_get_field_content_float(i,"y");
    atmInfo[i][az]=cache_get_field_content_float(i,"z");
    atmInfo[i][arx]=cache_get_field_content_float(i,"rx");
    atmInfo[i][ary]=cache_get_field_content_float(i,"ry");
    atmInfo[i][arz]=cache_get_field_content_float(i,"rz");
    atmInfo[i][a_inventory]=cache_get_field_content_int(i,"inventory");
    atmInfo[i][a_savedmoney]=cache_get_field_content_int(i,"savedmoney");
    atmInfo[i][a_id]=CreateDynamicObject(2942,atmInfo[i][ax],atmInfo[i][ay],atmInfo[i][az],atmInfo[i][arx],atmInfo[i][ary],atmInfo[i][arz]);
    updateATM(i);
    }
    printf("Es wurde(n) %i ATM(s) geladen.",count);
    return 1;
    }


    Habe mir mal die Coords printen lassen, sind absolut korrekt. Habe auch nochmal Syntax angeschaut, scheint aber richtig zu sein.

    @fishy Du kannst in deinem Enum einfach einen neuen Eintrag machen der z.B. s_id für serverid heißt und verknüpfst diese dann einfach mit CreateVehicle.



    enum playercarInfo {
    s_id,
    // usw...
    }


    // Bei dir dann z.B.:
    Vehicle[i][s_id] = CreateVehicle(...); // So ist dann jedes Auto mit der s_id verknüpft.