[SUCHE] Medicsystem

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
  • Guten Morgen,
    ich suche ein ganz einfacher Medicsystem.
    Wenn Personen unter 10 HP haben, soll ein Medic darüber informiert werden, wie kann ich soetwas einstellen?
    Hat evntl. so ner Art "Vorlage" oder so, die ich nur einfügen brauche.
    Hat jemand vielleicht so ein "Medic"System Filterscript oder so..?



    Lg.

    Einmal editiert, zuletzt von SA:MP () aus folgendem Grund: Schriftart verändert

  • Sachen selbst schreiben fällt mir sehr schwer, ich kann mir das nicht so vorstellen wie ich es mit dem Timer + Schleife aufbauen soll..

  • Du erstellst einen Timer, der jede Sekunde abfrägt ob jemand unter 10 HP hat.
    Wenn dies der Fall ist, erstellst du eine For-Schleife, inder du abfrägst, wer in der Fraktion Medic ist.
    Dann kannste deinen Fantasien freien Lauf lassen, was passieren soll.

    [align=center]

  • //Bei OnGameModeInit:
    SetTimerEx("Health", 1000, true);


    //Irgendwo außerhalb eines Callbacks:
    forward Health(playerid);


    //Irgendwo darunter:
    public Health(playerid)
    {
    for(new i; i < MAX_PLAYERS; i++)
    {
    new health[MAX_PLAYERS];
    health = GetPlayerHealth(i);
    if(health[i] < 10)
    {
    new name[MAX_PLAYER_NAME], str[256];
    GetPlayerName(i, name, sizeof(name));
    format(str, sizeof(str), "%s hat unter 10 Health, kümmere Dich um ihn!", name);
    if(PlayerInfo[playerid][pMember] == /* Fraktion */ || PlayerInfo[playerid][pLeader] == /*Fraktion*/)
    {
    SendClientMessage(playerid, FARBE, str);
    }
    }
    }
    return 1;
    }


    Ungetestet!

    Liebe Grüße


    Marcel

  • Sind Errors gekommen..



    C:\Users\Administrator\Desktop\Mr.Puma\Berkanneu.pwn(10825) : warning 202: number of arguments does not match definition
    C:\Users\Administrator\Desktop\Mr.Puma\Berkanneu.pwn(16979) : warning 202: number of arguments does not match definition
    C:\Users\Administrator\Desktop\Mr.Puma\Berkanneu.pwn(16979) : error 033: array must be indexed (variable "health")
    C:\Users\Administrator\Desktop\Mr.Puma\Berkanneu.pwn(16987) : error 017: undefined symbol "FARBE"


    Was haben diese zu bedeuten?

  • Zitat

    SetTimerEx("Health", 1000, true);


    Das ist falsch, muss so lauten:


    SetTimerEx("Health", 1000, 1, "i", playerid);


    Du musst die ganzen Funktionen auch noch ergänzen und in den richtigen Callback schreiben ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ok,
    jetzt sind es 2 Errors und 1 Warning.. :wacko:


    C:\Users\Administrator\Desktop\Mr.Puma\Berkanneu.pwn(10807) : error 017: undefined symbol "playerid"
    C:\Users\Administrator\Desktop\Mr.Puma\Berkanneu.pwn(16979) : warning 202: number of arguments does not match definition
    C:\Users\Administrator\Desktop\Mr.Puma\Berkanneu.pwn(16979) : error 033: array must be indexed (variable "health")

  • Schreibe es so:


    SetTimerEx("Health", 1000, 1, "i", playerid);


    //Irgendwo außerhalb eines Callbacks:
    forward Health(playerid);


    //Irgendwo darunter:
    public Health(playerid)
    {
    for(new i; i < MAX_PLAYERS; i++)
    {
    new Float:health[MAX_PLAYERS];
    health = GetPlayerHealth(i);
    if(health[i] < 10)
    {
    new name[MAX_PLAYER_NAME], str[256];
    GetPlayerName(i, name, sizeof(name));
    format(str, sizeof(str), "%s hat unter 10 Health, kümmere Dich um ihn!", name);
    if(PlayerInfo[playerid][pMember] == /* Fraktion */ || PlayerInfo[playerid][pLeader] == /*Fraktion*/)
    {
    SendClientMessage(playerid, FARBE, str);
    }
    }
    }
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Muss es nicht so heißen ?


    if(PlayerInfo[i][pMember] == /* Fraktion */ || PlayerInfo[i][pLeader] == /*Fraktion*/)
    {
    SendClientMessage(i, FARBE, str);
    }


    Nein, da ja dem Spieler (der der Medic ist = playerid) eine Nachricht gesendet werden soll und nicht dem, der kaum noch Leben hat ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Da hast du Recht 8| Ja, so muss es tatsächlich sein.


    Also: In der IF-Abfrage "playerid" durch "i" ersetzen!


    //Kaliber:
    Aber es wird ja gefragt ob "i" in der Fraktion Medic ist, oder nicht? Dann geht das doch?

    Liebe Grüße


    Marcel

  • Ich weiß nicht...
    Es kommen die gleichen Errors/Warnings, ich denke mal ich füge es in die falschen Bereiche hinein.. :S


    Function OnGameModeInit()
    {
    //Bots
    SetTimerEx("Health", 1000, 1, "i", playerid);



    Error/Warning


    C:\Users\Administrator\Desktop\Mr.Puma\Berkanneu.pwn(10807) : error 017: undefined symbol "playerid"
    C:\Users\Administrator\Desktop\Mr.Puma\Berkanneu.pwn(16980) : warning 202: number of arguments does not match definition
    C:\Users\Administrator\Desktop\Mr.Puma\Berkanneu.pwn(16980) : error 033: array must be indexed (variable "health")


    Das wo "undefined symbol "playerid"" steht, ist das was ich oben mit "OnGameModeInit" eingefügt habe.
    Die anderen 2 sind diese Zeile
    new Float:health[MAX_PLAYERS];

  • Da hast du Recht 8| Ja, so muss es tatsächlich sein.


    Also: In der IF-Abfrage "playerid" durch "i" ersetzen!


    //Kaliber:
    Aber es wird ja gefragt ob "i" in der Fraktion Medic ist, oder nicht? Dann geht das doch?


    Quatsch !


    Ich habe recht :whistling: Verwende meinen Code und lass dir jetzt nichts einreden @SunRise !


    mfg. :thumbup:


    //Edit SA:MP


    Du darfst das doch nicht unter OnGameModeInit schreiben :pinch:


    Schreibe das in keinen Callback einfach ganz unten hin den "public" ;)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S