

Phenomena
Members-
Posts
94 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Phenomena
-
This is official languages and they do not make sence in-game until you will use @font command in game. Try to use it.
-
Looking for help with Harmony and latest rAthena
Phenomena replied to Phenomena's question in Source Support
Thank you for your replay, where I can read about GameGuard ( or you mean Gepard Shield )? -
Ragnarok Online Official Fonts 1. You must use language type in your clientinfo.xml ( 0 or 1 ) 2. You must have this files in your game client
-
Hello community! I have one question about the topic name above: I tried to use Cydh patch for rAthena to update server with harmony: https://rathena.org/board/topic/101433-harmony-manual-install-for-latest-rathena/?p=282731 It's works fine until rAthena February 2016, after that rAthena changed something in core.c in function int main (int argc, char **argv)... I tried to find somthing with compare but i don't. So the problem is: Line 361: socket_init(); Line 363: do_init(argc,argv); After uploading Harmony the Line 362 should be: harmony_core_init(); so the final looking: Line 361: socket_init(); Line 362: harmony_core_init(); Line 363: do_init(argc,argv); And this makes server Segmentation Fault redirecting to cli.c to function get_cli_option.... This is harmony_core_init function: void harmony_core_init() { int *module_version; void (*module_init)(); if (!harmony_load_module(HARMCODEFILE)) { ShowFatalError("Unable to load Harmony module.\n"); exit(EXIT_FAILURE); } module_version = (int*)harmony_get_symbol("version"); if (!module_version) { ShowFatalError("Unable to determine Harmony version.\n"); exit(EXIT_FAILURE); } if (*module_version != HARMSRV_VERSION) { ShowFatalError("Invalid Harmony version! Expecting %d, have %d.\n", HARMSRV_VERSION, *module_version); ShowFatalError("Did you forget to recompile after updating?\n"); exit(EXIT_FAILURE); } ShowStatus("Harmony Version: %d.%d.%d\n", HARMSRV_VERSION_MAJOR, HARMSRV_VERSION_MINOR, HARMSRV_VERSION_PATCH); harm_funcs = (struct HARMSRV_HARM_FUNCS*)harmony_get_symbol("harm_funcs"); ea_funcs = (struct HARMSRV_EA_FUNCS*)harmony_get_symbol("ea_funcs"); module_init = (void(*)())harmony_get_symbol("Init"); if (!harm_funcs || !ea_funcs || !module_init) { ShowFatalError("Invalid harmony module exports.\n"); exit(EXIT_FAILURE); } ea_funcs->alloc = crt_alloc; ea_funcs->free = crt_free; ea_funcs->exit = crt_exit; ea_funcs->fopen = crt_fopen; ea_funcs->fclose = crt_fclose; ea_funcs->fread = crt_fread; ea_funcs->fgets = crt_fgets; ea_funcs->harm_msg = harm_msg; ea_funcs->harmsrv_abnormal_error = harmony_abnormal_start; ea_funcs->ea_fd2harmsession = ea_fd2harmsession; ea_funcs->ea_tick = ea_tick; ea_funcs->timer_add = ea_timer_add; ea_funcs->timer_del = ea_timer_del; ea_funcs->socket_disconnect = ea_socket_disconnect; ea_funcs->socket_send = ea_socket_send; harm_timer = idb_alloc(DB_OPT_BASE); module_init(); harm_funcs->init(); } Looks like problem with unload memory....
-
Use command @showrate to enable or disable it.
-
Problem (Bug?) with all types of ****shop
Phenomena replied to Phenomena's question in Scripting Support
No, you don't understand my question at all. I mean, it doesn't matter what type of currency you are using, it can be neither #VARIABLES or ITEM_ID. The point is: if your currency LOWER then your ZENY value (i don't understand sense of making this behavior for public...) you can't buy items, again: You have shop with currency #VARIABLE, you will pay for goods with #VARIABLE, BUT!!! and again BUT if your ZENY LOWER then price of the item - you will never buy it. It's looks like additional checking for a ZENY, but after purchase you will lose only your currency, not zeny. Btw, maybe it's not a script bug, but it's a source bug, so i asking moderate team redirect this topic to source section or in a bug list. Thank you! -
If your ZENY parameter lower than VALUE for purchase in itemshop, pointshop you will never buy an item and message like "You don't have enough Zeny..." will always appear. prontera,156,181,4 script Testing Shop 900,{ callshop "testing_shop",1; end; } - pointshop testing_shop -1,#TESTINGVAR,501:1,502:5,503:10,504:15 For example: Your game character has 100 #TESTINGVAR point. As you can see, all prices below your character's #TESTINGVAR value. Modulating: Your character has 0 Zeny:You cannot buy any item from shop list Your character has 5 Zeny:You can buy only items 501 and 502 from shop list Your character has 20 Zeny:You can buy all items from shop list Is any ways to fix it or it's src bug with permanent issue? Thank you!
-
How to correctly make a check for... ?
Phenomena replied to Phenomena's question in Scripting Support
Working, trying to combine many time, need more time to test, thank you Sir! -
How to correctly make a check for... ?
Phenomena replied to Phenomena's question in Scripting Support
No, Sir, still have make duplicates. -
How to correctly make a check for... ?
Phenomena replied to Phenomena's question in Scripting Support
Not exactly what i mean... 1. We setup .array_list with VALUES: 1, 2, 3, 4, 5; 2. We generate random VALUE for .random_variable : could be from 1 to 4; 3. We processing with for( condition ) { statement } and SETUP "Variable_" + .@a with RANDOM value from .array_list : for example 1; 4. We continue do for( condition ) { statement } UNTIL we will have number of "Variable_" + .@a that equal to .random_variable 5. MAIN POINT: "Variable" + .@a is not repeatable, AGAIN: Variable_0 - one value; Variable_1 - different value IS NOT EQUAL to Variable_0; Variable_2 - different value IS NOT EQUAL to Variable_1 AND IS NOT EQUAL to Variable_0; Again: all Variable_X are unique... Thank you again! -
setarray .array_list[0], 1, 2, 3, 4, 5; set .random_variable, rand( 1,4 ); for( set .@a, 0; .@a < .random_variable; set .@a, .@a + 1 ) { setd( "Variable_" + .@a ), .array_list[ rand( getarraysize( .array_list) ) ]; mes "" + getd( "Variable_" + .@a ) + ""; } How to make non-repeatable "Variable_" + .@a for example if .random_variable > 1: if .random_variable == 4: Variable_1 != Variable_2, Variable_1 != Variable_3, Variable_1 != Variable_4, Variable_2 != Variable_3, Variable_2 != Variable_4, Variable_3 != Variable_4 Is this possible to check it inside for( condition ) { statement }? Thank you for any advises!
-
Is it possible to make floating variable for npc?
Phenomena replied to Phenomena's question in Scripting Support
Oh, Sir E M I S T R Y, i missed this function, should re-read script_commands.txt Thank you Sir, I will try to do this! Update 1.0: Works fine, thank you again! Update 2.0: to get this value should i use getd? Looks like: " + getd( ".activate_aid_"+ strnpcinfo(2) ) + " will print getcharid(3)? Update 3.0: looks like working, thank you again! -
Hello dear community! I have a small question about variable: is it possible to make a floating npc variable? Example of script: - script Activation Stone#0::testnpc 1905,{ // lines... // Trying to make .activate_aid_<HIDDEN NPC NUMBER>... set .activate_aid_"+ strnpcinfo(2), getcharid(3); <<< ERROR... // lines... end; } location,x,y,r duplicate(testnpc) Activation Stone#1 1905 location,x,y,r duplicate(testnpc) Activation Stone#2 1905 location,x,y,r duplicate(testnpc) Activation Stone#3 1905 location,x,y,r duplicate(testnpc) Activation Stone#4 1905 location,x,y,r duplicate(testnpc) Activation Stone#5 1905 location,x,y,r duplicate(testnpc) Activation Stone#6 1905 location,x,y,r duplicate(testnpc) Activation Stone#7 1905 location,x,y,r duplicate(testnpc) Activation Stone#8 1905 Thank you for advising or helping solve this trouble!
-
No, direct NPC Sprite names not working in script system, only in he*mul.
-
[Tutorial] How to Create Ragnarok Offline 2013 client [Tutorial]
Phenomena replied to cassiel's question in Client-side Support
Use ShinsDiffPatcher. Just open in DiffPatcher exe, and follow steps on picture below: -
2012 MS VS, need some more tests, cause all silenced so trying fix it self.
-
Try use this: set .Random, rand(1,100); if( .Random <= 20 ) { getitem 31799, 1; announce "Congratulations ["+strcharinfo(0)+"] for getting ["+getitemname(31799)+"] from Gift Box!!",0; end; } if( .Random > 20 ) { getitem 31823, 1; announce "Congratulations ["+strcharinfo(0)+"] for getting ["+getitemname(31823)+"] from Gift Box!!",0; end; }
-
prontera,155,170,4 script Ore Exchanger 100,{ mes "^3363A6[ Ore Exchanger ]^000000"; mes "Hello, dear Adventure! How can i help you?"; next; menu "Exchange " + getitemname(7232) + " to " + getitemname(675) + "", ExchangeOne, "Exchange " + getitemname(7231) + " to " + getitemname(671) + "", ExchangeTwo, "Exchange " + getitemname(7233) + " to " + getitemname(674) + "", ExchangeThree; ExchangeOne: if( countitem(7232) < 10 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Sorry, but you dont have 10 " + getitemname(7232) + "."; close; } mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; delitem 7232, 10; getitem 675, 1; close; ExchangeTwo: if( countitem(7231) < 10 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Sorry, but you dont have 10 " + getitemname(7231) + "."; close; } mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; delitem 7231, 10; getitem 671, 1; close; ExchangeThree: if( countitem(7233) < 10 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Sorry, but you dont have 10 " + getitemname(7233) + "."; close; } mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; delitem 7233, 10; getitem 674, 1; close; }
-
warpguild "bossnia_01",203,203,getcharid(2); prontera,150,150,3 script Bossnia Guard 123,{ if(BaseJob==Job_Novice || BaseLevel<10) { mes "You're too weak for this."; mes "I don't think you can handle this quest. Go kill more Porings."; close; } getguildmember getcharid(2), 3; if( $@guildmembercount < 1 ) { mes "no members"; close; } set .@name$,"[Bossnia Guard]"; mes .@name$; mes "What level of Bossnia do you want to enter?"; next; switch(select("Bossnia1:Bossnia2:Bossnia3:Bossnia4")){ case 1: mes .@name$; mes "Ok then,"; mes "First you need to pay me 100,000,000z and bring me ^ff000010 Crystal Fragments^000000.."; next; if (countitem(7321) <10 || Zeny < 100000000 ) { mes .@name$; mes "Sorry you don't have enough zeny or you don't have the required items"; } else { mes .@name$; mes "Ow you already have them!"; next; mes .@name$; mes "Okay then, off you go to Bossnia!!!"; next; delitem 7321,10; set Zeny, Zeny-100000000; warpguild "bossnia_01",203,203,getcharid(2); } close;break; case 2: mes .@name$; mes "Ok then,"; mes "First you need to pay me 100,000,000z and bring me ^ff000010 Crystal Fragments^000000.."; next; if (countitem(7321) <10 || Zeny < 100000000 ) { mes .@name$; mes "Sorry you don't have enough zeny or you don't have the required items"; } else { mes .@name$; mes "Ow you already have them!"; next; mes .@name$; mes "Okay then, off you go to Bossnia!!!"; next; delitem 7321,10; set Zeny, Zeny-100000000; warpguild "bossnia_02",203,203,getcharid(2); } close;break; case 3: mes .@name$; mes "Ok then,"; mes "First you need to pay me 100,000,000z and bring me ^ff000010 Crystal Fragments^000000.."; next; if (countitem(7321) <10 || Zeny < 100000000 ) { mes .@name$; mes "Sorry you don't have enough zeny or you don't have the required items"; } else { mes .@name$; mes "Ow you already have them!"; next; mes .@name$; mes "Okay then, off you go to Bossnia!!!"; next; delitem 7321,10; set Zeny, Zeny-100000000; warpguild "bossnia_03",203,203,getcharid(2); } close;break; case 4: mes .@name$; mes "Ok then,"; mes "First you need to pay me 100,000,000z and bring me ^ff000010 Crystal Fragments^000000.."; next; if (countitem(7321) <10 || Zeny < 100000000 ) { mes .@name$; mes "Sorry you don't have enough zeny or you don't have the required items"; } else { mes .@name$; mes "Ow you already have them!"; next; mes .@name$; mes "Okay then, off you go to Bossnia!!!"; next; delitem 7321,10; set Zeny, Zeny-100000000; warpguild "bossnia_04",203,203,getcharid(2); } close;break; } }
-
How To make my client , can not be double login
Phenomena replied to coconutswt's question in Client Requests
When you diff's your exe files select "Disable Multi Window...."; or read this topic and input all maps in your server -
prontera,150,150,3 script Bossnia Guard 123,{ if(BaseJob==Job_Novice || BaseLevel<10) { mes "You're too weak for this."; mes "I don't think you can handle this quest. Go kill more Porings."; close; } getguildmember getcharid(2), 3; if( $@guildmembercount < 5 ) { mes "no members"; close; } set .@name$,"[Bossnia Guard]"; mes .@name$; mes "What level of Bossnia do you want to enter?"; next; switch(select("Bossnia1:Bossnia2:Bossnia3:Bossnia4")){ case 1: mes .@name$; mes "Ok then,"; mes "First you need to pay me 100,000,000z and bring me ^ff000010 Crystal Fragments^000000.."; next; if (countitem(7321) <10 || Zeny < 100000000 ) { mes .@name$; mes "Sorry you don't have enough zeny or you don't have the required items"; } else { mes .@name$; mes "Ow you already have them!"; next; mes .@name$; mes "Okay then, off you go to Bossnia!!!"; next; delitem 7321,10; set Zeny, Zeny-100000000; warp "bossnia_01",203,203; } close;break; case 2: mes .@name$; mes "Ok then,"; mes "First you need to pay me 100,000,000z and bring me ^ff000010 Crystal Fragments^000000.."; next; if (countitem(7321) <10 || Zeny < 100000000 ) { mes .@name$; mes "Sorry you don't have enough zeny or you don't have the required items"; } else { mes .@name$; mes "Ow you already have them!"; next; mes .@name$; mes "Okay then, off you go to Bossnia!!!"; next; delitem 7321,10; set Zeny, Zeny-100000000; warp "bossnia_02",203,203; } close;break; case 3: mes .@name$; mes "Ok then,"; mes "First you need to pay me 100,000,000z and bring me ^ff000010 Crystal Fragments^000000.."; next; if (countitem(7321) <10 || Zeny < 100000000 ) { mes .@name$; mes "Sorry you don't have enough zeny or you don't have the required items"; } else { mes .@name$; mes "Ow you already have them!"; next; mes .@name$; mes "Okay then, off you go to Bossnia!!!"; next; delitem 7321,10; set Zeny, Zeny-100000000; warp "bossnia_03",203,203; } close;break; case 4: mes .@name$; mes "Ok then,"; mes "First you need to pay me 100,000,000z and bring me ^ff000010 Crystal Fragments^000000.."; next; if (countitem(7321) <10 || Zeny < 100000000 ) { mes .@name$; mes "Sorry you don't have enough zeny or you don't have the required items"; } else { mes .@name$; mes "Ow you already have them!"; next; mes .@name$; mes "Okay then, off you go to Bossnia!!!"; next; delitem 7321,10; set Zeny, Zeny-100000000; warp "bossnia_04",203,203; } close;break; } } Just tested, all works!
-
getguildmember getcharid(2), 3; getguildmember getcharid(2), 3; if( $@guildmembercount < 5 ) { mes "Your guild needs at least 5 members."; close; }
-
[Tutorial] How to Create Ragnarok Offline 2013 client [Tutorial]
Phenomena replied to cassiel's question in Client-side Support
Ofcouse, feel free to ask, in forum support section or in PM. -
1. Put this into db/import/item_db.txt 30027,Aurous_Iris_Crown,Aurous Iris Crown,4,0,,2,,5,,1,0xFFFFFFFF,7,2,256,,,1,45,{},{},{} 30028,Aurous_Iris_Aura,Aurous Iris Aura,4,0,,2,,5,,1,0xFFFFFFFF,7,2,256,,,1,45,{},{},{} 30029,Aurous_Iris_Wings,Aurous Iris Wings,4,0,,2,,5,,1,0xFFFFFFFF,7,2,256,,,1,45,{},{},{} 2. Put this to idnum2itemdesctable.txt 30027# Aurous Iris Crown, custom item for `unknownuser`. ^ffffff_^000000 Item Class : ^777777Armor^000000 Defence : ^7777775^000000 Weight : ^777777220^000000 Requared Level : ^7777771^000000 Available Job : ^777777All Classes^000000 # 30028# Aurous Iris Aura, custom item for `unknownuser`. ^ffffff_^000000 Item Class : ^777777Armor^000000 Defence : ^7777775^000000 Weight : ^777777220^000000 Requared Level : ^7777771^000000 Available Job : ^777777All Classes^000000 # 30029# Aurous Iris Wings, custom item for `unknownuser`. ^ffffff_^000000 Item Class : ^777777Armor^000000 Defence : ^7777775^000000 Weight : ^777777220^000000 Requared Level : ^7777771^000000 Available Job : ^777777All Classes^000000 # 3. Put this to idnum2itemdisplaynametable.txt 30027#Aurous_Iris_Crown# 30028#Aurous_Iris_Aura# 30029#Aurous_Iris_Wings# 4. Put this to idnum2itemresnametable.txt 30027#Е©¶уїо# 30028#Е©¶уїо# 30029#Е©¶уїо# Now, make copy-paste to all other your items. Notes: 30027,Aurous_Iris_Crown,Aurous Iris Crown,4,0,,20,,5,,1,0xFFFFFFFF,7,2,256,,,1,45,{},{},{} 20 - Each 10 give you 1 weight 5 - Defence of your equipment 0xFFFFFFFF - Class, that can wear this equipment 256 - Positon of your equipment: Upper Position - 256, Middle Position - 512, Lower Position - 1 (for Crown recommend use 256, for aura use 513, for wings use 1) 45 - View of your equipmentm now it look like Crown (2235) Weight 200 in DB will make this item with 2000 weight... I dont think, that he can store so much weight My fail, sorry. Each 10 give 1 weight... Still dont wake up
-
[Tutorial] How to Create Ragnarok Offline 2013 client [Tutorial]
Phenomena replied to cassiel's question in Client-side Support
Make GM Account in your Ragnarok SQL Server We need have free in-game account, that stored in `login` table in your MySQL Database. Open this `login` table and wi will see next:`account_id` , `userid` , `user_pass` , `sex` , `email` , `group_id` Yes, `group_id` is what we need. This column stores numerical arguments, that define users in-game rights. Simple mask: 0 - Simple User; 1 - Super User; 5 - Premium User; X - ......; 99 - Head Game Master (Administrator) Also you can check this file. There you can find all information about groups, IDs, permissions and other. Btw, if you want to know anymore, i suggest you start new topic, because this is only (i think) tutorial, w/o support, because many users leave this... If players need any new user-friendly guide, i can make it and explane steps by steps all manipulations