/* ||======================================================|| || NPC: || ||======================================================|| || Online GMs Detector || ||======================================================|| || Version 2.0.3 || ||======================================================|| || Made by Streiker || ||======================================================|| || Updates: || || (5 latests) || || || || Version 1.9: Added new config options. || || || || Version 2.0: || || Fixed: small errors. || || Deleted $@DG_Modo. || || New options. || || Added emotions . || || Fixed: in some situations the name of the|| || npc was duplicated. || || || || Version 2.0.1: || || Fixed: a small error (.@gmd = .1) || || || || Version 2.0.2: || || Changed some do-whiles for whiles. || || || || Version 2.0.3: || || Changed some colors. || || Optimized. || ||======================================================|| || Description: || || || || NPC that shows all the online GMs, with many || || configurations, and can show the map the gm is || || with option of don't show gms in hide || || can be configured in-game, supports @loadnpc. || ||======================================================|| || Additional Comments: || || || || If my english it's bad, only tell me in the forum, || || i'm an amateur in english. || ||======================================================|| ||======================================================|| */ - script GM_Conf -1,{ OnInit: // --- Configuration --- // Name of the GMs of the server, add many as you need. setarray $@DG_GMS$[0],"GM 1", "GM 2"; setarray $@DG_GMH$[0], "GM 1", "GM 2"; // GMs that him status won't be shown (special for event gms). set $@DG_Pagina, 5; // GMs shown per page set $@DG_Mapa, 1; // 1 = Will be shown the map of the GM 0 = Won't be shown. set $@DG_Hide, 0; // 1 = Will be shown the map of gms in hide 0 = Won't be shown. set $@DG_Hide2, 1; // 1 = Will be shown status gms in hide 0 = Won't be shown. set $@DG_C, 1; // 1 = Will be shown the coordinates 0 = Won't be shown. /* Restricted maps ( The GMs won't be shown if they are in ) dd many as you need */ setarray $@DG_Mapas$[0], /* 1st map */ "map1", /* 2nd map */ "map2", /* 3rd map */ "map3"; // NPC Name. set $@DG_Nombre$, "Online GMs"; // Name while the npc talks. set $@DG_Nombre2$, "Online GMs Detector"; // NPC Sprite. set $@DG_Sprite, 899; set $@DG_N_GM, 40; // Minimum gm level for access to the gm menu. do { set .@gm_num,.@gm_num + 1; setnpcdisplay ( "Online GMs#"+ .@gm_num, $@DG_Sprite ) ; } while ( ! setnpcdisplay ( "Online GMs#"+ .@gm_num + 1, $@DG_Nombre$+"#"+ .@gm_num + 1 ) ) ; set .DG_init, 1; end ; } prontera,150,188,4 script Online GMs#1::GM 899,{ if ( ! getvariableofnpc ( .DG_init, "GM_Conf" ) ) donpcevent "GM_Conf::OnInit" ; set .@DG_n$, "^2b86b5"+ $@DG_Nombre2$ +"^000000"; emotion 20 ; if ( getgmlevel() >= $@DG_N_GM ) { MenuGM: set .@gm_menu, 0; while ( .@gm_menu < 3 ) { if ( .@gm_menu < 3 ) mes .@DG_n$; mes "Hi GM "+ strcharinfo(0) +" what do you want to do?"; next ; set .@gm_menu, select ( "Add a new GM", "Modify current GMs", "Player View", "^911b1bExit^000000" ) ; mes .@DG_n$; if ( .@gm_menu < 3 ) { switch ( .@gm_menu ) { case 1: mes "Input the name of the GM"; mes "^0080000 or space ^000000to cancel."; input .@new_gm$ ; if ( .@new_gm$ != "0" && .@new_gm$ != " " ) { set .@gm_i2, 0; for ( set .@gm_i,0; .@gm_i < getarraysize ( $@DG_GMS$ ); set .@gm_i, .@gm_i + 1 ) if ( .@new_gm$ == $@DG_GMS$[ .@gm_i ] ) set .@gm_i2, .@gm_i2 + 1; if ( .@gm_i2 ) mes "This GM already exists!"; if ( ! .@gm_i2 ) { set $@DG_GMS$[ getarraysize ( $@DG_GMS$ ) ], .@new_gm$; mes "The gm has been added successfully."; } } next ; break ; case 2: mes "Choose the GM to modify."; set .@gm_list, 0; set .@m$, ""; while ( .@gm_list < getarraysize ( $@DG_GMS$ ) ) { set .@m$, .@m$ + $@DG_GMS$[ .@gm_list ] +":"; set .@gm_list, .@gm_list + 1; if ( ! .@gm_list % 100 ) sleep2 1 ; } set .@m$, .@m$ +":^911b1bExit^000000"; set .@gm_c, select ( .@m$ ) - 1; next ; if ( $@DG_GMS$[.@gm_c] == "" ) break ; mes .@DG_n$; mes "What do you want to do with this GM?"; set .@gm_opcion, select ( "Modify", "Raise", "Lower", "^e8052fDelete^000000", "^911b1bExit^000000" ); next ; if ( $@DG_GMS$[.@gm_c] != "" ) mes .@DG_n$; switch ( .@gm_opcion ) { case 1: set .@gm_old$, $@DG_GMS$[ .@gm_c ]; mes "Input the new name of ^800000"+ $@DG_GMS$[ .@gm_c ]; input .@new_gmd$ ; set $@DG_GMS$[ .@gm_c ], .@new_gmd$; mes "^b1001d "+ .@gm_old$ +" ^000000modified to ^2cc8ef"+ $@DG_GMS$[ .@gm_c ] +"."; break ; case 2: if ( .@gm_c != 0 ) callfunc "Change_Pos", 1, .@gm_c, "$@DG_GMS$"; mes ( ( .@gm_c == 0 ) ? "^d50d32This GM already is in the top!^000000" : "The GM has been raised successfully" ); break ; case 3: if ( .@gm_c != ( getarraysize ( $@DG_GMS$ ) - 1 ) ) callfunc "Change_Pos", 2, .@gm_c, "$@DG_GMS$"; mes ( ( .@gm_c == ( getarraysize ( $@DG_GMS$ ) - 1 ) ) ? "^d50d32This GM already is in the bottom!^000000" : "This GM has been lowered successfully" ); break ; case 4: set $@DG_GMS$[ .@gm_c ], ""; mes "The GM has been deleted successfully."; break ; default: break ; } next ; } } if ( .@gm_menu == 4 ) set .@a, 2; } } if ( ! .@gm_menu ) mes .@DG_n$; if ( ! .@a ) { mes "Hi "+ strcharinfo(0) +", would you like to see the Online GMs at this moment?"; next; set .@a, select ( "See Online GMs", "^911b1bExit^000000 " ) ; mes .@DG_n$; } if ( .@a == 1 ) { mes "Now i'll show the online gms to you."; emotion 33 ; next ; set .@total_gm, getarraysize( $@DG_GMS$ ) ; for ( set .@g, 0; .@g < .@total_gm ; set .@g, .@g + $@DG_Pagina ) { for ( set .@gm, .@g; .@gm < .@g + $@DG_Pagina && ( .@gm < .@total_gm ) ; set .@gm,.@gm + 1 ) { if ( .@gm % $@DG_Pagina == 0 ) mes .@DG_n$; set .@e, getcharid( 3, $@DG_GMS$[.@gm] ) ; if ( ! .@gm % $@DG_Pagina ) mes "^065cb5===========================^000000"; set .@o, getcharid( 3 ) ; if ( .@e ) attachrid .@e ; set .@h, checkoption ( 0x40 ) ; if ( .@e ) attachrid .@o ; if ( $@DG_GMS$[.@gm] != "" ) { for ( set .@gd, ( set ( .@gmd, 0 ) ); .@gd < getarraysize ( $@DG_GMH$ ) ; set .@gd, .@gd + 1 ) if ( $@DG_GMH$[.@gd] == $@DG_GMS$[.@gm] ) set .@gmd, 1; mes $@DG_GMS$[.@gm] +" (Current Status: "+ ( ( .@e && ( ( ! .@gmd ) || ( $@DG_Hide2 && .@h ) ) ) ? "^4ca24cOnline" : "^a61616Offline" ) +")^000000"; if ( $@DG_Mapa ) && ( .@e ) { set .@nomapa, 0; attachrid .@e ; getmapxy .@mapa$, .@x, .@y, 0 ; set .@m, 0; while ( .@m < getarraysize ( $@DG_Mapas$ ) ) { if ( ( .@mapa$ == $@DG_Mapas$[ .@m ] ) || ( .@h && ! $@DG_Hide ) || .@gmd ) set .@nomapa, 1; set .@m, .@m + 1; if ( ! .@m % 100 ) sleep2 1 ; } attachrid .@o ; mes ( ( ! .@nomapa ) ? "Current map: ^0617fd"+ .@mapa$ +"^000000 "+( ( $@DG_C ) ? "^237255"+ .@x +","+ .@y +"^000000" : "" ) : ""); } mes "^065cb5===========================^000000"; } } next ; } } if ( .@gm_menu && .@a != 2 ) { set .@a, 0; goto MenuGM; } if ( .@a == 1 && ! .@gm_menu ) { next ; mes .@DG_n$; } mes "Have a nice day"; close2 ; emotion 12 ; end ; } // Function for change the positions. // Can be used with other scripts // callfunc "Change_Pos", ( 1 = Lower 2 = Raise ), Position (Array), "Variable"; function script Change_Pos { set .@a, getarg ( 0, 0 ); set .@b$, getd ( getarg ( 2 )+"["+ getarg ( 1 ) +"]"); set .@c$, getd ( getarg ( 2 )+"["+ ( ( .@a == 1 ) ? getarg ( 1 ) - 1 : getarg ( 1 ) + 1 ) +"]"); setd getarg ( 2 )+"["+ ( ( .@a == 1 ) ? getarg ( 1 ) - 1 : getarg ( 1 ) + 1 ) +"]", .@b$; setd getarg ( 2 )+"["+ getarg ( 1 ) +"]", .@c$; return ; } morocc,153,94,4 duplicate(GM) Online GMs#2 899 geffen,116,73,4 duplicate(GM) Online GMs#3 899 payon,178,100,4 duplicate(GM) Online GMs#4 899 alberta,186,140,4 duplicate(GM) Online GMs#5 899 izlude,131,120,4 duplicate(GM) Online GMs#6 899 aldebaran,143,116,4 duplicate(GM) Online GMs#7 899 xmas,151,134,4 duplicate(GM) Online GMs#8 899 comodo,186,149,4 duplicate(GM) Online GMs#9 899 yuno,150,183,4 duplicate(GM) Online GMs#10 899 amatsu,200,85,4 duplicate(GM) Online GMs#11 899 gonryun,164,119,4 duplicate(GM) Online GMs#12 899 umbala,105,161,4 duplicate(GM) Online GMs#13 899 niflheim,187,188,4 duplicate(GM) Online GMs#14 899 louyang,202,107,4 duplicate(GM) Online GMs#15 899 jawaii,250,139,4 duplicate(GM) Online GMs#16 899 ayothaya,145,111,4 duplicate(GM) Online GMs#17 899 einbroch,59,199,4 duplicate(GM) Online GMs#18 899 einbech,172,120,4 duplicate(GM) Online GMs#19 899 lighthalzen,155,106,4 duplicate(GM) Online GMs#20 899 hugel,99,152,4 duplicate(GM) Online GMs#21 899 rachel,142,142,4 duplicate(GM) Online GMs#22 899 veins,220,132,4 duplicate(GM) Online GMs#23 899 moscovia,231,197,4 duplicate(GM) Online GMs#24 899