/cmds/wiz/_war.c - 聖殿英雄傳說 MUD

William avatar
By William
at 2017-02-07T16:10

Table of Contents

以前有寫一部份了(然後就因為一些緣故停寫,原因之前有提到)。

既然有寫了,就以線上 coding 為主,不過今天大概寫不完,分幾
天寫。


// 重寫架構 by laechan 2016/02/08

// 戰爭腳本處理指令、戰爭控制物件呼叫指令
// Laechan@Sanc add in 2013/02/18
inherit DAEMON;

int cmd_war(string str,object me)
{
string t1,t2,tmp,tt1,tt2,pstr="",cstr,fstr="",estr="";
string files;
mixed tmps=({}),tmps2=({});
int i,j,ii,jj,l,k1,k2,s,a,r1,r2;

cstr=@LONG
#include "../war.h"
inherit WAR_SAMPLE;

void create()
{
::create();
seteuid(getuid(this_object()));
war_data=([]);
LONG
;

if(!str || str=="")
return notify_fail(@LONG
war(戰爭系統)指令說明:
===============================================
war read 腳本檔 將戰爭腳本檔轉成戰爭物件
war regist 腳本名 登錄腳本

腳本需經過登錄,才能做為正式的戰爭物件

war start 腳本名 手動執行戰爭
war stop 腳本名 手動終止戰爭

war remove 腳本名 移除腳本的登錄狀態
war halt 腳本名 暫停執行腳本
war restart 腳本名 回復執行腳本

war check 腳本名 察看戰爭目前的執行狀態
war show 腳本名 顯示腳本的設定內容
===============================================
LONG
);

if(sscanf(str,"read %s",t1)==1)
{
t1=resolv_path(me->query("cwd"),t1);

if(!file_exists(t1))
return notify_fail("war read: 找不到 "+t1+" 這個檔案.\n");

tmps=explode(read_file(t1),"##\n");
files=t1+".c";
j=sizeof(tmps);

for(i=0;i<j;i++)
{
str=tmps[i];
l=strlen(str);
if(l<6) continue;
k1=strsrch(str,"=");

switch(k1)
{
// date, mobs
case 4:
if(str[0..3]=="date")
cstr+=" war_data[\"date\"]=\""+str[5..l-1]+"\";\n";
else if(str[0..3]=="mobs")
{
pstr+="#define MOB ([\\\n";
tmps2=explode(str,"\n");
jj=sizeof(tmps2);
for(ii=0;ii<jj;ii++)
if(sscanf(tmps2[ii],"%s: %s",tt1,tt2)==2)
pstr+="\""+tt1+"\":"+tt2+",\\\n";
pstr+="])\n";
}
break;

// title, steps
case 5:
if(str[0..4]=="title")
cstr+=" war_data[\"title\"]=\""+str[6..l-1]+"\";\n";
else if(str[0..4]=="steps")
{
cstr+=" war_data[\"steps\"]="+str[6..l-1]+";\n";
for(ii=1;ii<=atoi(str[6..l-1]);ii++)
cstr+=" war_data[\""+ii+"\"]=([]);\n";
}
break;

// header
case 6:
if(str[0..5]=="auther")
cstr+=" war_data[\"auther\"]=\""+str[7..l-1]+"\";\n";
if(str[0..5]=="header")
pstr+=str[7..l-1]+"\n";
break;

// 剩下的再依 stepX_xxxx 來篩
default:
if(sscanf(str,"step%s_%s=%s",tmp,tt1,tt2)==3)
{
switch(tt1)
{
case "times":
cstr+=" war_data[\""+tmp+"\"][\"times\"]="+tt2+";\n";
break;
case "check":
case "plans":
fstr+="int step"+tmp+"_"+tt1+"()\n{"+tt2+"\n return 1;\n}\n\n";
break;
}
}
break;
} // end of switch
} // end of for

tmp=pstr+cstr+"}\n\n"+fstr+estr;

if(file_exists(files)) rm(files);
write_file(files,tmp);
this_player()->more(explode(tmp,"\n"),1,1);
return 1;
} // end of if sscanf "read"

}


--
Tags: 線上

All Comments

應援活動生慘系要拿什麼徽章比較好?

Victoria avatar
By Victoria
at 2017-02-07T16:06
有在碰的大概是淘金、冶煉、打鐵、紡織、製衣、木工、貿易 不知道哪個有比較容易卡的修練項目 是需要用到修練徽章升上去的 我還在用六年前的想法一直拿冶煉章Orz 該不會都浪費了吧=口= - ...

新星招攬的問題

Noah avatar
By Noah
at 2017-02-07T10:13
如題 新星招攬有一個第三次免費 全部都選擇好年度+隊伍大約要130萬吧 如果是隨機選擇則要24萬 那有沒有可能隨機招攬兩次就是48萬 第三次選擇年度+隊伍則免費,這樣不就省了大概100萬了嗎?? 小弟想知道一下我這是否是天馬行空…………? - ...

不確定符不符合首購 首儲身份

Doris avatar
By Doris
at 2017-02-07T04:57
http://i.imgur.com/tCDU8og.jpg 只有這種產包紀錄 這個帳號沒用過點數卡 不知道符不符合首購 首儲的身份 想花些小錢回歸一下 3q!! - ...

中信兄弟

Eden avatar
By Eden
at 2017-02-07T01:52
先上個打線 牛棚 http://imgur.com/a/xfB92 http://imgur.com/a/osMWz 玩的是16中信兄弟 目前先以打二軍為主 打線部分1B原本用紅大師兄 後來覺得紅跟黃差不多,又想補強牛棚,就改黃的了 SS因為不會跳接就挑一張數值好的用... 如果有補到紫葛應該就會把 ...

二天一流太刀勢法 的學法

Poppy avatar
By Poppy
at 2017-02-06T23:09
五本 五輪書 拿到了 這個是 學二天一流太刀勢法 的嗎? 請問該怎麼學呢? - ...