Ahoj,
script na target
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.
Target
Moderátor: Caleb
Re: Target
Ahoj, ve hre lasttarget. Ve phoenixu je to laststatus za kouzlem. Nevim na co jineho bys to mohl potrebovat.Bobicek píše:Ahoj,
script na target
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.
Priklad hotkeye phoenixu:
cast "Lightning" laststatus
Re: Target
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
Re: Target
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.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
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;
}
}
}