Target

Skripty týkající se tohoto externího programu

Moderátor: Caleb

Odpovědět
Bobicek
Slime Flourisher
Slime Flourisher
Příspěvky: 15
Registrován: 11 srp 2016 09:16

Target

Příspěvek od Bobicek »

Ahoj,
script na target :D

Mám ho, ale jediný problem který mám je, že když někoho targetnu a kouzlim, někdy se stane že když od něj odběhnu nebo je za stromem či jinde.
Tak se mě ten target jakoby vyruší a když chci kástit a už vidim NPC/hráče píše mě to nějakou hlášku že nevidí ten target nebo něco.

Je nějaký target který se JEDNOU targetne a už ho neztratí ani se nijak nepřeruší? Zatím pvp nehraji třeba časem, a jak tak premyšlím bylo by blbe po 2 kouzlech zase klikat na zalozku hrace.

Diky za odpovedi.
Uživatelský avatar
krysakrys
Elder Letter
Elder Letter
Příspěvky: 233
Registrován: 06 srp 2016 21:12

Re: Target

Příspěvek od krysakrys »

Bobicek píše:Ahoj,
script na target :D

Mám ho, ale jediný problem který mám je, že když někoho targetnu a kouzlim, někdy se stane že když od něj odběhnu nebo je za stromem či jinde.
Tak se mě ten target jakoby vyruší a když chci kástit a už vidim NPC/hráče píše mě to nějakou hlášku že nevidí ten target nebo něco.

Je nějaký target který se JEDNOU targetne a už ho neztratí ani se nijak nepřeruší? Zatím pvp nehraji třeba časem, a jak tak premyšlím bylo by blbe po 2 kouzlech zase klikat na zalozku hrace.

Diky za odpovedi.
Ahoj, ve hre lasttarget. Ve phoenixu je to laststatus za kouzlem. Nevim na co jineho bys to mohl potrebovat.

Priklad hotkeye phoenixu:
cast "Lightning" laststatus
Bobicek
Slime Flourisher
Slime Flourisher
Příspěvky: 15
Registrován: 11 srp 2016 09:16

Re: Target

Příspěvek od Bobicek »

Ahoj, diky zkusím to. Tím pádem script jako takový na TARGET neni potřeba? Stačí kdyžsi npc / hhráčeddámdo waru a castim na nej hotkeye s laststatusem na kkonci :)
Uživatelský avatar
krysakrys
Elder Letter
Elder Letter
Příspěvky: 233
Registrován: 06 srp 2016 21:12

Re: Target

Příspěvek od krysakrys »

Bobicek píše:Ahoj, diky zkusím to. Tím pádem script jako takový na TARGET neni potřeba? Stačí kdyžsi npc / hhráčeddámdo waru a castim na nej hotkeye s laststatusem na kkonci :)
Hoj, nemas zac. Muzes skocit na smoce.net a vpravo je balicek se skriptama na dp a navod fenu. Kdyz nevim jak neco funguje, tak hned nad tim je vyhledavaci pole.

Prvni si ho zamer timhle. Zobrazuje to nejen status bar, ale i damage. Myslim, ze to funguje i automaticky po utoku (ale nemam to odzkousene, protoze za kouzelnika/nekra neutocite - byste si akorat fizzovali vlastni kouzla pak). Hotkey je:

exec statusbar

Kód: Vybrat vše

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Phoenix;
using System.Threading;
using System.Windows.Forms;
using Phoenix.Gui.Controls;
using Phoenix.Gui;
using Phoenix.Runtime;
using System.Reflection;
using System.Security.Permissions;
using Phoenix.WorldData;
using System.Runtime.InteropServices;
using System.Security;

namespace Scripts.Status
{
    public class StatusBar
    {
        /// <summary>
        /// Zapina/vypina pruhlednost zalozek.
        /// </summary>
        public const bool Transparent = true;

        private bool StatusExists(Serial id)
        {
            return WindowManager.GetDefaultManager().OwnedWindows.OfType<StatusForm>().Where(f => f.MobileId == id).Count() > 0;
        }

        [Executable("statusbar")]
        public void Show()
        {
            UO.Print("Select");
            Show(UIManager.TargetObject());
        }

        [Executable("statusbar")]
        public void Show(Serial id)
        {
            if (!id.IsValid)
                throw new ScriptErrorException("Invalid id.");

            // Kontrola, jestli tahle zalozka uz neexistuje
            if (StatusExists(id)) {
                UO.Print("StatusBar already exists.", "Scripts");
                return;
            }

            // Vytvor okno
            WindowManager.GetDefaultManager().CreateWindow(delegate()
            {
                var f = new StatusForm(id);
                f.Transparency = Transparent;

                return f;
            });
        }

        [Executable("statusall")]
        public void ShowAll()
        {
            foreach (var mob in World.Characters) {
                if (mob.Renamable || mob.Distance > 20)
                    continue;
                 // Tohle sice neni thread-safe, ale pravdepodobnost problemu je velmi mala
                if (!StatusExists(mob.Serial)) {
                    UO.Exec("statusbar", mob.Serial);
                    UO.Wait(100);
                }
            }
        }

        [Executable("statusallpk")]
        public void ShowAllpk()
        {
            foreach (var mob in World.Characters)
            {
                if (mob.Renamable || mob.Distance > 20)
                    continue;
                if (mob.Notoriety == Notoriety.Murderer)
                    continue;

                // Tohle sice neni thread-safe, ale pravdepodobnost problemu je velmi mala
                if (!StatusExists(mob.Serial))
                {
                    UO.Exec("statusbar", mob.Serial);
                    UO.Wait(100);
                }
            }
        }
        [Executable("statusallred")]
        public void ShowAllred()
        {
            foreach (var mob in World.Characters)
            {
                if (mob.Renamable || mob.Distance > 20)
                    continue;
                if (mob.Notoriety == Notoriety.Enemy)
                    continue;

                // Tohle sice neni thread-safe, ale pravdepodobnost problemu je velmi mala
                if (!StatusExists(mob.Serial))
                {
                    UO.Exec("statusbar", mob.Serial);
                    UO.Wait(100);
                }
            }
        }

        [ClientMessageHandler(0x05)]
        public CallbackResult OnAttack(byte[] data, CallbackResult prevResult)
        {
            uint id = ByteConverter.BigEndian.ToUInt32(data, 1);
            UOCharacter mob = new UOCharacter(id);

            if (mob.Distance < 20 && !StatusExists(mob.Serial)) {
                UO.Exec("statusbar", mob.Serial);
            }

            return CallbackResult.Normal;
        }

    }
}

Jeste bych pro uplnost doplnil, ze existuje ve hre klavesa TargetNext, ktera mozna dela presne to co hledas.
Odpovědět