LPC & php 語法對照 - 聖殿英雄傳說 MUD

Quanna avatar
By Quanna
at 2018-09-06T10:06

Table of Contents

有自架 linux、且已安裝 apache、yum 了 php 腳本相關檔的,
php 腳本的檔案基本上如下

#!/usr/bin/php -q
<?php
.
. <- 中間包著的就是程式內容
.
?>

php 腳本有著 php 語法的直譯、大部份時候不需事先宣告變數
、以及可像 VB 執行檔那樣執行的好處,而且與 LPC 有很多共
通名稱的函數,相當方便。


LPC php
==========================================================================
int x,y,z; 不用宣告,可直接使用 $x,$y,$z
string str,tmp; 不用宣告,可直接使用 $str,$tmp
mixed tmps; $tmps=null;
mixed tmps=({}); $tmps=array();
mixed tmps=({1,2,3}); $tmps=array(1,2,3);
mapping datas; $datas=array();

x=1; $x=1;
str="hi"; $str="hi";
tmps=({1,2,3}); $tmps=[1,2,3];
$tmps=array(1,2,3);
tmps=({"hello","world"}); $tmps=["hello","world"];
$tmps=array("hello","world");
datas=(["a":"abc","x":"xyz"]); $datas=(["a"=>"abc","x":"xyz"]);
$datas=array("a"=>"abc","x":"xyz");

x++; $x++;
str+="hey"; $str.="hey";
tmps+=({4}); $tmps[]=4;
datas["h"]="hij"; $datas["h"]="hij";

keys_data=keys(datas); $keys_data=array_keys($datas);

foreach(tmp in tmps) foreach($tmps as $tmp)

foreach(tmp1,tmp2 in datas) foreach($datas as $tmp1 => $tmp2)
原本以為沒有這東西,感謝 typers

tmp=sprintf("%-s %3d",str,x); $tmp=sprintf("%-s %3d",$str,$x);

str=replace_string(str,"h","H"); $str=str_replace("h","H",$str);

比方 2..5 共取出長度4的子字串 2 5-2+1=4
tmp=str[a..b]; $tmp=substr($str,a,b-a+1);

tmp=str[a..strlen(tmp)-1]; $tmp=substr($str,a);

tmp=implode(tmps,","); $tmp=implode(",",$tmps);
tmps=explode(tmp,","); $tmps=explode(",",$tmp);

write(str+"\n"); echo($str."\n"); 或者
echo("$str\n");

write(identify(datas)); var_dump(datas);

$tmp=read_file("/file/a.txt"); $tmp=file_get_contents("/file/a.txt");
write_file("/file/a.txt",tmp); file_put_contents("/file/a.txt",$tmp);

if(undefinedp(tmps)) if(tmps==null)
if(undefinedp(datas["xxx"]) if(isset($datas["xxx"])==FALSE)
也有使用 empty() 的語法, 不過這個就夠用了

if(!undefinedp(tmps)) if(is_array(tmps))

tmps=sort_array(tmps, asort(tmps);
(: sort_tmps :)); rsort(tmps);
ksort(tmps); 呼叫不同函數有不同的sort
.
.

tmp=tmps[0]; $tmp=$tmps[0];
tmp=tmps[0][1]; $tmp=$tmps[0][1];
tmp=datas["a"]; $tmp=$datas["a"];
tmp=datas["a"]["b"]; $tmp=$datas["a"]["b"];
==========================================================================


大概瞭解這些,讀檔進行字串拆解、資料分析與儲存、然後再做格式化
輸出就沒啥問題,再怎樣都能土法煉鋼。

(所以我暫時只摸到這裡而已,與資料庫的連結部份暫時不碰)

php 的陣列其實廣義來說都是 mapping,例如

$tmps=["a","b","c"];

它其實是

$tmps=[0=>"a",1=>"b",2=>"c"];

所以 $tmps[0]="a" 既合理且直覺

foreach($tmps as $tmp) 就相當於

foreach($tmps as $i => $tmp)

其中 $i 在這裡就象徵著陣列索引值,就能替代 for(i=0;i<n;i++)
的傳統用法,直接用 foreach 就能做大部份的處理。

而且它的陣列是 mixed mapping,也就是陣列索引值可同時並存數值
與字串。

讀網頁檔時則必須進行轉換,我的轉換方式是

$fh= file_get_contents('https://www.revivalworld.org/mud/taiwanmudlist');
$encode=mb_convert_encoding($fh,'BIG5','UTF-8');

這個也是 try 出來的,它的意思是先對讀回來的東西做 UTF-8 轉換,
然後再對轉換後的東西再做 BIG5 轉換,有可能是 sanc 的主機所灌的
linux 版本的設定的緣故。


Laechan

--
Tags: 線上

All Comments

Oscar avatar
By Oscar
at 2018-09-10T21:46
LPC mapping foreach 語法: foreach (k, v in data)
David avatar
By David
at 2018-09-15T09:26
其實程式語言的語法都差不多,倒是觀念差異比較大
Ethan avatar
By Ethan
at 2018-09-19T21:05
LPC在觀念上其實比較接近javascript

死鬥都排不到==

John avatar
By John
at 2018-09-06T09:49
我只是想要玩個死鬥而已 到底是要排多久== https://i.imgur.com/dvPukNd.png 這個排隊時間正常嗎? 還是這個遊戲究極過氣惹 - ...

加拿大奧委會CEO加入OWL多倫多隊

Connor avatar
By Connor
at 2018-09-06T09:27
https://imgur.com/HgfV4Z1.JPG 擔任加拿大奧委會CEO長達八年的Chris Overholt辭去CEO職務 將進入OWL多倫多隊工作 這算是OWL甚至電競史上最重量級的傳統體育人士加入 中國方消息說讓Chris加入多倫多是暴雪賣位子給多倫多的必要條件之一 也因此多倫多這次 ...

ManaSurge Meta Insight#9/3

Mia avatar
By Mia
at 2018-09-06T08:03
來源:https://twitter.com/TeamManaSurge/status/1037396014104080385?s=19 大家好,我是ManaSurge的Sharpedo. 這次搬運一下MS最新的計劃。 這次用了大量數據跟隊員見解來構成這次的論文。 (我在打天霜,沒找我QQ) 當中牌組方面更 ...

五勝靠右手 就拿人偶仇

Susan avatar
By Susan
at 2018-09-06T07:39
使用牌組: https://goo.gl/SJD2Gt https://i.imgur.com/8Rf4wry.jpg 使用區域:(M/大賽) 使用心得: 看板上都沒有最新版人偶仇牌組 我就獻醜一下讓大家一起噁心人吧 基本上是養老休閒玩家了 人權我看還是別貼出來給人笑了 最近連每日都兩三天解一次 雖然大賽基 ...

【09/06單日滿額送】

Isla avatar
By Isla
at 2018-09-06T04:47
【09/06單日滿額送】 活動時間:2018/09/06(四)00:00 ~ 23:59 活動辦法:回饋消費的球迷玩家,活動時間內於遊戲中消費滿指定金額可獲得對應獎勵 獎勵項目 條件 獎勵內容 1 累積消費滿1000元(含)以上 ...