Hello everyone, I got a script from other forum that someone shared, but I'm not sure how to say it in English. Anyway it's like a MVP's spawning script in a certain maps, something like a MVP arena. the script is right below:
//Author : Goddameit
//Version : 2012/06/21 - 22:20
//Web : http://goo.gl/92vfA
prontera,150,180,4 script MVPtower2 100,{
function fail {
mes "^FF0000["+getarg(0)+"]^000000";
close;
}
if(select("[Play]:[Leave Game]")==2){
if(!instance_id(1))
fail("You don't have game now.");
instance_warpall "prontera",155,180;
instance_destroy instance_id(1);
fail("Finish.");
}
if(instance_id(1))
fail("You have game now.");
if(!getcharid(1))
fail("Need party.");
if(getpartyleader(getcharid(1),2)!=getcharid(0))
fail("You aren't leader.");
set .@zenyneed,10000;
if(Zeny<.@zenyneed)
fail("Zeny isn't enough.");
else
set Zeny,Zeny-.@zenyneed;
set .@partymemberneed,1;
getpartymember(getcharid(1));
if($@partymembercount<.@partymemberneed)
fail("You need "+.@partymemberneed+" member.");
select("Easy","Normal","Hard","Crazy","Damn!");
set .@igid,instance_create("MVPtower:"+(@menu==1?"Easy":@menu==2?"Normal":@menu==3?"Hard":@menu==4?"Crazy":"Damn!"),getcharid(1));
instance_attachmap(set(.@t$,@menu+"@gvs"),.@igid);
instance_set_timeout 3600,3600,.@igid;
instance_init .@igid;
instance_attach .@igid;
set 'datalevel,0;
setmapflag has_instance(.@t$),mf_noteleport;
setmapflag has_instance(.@t$),mf_nomemo;
setmapflag has_instance(.@t$),mf_nosave;
setmapflag has_instance(.@t$),mf_nobranch;
setmapflag has_instance(.@t$),mf_noloot;
setmapflag has_instance(.@t$),mf_nomobloot;
setmapflag has_instance(.@t$),mf_monster_noteleport;
warpparty has_instance(.@t$),$@MVPtowerAdminX[@menu],$@MVPtowerAdminY[@menu],getcharid(1);
end;
OnPCLogOutEvent:
if(!instance_id(1))
end;
instance_warpall "prontera",155,180;
instance_destroy instance_id(1);
end;
}
1@gvs,50,50,4 script MVPtower Administrator#1 100,{
function num {
switch(getarg(0))
{
case 1:
case 2:
if(getarg(2)<3)
return 0;
set .@b,getarg(1)+getarg(2);
return .@b;
default:
return 0;
}
}
function Onmvp {
deletearray 'mvp[0],128;
deletearray 'num[0],128;
setarray 'mvp,1511,1647,1785,1630,1009,1039,1874,1272,1719,1046,1389,1112,1115,1418,1871,1252,1768,1086,1885
,1802,1649,1651,1832,1492,1734,1251,1779,1980,1688,1646,1373,1147,1059,1150,1087,1190,1038,1157,1159,1502
,1623,1650,1583,1708,1312,1751,1685,1648,1917,1658;
switch(getarg(0))
{
case 1:
setarray 'num[1],1,1,1,1,2;
return;
case 2:
setarray 'num[1],1,1,1,2,2;
return;
case 3:
setarray 'num[1],1,1,2,2,2;
return;
case 4:
setarray 'num[1],1,2,2,2,3;
return;
case 5:
setarray 'num[1],2,2,2,3,3;
return;
}
}
function reward {
getpartymember getarg(1),2;
getpartymember getarg(1),1;
set 'partymembercount,$@partymembercount;
copyarray 'partymemberaid[0],$@partymemberaid[0],128;
copyarray 'partymembercid[0],$@partymembercid[0],128;
for(set .@i,0;.@i<'partymembercount;set .@i,.@i+1)
{
if(attachrid('partymemberaid[.@i]))
{
if('partymembercid[.@i]!=getcharid(0))continue;
getmapxy(.@m$,.@x,.@y,0);
if(.@m$==getarg(2))
callfunc "MVPTower2_Reward_"+getarg(0);
}
}
return;
}
set 't,atoi(strnpcinfo(2));
if(!instance_id())
end;
if(getmapmobs("this"))
end;
set 'datalevel,'datalevel+1;
if('datalevel<=getarraysize('num[1])){
instance_announce instance_id(1),"[System]Level."+'datalevel+"!!",0;
Onmvp('t);
for(;'num['datalevel]>0;set 'num['datalevel],'num['datalevel]-1)
{
set 'p,'mvp[rand(getarraysize('mvp))];
areamonster "this",$@MVPtowerSpawnMX['t]-5,$@MVPtowerSpawnMY['t]-5,$@MVPtowerSpawnMX['t]+5,$@MVPtowerSpawnMY['t]+5,"--ja--",'p,1,instance_npcname("MVPtower Administrator#"+'t,instance_id(1))+"::OnKill";
}
if(num(1,'datalevel,'t))
areamonster "this",$@MVPtowerSpawnNX['t]-5,$@MVPtowerSpawnNY['t]-5,$@MVPtowerSpawnNX['t]+5,$@MVPtowerSpawnNY['t]+5,"--ja--",1829,num(1,'datalevel,'t),instance_npcname("MVPtower Administrator#"+'t,instance_id(1))+"::OnKill";
if(num(2,'datalevel,'t))
areamonster "this",$@MVPtowerSpawnNX['t]-5,$@MVPtowerSpawnNY['t]-5,$@MVPtowerSpawnNX['t]+5,$@MVPtowerSpawnNY['t]+5,"--ja--",1830,num(1,'datalevel,'t),instance_npcname("MVPtower Administrator#"+'t,instance_id(1))+"::OnKill";
}else{
instance_announce instance_id(1),"[System]You win!!",0;
sleep2(1000);
getmapxy(.@m$,.@x,.@y,0);
reward('t,getcharid(1),.@m$);
instance_warpall "prontera",155,180;
instance_destroy instance_id(1);
}
end;
OnKill:
if(getmapmobs("this")-1)
instance_announce instance_id(1),"[System]Last:"+getmapmobs("this")+" monsters.",0;
else
instance_announce instance_id(1),"[System]You pass this level.",0;
end;
OnInit:
set .t,atoi(strnpcinfo(2));
getmapxy(.@m$,$@MVPtowerAdminX[.t],$@MVPtowerAdminY[.t],1,strnpcinfo(0));
end;
}
2@gvs,50,50,4 duplicate(MVPtower Administrator#1) MVPtower Administrator#2 100
3@gvs,50,50,4 duplicate(MVPtower Administrator#1) MVPtower Administrator#3 100
4@gvs,50,50,4 duplicate(MVPtower Administrator#1) MVPtower Administrator#4 100
5@gvs,50,50,4 duplicate(MVPtower Administrator#1) MVPtower Administrator#5 100
1@gvs,50,50,4 script MVPtower Spawn_Normal#1 139,{
OnInit:
set .t,atoi(strnpcinfo(2));
getmapxy(.@m$,$@MVPtowerSpawnNX[.t],$@MVPtowerSpawnNY[.t],1,strnpcinfo(0));
end;
}
2@gvs,50,50,4 duplicate(MVPtower Spawn_Normal#1) MVPtower Spawn_Normal#2 139
3@gvs,50,50,4 duplicate(MVPtower Spawn_Normal#1) MVPtower Spawn_Normal#3 139
4@gvs,50,50,4 duplicate(MVPtower Spawn_Normal#1) MVPtower Spawn_Normal#4 139
5@gvs,50,50,4 duplicate(MVPtower Spawn_Normal#1) MVPtower Spawn_Normal#5 139
1@gvs,50,50,4 script MVPtower Spawn_MVP#1 139,{
OnInit:
set .t,atoi(strnpcinfo(2));
getmapxy(.@m$,$@MVPtowerSpawnMX[.t],$@MVPtowerSpawnMY[.t],1,strnpcinfo(0));
end;
}
2@gvs,50,50,4 duplicate(MVPtower Spawn_MVP#1) MVPtower Spawn_MVP#2 139
3@gvs,50,50,4 duplicate(MVPtower Spawn_MVP#1) MVPtower Spawn_MVP#3 139
4@gvs,50,50,4 duplicate(MVPtower Spawn_MVP#1) MVPtower Spawn_MVP#4 139
5@gvs,50,50,4 duplicate(MVPtower Spawn_MVP#1) MVPtower Spawn_MVP#5 139
So it works just fine, but it's just I fear that if anyone can trigger the MVP to spawn may cause some arguments...
And the other part is this:
OnPCLogOutEvent:
if(!instance_id(1))
end;
instance_warpall "prontera",155,180;
instance_destroy instance_id(1);
end;
My understanding of this is that when any team member logs out (including leave the party???) will cause the whole team gets warp back to Prontera in order to destroy the instance.
If so, I'd like to know how to change it into the instance will be destroyed only if the last player in that map leaves the map or logs out.
I hope it's not too much to ask, thanks.