Beiträge von Mafu

    Und zwar habe ich unter OnPlayerDeath folgendes:


    kills[killerid] = +1;
    kills[playerid] = 0;


    Aber er meckert über +1
    Wie soll ichs sonst machen, dass meine Variable kills um 1 erhöht wird, sobald ein Spieler getötet wird?

    1.Wie frage ich ab, welche Waffe der Spieler gerade im Arm hat?


    2. Wie kann ich verhindern, dass der Spieler, wenn er schon ne M4 hat, gleichzeitig auch eine MP5, Shotgun etc. haben kann?

    Multi-Theft-Auto San Andreas ;)


    edit: ok war ein bisschen wenig Informativ. Also MTA SA ist ein weiterer Multiplayer Client, mit integriertem Map Editor. Die damit erstellten Map Dateien musst du mit einem Konverter (google hilft beim finden (MTA SAMP Map Converter) in die Scriptsprache PAWN umwandeln ;)

    Ich habe die Funktion schon verstanden. Aber womit bekomm ich raus, ob der Spieler diese Waffe, auf die ich setze überhaupt hat?
    GetPlayerWeapon ist so wie ich des las da, um zu fragen welche er ausgerüstet hat.

    Jau sry bin noch im halbschlaf UND von der Arbeit abgelenkt^^ hab ich wohl überlesen. Naja passiert.


    Aber mal aus neugier, Wie bannt man den Stamm? xD


    edit: ups auch dass konnte ich aus dem Post entnehmen. Frage erledigt^^

    Gothic 1 und 2 + Addon sind 2 Singleplayer RPGs, welche sehr gut auch nur mit Tastatur (manche spielens NUR so xD)zu steuern sind. Es hat für das Releasedatum (2001 und 2003) sogar eine recht hübche Grafik. (Für heute eher weniger, aber glaub mir. Zur Athmosphäre bestens.) Ansonsten wenns MMO sein soll versuchs mal mit Metin. Afaik Pfeiltasten/WASD laufen und Leertaste wien bekloppter raufhämmern xD

    Bezweifle ich. Ich hab auch nicht vor mein ganzes Script zu posten.


    #include <a_samp>


    //#include <sscanf2>
    #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
    new pName[MAX_PLAYER_NAME], string[56] ;
    #pragma unused pName



    #define rot 0xFF0000FF
    #define gelb 0xFFFF00FF


    new tot;
    new Float:x, Float:y, Float:z,Float:r;
    Da sitzen die ganzen Definitionen. sscanf ist ausgeklammert ich weiß. Hat schon seine Richtigkeit ;)


    Denn unten im Script hab ich:



    // SSCANF


    stock sscanf(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':
    {
    setarg(paramPos, 0, _:floatstr(string[stringPos]));
    }
    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;
    }


    // Ende SSCANF


    Hab die Zeilen iwo raus kopiert (wo es aber auch ging :/) und ich schätze es hängt vllt da drinnen?

    Wie bereits gesagt wurde, macht diese Warnung nichts, sondern weißt nur darauf hin, dass die Variable nicht genutzt wird. Du kannst sie aber mit


    #pragma unused (die Variable ohne Klammer)


    deaktivieren. Dann hast du die Warnung beim Compilen nicht mehr.

    Hör mal zu. ICH kann es normal. Und dein command kann im Prinzib auch nicht mehr als meiner, außer dass er die ID überprüft. Das printf hat mir eher geholfen also halt den Ball flach. Wenn du genau gelesen hättest, müsstest du es interpretieren können dass es am Printf liegt :/ Und die Abfragen SIND auch nicht nötig. Hatte es doch eig schon x mal ohne :/ nur aus irgentnem Grund gehn die neu geschriebenen nicht und die alten Scripts habi nimme.


    Also wie gesagt, laut Printf command setzt er zwischen Parameter und Command ne 0.

    Also. Afaik kann man bei Head eine Kopfzeile wie bei Word machen. Ich mein mich erinnern zu können dort mal meinen Header gesetzt zu haben.



    Naja und <br> muss man ebenfalls nicht schließen. Es reicht zum Zeile brechen. Es bricht ja nur eine Zeile also was sollte weiter passieren? xD


    Ansonsten find ichs Nice.


    Edit: Head heißt ja auch Kopf...naja und mein Vorposter hats ja auch schon erwähnt.

    Wieso kompliziert? Gibt ja auch Reallife und RPG Gamemodes die In Venturas spielen.


    Ich find die Schule Nice gemacht. Auf die Idee sowas mit Pfeilen auszulegen kam ich noch gar nicht. Weiter so: 9/10 :thumbup: