

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
-
prontera,150,150,4%TAB%script%TAB%additional_skills%TAB%100,{ skill 681,1,0; end; }
-
[Tutorial] How to Create Ragnarok Offline 2013 client [Tutorial]
Phenomena replied to cassiel's question in Client-side Support
Omg, your server has login username and your account has login username? Try another account! P.S: In your MySQL account_id `1` with login `username` and password `password` with type `S` using by server only! This is not your administrator account, dont use this account at all! -
[Tutorial] How to Create Ragnarok Offline 2013 client [Tutorial]
Phenomena replied to cassiel's question in Client-side Support
Hey, as i understand, you try LOG IN with SERVER ACCOUNT? in Login line try testaccount_M in Pass line try 12345 -
[Tutorial] How to Create Ragnarok Offline 2013 client [Tutorial]
Phenomena replied to cassiel's question in Client-side Support
Lub files or anything translation dont have any affect between login - char - map server when you start them. And as this is support topic for 2013 clients, 2012 (my suggested client) i think is not allowed there, but: Lets start from beginning, start from server source code: I. Source Code Part 1. Lets define, what type of ingame mechanic will be: Renewal ? Pre-Renewal goto src/config/renewal.h This is Renewal Mechanic This is Pre-Renewal Mechanic 2. Lets check or enable VIP System goto src/common/core.h 3. Lets define version of packet for your server: goto src/common/mmo.h find: #ifndef PACKETVER #define PACKETVER 20130807 //#define PACKETVER 20120410 #endif now, with attention, change #define PACKETVER 20130807 line to your EXE version, example, as i suggest you 20120410, so the line will be like this: #ifndef PACKETVER #define PACKETVER 20120410 //#define PACKETVER 20120410 #endif Okey! We finished change source, so we can compile the server in Realise Mode. II. Server configuration files 1. Lets make servers IP Adress `visible`: goto conf/login_athena.conf for you use next configuration: // The login server listens on the interface with this IP address. // NOTE: This allows you to run multiple servers on multiple interfaces // while using the same ports for each server. //bind_ip: 127.0.0.1 // Login Server Port login_port: 6900 goto conf/char_athena.conf // Server Communication username and password. userid: THIS YOUR SERVER LOGIN passwd: THIS YOUR SERVER PASSWORD // Login Server IP // The character server connects to the login server using this IP address. // NOTE: This is useful when you are running behind a firewall or are on // a machine with multiple interfaces. login_ip: 127.0.0.1 // The character server listens on the interface with this IP address. // NOTE: This allows you to run multiple servers on multiple interfaces // while using the same ports for each server. //bind_ip: 127.0.0.1 // Login Server Port login_port: 6900 // Character Server IP // The IP address which clients will use to connect. // Set this to what your server's public IP address is. char_ip: 127.0.0.1 // Character Server Port char_port: 6121 goto conf/map_athena.conf //-------------------------------------------------------------- // Configuration Info //-------------------------------------------------------------- // Interserver communication passwords, set in account.txt (or equiv.) userid: THIS YOUR SERVER LOGIN passwd: THIS YOUR SERVER PASSWORD // Character Server IP // The map server connects to the character server using this IP address. // NOTE: This is useful when you are running behind a firewall or are on // a machine with multiple interfaces. char_ip: 127.0.0.1 // The map server listens on the interface with this IP address. // NOTE: This allows you to run multiple servers on multiple interfaces // while using the same ports for each server. //bind_ip: 127.0.0.1 // Character Server Port char_port: 6121 // Map Server IP // The IP address which clients will use to connect. // Set this to what your server's public IP address is. map_ip: 127.0.0.1 // Map Server Port map_port: 5121 goto conf/inter_athena.conf // Global SQL settings // overridden by local settings when the hostname is defined there // (currently only the login-server reads/obeys these settings) sql.db_hostname: 127.0.0.1 sql.db_port: 3306 sql.db_username: USERNAME TO CONNECT TO MYSQL sql.db_password: PASSWORD TO CONNECT TO MYSQL sql.db_database: YOUR RAGNAROK DATABASE NAME sql.codepage: // MySQL Character SQL server char_server_ip: 127.0.0.1 char_server_port: 3306 char_server_id: USERNAME TO CONNECT TO MYSQL char_server_pw: PASSWORD TO CONNECT TO MYSQL char_server_db: YOUR RAGNAROK DATABASE NAME // MySQL Map SQL Server map_server_ip: 127.0.0.1 map_server_port: 3306 map_server_id: USERNAME TO CONNECT TO MYSQL map_server_pw: PASSWORD TO CONNECT TO MYSQL map_server_db: YOUR RAGNAROK DATABASE NAME // MySQL Log SQL Database log_db_ip: 127.0.0.1 log_db_port: 3306 log_db_id: USERNAME TO CONNECT TO MYSQL log_db_pw: PASSWORD TO CONNECT TO MYSQL log_db_db: YOUR RAGNAROK DATABASE NAME log_codepage:log_login_db: loginlog Okey, server connection to MySQL and between each finished. III. Configure / Check your MySQL Database goto MySQL -> YOUR RAGNAROK DATABASE -> Login (table) Now check your Username & Password in database and set them SAME AS IN char_athena.conf IV. Okey, now server configurated at 90%... goto db/packet_db.txt // Main packet version of the DB to use (default = max available version) // Client detection is faster when all clients use this version. // Version 23 is the latest Sakexe (above versions are for Renewal clients) //packet_db_ver: 45 packet_db_ver: 30 I wrote packet_db_ver: 30 because i suggest you use 20120410 client. Find: packet_ver:30 Replace with mine: Okey, now start Login - Char - Map servers! And go on! -
[Tutorial] How to Create Ragnarok Offline 2013 client [Tutorial]
Phenomena replied to cassiel's question in Client-side Support
<?xml version="1.0" encoding="euc-kr" ?> <clientinfo> <desc>Ragnarok Online Belarus</desc> <servicetype>russia</servicetype> <servertype>sakray</servertype> <extendedslot /> <connection> <display>Ragnarok Online Belarus</display> <desc>Classic Ragnarok Online</desc> <balloon>Rates: x1/x1/x1</balloon> <address>YOUR IP</address> <port>YOUR PORT</port> <version>30</version> <langtype>0</langtype> <registrationweb></registrationweb> <aid> <admin>2000000</admin> </aid> <loading> <image>loading00.jpg</image> </loading> </connection> </clientinfo> try this clientinfo (change IP and PORT) in db/packet_db.txt packet_db_ver: 30 -
[Tutorial] How to Create Ragnarok Offline 2013 client [Tutorial]
Phenomena replied to cassiel's question in Client-side Support
http://brynner-clientside.googlecode.com/svn/trunk/Clients/Ragexe/2012/ -
[Tutorial] How to Create Ragnarok Offline 2013 client [Tutorial]
Phenomena replied to cassiel's question in Client-side Support
mmo.h #ifndef PACKETVER #define PACKETVER 20130703 //#define PACKETVER 20120410 #endif ? But wait! //2013-06-05 Ragexe (Shakto) packet_ver: 38 //2013-07-03 Ragexe packet_ver: 42 Something wrong with your packet_db.txt Try to use 2012-04-10aRagexe, apply corrected DIFFs and use packet_ver: 30 -
[Tutorial] How to Create Ragnarok Offline 2013 client [Tutorial]
Phenomena replied to cassiel's question in Client-side Support
Maybe packet_ver / clientinfo / langtype errors... What versions of packet_ver, clientinfo and exe? -
prontera,156,193,4 script Pre Warper Quest 100,{ mes "Setting variable to #ama_dungeon, 1"; set #ama_dungeon, 1; close; } case 2: if( #ama_dungeon ) { warp "ama_dun01",228,11; getmapxy(lastmap$,lastx,lasty,0); close; } if( event_amatsu >= 6){ warp "ama_dun01",228,11; getmapxy(lastmap$,lastx,lasty,0); close; } else { warp "amatsu",168,171; getmapxy(lastmap$,lastx,lasty,0); close; } Just tested with various chars at account - all works!
-
[Tutorial] How to Create Ragnarok Offline 2013 client [Tutorial]
Phenomena replied to cassiel's question in Client-side Support
Access denied for user root@localhost (using password: YES) This mean, that Login and Password in inter_athena.conf incorrect, server cant connect to MySQL. Also re-check Login & Password in char_athena.conf, map_athena.conf and `login` table in your MySQL. -
if( #ra_dun ) { script } or if( #ra_dun == 1 ) { script }
-
no... no at all. leave original quest varibles + your custom: npc/quests/quests_rachel.txt line 5266 set MISC_QUEST,MISC_QUEST | 8192; set #rachel_quest_dungeon, 1; case 31: if( #rachel_quest_dungeon ) { warp "ra_temin",27,315; getmapxy(lastmap$,lastx,lasty,0); end; } if(#MISC_QUEST & 8192){ warp "ra_temin",27,315; getmapxy(lastmap$,lastx,lasty,0); end; } else { warp "rachel",98,239; getmapxy(lastmap$,lastx,lasty,0); close; } Btw, i suggest you stop implement this idea as we discussing, and try to use universal quest: Example: prontera,150,150,4 script Universal Dungeon Quest 100,{ mes "If you make this quest, you will take #global_quest_acc variable, that allow you to teleport in any dungeon!"; next; menu "Make quest", UniDunQuest, "Waht i need?", UniDunQuestReq; UniDunQuest: if( #global_quest_acc ) { mes "You already can access to any dungeon with your CUSTOM WARPER."; close; } if( countitem(512) < 100 ) { mes "Quest failed."; close; } delitem 512, 100; set #global_quest_acc, 1; mes "Congratz, you make this quest and #global_quest_acc successfull added to your account!"; close; UniDunQuestReq: mes "Bring me 100 " + getitemname(512) + "!"; close; }
-
when i click exchange mithril ore to coins , it appear : minimum exchange rate is : mithril ore x 10 bronze coin x 1 , why ? I have 10 mithril coin in my inventory Mithril Ore (7233) IS NOT Mithril (7757) AND NOT Mithril Coin (674)! Omg.... Okey.... Lets do another way: 1. YOU CAN EXCHANGE ONLY ITEM WITH ID 7757 TO : Bronze Coin (need 10 items with ID 7757) Silver Coin (need 20 items with ID 7757) Gold Coin (need 30 items with ID 7757) Mithril Coin (need 60 items with ID 7757) 2. YOU CAN EXCHANGE ONLY ITEM WITH ID 7233 TO : Bronze Coin (need 20 items with ID 7233) Silver Coin (need 30 items with ID 7233) Gold Coin (need 40 items with ID 7233) Mithril Coin (need 50 items with ID 7233) 3. ITEM WITH ID 7757 - Mithril 4. ITEM WITH ID 7233 - Mithril Ore
-
// Simple Ore Excange to coconutswt, user of rAthena community // ============================================================ 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(7757) + " to Coins", ExMithril2Coins, "Exchange " + getitemname(7233) + " to Coins", ExMithrilOre2Coins; ExMithril2Coins: if( countitem(7757) < 1 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "You dont have event 1 " + getitemname(7757) + "..."; emotion e_heh; close; } if( countitem(7757) < 10 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Minimum exchange rate is: " + getitemname(7757) + " x 10 to " + getitemname(673) + " x 1 "; close; } switch( select( "Exchange to Bronze Coin", "Exchange to Silver Coin", "Exchange to Gold Coin", "Exchange to Mithril Coin" ) ) { case 1: if( countitem(7757) < 10 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Oops, where is your items? You need 10 " + getitemname(7757) + " at least..."; close; } delitem 7757, 10; getitem 673, 1; mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; close; case 2: if( countitem(7757) < 20 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Oops, where is your items? You need 20 " + getitemname(7757) + " at least..."; close; } delitem 7757, 20; getitem 675, 1; mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; close; case 3: if( countitem(7757) < 30 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Oops, where is your items? You need 30 " + getitemname(7757) + " at least..."; close; } delitem 7757, 30; getitem 671, 1; mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; close; case 4: if( countitem(7757) < 50 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Oops, where is your items? You need 50 " + getitemname(7757) + " at least..."; close; } delitem 7757, 50; getitem 674, 1; mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; close; } ExMithrilOre2Coins: if( countitem(7233) < 1 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "You dont have event 1 " + getitemname(7233) + "..."; emotion e_heh; close; } if( countitem(7233) < 20 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Minimum exchange rate is: " + getitemname(7233) + " x 10 to " + getitemname(673) + " x 1 "; close; } switch( select( "Exchange to Bronze Coin", "Exchange to Silver Coin", "Exchange to Gold Coin", "Exchange to Mithril Coin" ) ) { case 1: if( countitem(7233) < 20 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Oops, where is your items? You need 20 " + getitemname(7233) + " at least..."; close; } delitem 7233, 20; getitem 673, 1; mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; close; case 2: if( countitem(7233) < 30 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Oops, where is your items? You need 30 " + getitemname(7233) + " at least..."; close; } delitem 7233, 30; getitem 675, 1; mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; close; case 3: if( countitem(7233) < 50 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Oops, where is your items? You need 50 " + getitemname(7233) + " at least..."; close; } delitem 7233, 50; getitem 671, 1; mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; close; case 4: if( countitem(7233) < 60 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Oops, where is your items? You need 60 " + getitemname(7233) + " at least..."; close; } delitem 7233, 60; getitem 674, 1; mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; close; } } And dont forget about this: prontera,155,170,4%TAB%script%TAB%Ore Exchanger%TAB%100,{
-
This variable MUST present after you FINISH quest. Example: you made quest to Amatsu Dungeon. Your character successfully take variable ( amatsu.... X ). After that line add set #amatsu_dangeon_q, 1; So, next time if any players of this account will try use warper to Amatsu Dungeon, it will check first this: if( #amatsu_dangeon_q == 1 ) { // Teleport to Amatsu Dungeon } So, you need make it for every quest and this #Var must be unique, as #amatsu_dungeon, #lhz_dungeon and etc. I suggest you to make custom quest to enter dungeons, and after making this quest player will take set #account_variable, 1; So, you will no need make quest at all and other characters on this account also will can enter to dungeons.
-
Please, read your FIRST post: 10 mithril = 1 bronze coin / 20 mithril ore = 1 bronze coin / 50 mithril = 1 mithril coin / 60 mithril ore = 1 mithril coin ? Where is logic??? If you want something, as i understand, you must make any TODO List like: 1. Event / Other / Etc. 2. Name of script 3. Main function 4. Suggestion 5. Requared itemd (ID's) Yes, its not nenecessarily, buy as for me, it will be much better and more understandable and not requared +100500 posts and asks... Just imagine, that a man come to my work and ask me to sell them part to auto.... without telling what auto, what year, what engine, what part and etc. maybe he want a bulb for 0,99% or Bearing Hub at cadillac DTS Limousine at ~1300$....
-
Omg, did you see errors? And i 100% sure, that this %TAB%s Use next syntax: prontera,155,170,4%TAB%script%TAB%Ore Exchanger%TAB%100,{ and all work... and one more thing: please, dont write posts with sence as anyone here owe you anything, no help for lazy people or without correct information if this freeware community - please respect others work
-
if( #account_variable == 1 ) { warp "ama_dun01",228,11; getmapxy(lastmap$,lastx,lasty,0); close; } if( event_amatsu >= 6 ) { warp "ama_dun01",228,11; getmapxy(lastmap$,lastx,lasty,0); close; } else { warp "amatsu",168,171; getmapxy(lastmap$,lastx,lasty,0); close; }
-
Maybe i dont understand you correctly, but: case 2: if( event_amatsu >= 6){ warp "ama_dun01",228,11; getmapxy(lastmap$,lastx,lasty,0); close; } else { warp "amatsu",168,171; getmapxy(lastmap$,lastx,lasty,0); close;} if player already done quest ( event_amatsu >= 6 ) he will go to dungeon, if he dont make this quest, he will go to starting quest location? if player "A" made quest to ( Amatsu Dungeon ) - he can go to dungeon; if player "B" on account of player "A" dont have quest, but he can warp to dungeon, because player "A" already made this quest?
-
\db\pre-re\skill_tree.conf ? Cant see this file in pre-re... This is hercules, so why dont ask them? And you have no free skill points... And error in typo: MaxLeve: 10 -> MaxLevel: 10
-
What do you mean? Players that have #account_variable can use this script or what?
-
Hm... How does this script must look like? Any suggestions or anything else? And 50 mithril = 1 mithril coin?? What the crap? so, simple exchanger: // Simple Ore Excange to coconutswt, user of rAthena community // ============================================================ 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 Bronze Coins 2 Silver Coins", BrC2SiC, "Exchange Silver Coins 2 Gold Coins", SiC2GoC, "Exchange Gold Coins 2 Platinum Coins", GoC2PlC; BrC2SiC: mes "^3363A6[ Ore Exchanger ]^000000"; mes "I want to note, that 1 Silver Coin cost 10 Brozne Coins, so do you want to continue?"; next; if( select( "No, i want to leave", "Yes, exchange please" ) == 1 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "So, see you next time, and good luck!"; close; } if( countitem(673) < 1 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Excuse me, but you have no even 1 Bronze Coin... Come back later."; emotion e_sry; close; } if( countitem(673) < 10 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Excuse me, but you dont have enought Bronze Coins to exchange for our today course. You must have at least 10 Bronze Coins."; close; } mes "^3363A6[ Ore Exchanger ]^000000"; mes "Do you want to exchange all your Bronze Coins or just step by step 10 to 1?"; next; switch( select( "Exchange all my Bronze Coins", "Exchange 10 to 1" ) ) { case 1: //set .@curr_bc_count, countitem(673); set .@exchanged_coins, ( countitem(673) / 10 ); mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; delitem 673, .@exchanged_coins * 10; getitem 675, .@exchanged_coins; close; case 2: mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; delitem 673, 10; getitem 675, 1; close; } SiC2GoC: mes "^3363A6[ Ore Exchanger ]^000000"; mes "I want to note, that 1 Gold Coin cost 10 Silver Coins, so do you want to continue?"; next; if( select( "No, i want to leave", "Yes, exchange please" ) == 1 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "So, see you next time, and good luck!"; close; } if( countitem(675) < 1 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Excuse me, but you have no even 1 Bronze Coin... Come back later."; emotion e_sry; close; } if( countitem(675) < 10 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Excuse me, but you dont have enought Silver Coins to exchange for our today course. You must have at least 10 Silver Coins."; close; } mes "^3363A6[ Ore Exchanger ]^000000"; mes "Do you want to exchange all your Bronze Coins or just step by step 10 to 1?"; next; switch( select( "Exchange all my Silver Coins", "Exchange 10 to 1" ) ) { case 1: //set .@curr_gc_count, countitem(675); set .@exchanged_coins, ( countitem(675) / 10 ); mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; delitem 675, .@exchanged_coins * 10; getitem 671, .@exchanged_coins; close; case 2: mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; delitem 675, 10; getitem 671, 1; close; } GoC2PlC: mes "^3363A6[ Ore Exchanger ]^000000"; mes "I want to note, that 1 Platinum Coin cost 10 Gold Coins, so do you want to continue?"; next; if( select( "No, i want to leave", "Yes, exchange please" ) == 1 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "So, see you next time, and good luck!"; close; } if( countitem(671) < 1 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Excuse me, but you have no even 1 Bronze Coin... Come back later."; emotion e_sry; close; } if( countitem(671) < 10 ) { mes "^3363A6[ Ore Exchanger ]^000000"; mes "Excuse me, but you dont have enought Silver Coins to exchange for our today course. You must have at least 10 Silver Coins."; close; } mes "^3363A6[ Ore Exchanger ]^000000"; mes "Do you want to exchange all your Gold Coins or just step by step 10 to 1?"; next; switch( select( "Exchange all my Gold Coins", "Exchange 10 to 1" ) ) { case 1: //set .@curr_pc_count, countitem(671); set .@exchanged_coins, ( countitem(671) / 10 ); mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; delitem 671, .@exchanged_coins * 10; getitem 677, .@exchanged_coins; close; case 2: mes "^3363A6[ Ore Exchanger ]^000000"; mes "Here you are!"; delitem 671, 10; getitem 677, 1; close; } }
-
15046,Siege_Plate,Siege Plate,4,0,,3300,,85,,1,0x006444A2,63,2,16,,95,1,0,{ bonus bMdef,5; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; if(getrefine()>5) { bonus bHealpower2,12; bonus bAddItemHealRate,12; }; if(getrefine()>8) { bonus bMaxHPrate,25; } },{},{} 15047,Siege_Suits,Siege Suit,4,0,,750,,50,,1,0x036E5CEA,63,2,16,,95,1,0,{ bonus bMdef,10; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; if(getrefine()>5) { bonus bFlee2,5; bonus bLongAtkDef,20; }; if(getrefine()>8) { bonus bMaxHPrate,15; } },{},{} 15048,Siege_Robe,Siege Robe,4,0,,500,,40,,1,0x00818315,63,2,16,,95,1,0,{ bonus bMdef,20; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; if(getrefine()>5) { bonus bFlee,5; bonus bLongAtkDef,15; }; if(getrefine()>8) { bonus bMaxHP,1000; bonus bMaxSP,100; } },{},{
-
Help! Right click button, character and npcs.
Phenomena replied to xLeeo's question in Source Support
What server revision, packet_ver, client version, clientinfo? -
Hello guys, Need HELP about this error script
Phenomena replied to fallen0519's question in Scripting Support
try use this: - script dualclientkicker -1,{ OnPCLoadMapEvent: set .@charmap$, strcharinfo(3); query_sql("SELECT FIND_IN_SET('"+.@charmap$+"', '"+.maps$+"');",.@q); if(.@charmap$!=.tmp$[(.@q-1)]) end; set .@len, query_sql("SELECT DISTINCT `account_id` FROM `char` WHERE `account_id` IN (SELECT `account_id` FROM `login` WHERE `last_ip` = (SELECT `last_ip` FROM `login` WHERE `account_id`="+getcharid(3)+")) AND `online` <> 0;",.@a); if(.@len-1) { for(set(.@d,0);.@d<.@len;set(.@d,.@d+1)) { getmapxy(.@map$,.@x,.@y,0,rid2name(.@a[.@d])); if(.tmp$[(.@q-1)]==.@map$&&rid2name(.@a[.@d])!=strcharinfo(0)) { dispbottom "Duel accounts not allowed in WOE."; warp "geffen",0,0; } } } end; OnInit: set .maps$ , "aldeg_cas01,gefg_cas01,payg_cas01,prtg_cas01"; explode( .tmp$ , .maps$, ",") ; set .lens , getarraysize(.tmp$) ; for(set .a,0;.a<.lens;set .a,.a+1) setmapflag .tmp$[.a], mf_loadevent ; } original there