dragonbautista Posted September 30, 2015 Posted September 30, 2015 (edited) izlude,128,106,4 script GM Online Lists 811,{ mes "Staffs Online Lists : ^FF0000"+getarraysize( .GM_Name$ )+"^000000 Staffs"; mes "^0000FF_____________________________^000000"; for( set .@i,0; .@i < getarraysize( .GM_Name$ ) ; set .@i,.@i + 1 ){ getmapxy( .Map$,.x,.y,0,.GM_Name$[.@i] ); mes "[ Lv ^63D1F4"+.GM_Level[.@i]+"^000000 ] ^FF0000@ ^0000FF"+.GM_Name$[.@i]+"^000000"; mes "Location : ^0000FF"+.Map$+"^000000"; mes "^0000FF_____________________________^000000"; } close; OnInit: set .MinGMLevel,40; // Min. GM Level to Show in Online Lists end; OnPCLoginEvent: if( getgmlevel() < .MinGMLevel ) end; set .GM_Name$[ getarraysize( .GM_Name$ ) ],strcharinfo(0); set .GM_Level[ getarraysize( .GM_Level ) ],getgmlevel(); end; OnPCLogoutEvent: if( getgmlevel() < .MinGMLevel ) end; for( set .@i,0; .@i < getarraysize( .GM_Name$ ) ; set .@i,.@i + 1 ){ if( strcharinfo(0) != .GM_Name$[.@i] ) continue; deletearray .GM_Name$[.@i],1; deletearray .GM_Level[.@i],1; end; } end; } Edited September 30, 2015 by Emistry codebox. Quote
Ninja Posted September 30, 2015 Posted September 30, 2015 Tested and working. Made the NPC walk towards the coordinates every 6 seconds. Just change the OnTimerXXXXXX to suit your needs. izlude,128,106,4 script GM Online Lists 811,{ mes "Staffs Online Lists : ^FF0000"+getarraysize( .GM_Name$ )+"^000000 Staffs"; mes "^0000FF_____________________________^000000"; for( set .@i,0; .@i < getarraysize( .GM_Name$ ) ; set .@i,.@i + 1 ){ getmapxy( .Map$,.x,.y,0,.GM_Name$[.@i] ); mes "[ Lv ^63D1F4"+.GM_Level[.@i]+"^000000 ] ^FF0000@ ^0000FF"+.GM_Name$[.@i]+"^000000"; mes "Location : ^0000FF"+.Map$+"^000000"; mes "^0000FF_____________________________^000000"; } close; OnPCLoginEvent: if( getgmlevel() < .MinGMLevel ) end; set .GM_Name$[ getarraysize( .GM_Name$ ) ],strcharinfo(0); set .GM_Level[ getarraysize( .GM_Level ) ],getgmlevel(); end; OnPCLogoutEvent: if( getgmlevel() < .MinGMLevel ) end; for( set .@i,0; .@i < getarraysize( .GM_Name$ ) ; set .@i,.@i + 1 ){ if( strcharinfo(0) != .GM_Name$[.@i] ) continue; deletearray .GM_Name$[.@i],1; deletearray .GM_Level[.@i],1; end; } end; OnInit: set .MinGMLevel,40; // Min. GM Level to Show in Online Lists set .pos, 1; // starting at position 1 initnpctimer; end; OnTimer6000: //number of milliseconds that this NPC will stay at certain coordinate Switch(.pos){ case 1: npcwalkto 128,106; set .pos, 2; break; case 2: npcwalkto 115,114; set .pos, 3; break; case 3: npcwalkto 128,117; set .pos, 4; break; case 4: npcwalkto 139,114; set .pos, 5; break; case 5: npcwalkto 128,106; set .pos, 1; break; } initnpctimer; end; } unitwalk yeah thought of that but used npcwalkto instead. thakns for the suggestion 1 Quote
Ninja Posted September 30, 2015 Posted September 30, 2015 How do you exactly want it to "move"? Quote
dragonbautista Posted September 30, 2015 Author Posted September 30, 2015 (edited) Walking npc in our main town Edited September 30, 2015 by dragonbautista Quote
Ninja Posted September 30, 2015 Posted September 30, 2015 For that I will be needing a set of coordinates where you want this NPC to be standing at. Quote
dragonbautista Posted September 30, 2015 Author Posted September 30, 2015 Izlude 139 144 Izlude 128 100 Izlude 115 114 Izlude 128 117 Quote
Ninja Posted September 30, 2015 Posted September 30, 2015 (edited) Please give this a try. Compiled but not tested. izlude,128,106,4 script GM Online Lists 811,{ mes "Staffs Online Lists : ^FF0000"+getarraysize( .GM_Name$ )+"^000000 Staffs"; mes "^0000FF_____________________________^000000"; for( set .@i,0; .@i < getarraysize( .GM_Name$ ) ; set .@i,.@i + 1 ){ getmapxy( .Map$,.x,.y,0,.GM_Name$[.@i] ); mes "[ Lv ^63D1F4"+.GM_Level[.@i]+"^000000 ] ^FF0000@ ^0000FF"+.GM_Name$[.@i]+"^000000"; mes "Location : ^0000FF"+.Map$+"^000000"; mes "^0000FF_____________________________^000000"; } close; OnPCLoginEvent: if( getgmlevel() < .MinGMLevel ) end; set .GM_Name$[ getarraysize( .GM_Name$ ) ],strcharinfo(0); set .GM_Level[ getarraysize( .GM_Level ) ],getgmlevel(); end; OnPCLogoutEvent: if( getgmlevel() < .MinGMLevel ) end; for( set .@i,0; .@i < getarraysize( .GM_Name$ ) ; set .@i,.@i + 1 ){ if( strcharinfo(0) != .GM_Name$[.@i] ) continue; deletearray .GM_Name$[.@i],1; deletearray .GM_Level[.@i],1; end; } end; OnInit: set .MinGMLevel,40; // Min. GM Level to Show in Online Lists set .pos, 1; // starting at position 1 initnpctimer; end; OnTimer600000: //number of milliseconds that this NPC will stay at certain coordinate Switch(.pos){ case 1: movenpc "GM Online Lists",128,106; set .pos, 2; break; case 2: movenpc "GM Online Lists",115,114; set .pos, 3; break; case 3: movenpc "GM Online Lists",128,117; set .pos, 4; break; case 4: movenpc "GM Online Lists",139,114; set .pos, 5; break; case 5: movenpc "GM Online Lists",128,106; set .pos, 1; break; } initnpctimer; end; } Edited September 30, 2015 by jezznar Quote
dragonbautista Posted September 30, 2015 Author Posted September 30, 2015 Walking npc is not working. Quote
dragonbautista Posted September 30, 2015 Author Posted September 30, 2015 Its working now! Thanks Quote
Ninja Posted September 30, 2015 Posted September 30, 2015 · Hidden by Emistry, September 30, 2015 - No reason given Hidden by Emistry, September 30, 2015 - No reason given Its working now! Thanks You're welcome. Please mark this thread as solved from the solution I gave. Thanks
Question
dragonbautista
izlude,128,106,4 script GM Online Lists 811,{
mes "Staffs Online Lists : ^FF0000"+getarraysize( .GM_Name$ )+"^000000 Staffs";
mes "^0000FF_____________________________^000000";
for( set .@i,0; .@i < getarraysize( .GM_Name$ ) ; set .@i,.@i + 1 ){
getmapxy( .Map$,.x,.y,0,.GM_Name$[.@i] );
mes "[ Lv ^63D1F4"+.GM_Level[.@i]+"^000000 ] ^FF0000@ ^0000FF"+.GM_Name$[.@i]+"^000000";
mes "Location : ^0000FF"+.Map$+"^000000";
mes "^0000FF_____________________________^000000";
}
close;
OnInit:
set .MinGMLevel,40; // Min. GM Level to Show in Online Lists
end;
OnPCLoginEvent:
if( getgmlevel() < .MinGMLevel ) end;
set .GM_Name$[ getarraysize( .GM_Name$ ) ],strcharinfo(0);
set .GM_Level[ getarraysize( .GM_Level ) ],getgmlevel();
end;
OnPCLogoutEvent:
if( getgmlevel() < .MinGMLevel ) end;
for( set .@i,0; .@i < getarraysize( .GM_Name$ ) ; set .@i,.@i + 1 ){
if( strcharinfo(0) != .GM_Name$[.@i] ) continue;
deletearray .GM_Name$[.@i],1;
deletearray .GM_Level[.@i],1;
end;
}
end;
}
codebox.
10 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.