Go to Page... |
Compatibility: | Necrom (9.0.0) Scribes of Fate (8.3.5) |
Updated: | 06/09/24 09:49 AM |
Created: | 04/15/14 09:21 PM |
Monthly downloads: | 3,487 |
Total downloads: | 668,952 |
Favorites: | 756 |
MD5: | |
Categories: | Combat Mods, Action Bar Mods, Graphic UI Mods, PvP |
And I totally approve Miss Bizz YouTube video about GQSB .. (a bit outdated but cute enough) |
Some corrections could be underway and, until next release, some In-Progress version could be accessible on GitHub. When you deploy a master zip from GitHub, the result should be a single folder named after the Addon's name, under your live\Addons\ folder. There should be no piled up folders such as GreymindQuickSlotBar\GreymindQuickSlotBar
|
1. UI 3x2 |
2. UI 1x8 |
3. Unlocked UI resizing |
4. Controls Hotkeys Binding |
5. Settings menu 1/3 ⚙ |
6. Settings menu 2/3 ⚙ |
7. Settings menu 3/3 ⚙ |
8. Visibility logic - A piece of lua code (230117) |
File Name |
Version |
Size |
Uploader |
Date |
v2.7.2.12 |
52kB |
ivanwfr |
03/16/24 06:17 PM |
|
v2.7.2.11 |
52kB |
ivanwfr |
02/24/24 11:06 AM |
|
v2.7.2.10 |
52kB |
ivanwfr |
01/24/24 09:55 AM |
|
v2.7.2.9 |
52kB |
ivanwfr |
12/23/23 10:35 AM |
|
v2.7.2.8 |
52kB |
ivanwfr |
10/14/23 08:48 AM |
|
v2.7.2.7 |
52kB |
ivanwfr |
07/16/23 09:47 AM |
|
v2.7.2.5 |
52kB |
ivanwfr |
06/06/23 04:34 PM |
|
v2.7.2.5 |
52kB |
ivanwfr |
06/06/23 03:08 PM |
|
v2.7.1 |
51kB |
ivanwfr |
11/05/22 10:37 AM |
|
v2.7.0 |
51kB |
ivanwfr |
08/24/22 02:37 PM |
|
v2.6.9 |
48kB |
ivanwfr |
06/11/22 08:58 AM |
|
v2.6.8 |
45kB |
ivanwfr |
02/23/22 08:44 AM |
|
v2.6.7 |
44kB |
ivanwfr |
11/10/21 07:35 AM |
|
v2.6.7 |
44kB |
ivanwfr |
11/06/21 08:55 AM |
|
v2.6.5 |
45kB |
ivanwfr |
08/23/21 11:46 AM |
|
v2.6.4 |
42kB |
ivanwfr |
06/05/21 10:08 AM |
|
v2.6.3.3 |
41kB |
ivanwfr |
04/24/21 05:12 PM |
|
v2.6.3.2 |
41kB |
ivanwfr |
03/14/21 08:46 AM |
|
v2.6.3.1 |
41kB |
ivanwfr |
03/13/21 03:17 PM |
|
v2.6.3 |
41kB |
ivanwfr |
03/11/21 06:24 PM |
|
v2.6.2 |
41kB |
ivanwfr |
11/07/20 09:50 AM |
|
v2.6.1 |
41kB |
ivanwfr |
08/24/20 12:25 PM |
|
v2.6.0 |
40kB |
ivanwfr |
05/30/20 12:00 PM |
|
v2.5.0 |
41kB |
ivanwfr |
05/27/20 03:40 PM |
|
v2.4.9 |
40kB |
ivanwfr |
02/28/20 08:07 PM |
|
v2.4.8 |
40kB |
ivanwfr |
10/27/19 01:21 PM |
|
v2.4.7 |
79kB |
ivanwfr |
08/13/19 03:10 PM |
|
v2.4.6 |
78kB |
ivanwfr |
05/22/19 05:23 PM |
|
v2.4.5 |
77kB |
ivanwfr |
02/25/19 05:58 PM |
|
v2.4.4 |
75kB |
ivanwfr |
11/13/18 10:45 AM |
|
v2.4.2 |
75kB |
ivanwfr |
10/23/18 03:34 PM |
|
v2.4.0 |
74kB |
ivanwfr |
08/14/18 04:52 PM |
|
v2.3.9 |
74kB |
ivanwfr |
05/23/18 07:16 AM |
|
v2.3.7 |
74kB |
ivanwfr |
03/02/18 04:55 PM |
|
v2.3.6 |
74kB |
ivanwfr |
02/26/18 09:05 AM |
|
v2.3.5 |
74kB |
ivanwfr |
02/13/18 05:46 PM |
|
v2.3.4.4 |
73kB |
ivanwfr |
02/12/18 05:39 PM |
|
v2.3.4.2 |
72kB |
ivanwfr |
10/28/17 07:12 AM |
|
v2.3.4.1 |
72kB |
ivanwfr |
09/17/17 01:22 PM |
|
v2.3.4 |
72kB |
ivanwfr |
09/02/17 03:16 PM |
|
v2.3.3 |
63kB |
ivanwfr |
08/18/17 01:19 PM |
|
v2.3.2.1 |
63kB |
ivanwfr |
08/15/17 01:47 PM |
|
v2.3.2 |
63kB |
ivanwfr |
08/14/17 03:09 PM |
|
v2.3.1 |
58kB |
ivanwfr |
05/23/17 04:48 PM |
|
v2.3.0 |
58kB |
ivanwfr |
02/06/17 08:00 PM |
|
v2.3.0 |
58kB |
ivanwfr |
02/06/17 06:34 PM |
|
v2.2.9 |
58kB |
ivanwfr |
10/07/16 03:39 AM |
|
v2.2.9 |
57kB |
ivanwfr |
10/06/16 08:43 PM |
|
v2.2.9 |
58kB |
ivanwfr |
10/06/16 06:28 PM |
|
v2.2.8 |
58kB |
ivanwfr |
08/23/16 02:02 PM |
|
v2.2.8 |
58kB |
ivanwfr |
08/23/16 01:47 PM |
|
v2.2.7 |
57kB |
ivanwfr |
08/02/16 05:44 PM |
|
v2.2.6 |
57kB |
ivanwfr |
06/01/16 03:32 PM |
|
v2.2.5 |
57kB |
ivanwfr |
03/09/16 08:36 PM |
|
v2.2.5 |
50kB |
ivanwfr |
03/09/16 06:28 PM |
|
v2.2.4 |
50kB |
ivanwfr |
03/09/16 10:09 AM |
|
v2.2.3 |
50kB |
ivanwfr |
02/19/16 02:21 PM |
|
v2.2.2 |
50kB |
ivanwfr |
02/18/16 10:58 AM |
|
v2.2.1 |
50kB |
ivanwfr |
11/08/15 10:26 AM |
|
v2.2.0 |
50kB |
ivanwfr |
09/05/15 12:11 PM |
|
v2.1.9 |
50kB |
ivanwfr |
06/07/15 08:52 AM |
|
v2.1.7 |
50kB |
ivanwfr |
04/03/15 02:28 PM |
|
v2.1.6 |
50kB |
ivanwfr |
04/03/15 08:32 AM |
|
v2.1.5 |
48kB |
ivanwfr |
03/19/15 07:12 AM |
|
v2.1.4 |
48kB |
ivanwfr |
03/08/15 07:58 AM |
|
v2.1.3 |
44kB |
ivanwfr |
03/07/15 05:32 PM |
|
v2.1 |
46kB |
ivanwfr |
11/05/14 01:58 PM |
|
v2.0.7.1 |
22kB |
ivanwfr |
09/24/14 02:12 PM |
|
v2.0.7 |
22kB |
ivanwfr |
09/24/14 01:41 PM |
|
v2.0.6 |
22kB |
ivanwfr |
08/13/14 03:02 PM |
|
v2.0.5 |
22kB |
ivanwfr |
08/12/14 01:57 PM |
|
v2.0.4 |
22kB |
ivanwfr |
06/25/14 11:01 AM |
|
v2.0.3 |
22kB |
ivanwfr |
05/31/14 11:14 AM |
|
v2.0.2 |
22kB |
ivanwfr |
05/30/14 03:47 PM |
|
v2.0.1 |
21kB |
ivanwfr |
05/28/14 02:41 PM |
|
v2.0 |
16kB |
bsrealm |
05/11/14 08:28 PM |
|
v1.9 |
15kB |
bsrealm |
05/06/14 06:48 PM |
|
v1.8 |
14kB |
bsrealm |
05/04/14 09:55 PM |
|
v1.7 |
11kB |
bsrealm |
04/22/14 01:20 PM |
|
v1.6 |
11kB |
bsrealm |
04/20/14 03:03 PM |
|
v1.5 |
11kB |
bsrealm |
04/19/14 11:39 PM |
|
v1.5 |
11kB |
bsrealm |
04/19/14 11:36 PM |
|
v1.4 |
11kB |
bsrealm |
04/18/14 09:00 PM |
|
v1.3 |
9kB |
bsrealm |
04/18/14 12:07 AM |
|
v1.2 |
9kB |
bsrealm |
04/17/14 10:11 AM |
|
v1.1 |
9kB |
bsrealm |
04/16/14 06:12 PM |
|
v1 |
8kB |
bsrealm |
04/15/14 09:21 PM |
Comment Options |
jacozilla |
View Public Profile |
Send a private message to jacozilla |
Find More Posts by jacozilla |
Add jacozilla to Your Buddy List |
ivanwfr |
View Public Profile |
Send a private message to ivanwfr |
Send email to ivanwfr |
Find More Posts by ivanwfr |
Add ivanwfr to Your Buddy List |
07/10/21, 07:25 AM | |
|
Please use ZO_CachedStrFormat or zo_strformat (with <<C:1>>) on all of the functions where you show chat messages/on screen alerts including the quickslotted item names.
Else it will contain the gender suffix ^ns, or ^n etc.: Code:
You're out of 'Goldküsten-Kriegerelixier^ns' in your inventory, it won't be in this quickslot preset [P2] anymore Lua Code:
Applies to about all inventory items, character names, display names, map names, zone names etc. in the game and should always be "cleaned" that way. If you do not want to hardcode the "<<C:1>>" you could also use the string constant id that Zos uses to clean the character name: SI_UNIT_NAME
Last edited by Baertram : 07/10/21 at 07:26 AM.
|
|
Baertram |
View Public Profile |
Send a private message to Baertram |
Send email to Baertram |
Find More Posts by Baertram |
Add Baertram to Your Buddy List |
07/10/21, 09:18 AM | |||
Forum posts: 9
File comments: 522
Uploads: 0
|
I guess it only shows when internationalization is involved... As I display item links in the chat, I used this formating patch only with ZO_Alert popup messages. You tell me if you see those string packages in other occasions.
Last edited by ivanwfr : 07/10/21 at 09:19 AM.
|
||
|
ivanwfr |
View Public Profile |
Send a private message to ivanwfr |
Send email to ivanwfr |
Find More Posts by ivanwfr |
Add ivanwfr to Your Buddy List |
07/25/21, 08:57 AM | ||
|
Could you please add server support to the SavedVariables using GetWorldName() as e.g. 3rd parameter of ZO_SavedVars.
Lua Code:
and then use copyOfSv as default value (param 4) of ZO_SavedVars so that it will be copied over to your new SV data. You could also invent a new table GreymindQuickSlotBarSettings_Server and add that to the txt file's ## SavedVariables: and use these for the server dependent SVs. This way you can check if they were migrated and delete the old non-server dependent ones afterwards. Or at least change the settings to properly work for characters. It's annoying that when I change e.g. the character "Baertram" on "EU Megaserver" my other charatcer "Baertram Bärenfreund" on "NA Megaserver" gets the savedvars altered as well. Not sure how this work,s maybe the characterId is indentical on the different servers. Or you got a bug somewhere which uses kind of standard values for both? The current situation makes it difficult as I always have to opc yover different SV files for the different servers
And you also need to remember you are not alone on this earth and there are many language and grammar spoken/used. English is simple, others are not. So this method here is quite easy and as long as you follow "their rules" via zo_strformat all is okay. Just would be nice if this was mentioned somewhere properly in their api documentation.
Last edited by Baertram : 07/25/21 at 09:04 AM.
|
|
|
Baertram |
View Public Profile |
Send a private message to Baertram |
Send email to Baertram |
Find More Posts by Baertram |
Add Baertram to Your Buddy List |
07/25/21, 01:41 PM | ||
Forum posts: 9
File comments: 522
Uploads: 0
|
Hi Baertram
I don't know if everything gets synchronized as it would be by full reload. You tell me and, if necessary, I will restore this reload before the next release |
|
|
ivanwfr |
View Public Profile |
Send a private message to ivanwfr |
Send email to ivanwfr |
Find More Posts by ivanwfr |
Add ivanwfr to Your Buddy List |
07/26/21, 07:55 AM | ||
|
ou definately should add it there as well then, not only for the account support. And this here (if( QSB.AccountWideSettings == nil ) then) will ALWAYS ~= nil because you load the QSB.SettingsDefaults in teh upper part ALWAYS to QSB.AccountWideSettings so there always will be a table created as long as QSB.SettingsDefaults is not nil. And even if it is nil it will create a table and thus if( QSB.AccountWideSettings == nil ) then will never be met! Lua Code:
That's what I tried to explain. You need to load the old SVs without GetWorldName() first like normal. Then copy the old data directly from the global table (not from the ZO_SavedVar wrapper!) via ZO_ShallowTableCopy to a new table and use this as the default for the new SVs with GetWorldName() Do a ReloadUI("ingame") then directly to save the new data to the new SV file structure and then you are set. Do not copy from the ZO_SavedVars:NewAccountWide of the old data! Only use the _G["GreymindQuickSlotBarSettings"] table with the ["AccountWide"] and [GetDisplayName(] subtables like needed. Your total SV is somewhat messy there. Copies directly from ZO_SavedVars to ZO_SavedVars taking the overhead of the wrapper with it (char name -> charIds e.g.) and you also have 2 pointers to the same like if(QSB.AccountWideSettings.SaveAccountWide ) then QSB.Settings = ZO_SavedVars:NewAccountWide( where QSB.Settings is exactly what QSB.AccountWideSettings was before. You ould simply point QSB.Settings = QSB.AccountWideSettings in that case and it should work I'll try to provide you a file with the changes so that you are able to see what I mean! Here is the code which should/could work. Please backup your SV before testing: Lua Code:
Works similar like your's. The major problem here is that the worldname should be at the level where the "AccountWide" or "Default" profile is used by your savedvars. It's currently moving it further down below that and thus some data seems to be missing, or at least it's hard to see them at a glance inside the files and tables ingame. And this will make a kind of redundant loop of the character data -> EU megaserver -> character data -> EU megaserver -> and so on Edit: After first test this happens every here and there after the game was loaded with the new version (before 1st reloadui) Code:
user:/AddOns/GreymindQuickSlotBar/GreymindQuickSlotBar.lua:2427: operator / is not supported for nil / number |rstack traceback: user:/AddOns/GreymindQuickSlotBar/GreymindQuickSlotBar.lua:2427: in function 'Refresh_handler' |caaaaaa<Locals> log_this = F, tasks_pending = F, preset_delayed = F, preset_pending = F, preset_locked = F, inventory_showing = F, quickslot_showing = F, r = 0, g = 0, b = 0, slot_settings = [table:1]{ShowNumbers = F, HideSlotBackground = F, QuantityLabelPositionHorizontal = "Right", NotSelectedButtonOpacity = 30, QuantityLabelPositionVertical = "Bottom", OverlayButtonOpacity = 30, QuantityWarning = 10, ShowKeyBindings = F, LinkToChatOnClick = T, VisualCue = "Off", KeyBindAlignV = "Top", ShowQuantityLabels = T, KeyBindAlignH = "Left", QuantityAlert = 5}, buttonSize = 36, button_font = "EsoUI/Common/Fonts/univers57.o...", x = -9, y = -9, hAlign = "Left", vAlign = "Top", row = 0, col = 1, color = [table:2]{G = 0, A = 0.6, B = 0, R = 0} </Locals>|r EsoUI/Libraries/Globals/globalapi.lua:227: in function '(anonymous)'
Last edited by Baertram : 07/26/21 at 09:36 AM.
|
|
|
Baertram |
View Public Profile |
Send a private message to Baertram |
Send email to Baertram |
Find More Posts by Baertram |
Add Baertram to Your Buddy List |
07/26/21, 10:05 AM | |
Forum posts: 9
File comments: 522
Uploads: 0
|
Hi Baertram,
I hate using those ZO incantations to save a bunch of variables ...hence those missed nil params and the obviously inadequate fallback logic. For me, this should simply work with implied backward compatibility support! Playing with tables to handle addons param is a normal thing. But having to patch tables when the API changes is likely to let me give up. I need to get and amount of fun to overweight the maintenance burden... If you are ready to dive into those fussy calls, I'll take your crafted code for granted as long as soon as I see it working. I'm going to insert your patch (and give it some thoughts in the process) and push the next GitHub pre-release... Thanks again for the time you spend at this |
|
ivanwfr |
View Public Profile |
Send a private message to ivanwfr |
Send email to ivanwfr |
Find More Posts by ivanwfr |
Add ivanwfr to Your Buddy List |
07/26/21, 10:34 AM | ||
|
Okay, will test this as well. The first try was creating subtables at teh character settings having the same subtables again -> Some kind of redundancy ...
I hope the cleanup function I have added fixes this now and it will runn properly once. Need to add some debug messages and try it on the 3 servers, and will give you feedback with a final working version (or that I gave up ).
|
|
|
Baertram |
View Public Profile |
Send a private message to Baertram |
Send email to Baertram |
Find More Posts by Baertram |
Add Baertram to Your Buddy List |
07/26/21, 01:10 PM | |
Forum posts: 9
File comments: 522
Uploads: 0
|
The "operator / is not supported for nil / number" is the result of a non-functional patch with ZO_SavedVars calls.
It has to do with Settings that are not loaded properly This still works with no error: Code:
function Load_ZO_SavedVars(accountwide) local WorldName = GetWorldName() if(accountwide == nil) then QSB.AccountWideSettings = ZO_SavedVars:NewAccountWide( "GreymindQuickSlotBarSettings" -- savedVariableTable , QSB.SettingsVersion -- version , nil -- namespace XXX UNSET AS A FALLBACK , QSB.SettingsDefaults -- defaults , "AccountWide" -- profile ) -- override by a call with WorldName namespace else QSB.AccountWideSettings.SaveAccountWide = accountwide end if(QSB.AccountWideSettings.SaveAccountWide ) then QSB.Settings = ZO_SavedVars:NewAccountWide( "GreymindQuickSlotBarSettings" -- savedVariableTable , QSB.SettingsVersion -- version , nil -- namespace XXX UNSET AS A FALLBACK , QSB.SettingsDefaults -- defaults , "AccountWide" -- profile ) -- override by a call with WorldName namespace else QSB.Settings = ZO_SavedVars:NewCharacterIdSettings( "GreymindQuickSlotBarSettings" -- savedVariableTable , QSB.SettingsVersion -- version , nil -- namespace XXX UNSET AS A FALLBACK , QSB.Settings -- defaults , "Default" -- profile ) -- override by a call with WorldName namespace end end Simple, because until now, since v1.0 back in 2014, I use to understand everything there is in GreymindQuickSlotBar code. I don't care for any kind of ZO utility lua code, as this is the best way to question the understanding you have of what is a table or a simple string for that matter... this or using any kind of helping framework you get addicted to as expected.
Last edited by ivanwfr : 07/26/21 at 01:11 PM.
|
|
ivanwfr |
View Public Profile |
Send a private message to ivanwfr |
Send email to ivanwfr |
Find More Posts by ivanwfr |
Add ivanwfr to Your Buddy List |
07/26/21, 01:48 PM | |
|
The problem is that if I just add the GetWorldName the old SV will be gone and not migrated. Users will loose their SVs that way!
If you do not want to have that happen you'd have to strip all ZO_SavedVars wrappers and just manually use the global table to add the data, but that would have needed to be done from the beginning or migrated now too. One question: Is this still needed? I guess it was added for support of old "character name" settings? I guess this can be removed now as ppl who still got that old files should efinately re-configure the addon today, right? Lua Code:
It currently "always" loads the savedvars into the old structures just to reuse them as defaults for the new characterID settings. I'd strip that and directly use the new characterId now. Makes things less complicated. But I'd understand if you like to keep it. I got the settings to work fine including a migration now. Currently testing on all servers. Automatic reloadui at event_player_activated; Data was migrated: Code:
["8796093052231733"] = { ["$LastCharacterName"] = "Bärtram Bärenfreund", ["NA Megaserver"] = { ["GameActionButtonHide"] = false, ["Visibility"] = "Never", ["SoundAlert"] = "QUICKSLOT_USE_EMPTY", ["LockUI"] = false, ["Presets"] = { ["P4"] = { }, ["P3"] = { }, ["P2"] = { }, ["P1"] = { }, ["P5"] = { }, }, Wil test on EU with my characters soon.
Last edited by Baertram : 07/26/21 at 02:22 PM.
|
|
Baertram |
View Public Profile |
Send a private message to Baertram |
Send email to Baertram |
Find More Posts by Baertram |
Add Baertram to Your Buddy List |
07/26/21, 04:25 PM | |||
Forum posts: 9
File comments: 522
Uploads: 0
|
If you found some clean solutions, you can post some [code] here so that those pull-push would all hapen in this forum. And about your previous post:
|
||
|
ivanwfr |
View Public Profile |
Send a private message to ivanwfr |
Send email to ivanwfr |
Find More Posts by ivanwfr |
Add ivanwfr to Your Buddy List |
07/26/21, 04:49 PM | ||
|
Yeah I noticed I had an older code base. Saw your github link too late. And there was none in the addon description (edit: Found it at the top right, was too small ). I've used your most current version from GitHub now as base and made a pull request:
https://github.com/ivanwfr/GQSB/pull/3 As I did not only change the SV part but also improved a few other pointers GitHUb should show you the stuff properly. I used your files and same tabstops. Should be easy to see the diffs. Posting the code here would be too much/long sorry.
That's why I have created the migration function you will find in my pull request. Should be easy to understand. It's just taking the data directly from the global table _G["GreymindQuickSlotBarSettings"], without assigning it to ZO_SavedVars first, which was defined in your GreymindQuickSlotBar.txt behind ## SavedVariables. Without any wrapper data and functions, just pure table data! That's how the SV work. Defined in the txt > available after event_add_on_loaded. ZO_SavedVars just provides "easy tools" to write the @accountName via GetDisplayName() and the characterId via GetCurrentCharacterId() into the tables. But you can do the same manually. Depending on character or accountwide it uses the "Default" or the "AccountWide" profilename you had specified. And then it passes this to the settings via ZO_SavedVars again, does a reloadui at event_player_activated (as trying it before does nothing if you login, as it seems). And writes a boolean to the SV tha the migration was done so it does not try to repeat this again and again. Finished. And if you change the settings after login via slash command or LAM it does the same just with a direct reloadui then.
Last edited by Baertram : 07/26/21 at 07:13 PM.
|
|
|
Baertram |
View Public Profile |
Send a private message to Baertram |
Send email to Baertram |
Find More Posts by Baertram |
Add Baertram to Your Buddy List |
07/27/21, 12:00 PM | ||
Forum posts: 9
File comments: 522
Uploads: 0
|
Hi Baertram
I did not take your optimisation variables yet as I first wanted to point every single patch without all the extra diffs in the way.. will do later when the real change checks OK. I tried to decouple your code and mine as much as possible as long as we may have to add some more adjustements. Code:
3455 --.. BAERTRAM -- 1 +-- 7 lines: -- flags ------------------------------------- 2 +-- 13 lines: -- removeServerDataOnce ---------------------- 3 +-- 57 lines: -- migrateToServerSVs ------------------------ 4 --.. 5 +-- 18 lines: -- Load_eval_migratedAccountWideToServer ----- 6 +-- 19 lines: -- Load_eval_migratedCharacterToServer ------- 7 +-- 18 lines: -- Load_AccountWideSettings ------------------ 8 +-- 27 lines: -- Load_Character_Settings ------------------- 9 +-- 26 lines: -- Load_SwitchTo_AccountWideSettings --------- 10 -- INIT
Last edited by ivanwfr : 07/29/21 at 03:52 PM.
|
|
|
ivanwfr |
View Public Profile |
Send a private message to ivanwfr |
Send email to ivanwfr |
Find More Posts by ivanwfr |
Add ivanwfr to Your Buddy List |
07/27/21, 12:10 PM | |
Forum posts: 9
File comments: 522
Uploads: 0
|
I forgot to say that I added a /gqsb logs slash-command to display what has been logged before the chat was ready to print debug messages .. wont work when there is a bug though
Last edited by ivanwfr : 07/27/21 at 12:10 PM.
|
|
ivanwfr |
View Public Profile |
Send a private message to ivanwfr |
Send email to ivanwfr |
Find More Posts by ivanwfr |
Add ivanwfr to Your Buddy List |