yes,I find this code.
Function look, how can be displayed in the mush!!
void look(object me,int idx,int team,int way)
{
int x,y,i,j,k,a,cur,size,tsize,x1,x2,y1,isshow;
string str;
if(!me || !userp(me)) return;
if(team==1) {
x = sea[idx]["x2"] - sea[idx]["x1"];
y = sea[idx]["y2"] - sea[idx]["y1"];
}
else {
x = sea[idx]["x1"] - sea[idx]["x2"];
y = sea[idx]["y1"] - sea[idx]["y2"];
}
// get ruler
size = 1;
switch(way) {
case 6: if(x<0) size = 0; break;
case 4: if(x>0) size = 0; break;
case 8: if(y<0) size = 0; break;
case 2: if(y>0) size = 0; break;
}
i = MAX( ABS(x) , ABS(y) );
if( i > 7500 || size == 0 ) { size = 1000; str = "?"; }
else if( i > 3750 ) { size = 500; str = "?"; }
else if( i > 1875 ) { size = 250; str = "????"; }
else { size = 125; str = "????"; }
x /= size;
y /= size;
// get shot to be showed
tsize = 0;
for(i=0;i<MAX_SHOTS;i++) {
if( shot[i]["x"]==0 || shot[i]["job"]!=idx ) continue;
if(team==1) {
tshot[tsize]["x"] = shot[i]["x"] - sea[idx]["x1"];
tshot[tsize]["y"] = shot[i]["y"] - sea[idx]["y1"];
}
else {
tshot[tsize]["x"] = shot[i]["x"] - sea[idx]["x2"];
tshot[tsize]["y"] = shot[i]["y"] - sea[idx]["y2"];
}
tshot[tsize]["x"] /= size;
tshot[tsize]["y"] /= size;
tshot[tsize]["team"] = shot[i]["team"];
switch(way) {
case 6: if(tshot[tsize]["x"]>0 && ABS(tshot[tsize]["y"])<15) tsize++; break;
case 4: if(tshot[tsize]["x"]<0 && ABS(tshot[tsize]["y"])<15) tsize++; break;
case 8: if(tshot[tsize]["y"]>0 && ABS(tshot[tsize]["x"])<15) tsize++; break;
case 2: if(tshot[tsize]["y"]<0 && ABS(tshot[tsize]["x"])<15) tsize++; break;
}
}
// first line
isshow = 1;
switch(way) {
case 6:
tell_object(me,CYN"??????:\n"NOR);
tell_object(me," 010203040506070809101112131415\n");
if(x<1 || x>15) isshow = 0;
x1 = 0; x2 = 30; y1 = -15;
break;
case 4:
tell_object(me,CYN"??????:\n"NOR);
tell_object(me," 151413121110090807060504030201\n");
if(x<-15 || x>-1) isshow = 0;
x1 = 30; x2 = 30; y1 = -15;
break;
case 8:
tell_object(me,CYN"??????:\n"NOR);
tell_object(me," 151413121110090807060504030201**010203040506070809101112131415\n");
if(x<-15 || x>15) isshow = 0;
x1 = 30; x2 = 62; y1 = 1;
break;
case 2:
tell_object(me,CYN"??????:\n"NOR);
tell_object(me," 151413121110090807060504030201"+showship(idx,team)+"010203040506070809101112131415\n");
if(x<-15 || x>15) isshow = 0;
x1 = 30; x2 = 62; y1 = 1;
break;
}
a = -1;
for(k=15;k>=y1;k--) {
if(way==2) i=k-16; else i=k;
if(i==0 && way==6)
tell_object(me,showship(idx,team));
else
tell_object(me,sprintf("%.2d",ABS(i)));
cur = 0;
for(j=0;j<tsize;j++) {
if( tshot[j]["y"] != i ) continue;
if(cur>0) tell_object(me,ANSI_CHAR+sprintf("%d",cur)+ANSI_LEFT);
cur = x1 + tshot[j]["x"]*2;
tell_object(me,ANSI_CHAR+sprintf("%d",cur)+ANSI_RIGHT);
if(tshot[j]["team"]==1) tell_object(me,HIW); else tell_object(me,CYN);
tell_object(me,"?"NOR);
cur += 2;
}
if( y==i && isshow ) a = 0;
if(cur<x2) tell_object(me,ANSI_CHAR+sprintf("%d",x2-cur)+ANSI_RIGHT);
if(i==0 && way==4)
tell_object(me,showship(idx,team)+"\n");
else
tell_object(me,sprintf("%.2d\n",ABS(i)));
if(a>=0) a++;
}
/*
for(k=15;k>=y1;k--) {
if(way==2) i=k-16; else i=k;
if(i==0 && way==6)
tell_object(me,showship(idx,team));
else
tell_object(me,sprintf("%.2d",ABS(i)));
cur = 0;
for(j=0;j<tsize;j++) {
if( tshot[j]["y"] != i ) continue;
if(cur>0) tell_object(me,ANSI_CHAR+sprintf("%d",cur)+ANSI_LEFT);
cur = x1 + tshot[j]["x"]*2;
tell_object(me,ANSI_CHAR+sprintf("%d",cur)+ANSI_RIGHT);
if(tshot[j]["team"]==1) tell_object(me,HIW); else tell_object(me,CYN);
tell_object(me,"?"NOR);
cur += 2;
}
if( y==i && isshow ) {
if(cur>0) tell_object(me,ANSI_CHAR+sprintf("%d",cur)+ANSI_LEFT);
cur = x1 + x*2;
if(cur>0) tell_object(me,ANSI_CHAR+sprintf("%d",cur)+ANSI_RIGHT);
tell_object(me,showship(idx,3-team));
cur += 2;
}
if(cur<x2) tell_object(me,ANSI_CHAR+sprintf("%d",x2-cur)+ANSI_RIGHT);
if(i==0 && way==4)
tell_object(me,showship(idx,team)+"\n");
else
tell_object(me,sprintf("%.2d\n",ABS(i)));
}
*/
// last line
switch(way) {
case 6: tell_object(me," 010203040506070809101112131415\n"); break;
case 4: tell_object(me," 151413121110090807060504030201\n"); break;
case 8: tell_object(me," 151413121110090807060504030201"+showship(idx,team)+"010203040506070809101112131415\n"); break;
case 2: tell_object(me," 151413121110090807060504030201**010203040506070809101112131415\n"); break;
}
// show ruler
tell_object(me,"???:"+str+" ?????");
if(wizardp(me) && me->query("env/test"))
tell_object(me,sprintf(" ??:%d,%d ; ??:%d,%d",sea[idx]["x1"],sea[idx]["y1"],sea[idx]["x2"],sea[idx]["y2"]));
tell_object(me,"\n");
// show ship
if( a > 0 ) {
tell_object(me,ANSI_CHAR+sprintf("%d",a+2)+ANSI_UP);
if(y==0 && way==6)
tell_object(me,showship(idx,team));
else
tell_object(me,"?");
cur = x1 + x*2;
if(way==6) cur-=2;
if(cur>0) tell_object(me,ANSI_CHAR+sprintf("%d",cur)+ANSI_RIGHT);
tell_object(me,showship(idx,3-team));
cur += 2;
if(cur<x2) tell_object(me,ANSI_CHAR+sprintf("%d",x2-cur)+ANSI_RIGHT);
if(y==0 && way==4)
tell_object(me,showship(idx,team)+"\n");
else
tell_object(me,"?\n");
tell_object(me,ANSI_CHAR+sprintf("%d",a+1)+ANSI_DOWN);
}
}
|