SphereCommunity
Arguments on Defnames + SysMessage - Printable Version

+- SphereCommunity (https://forum.spherecommunity.net)
+-- Forum: Sphere 0.56d (/Forum-Sphere-0-56d)
+--- Forum: Script Help (/Forum-Script-Help)
+--- Thread: Arguments on Defnames + SysMessage (/Thread-Arguments-on-Defnames-SysMessage)



Arguments on Defnames + SysMessage - XuN - 08-22-2013 02:37 AM

Hi, I have a custom translation system working with defnames that works fairly nice, I use, for example, i_eng_<baseid> for items/npcs to looking for their english translation with no problem, problems come when I make custom content like if I want for example put this text on a defname: You are giving <src.name> a total of <act.amount> gold, there's no way to make 'trans_eng_givegold=You are giving %s a total of %n gold', like you can in sphere_msgs, and then send that to client in this format sysmessage "<def.trans_eng_givegold>,<src.name>,<act.amount>" or I don't know how yet, it would be very usefull to be able to format sysmessages and everything else.


RE: Arguments on Defnames + SysMessage - darksun84 - 08-22-2013 04:15 AM

Well, it's better to use clilocs for translation i think.

Anyway, there are some workaround like this one :

PHP Code:
//There aren't <> for src.name and act.amount, they will be interpreted later
//Commas are used for separating the parts of string that need to be interpreted from the
// ones that doesn't.
[DEFNAME test_transaction]
test_1    You are giving,src.name,a total of,act.amount  

//This is just for testing
[FUNCTION transaction]
newitem i_gold,500
act 
= <new>
sysmessage  <transaction_test <def.test_1>>

//args Full defname
//argv[0] You are giving..
//argv[1] src.name
//argv[2] a total of
//argv[3] act.amount
[FUNCTION transaction_test]
//This just split the defname in various part
//the double <<>> it's needed for  the interpretation
//<argv[1]> = src.name
//<<argv[1]> = <src.name>
return <argv[0]> <<argv[1]>><argv[2]> <<argv[3]>> 

Even if it works, i don't think it's a good solution, it's just works for a defname that follow
a certain pattern.


RE: Arguments on Defnames + SysMessage - XuN - 08-22-2013 04:35 AM

Hello, thanks in advance for anwser. I've tried that kind of workarounds... the problem is that I have to manually check for argv[x] in case of any, wich excludes the use of commas in my texts, I could use some character like ยท and strreplace to comma, but it would be bad idea to use those functions in a translating function that fires on npc @click, item @click and sysmessages/messages, etc from all scripts, basically I changed every server text to translated text. Thats why I ask for some formateable message system hardcoded.