Talk:LlGetGender

From Second Life Wiki
Jump to navigation Jump to search

This function should not be implement. While this request may be new, this function (in other incarnations) has been suggested before (llDetectedSex). The debate over this proposed functionality is based on the argument that it would facilitate scripted discrimination. Considering that it is easy enough to ask the user what sex they are, it seems to me not worth the dev time and the political fallout. -- Strife Onizuka 09:48, 1 June 2007 (PDT)

I think you are wrong, the payment status is much more discriminating and is pushed by the Lindens. I want to sell female body parts only to females and not to man. And I want to sell tem notrans. Same with cloths and hair. I want to close my Land for Male. It is my Land I pay tears for it and the rule is : Landowners make the rules. If this policy is changed I aske the Lindens to pay my tears Anylyn Hax 13:04, 1 June 2007 (PDT)

Just because there is one form of discrimination supported doesn't mean that we should accept any others. The only reason we have payment info visible is to facilitate discrimination against griefers. I don't consider it a good thing but it does seem to be a necessary evil. The type of sexual discrimination you describe is not necessary nor is it probably legal. Banning male AVs is one thing, but banning male users is another. I think it would be a violation of the Community Standards, Terms Of Service or federal law. To allow this would be a step backwards both socially and morally. In the last century women have gained a more equal footing with men through legislation mandating equality, this goes against the core of that legislation; with the loss of theses protections, women have more to loose then men (after all 84% of congressmen are men). -- Strife Onizuka 14:59, 1 June 2007 (PDT)
I Seen no discrimination in llGetGender() as long you can turn it off by setting itset it to 0 or another number. It is necesary, and absolute legal.
For Exemple:
0 - No Gender (Animals, Robots, Eunuchs, Linden Emploees, Volunteers)
1 - Female
2 - Male
3 - Children
4 - Ghosts, Witches, Vixons ...
Anylyn Hax 21:27, 1 June 2007 (PDT)
It seems you have made the common mistake of confusing agent and avatar. The avatar is the manifestation of the agent in world. You can change avatars but you can't change agents. The sex of the agent would translate into being the users RL sex. Be it the agent or avatar sex, I am against any function that exposes this information (I suspect that the AV sex was intended and not agent). I'd say more but I am heading to bed. I understand the reasons and the ways of implementing it (had this debate at least three times before in the past) and have remained unconvinced. Sorry. -- Strife Onizuka 01:15, 2 June 2007 (PDT)
1) YOUR OPINION DOESNT COUNT. STOP HARASSING ME WITH YOUR OPINIONS!
2) You are wrong as usual.
- To have a gender is legal.
- To ask for someones gender allso legal.
- I make no difference between avatar and agent, as long they use the same brain (because the brain makes the gender).
3) for some applications it is absolute necesar.
I sell female genitals and I sell them NoTrans. Lots of man buy them as a present for theyr wifes, and dont read carefully that the genitals are NoTrans. So I have situations where I must make cullance and give out free genitals them. If I could sensor the user/avatar/agent whatever, and get his gender I could elegantly tell him that this genitals are not for his stomach.
Another exemple: Weapon builders could restrict pointing a gun to a woman.
Or: I could kickban every male that comes to my land without having flowers attached to his right hand.
Anylyn Hax 06:03, 7 July 2007 (PDT)
  1. It saddens me that you would throw away your integrity to say that someone else's opinion doesn't count.
  2. To ask a person would be legal, but to require the answer and use it to discriminate against them flies in the face of the established rules.
    1. That doesn't sound like a problem that needs to be solved by the introduction of a new function, just have a warning box pop-up before sending the user the object (allowing them to cancel the order & get their money back) reminding them that the object is no-trans. Very user friendly and you can then tell the customer they should have read the pop-up warning. See the script below as an example.
    2. I can't imagine a weapons manufacturer in SL wanting to restrict use of their products. Restrictions result in fewer products sold.
    3. How would you detect the flowers? Sensors cannot detect attachments.
-- Strife Onizuka 12:22, 8 July 2007 (PDT)
//A simple quick and dirty vendor that asks the user before finalizing the sale.
//Written by Strife Onizuka
integer price;
string item;

list channels;
list users;//[ handle, time, user, amount, item]

default
{
    state_entry()
    {
        llSetPayPrice(PAY_HIDE, [PAY_HIDE,PAY_HIDE,PAY_HIDE,PAY_HIDE]);
        llRequestPermissions(llGetOwner(), PERMISSION_DEBIT);
    }
    run_time_permissions(integer p)
    {
        if(p & PERMISSION_DEBIT)
            state Money;
    }
}

state Money
{
    state_entry()
    {
        llSetPayPrice(PAY_HIDE, [price,PAY_HIDE,PAY_HIDE,PAY_HIDE]);
    }
    on_rez(integer a)
    {
        state default;
    }
    touch_start(integer a)
    {
        string msg = item+"\nThe cost is: "+(string)price+"\nIt's permissions are:\n";
        string end;
        if(perms & PERM_TRANSFER)   end += "Transfer\n";    else    msg += "NO-TRANSFER\n";
        if(perms & PERM_COPY)       end += "Copy\n";        else    msg += "NO-COPY\n";
        if(perms & PERM_MODIFY)     end += "Modify\n";      else    msg += "NO-MODIFY\n";
        llDialog(llDetectedKey(0),  msg + end, [], -1);
    }
    money(key user, integer amount)
    {
        if(amount == price)
        {
            integer chan;
            do chan = (integer)llFrand(-2147483648.0);while(~llListFindList(channels, (list)chan));
            integer handle = llListen(chan, "", user, "");
            integer perms = llGetInventoryPermMask(item, MASK_NEXT);
            string msg = "Do you really want to buy this?\nIt's permissions are:\n";
            string end;
            if(perms & PERM_TRANSFER)   end += "Transfer\n";    else    msg += "NO-TRANSFER\n";
            if(perms & PERM_COPY)       end += "Copy\n";        else    msg += "NO-COPY\n";
            if(perms & PERM_MODIFY)     end += "Modify\n";      else    msg += "NO-MODIFY\n";
            if(llGetListLength(channels) > 50)
            {
                llGiveMoney(llList2Key(users, 2), llList2Integer(users, 3));
                users = llDeleteSubList(users, 0, 4);
                channels = llDeleteSubList(channels, 0, 0);
                //TODO: appologize for overcrowding
            }
            channels += chan;
            users += [llGetUnixTime() - 1167627600 + 120, handle, user, amount, item];
            llDialog(user,  msg + end, ["Buy", "Refund"], chan);
        }
        else
        {
            llGiveMoney(user, amount);
            //TODO: appologize for the ammount being wrong
        }
    }
    listen(integer chan, string name, key user, string message)
    {
        if(0 <= (chan = llListFindList(channels, (list)chan)))
        {
            channels = llDeleteSubList(channels, chan, chan);
            chan *= 5;
            if(message == "Buy")
            {
                llGiveInventory(user, llList2String(users, chan + 4));
                //TODO: thank user for purchasing
            }
            else
            {
                llGiveMoney(user, llList2Integer(users, chan + 3));
                //TODO: appologize
            }

            llListenRemove(llList2Integer(users, chan));
            users = llDeleteSubList(users, chan, chan + 4);
        }
    }
    timer()
    {
        integer t = llGetUnixTime() - 1167627600;
        integer b = 0;
        while(t > llList2Float(users, b))
        {
            llListenRemove(llList2Integer(users, b + 1));
            llGiveMoney(llList2Key(users, b + 2), llList2Integer(users, b + 3));
            //TODO: add time-out message
            b += 5;
        }
        if(b)
        {
            users = llDeleteSubList(users, 0, b - 1);
            channels = llDeleteSubList(channels, 0, (b / 5) - 1);
        }
    }
}