Wiederbeleben Problem

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,
    Bin gerade dabei ein Text zu schicken wenn jemand wiederbelebt hat also so


    Sanitäter %s hat sich um %s gekümmert und ihn behandelt. aber es wird nicht richtig angezeigt und weiß nicht woran es liegen konnte
    Script:
    if(strcmp(cmd, "/wiederbeleben", true) == 0 || strcmp(cmd, "/wb", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if (PlayerInfo[playerid][pMember] == 4 || PlayerInfo[playerid][pLeader] == 4)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(PlayerInfo[i][pTot] == 1 && IsPlayerInRangeOfPoint(playerid,5.0,PlayerInfo[i][pTx],PlayerInfo[i][pTy],PlayerInfo[i][pTz]))
    {
    new pname[256];
    GetPlayerName(i, pname, 256);
    format(string, 256, "Du hast deinen Patienten %s behandelt und bekommst 200$ für deine Arbeit.",pname);
    SendClientMessage(playerid, Hellgrun, string);
    GetPlayerName(playerid, pname, 256);
    format(string, 256, "Der Sanitäter %s hat deine Wunden behandelt.",pname);
    GivePlayerMoney(i,-200);
    ClearAnimations(i);
    SendClientMessage(i, Hellgrun, string);
    SendClientMessage(i, Hellgrun, "Die Behandlung hat dich 500$ gekostet.");
    GivePlayerMoney(playerid,200);
    DisablePlayerCheckpoint(playerid);
    PlayerInfo[i][pTot] = 0;
    UnFreezePlayer(i);
    pIstTot[i] = 0;
    SetPlayerPos(i,PlayerInfo[i][pTx],PlayerInfo[i][pTy],PlayerInfo[i][pTz]);
    SetCameraBehindPlayer(i);
    DestroyPickup(TotenKopf[i]);
    Delete3DTextLabel(Tote[i]);
    TogglePlayerControllable(i,1);
    SetPlayerSkin(i,PlayerInfo[i][pSkin]);
    PlayerInfo[i][pTx] = 0.0;
    PlayerInfo[i][pTy] = 0.0;
    PlayerInfo[i][pTz] = 0.0;
    new Float:tempheal;
    GetPlayerHealth(i,tempheal);
    SetPlayerHealth(i,100.0);
    for(new i = 0; i < GetMaxPlayers(); i++)
    {
    if(PlayerInfo[i][pMember] == 4 || PlayerInfo[i][pLeader] == 4)
    {
    format(ALLSTRING,sizeof(ALLSTRING),"Sanitäter %s hat sich um %s gekümmert und ihn behandelt.",PlayerName[playerid],PlayerName[i]);
    SendClientMessage(i,Hellblau,ALLSTRING);
    //SetPlayerCheckpoint(i,PlayerInfo[playerid][pTx],PlayerInfo[playerid][pTy],PlayerInfo[playerid][pTz],5.0);
    }
    }
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du bist kein Arzt!");
    }
    }
    return 1;
    }
    Wäre sehr dankbar, wenn jemand mir helfen konnte,
    Mit freundlichen grüßen,
    Tyler

  • Beschreibe dein Problem mal genauer.


    Ok also,
    Z.b nehmen wir an Test ist tot und er wird von Test1 wiederbelebt nun sollte das stehen und alle Mitglieder von Sanitäter den Text schicken:
    Sanitäter Test1 hat sich um Test gekümmert und ihn behandelt. aber das wird so angezeigt:
    Sanitäter Test1 hat sich um Test1 gekümmert und ihn behandelt.
    Hoffe du hast nun verstanden was mein problem ist


    Mit freundlichen grüßen,
    Tyler

  • format(ALLSTRING,sizeof(ALLSTRING),"Sanitäter %s hat sich um %s gekümmert und ihn behandelt.",PlayerName[playerid],PlayerName[i]);




    Ersetzten durch
    format(ALLSTRING,sizeof(ALLSTRING),"Sanitäter %s hat sich um %s gekümmert und ihn behandelt.",PlayerName[playerid],PlayerName[pname]);




    //EDIT
    ulbi hat doch recht, ich bin ein wenig schläfrig :D

  • [quote='ulbi1990','index.php?page=Thread&postID=1444120#post1444120']Anstatt PlayerName[i] würde ich es einmal mit pname versuchen.
    Also das hab ich auch schon versucht es wird das gleiche problem geben.
    Danke das du mir helfen willst.[quote='GangstaSunny','index.php?page=Thread&postID=1444119#post1444119']format(ALLSTRING,sizeof(ALLSTRING),"Sanitäter %s hat sich um %s gekümmert und ihn behandelt.",PlayerName[playerid],PlayerName[i]);




    Ersetzten durch
    format(ALLSTRING,sizeof(ALLSTRING),"Sanitäter %s hat sich um %s gekümmert und ihn behandelt.",PlayerName[playerid],PlayerName[pname]);
    Da gibt irgendwie ein error
    error 033: array must be indexed (variable "pname") obwohl ich eine variable habe
    danke das du mir auch helfen willst.

  • Du musst den Namen von dem geheilten auch erst neu getten, da du in deinem CMD, pname beim ersten für den geheilten nutzt, dann etwas später für die playerid der heilt.


    Also GetPlayerName(i,pname,MAX_PLAYER_NAME); noch vor der formatierung.


    Einfacher wäre es gewesen, wenn du für den geheilten und den heiler ein extra new anlegst. z.B. new pName[MAX_PLAYER_NAME],phName[MAX_PLAYER_NAME] dann eins für den sani nimmst und eins für den geheilten.


    EDIT:


    Noch einfacher ist es mit einem GetName stock.


    stock GetName(playerid)
    {
    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Name,MAX_PLAYER_NAME);
    return Name;
    }


    Dann kannst du es so nutzen:


    format(string, 256, "Du hast deinen Patienten %s behandelt und bekommst 200$ für deine Arbeit.",GetName(pname));


    format(string, 256, "Der Sanitäter %s hat deine Wunden behandelt.",GetName(playerid));


    //und


    format(ALLSTRING,sizeof(ALLSTRING),"Sanitäter %s hat sich um %s gekümmert und ihn behandelt.",GetName(playerid),GetName(pname));


    Und kannst dir die funktion GetPlayerName jedesmal sparen.

    2 Mal editiert, zuletzt von ulbi1990 ()


  • So ist schon richtig :)


    Du musst den Namen von dem geheilten auch erst neu getten, da du in deinem CMD, pname beim ersten für den geheilten nutzt, dann etwas später für die playerid der heilt.


    Also GetPlayerName(i,pname,MAX_PLAYER_NAME); noch vor der formatierung.


    Einfacher wäre es gewesen, wenn du für den geheilten und den heiler ein extra new anlegst. z.B. new pName[MAX_PLAYER_NAME],phName[MAX_PLAYER_NAME] dann eins für den sani nimmst und eins für den geheilten.


    Danke das hatte geholfen, allerdings sehe ich das nicht nur der ich geheilt habe seht den text,
    Script per pastebin
    http://pastebin.com/L5SBKxY1

  • Du musst natürlich auch durch alle Ärzte loopen, da du aber schon i für den user nimmst würde ich dir raten einen anderen Buchstaben oder Wort zu nutzen.


    Also:



    //dein format davor.
    for(new=a;a<MAX_PLAYERS;a++)
    {
    if(PlayerInfo[a][pMember] == 4 || PlayerInfo[a][pLeader] == 4)
    {
    SendClientMessage(a,Hellblau,ALLSTRING);
    }
    }