Beiträge von » † ѕαιтєк | тιмσ † «

    Jo ok.
    Was du derweil schon machen kannst:


    Füge folgende Zeilen ans Scriptende ein. (! Nicht in einem Callback !)



    /*----------------------------------------------------------------------------*-
    Function:
    sscanf
    Params:
    string[] - String to extract parameters from.
    format[] - Parameter types to get.
    {Float,_}:... - Data return variables.
    Return:
    0 - Successful, not 0 - fail.
    Notes:
    A fail is either insufficient variables to store the data or insufficient
    data for the format string - excess data is disgarded.

    A string in the middle of the input data is extracted as a single word, a
    string at the end of the data collects all remaining text.

    The format codes are:

    c - A character.
    d, i - An integer.
    h, x - A hex number (e.g. a colour).
    f - A float.
    s - A string.
    z - An optional string.
    pX - An additional delimiter where X is another character.
    '' - Encloses a litteral string to locate.
    u - User, takes a name, part of a name or an id and returns the id if they're connected.

    Now has IsNumeric integrated into the code.

    Added additional delimiters in the form of all whitespace and an
    optioanlly specified one in the format string.
    -*----------------------------------------------------------------------------*/

    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;
    }


    Das ist der Code den wir benötigen, um ocmd ein Parameter zu setzen.


    Mit freundlichen Grüßen
    Saitek | Timo

    Hast du irgendwelche Kontaktmöglichkeiten?
    Skype oder so?
    Wenn ja, schick mir den Namen mal bitte per PM, damit ich dich adden kann.
    Wenn nicht, schick mir trotzdem ne PM, und sag, dass du kein Skype hast.


    Es wäre aber von Vorteil, wenn ich dir gleich nebenbei erklären kann, was ich genau mit dem Befehl mache.
    Damit man noch was draus lernt.


    Mit freundlichen Grüßen
    Saitek | Timo

    Möchte nur kurz darauf hinweisen,
    dass du dich im Scripting-Bereich befindest.
    Dein Problem gehört eigentlich in die Client- und Serverhilfe,
    da es um die Inbetriebnahme eines Servers geht.
    Nicht das etwas sanktioniert wird. :huh:


    Nun zum eigentlichen Thema:
    Sind alle Files drinne (Scriptfiles, Includes, Plugins), die du benötigst?
    Ansonsten kann ich auch mal via. TeamViewer schauen,
    was das Problem darstellt.



    Das Scripting-Programm heißt "Pawno" und befindet sich zusammen mit dem Windows-Server
    in dem Paket, welches du dir > Hier < herunterladen kannst.


    Mit freundlichen Grüßen
    Saitek | Timo


    //Ganz hoch ins Script
    new dmTrue[MAX_PLAYERS];


    //Unter OnPlayerConnect
    OnPlayerConnect(playerid)
    {
    dmTrue[playerid] = 0;
    }
    //Irgendwo hin, hauptsache in keinen Callback
    ocmd:dm(playerid,params[])
    {
    GivePlayerWeapon(playerid,24,1000);
    GivePlayerWeapon(playerid,34,1000);
    GivePlayerWeapon(playerid,25,1000);
    SetPlayerPos(playerid, 1546.5265,-1673.6227,5.8906);
    dmTrue[playerid] = 1;
    return 1;
    }


    ocmd:exit(playerid,params[])
    {
    if(dmTrue[playerid] == 1)
    {
    SpawnPlayer(playerid);
    dmTrue[playerid] = 0;
    return 1;
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"Du bist nicht in der Arena!");
    }
    return 1;
    }


    Bitteschön :)


    Mit freundlichen Grüßen
    [GP]Saitek | Timo

    Wie stellst du dir das vor?
    ich stehe ganz normal in SA, gebe /dm ein und erhalte 3 Waffen?
    Was du meinst ist bestimmt in einem Interior, richtig?


    Zunächst ersteinmal der /dm-Befehl:



    ocmd:dm(playerid,params[])
    {
    GivePlayerWeapon(playerid,WaffenID,Anzahl der Munition);
    GivePlayerWeapon(playerid,WaffenID,Anzahl der Munition);
    GivePlayerWeapon(playerid,WaffenID,Anzahl der Munition);
    return 1;
    }


    Von was sind die Koordinaten?


    Sollte ich nicht richtig liegen erbitte ich genauere Informationen.


    Mit freundlichen Grüßen
    [GP]Saitek | Timo

    Du könntest aber auch einfach den Support anschreiben und sie bitten das sie den Externen Zugriff von dem und dem Webspace auf deine Datenbank zulassen sollen, anstatt extra einen Webspace zu Bestellen.


    Das habe ich gemacht - da hieß es: Sie müssen einen SA:MP4You-Webspace benützen, um auf die Datenbank zugreifen zu können.
    Also der Support macht da auch nix.


    Mit freundlichen Grüßen
    [GP]Saitek | Timo