Buff Icon Window
Moderator: POL Developer
Buff Icon Window
Tell me please, what is the name of this packet:
http://fantasiaserver.proboards.com/thr ... con-window
I didn't find in Edwards Fantasia server code. If anybody have it, please, upload!
http://fantasiaserver.proboards.com/thr ... con-window
I didn't find in Edwards Fantasia server code. If anybody have it, please, upload!
Re: Buff Icon Window
http://docs.polserver.com/packets/index.php?Packet=0xDF
With some modifications in your cliloc and gumps you can completely use it for your own magery system, that's what I did. Pretty much straightforward the packet itself.
With some modifications in your cliloc and gumps you can completely use it for your own magery system, that's what I did. Pretty much straightforward the packet itself.
Re: Buff Icon Window
Unfortunately I don't understand in packet hooks, and if you don't find it hard, upload please.
With best regards!
With best regards!
Re: Buff Icon Window
Code: Select all
function BuffOn(who, buff, amount, duration)
var icon, cliloc1, cliloc2;
if(who.isa(POLCLASS_NPC))
return;
endif
case(lower(buff))
"reactivearmor":
icon := 1028;
cliloc1 := 1075812;
cliloc2 := 1062495;
"protection":
icon := 1029;
cliloc1 := 1075814;
cliloc2 := 1062495;
"magicreflection":
icon := 1031;
cliloc1 := 1075817;
cliloc2 := 1062495;
"polymorph":
icon := 1035;
cliloc1 := 1075824;
cliloc2 := 1062495;
"paralyze":
icon := 1037;
cliloc1 := 1075827;
cliloc2 := 1075828;
"clumsy":
icon := 1040;
cliloc1 := 1075831;
cliloc2 := 1062495;
"feeblemind":
icon := 1041;
cliloc1 := 1075833;
cliloc2 := 1062495;
"weaken":
icon := 1042;
cliloc1 := 1075837;
cliloc2 := 1062495;
"curse":
icon := 1043;
cliloc1 := 1075835;
cliloc2 := 1062495;
"agility":
icon := 1045;
cliloc1 := 1075841;
cliloc2 := 1062495;
"cunning":
icon := 1046;
cliloc1 := 1075843;
cliloc2 := 1062495;
"strength":
icon := 1047;
cliloc1 := 1075845;
cliloc2 := 1062495;
"bless":
icon := 1048;
cliloc1 := 1075847;
cliloc2 := 1062495;
"regeneration":
icon := 1009;
cliloc1 := 1044106;
cliloc2 := 1075106;
"nightsight":
icon := 1005;
cliloc1 := 1075643;
cliloc2 := 1075644;
"archprotection":
icon := 1030;
cliloc1 := 1075816;
cliloc2 := 1075816;
"incognito":
icon := 1032;
cliloc1 := 1075819;
cliloc2 := 1075820;
"invisibility":
icon := 1036;
cliloc1 := 1075825;
cliloc2 := 1075826;
"poison":
icon := 1038;
cliloc1 := 0x0F8627;
cliloc2 := 0x1069B1;
endcase
SendBuffPacket(who, 1, CInt(amount), CInt(duration), icon, cliloc1, cliloc2);
//TimeToBuffOff(who, buff, duration);
endfunction
function SendBuffPacket(who, turn, amount, duration, icon, cliloc1, cliloc2)
const BUFF_CMD := 0xDF;
const OFFSET_MSGLEN := 1;
const OFFSET_SERIAL := 3;
var str := " " + CStr(CInt(amount));
var outpkt2 := CreatePacket(BUFF_CMD, MSGLEN_VARIABLE);
outpkt2.SetInt16(OFFSET_MSGLEN, outpkt2.GetSize());
outpkt2.SetInt32(OFFSET_SERIAL, who.serial);
outpkt2.SetInt16(7, icon); // Icon Nr.
outpkt2.SetInt8(9, 0);
outpkt2.SetInt8(10, turn); //2 additional data, 1 add, 0 remove
outpkt2.SetInt32(11, 0);
outpkt2.SetInt16(15, icon); // Icon Nr.
outpkt2.SetInt8(17, 0);
outpkt2.SetInt8(18, turn); //2 additional data, 1 add, 0 remove
if(turn)
outpkt2.SetInt32(19, 0);
outpkt2.SetInt16(23, duration);
outpkt2.SetInt16(25, 0x0);
outpkt2.SetInt8(27, 0x0);
outpkt2.SetInt32(28, cliloc1);
outpkt2.SetInt32(32, cliloc2);
outpkt2.SetInt32(36, 0x0);
outpkt2.SetInt8(40, 0x0);
outpkt2.SetInt8(41, 0x1);
outpkt2.SetUnicodeStringFlipped(42,CAscZ(str),1);
endif
outpkt2.SendPacket(who);
endfunction
Re: Buff Icon Window
RusseL, thank u for the answer.
Tell me please, what I must add into uopacket.cfg?
And this function isn't exported?
Tell me please, what I must add into uopacket.cfg?
And this function isn't exported?
Re: Buff Icon Window
Just create an include file and call
BuffOn function from your script (protection spell for example)
BuffOn function from your script (protection spell for example)
Re: Buff Icon Window
RusseL, there is an error when I cast spell over self:
What I did:
I have added to Cast Script
var buff_icons := BuffOn(cast_on, spelldata.cfg_elem.name, mod_amount, duration);
before this:
DoTempMod(cast_on, str_mod, mod_amount, duration, mod_type);
spelldata.cfg_elem.name - is name of spell, example Agility
At thoose cast script and in function BuffOn() I have added check for it
And when I cast over self this spell, there is:
bufficonwindow.inc | buff agility
I have added check to:
And there is same error.
Code: Select all
bufficonwindow.inc | !send_buff error{ errortext = "Object does not support mem
bers" }
spellcast.inc | buff_icons.errortext error{ errortext = "Object does not suppor
t members" }
I have added to Cast Script
var buff_icons := BuffOn(cast_on, spelldata.cfg_elem.name, mod_amount, duration);
before this:
DoTempMod(cast_on, str_mod, mod_amount, duration, mod_type);
spelldata.cfg_elem.name - is name of spell, example Agility
At thoose cast script and in function BuffOn() I have added check for it
Code: Select all
print(" spellcast.inc | spelldata.cfg_elem.name " + spelldata.cfg_elem.name );
print(" bufficonwindow.inc | buff " + lower(buff) );
bufficonwindow.inc | buff agility
I have added check to:
Code: Select all
var send_buff := SendBuffPacket(who, 1, CInt(amount), CInt(duration), icon, cliloc1, cliloc2);
if( !send_buff )
print(" bufficonwindow.inc | !send_buff " + send_buff.errortext );
endif
Re: Buff Icon Window
Because BuffOn returns nothing, so your buff_icons variable is everytime false.
BuffOn is an example how it works. You should modify BuffOn function and add default case, return 0 or 1 etc.
BuffOn is an example how it works. You should modify BuffOn function and add default case, return 0 or 1 etc.
Re: Buff Icon Window
I tried many variations.. nothing! Error, error... Argh!
I have added:
return array{icon, cliloc1, cliloc2};
or
return SendBuffPacket(who, 1, CInt(amount), CInt(duration), icon, cliloc1, cliloc2);
Nothing!
If not hard, laid out ready version please.
I have added:
return array{icon, cliloc1, cliloc2};
or
return SendBuffPacket(who, 1, CInt(amount), CInt(duration), icon, cliloc1, cliloc2);
Nothing!
If not hard, laid out ready version please.
Re: Buff Icon Window
Code: Select all
function BuffOn(who, buff, amount, duration)
var icon, cliloc1, cliloc2;
if(who.isa(POLCLASS_NPC))
return 0;
endif
var cv := who.clientversion;
var cvcheck := SplitWords(cv, ".");
if(Cint(cvcheck[1]) < 5)
return 0;
else
if(Cint(cvcheck[1]) == 5)
if(Cint(cvcheck[2]) == 0)
if(Cint(cvcheck[3][1]) < 2)
return 0;
endif
endif
endif
endif
case(lower(buff))
"reactivearmor":
icon := 1028;
cliloc1 := 1075812;
cliloc2 := 1062495;
"protection":
icon := 1029;
cliloc1 := 1075814;
cliloc2 := 1062495;
"magicreflection":
icon := 1031;
cliloc1 := 1075817;
cliloc2 := 1062495;
"polymorph":
icon := 1035;
cliloc1 := 1075824;
cliloc2 := 1062495;
"paralyze":
icon := 1037;
cliloc1 := 1075827;
cliloc2 := 1075828;
"clumsy":
icon := 1040;
cliloc1 := 1075831;
cliloc2 := 1062495;
"feeblemind":
icon := 1041;
cliloc1 := 1075833;
cliloc2 := 1062495;
"weaken":
icon := 1042;
cliloc1 := 1075837;
cliloc2 := 1062495;
"curse":
icon := 1043;
cliloc1 := 1075835;
cliloc2 := 1062495;
"agility":
icon := 1045;
cliloc1 := 1075841;
cliloc2 := 1062495;
"cunning":
icon := 1046;
cliloc1 := 1075843;
cliloc2 := 1062495;
"strength":
icon := 1047;
cliloc1 := 1075845;
cliloc2 := 1062495;
"bless":
icon := 1048;
cliloc1 := 1075847;
cliloc2 := 1062495;
"regeneration":
icon := 1009;
cliloc1 := 1044106;
cliloc2 := 1075106;
"nightsight":
icon := 1005;
cliloc1 := 1075643;
cliloc2 := 1075644;
"archprotection":
icon := 1030;
cliloc1 := 1075816;
cliloc2 := 1075816;
"incognito":
icon := 1032;
cliloc1 := 1075819;
cliloc2 := 1075820;
"invisibility":
icon := 1036;
cliloc1 := 1075825;
cliloc2 := 1075826;
"poison":
icon := 1038;
cliloc1 := 0x0F8627;
cliloc2 := 0x1069B1;
default:
return error{"errortext" := "Spell not found"};
endcase
SendBuffPacket(who, 1, CInt(amount), CInt(duration), icon, cliloc1, cliloc2);
TimeToBuffOff(who, buff, duration);
return 1;
endfunction
function SendBuffPacket(who, turn, amount, duration, icon, cliloc1, cliloc2)
const BUFF_CMD := 0xDF;
const OFFSET_MSGLEN := 1;
const OFFSET_SERIAL := 3;
var str := " " + CStr(CInt(amount));
var outpkt2 := CreatePacket(BUFF_CMD, MSGLEN_VARIABLE);
outpkt2.SetInt16(OFFSET_MSGLEN, outpkt2.GetSize());
outpkt2.SetInt32(OFFSET_SERIAL, who.serial);
outpkt2.SetInt16(7, icon); // Icon Nr.
outpkt2.SetInt8(9, 0);
outpkt2.SetInt8(10, turn); //2 additional data, 1 add, 0 remove
outpkt2.SetInt32(11, 0);
outpkt2.SetInt16(15, icon); // Icon Nr.
outpkt2.SetInt8(17, 0);
outpkt2.SetInt8(18, turn); //2 additional data, 1 add, 0 remove
if(turn)
outpkt2.SetInt32(19, 0);
outpkt2.SetInt16(23, duration);
outpkt2.SetInt16(25, 0x0);
outpkt2.SetInt8(27, 0x0);
outpkt2.SetInt32(28, cliloc1);
outpkt2.SetInt32(32, cliloc2);
outpkt2.SetInt32(36, 0x0);
outpkt2.SetInt8(40, 0x0);
outpkt2.SetInt8(41, 0x1);
outpkt2.SetUnicodeStringFlipped(42,CAscZ(str),1);
endif
outpkt2.SendPacket(who);
endfunction
function BuffOff(who, buff)
var icon, cliloc1, cliloc2;
if(who.isa(POLCLASS_NPC))
return 0;
endif
var cv := who.clientversion;
var cvcheck := SplitWords(cv, ".");
if(Cint(cvcheck[1]) < 5)
return 0;
else
if(Cint(cvcheck[1]) == 5)
if(Cint(cvcheck[2]) == 0)
if(Cint(cvcheck[3][1]) < 2)
return 0;
endif
endif
endif
endif
case(lower(buff))
"reactivearmor":
icon := 1028;
cliloc1 := 1075812;
cliloc2 := 1062495;
"protection":
icon := 1029;
cliloc1 := 1075814;
cliloc2 := 1062495;
"magicreflection":
icon := 1031;
cliloc1 := 1075817;
cliloc2 := 1062495;
"polymorph":
icon := 1035;
cliloc1 := 1075824;
cliloc2 := 1062495;
"paralyze":
icon := 1037;
cliloc1 := 1075827;
cliloc2 := 1075828;
"clumsy":
icon := 1040;
cliloc1 := 1075831;
cliloc2 := 1062495;
"feeblemind":
icon := 1041;
cliloc1 := 1075833;
cliloc2 := 1062495;
"weaken":
icon := 1042;
cliloc1 := 1075837;
cliloc2 := 1062495;
"curse":
icon := 1043;
cliloc1 := 1075835;
cliloc2 := 1062495;
"agility":
icon := 1045;
cliloc1 := 1075841;
cliloc2 := 1062495;
"cunning":
icon := 1046;
cliloc1 := 1075843;
cliloc2 := 1062495;
"strength":
icon := 1047;
cliloc1 := 1075845;
cliloc2 := 1062495;
"bless":
icon := 1048;
cliloc1 := 1075847;
cliloc2 := 1062495;
"regeneration":
icon := 1009;
cliloc1 := 1044106;
cliloc2 := 1075106;
"nightsight":
icon := 1005;
cliloc1 := 1075643;
cliloc2 := 1075644;
"archprotection":
icon := 1030;
cliloc1 := 1075816;
cliloc2 := 1075816;
"incognito":
icon := 1032;
cliloc1 := 1075819;
cliloc2 := 1075820;
"invisibility":
icon := 1036;
cliloc1 := 1075825;
cliloc2 := 1075826;
"poison":
icon := 1038;
cliloc1 := 0x0F8627;
cliloc2 := 0x1069B1;
default:
return error{"errortext" := "Spell not found"};
endcase
SendBuffPacket(who, 0, 0, 0, icon, cliloc1, cliloc2);
endfunction
function TimeToBuffOff(who, buff, duration)
if (duration <= 0)
duration := 0;
endif
detach();
sleep(duration);
BuffOff(who, buff);
endfunction
Re: Buff Icon Window
RusseL, thank u very much! I have tried to start it, but, in clientversion there is some trouble.
I use 7.0.3.0 client and when check goes, it's always return 0;
I have added /* */ to all code with client version, and added:
What we have:
And there is after when buff decreases
I use 7.0.3.0 client and when check goes, it's always return 0;
I have added /* */ to all code with client version, and added:
Code: Select all
var send_buff := SendBuffPacket(who, 1, CInt(amount), CInt(duration), icon, cliloc1, cliloc2);
if( !send_buff )
print(" bufficon.inc | send_buff " + send_buff.errortext );
print(" bufficon.inc | buff " + lower(buff) );
print(" bufficon.inc | amount " + CInt(amount) );
print(" bufficon.inc | duration " + CInt(duration) );
print(" bufficon.inc | icon " + icon );
print(" bufficon.inc | cliloc1 " + cliloc1 );
print(" bufficon.inc | cliloc2 " + cliloc2 );
endif
Code: Select all
bufficon.inc | cvcheck error{ errortext = "Object does not support members" }
bufficon.inc | buff cunning
bufficon.inc | amount 81
bufficon.inc | duration 783
bufficon.inc | icon 1046
bufficon.inc | cliloc1 1075843
bufficon.inc | cliloc2 1062495
Last edited by Harley on Fri May 23, 2014 2:19 am, edited 1 time in total.
Re: Buff Icon Window
You can just remove this version check code if you are sure every player using client > 5
Re: Buff Icon Window
Yes, I just have done this!
Re: Buff Icon Window
Code: Select all
var send_buff := SendBuffPacket(who, 1, CInt(amount), CInt(duration), icon, cliloc1, cliloc2);
if( !send_buff )
It's just a nonsense.
Function SendBuffPacket returns FALSE everytime. It doesnt make any sense to check it.
Re: Buff Icon Window
Understood, but how can I activate this buff? After cast on me, on my screen nothing appears..RusseL wrote:What for is this check there?Code: Select all
var send_buff := SendBuffPacket(who, 1, CInt(amount), CInt(duration), icon, cliloc1, cliloc2); if( !send_buff )
It's just a nonsense.
Function SendBuffPacket returns FALSE everytime. It doesnt make any sense to check it.
Re: Buff Icon Window
Turn on ToggleBuffIconWindow in your client. (Press STATUS @ Paperdoll, and then click at blue gem on the left side of status gump)
You must have this 'corner' gump on your screen.
You must have this 'corner' gump on your screen.
Re: Buff Icon Window
At first step & have added
Then I clicked at Nothing..
Then at And nothing...
Maybe I don't have some packethook or some else.. please help!
And tell me please, how u use it?
Then I buffed myself and - Alt+A - nothing happened.Then I clicked at Nothing..
Then at And nothing...
Maybe I don't have some packethook or some else.. please help!
And tell me please, how u use it?
Re: Buff Icon Window
Okay, after some experiments, I have //TimeToBuffOff(who, buff, duration); and what I have this:
Any ideas?
and it appears or does not appear..Any ideas?
Re: Buff Icon Window
I would say you have problems with your client (muls)
It doesn't look like a screenshot from your first message
if you press at this blue gem, you must see this 'corner' gump somewhere.
If not - your client is broken.
It doesn't look like a screenshot from your first message
if you press at this blue gem, you must see this 'corner' gump somewhere.
If not - your client is broken.
Re: Buff Icon Window
RusseL, what packet hook do u use, that actived this button? Maybe some stats hook? Only thoose sendpacket that u have upload with function, or somebody else?
And I have check, yeap, this button works, but only 2 buffs displayed - cunning and agility.
But there is no that 2 small gold lines, like u have.
With best regards!
And I have check, yeap, this button works, but only 2 buffs displayed - cunning and agility.
But there is no that 2 small gold lines, like u have.
With best regards!
Re: Buff Icon Window
It is completely clientside, you do not need any hook to open it.Harley wrote:RusseL, what packet hook do u use, that actived this button? Maybe some stats hook? Only thoose sendpacket that u have upload with function, or somebody else?
Re: Buff Icon Window
I'm trying to lead client files in order and after tests I'll write here. Thank u for ur answer!
Re: Buff Icon Window
RusseL, I have tried an original client of UO and there is same problem.
I have found other Buff Function in Fantasia Server by Edwards:
This function is from package timedScripts.
There are full system of that buff packet, and I'm try to compile only subject functions, but not really lucky..
Maybe something wrong with packets?I have found other Buff Function in Fantasia Server by Edwards:
Code: Select all
/*
Created by *Edwards
For FantasiaShard.com
Edwards@FantasiaShard.com
2010-09-26
*/
use uo;
use polsys;
function UpdateBuffIcon( mobile, byref cfg_elem, byref event )
var buff_icon := CInt( cfg_elem.BuffIcon );
if( buff_icon )
var level := event.level,
amount := event.amount;
SendBuffIcon( mobile, buff_icon, level, amount );
endif
return 1;
endfunction
function SendBuffIcon( mobile, icon, modifier, duration )
if( mobile.IsA( POLCLASS_NPC ))
return 0;
endif
var show := 0;
if( duration )
show := 1;
endif
var packet := CreatePacket( 0xDF, MSGLEN_VARIABLE );
packet.SetInt32( 3, mobile.serial );
packet.SetInt16( 7, icon );
packet.SetInt16( 9, show );
if( show )
var clilocs := GetClilocsInfo( icon ),
cliloc_name := clilocs[1],
cliloc_desc := clilocs[2];
packet.SetInt16( 15, icon );
packet.SetInt16( 17, show );
packet.SetInt16( 23, duration );
packet.SetInt32( 28, cliloc_name );
packet.SetInt32( 32, cliloc_desc );
var text := "",
i;
for( i:=1; i<=3; i+=1 )
text := text+"\t";
text := text+CStr( modifier );
SleepMS(4);
endfor
packet.SetUnicodeStringFlipped( 42, CAscZ( text ), 1 );
var Length_ID := packet.GetSize();
packet.SetInt16( Length_ID, 0x1 );
endif
packet.SendPacket( mobile );
return 1;
endfunction
function GetClilocsInfo( icon )
var cliloc_name,
cliloc_desc;
case( icon )
1028: //ReactiveArmor
cliloc_name := 1075812;
cliloc_desc := 1042971;
break;
1029: //Protection
cliloc_name := 1075814;
cliloc_desc := 1075815;
break;
1035: //Polymorph
cliloc_name := 1075824;
cliloc_desc := 1075820;
break;
1040: //Clumsy
cliloc_name := 0x106a77;
cliloc_desc := 0x106a78;
break;
1041: //Feeblemind
cliloc_name := 0x106a79;
cliloc_desc := 0x106a7a;
break;
1042: //Weaken
cliloc_name := 1075837;
cliloc_desc := 1075838;
break;
1043: //Curse
cliloc_name := 1075835;
cliloc_desc := 0x106a88;
break;
1045: //Agility
cliloc_name := 0x106a81;
cliloc_desc := 0x106a82;
break;
1046: //Cunning
cliloc_name := 0x106a83;
cliloc_desc := 0x106a84;
break;
1047: //Strength
cliloc_name := 0x106a85;
cliloc_desc := 0x106a86;
break;
1048: //Bless
cliloc_name := 0x106a87;
cliloc_desc := 0x106a88;
break;
1037: //Paralyze
cliloc_name := 1075827;
cliloc_desc := 1075828;
break;
1036: //Invisibility
cliloc_name := 1075825;
cliloc_desc := 1075826;
break;
endcase
return array{cliloc_name, cliloc_desc};
endfunction
There are full system of that buff packet, and I'm try to compile only subject functions, but not really lucky..
Re: Buff Icon Window
Turley, maybe u will tell me that secret what have u did with cliloc & gumps? And maybe u'll share it?Turley wrote:http://docs.polserver.com/packets/index.php?Packet=0xDF
With some modifications in your cliloc and gumps you can completely use it for your own magery system, that's what I did. Pretty much straightforward the packet itself.
And if it's not hard, share your functions please.
With best regards!
Re: Buff Icon Window
Everything is fine with packet.Harley wrote:RusseL, I have tried an original client of UO and there is same problem.
Maybe something wrong with packets?
I have found other Buff Function in Fantasia Server by Edwards:
Here is a video for you, i use the same function.
http://youtu.be/IK6b6sKlV7I