HitBox&Damage TD System

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
  • Na Hallo,


    Ich konnte das TextDraw nicht Testen da ich auf meinem Localhost niemanden beschiessen kann ...
    Allerdings sollte es vom Code her Funktionieren!


    Es enthält:
    HitSound System(Ein 'Bing' kommt)
    TextDraw System(Bei einem Treffer wird für 3 Sekunden ein TextDraw mit dem Schaden angezeigt)
    HitBox System(Wenn ich als Spieler denn anderen Visuell Treffe bekommt der denn Schaden sofort abgezogen)



    PasteBin:
    Klick mich so zart es geht!


    Edits:
    Edit 1: Nun mit HitSound!
    Edit 2: Ressourcensparender
    Edit 3: Bug gefixt.

    4 Mal editiert, zuletzt von HellYeah ()

  • public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
    {
    new string[128];
    new waffenname[24];
    PlayerPlaySound(damagedid,17802,0.0,0.0,0.0);
    PlayerPlaySound(playerid,17802,0.0,0.0,0.0);
    if(weaponid == 22)
    {
    GetWeaponName(weaponid, waffenname, sizeof (waffenname));
    format(string, sizeof(string), "Treffer! ~n~ Schaden 19 HP ~n~ Waffe %s",waffenname);
    TextDrawSetString(Textdraw0, string);
    SetTimerEx("textdrawdelete",3000,0,"");
    new Float:health = GetPlayerHealth(damagedid,health);
    SetPlayerHealth(damagedid,health-19);
    TextDrawShowForPlayer(playerid,Textdraw0);
    }
    else if(weaponid == 23)
    {
    GetWeaponName(weaponid, waffenname, sizeof (waffenname));
    format(string, sizeof(string), "Treffer! ~n~ Schaden 22 HP ~n~ Waffe %s",waffenname);
    TextDrawSetString(Textdraw0, string);
    SetTimerEx("textdrawdelete",3000,0,"");
    new Float:health = GetPlayerHealth(damagedid,health);
    SetPlayerHealth(damagedid,health-22);
    TextDrawShowForPlayer(playerid,Textdraw0);
    }
    else if(weaponid == 24)
    {
    GetWeaponName(weaponid, waffenname, sizeof (waffenname));
    format(string, sizeof(string), "Treffer! ~n~ Schaden 49 HP ~n~ Waffe %s",waffenname);
    TextDrawSetString(Textdraw0, string);
    SetTimerEx("textdrawdelete",3000,0,"");
    new Float:health = GetPlayerHealth(damagedid,health);
    SetPlayerHealth(damagedid,health-49.38);
    TextDrawShowForPlayer(playerid,Textdraw0);
    }
    else if(weaponid == 25)
    {
    GetWeaponName(weaponid, waffenname, sizeof (waffenname));
    format(string, sizeof(string), "Treffer! ~n~ Schaden 40 HP ~n~ Waffe %s",waffenname);
    TextDrawSetString(Textdraw0, string);
    SetTimerEx("textdrawdelete",3000,0,"");
    new Float:health = GetPlayerHealth(damagedid,health);
    SetPlayerHealth(damagedid,health-40);
    TextDrawShowForPlayer(playerid,Textdraw0);
    }
    else if(weaponid == 26)
    {
    GetWeaponName(weaponid, waffenname, sizeof (waffenname));
    format(string, sizeof(string), "Treffer! ~n~ Schaden 42 HP ~n~ Waffe %s",waffenname);
    TextDrawSetString(Textdraw0, string);
    SetTimerEx("textdrawdelete",3000,0,"");
    new Float:health = GetPlayerHealth(damagedid,health);
    SetPlayerHealth(damagedid,health-42);
    TextDrawShowForPlayer(playerid,Textdraw0);
    }
    else if(weaponid == 27)
    {
    GetWeaponName(weaponid, waffenname, sizeof (waffenname));
    format(string, sizeof(string), "Treffer! ~n~ Schaden 31 HP ~n~ Waffe %s",waffenname);
    TextDrawSetString(Textdraw0, string);
    SetTimerEx("textdrawdelete",3000,0,"");
    new Float:health = GetPlayerHealth(damagedid,health);
    SetPlayerHealth(damagedid,health-31);
    TextDrawShowForPlayer(playerid,Textdraw0);
    }
    else if(weaponid == 28)
    {
    GetWeaponName(weaponid, waffenname, sizeof (waffenname));
    format(string, sizeof(string), "Treffer! ~n~ Schaden 6 HP ~n~ Waffe %s",waffenname);
    TextDrawSetString(Textdraw0, string);
    SetTimerEx("textdrawdelete",3000,0,"");
    new Float:health = GetPlayerHealth(damagedid,health);
    SetPlayerHealth(damagedid,health-6);
    TextDrawShowForPlayer(playerid,Textdraw0);
    }
    else if(weaponid == 29)
    {
    GetWeaponName(weaponid, waffenname, sizeof (waffenname));
    format(string, sizeof(string), "Treffer! ~n~ Schaden 9 HP ~n~ Waffe %s",waffenname);
    TextDrawSetString(Textdraw0, string);
    SetTimerEx("textdrawdelete",3000,0,"");
    new Float:health = GetPlayerHealth(damagedid,health);
    SetPlayerHealth(damagedid,health-9);
    TextDrawShowForPlayer(playerid,Textdraw0);
    }
    else if(weaponid == 30)
    {
    GetWeaponName(weaponid, waffenname, sizeof (waffenname));
    format(string, sizeof(string), "Treffer! ~n~ Schaden 11 HP ~n~ Waffe %s",waffenname);
    TextDrawSetString(Textdraw0, string);
    SetTimerEx("textdrawdelete",3000,0,"");
    new Float:health = GetPlayerHealth(damagedid,health);
    SetPlayerHealth(damagedid,health-11);
    TextDrawShowForPlayer(playerid,Textdraw0);
    }
    else if(weaponid == 31)
    {
    GetWeaponName(weaponid, waffenname, sizeof (waffenname));
    format(string, sizeof(string), "Treffer! ~n~ Schaden 14 HP ~n~ Waffe %s",waffenname);
    TextDrawSetString(Textdraw0, string);
    SetTimerEx("textdrawdelete",3000,0,"");
    new Float:health = GetPlayerHealth(damagedid,health);
    SetPlayerHealth(damagedid,health-14);
    TextDrawShowForPlayer(playerid,Textdraw0);
    }
    else if(weaponid == 32)
    {
    GetWeaponName(weaponid, waffenname, sizeof (waffenname));
    format(string, sizeof(string), "Treffer! ~n~ Schaden 7 HP ~n~ Waffe %s",waffenname);
    TextDrawSetString(Textdraw0, string);
    SetTimerEx("textdrawdelete",3000,0,"");
    new Float:health = GetPlayerHealth(damagedid,health);
    SetPlayerHealth(damagedid,health-7);
    TextDrawShowForPlayer(playerid,Textdraw0);
    }
    else if(weaponid == 33)
    {
    GetWeaponName(weaponid, waffenname, sizeof (waffenname));
    format(string, sizeof(string), "Treffer! ~n~ Schaden 37 HP ~n~ Waffe %s",waffenname);
    TextDrawSetString(Textdraw0, string);
    SetTimerEx("textdrawdelete",3000,0,"");
    new Float:health = GetPlayerHealth(damagedid,health);
    SetPlayerHealth(damagedid,health-37);
    TextDrawShowForPlayer(playerid,Textdraw0);
    }
    else if(weaponid == 34)
    {
    GetWeaponName(weaponid, waffenname, sizeof (waffenname));
    format(string, sizeof(string), "Treffer! ~n~ Schaden 56 HP ~n~ Waffe %s",waffenname);
    TextDrawSetString(Textdraw0, string);
    SetTimerEx("textdrawdelete",3000,0,"");
    new Float:health = GetPlayerHealth(damagedid,health);
    SetPlayerHealth(damagedid,health-56);
    TextDrawShowForPlayer(playerid,Textdraw0);
    }

    return 1;
    }
    Das könntest du kürzen.
    Den Schaden, welchen du manuell ausgibst, kannst du mithilfe von Float:amount automatisch ausgeben lassen.
    SetPlayerHealth ist dann auch überflüssig.

  • Ich habe leider ehrlich gesagt das mit amount nicht so wirklich hinbekommen,bei mir kamen dann lauter Errors usw.
    Die Lösung ist zwar etwas Unstrukturierter & Ressourcenfressender aber wird glaube ich den Server von der Leistung aus
    nicht töten.



    B2T:
    Weitere Meinungen? ;)

  • So, Beitrag ist Aktualisiert habe etwas beim format falsch gemacht es ist nun mit Amount gelöst und sehr Ressourcensparender gemacht!
    Have Some Fun :P


    LolligerxD:
    Schreib mich per PN an was alles drin sein soll ich mache es morgen mal für dich fertig(Die Map / Den Standort musst du liefern).


    Scott_Mitchell:
    Siehe Topic.


    @Andrzejxy':
    Siehe Topic.

    Einmal editiert, zuletzt von HellYeah ()