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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0712
aマップ作成15解決


a

リンク

2012/7/12(Thu) 20:49:43|NO.47634

HSPのサンプルのmapedit.hspを使っているんですが、mapeditはタイル画像の個数が多いと
選択用のタイルが画面外にでてしまいはみ出た分のタイルが使えません
自分で修正しようとしたんですが、ソースが理解しづらくてできません
修正してくれませんか?

sample\game\mapedit.hsp



この記事に返信する


check

リンク

2012/7/12(Thu) 21:27:53|NO.47637

それよりももっといいマップエディタがフリーであるだろうからそちらを使いなさい。



@key

リンク

2012/7/13(Fri) 16:59:46|NO.47653

フリーのマップエディタでおすすめのを教えて下さい
できるだけ簡素なものがいいです



a

リンク

2012/7/13(Fri) 22:39:09|NO.47662

やはりフリーのマップエディタでは問題があります
どなたかmapedit.hspを改良してくれませんでしょうか?



暇人

リンク

2012/7/14(Sat) 00:21:19|NO.47666

137行辺りのscreen 0,vx,vy+32を置き換え

screen 0,vx,vy+32*5 //*5は適当(パーツリストの表示を下に伸ばす大きさ)

264行辺りの*cmd_partssel〜goto *mainを置き換え

*cmd_partssel if mousex<parts_x : goto *main x=(mousex-parts_x)/mpsx+((mousey-parts_y)/mpsy)*(vx/mpsx) if x<mpn : mapcode=x : gosub *put_parts goto *main

308行辺りの*put_parts〜returnを置き換え

*put_parts ; パーツ一覧(ミニパーツ)表示 ; gmode 0 repeat mpn pos (cnt\(vx/mpsx))*mpsx+parts_x, parts_y+(cnt/(vx/mpsx))*mpsy celput csrc,cnt,0.5,0.5 loop color 255,0,0 x=(mapcode\(vx/mpsx))*mpsx+parts_x:y=parts_y+(mapcode/(vx/mpsx))*mpsy line x+mpsx-1,y,x,y line x+mpsx-1,y+mpsy-1 line x,y+mpsy-1 line x,y return

パーツリストの表示を下にも伸ばせるように改造



a

リンク

2012/7/14(Sat) 10:23:16|NO.47670

上記の方などを参考にがんばって作りました
自分の処理能力はこれが限界です

#include "user32.as" #include "a2d.hsp" hWndParent = hwnd ; 2Dマップ編集ツール ; ; パーツを組み合わせたマップを編集するための簡易ツールです。 ; [操作] ; マウス左クリック = 選択中のパーツを置く ; マウス右クリック = カーソル位置のパーツを選択する ; (パーツは、画面下のパーツリストでも選択できます) ; マップのスクロールは、カーソルキーで行なうことができます。 ; スペースキーを押しながら、左クリックドラッグでもスクロール可能。 ; ; 編集したマップは、ファイルに保存することができます。 ; データは、「ファイル名.map」に保存されます。 ; また、設定項目(option windowの内容)が「ファイル名.txt」に出力されます。 ; ツールでは、設定項目も含めてセーブ・ロードすることができます。 ; option windowでは、以下の内容を変更することができます。 ; (設定変更を行なう場合は、「初期化」ボタンを押してください) ; ; マップサイズ : 編集するマップの全体サイズ ; パーツサイズX,Y : パーツ1つあたりのサイズ ; パーツファイル : パーツの画像ファイル ; font msgothic,12 goto *boot ; 簡易的な2Dマップ管理するルーチン ; #deffunc mapinit int _p1, int _p2 ; マップ初期化 ; mapinit vx,vy ; (マップを初期化します) ; vx=表示Xサイズ、vy=表示Yサイズ ; cx=32:cy=32 ; パーツXYサイズ mapsx=32 ; マップ全体Xサイズ mapsy=32 ; マップ全体Yサイズ celname="map.bmp" ; パーツ画像ファイル csrc=ginfo_newid ; パーツのあるウィンドウID alGetFileWidth celname,cvx,cvy screen csrc,cvx,cvy,screen_tool SetWindowLong hwnd,-8,hWndParent picload celname,1 csrcs=4 celload celname,csrcs celdiv csrcs,cx,cy ; パーツ分割を設定する mapcode=0 mpsx=cx:mpsy=cy ; ミニパーツのサイズ x=cvx/cx:y=cvx/cy mpn=x*y ; ミニパーツの表示数 gsel 0 mapvx=_p1:mapvy=_p2 ; 表示XYチップ数 vx=mapvx*cx:vy=mapvy*cy ; 画面内のマップ表示サイズ return #deffunc mapload str _p1 ; マップ読み込み ; (ファイルからマップを読み込みます) ; mapload "filename" ; (*.map)のファイルを読み込みます。 ; 付加情報(*.txt)がある場合は、それも読み込みます。 ; fn=_p1 minf=getpath(fn,1)+".txt" exist minf if strsize>0 : gosub *load_minf dim map,mapsx,mapsy mapx=0:mapy=0 ; マップ表示位置 bload fn,map return *load_minf ; 付属情報ファイル(txt)をロード ; notesel buf noteload minf i=0 noteget s1,i:i++ if s1!="$mapedit data" : dialog "付属情報が無効です" : return repeat if i>=notemax : break noteget s1,i:i++ noteget s2,i if s1="%mapsx" : mapsx = 0+s2 : i++ if s1="%mapsy" : mapsy = 0+s2 : i++ if s1="%celname" : celname = s2 : i++ if s1="%cx" : cx = 0+s2 : i++ if s1="%cy" : cy = 0+s2 : i++ loop return #deffunc mapsave str _p1 ; マップ保存 ; (ファイルにマップを保存します) ; mapsave "filename" ; (*.map)のファイルを保存します。 ; 付加情報(*.txt)も同時に保存します。 ; fn=_p1 bsave fn,map minf=getpath(fn,1)+".txt" ; 付属情報ファイル(txt)を保存 buf="$mapedit data\n" buf+="%mapsx\n"+mapsx+"\n" buf+="%mapsy\n"+mapsy+"\n" buf+="%celname\n"+celname+"\n" buf+="%cx\n"+cx+"\n" buf+="%cy\n"+cy+"\n" notesel buf notesave minf return #deffunc mapdraw int _p1, int _p2 ; マップ描画 ; (マップを描画します) ; mapdraw x,y ; (x,y=描画開始位置) ; gmode 0 xx=_p1:yy=_p2 ; マップを描き始める位置 repeat mapvy y=cnt pos xx,y*cy+yy repeat mapvx celput csrcs,map(mapx+cnt,mapy+y) loop loop return ;------------------------------------------------------------------ *boot ; ; 簡易マップ編集ツール ; ttl="簡易マップ編集ツール" mapinit 20,15 ; マップ初期化 toolwin = ginfo_newid ; ツール用ウィンドウID ;screen 0,vx,vy+32 screen 0,vx,vy title ttl fname="" ; マップの配列変数初期化 dim map,mapsx,mapsy mapx=0:mapy=0 ; マップ表示位置 *start ; パーツ初期化 alGetFileWidth celname,cvx,cvy screen csrc,cvx,cvy,screen_tool SetWindowLong hwnd,-8,hWndParent picload celname,1 csrcs=4 celload celname,csrcs celdiv csrcs,cx,cy ; パーツ分割を設定する mapcode=0 mpsx=cx:mpsy=cy ; ミニパーツのサイズ x=cvx/cx:y=cvx/cy mpn=x*y ; ミニパーツの表示数 gsel 0 cls 1 ; ツールウィンドウ screen toolwin,120,400,screen_tool SetWindowLong hwnd,-8,hWndParent title "option window" cls 1 ox=120:x=0:y=0 objsize ox,32 pos x,y button "save",*cmd_save button "upsave",*cmd_save2 mes "" button "load",*cmd_load new_sx = mapsx new_sy = mapsy new_celname = celname new_cx = cx new_cy = cy mes "" mes "mapsize:" x=ginfo_cx:y=ginfo_cy objsize 40,24 pos x+5,y:input new_sx pos x+54,y:mes "x" pos x+75,y:input new_sy pos x,y+26 objsize 100,24 mes "parts images" input new_celname objsize 40,24 mes "partsXsize" input new_cx mes "partsYsize" input new_cy objsize 60,24 button "new",*cmd_clr gsel 0 handtool=0 *main redraw 0 ; 描画始め color 0,0,64 boxf 0,0,vx-1,vy-1 ; 背景を消す mapdraw 0,0 ; マップ表示 redraw 1 ; 描画終わり await 20 ;if ginfo_act!=0 : goto *main :else{gsel 1,1 : gsel 0,1} stick key,$11f ; キー入力 if key&1 : mapx- if key&4 : mapx+ if key&2 : mapy- if key&8 : mapy+ mapx=limit(mapx,0,mapsx-mapvx) mapy=limit(mapy,0,mapsy-mapvy) if key&$10 : goto *cmd_space handtool=0 if (key&$100)!0&(ginfo(2)=csrc) : goto *cmd_partssel if (key&$100)!0 : goto *cmd_put if key&$200 : goto *cmd_get goto *main *cmd_space if handtool : goto *cmd_hand1 if key&$100 { handtool=1 handx=ginfo_mx:handy=ginfo_my handmx=mapx:handmy=mapy } goto *main *cmd_hand1 if (key&$100)=0 { handtool=0 goto *main } x=ginfo_mx-handx y=ginfo_my-handy mapx=handmx-(x/cx) mapy=handmy-(y/cy) mapx=limit(mapx,0,mapsx-mapvx) mapy=limit(mapy,0,mapsy-mapvy) goto *main *cmd_put ;if mousey >=parts_y : goto *main x=mousex/cx:y=mousey/cy if y>=mapvy or x>=mapvx : goto *main map(mapx+x,mapy+y)=mapcode goto *main *cmd_partssel gsel csrc x=mousex/mpsx+(mousey/mpsy)*(cvx/mpsx) gsel 0 if x<mpn : mapcode=x : gosub *put_parts goto *main *cmd_get x=mousex/cx:y=mousey/cy if y>=mapvy : goto *main mapcode=map(mapx+x,mapy+y) goto *main *cmd_save dialog "map",17,"mapfile" if stat=0 : goto *main fname = refstr *cmd_save2 if fname="" : goto *main exname=getpath(fname,2) ; ファイル名の拡張子を取得 if exname="" : fname+=".map" ; 拡張子がなければ.mapを追加 title getpath(fname,8)+" - "+ttl mapsave fname goto *main *cmd_load dialog "map",16,"mapfile" if stat=0 : goto *main fname = refstr title getpath(fname,8)+" - "+ttl mapload fname goto *start *cmd_clr dialog "設定を更新するとデータはクリアされます。続行していいですか?",2 if stat=7 : goto *main mapsx = new_sx mapsy = new_sy celname = new_celname cx = new_cx cy = new_cy dim map,mapsx,mapsy mapx=0:mapy=0 ; マップ表示位置 goto *start ;--------------------------------------------------------------------------- /*put_parts ; パーツ一覧(ミニパーツ)表示 ; gmode 0 repeat mpn pos cnt*mpsx+parts_x, parts_y celput csrc,cnt,1,1 loop color 255,0,0 x=mapcode*mpsx+parts_x:y=parts_y line x+mpsx-1,y,x,y line x+mpsx-1,y+mpsy-1 line x,y+mpsy-1 line x,y return*/ *put_parts ; パーツ一覧(ミニパーツ)表示 ; gsel csrc pos 0,0 : gcopy csrcs,0,0,cvx,cvy color 255,0,0 x=(mapcode\(cvx/mpsx))*mpsx y=(mapcode/(cvx/mpsx))*mpsy line x+mpsx-1,y,x,y line x+mpsx-1,y+mpsy-1 line x,y+mpsy-1 line x,y gsel 0 return *putmes pos 0,0:color 255,255,255 mes "カーソルキーでマップを移動させてください。" return



KA

リンク

2012/7/14(Sat) 12:02:02|NO.47673

それで、その長くて見る気も起きないスクリプトを、どうして
欲しいのですか。



a

リンク

2012/7/14(Sat) 12:19:32|NO.47674

別にただ載せただけですが



check

リンク

2012/7/14(Sat) 14:55:01|NO.47675

じゃあこのスレはここまで、解散!

Vector等で「フリー マップエディタ」などのキーワードで検索すればいくつか出てくるぞ。



HAI

リンク

2012/7/14(Sat) 17:35:39|NO.47678

>>KA
こういう言った初心者に対して常に上から目線であり暴言とまでがいかないがギリギリのラインを保って自分を常に正当化している奴がいるからHSP掲示板はまともに機能してないのが現状(もちろん質問者にも悪はある)
一体何時になったら気づくのかはて...まあ洗脳された奴にこんな事を言っても無駄だってのは分かるが



@key

リンク

2012/7/14(Sat) 18:40:38|NO.47679

荒らしがいないだけましだな



あり(副管理人)

リンク

2012/7/15(Sun) 10:55:37|NO.47693

>KAさん
>checkさん
ここ最近のあなた方の発言は、せっかくのアドバイスであっても言わなくて
いい事を加えてしまう事でただの嫌味としか受け取れない様な状況がかなり多く
掲示板や質問者の為の発言がかえって相手の不興を買ったり
掲示板の雰囲気を悪い方向へ向かわせるといった危険性を多分に
孕んでしまっています。

掲示板の為に相手の姿勢を正す事に精力的であるならば
ご自身の発言姿勢や発言後の影響についても同様に注意を払う必要があります。
特にあなた方二人はこれまでの発言から相手に対しての不快感をあからさまに
表現してしまう事が多く見受けられるので、まず冷静になって自分の文章を
読み返す余裕を持って投稿されるようお願いします。

また、どこにでも口を出すのではなく、発言しない事でスレッドの話題を円滑に
解決へと向かわせるのも配慮の一環だとご理解下さい。


>HAIさん
あなたの発言もあえて言う必要のない事ですので
今後内容には注意して発言されるようお願いします。



check

リンク

2012/7/15(Sun) 11:15:43|NO.47694

>>それで、その長くて見る気も起きないスクリプトを、どうして
>>欲しいのですか。

>>別にただ載せただけですが

という流れから荒れそうだったのと、
300行以上もあるサンプルのスクリプトを改造する人間は出てこなそうだったので
流れをぶちぎってフリーのマップエディタの使用を勧めたのだがなぁ。

そもそもサンプルを自分好みに改造してください、
という質問にもなっていないスレを質問タグをつけて立てるものはいかほどのものかと。


……胸のうちを吐き出してすっきりしたんで、これ以上の発言はやめておく。
今後の発言にもできる範囲で気をつけようと思う。



a

リンク

2012/7/15(Sun) 11:51:50|NO.47695

自分はただ完成しましたよーっていう感じで載せただけなのでこれ以上は突っ込まないで欲しいです



KA

リンク

2012/7/15(Sun) 12:45:49|NO.47698

確かに嫌みったらしい書き方だった事は反省します。

ただ、最後に「これでどうですか」等の要点が抜けている
ので気に障っただけで、中傷するつもりは有りません。

これからは、よく考えて書き込むことにします。



くろ

リンク

2012/7/15(Sun) 13:36:10|NO.47701

>KAさん
「これでどうですか」と書いたらそれこそ、「その長くて見る気も起きないスクリプトを〜」
という話になるのではないでしょうか。

>aさん
どのように解決したのかがわかって、似たような悩みを持つ方には参考になると思います。
ただ、回答者さんに「解決しました、ありがとうございました」などお礼の書いておくと、
よかったと思います。



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