Scriptfehler: /heal -> und ich bin tot

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
  • Also ich habe jetzt mich mit sscanf fast angefreundet und naja wenn ich mein ersten Befehl damit machen will dann kommt nur wie die Überschrift schon sagt Müll raus...



    http://pastebin.com/x7nRABvL


    Also wie schon gesagt ich will /heal [Playerid] [Amount]
    haben ABER immer wenn ich das eingebe oder nur /heal dann wird mein HP auf 0 gesetzt und ich bin tot


    _______________________________________________________

    Scripting Kenntnisse||||||||||
    Mapping Kenntnisse ||||||||||

    Design Kenntnisse ||||||||||

    Einmal editiert, zuletzt von Waterfront ()

  • Das bedeutet ich muss: if (strcmp("/mycommand", cmdtext, true, 10) == 0)
    einfach oben drüber setzen?


    _______________________________________________________

    Scripting Kenntnisse||||||||||
    Mapping Kenntnisse ||||||||||

    Design Kenntnisse ||||||||||

  • Ozan jetzt wird die HP direkt auf 100 gesetzt er möchte ja bestimmen wer gehealt werden soll und wie viel Hp der jenige daze bekommen soll


    *hust* kommst du nicht aus Gta city (ozan_new) ? :D


    hm machs so


    if (strcmp("/heal", cmdtext, true, 10) == 0)
    {
    new pid, hp;
    if(sscanf(params,"ui",pid,hp))return SendClientMessage(playerid,farbe,"nutze /healp [name] [Hp]");
    SetPlayerHealth(pid,hp);
    SendClientMessage(pid,farbe,"du wurdest gehealt");
    return 1;
    }


    sollte klappen

    -Ted.

    Einmal editiert, zuletzt von Ted. ()

  • Okay ich habe jetzt einfach folgendes gemacht:


    http://pastebin.com/GvuitAq5


    Wenn ich nur /heal eingebe sterbe ich, wenn ich /heal 0 50 eingebe passiert nichts


    /edit Danke, hab dein Betreig eben nicht gesehen...


    _______________________________________________________

    Scripting Kenntnisse||||||||||
    Mapping Kenntnisse ||||||||||

    Design Kenntnisse ||||||||||

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ach mist den Fehler hatte ich vorhin schon mal, mist den wollte ich iwi umgehen:



    C:\Dokumente und Einstellungen\Johannes\Desktop\SAMP Server\gamemodes\Fun.pwn(141) : error 017: undefined symbol "params"
    C:\Dokumente und Einstellungen\Johannes\Desktop\SAMP Server\gamemodes\Fun.pwn(140) : warning 203: symbol is never used: "pid"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.



    /edit achso den 2fehler habe ich behoben:


    SetPlayerHealth(pid,hp);


    _______________________________________________________

    Scripting Kenntnisse||||||||||
    Mapping Kenntnisse ||||||||||

    Design Kenntnisse ||||||||||

  • mit #pragma unused params
    verändere ich nichts außer das ich nochein error dazu bekomme wegen undefined symbol params



    John okay ich schaus mir mal an


    _______________________________________________________

    Scripting Kenntnisse||||||||||
    Mapping Kenntnisse ||||||||||

    Design Kenntnisse ||||||||||

  • also mit Ocmd funzt das so


    ocmd:heal(playerid,params[])
    {
    new pID, HP;
    if(sscanf(params,"ui",pID,HP))return SendClientMessage(playerid,farbe,"Benutze: /heal [Name/ID] [HP]");
    SetPlayerHealth(pID,HP);
    SendClientMessage(pID,"Du wurdest gehealt"); //das muss man nicht kann man aber (Mit SendClientMessage)
    return 1;
    }

    -Ted.

  • muss ich wenn ich ocmd nutze zusätlich das plugin sscanf drinne haben?


    _______________________________________________________

    Scripting Kenntnisse||||||||||
    Mapping Kenntnisse ||||||||||

    Design Kenntnisse ||||||||||

  • kannst auch sscanf unten is script einfügen


    stock sscanf(sstring[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(sstring))
    #else
    if (sstring[0] == 0 || (sstring[0] == 1 && sstring[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    sstringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (sstring[sstringPos] && sstring[sstringPos] <= ' ')
    {
    sstringPos++;
    }
    while (paramPos < paramCount && sstring[sstringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = sstring[sstringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = sstring[++sstringPos];
    }
    do
    {
    sstringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = sstring[sstringPos];
    do
    {
    sstringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, sstring[sstringPos++]);
    }
    case 'f':
    {


    new changestr[16], changepos = 0, strpos = sstringPos;
    while(changepos < 16 && sstring[strpos] && sstring[strpos] != delim)
    {
    changestr[changepos++] = sstring[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(sstring, format[formatPos], false, sstringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    sstringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = sstringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = sstring[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    sstring[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - sstringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, sstring[sstringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    sstring[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    sstringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = sstring[sstringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = sstring[sstringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    sstringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (sstring[sstringPos] && sstring[sstringPos] != delim && sstring[sstringPos] > ' ')
    {
    sstringPos++;
    }
    while (sstring[sstringPos] && (sstring[sstringPos] == delim || sstring[sstringPos] <= ' '))
    {
    sstringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }


    du brauchst das OCMD plugin..
    mfg

    -Ted.

  • Shit man der downloadlink is broken...


    [Include] OCMD


    und wenn ich pastebin nehme sagt er mir das:


    Fun.pwn(297) : error 021: symbol already defined: "OnPlayerCommandText"


    weil das gannz unten steht:


    #define OnPlayerCommandText ocmdOnPlayerCommandText


    _______________________________________________________

    Scripting Kenntnisse||||||||||
    Mapping Kenntnisse ||||||||||

    Design Kenntnisse ||||||||||

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