夜游神论坛,传奇一条龙,GM论坛,GM部落

 找回密码
 立即注册

QQ登录

只需一步,快速开始

安全 996 php 88A
查看: 1470|回复: 0

[手游教程] GowLom2战神引擎随机分配奖励脚本

[复制链接]

签到天数: 1 天

[LV.1]初来乍到

47

主题

47

帖子

2

钻石

Rank: 1

积分
94
发表于 2019-8-22 20:29:29 | 显示全部楼层 |阅读模式
GowLom2战神引擎随机分配奖励脚本
1.先定义一个简单的随机给予奖励的样板函数,这个函数的功能是开天,玄天,镇天这三把刀必得也只能得一把,几率都是三分之一。



procedure GiveRandomRewards();

var

    r : Integer;

begin

      r := random(3);

      if r = 0 then

       begin

          This_Player.Give('开天', 1)

      end

      else if r = 1 then

      begin

        This_Player.Give('玄天', 1)

      end

      else if r = 2 then

      begin

        This_Player.Give('镇天', 1);

      end

      else

      begin

        //……这里

      end;

end;



2.以下模板是用以配置比较复杂的大型奖励时使用的模板,具体这个模板的使用还是最后口头描述比较方便。



//////////这部分代码用于生成随机奖励配置////////////



const REWARD_KIND = 15; //定义奖励的种类

const REWARD_NUM  = 10; //每种奖励最大有多少件物品

//返回0表示发奖成功,-1表示空格不够, -2表示没有发奖品

function GiveRandomReward(): Integer;

var

  name  : array[1..REWARD_KIND] of array[1..REWARD_NUM] of string;

  num   : array[1..REWARD_KIND] of array[1..REWARD_NUM] of Integer;

  pos   : array[1..REWARD_KIND] of Integer;

  total : Integer;

  i     : Integer;

  j     : Integer;

  rand  : Integer;    //生成随机数

  temp  : Integer;    //

begin

  //发奖励之前,判断是否有足够的空格

  if This_Player.FreeBagNum < REWARD_NUM then

  begin

    Result := -1;

    Exit;

  end;      



//初始化

  for i := 1 to REWARD_KIND do

  begin

    for j := 1 to REWARD_NUM do

    begin

      name[j] := '';

      num[j]  := 0;

    end;

    pos := 0;

  end;



  //初始化奖励的物品和数量

  //1号奖励内容

  name[1][1] := '屠龙';

  name[1][2] := '半月';

  name[1][3] := '神火魔甲';



num[1][1] := 1;

num[1][2] := 1;

num[1][3] := 1;



  //2号奖励内容

  name[2][1] := '开天';

  name[2][2] := '幽灵战衣(男)';

  name[2][3] := '上古道袍';



num[2][1] := 1;

num[2][2] := 0;

num[2][3] := 0;



//设置奖励的概率(如果需要可以考虑玩家的属性因素)

  total  := 100;   //total表示奖励得到的概率都是50分之几



  //根据人物属性可以调整不同奖项的获得几率

  //0战士,1法师,2道士

  if This_Player.Job = 2 then

  begin

    pos[1] := 40;

    pos[2] := 10;

  end

  else

  begin

    pos[1] := 10;

    pos[2] := 40;

  end;



  //进行随机生成奖励

  rand := Random(total) + 1;

  temp := 0;

  for i := 1 to REWARD_KIND do

  begin

    temp := temp + pos;

    if rand <= temp then

    begin

      //发放i号奖励,

      for j := 1 to REWARD_NUM do

      begin

        if (name[j] <> '') and (num[j] > 0) then

        begin

          This_Player.Give(name[j], num[j]);

        end;

      end;

      Result := 0;

      Exit;

    end;

  end;

  Result := -2;  

end;



///////////////////////生成随机奖励配置///////////////////////




上一篇:GowLom2战神引擎延时执行脚本命令
下一篇:GowLom2战神引擎完整脚本编写例子
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

传奇广告代理|传奇脚本|微变传奇|单职业传奇|热血传奇|传奇私服|GM论坛|英雄合击|小黑屋|百度统计|夜游神论坛 |网站地图

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.