/slap [ID] [HÖHE]

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
  • Hay, könnt ihr mir nen Befehl erstellen, bei dem man einen Spieler slappen kann...
    Und zwar mit der Entscheidung wie hoch man ihn slappt.
    Also: /slap [ID] [HÖHE]


    Würde mich freuen...
    LG

  • dcmd(slap,4,cmdtext);
    dcmd_slap(playerid,cmdtext)
    {
    new pID,pSize;
    if(sscanf(params, "dd",pID,pSize))
    {
    //wenn nur /slap eingegeben worden ist
    }
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(pID,X,Y,Z);
    SetPlayerPos(pID,X,Y,pSize);
    return 1;
    }

    Nicht getestet

  • Ich glaube das wird nicht so ganz funktionieren, da pSize eine direkte Koordinate sein muss, ist aber auch nicht wirklich doll nachgedacht :D


    Nicht doll nachgedacht!

  • Arg stimmt dcmd_slap(playerid,cmdtext)
    {
    new pID,pSize;
    if(sscanf(params, "df",pID,pSize)) //<<<---- so meinst du ??
    {
    //wenn nur /slap eingegeben worden ist
    }
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(pID,X,Y,Z);
    SetPlayerPos(pID,X,Y,pSize);
    return 1;
    }

  • C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(21993) : error 017: undefined symbol "dcmd_slap"
    C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(21996) : error 017: undefined symbol "sscanf"
    C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(22007) : warning 225: unreachable code
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.

  • Hallo,



    Dir fehlen bestimmt includes...



    Habe mal auch gemacht, jedoch ohne höhe, da ich änfänger bin scripte erst seit 2 tagen


    if(strcmp(cmd, "/slap", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /slap [playerid]");
    return 1;
    }
    new playa;
    new Float:shealth;
    new Float:slx, Float:sly, Float:slz;
    playa = ReturnUser(tmp);
    if (PlayerInfo[playerid][pAdmin] >=2)
    {
    if(IsPlayerConnected(playa))
    {
    if(playa != INVALID_PLAYER_ID)
    {
    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerHealth(playa, shealth);
    SetPlayerHealth(playa, shealth-5);
    GetPlayerPos(playa, slx, sly, slz);
    SetPlayerPos(playa, slx, sly, slz+5);
    PlayerPlaySound(playa, 1130, slx, sly, slz+5);
    printf("AdmCmd: %s slapped %s",sendername, giveplayer);
    format(string, sizeof(string), "AdmCmd: %s wurde geslapt von %s",giveplayer ,sendername);
    ABroadCast(COLOR_LIGHTRED,string,1);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Diesen Befehl kannst du nicht nutzen.");
    }
    }
    return 1;
    }

  • War ja klar -.-


    Irgendwo Copy & Paste, es fehlt noch unter OnPlayerCommandText eine Funktion, kann ich nicht ausm Kopf sagen, dann hast du sscanf nicht definiert, steht da ja.

  • Das findeste ja in jedem Godfather und weil ich ned der beste bin, frag ich ja hier danach -.-


  • Kannste deiner Oma erzählen das du schowas schon scripten kannst obwohl du vor 2 tagen mit dem Scripten angefangen hast.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Kann mir vill irg einer schreiben, was ich wo genau eintragen muss, dass die errors weggehn?
    Ich bin eher der "Learning by doin"- Typ

  • Ok hier sollte gehen
    Oben in deinem Script unter include <a_samp>
    kommt das
    #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
    unter OnPlayerCommandText kommtdcmd(slap,4,cmdtext);
    das dcmd_slap(playerid,cmdtext)
    {
    new pID,pSize;
    if(sscanf(params, "dd",pID,pSize))
    {
    //wenn nur /slap eingegeben worden ist
    }
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(pID,X,Y,Z);
    SetPlayerPos(pID,X,Y,pSize);
    return 1;
    }

    kommt ganz nach unten und das hier stock sscanf(string[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(string))
    #else
    if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    stringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (string[stringPos] && string[stringPos] <= ' ')
    {
    stringPos++;
    }
    while (paramPos < paramCount && string[stringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = string[stringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = string[++stringPos];
    }
    do
    {
    stringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = string[stringPos];
    do
    {
    stringPos++;
    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 = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, string[stringPos++]);
    }
    case 'f':
    {

    new changestr[16], changepos = 0, strpos = stringPos;
    while(changepos < 16 && string[strpos] && string[strpos] != delim)
    {
    changestr[changepos++] = string[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(string, format[formatPos], false, stringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    stringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = stringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = string[++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
    string[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - stringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, string[stringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    string[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    stringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = string[stringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = string[stringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    stringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
    {
    stringPos++;
    }
    while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
    {
    stringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }kommt auch ganz nach unten

  • Hast du aber fein erklärt, bekommst Seife, meld dich mal.

  • Korrektur von Pixels' Script:
    dcmd_slap(playerid,cmdtext)
    {
    new pID,pSize;
    if(sscanf(params, "dd",pID,pSize))
    {
    //wenn nur /slap eingegeben worden ist
    }
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(pID,X,Y,Z);
    SetPlayerPos(pID,X,Y,Z+pSize);
    return 1;
    }

  • Genau so falsch -.-

  • if(strcmp(cmd, "/slap", true) == 0)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "BENUTZE: /slap [ID/Teil des Namens]");
    return 1;
    }
    new playa;
    new Float:shealth;
    new Float:slx, Float:sly, Float:slz;
    playa = ReturnUser(tmp);
    new hohe;
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "BENUTZE: /slap [ID/Teil des Namens] [Höhe]");
    return 1;
    }
    if (PlayerInfo[playerid][pAdmin] >=1)
    {
    if(IsPlayerConnected(playa))
    {
    if(playa != INVALID_PLAYER_ID)
    {
    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerHealth(playa, shealth);
    SetPlayerHealth(playa, shealth-5);
    GetPlayerPos(playa, slx, sly, slz);
    SetPlayerPos(playa, slx, sly, slz+hohe);
    PlayerPlaySound(playa, 1130, slx, sly, slz+hohe);
    printf("AdmCmd: %s hat %s geschlagen",sendername, giveplayer);
    format(string, sizeof(string), "AdmCmd: %s wurde von %s geschlagen",giveplayer ,sendername);
    ABroadCast(COLOR_LIGHTRED,string,1);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Dir ist es nicht erlaubt, diesen Befehl zu benutzen!");
    }
    }
    return 1;
    }


    aus dem kopf geschrieben kp ob es funkt

    Zitat

    naja aufm homeserver mit kumpel getestet und nix laggt von daher sollte nen richtiger server mit sowas keine probs haben

    *an Kopf schlag
    sowas kommt Raus wenn man erst absendet ohne nachzudenken. Bitte Leute Hirn einschalten beim Posten...

  • C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(11360) : error 035: argument type mismatch (argument 2)
    C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35453) : error 017: undefined symbol "params"
    C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35459) : warning 202: number of arguments does not match definition
    C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35452) : warning 203: symbol is never used: "pSize"
    C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35450) : warning 203: symbol is never used: "cmdtext"
    C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35450) : warning 203: symbol is never used: "playerid"
    C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35497) : warning 219: local variable "ch" shadows a variable at a preceding level
    C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35522) : warning 219: local variable "ch" shadows a variable at a preceding level
    C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35578) : warning 219: local variable "ch" shadows a variable at a preceding level
    C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35603) : warning 219: local variable "ch" shadows a variable at a preceding level
    C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35659) : warning 219: local variable "ch" shadows a variable at a preceding level
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.

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