/healall und /armourall geht nicht

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 wenn ich /heallall (Grund) und /armourall (Grund) eingebe passiert , nichts keiner bekommt +HP

    ocmd:healall(playerid,params[])
    {
    new string[128],Grund[128];
    if(sInfo[playerid][alevel] < 3)return SendClientMessage(playerid,GRAU,"Du bist nicht befugt!");
    if(sscanf(params,"s",Grund))return SendClientMessage(playerid,GRAU,"Verwendung: /healall [Grund]");
    for(new i; i < MAX_PLAYERS; i ++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    if(playerid != i)
    {
    format(string,sizeof(string),"Alle Spieler wurden von %s gehealt, Grund: %s",GetName(playerid),Grund);
    SendClientMessageToAll(BLAU,string);
    SetPlayerHealth(i,100);
    }
    }
    }
    return 1;
    }


    ocmd:armourall(playerid,params[]) //Fixxen
    {
    new string[128],Grund[128];
    if(sInfo[playerid][alevel] < 3)return SendClientMessage(playerid,GRAU,"Du bist nicht befugt!");
    if(sscanf(params,"s",Grund))return SendClientMessage(playerid,GRAU,"Verwendung: /armourall [Grund]");
    for(new i; i < MAX_PLAYERS; i ++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    if(playerid != i)
    {
    format(string,sizeof(string),"Alle Spieler haben von %s Armour erhalten, Grund: %s",GetName(playerid),Grund);
    SendClientMessageToAll(BLAU,string);
    SetPlayerArmour(i,100);
    }
    }
    }
    return 1;
    }


  • ocmd:healall(playerid,params[])
    {
    if(sInfo[playerid][alevel] < 3)return SendClientMessage(playerid,GRAU,"Du bist nicht befugt!");
    new Grund[128];
    if(sscanf(params,"s",Grund))return SendClientMessage(playerid,GRAU,"Verwendung: /healall [Grund]");
    for(new i; i < MAX_PLAYERS; i ++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    SetPlayerHealth(i,100);
    }
    }
    format(Grund,sizeof(Grund),"Alle Spieler haben von %s Armour erhalten, Grund: %s",GetName(playerid),Grund);
    SendClientMessageToAll(GRAU,Grund);
    return 1;
    }


    ocmd:armourall(playerid,params[]) //Fixxen
    {
    if(sInfo[playerid][alevel] < 3)return SendClientMessage(playerid,GRAU,"Du bist nicht befugt!");
    new Grund[128];
    if(sscanf(params,"s",Grund))return SendClientMessage(playerid,GRAU,"Verwendung: /armourall [Grund]");
    for(new i; i < MAX_PLAYERS; i ++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    SetPlayerArmour(i,100);
    }
    }
    format(Grund,sizeof(Grund),"Alle Spieler haben von %s Armour erhalten, Grund: %s",GetName(playerid),Grund);
    SendClientMessageToAll(GRAU,Grund);
    return 1;


    }

    KleineHilfe 2.0

  • Versuche es so:
    ocmd:healall(playerid,params[])
    {
    if(sInfo[playerid][alevel] < 3)return SendClientMessage(playerid,GRAU,"Du bist nicht befugt!");
    if(!strlen(params))return SendClientMessage(playerid,GRAU,"Verwendung: /healall [Grund]");
    for(new i; i < MAX_PLAYERS; i ++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    if(playerid != i)
    {
    SetPlayerHealth(i,100);
    }
    }
    }
    new string[145];
    format(string,sizeof(string),"Alle Spieler wurden von %s gehealt, Grund: %s",GetName(playerid),params);
    SendClientMessageToAll(BLAU,string);
    return 1;
    }


    ocmd:armourall(playerid,params[])
    {
    if(sInfo[playerid][alevel] < 3)return SendClientMessage(playerid,GRAU,"Du bist nicht befugt!");
    if(!strlen(params))return SendClientMessage(playerid,GRAU,"Verwendung: /armourall [Grund]");
    for(new i; i < MAX_PLAYERS; i ++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    if(playerid != i)
    {
    SetPlayerArmour(i,100);
    }
    }
    }
    new string[145];
    format(string,sizeof(string),"Alle Spieler haben von %s Armour erhalten, Grund: %s",GetName(playerid),params);
    SendClientMessageToAll(BLAU,string);
    return 1;
    }

  • Klappt nicht ich kann nicht mal Grund eingeben


    [00:34:28] Alle Spieler wurden von Test gehealt, Grund:


    [00:34:35] Alle Spieler haben von Test Armour erhalten, Grund:


    und die HP anzeige ändert sich auch nicht sowie die Armour

  • Hast du meines oder Jeffrys getestet?

    KleineHilfe 2.0

  • Wie wäre es wenn du meines auch nochmal ausprobierst und dich dann nochmal meldest.
    Ich habe die Funktion playerid != i bewusst raus genommen damit du es auch selber an dir testen kannst.

    KleineHilfe 2.0

  • Also bei mir klappt meiner einwandfrei.

    C:\Users\QQQ\Desktop\Montana Deathmatch\gamemodes\md.pwn(841) : warning 217: loose indentation
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.



    ocmd:healall(playerid,params[])
    {
    if(sInfo[playerid][alevel] < 3)return SendClientMessage(playerid,GRAU,"Du bist nicht befugt!");
    new Grund[128];
    if(sscanf(params,"s",Grund))return SendClientMessage(playerid,GRAU,"Verwendung: /healall [Grund]");
    for(new i; i < MAX_PLAYERS; i ++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    SetPlayerHealth(i,100);
    }
    }
    format(Grund,sizeof(Grund),"Alle Spieler haben von %s Armour erhalten, Grund: %s",GetName(playerid),Grund);
    SendClientMessageToAll(GRAU,Grund);
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • YaBroo:
    Bullshit. Ohne die Größe des Strings anzugeben funktioniert das ganze nicht ;)

    Wie du mit ein bisschen Ambition sehen kannst, sind die strings klar definiert in ALLEN Beiträgen.
    Scheinbar ist dir die Message meiner Frage weshalb man zusätzlich innerhalb der Formatierung eine Größe festlegen soll entfallen, kein Problem :)
    Ich denke einfach mal Grob das manche einfach nur was schreiben ohne wirklich die Beiträge zu lesen.

    KleineHilfe 2.0

  • YaBroo:
    Bullshit. Ohne die Größe des Strings anzugeben funktioniert das ganze nicht ;)

    Wenn man den Funktion sscanf verwendet muss man die länge nicht angeben hier droht jedoch die gefahr von string buffer overflows.
    http://wiki.sa-mp.com/wiki/Sscanf_code
    @YaBroo


    Wenn du das Plugin nutzst musst du dir auch sicher sein das die FUnktion sscanf aus dem skript entfernt wurde da gibt es keine komplikationen
    die neuste Version von sscanf findest du hier
    http://forum.sa-mp.com/showthread.php?t=570927

  • Hallo Jeffry, wenn du bei der Nutzung von sscanf nix angibst gibt sscanf 1 zurück und gibt daher die Meldung aus das der Nefehl ein bestimmtes Format braucht daher ist die länge abzuprüfen vom Grund nicht notwendig

    Das weiß ich, meine Antwort war auch auf meinen zuvor geposteten Code bezogen, da er TE diesen ausprobiert hat (zitierter Text), da wird kein sscanf verwendet. ;)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen