Wie mache ich das? /tote

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
  • Guten Tag,


    ich wollte gerne wissen wie ich herrausfinde welche ID: In dem listitem steht. diese dan die Coords herausfinden tut.
    Hier mal die Codes:



    ocmd:tote(playerid,params[])
    {
    if(IsPlayerInFrac(playerid,1))
    {
    new str[900];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(pInfo[i][pDeath] == 1)
    {
    format(str,sizeof(str),"%s (ID:%i)\n", GetName(i), i);
    strcat(str, str, sizeof(str));
    }
    else
    {
    SendClientMessage(playerid,ROT,"Noch nicht Fertig!");
    ShowPlayerDialog(playerid,DIALOG_KEINERTOD,DIALOG_STYLE_MSGBOX,"Wer ist Gestorben?","\n\n{FEFEFE}Derzeit ist {FF1E00}Kein {FEFEFE}Spieler Tod\n\n{FEFEFE}Schaue Zwischen Durch mal nach ob ein Spieler gestorben ist","Weiter","");
    }
    }
    }
    ShowPlayerDialog(playerid,DIALOG_ZEIGETODE,DIALOG_STYLE_LIST,"Wer ist Gestorben?",str,"Position","Abbrechen");
    }
    return 1;
    }


    if(dialogid == DIALOG_ZEIGETODE)
    {
    if(response == 1)
    {
    switch(listitem)
    {
    for(new o=0; o<sizeof(listitem); o++)
    {
    case o:{}
    }
    }
    }
    }


    Liebe Grüße,
    Skoam

  • Schreibe es so:


    if(dialogid == DIALOG_ZEIGETODE)
    {
    if(!response) return 1;
    new pID = getID(inputtext);
    //Dann ist pID die id die in dem Dialog stand.
    }


    //Funktion getID:
    stock getID(const string[]) {
    new p = strfind(string,"ID:",true),str[5];
    strmid(str,string,p+3,strfind(string,")",false,p),sizeof str);
    return strval(str);
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Also ungefähr so?


    if(dialogid == DIALOG_ZEIGETODE)
    {
    if(response == 1)
    {
    switch(listitem)
    {
    for(new o=0; o<sizeof(listitem); o++)
    {
    case o:{new pID = getID(listitem);SetPlayerCheckpoint(playerid, pInfo[pID][pTotX], pInfo[pID][pTotY], pInfo[pID][pTotZ], 3.0);}
    }
    }
    }
    }

  • Also ungefähr so?


    Was? :huh:


    Nein!


    So wie ich es geschrieben habe..du brauchst keinen switch case für die listitems oder eine Schleife :rolleyes:


    Im inputtext steht der Text, den er angeklickt hat...daraus filtere ich die ID ...

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Kapiere ich nicht :(


    warum inputtext text wen das per List DIALOG ist?
    Erklärst du mir das bitte.


    LG,
    Skoam

  • Erklärst du mir das bitte.


    Sammal...habe ich doch gerade 8|


    Da steht der Text von dem Listitem, das der Spieler angeklickt hat drinnen...u.a. sein Name und die ID... :rolleyes:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Hmm Okay nun verstehe ich diesen Warning nicht.

    Code
    D:\SAMP Server\Projekt mit Ronny\gamemodes\LOG.pwn(12218) : warning 219: local variable "pID" shadows a variable at a preceding level


    Hier der Code:
    if(dialogid == DIALOG_ZEIGETODE)
    {
    if(response == 1)
    {
    new pID = getID(inputtext);
    SetPlayerCheckpoint(playerid, pInfo[pID][pTx], pInfo[pID][pTy], pInfo[pID][pTz], 3.0);
    return 1;
    }
    }
    LG

  • Beitrag von N0SKILL ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Jetzt habe ich ein neues Problem:
    ocmd:tote(playerid,params[])
    {
    if(IsPlayerInFrac(playerid,1))
    {
    new str[900];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(pInfo[i][pDeath] == 1)
    {
    format(str,sizeof(str),"%s (ID:%i)\n", GetName(i), i);
    strcat(str, str, sizeof(str));
    }
    else
    {
    SendClientMessage(playerid,ROT,"Noch nicht Fertig!");
    ShowPlayerDialog(playerid,DIALOG_KEINERTOD,DIALOG_STYLE_MSGBOX,"Wer ist Gestorben?","\n\n{FEFEFE}Derzeit ist {FF1E00}Kein {FEFEFE}Spieler Tod\n\n{FEFEFE}Schaue Zwischen Durch mal nach ob ein Spieler gestorben ist","Weiter","");
    }
    }
    }
    ShowPlayerDialog(playerid,DIALOG_ZEIGETODE,DIALOG_STYLE_LIST,"Wer ist Gestorben?",str,"Position","Abbrechen");
    }
    return 1;
    }
    Screen:

    S0beit aus Script-Technischen Sachen installiert.


    Also obwohl wir beide Tod sind steht es dort 2x so wie dort.


    Lg,
    Skoam

    Einmal editiert, zuletzt von Skoam ()

  • Schreib es mal so:


    ocmd:tote(playerid,params[])
    {
    if(!IsPlayerInFrac(playerid,1)) return SendClientMessage(playerid,ROT,"Sie dürfen diesen Befehl nicht verwenden!");
    new str[512];
    for(new i,l=GetPlayerPoolSize()+1; i < l; i++)
    {
    if(!IsPlayerConnected(i) || !pInfo[i][pDeath]) continue;
    format(str,sizeof(str),"%s%s (ID:%i)\n", str,GetName(i), i);
    }
    if(str[0] == EOS) return ShowPlayerDialog(playerid,DIALOG_KEINERTOD,DIALOG_STYLE_MSGBOX,"Wer ist Gestorben?","\n\n{FEFEFE}Derzeit ist {FF1E00}Kein {FEFEFE}Spieler Tod\n\n{FEFEFE}Schaue Zwischen Durch mal nach ob ein Spieler gestorben ist","Weiter",""),1;
    ShowPlayerDialog(playerid,DIALOG_ZEIGETODE,DIALOG_STYLE_LIST,"Wer ist Gestorben?",str,"Position","Abbrechen");
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S