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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0126
LiteHSPSOCKで配列変数は利用出来るのか?出来ないのか?2解決


Lite

リンク

2017/1/26(Thu) 16:45:05|NO.78070

質問 : HSPSOCKを利用してプログラムを作っているのですが、
配列変数を、sockputb、sockgetbで送ることはできますか?
現在試したのですが、うまく動きませんでした。
ソースコードも書いておきますので、別の要因だと分かったら、言ってくださるとありがたいです。

クライアント側

#include "hspsock.as" screen 0,1024,768 title "SkyBox" adr="127.0.0.1" port=45000 playerno=0 players=0 size=64 picload "titlescreen.bmp",1 wait 10 dialog "テクスチャロード開始" buffer 1 picload "red_f.bmp" wait 1 buffer 2 picload "red_b.bmp" wait 1 buffer 3 picload "red_l.bmp" wait 1 buffer 4 picload "red_r.bmp" wait 1 buffer 5 picload "blue_f.bmp" wait 1 buffer 6 picload "blue_b.bmp" buffer 7 picload "blue_l.bmp" wait 1 buffer 8 picload "blue_r.bmp" wait 1 buffer 9 picload "green_f.bmp" wait 1 buffer 10 picload "green_b.bmp" wait 1 buffer 11 picload "green_l.bmp" wait 1 buffer 12 picload "green_r.bmp" wait 1 buffer 13 picload "yellow_f.bmp" wait 1 buffer 14 picload "yellow_b.bmp" wait 1 buffer 15 picload "yellow_l.bmp" wait 1 buffer 16 picload "yellow_r.bmp" wait 1 gsel 0 dialog "テクスチャロード完了" goto *firstconnect *firstconnect sockopen 0,adr,port if stat=0:goto *secondconnect repeat if stat : dialog"接続失敗":sockopen 0,adr,port:if stat=0:break wait 10 loop *secondconnect repeat sockcheck 0 dialog"接続チェック中..." if stat!=0 : break wait 10 loop sockget playerno dialog ""+playerno+"Pで入ります" wait 200 sockclose playernoport=port+playerno *thirdconnect repeat sockopen playerno,adr,playernoport if stat=0 : break wait 10 loop picload "factory.bmp",1 goto *process *process ;key getkey key1,87 ; Wキー getkey key2,83 ; Sキー getkey key3,65 ; Aキー getkey key4,68 ; Dキー if key1=1:move=1 if key2=1:move=2 if key3=1:move=3 if key4=1:move=4 sockputb move,,,playerno ;draw sockgetb ppos sockwait playerno wait 1 sockgetb pdir sockwait playerno wait 1 dialog ""+pdir.1+"" loophoge4=1 hoge1=0 repeat players3 if pdir.loophoge4=1 : hoge1 = loophoge4+1 if pdir.loophoge4=2 : hoge1 = loophoge4+2 if pdir.loophoge4=3 : hoge1 = loophoge4+3 if pdir.loophoge4=4 : hoge1 = loophoge4+4 pos ppos.loophoge4.1*size,ppos.loophoge4.2*size gcopy hoge1,0,0,size,size wait 1 loophoge4+ loop loophoge4=0 hoge1=0 players=0 players3=0 wait 10 goto *process

サーバー側

#include "hspsock.as" screen 0,512,512 title"SkyBox Server" port=45000 port2=0 players=0 players2=0 players3=0 maxplayers=4 pconnect=1 dim onlineplayers,6 dim pmove,5 dim ppos,5,3 dim pdir,5 one=1 *firstconnect sockmake 0,port if stat : dialog"接続失敗":goto *firstconnect ;secondconnect repeat sockwait 0 if stat>1 : dialog"接続失敗":goto *firstconnect if stat=0 : break wait 10 loop dialog"接続完了" wait 10 ; players2=players+one wait 1 players=players2 if players2=5:players2-:dialog"満員です...":goto *process sockputb players2 ;thirdconnect port2=port+players2 sockmake players2,port2 if stat : dialog"接続失敗":goto *firstconnect hoge1=0 repeat if hoge1=400:dialog"タイムアウト...":goto *firstconnect sockwait players2 if stat>1 : dialog"接続失敗":goto *firstconnect if stat=0 : break wait 10 hoge1+ loop dialog"完全接続完了!" goto *process *process mes"Escキーでプレイヤー参加" repeat ;onlineplayers ;Esc stick esc if esc=128:dialog"プレイヤー参加を開始します":goto *firstconnect ;mainprocess sockgetb move,,,1 sockwait 1 move = pmove(1) wait 1 sockgetb move,,,2 sockwait 2 move = pmove(2) wait 1 sockgetb move,,,3 sockwait 3 move = pmove(3) wait 1 sockgetb move,,,4 sockwait 4 move = pmove(4) wait 1 loophoge1=1 repeat if pmove(loophoge1)=1:ppos.loophoge1.1-:pdir.loophoge1=1 if pmove(loophoge1)=2:ppos.loophoge1.1+:pdir.loophoge1=2 if pmove(loophoge1)=3:ppos.loophoge1.2-:pdir.loophoge1=3 if pmove(loophoge1)=4:ppos.loophoge1.2+:pdir.loophoge1=4 if loophoge1=players3:break loophoge1+ wait 1 loop loophoge1=0 loophoge2=1 repeat if ppos.loophoge2.1<0:ppos.loophoge2.1+ if ppos.loophoge2.1>16:ppos.loophoge2.1- if ppos.loophoge2.2<0:ppos.loophoge2.2+ if ppos.loophoge2.2>12:ppos.loophoge2.2- if loophoge2=players3:break loophoge2+ wait 1 loop loophoge2=0 sockputb ppos,,,1 sockputb ppos,,,2 sockputb ppos,,,3 sockputb ppos,,,4 sockputb pdir,,,1 sockputb pdir,,,2 sockputb pdir,,,3 sockputb pdir,,,4 ;connectcheck loophoge3=1 repeat if loophoge3=players:break repeat sockwait loophoge3 if stat>1 : dialog"接続維持失敗...":sockclose:goto *stopprocess if stat=0 : break loop loophoge3+ loop loophoge3=0 ;end wait 10 loop *stopprocess dialog"何らかの理由により終了します、再起動してください。" stop



この記事に返信する


Lite

リンク

2017/1/26(Thu) 16:47:00|NO.78071

追加 : 途中で、サーバー側から配列の要素が無効ですとメッセージが表示されます。



Lite

リンク

2017/1/26(Thu) 21:06:38|NO.78078

自己解決しますた



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