スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

過去の力の無さにはただただ驚くばかり。


こんばんは。

ウィークエンド、ほぼ寝ずに過ごしてしまい、
発言や行動が謎のまま月曜を迎えてしまいましたorz


この記事はMPのスクリプトネタです。

最近、地味に全てのスクリプトのソースコードを書き直してたりしてまして。


まず何より、0.1b、スクリプトを始めた当初は
PawnがC言語の基本ルールに近いと思いつつも、
Cのルールをほとんど知らなかった事が災いして…

当時は配列やら構造体はもちろん、
関数を作ってソースをクリーンにとか出来ず、でした。

ちょっと例を出してみます。今ではとても恥ずかしいけど。

if(strcmp(cmdtext, "/sf", true) == 0)
{
SetPlayerInterior(playerid,0);

if(IsPlayerInAnyVehicle(playerid))
{
new VehicleID = GetPlayerVehicleID(playerid);
SetVehiclePos(VehicleID,-2013.31,142.54,27.69);
GameTextForPlayer(playerid, "~h~ welcome to SAN FIERRO !!!!",3000,1);
LinkVehicleToInterior(VehicleID, 0);
}
else
{
SetPlayerPos(playerid,-2013.31,142.54,27.69);
GameTextForPlayer(playerid, "~b~ welcome to SAN FIERRO !!!!",3000,1);
}

GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "TELEPORT: %sは SF SAN FIERRO GARAGE に移動しました[ /sf ]", name);
SendClientMessageToAll(COLOR_LIGHTBLUE, string);

return 1;
}


/sf と入力すれば SF GARAGEに移動する良くあるテレポートです。

移動とメッセージの表示がある典型的なタイプだと思います。

これが /ls /sf /lv ... と続くわけですから大変。

スクリプトは同じようなソースまみれに。かつての自分のpwnの中身より。


今同じ物を作る場合、こんな風に纏まります。

if(strcmp(cmd, "/sf", true) == 0)
{
// x, y, z, r, i, areaname
new Float:x = -2016.044433; // X
new Float:y = 138.420791; // Y
new Float:z = 27.687500; // Z
new Float:r = 271.514892; // R
new interior= 0 ; // I
new areaname[32] = "San Fierro Garage"; // 名称

// "/" 削除 (表示用)
strmid(cmd, cmd, 1, strlen(cmd));

// id, x, y, z, r, i, areaname, cmdname
PlayerTeleport(playerid, x, y, z, r, interior, areaname, cmd);
return 1;
}


これを更に短く。

if(strcmp(cmd, "/sf", true) == 0)
{
strmid(cmd, cmd, 1, strlen(cmd));
PlayerTeleport(playerid, -2016.044433, 138.420791, 27.687500, 271.514892, 0, "San Fierro Garage", cmd);
return 1;
}


PlayerTeleportの中身。一部長いので折り返しています。

stock PlayerTeleport(playerid, Float:teleportx, Float:teleporty, Float:teleportz, Float:teleportr, 
teleporti, const areaname[], const cmdname[])
{
if(IsPlayerInAnyVehicle(playerid))
{
new vid = GetPlayerVehicleID(playerid);
SetVehiclePos(vid, teleportx, teleporty, teleportz);
SetVehicleZAngle(vid, teleportr);
LinkVehicleToInterior(vid, teleporti);
}
else
{
SetPlayerPos(playerid, teleportx, teleporty, teleportz);
SetPlayerFacingAngle(playerid, teleportr);
}

SetPlayerInterior(playerid, teleporti);

// 移動メッセージの作成
new string[256];
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));

format(string, sizeof(string), "%s %s %s %s %s ( /%s )", "TELEPORT :", playername, "は",
areaname, "へテレポートしました", cmdname);
SendClientMessageToAll(COLOR_TELEPORT, string);
return;
}


という感じで、ソースを圧縮…いや、見た目最適化をしてあるのです。
中身はほとんど同じでも気分が違いますよね。それだけ。

人によっては構造体で一括管理してたりとか…
同じテレポートでも人によって書き方は無限大、ですね。

また当初は全く理解できなかったファイル関数も最近になって
少々理解し、(バイナリはわかりません。)テレポートにも応用されました。

以下、scriptfiles/teleport/setting.txtにあるファイルの内容。

touge,-2443.289794,-639.703369,132.927276,337.878173,0,SF Hill, ;
sabaku,422.621643,2526.360839,16.540012,116.621391,0,LV DESERT, ;
lv,2030.444458,959.713745,10.397115,318.523651,0,THE FOUR DRAGONS CASINO, ;
aneha,2435.662353,1123.515991,10.820312,88.143287,0,LV 姉歯ビルディングス, ;

(デリミタ記号','でトークンを区切り取り出す設定です。)
ファイルからコマンド名を参照し、(第一トークン)
一致すれば後続の座標と名称を読み取り、移動する…。

本格的なファイル読み込みをしたのがコレが初でした。

要するに…ゲーム中にいくらでもテレポが作れる!
いちいちリロードしなくてもいい!

ということになります。が、現在の0.2以降では reloadfs という
スクリプトの読み直しがあるため、今となっては存在が薄い…w

0.1bの頃はリロードが出来なかったので、当初コレがあれば…。
0.1bの頃に今の自分くらい(今も大した事ないけど、昔はそれ以上に酷い。)
コーディングできれば全盛期みんなをもっと
楽しくて新しい経験を提供できたのになぁ。

昔のソースを見ると、我の力の無さを恨みます…w


0.3リリースも近々来るだろうし、MPを廃れさせない為にも
ここは獅子奮迅、SA:MPを盛り上げるべく
遊び場を提供し、一緒に楽しみを共有し
貢献出来たらいいな、と思っています。


…管理人、MTAのLua(ルア)言語は全くルールがわからず撃沈。
そういう意味でも、マイナーなPawnで頑張りますw


色々ゲームをしたのでコレだけはわかる。

「実績システムがあると楽しい」

何かに打ち込める要素があると人は夢中になります。

例え架空の実績ポイントの為でもあっても…多分。


将来、ユーザーデータをMysqlで管理して、
ウェブサイトと連動して実績リストを公開したりと、
プチxbox.comのような事も出来れば神ですね…。

SA:MPでMysqlは中々難易度が高かったので…。
きっとそれが完成してる頃には
また今の自分の力の無さを恨むのでしょうかw
(MPで実際Mysqlを使ってるサーバーさんに教えを乞いたいくらい。)


色々構想は膨らみますが、現在の進捗度は 0ですからねw

0.3のニュースで色々活力をいただきました。

まぁ~ボチボチ頑張っていこうと思います (^う^)/


あ、そうそう。

G-Froce っていうゲームがバカゲーチックで面白そうだと思った。



こういう世界観好きです、PS2の「蚊」とかw



achievement unlocked
     5G - Welcome to feel-my-soul


何か違うな、まぁいいやw


ではでは。

アデゥ~!

さらばだ^^

コメントの投稿

Private :

こんばんは…というより朝が迎えてしまったのでおはようございますですね^^;

自分はPawnに触れ始めてからだいたい4カ月経つか経たないか
くらいですが、自分でも昔作ったスクリプトを見ていると
本当に自分のその当時の力の無さを痛感させられます、
そして今も自分の書いたコードを見返すたびにバグを見つけ
たりで、1日前の自分さえもまだ力が足りないんだななどと
思います(´・ω・`)
でも逆に言えば1日ずつ少なからず力をつけてきている
ということになりますしね、そう考えればまたスクリプトを
書く気が起きてきます。PawnだけじゃなくC言語などでも
同じ事ですね、とにかく経験がものを言うということでしょうか。

ちなみにですが、MySQLとSA:MPの連携ですが、公式フォーラム
のほうで公開されているプラグインを使えば大方のテーブル
操作はSQL文を覚えなくても扱うことができるので以前と
比べれば断然楽になりましたよ^^
もちろん自分でクエリを書いてORDER BY等で列の並び替えたり、
SQLの関数も使うことができます。
さらにPHPを導入してMySQLを介してPawnとデータのやり取り
とかもしたらWeb関連も組み合わせた便利なものも作れそうですね。
自分はアイディアはあっても技術がないので何もできませんが^^;;;;

もちろんあの「ポコン♪」も再現しますよね!

C語やスクリプトのソースコードって相変わらず理解できねぇーww

にしてもSA-MP 0.3楽しみですwいったいどんな機能が増えるのかな
0.1bの頃は日本語も打てなかったのに今じゃ快適に遊べますね

GTA4も日本語打てればもっと  楽しくなのになー(´・ω・`)

0.1b時代なつかしいですね~w
でも、あれはあれで楽しかった気がします。
あとPawnでMySQLは、少し前にとあるスクリプトでやりましたね。(挫折しましたがw

実績機能・・・期待してます!

PAWNでMYSQLのソース公開しましょうか?
今でもkamakura serverで動いています。

素人目だとスクリプトが何かの暗号文にみえてしまいますww

>G-Froce
公太郎にみえるwww

蚊もそうだけど、ボクは小さいってゲームも住宅内で色々やるゲームだから面白いよw

スクリプト~~~('A`)

復活の呪文より・・・


G-Froce GAME化されてたんですね~

公開されたら見に行きたい映画の一つです。^^

Re:

>Aquaさん
多分同じ4ヶ月だったとしら、自分の方はもっと酷いですよw
今見たら「うわーっ・・・」って思いますからw
場数と経験は大事ですよね~、失敗成功は結果であって、
経過は同じです、やればやるほど上達すると思って頑張りますw

>sql
以前は無理言ってテストしていただいてどうもですw
実際SQL構文は多少理解してる程度なので、いかにPawn側でうまく処理が出来るかどうか、になりそうです。
PHP側も生半可な奴で現在のテーブルの構造体を表示する事くらいしか出来ないですし…w
ただ、実用性がなぁ…。
MP0.3の500人収容サーバー+数千台規模の車両を完全にMySQL管理するなら多少利点は見えてきそうですけどね。


>icemanさん
オーディオプラグインで再現できなくもない…w
ただし、その機能が無ければ、SAのゴミ箱を殴った音(ガンッ)か、カウントダウンの音で代用するしかない…w


>QUEENさん
まだ見てわかるだけマシです…wアセンブラとか謎ですよw
よく考えればMP初期も日本語入力できなかったりで今のIVと似ていますねw
IVもR★管理じゃないサーバーで遊んでみたい物です…w

>plsさん
そういえばplsさんのサーバーでは確かにPHPと連動していましたねw
UPDATE構文の使い方(一括指定)とか余りわかってないのでその辺りがもしわかれば~、云々w
基本的なSQL文とそれを呼び出すPHP、PAWNはわかりますが、実用化できるのか疑問ですw
現在車両はMySQLで管理に一部置き換えて試していますが…w


>noppoさん
最初見た時自分も何じゃこりゃっていう…w
少しわかれば多少はなんとかなったりするもんですよw

公太郎ww
昔を思い出すw
ああいう人間を第三の小さい存在から見た視点のゲームってなぜか楽しいよねw


>しげさん
呪文が違いますというような事がよくあるから嫌になります…w

元は映画だったんですよね、これ。
映画を元にして作ったゲームってどれもイマイチかなって思ってましたが、これは面白そうですw
映画も見れば楽しさ二倍、かな?w
インフォメーション
- 新着 -

- カテゴリー -

- アーカイブ -

- RSSフィード -

- サイト内検索 -

当サイトはLink Freeなので、Linkは どちらでもどなたでも自由にどうぞ。 feel my soul
Utility
Xbox360/PS3 GamerTag

ALMEIDA216


Twitter

Counter

ユニークアクセス :
オンライン :
PVアクセス :
リンク
このページのトップへ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。