/
core-changes.txt
7105 lines (6091 loc) · 371 KB
/
core-changes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
-- POL100 --
09-07-2018 DevGIB:
Changed: FindObjtypeInContainer(container, objtype, flags :=0 ) to recurse all containers from base container.
Added: Constants FINDOBJTYPE_RECURSIVE, FINDOBJTYPE_IGNORE_LOCKED and FINDOBJTYPE_ROOT_ONLY to UO.EM
Added: Flags to FindObjtypeInContainer() for only accessing root container, and bypassing locked container checks.
Note: THESE CHANGES TO FindObjtypeInContainer() WILL EFFECTIVELY CHANGE THE DEFAULT FUNCTIONALITY OF THE FUNCTION AS DEFAULT IS NOW TO RECURSE SUB CONTAINERS.
Added: Additional documentation to the Racalac escript guide to include additional information supplied by Yukiko.
07-27-2018 DevGIB:
Added: ListStaticsNearLocationOfType( x, y, z, range, objtype, flags := 0, realm := _DEFAULT_REALM ) to get a struct of statics near a location which match an objtype.
Added: ListStaticsNearLocationWithFlag( x, y, z, range, flags, realm := _DEFAULT_REALM ) to get a struct of statics near a location which have matching flags in the tiledata.
07-29-2018 Turley:
Added: ecompile.cfg NumberOfThreads
forces N number of threads to be used for compilation, default is 0 which like before autodetects the number.
cmd param -T can now be optionally extended with a number to override the cfg setting
07-19-2018 DevGIB:
Added: EncodeBase64(String) and DecodeBase64(String) to basic.em to enable people to encode and decode strings using base64 without requiring an escript function.
04-02-2018 Bodom:
Removed: polcore().compiledate and polcore().compiletime
Added: polcore().compiledatetime
03-19-2018 Nando:
Fixed: Crash at shutdown when POL hasn't been correctly started.
02-26-2018 Nando:
Added: uoconvert now supports UOP files and will use them by default. If there is no
map[N]LegacyMUL.uop in the UODataFileRoot, uoconvert will fall back to the
old map[N].mul files. You can force uoconvert to convert from the old MULs by using
readuop=0.
02-10-2018 Nando:
Changed: POL099 is officially released after almost 10 years. Starting the work on POL100.
-- POL099.1 --
02-11-2018 Nando:
Added: range parameter to Accessible(chr, item, range := ACCESSIBLE_DEFAULT).
Valid values: range >= 0, range == ACCESSIBLE_DEFAULT or range == ACCESSIBLE_IGNOREDISTANCE.
The default range will be defined as the servspecopt entry "DefaultAccessibleRange". If that
entry doesn't exist, the "DefaultDoubleclickRange" will be used instead (which defaults to 2).
Fixed: Accessible(chr, item) now checks for the distance to the item. Differently from the distance
of 2 tiles the docs stated, the allowed distance before was about 18 tiles. To recover the old behavior,
use ACCESSIBLE_IGNOREDISTANCE as range.
-- POL099 --
02-06-2018 Turley:
Fixed: fileaccess.cfg: Not specifying Directory entry behaves like before and gives access to all directories. (broken since 01-05-2018)
02-05-2018 Turley:
Added: Operator @
used to receive a function object, which can later be used to call the underlying function with the same parameters/return value via the method ".call(..)"
Note: This object can only executed in the same script instance where it was created and cannot be saved/loaded from datafiles/cprops.
Note: Use cases:
function genericItemLoop(func)
for item in ...
// complicated checks
func.call(item);
endfor
endfunction
function changecolor(item)
item.color:=6;
endfunction
...
genericItemLoop(@changecolor);
genericItemLoop(@changeY);
// (fast) function table, instead of "if" cascade
var look=dictionary;
look["blubb"]:=@doSomething
look["blah"]:=@doSomethingElse
...
look[mykey].call();
Changed: Version number of ecl files, recompilation needed.
01-07-2018 Kevin:
Added: basic::UnpackJSON(string)
Given a string in JSON format, returns an eScript object representing that JSON value.
Added: basic::PackJSON(expr)
Given an eScript expression (Int, Dbl, String, Array, Struct, Dict), returns a serialization of the object in JSON format.
01-05-2018 Turley:
Added: fileaccess.cfg Directory entry
Can be definied multiple times in package syntax.
::config means config rootfolder, :mypkg:test means subfolder test of mypkg. Has only a meaning if AllowRemote is given. Limits the access to given folder and its subfolders.
Added: New type Boolean
== != ! operators are implemented
use new basic.em function Boolean(1/0) to create such type.
see testsuite/escript/boolean in the sources for detailed scripts of what is possible.
01-04-2018 Kevin:
Added: os::HTTPRequest(url, method := "GET", options := struct{})
Creates an HTTP request, and returns the returned data as a string.
12-23-2017 Turley:
Added: os:PerformanceMeasure(delta_seconds, max_scripts)
Monitors for given number of seconds the instructions of all scripts. Returns:
struct with the following members:
total_number_observed - number of scripts alive in the timespan
total_instructions - sum of all instructions of the observed scripts
scripts - array of structs (max number is given max_scripts param) sorted by instructions amount
each scripts entry has the following members:
name - script name, if attached with name/npctemplate
instructions - number of executed instructions
pid - PID of the script
percent - percent of the total instruction amount
12-20-2017 Turley:
Changed: Doubled the speed of custom method resolution.
10-20-2017 DevGIB:
Changed: Added assume_string flag to OS::OpenConnection() to allow you to force the connection script to run as AUXSVC_ASSUME_STRING script option before the script loads in case of fast responding connections.
10-11-2017 DevGIB:
Changed: Added params to OS::OpenConnection() to allow you to pass parameters to the script that is run for the connection.
09-23-2017 Turley:
Added: array.sort(int sub_index:=0) the optional parameter specifies the index used for sorting in the case of an array of arrays
09-10-2017 Turley:
Added: poltool uncompressgump
unpacks and prints content of a compressed gump
only parameter is a filename, which needs to contain a single 0xDD packetlog
Added: item member no_drop 1/0 r/w (itemdesc NoDrop)
if set no drop of this item is allowed
container/npc member no_drop_exception 1/0 r/w
(itemdesc/npctemplate NoDropException)
if set this container/npc is a valid target even if no_drop is set for the item
08-03-2017 Nando:
Fixed: Shutdown crash when using character method scripts.
07-31-2017 Nando:
Fixed: Interactive commands could cause a crash when used inside a run-to-completion script
(e.g., syshooks, scripts ran via OS::run_script_to_completion() and method scripts). The
interactive commands will now return an error if the script can't be blocked.
(Note: this does not apply to critical scripts, which *can* block).
Affected commands:
UO::Target(), UO::TargetCoordinates(), UO::TargetMultiPlacement(), UO::SelectMenuItem(),
UO::SendDialogGump(), UO::SendGumpMenu(), UO::SendTextEntryGump(), UO::SendInstaResDialog(),
UO::SelectColor(), UO::SendPopupMenu(), UO::RequestInput(), Unicode::RequestInputUC()
07-23-2017 DevGIB:
Added: _DEFAULT_TEXT_REQUIREDCMD := 0 to uo.em which allows to set a minimum cmd level that broadcasts will be sent to.
Changed: Broadcast( text, font := _DEFAULT_TEXT_FONT, color := _DEFAULT_TEXT_COLOR, requiredcmdlevel := _DEFAULT_TEXT_REQUIREDCMD )
adding requiredcmdlevel argument which allows you to set a minimum cmd level that the broadcast will be sent to.
Changed: No longer require a PID for GetProcess( pid := "" ), not selecting a PID will use the PID of the parent script.
07-17-2017 Kevin:
Fixed: PrintTextAbove*CL() now behaves similarly to PrintTextAbove*() functions, displaying the
object's description instead of "System".
05-28-2017 Turley:
Removed: pol.cfg entry to disable assertions. A crash will anyway happen, thus it makes no sense and only hides the real reason.
05-28-2017 Nando:
Fixed: Crash when using SplitWords() in a script that was compiled with outdated .em files.
05-01-2017 Turley:
Fixed: Item.house property gets now reset on component remove
11-29-2016 Boberski:
Added: Support for TOL (Time of Legends) expantion.
10-23-2016 Nando:
Added: Member character.carrying_capacity (read only)
Returns the current carrying capacity of a character, defined as:
(40 + 3.5*STR + chr.carrying_capacity_mod)*ssopt.carrying_capacity_mod
Note: Characters can go above their carrying_capacity, but they will spend
much more stamina to move according to movecost.cfg. Don't treat this
as max_weight.
08-28-2016 Turley:
Fixed: Calculation of NPC AOS resistance/damage values
Added: Member object.specific_name
returns 1 if a custom name is set. if its still the original (eg itemdesc) returns 0
03-27-2016 Nando:
Added: Option "ThreadStacktracesWhenStuck" to pol.cfg. Useful to debug the core when
no clock movement occurs for more than 30 seconds. Defaults to false.
03-25-2016 Nando:
Fixed: Crashes when receiving very big packets.
03-24-2016 Nando:
Fixed: Crashes after deleting a component (hold, tillerman, plank) of a boat
03-23-2016 Nando:
Fixed: Possible crashes when a script teminates while executing a SQL command.
03-21-2016 Nando:
Fixed: Possible crashes when handling a client's response to menus
created with CreateMenu()
03-02-2016 Nando:
Changed: POL will default to use multithreading (Multithread = 1 in pol.cfg).
Note: Multithread=0 is deprecated and likely buggy. It's possible that it doesn't
even work at the moment. Because every OS should support threading by now,
we see no reason to maintain two separate systems. Singlethread support will
be removed in the next version.
03-02-2016 Nando & Turley:
Fixed: Possible crashes when sending events to npcs whose event queues were full.
02-29-2016 Nando & Turley:
Fixed: Data races when dealing with clients. Some other not-reproducible crashes
should also go away now.
02-15-2016 Nando:
Changed: UO::SendQuestArrow(x := -1, y := -1, target := "")
This function will now work for HSA clients (version > 7.0.9), which
require a larger packet. Target is ignored for older clients, but is
required (and must be a valid Item or Character reference) for HSA
clients.
Added: UO::SingleClick(who, what)
This function will emulate a single-click from the client, sending
the character name, guild and tags or the item description. Note
that the client may display the item description wherever it had
clicked before. "what" can be either a serial, item or character.
01-31-2016 Bodom:
Added: CProp profiler: helps detecting unused CProps.
It can be enabled by using the new pol.cfg option "ProfileCProps".
For better results, should be enabled before startup.
Impacts on performance very slightly, but consumes an average of
300 bytes of extra RAM for every CProp used.
New polsys.em function LogCPropProfile() can be called to dump
the profiling information into cpprofile.log.
01-30-2016 Bodom & Nando:
Fixed: Spoofing prevention on packet 0xD7 (custom housing)
01-22-2016 Bodom:
Fixed: Minor bug in ecompile allowing Double literals in the form "2d4".
These were incorrectly interpreted as "2e4", meaning 20000 and
leading to confusion with dice rolls. The compiler now issues
an error instead.
01-20-2016 Bodom:
Added: New Item.house property, returns a reference to the house if the
item is a component of it (listed in House.components()).
This is the intended replacement for the previously removed CProp
"house_serial": use item.house.serial instead of
GetObjProperty(item, "house_serial").
12-27-2015 Bodom & Nando:
Fixed: Linux crash on shutdown
12-26-2015 Bodom:
Fixed: Bug in String.format()
String tags were not correctly processed.
"{name} you hit level {level}".format(struct{name:="Jane Doe", level:=4})
now correctly formats as "Jane Doe you hit level 4" instead of
"Jane Doe you hit level <invalid index: #2>"
12-18-2015 Bodom:
Added: New eScript escape sequence in strings "\xAA". Allows to specify a
single character by its binary value (\x01 to \xFF). The value must
always be 2 digits long, in hex, case insensitive (eg. \xA is not
valid).
12-05-2015 Bodom:
Added: Buff Bar support
New Character's addBuff(), delBuff() and clearBuffs() methods,
please see docs for details and explanation.
0xDF packets are automatically sent when needed (eg. at relogin).
Buff Bar status is not saved, maybe it will be in future.
11-28-2015 Bodom:
Added: New Client object properties last_packet_at and last_activity_at
11-01-2015 Bodom:
Added: mysql_query() now supports a third "parameters" (array) argument.
It can be used to safely replace "?" placeholders inside the query
with corresponding array entries.
10-27-2015 Bodom:
Added: New pol.cfg option AllowMultiClientsPerAccount (default: false)
When true, allows multiple characters from the same account to be
logged in at the same time
Fixed: Items' CProps were loaded again from itemdesc.cfg at startup when deleted
10-18-2015 Bodom:
Fixed: MoveItemToContainer could stack non-stackable items in some circumstances
10-07-2015 Bodom:
Removed: "house_serial" CProp is no longer set by core for house components
Fixed: Exception when editing a custom house with components outside of the
house
10-06-2015 Bodom:
Fixed: Fixed crash condition (stack overflow) when unequipping last armor
piece weared by an NPC and then receiving an hit.
Changed: Intrinsic armor now takes precedence over equipped armor (is was the
opposite before). Anyway, using both of them could lead to unexpected
behavior so it is not a good pratice.
10-02-2015 Bodom:
Added: Intrinsic Shield support, works just like intrinsic weapons
New extobj.cfg entry "Shield" (defaults to 0x1F022)
New item must be defined in itemdesc.cfg
// Intrinsic Shield template - special pseudo Shield for NPCs
Armor 0x1F022
{
Name intrinsicshield
Graphic 1
MaxHP 1
SaveOnExit 0
}
09-30-2015 Bodom:
Added: MoveItemToContainer parameter add_to_existing_stack can now be 2 for "auto" behavior
The function will try to add the item to an existing stack and just try move the
item inside the container if no stack is found
09-29-2015 Bodom:
Fixed: When a robe is already equipped before resurrect, no longer destroy it to
equip the death robe
Fixed: When HonorUnequipScriptOnDeath is on, item's unequip and unequiptest scripts
were called twice on death and in the wrong order
09-27-2015 Bodom:
Fixed: Armor were not calculated correctly for NPCs wearing equip
Fixed: Allow changing graphic of equipped items again if the new graphic has the same layer
09-25-2015 Bodom:
Added: New uo.em function SendPopUpMenu( to, above, menu ).
Added: On pop-up menu request (single click) "misc/popupmenu.ecl" is called.
Fixed: When using MapDiff, tiles could disappear in some circumstances
09-24-2015 Bodom:
Added: New keyword AttackCProp on npcdesc.cfg allows defining CProps for
intrinsic weapons.
Fixed: Hp/MaxHp updates to nearby clients were still using the real value
instead of the 1000-based ratio when sending the 0xa1 packet.
Fixed: Hp/MaxHp updates were sent twice to the originating character.
09-12-2015 Bodom:
Fixed: Bug in loading POL098 and older data files: boats were rotated leaving
dynamic elements like plank and tillerman on the old position.
09-08-2015 Bodom:
Fixed: Bug in LAN IP address identification (some IPs in 172.16.0.0/12 were skipped)
09-06-2015 Nando:
Added: Data integrity check will test if the item serial is valid (serial >= 0x40000000) when loading items.
Fixed: Items could be created with character serials if the wrong values were saved in data/pol.txt.
Note: Character serials must be in the range 1 to 0x3FFFFFF (inclusive), while item serials must
be between 0x40000000 and 0x7FFFFFFF (inclusive).
09-06-2015 Bodom:
Added: New Item.process property
Returns reference to the controlscript, if any running
Changed: Script.attached_to now returns a reference to the Item when called on a ControlScript
Added: New servspecopt.cfg option DefaultCharacterHeight (1-32)
This will be the default (and never changed so far) height of Characters
and NPCs. Default value is 15. Back in the POL095 days is was 9, so consider
9-15 as your "safe" play range. Anything outside that range could cause weird
movement behavior. Even small changes will have a great impact on LOS
calculations and, more in general, on the combat system.
It is also used to calculate wether a Character can fit under a low
passage (e.g. dungeon stairs).
Keep in mind a Titan and a Slime will have the same height.
09-05-2015 Bodom:
Changed: Process ids (pid) no longer start from 1 but from 0x01000000.
This should have no practical effect.
Added: Allow specifying an arbitrary Gump id in SendDialogGump()
Custom gump ids must be in the range 1-0xFFFFFF. If no gumpid is given,
the old behavior of using the pid will still be used (so that this
does not break backward compatibility).
It is now possible to organize the gumpids in a constants file and have
the same gump to always be sent with the same id. This way the client
will recognize it and, if the player moved it last time, it will
reposition it where the player liked it: this should be a nice
interface improvement.
It is now possible to implement the Virtues gump, since it needs a
pre-defined gumpid of 0x01CD to work.
Changed: CloseGump() now accepts a gumpid instead of a pid. For scripts not
using custom gump ids, its behavior is the same as before.
09-03-2015 Bodom:
Added: Item insurance support, new Item.insured property (0/1)
An insured item behaves on death like a newbie item, except that the insured flag gets reset back
to 0 after every death. If the item for some reason (e.g. when backpack is full) will get dropped
instead, the insured flag will be reset anyway. Insured items are not stackable with normal items
but they can still be sold to vendors.
Hint: this feature can also be used in conjunction with CanDie sys hook to determine via script which
items a player will drop on death; since the CanDie hook is called exactly one moment before death you
can use it to insure the items that you don't want to fall on the corpse.
Added: RepSys NameColor and HighLightColor hooks can now return -1 to let the core run the builtin code.
08-27-2015 Bodom:
Added: New eScript keyword: unused
This keyword can now be added before a variable name in function or program block declarations.
It has no effect on the resulting compiled code, but instructs the compiler not to issue a warning if
the following variable will not be used. The compiler will instead fire a warning if the interested
variable will then be used later in the code. Examples:
program onremovescript( character, container, unused item, unused item_amount, movetype )
// Here the variables item and item_amount are needed in the program declaration but will not be used,
// the unused keyword prevents warnings to be triggered
endprogram
function myfunc( parameter1, unused parameter_for_future_use )
// Same as above: parameter_for_future_use is not used and unused prevents the warning message
endfunction
07-27-2015 Turley:
Added: array.cycle([count])
will move array backwards or forwards in-place as it were a conveyor belt.
{1, 2, 3}.cycle()
Will make it:
{3, 1, 2}
Accepts a negative value as a shift to move different direction
Changed: string.format()
Now actually faster than string concatenation in eScript
Fixes a bug where {:d} formating could cause an arbitrary number shown instead of a real value
tag errors are slightly more intuitive and compact.
Note: Patches submitted by andenixa
02-08-2015 Turley:
Added: PolCore().memory_usage member, returns current process usage in KB
Changed: 0xF1 Freeshard list pkt is now allowed during login state,
thus its possible to create eg a UOGateway pkthook for this pkt
01-31-2015 Turley:
Added: uo::ListMobilesInBox( x1,y1,z1, x2,y2,z2, realm := _DEFAULT_REALM )
like ListObjectsInBox but returns only mobiles.
Changed: uo::List*InBox functions accept as z parameters LIST_IGNORE_Z
Thx @ andenixa
Added: uo::GetMidpointCircleCoords( xcenter, ycenter, radius )
based on given center coordinates and radius returns array of x,y structs which represent a circle
Thx @ andenixa
The array of coordinates is sorted, which means that its easily possible to only use every second point
09-12-2014 Nando:
Fixed: Client crash with clients older than 7.0.9.0 but newer than 7.0.0.0, because of wrong size in
boat movement packets.
07-12-2014 Nando:
Fixed: Items were not disappearing from the character's backpack after being moved to the corpse.
Fixed: Items were disappearing from the corpse when an equippable item was moved/inserted into it.
11-13-2014 Nando:
Added: EnforceMountObjtype property in pol.cfg. Will enforce that only items with the mount
objtype (as defined in extobj.cfg, default 0x1F021) can be mounted.
Fixed: Inconsistency when handling mount objects that would trigger an assertion for equipping
items with the mount objtype but a bad graphic.
Note: To be equipped as a mount, the item must be in the mount tiles list of uoconvert.cfg.
This ensures that the item has layer 25 and the equippable flag, otherwise it won't
be considered equippable.
11-05-2014 Nando:
Added: polsys::Realms() will now report how many offline mobiles and multis there are.
Added: "ShowRealmInfo" option in pol.cfg (default to false). Will report every once in a while
the number of items, mobiles and multis per realm.
Added: uo::ListOfflineMobilesInRealm(realm) method to return the list of offline mobiles in a
specific realm. Useful for moving the offline mobiles out of a shadow realm before
deleting it.
Fixed: Crash bug when deleting shadow realms while an offline mobile or a multi were still in it.
Fixed: Top-level items were not properly counted when moved between realms.
10-29-2014 Nando:
Fixed: Crash bug when deleting item directly from a corpse.
10-19-2014 Turley:
Added: AnimXlate.cfg for newer clients
Added: example animxlate.cfg:
defines which graphics support mount translation
and per graphic type how to translate animation from older clients to newer (7.0.9.0)
see cfg for description of possible entries.
09-23-2014 Nando:
Changed: Corpses will no longer send the full list of contents before being open. Only the equipped
items will be shown. This should decrease slowdowns in areas with many corpses.
09-21-2014 Nando:
Fixed: Corpses will now equip items that are placed on them, even if they don't have an OnInsert script.
Fixed: Possible crash when items having layers larger than 25 were placed/removed from corpses.
06-07-2014 Tomi:
Fixed: using DestroyItem or SubtractAmount on an item 'gotten' it will now first release the item and then destroy it
Fixed: NPCs looks for players for enter/leftarea events when, these were only looking for npcs
- moved with MoveObjectToLocation function
- on every move
- unhide
- npc creation
Fixed: Destroying an equipped item now calls unequip scripts
Fixed: Changing cmdlevel with chr.cmdlevel := or chr.SetCmdLevel() sends updates correctly to see concealed characters
Old Commits:
Changed: pol.cfg MinCmdLevel checked already during the first accountlogin, so now it doesnt let those connections go all the way to char creation anymore.
Fixed: Crash during character creation where equipment realm was not updated and pol crashed when unequipping/equipping.
Fixed: Setting Enter/Left area event listening for npcs on range 32 did never send the left area on distance 33
05-26-2014 Turley:
Added: character.last_textcolor readonly member returns last textcolor of the character. Values are between 2 and 1001. Returns 0 if not yet spoken.
(will not be saved inside of the datafile)
05-06-2014 Tomi:
Added: Realm entry to startlocs.cfg, The earlier MapID still needed for the client to show the map correctly, but realm is needed for the server to put the character during creation in the correct realm, default value "britannia"
04-05-2014 Turley:
Fixed: multi.items returns now all toplevel items inside of the multi
03-15-2014 Turley:
Changed: sql functions connect, select and query perform the communication part in background while script itself
is stopped (like eg Target()). Which means that these time consuming functions do not block the complete shard.
Removed sql module from runecl, since it no more compatible.
03-01-2014 Nando:
Added: Character.temporally_criminal is true when a criminal timer is running on the character.
Note: The old property chr.criminal stays the same: it is true when the character is temporally
criminal or a murderer.
02-27-2014 Tomi:
Fixed: changing cmdlevel now updates correctly which concealed characters you see
Fixed: crashes when parent script is killed before child script returns
Fixed: crashes when reporting error in an armordesc entry defined in config\itemdesc.cfg
02-25-2014 Tomi:
Added: Boat Smooth move for clients which support it ( HSA+ )
Added: boat.em flags ( These flags are ignored for boat movements sent to old than HSA clients )
const BOAT_SPEED_ONE_TILE := 1;
const BOAT_SPEED_SLOW := 2;
const BOAT_SPEED_MEDIUM := 3;
const BOAT_SPEED_FAST := 4;
Changed: boat.em functions
MoveBoat( boat, facing ) to MoveBoat( boat, facing, speed := BOAT_SPEED_ONE_TILE )
MoveBoatRelative( boat, direction ) to MoveBoatRelative( boat, direction, speed := BOAT_SPEED_ONE_TILE )
Note: The same functions are used to move boats for older and never clients, older clients ignore the speed parameter, but the speed paramter is required for smooth move.
The clientversions are checked in core to determine what type of boat movement will be sent
02-01-2014 Tomi:
Fixed: Customhousing exterior stairs delete is now working, commiting does not readd them anymore
Fixed: Customhousing changing floor is now sending a full msg instead of short msg, so no more synch needed after changing floors until you can start working on it
01-20-2014 Nando:
Added: DisableNagle option in pol.cfg to disable Nagle's algorithm, default to 0. In theory, latency should improve if DisableNagle=1.
01-20-2014 Turley:
Fixed: Made the sql module atleast a bit script friendly. Removed the mysql_free_result function since the result objects automatically get destroyed on scope exit.
Passing the sql objects as function parameters is now also possible. mysql_close is now also senseless, but kept it for anyone who wants to directly close the connection.
Boolean check for the connection object performs now a ping and returns false if the connection is lost (eg. timeout)
12-31-2013 Turley:
Added: Print small backtrace on crash/passert failure, should help a bit without the need of the dump.
Works only under Windows 64bit
Changed: optimized world object storage and usage. Should improve eg pkt sends and scales better.
11-03-2013 Tomi:
Fixed: Container Max Weight works now like it did earlier before _mod changes, all values <= 0 sets it as 0xFFFF max weight
10-25-2013 Turley:
Fixed: newbie flagged backpack caused endless loop on death
10-21-2013 Tomi:
Added: polsys::FormatItemDescription( desc, amount := 1, suffix := "" )
This formats the desc using Pols built in Singular/Plular formatter
10-04-2013 Turley:
Fixed: \= operation
10-01-2013 Tomi:
Fixed: Container.locked works again
09-25-2013 Tomi:
Added: character.DisableSkillsFor( duration ) method to disable skills that are started with start_skill_script or by scritps defined in attributes.cfg for duration ( seconds )
This method overrides the default Delay setting in attributes.cfg if used ( for example if on failing a skill you want no delay just set it to 0 )
This can also be used to disable skills for example during an event or pvp
Added: item.name_suffix for adding crafter marks or such
item.desc returns the formatted name and suffix added to it without formatting if it exists
item.name does not include this suffix, so that can be used to get the item name without formatting and without suffix
09-21-2013 Tomi:
Changed: Pol doesnt send "I am frozen" messages anymore when paralyzed, now it sends in all those cases "I am paralyzed" messages
09-20-2013 Tomi:
Fixed: Invul changes now sends the healthbar color correctly for UOKR and later clients
Fixed: All repsys changes now send the update correctly to yourself and all client around you
Removed: support for murderer healthbars for UOKR clients.
09-18-2013 Tomi:
Added: cfgfile::GetConfigIntArray, works the same way as GetConfigStringArray but returns an array of ints instead of strings
Changed: Item.name now returns itemdesc.Desc without singluar/plural formatting if no name is set and name from tiledata if no itemdesc entry found
09-17-2013 Tomi:
Fixed: Item.SplitStackInto and Item.SplitStackAt methods for non stackable items ( now also works splitting non stackable items 1 by 1 from a stack force created )
Fixed: Mountpieces will not be copied into corpses during character death anymore even if they are non movable
09-03-2013 Tomi:
Changed: Equipment members .maxhp_mod .hp .maxhp and .quality moved to Item
only Weapons and Armors need to have the MaxHP defined in itemdesc because core combat is using it, for all other items there is a default value 1
Added: Weapon RW member .speed_mod ( -32,768 to 32,767 ) as an optional way to delay if you want to use the default speed math and just add to that
Fixed: upper limits using the container members .max_items_mod .max_weight_mod and .max_slots_mod
if max_items >= 3200 it will be set to 3200
if max_weight >= 65535 it will be set to 65535
if max_slots >= 255 it will be set to 255
Note: None of these members can go below zero
09-02-2013 Tomi:
Added: Container RW members .max_items_mod( −32,768 to 32,767 ) .max_weight_mod( −32,768 to 32,767 ) and .max_slots_mod( −128 to 127 ) ( default values 0 )
08-31-2013 Turley
Fixed: EScript memoryleak (eg myvar[blubb]:=othervar)
08-28-2013 Tomi ( based on andenixas patch )
Added: ssopt.MobilesBlockNpcMovement ( default true ) to determine if mobiles block the movement of npcs
Note: Tamed npcs with same master ( npc.master ) still blocks each others movement even with the flag false to not allow them run on top of each others when following the master
08-27-2013 Nando (patch by andenixa, text adapted from forum post):
Added: string.format( args ) - formats a string using the data from args
Accepts the following format:
{:x} for hex representation
{:o} for octal
{:b} for binary
Add a # to get notation prefix:
E.g. "{:x}".format(10) -> "a"
"{:#x}".format(10) -> "0xa"
Parameters can be simple:
"You have {} gold coins".format(120) -> "You have 120 gold coins"
and are unpacked implicitly by their order:
"{} hits {} for {} of damage".format("John", "Bob", 120) -> "John hits Bob for 120 of damage"
However you can specify parameters explicitly (first argument is at 1):
"You hit {2} for {1} damage".format(120, "John Doe") -> "You hit John Doe for 120 damage"
Format allows accessing object members:
"Spell {1.spell_name} requires reagents: {1.reagents}".format(struct{spell_name:="Fire Wrath", "Ba, Bm, Ga"})
-> "Spell Fire Wrath requires reagents: Ba, Bm, Ga"
Implicit members also work:
"{name} you hit level {level}".format(struct{name:="Jane Doe", level:=4})
-> "Jane Doe you hit level 4"
Character or item members are accessed the same way:
"{1.name}, your shield {2.desc} has {2.hp} hp".format(who, who.shield)"
-> "Admin, your shield Buckler of Death has 150 hp"
07-27-2013 Tomi:
Changed: UO::TargetMultiPlacement( character, objtype, flags := 0, xoffset := 0, yoffset := 0, hue := 0 );
New optional hue parameter to show hued multis which are supprted by clients >= 7.0.9 ( HSA )
Older clients ignores this option
06-17-2013 Kevin:
Fixed: adding missing mysql_close() entry to sql.em
Fixed: OpenSellWindow() "Buyable" container wasn't actually restricting what entries showed.
Pass flag VENDOR_BUYABLE_CONTAINER_FILTER to enable this filter.
05-25-2013 Kevin:
Fixed: bug in mysql_select_db() returning error on successful calls
Fixed: adding missing mysql_free_result() entry to sql.em
02-26-2013 Kevin:
Fixed: item.SplitStackInto(container,amount,add_to_existing_stack := 1) no longer requires three parameters and will default
the add_to_existing_stack to 1/true if not present
Fixed: item.SplitStackInto() with add_to_existing_stack == 1 will re-add the removed-portion of stack back to original item
if it cannot add to the existing stack (ie, container's caninsert script returns false)
Changed: item.SplitStackInto() with add_to_existing_stack == 1 will first attempt to add to an existing stack if found, and otherwise
will create a new stack if no existing stack found. This is similar to how the existing CreateItemInContainer() works
02-20-2013 Tomi:
Fixed: When changing graphic of a lightsource item, it now changes correctly the facing too.
Fixed: Status bar now shows for weapon mindamage ( id.mindamage + dmg_mod ) and for maxdamage ( id.maxdamage + dmg_mod )
02-17-2013 Tomi:
Fixed: Changing invul status now updates it for the character itself too, not just all mobiles around
02-15-2013 Tomi:
Fixed: item.SplitStackInto method
01-04-2013 Tomi:
Added: Syshook CanTrade
parameters ( character, drop_on_chr, item )
Note: This syshook runs when dropping an item on a character or when trying to add an item to a tradewindow
12-15-2012 Tomi:
Fixed: Items now get their facing from tiledata flag if no itemdesc entry is found
This fixes wrong lightsources for items such as lampposts
12-08-2012 Tomi:
Fixed: Typo in uo.em with new LISTEX flags
Added: const REALM_BRITANNIA_ALT to uo.em
12-05-2012 Tomi:
Added: Pol now send on invul/murderer status changed for >= KR Clients packet 0x17 to get Yellow or Red color health bars
Changed: UO:ListMobilesNearLocationEx added 2 new flags LISTEX_FLAG_PLAYERS_ONLY and LISTEX_FLAG_NPC_ONLY
Changed: combat.cfg option "SendAttackmsg" to "SendAttackMsg" to match cases of other options
Fixed: UO:MoveItemToContainer doesnt crash anymore when using add_to_exisitng stack parameter
Fixed: item methods .SplitStackAt and .SplitStackInto doesnt crash Pol anymore when using add_to_existing_stack parameter
11-16-2012 Turley:
Added: string methods:
str.length() : returns like len(str) the length of the string
str.upper() : returns like upper(str) the uppercase version and also modifies the str
str.lower() : returns like lower(str) the lowercase version and also modifies the str
str.find(Search,[Start]) : returns like Find(string, search, start) the index of the first occurance of 'search' after 'start' within str
but unlike the basic.em function the Start parameter is optional if not given it searches the whole string
str.join(array) : returns a string which is the concatenation of the array elements, seperated by str
11-14-2012 Turley:
Changed: SplitWords( str, delimiter := " ", max_split := -1 )
it has now an additional parameter max_split, if given it limits the number of times that a string will be split
default: -1 no limit
(Patch submitted by andenixa)
Added: ecompile its now possible to override through the cmdline
GenerateDependencyInfo entry with "-D-"
GenerateDebugInfo entry with "-x-"
11-10-2012 Turley:
Added: uoclient.cfg Listener property "KeepClients" 1/0 default 0
if set to 1 clients keep this listener port even after different gameserver select
Note: actually 1 is the old behaviour and 0 the old behaviour of pol.cfg ListenPort
Added: pol.cfg "UseSingleThreadLogin" 1/0 default 0
if set all prelogin clients are handled inside the listener thread and not inside an extra thread
this will reduce the amount of thread creates and destroys
10-14-2012 Tomi:
Added: SystemHook "WarmodeChange" called when a character changes warmode status either by member .warmode or by clicking the warmode button on the paperdoll
Params CharRef and new_warmode_status
Return value is ignored
10-09-2012 Tomi:
Fixed: packet 0x17 ( poison health bar packet ) was sending 2 bytes with wrong endian when sending to nearby clients
10-08-2012 Turley:
Fixed: secured Shadowrealm delete, it will now iterate through all StorageArea Items and check if old shadowrealm property exists
10-06-2012 Tomi:
Changed: setting an equipped item on NPC to movable 0 will make it visible on the corpse but invisible in the corpse, same as hair and beard have worked until now.
10-05-2012 Turley:
Added: ecompile parameter -wP
Added: ecompile.cfg entry ParanoiaWarnings
Note: since "{}" is valid syntax, only complain about it if ParanoiaWarnings is enabled
09-29-2012 Turley:
Added: ecompile parameter -T
Added: ecompile.cfg entry ThreadedCompilation
Note: if set will use openmp for parallel compilation
09-25-2012 Kevin:
Fixed: Guild and alliance messages no longer send as regular speech messages. They are sent to all guild or alliance members online.
Added: servspecopt.cfg CoreGuildMessages=0/1 default 1 to determine if core should handle guild and alliance messages.
08-29-2012 Turley:
Fixed: Crash if a attached script kills the attached npc
08-27-2012 Tomi:
Changed: MoveItemToContainer( item, container, x := -1, y := -1 ); to MoveItemToContainer( item, container, x := -1, y := -1, add_to_existing_stack := 0 );
Changed: item.SplitStackInto( container, amount ) to item.SplitStackInto( container, amount, add_to_existing_stack := 0 )
Note: The optional add_to_existing_stack parameter defines if the items moved to the container will look for an existing stack and add to it or just add as a new item ( old behaviour )
If add_to_existing_stack == 1 and there is no stack in the container, it will return Error "There is no existing stack", so its up to scripts to check this.
Added: item.HasExistingStack( container ) to allow scripts to check if there is an existing stack in a container or not, returns the ItemRef of the stack if it exists.
08-26-2012 Nando:
Removed: Support for ListenPort in pol.cfg when Multithread is activated. Everyone should
be using uoclients.cfg by now!
08-01-2012 Kevin:
Added: R/W member carrying_capacity_mod for mobiles to modify carrying capacity on a
mobile-per-mobile basis. Is taken into account prior to global ssopt modifier.
08-01-2012 Kevin:
Added: osmod::Debugger() to put current script in debug state to be attached by external
debugging application
Added: stacktrace debug command to print stacktrace. Displays:
<size of stack>
foreach stack element:
<program counter>
<file number>
<line number>
<number of local variables>
foreach local variable:
<variable name> <packed value>
07-12-2012 Tomi:
Added: combat.cfg entry "SendAttackMsg" values 0/1 defaults to 1
setting this to 0 stops the core repsys system sending "is attacking you" messages.
06-03-2012 Tomi:
Added: Readonly members .active_skill and .casting_spell for characters
return values 0/1 if character has an active attached skill or spell script
05-01-2012 Tomi:
Fixed: On equipped items .resist_*_mod members did not update character status window when changed
Patch submitted by Agata
04-15-2012 Tomi:
Added: R/W member editable 0/1 for maps
04-14-2012 Tomi:
Added: Support for new map message packet 0xF5 for clients 7.0.13+
This packet supports the new facetXX.mul files and now can use every different realm for cartography maps and sea charts.
Added: r/w member .facetid for Maps
This has actually nothing to do with realms, the value is the same as in FacetXX.mul file
04-06-2012 Tomi:
Fixed: Roof problem at 4th floor on a custom house.
Patch submitted by Agata
Added: Packet 0xD6 to be ignored for activity ( fixes inactivity logout for ML+ )
Patch submitted by OWHorus
04-05-2012 Kevin:
Added: ecompile.cfg directive "ErrorOnWarning" and ecompile switch -y to treat warnings
on errors during ecompile. Default is 'false'
Fixed: various locations were showing warnings even without the -w switch provided.
03-26-2012 Tomi:
Added: character readonly member .lastcoord returns struct{.lastx, .lasty, .lastz}
03-09-2012 Tomi:
Fixed: uo::SendInstaResDialog() was sending wrong packet
03-07-2012 Tomi:
Added: scripts/misc/dblclickitem.ecl to run a script on every double click on items.
params are (mobile, item)
usefull for removing meditation stuff and such in 1 place instead of every script.
Note: this script will not be attached to the mobile and will run before any usescript.
02-08-2012 Tomi:
Added: character readonly member .tradewindow
return ContainerRef if the char has an active trade and error if no active trade
02-06-2012 MuadDib:
Fixed: Added orphan checks in Character::get_from_ground for both passed serial and items it itr through. Proper logging, returns, and
continue used to keep from attempting movement of orphaned items after log report.
02-05-2012 Tomi:
Changed: AR not required in ArmorDescs for Pol to start anymore, so now if Physical Resist used only no need to define AR 0 in the ArmorDesc.
Changed: AR in ArmorDescs defaults to 0.
02-02-2012 Tomi:
Added: Readonly member .multiid for boats and houses
Fixed: Old boats didnt read the components correctly on server restart
01-21-2012 Tomi:
Removed: Graphic from multis, no graphic entry needed for multis in itemdescs anymore, uoconvert doesnt add a graphic value to multis anymore.
Added: MultiID entry to boats.cfg instead of the ObjType.
Changed: Multi itemdescs now require MultiID to be defined for each multi.
Note: Multi objtypes still need to be > MaxTileID from pol.cfg
Example of a multi entry in itemdesc
Boat 0x10000
{
Name SmallBoatN
MultiID 0x0
}
Added: boats.cfg is now shipped with the core too with boats up to date with HSA so just remove what you dont use.
Note: Reconvert of multis.cfg with UOConvert needed
Make sure you have a itemdesc entry for every boat direction
01-21-2012 Turley:
Fixed: RequestInputUC() for eg russian chars
01-16-2012 Turley:
Changed: SpeedUp for uoconvert
01-14-2012 Turley:
Changed: UnicodespeechEvent additional Member "tokens" if speech has (speech.mul) Tokens, gives array of spoken TokenIDs
Added: servspecopt.cfg SeperateSpeechTokens=1/0 default 0 when set RegisterForSpeechEvents() and EnableEvents/DisableEvents behave different
Added: uo:RegisterForSpeechEvents Flags LISTENPT_HEAR_TOKENS,LISTENPT_NO_SPEECH
Added: SYSEVENT_TOKEN_SPEECH:=0x4000 and SYSEVENT_TOKEN_GHOST_SPEECH:=0x8000 for uo:EnableEvents/DisableEvents
Note: if SeperateSpeechTokens is set you can control which events you get,
for NPCs you only get speech with tokens if you set SYSEVENT_TOKEN_SPEECH/SYSEVENT_TOKEN_GHOST_SPEECH
and non Token speech with SYSEVENT_SPEECH,SYSEVENT_GHOST_SPEECH
for RegisterForSpeechEvents() you get speech with and without Tokens when setting LISTENPT_HEAR_TOKENS and no speech without Tokens
setting LISTENPT_NO_SPEECH
Note: Token and nonToken Eventtype is still the same (SYSEVENT_SPEECH)
01-03-2012 Turley:
Changed: major rewrite of primitive operators +,-,*,/,...
major speedup of +=,-=,...
Added: finally support for +=,-=,*=,/=,%= with objectmembers, like who.resist_fire_mod+=1
Note: if member would return UnInit or Error it does nothing
so its like (only faster and atomic):
var temp:=who.resist_fire_mod;
if (!(TypeOfInt(temp) in {OT_UNINIT,OT_ERROR}))
temp+=1;
who.resist_fire_mod:=temp;
endif
01-02-2012 Turley:
Added: XMLFile/XMLNode.removexmlnode(int value)
removes node of given index
XMLFile/XMLNode.removexmlnode(XmlNode node)
removes given node
XmlNode.clonenode()
since all NodeObjects get destroyed when the corresponding XmlFileObject is destroyed, use this method to store a node for later use.
12-18-2011 Nando:
Changed: internal handling of intrinsic weapons' unload.
Removed: INTRINSIC property from Weapon template in itemdesc.cfg. An error occurs
if it's set. Some shards might have forgot to set it, which would cause
damage to intrinsic wrestling weapon. This is now handled automatically.
12-17-2011 Nando:
Changed: boats.cfg entries are now "Name Graphic X Y <Z>", where Z is optional and
defaults to zero.
12-17-2011 Tomi:
Added: Support for hued boats, use the normal .color r/w member to change the hue
Patch Submitted by Agata
12-14-2011 Tomi:
Changed: objtype vectors changed to maps to only reserve as much memory as there are
itemdesc entries, not reserving memory for up to 4 billions of objtypes.
Changed: boats.cfg entries changed from "Name Graphic X Y" to "Name Graphic X Y Z"
because some of the new boat components requires different Z levels than the boat
itself.
12-13-2011 Austin:
Added: Support for destroy scripts on multis.
12-13-2011 Tomi:
Added: Support for HSA boats ( no smooth move yet, but now all boats are usable )
Changed: boat.cfg to support new entries "Rope", "Wheel", "Hull", "Tiller", "Rudder", "Sails", "Storage", "Weaponslot"
there can be more than 1 of each entry
the old entries "Tillerman", "Hold", "PortGangplankExtended", "PortGangplankRetracted", "StarboarGangplankExtended", "StarboardGangplankRetracted" support just 1 entry each or the boat members get broken
Added: ReadOnly members for boats
.components returns an array of ItemRefs of all the components on the boat
.hull returns an array of ItemRefs of all the hull components on the boat, or empty array if none.
.rope returns an array of ItemRefs of all the rope components on the boat, or empty array if none.
.wheel returns an array of ItemRefs of all the wheel components on the boat, or empty array if none.
.rudder returns an array of ItemRefs of all the rudder components on the boat, or empty array if none.
.tiller returns an array of ItemRefs of all the tiller components on the boat, or empty array if none.
.sails returns an array of ItemRefs of all the sails components on the boat, or empty array if none.
.storage returns an array of ItemRefs of all the storage components on the boat, or empty array if none.
.weaponslot returns an array of ItemRefs of all the weaponslot components on the boat, or empty array if none.
Changed extobj.cfg to support new entries for all the new boat component types and changed the default value of all entries.
extobj.cfg entries with default values:
Tillerman=0x1F010
Port_Plank=0x1F011
Starboard_Plank=0x1F012
Hold=0x1F013
Rope=0x1F014
Wheel=0x1F015
Hull=0x1F016
Tiller=0x1F017
Rudder=0x1F018
Sails=0x1F019
Storage=0x1F01A
Weaponslot=0x1F01B
Wrestling=0x1F020
Mount=0x1F021
Secure_Trade_Container=0x1FF01
Wornitems_Container=0x1FF02
Note: extobj entries just let you define the objtypes, all of these still have to be defined in itemdescs for boats to work correctly.
extobj.cfg is now shipped with the core.
12-05-2011 Tomi:
Fixed: Door methods .open() and .close() were working opposite what they should.
12-04-2011 Tomi:
Fixed: EA broke the prof.txt with the latest clients adding "Evaluating Intelligence" and "Spirit Speak" with spaces that resulted into skillnumber 0xFF and skillvalue 0
Added: UO::UpdateItem( item );
updates the item to every client in range, good to use for example after returning 1 in some packethook and the item get invisible.
12-01-2011 Nando:
Fixed: Client hanging after having his connection refused on login. I recommend testing
different ways of having a client disconnected, like acct.disable(), .ban() and others.
12-01-2011 MuadDib:
Changed: UoClientGeneral.maxskills changed to unsigned short. Few places in loops with it changed to use same for the loop counter.
11-30-2011 Tomi:
Fixed: Old style spellbooks.
11-29-2011 MuadDib:
Fixed: Fixed a script breaker caused by inserting new TypeOfInt() constants in the middle of the Enum. Moved SQL Types to end of list.
Added: Added SQL entries to the Basic.EM since were missing.
11-29-2011 Tomi:
Added: Opengraphic itemdesc entry for Doors ( optional parameter, no need to define if you dont want to use the built in methods )
Changed: how built in .open() .close() and .toggle() methods works. The now read the graphic what to open to from itemdesc instead of just checking with & 0x1.
this makes those methods works for new doors too and not only T2A era doors.
Changed: basic::CChrz( intarray ) to basic::CChrz( intarray, break_at_first_null := 0 );
if the break_at_first_null parameter is 0 it uses the old behaviour to just skip the nulls and still convert everything
if the break_at_first_null parameter is set to 1 it stops the conversion to string at the first null it finds.
Changed: All Write(ctBeu16( calls for graphics and colors to use WriteFlipped, this seems to have fixed the assertion errors that occured with removal of the color_ext and graphic_ext
11-28-2011 MuadDib:
Removed: UObject->Color_Ext : Removed, and when used is replaced with ctBEu16() calls. This includes read/write of /data files.
Removed: Last of any UOX references for imports. Most was all commented, a few empty refences was also left. All now removed completely.
11-27-2011 MuadDib:
Removed: UObject->Graphic_Ext : Removed, and when used is replaced with ctBEu16() calls. This includes read/write of /data files.
Note: UObject->Serial_Ext will not be removed as previously considered, due to the orphan system making primary use of this.
11-27-2011 Nando:
Fixed: corrected memory leak in cfgfile::GetConfigStringDictionary(...)
11-26-2011 Tomi:
Changed: CascZ( str ) to CascZ( str, nullterm := 0 )
if nullterm 1 it adds the terminating 0 in the end of array.
Note: Recompile of scripts needed.
11-24-2011 Tomi:
Added: Support for Mysticism and BardMasteries spell books
Mysticism Spell ID's 678 -> 693 and BardMasteries spell ID's 701+
11-23-2011 Tomi:
Added: can_insert and on_insert scripts for Tradewindows
11-22-2011 Kevin:
Added: pol/sqlscrobj.cpp pol/sqlscrobj.h
Changed: pol/module/sqlmod.cpp pol/module/sqlmod.h
Add preliminary MySQL database support.
New eScript objects: BSQLConnection, BSQLResultSet, BSQLRow
Added several new sql module functions:
mysql_connect(host,username,password);
mysql_query(connection,query);
mysql_fetch_row(result);
mysql_affected_rows(result);
mysql_num_fields(result);
mysql_num_rows(result);
mysql_select_db(connection,database);
mysql_field_name(result,column_index);
mysql_free_result(result);
mysql_close(connection);
In order to build with MySQL support, define the HAVE_MYSQL preprocessor directive in your build configuration.
You must have the MySQL headers and libraries installed.
Only really tested with dynamically linking mysql libraries on Linux.
Added: pol/network/auxclient.h
Changed: pol/network/auxclient.cpp pol/module/osmod.cpp pol/module/osmod.h clib/socketsvc.cpp clib/socketsvc.h
Moved AuxClient-related classes to its own header file (shared between auxclient.cpp and osmod.cpp)
Implemented os::OpenConnection() to create outgoing TCP/IP connections.
Changed: runecl/runecl.cpp
Added the sql module to runecl to allow quick testing
Changed: pol/uoscrobj.cpp pol/mobile/charactr.cpp pol/mobile/character.h bscript/parser.cpp bscript/objmembers.h
Added read/write property "mountedsteps" for mobiles. Represents number of steps taken while character was mounted.
Changed: bscript/parser.cpp
Declaring an array only using "{}" will show a compiler warning; please explicitly state 'array', 'struct', or 'dictionary'
Changed: pol/pol.cpp
If using Linux, remove pol.pid on shutdown of pol.
Changed: pol/uoexec.h pol/scrsched.cpp
Added script option "AUXSVC_ASSUME_STRING" which will allow aux service connections to send and receive non-packed strings.
Changed: ecompile/ecompile.cpp
If using Linux, a slash ("/") cannot be used to define ecompile options to allow support for absolute filenames.
Changed: bscript/object.cpp bscript/bobject.h
Implemented array operation MultiSubscript. Will return a splice of an array, eg: