problem mit einem dcmd

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 habe gerade ein dcmd erstellt, mit denen man schwerverletzte leute heilen kann:


    dcmd_beleben(playerid,params[])
    {
    new pID, Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
    if(sscanf(params, "u", pID))
    {
    return SendClientMessage(playerid,0xFF0000FF,"Benutzung: /beleben [playerid]");
    }
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,0xFF0000FF,"Spieler ist nicht verletzt!");
    }
    if(Spieler[pID][Verletzt] == 0)
    {
    return SendClientMessage(playerid,0xFF0000FF,"Spieler ist nicht verletzt!");
    }
    if(Spieler[playerid][Member] != 9 || Spieler[playerid][Leader] != 9)
    {
    return 0;
    }
    if(playerid == pID)
    {
    return SendClientMessage(playerid,0xFF0000FF,"Du kannst dich nicht selbst heilen!");
    }
    if(!IsPlayerInRangeOfPoint(pID,10.0,x,y,z))
    {
    return SendClientMessage(playerid,0xFF0000FF,"Spieler ist nicht in deiner Nähe!");
    }
    else
    {
    new str1[100],str2[100],aname[MAX_PLAYER_NAME],bname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,aname,sizeof(aname));
    GetPlayerName(pID,bname,sizeof(bname));
    format(str1,sizeof(str1),"Du hast %s für $75 wiederbelebt!",bname);
    format(str2,sizeof(str2),"Du wurdest von %s für $75 wiederbelebt!",aname);
    KillTimer(todtimer1[pID]);
    KillTimer(todtimer2[pID]);
    ClearAnimations(pID);
    TogglePlayerControllable(pID,0);
    GivePlayerMoney(pID,-75);
    SendClientMessage(playerid,grau,str1);
    SendClientMessage(pID,grau,str2);
    }
    return 1;
    }


    alles klappt es kommen immer die nachrichten wenn bestimmte voraussetzung nicht erfüllt sind. aber sobald alles erfüllt ist, passiert nichts. weder die nachrichten kommen, noch wird er unfreezed. kein geld wird abgezogen und die animation sowie die timer bis er stirbt werden nicht beendet.


    könnte mir da einer helfen, weiß nicht wo ich da ein fehler drinne habe.


    mfg
    Simon


  • dcmd_beleben(playerid,params[])
    {
    new pID, Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
    if(sscanf(params, "u", pID))
    {
    return SendClientMessage(playerid,0xFF0000FF,"Benutzung: /beleben [playerid]");
    }
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,0xFF0000FF,"Spieler ist nicht verletzt!");
    }
    if(Spieler[pID][Verletzt] == 0)
    {
    return SendClientMessage(playerid,0xFF0000FF,"Spieler ist nicht verletzt!");
    }
    if(Spieler[playerid][Member] != 9 || Spieler[playerid][Leader] != 9)
    {
    return 0;
    }
    if(playerid == pID)
    {
    return SendClientMessage(playerid,0xFF0000FF,"Du kannst dich nicht selbst heilen!");
    }
    if(!IsPlayerInRangeOfPoint(pID,10.0,x,y,z))
    {
    return SendClientMessage(playerid,0xFF0000FF,"Spieler ist nicht in deiner Nähe!");
    }
    new str1[100],str2[100],aname[MAX_PLAYER_NAME],bname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,aname,sizeof(aname));
    GetPlayerName(pID,bname,sizeof(bname));
    format(str1,sizeof(str1),"Du hast %s für $75 wiederbelebt!",bname);
    format(str2,sizeof(str2),"Du wurdest von %s für $75 wiederbelebt!",aname);
    KillTimer(todtimer1[pID]);
    KillTimer(todtimer2[pID]);
    ClearAnimations(pID);
    TogglePlayerControllable(pID,0);
    GivePlayerMoney(pID,-75);
    SendClientMessage(playerid,grau,str1);
    SendClientMessage(pID,grau,str2);
    return 1;
    }


  • Wenn das GF ist kann das so nicht gehen der Grund ist:

    if(Spieler[playerid][Member] != 9 || Spieler[playerid][Leader] != 9)
    {
    return 0;
    }

    Welche ganz einfach sagt wenn Member nicht 9 ist oder Leader nicht 9 ist mache gar nichts mehr.
    Nun ist man bei GF aber entwerder Leader 9 und Member 0 oder Leader 0 und Member 9...
    Also müssen wir fragen: Wenn Meber nicht 9 und Leader nicht 9 mache gar nichts mehr.
    Also ist der Code:
    if(Spieler[playerid][Member] != 9 && Spieler[playerid][Leader] != 9)
    {
    return 0;
    }


    Keine Haftung ist ausm Kopfgeschrieben und geht nur bei GF oder GF like scripts

  • kein gf :D


    also der fragt ab ob der spieler member nummer 9 ist oder leader nummer 9 ist.


    "wenn spieler nicht member 9 oder nicht leader 9 ist, brech vorgang ab."


    so sehe ich das script mal übersetzt


    also wenn er member 9 ODER leader 9 ist, wird der vorgang nicht abgebrochen. so wäre das gegenteil also "else".

  • Bei mir wurde das else Entfernt.


    Das was Sniper sagte, stimmt.
    if(Spieler[playerid][Member] != 9 || Spieler[playerid][Leader] != 9)
    {
    return 0;
    }



    Kann nicht funktionieren.
    Änder deinen Else Code in:

    if(Spieler[playerid][Member] == 9 || Spieler[playerid][Leader] == 9)
    {
    new str1[100],str2[100],aname[MAX_PLAYER_NAME],bname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,aname,sizeof(aname));
    GetPlayerName(pID,bname,sizeof(bname));
    format(str1,sizeof(str1),"Du hast %s für $75 wiederbelebt!",bname);
    format(str2,sizeof(str2),"Du wurdest von %s für $75 wiederbelebt!",aname);
    KillTimer(todtimer1[pID]);
    KillTimer(todtimer2[pID]);
    ClearAnimations(pID);
    TogglePlayerControllable(pID,0);
    GivePlayerMoney(pID,-75);
    SendClientMessage(playerid,grau,str1);
    SendClientMessage(pID,grau,str2);
    }


  • hast du den als Leader auch Member mit 9 belegt wenn nicht probier mal bitte meine Variante kann mich natürlich auch irren da ich dein script nit kenne.