HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0218
hirosenzmだれでも対戦4未解決


hirosenzm

リンク

2008/2/18(Mon) 20:09:13|NO.13619

hspsockを使って誰とでも対戦できるゲームを作ろうとしているのですが、
hspsockの使い方がわかりません。
ちょうどいいスクリあったら教えてください。



この記事に返信する


船丸

リンク

2008/3/4(Tue) 22:27:25|NO.13918

それは僕も欲しいので無理でしょう。
みんなも欲しいです。



X-plate

リンク

2008/3/6(Thu) 17:36:35|NO.13977

参考までですが
pcbnet2 という便利なプラグインもありますよ
http://www.pcbsoft.net/for-hsp-users.html

でももう少しで公開終了のようですのでダウンロードはお早めに



As

リンク

2008/3/7(Fri) 01:54:51|NO.14004

HSPSockは、誰とでも対戦できるようにするには、その人数だけソケットを変えればいいだけのことです。



またHSPSockのデータの送信方法については”数値の転送”と ”文字列の転送”を行う命令が用意されています。
受信方法では 数値・文字列関わらず受信するための命令が用意されています。受信といっても
変数に代入するだけで、送信に関しても変数の中身を送信しているだけのことです。

この仕組みをどう生かすかはプログラマの腕しだいというもので、人それぞれさまざまな方法が
ありますが、一般的な方法では”コマンド”と”操作”を一行の文字列にまとめ、相手に送信
する方法が主流です。

”コマンド”というものはよくあるRPGのコマンドのようなもので、送る側と受ける側が
うまくコミュニケーションを取れるようにするための大事な部分です。例えば、送信側から”50”という
文字列だけが送信されたとします。これを受信側はどう受け止めれるのかわかりません。
これを”走る→50”というようにすれば、50メートル走ればいいのかというように分かります。
このようにコマンドによって動作を分けることで、動作を分岐させていきます。

みんなで対戦したいのであれば、この”走る→50”を、複数の接続者に対して送信すれば、
全員を50メートル走らせることができるというわけです。
ただ、このコマンドは接続者以外に自分自身にも送信させることがポイントです。
また注意してほしいのことは、コマンドは接続者に命令させるものではないようにすることです。
接続者のみに対して命令させることは、他の接続者に対して命令された接続者がいることが認識できないためで、
スクリプトもごちゃごちゃになります。
 コマンドは、特定の人に限らず全員に送るようにし、”走る→接続者B→50メートル”
などといったように、接続者全員に対し接続者Bが50メートル走ることを知らせる必要があります。


これを踏まえて、もう一度HSPSockのマニュアルを読んでみてください



としあき

リンク

2008/3/9(Sun) 21:42:49|NO.14042

昔、どこかのHPに掲載していた2.61用の簡易チャットをHSP3用に直したものです。
このスクリプトを参考に、機能を拡張していけばネットゲームを作れるはずです。

ただし、HSPの命令だけではなく、ネットワークに関する基礎的な知識、最低でもIPとportのことが分からないと、ネットワークプログラミングはできません。


#include "hspsock.as" screen 0,640,480 onexit *owari title "p2p簡易チャット" port=12345 ;使用するポート番号 comment="" ;コメント入力変数 ipget ip=refstr ;ip番号変数 dim sock_num,2 sock_num(0)=0 sock_num(1)=1 sdim message,1000 ;チャット文章変数 cls pos 150,50:button goto " ホ ス ト ",*host pos 150,150:button goto "クライアント",*client pos 150,200 mes "IP番号" input ip,150,25 mes "PORT番号" input port,150,25 stop ;ホストを立てる *host cls sockmake 0,port ;番号0のソケットを作る if stat!0:goto *tusinerr ;stat変数が0でないと、エラー。0だとソケット制作完了 mes "接続を待ちます" mynum=0 repeat sockwait sock_num(mynum) ;ソケット番号0でクライアント接続を待機する if stat>=2:goto *tusinerr ;stat変数が2以上だと、エラー if stat=0:goto *main ;stat変数が0だとクライアント接続完了 ;stat変数が1の場合、相手の接続がない。 wait 1 loop *client mynum=1 sockopen sock_num(mynum),ip,port ;番号0のソケットを作り、ip,port番号に対して接続を試みる if stat!0:goto *tusinerr ;stat変数が0でないと、エラー。0だとホストに接続 goto *main *main cls ;オブジェクトを消す。 ;ここから、チャット文章送信オブジェクトをはる。 pos 5,270:input comment,300,25 ;チャットメッセージ入力窓を作る pos 310,270:button goto "送信",*sousin ;変数commentの内容を送信 pos 310,240:button goto "消す",*del pos 0,0:mes message ;チャットメッセージを表示 *mescheck ;相手のメッセージの受信待ちの処理 sockcheck sock_num(mynum) ;ソケット番号に、受信できるデータが届いているかチェック if stat>=2:goto *tusinerr ;stat変数が2以上だと、エラー if stat=0:goto *jusin ;stat変数が0だとデータを受信 await 50 ;20フレームで受信を待ちます goto *mescheck ;stat変数が1だと、ループして受信を待ちます。 *jusin ;相手データーの受信処理 temp="" ;受信データ受け取り用変数 sockget temp,64,sock_num(mynum) ;ソケット番号0からうけっ取ったデータを、64kバイトごと、変数tempに代入する。 if stat!0:goto *tusinerr ;stat変数が0でないと、エラー。0だと受け取っている。 if temp="":goto *tusinerr message+=temp+"\n" ;受信データを改行を入れて、チャットメッセージに入れる goto *main ;メインに戻ることによって、チャットメッセージを書き換え、表示する *sousin sockput comment,sock_num(mynum) ;指定されたソケットを使って、変数commentのデータを送信。 if stat!0:goto *tusinerr ;stat変数が0でないと、エラー。0だと送信成功。 message+=comment+"\n" ;送信したデータを改行を入れて、チャットメッセージに入れる comment="" ;コメントしたデーターを消す。 goto *main ;メインに戻ることによって、チャットメッセージを書き換え、表示する *del comment="" ;入力欄のデーターを消す。 goto *main ;メインに戻る *tusinerr dialog "通信中にエラーが発生しました" *owari sockclose 0 ;接続されているソケットを切断 end



ONION software Copyright 1997-2023(c) All rights reserved.