传奇3私服挖钢玉矿石并合成钢玉石
#define ORE_NAME "钢玉矿石"
int process_ore()
{
int i, j;
int quality;
int total_num;
int total_quality;
array ore_list;
mapping my = me();
mapping mc;
mapping ob;
mapping npc;
total_num = 0;
total_quality = 0;
mc = my["carry"];
ore_list = allocate_array(sizeof(my_storage_info) + sizeof(mc));
close_to_npc("storer", &npc);
for (i = sizeof(mc) - 1; i >= 0; i--)
{
ob = mc[i];
if (ob["item_class"] == ITEM_MINE)
{
if (get_mine_treatment(ob) == ITEM_STORED)
store(-i, npc);
continue;
}
}
get_storage_info(npc, storage_password);
if (! is_array(my_storage_info))
my_storage_info = ({ });
for ( i = 0; i < sizeof(my_storage_info); i++)
{
if (! is_mapping(ob = my_storage_info[i]))
continue;
if (ob["name"] == ORE_NAME)
{
ore_list[total_num++] = ob;
total_quality += ob["quality"];
}
}
refresh_inv();
while (! is_mapping(my = me()) || ! my["got_inventory"])
sleep(1);
mc = my["carry"];
for ( i = 0; i < sizeof(mc); i++)
{
if (! is_mapping(ob = mc[i]))
continue;
if (ob["name"] == ORE_NAME)
{
ore_list[total_num++] = ob;
total_quality += ob["quality"];
}
}
if (total_num < 10 || total_quality < 95000)
return 0;
for (i = 0; i < total_num - 1; i++)
{
for (j = total_num - 1; j > i; j--)
{
if (ore_list[j]["quality"] < ore_list[j - 1]["quality"])
{
ob = ore_list[j];
ore_list[j] = ore_list[j - 1];
ore_list[j - 1] = ob;
}
}
}
printf("After sort %d)\n", total_num);
quality = 0;
for (i = 0; i < 10; i++)
{
quality += ore_list[i]["quality"];
ore_list[i]["will_use"] = 1;
}
for (i = 9, j = 0; i >= 0; i--, j++)
{
if (quality >= 95000)
break;
quality -= ore_list[i]["quality"];
ore_list[i]["will_use"] = 0;
while (1)
{
if (quality + ore_list[total_num - 1 - j]["quality"] <= 95000)
break;
else
if (quality + ore_list[total_num - 1 - j]["quality"] >= 95000 &&
quality + ore_list[total_num - 1 - j - 1]["quality"] < 95000)
break;
else
j++;
}
printf("Replace %d with %d ,", i, total_num - 1 - j);
quality += ore_list[total_num - 1 - j]["quality"];
ore_list[total_num - 1 - j]["will_use"] = 1;
printf("Selected ore %d)\n", quality);
}
if (quality < 95000 || quality > 100000)
return 0;
for (i = 0, j = 0; i < total_num; i++)
{
if (ore_list[i]["will_use"])
{
take(ore_list[i]["id"], 1, npc);
clear_command();
}
}
return 1;
}
int on_post_prepare_for_quest()
{
tell_user("开始自动合成钢玉矿石");
do
{
if (! process_ore())
{
tell_user("没有合适的矿石");
return 0;
}
if (! goto_city_ex("边境城市", 0, 0, 6) ||
! run_close_to(422, 262, 6))
{
tell_user("靠近啊彬失败");
return 0;
}
talk_to("啊彬");
talk_to("啊彬", "制作钢玉石");
talk_to("啊彬", "收集完所需材料");
talk_to("啊彬", "关闭");
} while (1);
}
void buy_weapon(){
string npc;
goto_city("毒蛇山谷",0,0);
close_to_npc("weapon",&npc);
talk_to(npc);
talk_to(npc, "@buy");
int k=0;int wp_buied;
for(;;i++){
show_inv("风之鹤嘴锄", i);
do{
printf("%O\n",current_npc_inv_page[k]["durability"]);
if(current_npc_inv_page[k]["durability"]==30000){
buy(current_npc_inv_page[k]["id"],1,npc);
wp_buied=1;break;}
k++;
}while(k<10);
if(wp_buied){equip("风之鹤嘴锄");break;}
}
goto_city("边境城市",0,0);
start_quest();
}
int on_prepare_for_quest()
{
if(me()["equip"][1]["max_durability"]>14000)
return 0;
else
tell_user("武器持久过低,前往毒蛇更换\n");
stop_quest();
create_thread("chang_weapon", "buy_weapon");
return 0;
}
#define DROP_QUAL 16
#define GET_QUAL(x) (((x) + 500) / 1000)
void on_new_carried(mapping item)
{
int i;
mapping my = me();
mapping mc;
mapping myitem;
string item_name;
int item_quality;
// 取得包裹信息
mc = my["carry"];
for (i = sizeof(mc) - 1; i >= 0; i--)
{
myitem = mc[i];
item_quality = GET_QUAL(myitem["quality"]);
if (myitem["item_class"] == ITEM_MINE
&& item_quality <= DROP_QUAL)
{
item_name = myitem["name"];
// 矿物,判断处理方法
//printf("scan:%s(%d)\n", item_name, get_mine_treatment(myitem));
if (item_name == "紫水晶" || item_name == "石榴石" || item_name == "金刚石")
{
printf("%s丢弃:%s(%d)\n\n", ctime(),item_name, myitem["id"]);
drop (myitem["id"]);
}
continue;
}
}
}
- 本文固定链接: https://www.fengshen.cn/2007/11/挖钢玉石/gameofwind/
- 转载请注明: fengshen 发表于 Dream of Wind | 一梦风神
