Skin Change geht fast nicht

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
  • Hallo!


    Ich habe ein kleines Problem im Bezug auf einen Dialog, bei dem Cops ihren Skin Changen können. Beim LVPD (Frak ID: 3) funktioniert alles, doch beim SFPD (Frak ID: 2) und LSPD (Frak ID: 1) wird kein Dialog angezeigt.


    Hier alle Codes (OnPlayerPickup, Enum und Array und OnPlayerDialogResponse)


    [pwn=280]
    enum CopSkinChangeEnum {
    skin_icon_id,
    skin1,
    skin2,
    skin3,
    skin4,
    skin5,
    skinn1[24],
    skinn2[24],
    skinn3[24],
    skinn4[24],
    skinn5[24],
    Float:skin_x,
    Float:skin_y,
    Float:skin_z,
    skin_f_id,
    skin_vw
    };
    new CopSkinChange[][CopSkinChangeEnum] = {
    {0, 280, 281, 282, 283, 284, "LSPD Cop", "SFPD Cop", "LVPD Cop", "Sheriff", "Bike Police", 317.8099,-160.1672,999.5938, 1, 1},
    {0, 280, 281, 282, 285, 284, "LSPD Cop", "SFPD Cop", "LVPD Cop", "S.W.A.T", "Bike Police", 317.8099,-160.1672,999.5938, 2, 2},
    {0, 250, 170, 286, 285, 283, "Undercover 1", "Undercover 2", "FBI Agent", "S.W.A.T", "LVPD Cop", 317.8099,-160.1672,999.5938, 3, 3}
    };
    [/pwn]


    [pwn=951]
    for(new i = 0; i < sizeof(CopSkinChange); i++)
    {
    if(pickupid == CopSkinChange[i][skin_icon_id] && Spieler[playerid][fraktion] == CopSkinChange[i][skin_f_id])
    {
    new dialog[256];
    format(dialog, sizeof(dialog), "%s\n%s\n%s\n%s\n%s", CopSkinChange[i][skinn1],CopSkinChange[i][skinn2],CopSkinChange[i][skinn3],CopSkinChange[i][skinn4],CopSkinChange[i][skinn5]);
    ShowPlayerDialog(playerid, DIALOG_COP_SKINCHANGE, DIALOG_STYLE_LIST, "Skinchange", dialog, "Wechseln", "Abbrechen");
    }
    }
    [/pwn]


    [pwn=1081]
    if(dialogid == DIALOG_COP_SKINCHANGE)
    {
    if(!response) return 1;
    if(response)
    {
    if(listitem == 0) return SetPlayerSkin(playerid, CopSkinChange[Spieler[playerid][fraktion]-1][skin1]);
    if(listitem == 1) return SetPlayerSkin(playerid, CopSkinChange[Spieler[playerid][fraktion]-1][skin2]);
    if(listitem == 2) return SetPlayerSkin(playerid, CopSkinChange[Spieler[playerid][fraktion]-1][skin3]);
    if(listitem == 3) return SetPlayerSkin(playerid, CopSkinChange[Spieler[playerid][fraktion]-1][skin4]);
    if(listitem == 4) return SetPlayerSkin(playerid, CopSkinChange[Spieler[playerid][fraktion]-1][skin5]);
    }
    }
    [/pwn]


    Es kommen keine Fehler in der server_log.txt


    Ich hoffe auf helfende antworten. Danke :)

  • Beitrag von Kaliber ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Hast du den Code mal debuggt? Wenn nicht, mach das mal so und poste dann was im Server Log steht.


    for(new i = 0; i < sizeof(CopSkinChange); i++)
    {
    printf("playerid:%d: i=%d / %d==%d / %d==%d", playerid, i, pickupid, CopSkinChange[i][skin_icon_id], Spieler[playerid][fraktion], CopSkinChange[i][skin_f_id]);
    if(pickupid == CopSkinChange[i][skin_icon_id] && Spieler[playerid][fraktion] == CopSkinChange[i][skin_f_id])
    {
    new dialog[256];
    format(dialog, sizeof(dialog), "%s\n%s\n%s\n%s\n%s", CopSkinChange[i][skinn1],CopSkinChange[i][skinn2],CopSkinChange[i][skinn3],CopSkinChange[i][skinn4],CopSkinChange[i][skinn5]);
    ShowPlayerDialog(playerid, DIALOG_COP_SKINCHANGE, DIALOG_STYLE_LIST, "Skinchange", dialog, "Wechseln", "Abbrechen");
    }
    }

  • Code
    [11:56:14] playerid:0: i=2 / 1==2 / 1==3


    Das kommt im Server_log.txt


    Die Pickups werden so erstellt:



    for(new i = 0; i < sizeof(CopSkinChange); i++)
    {
    CopSkinChange[i][skin_icon_id] = CreatePickup(1275, 2, CopSkinChange[i][skin_x], CopSkinChange[i][skin_y], CopSkinChange[i][skin_z], CopSkinChange[i][skin_vw]);
    }

  • Vergleiche die zwei Logs mal. Einmal ist pickipid 7 und einmal 1.
    Unter welchem Callback erstellst du denn die Pickups? Läufst du auch ins richtige Pickup?


    Mach das mal zu:
    for(new i = 0; i < sizeof(CopSkinChange); i++)
    {
    CopSkinChange[i][skin_icon_id] = CreatePickup(1275, 2, CopSkinChange[i][skin_x], CopSkinChange[i][skin_y], CopSkinChange[i][skin_z], CopSkinChange[i][skin_vw]);
    printf("Erstelle pickup: i = %d -> %d", i, CopSkinChange[i][skin_icon_id]);
    }


    Dann poste nochmal den Log

  • Ich erstelle die Pickups unter OnGameModeInit()


    Code
    [15:21:39] Erstelle pickup: i = 0  -> 0
    [15:21:39] Erstelle pickup: i = 1  -> 1
    [15:21:39] Erstelle pickup: i = 2  -> 2


    //edit:


    Hier mal der ganze OnGameModeInit Callback



    public OnGameModeInit()
    {
    SendRconCommand("hostname -<>- Whitelife Roleplay -<>-");
    SendRconCommand("mapname -<>- by [WRP] Team -<>-");
    ManualVehicleEngineAndLights();
    DisableInteriorEnterExits();
    EnableStuntBonusForAll(0);
    SetWeather(2);
    ShowPlayerMarkers(1);



    SetTimer("Wetter", 600000, true);


    dbhandle = mysql_connect("127.0.0.1", "port_2465", "port_2465", "*********");


    SetGameModeText("-<>- Whitelife Roleplay -<>-");


    for(new i = 0; i < sizeof(CopSkinChange); i++)
    {
    CopSkinChange[i][skin_icon_id] = CreatePickup(1275, 2, CopSkinChange[i][skin_x], CopSkinChange[i][skin_y], CopSkinChange[i][skin_z], CopSkinChange[i][skin_vw]);
    printf("Erstelle pickup: i = %d -> %d", i, CopSkinChange[i][skin_icon_id]);
    }


    for(new i = 0;i < sizeof(FraktionsCars); i++)
    {
    FraktionsCars[i][f_car_id_x] = AddStaticVehicleEx(FraktionsCars[i][f_car_modelid], FraktionsCars[i][f_car_spawn_x], FraktionsCars[i][f_car_spawn_y], FraktionsCars[i][f_car_spawn_z], FraktionsCars[i][f_car_spawn_r], FraktionsCars[i][f_car_color1], FraktionsCars[i][f_car_color2], -1);
    format(s, sizeof(s), "{00B000}[WRP]{000000} %d", i+1);
    SetVehicleNumberPlate(FraktionsCars[i][f_car_id_x], s);
    }


    for(new i = 0; i < sizeof(CopDutyPunkte); i++)
    {
    CopDutyPunkte[i][duty_enter_id] = CreatePickup(1318, 1, CopDutyPunkte[i][duty_enter_x], CopDutyPunkte[i][duty_enter_y], CopDutyPunkte[i][duty_enter_z]);
    CopDutyPunkte[i][duty_exit_id] = CreatePickup(1318, 1, CopDutyPunkte[i][duty_exit_x], CopDutyPunkte[i][duty_exit_y], CopDutyPunkte[i][duty_exit_z], CopDutyPunkte[i][duty_vw]);
    AddStaticPickup(1247, 1, 312.0690,-169.0063,999.5938, CopDutyPunkte[i][duty_vw]);
    Create3DTextLabel("/duty\n/clearwanteds", -1, 312.0690,-169.0063,999.5938, 20.0, CopDutyPunkte[i][duty_vw], 1);
    }


    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    SetVehicleParamsEx(i, 0, 0, 0, 0, 0, 0, 0);
    uc[i] = false;
    }


    for(new i = 0; i < sizeof(Ammunation); i++)
    {
    Ammunation[i][ammu_enter_icon_id] = CreatePickup(1318, 1, Ammunation[i][ammu_enter_x], Ammunation[i][ammu_enter_y], Ammunation[i][ammu_enter_z]);
    Ammunation[i][ammu_exit_icon_id] = CreatePickup(1318, 1, Ammunation[i][ammu_exit_x], Ammunation[i][ammu_exit_y], Ammunation[i][ammu_exit_z], Ammunation[i][ammu_vw]);
    CreatePickup(1247, 1, Ammunation[i][ammu_kaufen_x], Ammunation[i][ammu_kaufen_y], Ammunation[i][ammu_kaufen_z], Ammunation[i][ammu_vw]);
    }


    return 1;
    }

  • Also, wenn du es so erstellst, dann stimmt es doch.
    Pickupids sind 0/1/2.


    Vorhin bist du in pickupid = 7 gelaufen. In das richtige Pickup solltest du schon gehen, sonst geht es nicht.


    Dann würde für das erste Pickup Folgendes kommen:

    Zitat

    [12:06:42] playerid:0: i=0 / 0==0 / 1==1


    Und das passt dann.

  • Hier der gesamte Log:



    Zu anfang war ich im LVPD (Frak ID. 3)

  • 1.) Du hast zwei Pickups an der selben Stelle, bei allen dreien.


    2.)

    Zitat

    [21:02:55] playerid:0: i=2 / 2==2 / 3==3


    Hier muss es funktioniert haben.


    3.) Du bist nicht am richtigen Pickup bei den anderen beiden. Ich kenne deinen Aufbau nicht, aber anhand der Zahlen sehe ich, dass du am falschen Pickup bist. (Koordinaten vertauscht?)
    Nach

    Zitat

    [21:03:03] [cmd] [CrashGamesDE]: /setfrak 0 1


    musst du zu dem Pickup zu dem du als letztes in dem Log gegangen bist.


    Und nach

    Zitat

    [21:03:14] [cmd] [CrashGamesDE]: /setfrak 0 2


    zu dem in der Mitte.


    Dann geht es.