Beiträge von Kasakow

    Dein Print ist falsch, da fehlt die 4. Koordinate.


    printf("Created: %d | ID: %d | pos: %f,%f,%f,%f | j: %d | content: %s", gZone[j][zCreated], gZone[j][zID], gZone[j][zPos][0], gZone[j][zPos][1], gZone[j][zPos][2], gZone[j][zPos][3], j, gZone[j][zName]);
    So.


    Dies habe ich bereits ausgebessert.
    Jetzt printet er es richtig, halt 2x.
    1x wurde die Zone sogar erstellt, jetzt iwi nicht mehr!


    Quellcode:
    public LoadGFZonesFromDB()
    {
    cache_get_data(num[0], num[1], dbhandle);
    if(num[0]!=-1&&num[0]!=0)
    {
    static j;
    for(;j<sizeof(gZone);j++)
    {
    if(gZone[j][zCreated])continue;
    if(!strcmp(gZone[j][zName], "Ballas", true))continue;
    gZone[j][zPos][0] = cache_get_field_content_float(0, "zX", dbhandle);
    gZone[j][zPos][1] = cache_get_field_content_float(0, "zY", dbhandle);
    gZone[j][zPos][2] = cache_get_field_content_float(0, "zZ", dbhandle);
    gZone[j][zPos][3] = cache_get_field_content_float(0, "zA", dbhandle);
    gZone[j][zID] = GangZoneCreate(gZone[j][zPos][0], gZone[j][zPos][1], gZone[j][zPos][2], gZone[j][zPos][3]);
    format(gZone[j][zName], 45 + 5, "Ballas");
    gZone[j][zCreated] = true;
    printf("Created: %d | ID: %d | pos: %f,%f,%f,%f | j: %d | content: %s", gZone[j][zCreated], gZone[j][zID], gZone[j][zPos][0], gZone[j][zPos][1], gZone[j][zPos][2], gZone[j][zPos][3], j, gZone[j][zName]);
    if(j == num[0])break;
    }
    }
    return 1;
    }


    Print:
    [16:02:03] Created: 1 | ID: 0 | pos: 1520.010009,-1592.219970,1422.010009,-1718.219970 | j: 0 | content: Ballas
    [16:02:03] Created: 1 | ID: 1 | pos: 1520.010009,-1592.219970,1422.010009,-1718.219970 | j: 1 | content: Ballas


    mfg :thumbup:

    Warum speicherst du nur 3 Variablen für die Positionen? Im Grunde brauchst du doch XY für 1 und XY für 2.. wären 4 für die Zone, an Stelle des "Namens" mach dir ne ID und dann sollte das funktionieren..


    Ich hab das bei mir als stock:

    Code
    stock LoadGangGebiete()
    {
         for(new i; i<sizeof(Gebiete); i++)
         {
           Gebiete[i][gOwner] = getint(i);
           Gebiet[i] = GangZoneCreate(Gebiete[i][gMinX],Gebiete[i][gMinY],Gebiete[i][gMaxX],Gebiete[i][gMaxY]);
         }
         return 1;
    }


    Ich weis nicht was du hast!


    gZone[j][zPos][0] = cache_get_field_content_float(0, "zX", dbhandle);
    gZone[j][zPos][1] = cache_get_field_content_float(0, "zY", dbhandle);
    gZone[j][zPos][2] = cache_get_field_content_float(0, "zZ", dbhandle);
    gZone[j][zPos][3] = cache_get_field_content_float(0, "zA", dbhandle);


    mfg :thumbup:

    Guten Tag,


    Mein Name lautet CIBERKILLER.
    Und zwar habe ich ein Problem mit meinem Gangzonen "System".


    Quellcode:


    (OnGameModeInit)
    //Gangzonen
    for(new j, i = sizeof(gZone); j<i; j++) {gZone[j][zCreated] = false; if(j == sizeof(gZone))break;}
    mysql_pquery(dbhandle, "SELECT * FROM `Gangzones` WHERE `Frakname` = 'Ballas'", "LoadGFZonesFromDB", "");


    public LoadGFZonesFromDB()
    {
    cache_get_data(num[0], num[1], dbhandle);
    if(num[0]!=-1&&num[0]!=0)
    {
    for(new j;j<sizeof(gZone);j++)
    {
    if(gZone[j][zCreated])continue;
    gZone[j][zPos][0] = cache_get_field_content_float(0, "zX", dbhandle);
    gZone[j][zPos][1] = cache_get_field_content_float(0, "zY", dbhandle);
    gZone[j][zPos][2] = cache_get_field_content_float(0, "zZ", dbhandle);
    gZone[j][zPos][3] = cache_get_field_content_float(0, "zA", dbhandle);
    gZone[j][zID] = GangZoneCreate(gZone[j][zPos][0], gZone[j][zPos][1], gZone[j][zPos][2], gZone[j][zPos][3]);
    format(gZone[j][zName], 45 + 5, "Ballas");
    gZone[j][zCreated] = true;
    printf("Created: %d | ID: %d | pos: %f,%f,%f,%f | j: %d | content: %s", gZone[j][zCreated], gZone[j][zID], gZone[j][zPos][0], gZone[j][zPos][1], gZone[j][zPos][2], j, gZone[j][zName]);
    if(j == num[0])break;
    }
    }
    return 1;
    }


    Print:

    Code
    [15:13:55] Created: 1 | ID: 0 | pos: 1520.010009,-1592.219970,1422.010009,0.000000 | j: 66 | content: 
    [15:13:55] Created: 1 | ID: 1 | pos: 1520.010009,-1592.219970,1422.010009,0.000000 | j: 66 | content:


    mfg :thumbup:

    Guten Abend,


    Mein Name lautet CIBERKILLER.


    Und zwar bräuchte ich mal hilfe hierbei.
    test wird geprintet, aber die sachen unten drunter werden nicht aufgerufen!


    ocmd:test(playerid)
    {
    print("test");
    if(GetPlayerTeam(playerid) == 1)SetPlayerTeam(playerid, 255),SendClientMessage(playerid, Weis, "deaktiviert");
    else if(GetPlayerTeam(playerid) == 255)SetPlayerTeam(playerid, 1),SendClientMessage(playerid, Weis, "aktiviert");
    return 1;
    }


    mfg :thumbup:

    Das ganze klappt aktuell nicht so wie es "klappen" soll.


    Quellcode:
    ocmd:changemusic(playerid, params[])
    {
    if(!GetPVarInt(playerid, "Eingeloggt"))return SendClientMessage(playerid, Orange, "Fehler: {FFFFFF}Du bist nicht eingeloggt!");
    if(!GetPVarInt(playerid, "gblaster"))return SendClientMessage(playerid, Orange, "Fehler: {FFFFFF}Du hast keinen Ghettoblaster aufgestellt!");
    GetObjectPos(GetPVarInt(playerid, "gobject"), pPos[0], pPos[1], pPos[2]);
    if(GetPlayerDistanceFromPoint(playerid, pPos[0], pPos[1], pPos[2]) >= 3.6)return SendClientMessage(playerid, Orange, "Fehler: {FFFFFF}Du bist nicht in der nähe deines Ghettoblasters");
    if(sscanf(params, "s", usage))return SendClientMessage(playerid, Orange, "Fehler: {FFFFFF}/changemusic [Link]");
    for(new i;i<sizeof(Stream);i++)
    {
    if(!strlen(Stream[i][url]))continue;
    printf("url: %s | pos: %f,%f,%f | id: %d | usage: %s",Stream[i][url],Stream[i][sPos][0],Stream[i][sPos][1],Stream[i][sPos][2], i, usage);
    format(Stream[i][url], 128, usage);
    Stream[i][sPos][0] = pPos[0],Stream[i][sPos][1] = pPos[1],Stream[i][sPos][2] = pPos[2];
    if(i==sizeof(Stream))break;
    }
    /*for(new i;i<GetMaxPlayers();i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(IsPlayerNPC(i))continue;
    if(!GetPVarInt(playerid, "Eingeloggt"))continue;
    if(GetPlayerDistanceFromPoint(i, pPos[0], pPos[1], pPos[2]) >= 45.1)continue;
    SetPVarString(i, "stream_played", usage);
    }*/
    return 1;
    }


    public OnPlayerUpdate(playerid)
    {
    static str[128];
    GetPVarString(playerid, "stream_played", str, sizeof(str));
    for(new i;i<sizeof(Stream);i++)
    {
    if(strcmp(Stream[i][url], "leer", true)&& strlen(str) != 0 && strcmp(str, Stream[i][url], true) && Stream[i][sPos][0] == 0.0)
    {
    if(GetPlayerDistanceFromPoint(playerid, Stream[i][sPos][0], Stream[i][sPos][1], Stream[i][sPos][2]) <= 45.0)
    {
    PlayAudioStreamForPlayer(playerid, Stream[i][url], Stream[i][sPos][0], Stream[i][sPos][1], Stream[i][sPos][2], 45.0, 1);
    return SetPVarString(playerid, "stream_played", Stream[i][url]);
    }
    }
    }
    return 1;
    }


    mfg :thumbup:


    Du brauchst aber am anfang kein {FFFFFF} da das sowie weis beginnst.


    mfg :thumbup:

    Du kannst den string des Streams ja in einer Spielervariable speichern, wenn du es startest (die Funktion könnte man auch hooken) und dann über die Variable auch wieder abfragen, ob der Stream gerade in dieser Variable steht.


    Wenn der Stream beendet wird, schreibst du einfach LEER in die Variable.


    Kannst es ja erst mal selbst ausprobieren ob du es so hinbekommst, und wenn nicht nochmal Bescheid geben bzw den Code posten den du bis dahin hast. Aber ich bin zuversichtlich, dass du es hinbekommst, ist nicht viel Aufwand.


    Ich habe es mal so geschrieben!


    SetPVarString(playerid, "stream_played", usage);
    for(new i;i<sizeof(Stream);i++){
    if(!strcmp(Stream[i][url], "leer", true))continue;
    format(Stream[i][url], 128, "%s", usage),
    Stream[i][sPos][0] = pPos[0],Stream[i][sPos][1] = pPos[1],Stream[i][sPos][2] = pPos[2];
    }

    public OnPlayerUpdate(playerid)
    {
    GetPVarString(playerid, "stream_played", string, sizeof(string));
    for(new i;i<sizeof(Stream);i++)
    {
    if(!strcmp(Stream[i][url], "leer", true))continue;
    if(!strcmp(string, Stream[i][url], true))continue;
    if(Stream[i][sPos][0] == 0.0)continue;
    if(GetPlayerDistanceFromPoint(playerid, Stream[i][sPos][0], Stream[i][sPos][1], Stream[i][sPos][2]) >= 45.1)continue;
    PlayAudioStreamForPlayer(playerid, Stream[i][url], Stream[i][sPos][0], Stream[i][sPos][1], Stream[i][sPos][2], 45.0, 1);
    }
    return 1;
    }


    Habs noch nicht getestet, sollte aber soweit passen!


    mfg :thumbup:

    Guten Tag,


    Mein Name lautet CIBERKILLER.
    Und zwar wollte ich euch mal fragen ob es eine möglichkeit gibt Streamadressen herauszufinden.
    Natürlich verbunden mit PlayAudioStreamForPlayer.
    Also eine genaue abfrage ob der Spieler einen bestimmten stream hat!


    mfg :thumbup:


    Vielen Dank für diese Erklärung!


    Klappt übrigens nun wunderbar !


    mfg :thumbup:

    @NicoWiss


    Liest du auch mal ?


    Und zwar wollte ich mal fragen, ob mir jemand erklären kann wie ich die Frames pro Second eines Spielers ermitteln kann!
    Ich habe mir diesen Thread schon angeschauen, wollte nur die genaue erklärung haben. (Wie dies überhaupt funktionieren kann)


    mfg :thumbup:

    if (strcmp("/pdtuer", cmdtext, true, 10) == 0)
    {
    if(!IstSpielerInFraktion(playerid, 1))return SendClientMessage(playerid,ROT, "Du bist kein Beamter.");
    if (IsPlayerInRangeOfPoint(playerid,3.0, 250.48875, 64.26849, 1002.59192)){ // LSPD DOOR 1
    if(!LSPDTuer1)MoveDynamicObject (LSPDinnen1, 250.48875, 64.26849, 1002.59192,3);
    else if(LSPDTuer1)MoveDynamicObject (LSPDinnen1,250.48875, 62.26849, 1002.59192,3);
    return LSPDTuer1 = !LSPDTuer1;
    }
    else if (IsPlayerInRangeOfPoint(playerid,3.0, 245.46582, 72.40785, 1002.59192)){ // LSPD DOOR 2
    if(!LSPDTuer2)MoveDynamicObject (LSPDinnen2,245.46582, 72.40785, 1002.59192,3);
    else if(LSPDTuer2)MoveDynamicObject (LSPDinnen2,245.46582, 70.40785, 1002.59192,3);
    return LSPDTuer2 = !LSPDTuer2;
    }
    return 1;
    }


    zu


    if (strcmp("/pdtuer", cmdtext, true, 10) == 0)
    {
    if(!IstSpielerInFraktion(playerid, 1))return SendClientMessage(playerid,ROT, "Du bist kein Beamter.");
    if (IsPlayerInRangeOfPoint(playerid,3.0, 250.48875, 64.26849, 1002.59192)){ // LSPD DOOR 1
    if(!LSPDTuer1)MoveDynamicObject (LSPDinnen1, 250.48875, 64.26849, 1002.59192,3),SendClientMessage(playerid, -1, "Du hast das LSPD Tor geöffnet!");
    else if(LSPDTuer1)MoveDynamicObject (LSPDinnen1,250.48875, 62.26849, 1002.59192,3),SendClientMessage(playerid, -1, "Du hast das LSPD Tor geschlossen!");
    return LSPDTuer1 = !LSPDTuer1;
    }
    else if (IsPlayerInRangeOfPoint(playerid,3.0, 245.46582, 72.40785, 1002.59192)){ // LSPD DOOR 2
    if(!LSPDTuer2)MoveDynamicObject (LSPDinnen2,245.46582, 72.40785, 1002.59192,3),SendClientMessage(playerid, -1, "Du hast das LSPD Tor geöffnet!");
    else if(LSPDTuer2)MoveDynamicObject (LSPDinnen2,245.46582, 70.40785, 1002.59192,3),SendClientMessage(playerid, -1, "Du hast das LSPD Tor geschlossen!");
    return LSPDTuer2 = !LSPDTuer2;
    }
    return 1;
    }


    mfg :thumbup:

    if(LSPDTuer2 == 0)
    {
    MoveObject (LSPDinnen2,245.46582, 72.40785, 1002.59192,3);
    LSPDTuer2 = 1;
    }
    else if(LSPDTuer2 == 1)
    {
    MoveObject (LSPDinnen2,245.46582, 70.40785, 1002.59192,3);
    LSPDTuer2 = 0;
    }



    Hier veränderst du die Position ja garnicht ?(


    MoveObject (LSPDinnen2,245.46582, 70.40785, 1002.59192,3);
    MoveObject (LSPDinnen2,245.46582, 72.40785, 1002.59192,3);


    mfg :thumbup: