[circle]신세계 수거 명령어
성천사
5,273
0
0
2008-01-05 05:47:20
ACMD(xxx)로 만들어진 명령어들은 interpreter.c 안에 추가적으로 명령어 추가를 해 주셔야 합니다. 이 명령어는 운영자가 사용자의 장비를 운영자의 소지품으로 옮기는 명령어 입니다. 신세계는 사용자에게서 장비를 가져올 수 있는 방법은 훔치기와 시켜 명령밖에는 없습니다. 이것 또한 저주등이 걸리면 해제 하기 전까지는 장비를 가져올 방법이 없습니다. 그래서 훔치기를 참조해 만들어 봤습니다.
ACMD(do_getback)
{
struct char_data *vict;
struct obj_data *obj;
int eq_pos;
char arg1[MAX_INPUT_LENGTH];
if(IS_NPC(ch))
return;
two_arguments(argument, arg, arg1);
if (!*arg || !*arg1) {
send_to_char("사용법: <상대> <아이템> 수거
"
"
"
" 수거 명령어는 사용자가 소지하고 있거나 장비 하고 있는것을 운영자에게 이동
"
"시킬수 있는 명령어 이다.
", ch);
return;
}
if (!(vict = get_char_room_vis(ch, arg))) {
send_to_char("누구의 물건을 수거 할까요?
", ch);
return;
} else if (vict == ch) {
send_to_char("당신에게 무엇을 하시려고요?
", ch);
return;
} else if (IS_NPC(vict)) {
send_to_char("맙에게는 불가능 합니다.
", ch);
return;
} else if (GET_LEVEL(vict) >= GET_LEVEL(ch)) {
send_to_char("자신과 같거나 높은 레벨의 신에게서는 불가능 합니다.
", ch);
return;
}
if (!(obj = get_obj_in_list_vis(vict, arg1, vict->carrying))) {
for (eq_pos = 0; eq_pos < NUM_WEARS; eq_pos++)
if (GET_EQ(vict, eq_pos) && (isname(arg1, GET_EQ(vict, eq_pos)->name)) && CAN_SEE_OBJ(ch, GET_EQ(vict, eq_pos))) {
obj = GET_EQ(vict, eq_pos);
break;
}
if (!obj) {
act("$E 그런 아이템은 가지고 있지 않습니다.", FALSE, ch, 0, vict, TO_CHAR);
return;
} else { /* 장비에서 찾을경우 */
act("당신은 물건을 수거 합니다.($p)", FALSE, ch, obj, 0, TO_CHAR);
act("$n님이 $N님으로 부터 물건을 수거합니다.($p)", FALSE, ch, obj, vict, TO_NOTVICT);
obj_to_char(unequip_char(vict, eq_pos), ch, 6);
sprintf(buf, "(GC) %s, %s님에게서 물건을 수거.(%s)", GET_NAME(ch), GET_NAME(vict), obj->short_description);
mudlog(buf, BRF, LVL_GOD, TRUE);
}
} else { /* 소지품에서 찾을경우 */
obj_from_char(obj);
obj_to_char(obj, ch, 6);
sprintf(buf, "%s님이 당신의 물건을 수거했습니다. (%s)
", GET_NAME(ch), obj->short_description);
send_to_char(buf, vict);
sprintf(buf, "%s님의 물건을 수거했습니다. (%s)
", GET_NAME(vict), obj->short_description);
send_to_char(buf, ch);
sprintf(buf, "(GC) %s, %s님에게서 물건을 수거.(%s)", GET_NAME(ch), GET_NAME(vict), obj->short_description);
mudlog(buf, BRF, LVL_GOD, TRUE);
}
return;
}