Dialog nicht auswählbar?

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
  • Hey Com,


    Wenn ciha uf ein Listitem klicke passiert rein garnichts?


    if(dialogid == DIALOG_CORPSE)
    {
    for(new i = 0; i < MAX_BESTATTER; i++)
    {
    if(!response)
    if(listitem == i)
    {
    if(hatauftragid[playerid] == 1) { SendClientMessage(playerid,WHITE,"Du hast noch einen Auftrag!"); }
    new Float:X1 = BestatterInfo[i][Todx], Float:X2 = BestatterInfo[i][Tody], Float:X3 = BestatterInfo[i][Todz];
    if(IsPlayerInRangeOfPoint(playerid,200.0,X1,X2,X3) && BestatterInfo[i][Angenommen] == 0)
    {
    new Namei[MAX_PLAYER_NAME], string[128];
    GetPlayerName(playerid,Namei,sizeof(Namei));
    BestatterInfo[i][Bestatterid] = playerid;
    BestatterInfo[i][Angenommen] = 1;
    format(BestatterInfo[i][Auftragnehmer],24,"%s", Namei);
    bestattervar[playerid] = BestatterInfo[i][Spielerid];
    format(string,sizeof(string),"** Du hast den Fall von %s angenommen!",BestatterInfo[i][Opfer]);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
    SetPlayerCheckpoint(playerid,BestatterInfo[i][Todx],BestatterInfo[i][Tody],BestatterInfo[i][Todz],5.0);
    KillTimer(totentimer[BestatterInfo[i][Spielerid]]);
    totentimer[BestatterInfo[i][Spielerid]] = SetTimerEx("totenkopfding",50000,0,"i",BestatterInfo[i][Spielerid]);
    hatauftragid[playerid] = 1;
    }
    else if(IsPlayerInRangeOfPoint(playerid,200.0,X1,X2,X3) && BestatterInfo[i][Angenommen] == 0) { SendClientMessage(playerid,WHITE,"Fehler, unaufrubarer Slot!" }
    }
    }
    }
    Woran liegt das

  • Aufgerufen wird er ganz normal



    if(!strcmp(cmd,"/corpse",true))
    {
    if(PlayerInfo[playerid][pJob] == 36)
    {
    new vid = GetPlayerVehicleID(playerid);
    if(IsBestatterVeh(vid))
    {
    new str[100],endstr[1000], counter = 0;
    for(new i2 = 0; i2 < MAX_BESTATTER; i2++)
    {
    new Float:X1 = BestatterInfo[i2][Todx], Float:X2 = BestatterInfo[i2][Tody], Float:X3 = BestatterInfo[i2][Todz];
    if(counter <= MAX_BESTATTER)
    {
    if(IsPlayerInRangeOfPoint(playerid,200.0,X1,X2,X3))
    {
    format(str,sizeof(str),"Verstorbener: %s\n",BestatterInfo[i2][Opfer]);
    strcat(endstr,str);
    counter ++;
    }
    else if(BestatterInfo[i2][Angenommen] == 1)
    {
    format(str,sizeof(str),"Fall: %s in Bearbeitung von %s\n",BestatterInfo[i2][Opfer],BestatterInfo[i2][Auftragnehmer]);
    strcat(endstr,str);
    counter ++;
    }
    else
    {
    format(str,sizeof(str),"Slot nicht in Nutzung\n");
    strcat(endstr,str);
    counter ++;
    }
    }
    }
    ShowPlayerDialog(playerid,DIALOG_CORPSE,DIALOG_STYLE_LIST,"Aufträge von Pixel Roleplay",endstr,"Auswählen","Beenden");
    return 1;
    }
    return SendClientMessage(playerid,WHITE,"Du bist in keinem Leichenwagen!");
    }
    return SendClientMessage(playerid,WHITE,"Du bist kein Bestatter!");
    }

  • Einfach wäre es mit switch und case.


    Also wie folgt:


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==DEINE DIALOG ID)
    {
    if(!response) return //Was immer passieren soll wenn er denn 2ten Button drückt.
    if(response)
    {
    switch(listitem)
    {
    case 0:
    {
    //Erstes Listitem
    }
    case 1:
    {
    //Zweites Listitem
    }
    //....usw
    }
    }
    }
    return 1;
    }