Beiträge von Jeffry

    Schreibe es auf jeden Fall mal so:

    Spoiler anzeigen
    public OnPlayerDeath(playerid, killerid, reason)
    {
    //________________ Definierungen ______________________
    new string[128];
    SpielerInfo[playerid][pTode] +=1;
    SpielerInfo[playerid][pDuty] = 0;
    //________________ Wanted-System ______________________
    if(killerid != INVALID_PLAYER_ID)
    {
    SpielerInfo[killerid][pKills] +=1;
    if(SpielerInfo[playerid][pTeam] == 1 && SpielerInfo[killerid][pTeam] != 1)
    {
    SpielerInfo[killerid][pWanteds] += 5;
    SetPlayerWantedLevel(killerid, (SpielerInfo[killerid][pWanteds]/5) + 1);
    SpielerInfo[killerid][pSterne] = SpielerInfo[killerid][pWanteds]/5 + 1;
    SpielerInfo[killerid][pVerbrechen] += 5;
    format(string,sizeof(string),"%s hat ein Verbrechen begangen: Polizeimord. Anzahl: 5 | Zeuge: %s.",SpielerName(killerid),SpielerName(playerid));
    SendFraktionMessage(1, cop, string);
    format(string,sizeof(string),"Du hast ein Verbrechen begangen: Polizeimord. Anzahl: 5 | Zeuge: %s.",SpielerName(playerid));
    SendClientMessage(killerid,info,string);
    format(string,sizeof(string), "Aktuelles Wanted: %i",SpielerInfo[killerid][pWanteds]);
    SendClientMessage(killerid,info,string);
    }
    else if(SpielerInfo[playerid][pTeam] != 1 && SpielerInfo[killerid][pTeam] != 1)
    {
    SpielerInfo[killerid][pWanteds] += 3;
    SetPlayerWantedLevel(killerid, (SpielerInfo[killerid][pWanteds]/5) + 1);
    SpielerInfo[killerid][pSterne] = SpielerInfo[killerid][pWanteds]/5 + 1;
    SpielerInfo[killerid][pVerbrechen] += 3;
    format(string,sizeof(string),"%s hat ein Verbrechen begangen: Zivimord. Anzahl: 3 | Zeuge: %s.",SpielerName(killerid),SpielerName(playerid));
    SendFraktionMessage(1, cop, string);
    format(string,sizeof(string),"Du hast ein Verbrechen begangen: Zivimord. Anzahl: 3 | Zeuge: %s.",SpielerName(playerid));
    SendClientMessage(killerid,info,string);
    format(string,sizeof(string), "Aktuelles Wanted: %i",SpielerInfo[killerid][pWanteds]);
    SendClientMessage(killerid,info,string);
    }
    }
    //________________ Tot_System ______________________
    if(SpielerInfo[playerid][pWanteds] > 0 && teaminrangeofpoint(playerid, 1))
    {
    new wstring[128];
    format(wstring, sizeof(wstring), "%s wurde Verhaftet! Grund: Tot.",SpielerName(playerid));
    SendClientMessageToAll(info, wstring);
    print(wstring);
    new time = SpielerInfo[playerid][pWanteds] * 120;
    SpielerInfo[playerid][pKnastzeitBis] = gettime() + time;
    SpielerInfo[playerid][pKnastzeit] = time;
    SpielerInfo[playerid][pKnast] = 1;
    SpielerInfo[playerid][wTot] += 1;
    SpielerInfo[playerid][pInhaftiert] += 1;
    SpielerInfo[playerid][pWanteds] = 0;
    SpielerInfo[playerid][pSterne] = 0;
    SpielerInfo[playerid][kSkin] = 62;
    SetPlayerWantedLevel(playerid, 0);
    }
    else if(SpielerInfo[playerid][pTot] == 0)
    {
    SpielerInfo[playerid][pTot] = 1;
    tzeit[playerid] = 120;
    GetPlayerPos(playerid,tx[playerid],ty[playerid],tz[playerid]);
    toticon[playerid] = CreatePickup(1254,1,tx[playerid],ty[playerid],tz[playerid],-1);
    format(string, sizeof(string), "%s", SpielerName(playerid));
    totlabel = Create3DTextLabel(string,0xFF0000FF, tx[playerid], ty[playerid], tz[playerid], 32.0, 0);
    format(string,sizeof(string),"%s ist gestorben! Er braucht dringend einen Arzt.",SpielerName(playerid));
    SendFraktionMessage(2, medic, string);
    SpielerInfo[playerid][pTotskin] = 162;
    }
    //________________ Tot-Ende ______________________
    TextDrawHideForPlayer(playerid,txtTimeDisp);
    return 1;
    }


    Dann: Bekommst du die Nachrichten (welche?) die kommen sollen?

    Plugins laufen nicht auf 100% aller Maschinen ohne Probleme. Dass es bei dir läuft heißt nicht, dass es auch auf allen anderen Maschinen läuft.
    Außerdem funktioniert sscanf nicht immer gleich, und variiert von Version zu Version. Strtok ist immer gleich und funktioniert immer.


    Sscanf darf ja gerne verwendet werden, wer will kann es ja entsprechend ändern, ist ja nicht verboten. Deshalb weise ich ja darauf hin.

    Bekommst du irgendeine Meldung im Chat, wenn du den Befehl eingibst?
    Wenn nein, poste dein ganzes OnPlayerCommandText.
    Wenn ja, welche Meldung? Falls Unknown command, poste dein ganzes OnPlayerCommandText.

    Du musst aber bedenken, dass die Höhe der Box immer dieselbe ist, egal welchen Y-Wert du eingibst. Daher muss der geschätzt werden, da man ihn nicht sieht. Auch bei 0.0 wird dir die Box angezeigt und sie ist gleich groß wenn du 100.0 eingibst. Es verändert sich nur der selektierbare Bereich.


    Daher bringt es nur bedingt etwas, das mit dem Editor einzustellen.

    TextDrawTextSize musst du verwenden, das stimmt schon.
    Allerdings musst du sowohl einen korrekten X Wert als auch einen korrekten (geschätzten) Y Wert angeben:
    TextDrawTextSize(News[playerid], 585.000000, 0.000000);
    zu:
    TextDrawTextSize(News[playerid], 585.000000, 15.000000);
    (Je nach dem wie hoch dein Textdraw ist die 15 eben ändern.)


    So natürlich auch für die anderen Textdraws. Die Höhe abschätzen.

    Du musst eine Schleife durch die Datei Pfade machen. Ich kann dir zwar ein Beispiel geben, aber das wird dir nicht helfen, wenn dein System komplett anders aufgebaut ist.


    Versuche dich mal daran, eine Schleife durch die Dateien hinzubekommen. Wenn da oder danach Fragen aufkommen, dann erstelle bitte einen neuen Thread und erkläre woran du hängst, das gehört dann nicht mehr hier rein.

    Hier, die habe ich mal in den Code Schnipseln gepostet.
    stock ReturnPlayerID(l_PlayerName[]) //©Jeffry
    {
    new l_name[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
    {
    if(!strcmp(l_name,l_PlayerName, true)) return i;
    }
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
    {
    if(strfind(l_name,l_PlayerName,true)!=-1) return i;
    }
    }
    return INVALID_PLAYER_ID;
    }


    Wenn du nur nach dem ganzen Name suchen willst, mache die zweite Schleife weg.

    if(sscanf(params,"ui",pID,a_level,))return SendClientMessage(playerid,ROT,"Dein Admin Rank reicht nicht aus!");
    zu:
    if(sscanf(params,"ui",pID,a_level))return SendClientMessage(playerid,ROT,"Dein Admin Rank reicht nicht aus!");


    Markiere nächstes mal bitte die Fehlerzeile.


    Spoiler anzeigen
    ocmd:giveadmin(playerid,params[])
    {
    if(!isAdmin(playerid,2000))return SendClientMessage(playerid,ROT,"Du bist kein Projektleiter!");
    new pID,a_level,anlevel[128],aanlevel[128];
    if(sscanf(params,"ui",pID,a_level))return SendClientMessage(playerid,ROT,"Dein Admin Rank reicht nicht aus!");
    format(anlevel,sizeof(anlevel),"Dein Adminrank wurde in %s geändert.",a_level);
    format(anlevel,sizeof(aanlevel),"Du hast den Adminrank von %i in %s geändert.",playerid,a_level);
    sInfo[pID][alevel]=a_level;
    savePlayer(pID);
    SendClientMessage(pID,GELB,anlevel);
    SendClientMessage(playerid,AFARBE,aanlevel);
    return 1;
    }

    @Kontrax:
    Das kommt darauf an, wo du es setzen willst. Die Variable kannst du eigentlich überall setzen, wenn du SetPlayerInterior nur dann bei OnPlayerSpawn hast. Am besten du probierst es mal aus wie du es dir vorstellst und fragst bei Problemen nochmal nach, mit Code.


    @_iPit_: Dieser Thread ist für kleine Fragen, nicht für ewige Codes, das macht keinen Sinn die hier zu lösen, da ständig was dazwischen steht. Mache bitte einen Thread auf.


    Haze1730: Lade dir das herunter:
    http://www.microsoft.com/en-us…oad/details.aspx?id=40784

    Problem 1: Du musst die ID des Spielers in SetPlayerHealth verwenden, nicht der Name.
    Problem 2: inputtext muss zu einem Float konvertiert werden und so auch angezeigt werden.


    if(dialogid == DIALOG_ALEBEN)
    {
    if(response)
    {
    new string[145],namee[MAX_PLAYER_NAME], Float:health;
    GetPlayerName(clickid[playerid], namee, sizeof(namee));
    health = floatstr(inputtext);
    format(string,sizeof(string),"Administrator {FFFFFF}%s{FF7777} hat dein Leben auf {FFFFFF}%0.2f{FF7777} gesetzt!",sName(playerid),health);
    SendClientMessage(clickid[playerid],C_MELDUNG,string);
    format(string,sizeof(string),"** Du hast das Leben von {FFFFFF}%s{FF7777} auf {FFFFFF}%0.2f{FF7777} gesetzt!",namee,health);
    SendClientMessage(playerid, C_**,string);
    SetPlayerHealth(clickid[playerid], health);
    }
    return 1;
    }




    EDIT: (Post unten)
    @morshly: Gerne! Da dein Problem behoben ist, wäre es super, wenn du den Thread als erledigt markierst. Danke!

    Du killst ja den Timer, daher muss das Callback direkt aufgerufen werden, sonst bleibt das Fahrzeug ja da.


    Ja, das kannst du ansonsten so lassen. Zur Sicherheit kannst du beim public noch das hinzufügen, dann passiert da nichts:
    leihbmxtimer[playerid]=-1;