System cmdName

Darthfett

Aerospace/Cybersecurity Software Engineer
Reaction score
615
cmdName
Created by Darthfett

Description:
A command that gives name changing functionality. Players can change their name using this system, using the in-game command "-name " along with the desired name. Using this name changing system will prevent players from choosing the name of the map creator.

Requirements:
stringFind
stringFilter
stringColor
Event

The rest of the documentation can be found in the system code, below:

JASS:
library cmdName initializer Init uses Event,stringFilter,stringFind,stringColor
/*
__________________________________________________________________________________

        cmdName library, created by Darthfett - version 1.0
        http://www.thehelper.net/forums/showthread.php?t=144463
        
                                Requirements
                                
-vJass compiler (such as JASSHelper, this version compiled for version 0.A.2.7)
    
+stringFind library - http://www.thehelper.net/forums/showthread.php?t=143591

+stringFilter library - http://www.thehelper.net/forums/showthread.php?t=143589

+stringColor library - http://www.thehelper.net/forums/showthread.php?t=143593

+Event library (this version compiled for version 1.04) - http://www.thehelper.net/forums/showthread.php?t=126846

                                Documentation

-Credit for this library is not necessary.  Feel free to use it in your map.
If you feel obligated to credit me, I won't object.  I only ask that you do 
not simply copy and paste the library as your own.

                                    API

<CONFIG>
    
private constant string cmd
    Set this string to the command to be used to change a player's name.
    Using a space at the end will require a space in-between the command
    and the selected name.
    
private constant string creator
    Set this string to your in-game name, to prevent other players from using your name in-game.
        
private constant string ATTEMPT_SELECT_CREATORS_NAME
    This will be displayed to the player when he attempts to select the map creator's name.
    
<END CONFIG>
    
string In-Game Command "-name "
    This command (by default) allows a player to change color by typing "-name " followed
    by a name, such as "Darthfett" or "BillyJoeBob"
    
    Due to restrictions in the game, the max length of a player's name is 26.

Event EVENT_PLAYER_CHANGES_NAME
    This Event is fired just before a player changes name.
    Invalid name commands will not trigger this Event.
    
global string PlayerSelectedName
    OR
function GetPlayerSelectedName takes nothing returns string
    When a player selects a name, just before he changes name, the
    EVENT_PLAYER_CHANGES_NAME Event is fired.  You can refer to the name
    selected by the player with this function
        
global player PlayerSelectingName
    OR
function GetPlayerSelectingName takes nothing returns player
    When a player selects a name, just before he changes name, the
    EVENT_PLAYER_CHANGES_NAME Event is fired.  You can refer to the player
    selecting a new name with this function
    
public boolean ENABLED <cmdName_ENABLED>
    Set this to true/false to enable/disable the in-game command.
    
__________________________________________________________________________________
*/

globals
    //CONFIG
        private constant string cmd = "-name "
        private constant string creator = "Darthfett"   
        
        private constant string ATTEMPT_SELECT_CREATORS_NAME = RED + "Invalid name.  You cannot select the name of the map creator." + END
    //END CONFIG
    
    public boolean ENABLED = true
        
    Event EVENT_PLAYER_CHANGES_NAME
    string PlayerSelectedName
    player PlayerSelectingName
    
    private player creatorPlayer = null
endglobals

function GetPlayerSelectedName takes nothing returns string
    return PlayerSelectedName
endfunction

function GetPlayerSelectingName takes nothing returns player
    return PlayerSelectingName
endfunction

private function Conditions takes nothing returns boolean
    return StartsWith(GetEventPlayerChatString(),cmd,false) and ENABLED
endfunction

private function Actions takes nothing returns nothing
    set PlayerSelectedName = Strip(SubString(GetEventPlayerChatString(),StringLength(cmd),StringLength(GetEventPlayerChatString())))
    set PlayerSelectingName = GetTriggerPlayer()
    if StringCase(PlayerSelectedName,false) == StringCase(creator,false) and PlayerSelectingName != creatorPlayer then
        call DisplayTextToPlayer(PlayerSelectingName,0,0,ATTEMPT_SELECT_CREATORS_NAME)
        return
    endif
    call EVENT_PLAYER_CHANGES_NAME.fire()
    call SetPlayerName(PlayerSelectingName,PlayerSelectedName)
endfunction

private function Init takes nothing returns nothing
    local trigger t = CreateTrigger()
    local integer i = 0
    loop
        exitwhen i >= 12
        call TriggerRegisterPlayerChatEvent(t,Player(i),"",false)
        set i = i + 1
    endloop
    call TriggerAddCondition(t,Condition(function Conditions))
    call TriggerAddAction(t,function Actions)
    set EVENT_PLAYER_CHANGES_NAME = Event.create()
    set i = 0
    loop
        exitwhen i >= 12
        if StringCase(GetPlayerName(Player(i)),false) == StringCase(creator,false) then
            set creatorPlayer = Player(i)
        endif
        set i = i + 1
    endloop
endfunction

endlibrary
 

tooltiperror

Super Moderator
Reaction score
231
Why not the simple GUI Trigger and an if/then/else?

Why not put it in a scope instead of a library?

[ljass]library cmdName initializer Init uses Event,stringFilter,stringFind,stringColor[/ljass] - You should add stringColor into the list at the top of the post.
[ljass] public boolean ENABLED = true[/ljass] - Shouldn`t this be in the config box?
 

Darthfett

Aerospace/Cybersecurity Software Engineer
Reaction score
615
Why not the simple GUI Trigger and an if/then/else?

1. This is configurable
2. This uses Event, which allows it to play nice with other systems.
3. Prevents use of the map creator's name.

Why not put it in a scope instead of a library?

So that people get correct errors if they do not have the requirements, and so that players can use the included event on Init. Is there any real purpose to scopes? All they do is leave out the requirements which ends up causing problems later on.

[ljass]library cmdName initializer Init uses Event,stringFilter,stringFind,stringColor[/ljass] - You should add stringColor into the list at the top of the post.

Good point, I'll add it in, thanks. :)

[ljass] public boolean ENABLED = true[/ljass] - Shouldn`t this be in the config box?

If you notice, it's not constant. This can be enabled/disabled in-game, for whatever reasons you may have. While it works as a configuration for enabling/disabling it, it can be changed in-game, unlike the other configurables.
 

tooltiperror

Super Moderator
Reaction score
231
>>1. This is configurable
2. This uses Event, which allows it to play nice with other systems.
3. Prevents use of the map creator's name.

Again, if..then..else can do this easily, and configurability is pointless in something so simple.


>>So that people get correct errors if they do not have the requirements, and so that players can use the included event on Init. Is there any real purpose to scopes? All they do is leave out the requirements which ends up causing problems later on.
Makes sense.

>>If you notice, it's not constant. This can be enabled/disabled in-game, for whatever reasons you may have. While it works as a configuration for enabling/disabling it, it can be changed in-game, unlike the other configurables.
I would personally put it in there anyway, just for the sake of flow.

I recommend merging this with another library.
 

Darthfett

Aerospace/Cybersecurity Software Engineer
Reaction score
615
>>1. This is configurable
2. This uses Event, which allows it to play nice with other systems.
3. Prevents use of the map creator's name.

Again, if..then..else can do this easily, and configurability is pointless in something so simple.

If-then-else can do what, exactly?

Configurability is NOT pointless for those who don't know (v)JASS, and it's actually quite useful to not have to go through someone else's code.

I recommend merging this with another library.

Which one, exactly? The other command libraries are not related, as they let players change different things. The stringPlayer library should not require event or have an initially enabled name-changing command for someone who just wants to use the library for something simple, like this.
 

Narks

Vastly intelligent whale-like being from the stars
Reaction score
90
In the time it takes to search up this system, someone could have written their own -name command.

In GUI.
 

tooltiperror

Super Moderator
Reaction score
231
If-then-else can do what, exactly?
You can just make an if that makes sure that the substring is not the name of the creator.

Configurability is NOT pointless for those who don't know (v)JASS, and it's actually quite useful to not have to go through someone else's code.
You should be able to configure your own triggers if you make them yourself.


Which one, exactly? The other command libraries are not related, as they let players change different things. The stringPlayer library should not require event or have an initially enabled name-changing command for someone who just wants to use the library for something simple, like this.

I wouldn't know, they're your libraries > >
 

Darthfett

Aerospace/Cybersecurity Software Engineer
Reaction score
615
You can just make an if that makes sure that the substring is not the name of the creator.

An if-then-else is almost exactly what this does. This, however, will also prevent people from using the name "darthfett" (while a 'simple' if-then-else will only prevent use of the name "Darthfett", unless you use the StringCase function like this library does). It will also allow the map creator to change his name at will, while allowing him to change it back.

I wouldn't know, they're your libraries > >

If you don't even know what my other libraries do, why are you telling me (the person who knows what's in all the libraries) that some of them need to be merged? At the very least, give a reason BESIDES the fact that I have submitted many resources. Last time I checked, there was no limit to the amount of resources that can be submitted by any one person, nor any precedent for merging multiple unrelated resources because they have a similar name.
 

Narks

Vastly intelligent whale-like being from the stars
Reaction score
90
i've found it best to just ignore all of tooltip's posts

lol


but seriously, this system is just so pointless

maybe it it allowed you to put colors in your name, or prevented you from mimicking other people with same / similar names, and functionality to retrieve player original names then it might be useful.

also ugly interface
 

Darthfett

Aerospace/Cybersecurity Software Engineer
Reaction score
615
but seriously, this system is just so pointless

I think what you mean is simple, which is not necessarily a bad thing. I prefer having a simple resource all made and ready, to having to code it myself in all of my maps.

>Put colors in your name

.. and what sort of interface would you propose for that? I personally think this makes it confusing for users.

>Prevented you from mimicking other players' names

I may consider supporting this, good idea. :D

>functionality to retrieve player original names

Ehh, I don't consider this to be very useful. It would be simple to set an array on map initialization. I might consider a "-reset name" command, but I don't find it to be too useful. Most people already know their name.

also ugly interface

Which part, specifically? I happen to like the interface, as it mimics the default Warcraft III event system.

JASS:
library DisplayNameChange initializer Init uses cmdName,stringPlayer

    private function Actions takes nothing returns nothing
        call DisplayTextToPlayer(GetLocalPlayer(),0,0,GetPlayerName(P2CN(GetPlayerSelectingName()) + " has changed names to " + P2CS(GetPlayerSelectingName()) + GetPlayerSelectedName() + END)
    endfunction

    private function Init takes nothing returns nothing
        local trigger t = CreateTrigger()
        call TriggerRegisterEvent(t,EVENT_PLAYER_CHANGES_NAME)
        call TriggerAddAction(t,function Actions)
    endfunction

endlibrary
 

tooltiperror

Super Moderator
Reaction score
231
This is just such a simple, pointless, easy system, that there is no reason for it to be approved.

I said plenty of times that you could do this with one simple trigger, without any JASS.
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • Ghan Ghan:
    Still lurking
    +3
  • The Helper The Helper:
    I am great and it is fantastic to see you my friend!
    +1
  • The Helper The Helper:
    If you are new to the site please check out the Recipe and Food Forum https://www.thehelper.net/forums/recipes-and-food.220/
  • Monovertex Monovertex:
    How come you're so into recipes lately? Never saw this much interest in this topic in the old days of TH.net
  • Monovertex Monovertex:
    Hmm, how do I change my signature?
  • tom_mai78101 tom_mai78101:
    Signatures can be edit in your account profile. As for the old stuffs, I'm thinking it's because Blizzard is now under Microsoft, and because of Microsoft Xbox going the way it is, it's dreadful.
  • The Helper The Helper:
    I am not big on the recipes I am just promoting them - I use the site as a practice place promoting stuff
    +2
  • Monovertex Monovertex:
    @tom_mai78101 I must be blind. If I go on my profile I don't see any area to edit the signature; If I go to account details (settings) I don't see any signature area either.
  • The Helper The Helper:
    You can get there if you click the bell icon (alerts) and choose preferences from the bottom, signature will be in the menu on the left there https://www.thehelper.net/account/preferences
  • The Helper The Helper:
    I think I need to split the Sci/Tech news forum into 2 one for Science and one for Tech but I am hating all the moving of posts I would have to do
  • The Helper The Helper:
    What is up Old Mountain Shadow?
  • The Helper The Helper:
    Happy Thursday!
    +1
  • Varine Varine:
    Crazy how much 3d printing has come in the last few years. Sad that it's not as easily modifiable though
  • Varine Varine:
    I bought an Ender 3 during the pandemic and tinkered with it all the time. Just bought a Sovol, not as easy. I'm trying to make it use a different nozzle because I have a fuck ton of Volcanos, and they use what is basically a modified volcano that is just a smidge longer, and almost every part on this thing needs to be redone to make it work
  • Varine Varine:
    Luckily I have a 3d printer for that, I guess. But it's ridiculous. The regular volcanos are 21mm, these Sovol versions are about 23.5mm
  • Varine Varine:
    So, 2.5mm longer. But the thing that measures the bed is about 1.5mm above the nozzle, so if I swap it with a volcano then I'm 1mm behind it. So cool, new bracket to swap that, but THEN the fan shroud to direct air at the part is ALSO going to be .5mm to low, and so I need to redo that, but by doing that it is a little bit off where it should be blowing and it's throwing it at the heating block instead of the part, and fuck man
  • Varine Varine:
    I didn't realize they designed this entire thing to NOT be modded. I would have just got a fucking Bambu if I knew that, the whole point was I could fuck with this. And no one else makes shit for Sovol so I have to go through them, and they have... interesting pricing models. So I have a new extruder altogether that I'm taking apart and going to just design a whole new one to use my nozzles. Dumb design.
  • Varine Varine:
    Can't just buy a new heatblock, you need to get a whole hotend - so block, heater cartridge, thermistor, heatbreak, and nozzle. And they put this fucking paste in there so I can't take the thermistor or cartridge out with any ease, that's 30 dollars. Or you can get the whole extrudor with the direct driver AND that heatblock for like 50, but you still can't get any of it to come apart
  • Varine Varine:
    Partsbuilt has individual parts I found but they're expensive. I think I can get bits swapped around and make this work with generic shit though
  • Ghan Ghan:
    Heard Houston got hit pretty bad by storms last night. Hope all is well with TH.
  • The Helper The Helper:
    Power back on finally - all is good here no damage
    +2
  • V-SNES V-SNES:
    Happy Friday!
    +1
  • The Helper The Helper:
    New recipe is another summer dessert Berry and Peach Cheesecake - https://www.thehelper.net/threads/recipe-berry-and-peach-cheesecake.194169/

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top