Pickup wird nicht erstellt, /duty nicht möglich

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
  • Hi,


    also Ich wollte die Duty-Punkte per MySQL Laden lassen, allerdings klappt das nicht.


    Weder die Punkte werden erstellt noch kann Ich den /duty Befehl benutzen.


    Hier meine Codes:



    //unter OngameModeInit:


    LoadFraktionDutyPoints();


    //Dutypoints laden
    for(new i=0; i<sizeof(DutyInfo); i++)
    {
    CreatePickup(1247, 1, DutyInfo[i+1][Duty_X], DutyInfo[i+1][Duty_Y], DutyInfo[i+1][Duty_Z], 0);
    /*if(i < 4)
    {
    //Cop-Duty-Points
    CreatePickup(1247, 1, DutyInfo[i][Duty_X], DutyInfo[i][Duty_Y], DutyInfo[i][Duty_Z], 0);
    Create3DTextLabel("/duty - In den Dienst gehen\n\
    /equip - Ausrüstung entnehmen\n\
    /clothes - Kleidung ändern", COLOR_RED, DutyInfo[i][Duty_X], DutyInfo[i][Duty_Y], DutyInfo[i][Duty_Z], 10, i, 1);
    }
    else
    {
    //Medic- & Ordnungsamt-Duty-Points
    CreatePickup(1239, 1, DutyInfo[i][Duty_X], DutyInfo[i][Duty_Y], DutyInfo[i][Duty_Z], 0);
    Create3DTextLabel("/duty - In den Dienst gehen\n\
    /clothes - Kleidung ändern", COLOR_RED, DutyInfo[i][Duty_X], DutyInfo[i][Duty_Y], DutyInfo[i][Duty_Z], 10, i, 1);
    }*/
    }


    public LoadFraktionDutyPoints()
    {
    new query[256];
    for(new idx=1; idx<sizeof(DutyInfo); idx++)
    {
    format(query, sizeof(query), "SELECT * FROM dutypoints WHERE id='%i'", idx);
    mysql_function_query(dbhandle, query, true, "OnFraktionDutyPointsLoad", "i", idx);
    }
    return 1;
    }
    public OnFraktionDutyPointsLoad(idx)
    {
    new num_rows, num_fields;
    cache_get_data(num_rows, num_fields, dbhandle);
    if(num_rows)
    {
    DutyInfo[idx][Duty_X] = cache_get_field_content_float(0, "DutyX", dbhandle);
    DutyInfo[idx][Duty_Y] = cache_get_field_content_float(0, "DutyY", dbhandle);
    DutyInfo[idx][Duty_Z] = cache_get_field_content_float(0, "DutyZ", dbhandle);
    }
    return 1;
    }


    ocmd:duty(playerid, params[])
    {
    #pragma unused params
    if(!IsPlayerInAnyDepartment(playerid))return SendClientMessage(playerid, COLOR_RED2, "Du gehörst keiner Behörde an.");
    new fID = pInfo[playerid][pFraktion];
    if(!IsPlayerInRangeOfPoint(playerid, 2.0, DutyInfo[fID][Duty_X], DutyInfo[fID][Duty_Y], DutyInfo[fID][Duty_Z]))return SendClientMessage(playerid, COLOR_RED2, "Du befindest dich nicht an dem Ausrüstungspunkt deiner Fraktion.");
    if(!IsPlayerDuty(playerid) && !IsPlayerCop(playerid))
    {
    //Spieler ist kein Cop
    pInfo[playerid][pDuty] = true;
    new string[128];
    switch(fID)
    {
    case 4:{format(string, sizeof(string), "[Meldung] Notarzt %s befindet sich nun im Dienst. Tippe /call 112, um einen Sanitäter zu rufen.", GetSpielerName(playerid));}
    case 5:{format(string, sizeof(string), "[Meldung] Ordnungsamt %s befindet sich nun im Dienst. Tippe /call 555, um einen Falschparker zu melden.", GetSpielerName(playerid));}
    }
    SetPlayerColor(playerid, fInfo[fID][Fraktion_Color]);
    SendMessageToAll(COLOR_WHITE, string);
    }
    else if(IsPlayerDuty(playerid) && !IsPlayerCop(playerid))
    {
    //Spieler ist kein Cop
    pInfo[playerid][pDuty] = false;
    SetPlayerColor(playerid, COLOR_WHITE);
    }
    else if(!IsPlayerCopDuty(playerid) && IsPlayerCop(playerid))
    {
    //Spieler ist Cop
    pInfo[playerid][pCopDuty] = true;
    SetPlayerColor(playerid, fInfo[fID][Fraktion_Color]);
    SendClientMessage(playerid, COLOR_WHITE, "* Du beginnst deine Arbeit als Beamter.");
    }
    else if(IsPlayerCopDuty(playerid) && IsPlayerCop(playerid))
    {
    //Spieler ist Cop
    pInfo[playerid][pCopDuty] = false;
    SetPlayerColor(playerid, COLOR_WHITE);
    SendClientMessage(playerid, COLOR_WHITE, "* Du befindest dich nun nicht mehr im Dienst.");
    }
    return 1;
    }



    Info: Wenn Ich /duty an dem Punkt eingebe, an dem der Pickup sein sollte, bekomme Ich die Fehlermeldung: "Du befindest dich nicht am Ausrüstungspunkt deiner Fraktion."

  • ich alss sowas so laden bsp cars vom server start gleich drinne


    unter ongamemode init

    format(query, sizeof(query), "SELECT * FROM car");
    mysql_function_query(Handle, query, true, "LoadCars", "");
    und dann das unten halt

    stock getFreeCarID()
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]==0)return i;
    }
    return 0;
    }


    forward LoadCars();
    public LoadCars()
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,Handle);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id=getFreeCarID();
    cInfo[id][db_id]=cache_get_field_content_int(i,"ID",Handle);
    cInfo[id][model]=cache_get_field_content_int(i,"Model",Handle);
    cInfo[id][besitzer]=cache_get_field_content_int(i,"Besitzer",Handle);
    cInfo[id][besitzer2]=cache_get_field_content_int(i,"Besitzer2",Handle);
    ...
    }
    }

  • Mache es so:
    public LoadFraktionDutyPoints()
    {
    mysql_function_query(dbhandle, "SELECT * FROM dutypoints", true, "OnFraktionDutyPointsLoad", "");
    return 1;
    }
    public OnFraktionDutyPointsLoad()
    {
    new num_rows, num_fields;
    cache_get_data(num_rows, num_fields, dbhandle);
    for(new i = 0; i < num_rows; i++)
    {
    DutyInfo[i][Duty_X] = cache_get_field_content_float(i, "DutyX", dbhandle);
    DutyInfo[i][Duty_Y] = cache_get_field_content_float(i, "DutyY", dbhandle);
    DutyInfo[i][Duty_Z] = cache_get_field_content_float(i, "DutyZ", dbhandle);

    CreatePickup(1247, 1, DutyInfo[i][Duty_X], DutyInfo[i][Duty_Y], DutyInfo[i][Duty_Z], 0);
    }
    return 1;
    }


    Das hier löschen:
    //Dutypoints laden
    for(new i=0; i<sizeof(DutyInfo); i++)
    {
    CreatePickup(1247, 1, DutyInfo[i+1][Duty_X], DutyInfo[i+1][Duty_Y], DutyInfo[i+1][Duty_Z], 0);
    /*if(i < 4)
    {
    //Cop-Duty-Points
    CreatePickup(1247, 1, DutyInfo[i][Duty_X], DutyInfo[i][Duty_Y], DutyInfo[i][Duty_Z], 0);
    Create3DTextLabel("/duty - In den Dienst gehen\n\
    /equip - Ausrüstung entnehmen\n\
    /clothes - Kleidung ändern", COLOR_RED, DutyInfo[i][Duty_X], DutyInfo[i][Duty_Y], DutyInfo[i][Duty_Z], 10, i, 1);
    }
    else
    {
    //Medic- & Ordnungsamt-Duty-Points
    CreatePickup(1239, 1, DutyInfo[i][Duty_X], DutyInfo[i][Duty_Y], DutyInfo[i][Duty_Z], 0);
    Create3DTextLabel("/duty - In den Dienst gehen\n\
    /clothes - Kleidung ändern", COLOR_RED, DutyInfo[i][Duty_X], DutyInfo[i][Duty_Y], DutyInfo[i][Duty_Z], 10, i, 1);
    }*/
    }