ESOUI

ESOUI (https://www.esoui.com/forums/index.php)
-   General Authoring Discussion (https://www.esoui.com/forums/forumdisplay.php?f=174)
-   -   string.find or string.match question (https://www.esoui.com/forums/showthread.php?t=10619)

sinnereso 06/28/23 12:44 AM

string.find or string.match question
 
Hey ive been having some irregularities with one of my teleport functions. Particularly with my blacklist.

I have "Tel Galen" in my blacklist and have trouble teleporting to "Galen". I guess what I'm needing is a way to exactly match not match part of "Tel Galen".

Heres a sort of example of what I'm using to achieve what I have now.

Code:

local _, _, memberZone, _, _, _, _, memberzoneID = GetGuildMemberCharacterInfo(guildId, memberIndex)

if not MyAddon.ZoneBlacklist(memberZone) then
    teleport to blah blah blah
end

function MyAddon.ZoneBlacklist(value)
    local zones = {
    "Tel Galen",
    }
    for _, zoneName in ipairs(zones) do
          if string.match(zoneName, value) then return true end
    end
    return false
end

Whats happening is when someone is in "Galen" and it does the blacklist check its returning true for "Tel Galen" and not performing the teleport. I need some way to ensure "Galen" zone returns false like an exact match start to finish not partial. Any suggestions? Im wondering if just reversing zoneName, value in the string.match to value, zoneName might do the job and look for "Tel Galen" in "Galen".

ExoY 06/28/23 12:59 AM

Wouldnt just compare strings directly solve the problem?

Lua Code:
  1. if string1 == string2 then
  2.  -- do stuff if they are the same
  3. end

or

Lua Code:
  1. if string1 ~= string2 then
  2.  -- do stuff if they are not the same
  3. end

depending on implementation

sinnereso 06/28/23 01:09 AM

Quote:

Originally Posted by ExoY (Post 48001)
Wouldnt just compare strings directly solve the problem?

Lua Code:
  1. if string1 == string2 then
  2.  -- do stuff if they are the same
  3. end

or

Lua Code:
  1. if string1 ~= string2 then
  2.  -- do stuff if they are not the same
  3. end

depending on implementation

LOL! omg I was soo into working with the string.find etc I missed the obvious thank you :)

Baertram 06/28/23 02:37 AM

Again: Use zoneIds instead of strings and you never get that problems!!!
Using the IDs internaly does not remove the possibilities to show the names as strings to your UI?!

One day you might improve on it then ;-)

sinnereso 06/28/23 08:57 AM

Quote:

Originally Posted by Baertram (Post 48003)
Again: Use zoneIds instead of strings and you never get that problems!!!
Using the IDs internaly does not remove the possibilities to show the names as strings to your UI?!

One day you might improve on it then ;-)

I've been struggling with the ID's as the different queries for groups, friends and guilds had wildly inconsistant zone, subzone and internal ID's being returned. Or in some situations I couldn't pre-detect it. It may have been related to my imperfect string matching I was previously doing though. I'll revisit this soon.

Sharlikran 06/28/23 04:57 PM

If you want the unique difference then MapId is better.

sinnereso 06/29/23 04:19 PM

so far its working perfectly and havent been able to break what I have running..

I do have some questions regarding:

Code:

SLASH_COMMANDS["/rd"] = function (option)--<< /RD TELEPORT TO ZONE OR SPECIFIC PLAYER HOUSE
        if option == "" then df(RidinDirty.logo .. "  /rd partialzonename => overland zones") df(RidinDirty.logo .. "  /rd exact@name partialhousename => player houses") return end
        local options = {}
    local searchResult = { string.match(option,"^(%S*)%s*(.-)$") }--<<<<< THESE SYMBOLS
        for i,v in pairs(searchResult) do
        if (v ~= nil and v ~= " ") then
            --options[i] = string.lower(v)
                        options[i] = v
                end
    end
        if (options[3] ~= nil and options[3] ~= "") then df(RidinDirty.logo .. "  /rd partialzonename => overland zones") df(RidinDirty.logo .. "  /rd exact@name partialhousename => player houses") return end
        if (options[2] ~= nil and options[2] ~= "") then
                RidinDirty.Teleport(options[1], options[2])
        else
                RidinDirty.Teleport(options[1])
        end
end

im weak on those symbols i got from a sample someplace for string finding and matching.. What is there seems to function OK for 1 or 2 words but if theres a 3rd its gets wonky...

-What im trying to do with them is if theres no "options" then display a help text..
-if theres options[1] and options[2] then if it contains an "@" do my code for teleport to specific player house which its currently doing fine if there 2 words but not checking for "@"
-if theres options[1] options[2] options[3]++++ then display help text

I google like mad to find the meaning of thes symbols but theres some wild explanations what make it hard to make sense of.

id like it todo as follows if a user or myself type these:

/rd => display df("blah blah") help text
/rd word => find player in zone"word" and go there
/rd word word => goto specific player house if @symbol in word1 and find a house matching word2 or if no @symbol in word1 then => display df("blah blah") help text
/rd word word word or more words => display df("blah blah") help text

sinnereso 06/29/23 05:12 PM

this seems to do what I need.. any thoughts?

Code:

SLASH_COMMANDS["/rd"] = function (option)--<< /RD TELEPORT TO ZONE OR SPECIFIC PLAYER HOUSE
        if option == "" then df(RidinDirty.logo .. "  /rd partialzonename => overland zones") df(RidinDirty.logo .. "  /rd exact@name partialhousename => player houses") return end
        local options = {}
    local searchResult = { string.match(option, "^(%S*)%s*(%S*)%s*(%S*)%s*(%S*)$") }
        for i,v in pairs(searchResult) do
        if (v ~= nil and v ~= "") then
            --options[i] = string.lower(v)
                        options[i] = v
                end
    end
        if (options[3] ~= nil and options[3] ~= "") or (options[4] ~= nil and options[4] ~= "") then
                df(RidinDirty.logo .. "  /rd partialzonename => overland zones") df(RidinDirty.logo .. "  /rd exact@name partialhousename => player houses")
        elseif (options[2] ~= nil and options[2] ~= "") then
                if string.find(options[1], "^(@)") then
                        RidinDirty.Teleport(options[1], options[2])
                else
                        df(RidinDirty.logo .. "  /rd partialzonename => overland zones") df(RidinDirty.logo .. "  /rd exact@name partialhousename => player houses")
                end
        else
                RidinDirty.Teleport(options[1])
        end
end


Sharlikran 06/29/23 06:27 PM

^(%S*)%s*(%S*)%s*(%S*)%s*(%S*)$

My thought, WOW!

https://www.lua.org/pil/20.2.html

So you are telling it to check at the beginning of the string with the ^ symbol. Group 1 you look for Zero or more non space chars. Then for the default group (which isn't really a group) you look for Zero or more spaces. Then Group 2 you look for Zero or more non space chars. The default group again for Zero or more spaces. Then Group 3 you look for Zero or more non space chars. Then a third time, the default group again for Zero or more spaces. Then Group 4 you look for Zero or more non space chars. The last group matches up to the end of the string with the $ symbol, as long as it isn't a space.

The default group might actually be group 1 for Lua which means that you have 1 through 5 rather then the default and 1 through 4.

Sharlikran 06/29/23 06:50 PM

Code:

  local searchByWords = zo_strgmatch(searchText, '%S+')
  for theWord in searchByWords do
    <<do stuff>>
  end

You can use zo_strgmatch() or string.gmatch() as an iterator.

sinnereso 06/29/23 07:38 PM

ive looked through all of those like 100x.. and amazingly this is working and sort of makes sense to me.. try it youll see.

the %S is for basically the words and the %s is for the spaces... seems to be working perfectly..

What i cant find any info on is the S in %S. But based on that example it seemed it was doing the seperate words.

Sharlikran 06/29/23 08:07 PM

Quoting myself because you missed it.
Quote:

So you are telling it to check at the beginning of the string with the ^ symbol. Group 1 you look for Zero or more non space chars. Then for the default group (which isn't really a group) you look for Zero or more spaces. Then Group 2 you look for Zero or more non space chars. The default group again for Zero or more spaces. Then Group 3 you look for Zero or more non space chars. Then a third time, the default group again for Zero or more spaces. Then Group 4 you look for Zero or more non space chars. The last group matches up to the end of the string with the $ symbol, as long as it isn't a space.
On the page I listed it tells you what the capital version does and I even said what it does in my previous post, 4 times. Sorry. Good luck with that.

sinnereso 06/29/23 09:22 PM

Quote:

Originally Posted by Sharlikran (Post 48028)
Quoting myself because you missed it.


On the page I listed it tells you what the capital version does and I even said what it does in my previous post, 4 times. Sorry. Good luck with that.

Theres not a capital S on that page!!!

and all im needing is /rd option[1] option[2] option[3] option[4] etc

Sharlikran 06/29/23 10:46 PM

Quote:

The following table lists all character classes:

. all characters
%a letters
%c control characters
%d digits
%l lower case letters
%p punctuation characters
%s space characters
%u upper case letters
%w alphanumeric characters
%x hexadecimal digits
%z the character with representation 0

An upper case version of any of those classes represents the complement of the class. For instance, '%A' represents all non-letter characters
You can't search for only the answer you seek, just the uppercase S. If you read it and see that the lowercase s is a space then the uppercase is all non spaces.

Code:

  local searchByWords = zo_strgmatch(searchText, '%S+')
  for theWord in searchByWords do
    <<do stuff>>
  end

Which is why that would return 3 words if searchText was "The Zone Name" similar to splitting the string using a space for the split.

sinnereso 06/29/23 11:01 PM

Quote:

Originally Posted by Sharlikran (Post 48031)
You can't search like a squirrel on crack for the answer you seek, just the uppercase S. If you read it and see that the lowercase s is a space then the uppercase is all non spaces.

Code:

  local searchByWords = zo_strgmatch(searchText, '%S+')
  for theWord in searchByWords do
    <<do stuff>>
  end

Which is why that would return 3 words if searchText was "The Zone Name" similar to splitting the string using a space for the split.

well thats why it works then.. I was looking for ALL non-space characters. Thank you for the compliment though.

Thank you for the help.. I havent come across anything that states the capitol S was the reverse which IS highly useful.

Sharlikran 06/29/23 11:24 PM

- What is there seems to function OK for 1 or 2 words but if there a 3rd its gets wonky
- What i cant find any info on is the S in %S. But based on that example it seemed it was doing the separate words.
- "^(%S*)%s*(%S*)%s*(%S*)%s*(%S*)$"

So I explained what the S was and showed a way to handle 1 or more words. For some reason you are frustrated with the fact the link didn't have an S on it, which is concerning.

I get you are asking but it's concerning when people ask questions and then when someone answers they put it on the person providing the answer that they did or said something wrong. Usually some rhetoric follows at some point like, "I can ask because it's the help section! Geez I'm just asking." which is just an excuse for their reaction. It's like damed if I do, damed if I don't and I'm the jerk either way. When that's not the case because I answered the question, politely, the first time. They were the ones whining about it and saying they can't figure it out.

Code:

function HandleSlashCommands(allArgs)
  local argument1 = ""
  local argument2 = ""
  local argument3 = ""

  local argNum = 0
  for word in zo_strgmatch(allArgs, "%S+") do
    argNum = argNum + 1
    if argNum == 1 then argument1 = word end
    if argNum == 2 then argument2 = word end -- which could have an @ in it
    if argNum == 3 then argument3 = word end -- use tomunber() if it's an integer
  end
  argument1 = string.lower(argument1) -- to make sure you find what you want in the string
  -- lower the 2nd or 3rd argument if needed

  if argument1 == "help" then
    <<do stuff>>
  end

  local someBooleanVar = <<your code>> -- to detect if the argument has an @
  -- use argument2 ~= "" or argNum == 2, or argNum >= 2
  if argument1 == "travel" and (argument2 ~= "" and someBooleanVar) then -- like when the 2nd argument has an @ in it
    <<do stuff to travel to house>>
  end

<< and so on>>


sinnereso 06/29/23 11:44 PM

I didnt suggest you said anything wrong.. unless you personally feel that way for suggesting i was searching like a squirrel on crack or something for example... I do try to search for my own answers and post here as little as possible mostly for this reason. Forums are for the most part less friendly than prison. I refused to even join one for like 15yrs because I saw the kind of bantering that goes on while googling whatever it was I needed at the time... Nearly the least friendly place on the internet hands down.

If you want to help you need to be more like beartram. This guy has suffered through many of my questions and always kept his cool. You have to realize not everyone is at your level of understanding and while something you respond with might seem simple and basic, could be right out the field of view for someone else and require re-reading it many time after more research for it to click.

Sharlikran 06/30/23 12:10 AM

Quote:

Originally Posted by sinnereso (Post 48034)
I didnt suggest you said anything wrong

Quote:

Originally Posted by sinnereso (Post 48034)
Theres not a capital S on that page!!!

and all im needing is /rd option[1] option[2] option[3] option[4] etc

It's okay. I answered politely at first anyway provided a link with a relevant answer and what you needed for the slash command. Eventually provided a working function similar to what I use. It's not helpful at all like Baertram. He is always nice to me too so food for thought. Maybe some day I can be as nice as he is.

Baertram 06/30/23 12:11 AM

Well, I had the same discussion with you a few weeks ago, and I must sayb
Yes, you search by your own and that's great.
But no, you often do not seem to read the answers properly.
Or you do but not going into detail, letting others (us!) do your job there...


Shatlikran explained it really good, in detsil, linked the description of the lua pattern characters (yes, that uppercase S wasn't explained but uppercase was below all chars, by the A example. So maybe you missed it, or only searched for S :D).

I know it's hard to lrarn new stuff but we REALLY explain alreary more than usual, even write total code for you. And Sharlikran is correct to react annoyed of one needs to repeat the same 3 times.

Forums are not unfriendly. You must keep in mind that there are thousands of ppl asking stuff, many things were asked so often you do not even understand why it's not found by the next asking guys themselves.
And if it feels to take like an endless anserr, with multiple repeats, it's not helping. You feel like taking against a wall then (especially if different answering devs explain, provide info AND links, and it is still ignored/not understood).


So please keep that in mind and try to read the links and sources we provide more sincerely. Understand keywords klike pattern in this case here) and search on that. Google would have shown you multiple results for "lua pattern %S" (even with reddit examples where devs explain all!).

Makes you learn it better/more easily, and unstresses us ppl answering here. Else you might get only 1 link next time, and have to do the research by your own (like it would be best to learn it, actually) until you find your answer and can place the next answwuestion based on it.

If you feel this is not what forums should do for you you might need to go back to the friendly prison guys then
:rolleyes:

@Shalikran Try to strip those squirrel on crack comparisons please :p

Editb Sorry for the many typos, hope it's still readable.
Btw, just read that "Baertram is always nice" part: I'm not.
I jusr adopt to your questions and know meanwhile how to take you, sinnereso. I really must say it's more complicated than others, but I know you got no developer background and thus it might be harder to follow at some steps. So I'm doing the extra mile, but you cannot expect that to happen from all here. So please do not compare me with others and say "you all should be like Baetram".thanks for the words but that's unfair to the others! In the end I should be more like them be let you do more homework :o

sinnereso 06/30/23 12:16 AM

Sharlikran: I wasn't jabbing. I'm the one being attacked multiple times now for asking a question or not understanding the answer.. Either way is that ok? Is that what this forum is for or about? Would you prefer to be here all alone knowing it all talking amongst yourself?

Sharlikran 06/30/23 12:17 AM

:rolling eyes:

Okay... I mean you are the nicest guy. So I'll try to improve and just for you I edited the post. Sorry about that. I had no idea that would be an offensive analogy. Thanks for pointing that out.

Oh I forgot this old post I never finished.

https://www.esoui.com/forums/showthread.php?t=9304

sinnereso 06/30/23 12:25 AM

Quote:

Originally Posted by Sharlikran (Post 48038)
:rolling eyes:

Okay... I mean you are the nicest guy. So I'll try to improve and just for you I edited the post. Sorry about that. I had no idea that would be an offensive analogy. Thanks for pointing that out.

Oh I forgot this old post I never finished.

https://www.esoui.com/forums/showthread.php?t=9304

Maybe time to finish that up =p. I'm just looking for help and ideas. Many I can use and modify to fit my needs. But if I haven't yet understood it I cant make it work. Coding isn't just about the functions but the flow! And my flow is IMO vastly different from most, not in a bad way just different. And just so you know I only just started this 4mo ago. I haven't done anything like this in over 25yrs since before visual C so I'm super rusty.

Baertram 06/30/23 12:35 AM

Quote:

I'm the one being attacked multiple times now for asking a question or not understanding the answer.. Either way is that ok? Is that what this forum is for or about? Would you prefer to be here all alone knowing it all talking amongst yourself?
You nailed it, but it's the other way around. YES that's what forums should do. Tell ppl what to look and search for, not provide the whole answer and code and results so they can copy&paste and "sell it and get money".

Simple answer: If multiple guys tell you the same (not attack but criticize you) it would be time to reflect and think about you actually being the problem and improve on it?
Especially if the ones telling you that, directly, are the ones posting the most answers and helping around here since years! Beside that many others have answeres the same to you already before, like "It was said above alreay, read?" etc.


If this is nothing you understand OR want to understand, you should leave this forum.
If you think you COULD improve, please try to and read more sincerely and at least SHOW by your answers then you did read and only got detail questions on 1 of the provided links, go more to detail and do not let us always do so.

"Take your time there" that's what Sharli was about to say with the "squirrel comparison", and he is right even though the words were maybe wrong.


About the linked other threads:
ALL SAID HERE NOW, please do not go on with sarcastic postings and linking other threads as evidence of "what was wrong or not" as this would only leed to more hate...
If you feel something needs to be clarified then please write private message, or better let it be and reflect now.

sinnereso 06/30/23 06:34 AM

just... WOW

Im not upset about this at all, its more funny than anything. I've said nothing other than ask for help. If he cant HANDLE that then he shouldn't respond. plain and simple

And bear you defending him for being like that just because you likely need his help here is concerning. Noone is forcing anyone to respond and it seems like there's only 2 or 3 left that do, rest probably ran for the hills long ago and for good reason.

After I first joined for example I commented on Inventory Insight that it would be kewl if he added some "get ttc pricing" that I found on the ttc page. I thought It would have been amazing, without knowing or realizing he was also the author of MM. He imediately called me mean and deleted my posts which took me weeks to even understand why. That was our 1st interaction.

ExoY 06/30/23 07:15 AM

Quote:

Originally Posted by sinnereso (Post 48045)
just... WOW

[...]

And bear you defending him for being like that just because you likely need his help here is concerning. Noone is forcing anyone to respond and it seems like there's only 2 or 3 left that do, rest probably ran for the hills long ago and for good reason.

[...]

You honestly need to take a step back and rethink some of the stuff you write.

I can attest from experience (also started with no coding background) that the community around esoui/ addon development is very nice and forthcomming.

It is sad, that just because somebody says something you disagree with (in this case baertram) you automatically assume an alternative motive.... thats not a good approach.

I completely understand the frustration some people display with you in the forum.
Generally asking questions is nothing bad, and is what the forum is for but:
  • you often have disregarded solutions or suggestions by people with far more experience than you.
  • it sometimes makes the impression, that you just immediatly post a question when something is not working. I am aware that how to properly debug a problem (seperate into individual tasks, test them seperately etc) is also something that needs to be learned... but I think you definitely should look into that. (e.g. You said you have difficulty with tables. Then just build a few minimalistic examples, play around with it. Look how other addons do stuff and so on)
  • the original aspect of this thread (working with string) is a good example. There are so many examples out there you can find immedietly with google. Of course you often dont find the solution for your exact problem, but all the information are a good starting point to test around. It makes it very hard to believe when you say, you spend so much time looking for some stuff and couldnt find anything.
  • as been pointed out many times, the idea of the forum is not for other people to just give you the solution. There are many people arround here, who probably can fix the problems you post within a few minutes. The goal is rather to give you some general keywords/links for additional resources so you can figure it out yourself..... kinda a "teach a man to fish" thing.


So I agree completely with Baertram, you need to reflect a little on how you use the forum.

sinnereso 06/30/23 07:46 AM

Quote:

Originally Posted by ExoY (Post 48046)
You honestly need to take a step back and rethink some of the stuff you write.

I can attest from experience (also started with no coding background) that the community around esoui/ addon development is very nice and forthcomming.

It is sad, that just because somebody says something you disagree with (in this case baertram) you automatically assume an alternative motive.... thats not a good approach.

I completely understand the frustration some people display with you in the forum.
Generally asking questions is nothing bad, and is what the forum is for but:
  • you often have disregarded solutions or suggestions by people with far more experience than you.
  • it sometimes makes the impression, that you just immediatly post a question when something is not working. I am aware that how to properly debug a problem (seperate into individual tasks, test them seperately etc) is also something that needs to be learned... but I think you definitely should look into that. (e.g. You said you have difficulty with tables. Then just build a few minimalistic examples, play around with it. Look how other addons do stuff and so on)
  • the original aspect of this thread (working with string) is a good example. There are so many examples out there you can find immedietly with google. Of course you often dont find the solution for your exact problem, but all the information are a good starting point to test around. It makes it very hard to believe when you say, you spend so much time looking for some stuff and couldnt find anything.
  • as been pointed out many times, the idea of the forum is not for other people to just give you the solution. There are many people arround here, who probably can fix the problems you post within a few minutes. The goal is rather to give you some general keywords/links for additional resources so you can figure it out yourself..... kinda a "teach a man to fish" thing.


So I agree completely with Baertram, you need to reflect a little on how you use the forum.

Well in the example of this thread.. It took me nearly a whole day searching just to "discover" those symbols are called magic symbols which is what I needed to be searching for. Its sometimes hard to find what your looking for if you dont know what its even called in the 1st place. I spent 2 days researching them and couldnt find any reference to the capitol S, therefore I couldn't fully understand the sample I was using.

I have considered and maybe I should make a small alternate addon for testing small functions and stuff like that.

My point was I have no hostility to anyone in this thread but have myself been somewhat attacked multiple times. it is better to just not answer someone if your feeling hostile imo and noone is forcing anyone to answer anything.

Baertram 06/30/23 08:53 AM

Without wanting to blow that up even more, just 1 example how your answers read to me (and I'm really glad that ExoY also seems to have noticed the very same, as his lists concludes about what I got the impression of too):

Quote:

My point was I have no hostility to anyone in this thread
Quote:

Originally Posted by sinnereso
And bear you defending him for being like that just because you likely need his help here is concerning.

I call that hostile if you assume stuff and say I'm writing what I write because I need to defend others, because I need them for whatever in the future, and just to have their same opinion?
It's like accusng me for being "on the other side".

But "We got no sides here". It's just that you are opening these sides with your reactions to our critic, like a "mental blockade: They are against me!".
As I wrote above ExoY already summarized that pretty good, thanks for that. I'm no native English speaker so it's hard for me to do it that way.

And you also answered to that how to improve in the future, which is a good reaction, thank you.

ExoY 06/30/23 09:04 AM

Quote:

Originally Posted by sinnereso (Post 48047)
Well in the example of this thread.. It took me nearly a whole day searching just to "discover" those symbols are called magic symbols which is what I needed to be searching for. Its sometimes hard to find what your looking for if you dont know what its even called in the 1st place. I spent 2 days researching them and couldnt find any reference to the capitol S, therefore I couldn't fully understand the sample I was using.

Make sure to also read the text/websites and not just scim through the code examples.
Especially the lua tutorial and wiki pages.

I just did a small experiment and started a google search with "lua string" and every other subsequent search was only "allowed" if I read the term on a previous found page. (Trying to simulate a google search of somebody who doesnt know any of the terminology).
It took me less then 10minutes to get to the page, Sharlikran posted.

(On which, as mentioned before is the capital S actually mentioned)

I am not doubting the amount of time you invest in researching stuff, but suggesting to rather go into detail with a few rather to click through many. Just as an advise for future google searches

votan 06/30/23 09:21 AM

@sinnereso
In your code "value" is the string to search in and "zoneName" is the value to search for.
So, you do search for "Galen" in "Tel Galen" and not the other way round.

"value" should be the first parameter.

Just sayin'

DakJaniels 06/30/23 10:03 AM

eso lua refrences for you @sinnereso
 
1 Attachment(s)
extract this zip, and in the docs folder are HTML pages with lots of useful knowledge

sinnereso 06/30/23 10:29 AM

I do thank you all for the advice and help.. It has helped me greatly both learn lua and get my addon working the way I vision it to.

This all started with me thanking for the compliment and had no intentions of it dragging out like this.

I did realize after some time and posted it here that reversing "zoneName" and "value" might be a solution but I halted that realizing it would only be a bandaid fix for only the galen/tel galen issue and might equally cause the same effect in reverse. I decided the zoneName == blacklist(value) or similar solution was the best one for my needs so long as I have a complete accurate list. I up until now have preferred to avoid lists as I was weak in them and keeping them updated might be a pain but for this one exception I've decided to go ahead with it.

And bear.. I do realize assuming is never good thing but I was looking for motives for completely skipping past the name calling in which I only "thanked for the compliment" right to defending someone that wasn't even being attacked, they only assumed they were. I've had enough of all this anyway.

Thank you all for the help! You've been wonderful! God Bless!!


All times are GMT -6. The time now is 08:02 AM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2014 - 2022 MMOUI