Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 01/27/13 in all areas

  1. Hi there! This is a converter that allow users convert their fbx files to rsm format with a better conversion You can get this result easily: Screenshot: Notice: * The converter DOESNT convert scaling animations since rsm doesn't includes these informations. * The converter would ONLY convert the first node of the scene, you have to set the parent-child relationship. * The texture wrap mode of official client is clamping, this means that UV will be valid only between 0.0 - 1.0. * The converter WONT handle skeleton animation, it only handle node animation. * Use 2013.3 version of fbx file is recommended. * 'Smooth Shading' is smooth group shading, the converter can also convert smooth groups. * The converter would automatically convert all opaque textures to BMP, and convert all transparent textures to TGA. * Make sure the dimension of your textures is power of two (256x256, 512x512, 256x512, ...), otherwise the client will resize them without scaling. History: 1.4: * Fixed texture name codepage problem. 1.3: * Fxed texture name case problem. 1.2: * Animation speed more customizable. 1.1: * Fixed animation length problem. * Added animation speed setting. 1.0: * Fixed UV flipping problem. * Fixed texture name locale problem. * Added Rsm to Fbx conversion method. beta 1: * Initial release. Download: RsmConverter 1.4: http://www.mediafire.com/download/ba1xsxgpvkh44wc/RsmConverter20130724.zip Enjoy!
    4 points
  2. File Name: Camland Prontera File Submitter: kasumy File Submitted: 27 Jan 2013 File Category: Maps & Textures Content Author: kasumy Hi guys I am posting my map project here hope you enjoy my work xD You can use the templates I do not care. I do not know who the houses nor edict models Camland sorry I do not know who the author for by the credits xD Link extra aqui: http://www.mediafire.com/?trv6jgfb8fgv97x Click here to download this file
    2 points
  3. All headgear official bRO, cRO, euRO, fRO, idRO, iRO, jRO mysgRO, twRO, tRO Update November 2022 Headgear November 2022.7z Iclude list and miss headgear
    1 point
  4. E - Script Collection Last Update : September 10, 2013 Refine Function SQL Mission Board Monster Marching Vendor Control Advanced Stylist Coin Exchanger Doppelganger Race Of The Day Limited Items Multi Currency Shop Random News GM Online List Link Broken E-Inquiry DotA Runes Flower Counting Game Class Restriction Chain Quest Build Manager Misc Scripts : Freebies Script Card Trader Gold Room [ Pick Gold ] Gold Room [ Guild Tax ] Map Restriction [ GM Based ] Daily Reward Monthly Reward Monster Spawner Monster Summoner with Last Summoned Display Players Stats & Equipments 3rd Job Item Giver Exchanger [ Cashpoint to Coins ] Exchanger [ Poring Coin - Zeny ] Exchanger [ Points to Tickets ] Exchanger [ Item to Item ] Exchanger [ Item to Item ] Exchanger [ Multi Item to 1 Item ] Party Match Auto Ban Over Stats Users Soul Link Buff Kill Players gain Cash Points Party Members All Get Items [ Snippet ] Message Board Stalker Class Skill Reproduce NPC Multiple Selection Quest [ Template ] In-Game Item Rewarder In-Game Points Rewarder Invasion Event Custom Item Rate Status Point Seller [ Snippet ] Anti Bot Security Script Anti Bot Script [ Code / Question ] Item Combo Restriction [ LHZ Card ] Drop Item Upon Death PVP Switcher + Announcer [ Guild Master ] Rotating Waitingroom Messages +10 Refiner [ Specific Items ] Random Rate Item Exchanger MVP Invasion Premium Users [ Boost Rates ] Display Cutin Image upon Login Custom Randomed Box Items Kick GM during WOE Custom Crafting NPC Restrict Same IP [ Certain Map ] Coloured Items Exchanger Guild Master Changer Party Team PK Match Gambling Game IRC Channel Crafting NPC Guild Storage Restriction Stage Game [ Version 4 ] Monster Wiki Event [ Version 3 ] Special Thank you for my Tutor : Notes : I am a bit lazy to write all those Script Descriptions, i do believe that all of you able to get how this script works. Anyway, i will still doing my best to write the Updated Changelog or informations about the script as detail as possible. All the Scripts above are uploaded to Pastebin . Abide the Following Rule : Scripts Error / Not Working , you have to Explain it in Details. ( Add in Images / Modified Scripts ) Do not SPAM / BUMP in my Topic. Do not ask for Support stuffs for other Scripts in this Topic. Link Down , then drop [ @Emistry ] a message. I Reserved the Right for NOT Answering your Posts if you did not abide my Topic's Rules. Keep This In Your Mind : All the Scripts i distribute here are NOT FOR COMMERCIAL USES . DO NOT remove my Credits if you are using part of the scripts to modify your own. DO NOT re-release the scripts in any form / way. If you ♥ these Scripts , Click on to Vote this Topic up. Or you may also click on at above the Topic
    1 point
  5. File Name: Old Payon / Morocc 1.0 File Submitter: jTynne File Submitted: 07 Dec 2011 File Category: Maps & Textures From iRO's data, the old Payon and Morocc map files, with mini-maps included. Click here to download this file
    1 point
  6. Aquí les traigo como añadir un poco de seguridad a los almacenes de guild. Primero en el src\map\atcommand.c Buscamos: ACMD_FUNC(guildstorage) { nullpo_retr(-1, sd); if (!sd->status.guild_id) { clif_displaymessage(fd, msg_txt(sd,252)); return -1; } if (sd->npc_id || sd->state.vending || sd->state.buyingstore || sd->state.trading) return -1; if (sd->state.storage_flag == 1) { clif_displaymessage(fd, msg_txt(sd,250)); return -1; } if (sd->state.storage_flag == 2) { clif_displaymessage(fd, msg_txt(sd,251)); return -1; } storage_guild_storageopen(sd); clif_displaymessage(fd, msg_txt(sd,920)); // Guild storage opened. return 0; } Y añadimos debajo: /*========================================= * gstorage Security System *-----------------------------------------*/ ACMD_FUNC(gstoragesecurity) { nullpo_retr(-1,sd); if( sd->npc_id || sd->vender_id || sd->buyer_id || sd->state.trading || sd->state.storage_flag ) return -1; npc_event(sd,"GstorageSecurity::OnGuild",0); return 0; } Luego, en el mismo documento buscamos: ACMD_DEF(unloadnpcfile), ACMD_DEF(cart), ACMD_DEF(mount2), Y al final añadimos: ACMD_DEF2("gstorage",gstoragesecurity), Compilamos, sino no funciona. Y cargamos el siguiente script: gstorage_security.txt - script GstorageSecurity -1,{ end; OnGuild: if (!query_sql("show columns from `guild` like 'gstorage_mode'",@ignore,@ignore,@ignore,@ignore,@ignore,@ignore)) { mes "Hubo un error de base de datos críticos. Please informar de ello a un GM!"; close; } if (!getcharid(2)) { mes "[Guild S.]"; mes "Lo sentimos, usted debe estar en un clan para utilizar esta función!"; close; } mes "[Guild S.]"; mes "¿Qué te gustaría hacer?"; next; switch(select("Usar guild Storage (500 zeny)","Ver configuración","Atras")) { case 1: goto L_UseGStorage; case 2: query_sql "select gstorage_mode,gstorage_pos,gstorage_password from `guild` where `guild_id` = "+getcharid(2),@mode,@pos,@password$; if (strcharinfo(0) == getguildmaster(getcharid(2))) { next; mes "[Guild S.]"; mes "Guild Storage modo de acceso está configurado para "+@mode[0]; mes "0= sin restricción de acceso"; mes "1= requisito Posición"; mes "2= protegidos por contraseña"; switch(select("Cambiar el modo","Establecer posición minima permitida","Establecer Contraseña","Atras")) { case 1: mes "Entre en el modo #"; input @temp; if (@temp < 0) set @temp, 0; if (@temp > 2) set @temp, 2; query_sql "update `guild` set gstorage_mode = "+@temp+" where guild_id = "+getcharid(2),@ignore; mes "Modo ajustado a "+@temp; next; goto OnGuild; case 2: mes "Introduzca la posición mínima"; input @temp; if (@temp < 1) set @temp, 1; if (@temp > 50) set @temp, 50; query_sql "update `guild` set gstorage_pos = "+@temp+" where guild_id = "+getcharid(2),@ignore; mes "Posición mínima establecida a "+@temp; next; goto OnGuild; case 3: mes "Introduzca la contraseña, introduzca un espacio para cancelar"; input @temp$; set @temp$, escape_sql(@temp$); if (@temp$ == " ") { next; goto OnGuild; } query_sql "update `guild` set gstorage_password = '"+escape_sql(@temp$)+"' where guild_id = "+getcharid(2),@ignore; mes "Contraseña establece a "+@temp$; next; goto OnGuild; case 4: next; goto OnGuild; } } else { query_sql "select gstorage_mode from `guild` where guild_id = "+getcharid(2),@mode; mes "[Guild S.]"; switch(@mode) { case 0: mes "Guild storage is not currently restricted."; break; case 1: mes "Guild storage is currently restricted by position."; break; case 2: mes "Guild storage is currently restricted via password."; break; } next; goto OnGuild; } case 3: close; } close; L_UseGStorage: if (strcharinfo(0) == getguildmaster(getcharid(2))) goto L_UseGStorageSkip; query_sql "select gstorage_mode,gstorage_pos,gstorage_password from `guild` where guild_id = "+getcharid(2),@mode,@pos,@password$; if (@mode[0] == 1) { query_sql "select position from `guild_member` where guild_id = "+getcharid(2)+" and char_id = "+getcharid(0),@current_pos; if (@current_pos[0] > (@pos[0] - 1)) { mes "[Guild S.]"; mes "Sorry, but you are not authorized to use guild storage."; close; } } if (@mode[0] == 2) { mes "[Guild S.]"; mes "The guild leader has instated password protected guild storage, please enter the password now."; input @pw$; if (@pw$ != @password$[0]) { next; mes "[Guild S.]"; mes "Sorry, that password is incorrect."; close; } } L_UseGStorageSkip: if(zeny < 500) { mes "[Guild S.]"; mes "Necesitas 500 zeny."; close; } close2; if(basicskillcheck() && getskilllv(1) < 6) goto L_nobasicskill; if(guildopenstorage() == 1) goto L_gmateusing; dispbottom "Guild Storage is now open."; set zeny, zeny - 500; end; L_nobasicskill: mes "[Kafra]"; mes "You need to have Basic Skill level of 6 to open Guild storage"; close; L_gmateusing: mes "[Kafra]"; mes "One of your Guildmates is currently using the guild storage"; mes "Please try again later"; close; } Espero que les sirva.
    1 point
  7. Preview : [media=] [/media] This script will create a new GM command to ban or unban specify IP and also record who ban it and who unban it. After you ban some IP, those user will be kicked out server and will not be able to use it for login server. New SQL Table : CREATE TABLE IF NOT EXISTS `ipbanlist2` ( `list` varchar(255) NOT NULL default '', `ban_reason` varchar(255) NOT NULL default '', `unban_reason` varchar(255) NOT NULL default '', `status` tinyint(1) NOT NULL default '0', `ban_id` int(11) unsigned NOT NULL default '0', `unban_id` int(11) unsigned NOT NULL default '0', KEY (`list`) ) ENGINE=MyISAM; Script : ban_ip_atcommand_3.txt ban_ip_atcommand_2.txt ban_ip_atcommand.txt Version
    1 point
  8. Script: Quest NPCs related to Special Episode Malangdo. Ver: -.- Idioma: Castellano (Spanish "Spain") Scripter: Ziu Prerequisite: Level Base. **Las quest están creadas sobre el servidor sakray kRO hace varios años ya casi. El script está al 95%, pero es completamente jugable sin problemas. Quest: //Malangdo. 11209,0,0,0,0,0,0,0,"Penurias De Thomas" 11210,0,0,0,0,0,0,0,"La Reunión Malangdo" 11211,0,0,0,0,0,0,0,"La Reunión Malangdo" 11212,0,0,0,0,0,0,0,"La Reunión Malangdo" 11213,0,0,0,0,0,0,0,"La Reunión Malangdo" 11214,0,0,0,0,0,0,0,"La Reunión Malangdo" 11215,0,0,0,0,0,0,0,"La Reunión Malangdo" 11216,0,0,0,0,0,0,0,"La Reunión Malangdo" 11217,0,0,0,0,0,0,0,"La Reunión Malangdo" 11218,0,0,0,0,0,0,0,"La Reunión Malangdo" 11219,0,0,0,0,0,0,0,"La Reunión Malangdo" 11220,0,0,0,0,0,0,0,"La Reunión Malangdo" //Malangdo Repetible 1145,0,0,0,0,0,0,0,"Ayuda al pobre gato" 1146,0,0,0,0,0,0,0,"Ayuda al pobre gato" 1147,0,0,0,0,0,0,0,"Ayuda al pobre gato" 1148,0,0,0,0,0,0,0,"Ayuda al pobre gato" 1149,0,0,0,0,0,0,0,"Ayuda al pobre gato" 1150,0,0,0,0,0,0,0,"Ayuda al pobre gato" 1151,0,0,0,0,0,0,0,"Ayuda al pobre gato" 1152,86400,0,0,0,0,0,0,"Ayuda al pobre gato" 1153,0,0,0,0,0,0,0,"Ayuda al pobre gato" 1154,0,2197,20,0,0,0,0,"Ayuda al pobre gato" 1155,0,0,0,0,0,0,0,"Ayuda al pobre gato" //Malangdo Reparción de grietas 11221,0,0,0,0,0,0,0,"Reparación de grietas" 11222,0,0,0,0,0,0,0,"Reparación de grietas" 11223,0,0,0,0,0,0,0,"Reparación de grietas" 11224,0,0,0,0,0,0,0,"Reparación de grietas" 11225,0,0,0,0,0,0,0,"Reparación de grietas" 11226,0,0,0,0,0,0,0,"Reparación de grietas" 11227,0,0,0,0,0,0,0,"Reparación de grietas" 11228,0,0,0,0,0,0,0,"Reparación de grietas" 11229,0,0,0,0,0,0,0,"Reparación de grietas" 11230,0,0,0,0,0,0,0,"Reparación de grietas" 11231,0,0,0,0,0,0,0,"Reparación de grietas" 11232,0,0,0,0,0,0,0,"Reparación de grietas" 11233,0,0,0,0,0,0,0,"Reparación de grietas" 11234,0,0,0,0,0,0,0,"Reparación de grietas" 11235,0,0,0,0,0,0,0,"Reparación de grietas" 11236,0,0,0,0,0,0,0,"Reparación de grietas" 11237,0,0,0,0,0,0,0,"Reparación de grietas" 11238,0,0,0,0,0,0,0,"Malangdo Frutas" 11239,86400,0,0,0,0,0,0,"Malangdo Frutas" 11240,0,0,0,0,0,0,0,"Reparación de grietas" 11241,0,0,0,0,0,0,0,"Reparación de grietas" 11242,0,0,0,0,0,0,0,"Reparación de grietas" 11243,86400,0,0,0,0,0,0,"Reparación de grietas" //Malangdo - Headed Cat 5058,0,0,0,0,0,0,0,"Estado De Ánimo-(1)" 5059,0,0,0,0,0,0,0,"Estado De Ánimo-(1)" 5060,180,0,0,0,0,0,0,"Cat Shock" 5061,0,0,0,0,0,0,0,"Estado De Ánimo-(1)" 5062,0,0,0,0,0,0,0,"Estado De Ánimo-(1)" 5063,0,0,0,0,0,0,0,"Estado De Ánimo-(1)" 5064,0,0,0,0,0,0,0,"Estado De Ánimo-(1)" 5065,0,0,0,0,0,0,0,"Estado De Ánimo-(1)" 5066,0,0,0,0,0,0,0,"Estado De Ánimo-(1)" 5067,0,0,0,0,0,0,0,"Estado De Ánimo-(1)" 5068,72000,0,0,0,0,0,0,"Estado De Ánimo-(1)" 5069,3600,0,0,0,0,0,0,"Estado De Ánimo-(1)" 5070,86400,0,0,0,0,0,0,"Rock Paper Scissors" 5071,86400,0,0,0,0,0,0,"Chamchamcham" 5072,86400,0,0,0,0,0,0,"Kkongnyangkkong" 5073,86400,0,0,0,0,0,0,"Sub Quest Games" 5074,0,0,0,0,0,0,0,"Sub Quest Games" 5075,0,0,0,0,0,0,0,"Sub Quest Games" 5076,0,1282,30,0,0,0,0,"Sub Quest Games" 5077,0,1209,10,0,0,0,0,"Sub Quest Games" 5078,0,1019,50,0,0,0,0,"Sub Quest Games" 5079,0,0,0,0,0,0,0,"Sub Quest Games" 5080,0,0,0,0,0,0,0,"Sub Quest Games" 5081,0,0,0,0,0,0,0,"Sub Quest Games" 5082,0,0,0,0,0,0,0,"Sub Quest Games" //---- Malangdo Chef 7260,0,0,0,0,0,0,0,"Occurrence of insect origin" 7261,0,0,0,0,0,0,0,"Galletas De Gato - Mesa" 7262,0,0,0,0,0,0,0,"Galletas De Gato - Colchón" 7263,0,0,0,0,0,0,0,"Galletas De Gato - Reja" 7264,0,0,0,0,0,0,0,"Cat Chef" 7265,0,0,0,0,0,0,0,"Enfado Cat Chef" 7266,0,0,0,0,0,0,0,"Intenciones Cat Chef" 7276,86400,0,0,0,0,0,0,"Alimentos promesa de entrega" Download
    1 point
  9. try my lms trigger script, just change the map location, and the when kill player map location. lmstrigger.txt
    1 point
  10. i dont know whats wrong with the script anway you missed these lines OnPCKillEvent: getmapxy(.@map$,.@x,.@y,0); if(.@map$=="pvp_n_1-5") { set #kill_point,#kill_point+1; if ( #kill_point % 4 == 0) { announce ""+strcharinfo(0)+" have made 4 Consecutive Kills!!He will be granted an item",bc_all; //getitem 7539, 20; end; } } [b]change it to[/b] OnPCKillEvent: getmapxy(.@map$,.@x,.@y,0); if(.@map$=="force_1-3") { set #kill_point,#kill_point+1; if ( #kill_point % 4 == 0) { announce ""+strcharinfo(0)+" have made 4 Consecutive Kills!!He will be granted an item",bc_all; //getitem 7539, 20; end; } }
    1 point
  11. Suggestion: @banip <reason> <IP> {<IP range>} ragne value: d.d.d.* d.d.*.* d.*.*.*
    1 point
  12. struct granny_animation* __cdecl C3dGrannyBoneRes::GetAnimation(int nType, int nAniIdx) { if( this->m_Animation[nType][nAniIdx] == NULL ) { g_Unknown1[0] = 0; if( nType >= 0 && nType <= 9 ) { if( nAniIdx >=0 && nAniIdx <= 4 ) { if( nAniIdx ) { sprintf(g_Unknown1, "model\\3dmob\\%s", g_session.GetJobName(g_Unknown2[nType])); } else { sprintf(g_Unknown1, "model\\3dmob\\%d_%s.gr2", nType, g_Unknown3[nAniIdx]); } if( g_Unknown1[0] && CFile::IsFileExist(g_Unknown1) ) { if( nType != 1 ) { this->AddBone(g_Unknown1, nType, nAniIdx); } return this->m_Animation[nType][nAniIdx]; } } } } else { return this->m_Animation[nType][nAniIdx]; } return NULL; }
    1 point
  13. I think you could go to src/map/skill.c then search this if(item->refine == 10) and add before something like this f(item->refine == 10 && ditem->type == IT_WEAPON) --- here you bonus for weapons =) hope it help you n_n ~~
    1 point
  14. !!!!!!!!!! XARPLE thanks!!! thanks for this tool I knew you were busy to continue developing it and thanks for replying back the email I sent to you about this! GUYS NOW we can do animated RSM Models with this!!! This man is amazing!!! Before I did a video about your GND/RSW to FBX tool. I will do a video about this new tool too, so people will know how to use it! Edit: Xarple can you upload the FBX original file you converted and the rsm result, for a reference to us?
    1 point
  15. Item type 11 Example : // ID,AegisName,Name,Type,Buy,Sell,Weight,ATK,DEF,Range,Slots,Job,Upper,Gender,Loc,wLV,eLV,Refineable,View,{ Script },{ OnEquip_Script },{ OnUnequip_Script } 12622,Reins_Of_Mount,Reins Of Mount,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ setmounting(); },{},{}
    1 point
  16. Nice work, as always. :> I suggest you use the format: <IP> <reason> Currently the reason can only be one word, but you have set the SQL columns to varchar(255) and no words I know of are that long. xP You can then build a multi-word reason by either: Using string commands. set .@tmp$, implode(.@atcmd_parameters$," "); set .@reason$, substr(.@tmp$,getstrlen(.@atcmd_parameters$[0]),getstrlen(.@tmp$)-1); Looping. for(set .@i,1; .@i<.@atcmd_numparameters; set .@i,.@i+1) set .@reason$, .@reason$ + " " + .@atcmd_parameters$[.@i] .@atcmd_numparameters is fixed in r17106.
    1 point
  17. download the patch file, and read on lines that I gave "//change this" Index: conf/msg_athena.conf =================================================================== --- conf/msg_athena.conf (revision 17102) +++ conf/msg_athena.conf (working copy) @@ -630,6 +630,8 @@ 680: You have been recovered! //681-899 free +700: Congratulations to %s for successfully refining %s to +%d! //change this + 681: Rune Knight T 682: Warlock T 683: Ranger T @@ -1406,5 +1408,7 @@ 1396: You do not have a cart to be cleaned. 1397: Your cart was cleaned. + +// msg //Custom translations import: conf/import/msg_conf.txt Index: src/map/skill.c =================================================================== --- src/map/skill.c (revision 17102) +++ src/map/skill.c (working copy) @@ -14228,7 +14228,7 @@ void skill_weaponrefine (struct map_session_data *sd, int idx) { nullpo_retv(sd); - + if (idx >= 0 && idx < MAX_INVENTORY) { int i = 0, ep = 0, per; @@ -14266,6 +14266,12 @@ if (ep) pc_equipitem(sd,idx,ep); clif_misceffect(&sd->bl,3); + if(item->refine >= 10) //change this + { + char output[256]; + snprintf(output, sizeof output, msg_txt(700), &sd->status.name, ditem->jname, item->refine); // Packet 0x%x length: %d //change this + clif_broadcast(&sd->bl, output, strlen(output)+1, 0, ALL_CLIENT); + } if(item->refine == 10 && item->card[0] == CARD0_FORGE && (int)MakeDWord(item->card[2],item->card[3]) == sd->status.char_id)
    1 point
  18. Just days prontera,159,187,4 script Uptime 858,{ function Add_Zero; function Add_S; mes "[uptime]", "The server has been online for ", ((.t[1])?Add_S(.t[1],"day")+", ":"")+ ((.t[2])?Add_S(.t[2],"hour")+", ":"")+ ((.t[2]||.t[3])?Add_S(.t[3],"minute")+" ":"")+ ((getarraysize(.t)>2)?"and ":"")+Add_S(.t[4],"second")+", "+ "and counting!"; close; function Add_Zero { return ((getarg(0)<10)?"0":"")+getarg(0); } function Add_S { return "^0055FF"+getarg(0)+" "+getarg(1)+((getarg(0)==1)?"":"s")+"^000000"; } OnInit: set .t[0], gettimetick(2); waitingroom " [ 00:00:00 ]",0; initnpctimer; end; OnTimer950: set .@t, gettimetick(2)-.t[0]; set .t[1], .@t/(3600*24); set .t[2], .@t/3600-.t[1]*24; set .t[3], .@t/60-.t[2]*60; set .t[4], .@t%60; end; OnTimer990: initnpctimer; delwaitingroom; waitingroom " [ "+Add_Zero(.t[1])+":"+Add_Zero(.t[2])+":"+Add_Zero(.t[3])+":"+Add_Zero(.t[4])+" ]",0; end; } I don't think it's useful to display month and years, reloadscript reset the count. Edit : Fix one mistake.
    1 point
  19. I don't test it but getmapxy return 0 if the search was successful so it must be while( !getmapxy(.@map$,.@x,.@y,0) ) { Be careful about multi loop. If player touch the NPC many time, it should have multi loop. You can do something like that to prevent it. if( @idtime ) end; while( !getmapxy(.@map$,.@x,.@y,0) ) {
    1 point
  20. Something like this? prontera,159,187,4 script Uptime 858,{ function Add_Zero; function Add_S; mes "[uptime]", "The server has been online for ", ((.t[1])?Add_S(.t[1],"hour")+", ":"")+ ((.t[1]||.t[2])?Add_S(.t[2],"minute")+" ":"")+ ((getarraysize(.t)>2)?"and ":"")+Add_S(.t[3],"second")+", "+ "and counting!"; close; function Add_Zero { return ((getarg(0)<10)?"0":"")+getarg(0); } function Add_S { return "^0055FF"+getarg(0)+" "+getarg(1)+((getarg(0)==1)?"":"s")+"^000000"; } OnInit: set .t[0], gettimetick(2); waitingroom " [ 00:00:00 ]",0; initnpctimer; end; OnTimer950: set .@t, gettimetick(2)-.t[0]; set .t[1], .@t/3600; set .t[2], .@t/60-.t[1]*60; set .t[3], .@t%60; end; OnTimer990: initnpctimer; delwaitingroom; waitingroom " [ "+Add_Zero(.t[1])+":"+Add_Zero(.t[2])+":"+Add_Zero(.t[3])+" ]",0; end; }
    1 point
  21. 1 point
  22. - i would like to thank malufet for dedicating his time to this community.. - as i can see, the most commit done in the svn development was made by malufet / rud0lp20 and all of his commit is regarding skills of 3rd job which is the most or the priority that should be fix.. and also i will not forget to thanks rAthena team for the development or hard work in this svn.. - hope there will be some dev manager that will fix those skills issue..
    1 point
  23. Because it's only used in the char-server. "battle/" folder just contains data for the map-server.
    1 point
×
×
  • Create New...