Snippet OnChat

Azlier

Old World Ghost
Reaction score
461
I don't know about you guys, but I am tired of writing the exact same Init function twenty times.

EDIT: Why did I give this the [System] tag?

JASS:
library TriggerRegisterOnChat
//TriggerRegisterOnChat takes these arguments:
// Which trigger you are registering for, the string you are registering, 
// and whether the string should be an exact match.


//TriggerRegisterOnChatEx takes these arguments:
// Which trigger you are registering for, the string you are registering, 
// whether the string should be an exact match, your condition function (if any), 
// and your actions function (if any).

//Also returns the supplied trigger if you want to use crazy syntax.

function TriggerRegisterOnChatEx takes trigger t, string s, boolean b, code cond, code act returns trigger
	local integer i = 11
	loop
		call TriggerRegisterPlayerChatEvent(t, Player(i), s, b)
		exitwhen i == 0
		set i = i - 1
	endloop
	
	if cond != null then
		call TriggerAddCondition(t, Condition(cond))
	endif
	
	if act != null then
		call TriggerAddAction(t, act)
	endif

        return t
endfunction	

function TriggerRegisterOnChat takes trigger t, string s, boolean b returns trigger
    return TriggerRegisterOnChatEx(t, s, b, null, null)
endfunction
	
endlibrary
 

Narks

Vastly intelligent whale-like being from the stars
Reaction score
90
Awesome indenting. Strange syntax (onChat? seriously? Why not TriggerRegisterChatEventAll or something, and then let people make their own conditions / actions).
 

Azlier

Old World Ghost
Reaction score
461
That's jEdit's indenting for ya.

OnChat is shorter to type. If you want me to change it to something longer without really conveying any more information, I most certainly can.
 

Narks

Vastly intelligent whale-like being from the stars
Reaction score
90
Well, more to keep the Blizzard convention... and to avoid all those damn extra arguments.
 

Azlier

Old World Ghost
Reaction score
461
The point of this is to shorten typing.

It shouldn't be any less efficient either, because your Init function should inline directly into the main function. But the != null checks may slow it down God knows how much. Nothing I can perceive. How fantastical.
 

quraji

zap
Reaction score
144
Nice. PrintOrders is a better time saver though. I'd probably save more time just writing the function myself quickly, and it's not like any lib will every require this.
But, it's the thought that counts :thup:

let people make their own conditions / actions).

Go ahead. TriggerAddAction() and TriggerAddCondition() still work.

Well, more to keep the Blizzard convention... and to avoid all those damn extra arguments.

Defeats the purpose.
 
Reaction score
341
This is just something that someone should personally create to add to their own maps.

I honestly don't think it's enough to get approved.
 

Kenny

Back for now.
Reaction score
202
>Well, more to keep the Blizzard convention... and to avoid all those damn extra arguments.

I agree on the name thing. OnChat doesn't really explain much. But it is like that for simplicity I guess.

However the arguments thing is basically all this library provides in my eyes.

JASS:
call OnChat(trig,"-help",true,function Conditions,function Actions)

// Compared to:

call OnChat(trig,"-help",true)
call TriggerAddCondition(trig,Condition(function Conditions))
call TriggerAddAction(trig,function Actions)


And as quraji said, you can use null for the last two arguments and add your own I guess.

However, this snippet as a whole seems a bit too simple to be approved here in my opinion. It is one of those things that most mappers will write when they come across a similar situation you did.

If I came across the situation, it would take me more time to remember that you wrote this, open the internet, find this thread and then copy and paste the code, than it would for me to just write it.

Also, not much thought was needed for this. If it was something innovative or new or clever then my opinion would be different, but right now I think this snippet is a bit too bare, and it could possibly lead way to more people thinking that submitting simple things is a good idea.

But yeah, that is just my opinion. :D Let's see what others have to say.
 

Romek

Super Moderator
Reaction score
963
Onchat sounds like a name of a function which runs on-chat.
I agree that this should follow Blizzards naming conventions.

It's still shorter to type than the whole event...
 

Azlier

Old World Ghost
Reaction score
461
I don't see what a textmacro would achieve.
 

Darthfett

Aerospace/Cybersecurity Software Engineer
Reaction score
615
I don't see what a textmacro would achieve.

Same code, different function name. He meant you could have one function with the name OnChat, and one with the name OnChatEvent (or something similar).

EDIT: Why did I give this the [System] tag?

Fixed. :p
 
Reaction score
341
Like this:

JASS:
library TriggerRegisterOnChat
//TriggerRegisterOnChat takes these arguments:
// Which trigger you are registering for, the string you are registering, 
// and whether the string should be an exact match.


//TriggerRegisterOnChatEx takes these arguments:
// Which trigger you are registering for, the string you are registering, 
// whether the string should be an exact match, your condition function (if any), 
// and your actions function (if any).

//Also returns the supplied trigger if you want to use crazy syntax.

function TriggerRegisterOnChatEx takes trigger t, string s, boolean b, code cond, code act returns trigger
	local integer i = 11
	loop
		call TriggerRegisterPlayerChatEvent(t, Player(i), s, b)
		exitwhen i == 0
		set i = i - 1
	endloop
	
	if cond != null then
		call TriggerAddCondition(t, Condition(cond))
	endif
	
	if act != null then
		call TriggerAddAction(t, act)
	endif

        return t
endfunction	

//! textmacro onChatMacro takes NAME
function $NAME takes trigger t, string s, boolean b returns trigger
    return TriggerRegisterOnChatEx(t, s, b, null, null)
endfunction
//! endtextmacro
//! runtextmacro onChatMacro ("TriggerRegisterOnChat")
//! runtextmacro onChatMacro ("onChat")
endlibrary
 

Jesus4Lyf

Good Idea™
Reaction score
397
>If I came across the situation, it would take me more time to remember that you wrote this, open the internet, find this thread and then copy and paste the code, than it would for me to just write it.
>it could possibly lead way to more people thinking that submitting simple things is a good idea.

As you can see from how everyone thinks it should be done differently, this serves no purpose. When it's so small that people's opinions matter that much, you know people are better off writing it themselves. :)

GY'd.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      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