铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 2490|回复: 8

[通用] [复刻]超级简单的修改之小船出现吧!!!

[复制链接]
发表于 2009-7-22 21:26 | 显示全部楼层 |阅读模式
一直以来,weyl的复刻版就没有一个正经的船,取而代之的是主角像变形金刚一样的无限转变形态(人形-船-人-船。。。)
所以。。作为一个pascal语言的小白,我把船改了出来。。很简单的修改- -

先上效果图






贴源码- -
  1. //判定主地图某个位置能否行走, 是否变成船
  2. //function in kys_main.pas
  3. function CanWalk(x, y: integer): boolean;
  4. begin
  5.   if buildx[x, y] = 0 then
  6.     canwalk := true
  7.   else
  8.     canwalk := false;
  9.   //canwalk:=true;  //This sentence is used to test.
  10.   if (x <= 0) or (x >= 479) or (y <= 0) or (y >= 479) then
  11.     canwalk := false;
  12.   if (earth[x, y] = 838) or ((earth[x, y] >= 612) and (earth[x, y] <= 670)) then
  13.     canwalk := false;
  14.   if ((earth[x, y] >= 358) and (earth[x, y] <= 362)) or ((earth[x, y] >= 506) and (earth[x, y] <= 670)) or ((earth[x, y] >= 1016) and (earth[x, y] <= 1022)) then
  15.    begin
  16.     if(Inship = 1) then         //isship
  17.         canwalk :=true
  18.     else
  19.       if(x=shipy) and (y=shipx) then    //touch ship?
  20.         begin
  21.           InShip := 1;
  22.           canwalk :=true
  23.         end
  24.       else
  25.     //      InShip := 0;           //option_explicit_ori_on
  26.           canwalk :=false
  27.    end
  28.   else
  29.     begin
  30.       if(Inship = 1) then   //isboat??
  31.         begin
  32.           shipy := Mx;     //arrrive
  33.           shipx := My;
  34.           shipface := Mface
  35.         end;
  36.       InShip := 0;
  37.     end
  38. end;
复制代码
  1. //显示主地图场景于屏幕
  2. //[color=Red] procedure in kys_engine.pas[/color]
  3. procedure DrawMMap;
  4. var
  5.   i1, i2, i, sum, x, y: integer;
  6.   temp: array[0..479, 0..479] of smallint;
  7.   pos: TPosition;
  8. begin
  9.   if (SDL_MustLock(screen)) then
  10.   begin
  11.     if (SDL_LockSurface(screen) < 0) then
  12.     begin
  13.       MessageBox(0, PChar(Format('Can''t lock screen : %s', [SDL_GetError])), 'Error', MB_OK or MB_ICONHAND);
  14.       exit;
  15.     end;
  16.   end;

  17.   //由上到下绘制, 先绘制中心点靠上的建筑
  18.   for sum := -29 to 40 do
  19.     for i := -15 to 15 do
  20.     begin
  21.       i1 := Mx + i + (sum div 2);
  22.       i2 := My - i + (sum - sum div 2);
  23.       Pos := GetPositionOnScreen(i1, i2, Mx, My);
  24.       if (i1 >= 0) and (i1 < 480) and (i2 >= 0) and (i2 < 480) then
  25.       begin
  26.         if (sum >= -27) and (sum <= 28) and (i >= -9) and (i <= 9) then
  27.         begin
  28.           DrawMPic(earth[i1, i2] div 2, pos.x, pos.y);
  29.           if surface[i1, i2] > 0 then
  30.             DrawMPic(surface[i1, i2] div 2, pos.x, pos.y);
  31.         end;
  32.         temp[i1, i2] := building[i1, i2];
  33.       end
  34.       else
  35.         DrawMPic(0, pos.x, pos.y);
  36.     end;
  37. //draw boat
  38.   for sum := -29 to 40 do
  39.     for i := -15 to 15 do
  40.       begin
  41.       i1 := Mx + i + (sum div 2);
  42.       i2 := My - i + (sum - sum div 2);
  43.       if (i1 = shipy) and (i2 = shipx) then
  44.         if inship = 0 then
  45.           begin
  46.             Pos := GetPositionOnScreen(i1, i2, Mx, My);
  47.             DrawMPic(3715 +4 * shipface, pos.x, pos.y);
  48.             break;
  49.           end
  50.       end;

  51.   for sum := -29 to 40 do
  52.     for i := -15 to 15 do
  53.     begin
  54.       i1 := Mx + i + (sum div 2);
  55.       i2 := My - i + (sum - sum div 2);
  56.       if (i1 >= 0) and (i1 < 480) and (i2 >= 0) and (i2 < 480) then
  57.       begin
  58.         x := buildy[i1, i2];
  59.         y := buildx[i1, i2];
  60.         Pos := GetPositionOnScreen(x, y, Mx, My);
  61.         if (buildx[i1, i2] > 0) and (((buildx[i1 - 1, i2 - 1] <> buildx[i1, i2]) and (buildx[i1 + 1, i2 + 1] <> buildx[i1, i2]))
  62.           or ((buildy[i1 - 1, i2 - 1] <> buildy[i1, i2]) and (buildy[i1 + 1, i2 + 1] <> buildy[i1, i2]))) then
  63.         begin
  64.           if temp[x, y] > 0 then
  65.           begin
  66.             DrawMPic(building[x, y] div 2, pos.x, pos.y);
  67.             temp[x, y] := 0;
  68.           end;
  69.         end;

  70.         //如在水面上则绘制船的贴图
  71.         if (i1 = Mx) and (i2 = My) then
  72.           if (InShip = 0) then
  73.             begin
  74.               if still = 0 then
  75.                 DrawMPic(2500 + MFace * 7 + MStep, CENTER_X, CENTER_Y)
  76.               else
  77.                 DrawMPic(2528 + Mface * 6 + MStep, CENTER_X, CENTER_Y)
  78.             end
  79.           else
  80.             DrawMPic(3714 + MFace * 4 + (MStep + 1) div 2, CENTER_X, CENTER_Y);
  81.         if (temp[i1, i2] > 0) and (buildx[i1, i2] = i2) then
  82.         begin
  83.           DrawMPic(building[i1, i2] div 2, pos.x, pos.y);
  84.           temp[i1, i2] := 0;
  85.         end;
  86.       end;
  87.     end;

  88.   if (SDL_MustLock(screen)) then
  89.   begin
  90.     SDL_UnlockSurface(screen);
  91.   end;
  92.   //SDL_UpdateRect(screen, 0,0,screen.w,screen.h);

  93. end;
复制代码
我是小白- -。。第一次改代码。。肯定有错的,请大家指正~~

最后。。附上exe...要玩的可以下下来玩玩


[ 本帖最后由 黄顺坤 于 2009-7-22 21:28 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-7-22 21:47 | 显示全部楼层
支持黄大大参与复刻系统研发~~~~
恩,那个……建议在追加陆地骑马,山地骑驴,沙漠上骑骆驼……

[发帖际遇]: 凶神恶煞在海边沙滩上捡到一支圣火令,当废铜卖了,获得银两5.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-7-22 22:00 | 显示全部楼层

回复 二当家 的帖子

那草原上还要骑草泥马啊?知足吧你
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-7-22 22:20 | 显示全部楼层
支持黄大大!!
回三当家:
草泥马可不能乱骑~哈哈!

[发帖际遇]: 枕头好痕参与红花会陈家洛的计划:叛变勾结清廷,得到赏赐银两33.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-7-23 02:56 | 显示全部楼层
难得黄大搞复刻,先支持一个,再看~

很好玩,找回了原版坐船的感觉,也想起了当年拿那该死的左右,从黑龙到百花的无数次绕路……

[发帖际遇]: winson7891捡到土龙刀一把,冒充武林至尊,被谢逊追杀,损失银两17.


[ 本帖最后由 winson7891 于 2009-7-23 03:08 编辑 ]
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-7-23 12:05 | 显示全部楼层
支持2楼的说法,还有,在普通陆地上骑风火轮
遇到孙悟空可以骑筋斗云

[发帖际遇]: 柳无色发现石破天准备用银票擦屁股,赶紧送上两卷草纸,换回一张银票,兑换银两19。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-7-23 13:39 | 显示全部楼层
可以骑郭靖的大雕飞。这样不论是山啊还是树啊,都能忽视。另外不同的坐骑要有不同的速度
呜哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

[发帖际遇]: 南宫梦去长白山捉火蟾,掉入泥沼中,损失银两25.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-7-24 17:05 | 显示全部楼层
2个小问题  
1、在船上时船坐标应该是和人坐标同步修改而不是上岸了才改
2、罗盘物品的说明应该加上船坐标
3、船的贴图不好看
4、船的功能不够强大,不能飞天和上月球

[发帖际遇]: KG去天宁寺抢夺连城宝藏,侥幸抢到无毒的宝藏,卖掉得到银两21。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2009-7-24 17:27 | 显示全部楼层
1、在船上时船坐标应该是和人坐标同步修改而不是上岸了才改
   这个。。。为了效率省去的

2、罗盘物品的说明应该加上船坐标
   加了

3、船的贴图不好看
   。。。。

4、船的功能不够强大,不能飞天和上月球
   。。。。。。

[发帖际遇]: 黄顺坤偷得虚竹身上的美女图卷轴,被慕容复发现后遭痛殴,花去医药费银两37.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-11-16 04:52

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表