gangland吧 关注:490贴子:4,112
我修改noboss脚本文件,通过放置放置士兵,来猜测坐标。游戏中坐标正北的边界位置就是地图编辑器里坐标为0的位置。local soldier = hireSoldier(player, "SNIPER: 6,", soldierstart_x, soldierstart_y , false, false)
soldierstart_x可以换成坐标,比如100。通过几次尝试。我发现地图编辑器里的坐标乘以5,就是游戏中的坐标。这样脚本中凡是涉及坐标的地方,我们都可以任意设置。通过坐标,我在一开局就在7个敌人家里放了狙击手,结果就是倒数9秒之后,进入游戏的一瞬之间,7个BOSS几乎同时都被击毙了。


IP属地:山东1楼2023-01-09 14:18回复




    如小地图所示,7个堂口全部被放了我的狙击手。


    local soldier = hireSoldier(player, "SONNY: 1, ROMANO: 1, ANGELO: 1,NPCBOSS: 1,Seductress: 1,Lawyer: 1", soldierstart_x, soldierstart_y ,false,false)
    local soldier2= hireSoldier(player,"SNIPER: 20", 75,90,true,true)
    local soldier3= hireSoldier(player,"SNIPER: 20", 130, 100,true,true)
    local soldier4= hireSoldier(player,"SNIPER: 20", 75, 70,true,true)
    local soldier5= hireSoldier(player,"SNIPER: 20", 75, 80,true,true)
    local soldier6= hireSoldier(player,"SNIPER: 20", 130, 70,true,true)
    local soldier7= hireSoldier(player,"SNIPER: 20", 130, 80,true,true)
    local soldier8= hireSoldier(player,"SNIPER: 20", 130, 90,true,true)
    soldier2到8,就是这七支狙击手部队。
    true,true 就是代表他们全是ai,
    FALSE,FALSE 你才能控制。


    IP属地:山东2楼2023-01-09 14:34
    回复
      charactercmd.setweapon(capo, 9)
      第九个武器,是柯里昂的机枪,这样改,开局就可以有机枪。


      IP属地:山东3楼2023-01-09 15:15
      回复
        关于 脚本刷的次主角没有武器的解决办法,我摸索了一下。
        以桑尼为例,这样写:
        local SONNY=world.activatecharacter("SONNY")
        family.addsoldier(player,SONNY)
        charactercmd.setposition(SONNY, soldierstart_x, soldierstart_y)
        charactercmd.patrolclick(player,SONNY, soldierstart_x, soldierstart_y, true)
        charactercmd.setweapon(SONNY,9)


        这样搞完之后,就会生成一个带机枪的桑尼了。


        其他士兵也是类似。
        charactercmd.setweapon(capo, 19) --双枪
        charactercmd.setweapon(capo, 9) --机枪
        charactercmd.setweapon(capo, 17) --自动手枪
        charactercmd.setweapon(capo, 3) --半自动手枪
        charactercmd.setweapon(capo, 33) --空手
        以上是我试出来的。其他武器代码没试。全试出来比较费事。


        同理,我们可以让初始生成一个枪手,并给他配上双枪,也就是武器19。


        IP属地:山东4楼2023-01-09 16:01
        回复
          charactercmd.setweapon(ANGELO,8) 散弹枪


          IP属地:山东5楼2023-01-09 16:44
          回复
            charactercmd.setweapon(ROMANO,7) 散弹枪


            IP属地:山东6楼2023-01-09 16:47
            回复
              charactercmd.setweapon(ROMANO,22)狙击枪


              IP属地:山东7楼2023-01-09 16:55
              回复
                charactercmd.setweapon(SONNY,12) 两把机枪


                enforcer,那个杀手儿子的代码始终找不到,我估计有可能和桑尼用的是同一个模型,换了不同的皮肤。
                就好比柯里昂还有穿西装的样子,但是柯里昂穿西装的那个代码始终无效。因此我猜测应该还有一个脚本功能是换皮肤的,我一直没找到那个换皮肤的脚本。当然也可能是另一个命令,总之是类似换皮肤的办法。










                四个老大脚本,带最高装备的如下:
                local SONNY=world.activatecharacter("SONNY")
                family.addsoldier(player,SONNY)
                charactercmd.setposition(SONNY, soldierstart_x, soldierstart_y)
                charactercmd.patrolclick(player,SONNY, soldierstart_x, soldierstart_y, true)
                charactercmd.setweapon(SONNY,12)


                local ROMANO=world.activatecharacter("ROMANO")
                family.addsoldier(player,ROMANO)
                charactercmd.setposition(ROMANO, soldierstart_x+1, soldierstart_y)
                charactercmd.patrolclick(player,SONNY, soldierstart_x, soldierstart_y, true)
                charactercmd.setweapon(ROMANO,22)


                local ANGELO=world.activatecharacter("ANGELO")
                family.addsoldier(player,ANGELO)
                charactercmd.setposition(ANGELO, soldierstart_x+2, soldierstart_y)
                charactercmd.patrolclick(player,ANGELO, soldierstart_x, soldierstart_y, true)
                charactercmd.setweapon(ANGELO,8)


                IP属地:山东8楼2023-01-09 18:44
                回复
                  另外发现一个巡逻命令
                  charactercmd.setposition(ROMANO, soldierstart_x+1, soldierstart_y)
                  charactercmd.patrolclick(player,SONNY, soldierstart_x, soldierstart_y, true)


                  这两行的坐标要不一样,然后他就会自动在这两点之间循环巡逻


                  IP属地:山东9楼2023-01-09 19:12
                  回复
                    发现一个错误
                    charactercmd.setweapon(SONNY,11) 双机枪
                    不是12


                    IP属地:山东10楼2023-01-09 19:31
                    回复
                      四个老大脚本,带最高装备的如下:
                      charactercmd.setweapon(capo, 9)


                      local SONNY=world.activatecharacter("SONNY")
                      family.addsoldier(player,SONNY)
                      charactercmd.setposition(SONNY, soldierstart_x, soldierstart_y)
                      -- charactercmd.patrolclick(player,SONNY, soldierstart_x, soldierstart_y, true)
                      charactercmd.setweapon(SONNY,11)


                      local ROMANO=world.activatecharacter("ROMANO")
                      family.addsoldier(player,ROMANO)
                      charactercmd.setposition(ROMANO, soldierstart_x+1, soldierstart_y)
                      -- charactercmd.patrolclick(player,SONNY, soldierstart_x, soldierstart_y, true)
                      charactercmd.setweapon(ROMANO,22)


                      local ANGELO=world.activatecharacter("ANGELO")
                      family.addsoldier(player,ANGELO)
                      charactercmd.setposition(ANGELO, soldierstart_x+2, soldierstart_y)
                      -- charactercmd.patrolclick(player,ANGELO, soldierstart_x, soldierstart_y, true)
                      charactercmd.setweapon(ANGELO,8)


                      注:我这种写法的前提是,你在死斗模式选择柯里昂。你要是选其他,是不能出现四个老大的。那你就要修改了,在脚本里增加柯里昂的定义,把对应的武器数字改一下。脚本第一句的意思是,把柯里昂的武器换成机枪。只换你的柯里昂,不换ai的。如果你想换ai的。
                      -- Set the correct starting weapon for the selected hero



                      chartype= character.gettype(capo)
                      if chartype=="SONNY" then
                      charactercmd.setweapon(capo,19) --semihandgun2x
                      else
                      if chartype=="MARIO" or chartype=="MARIO1" or chartype=="MARIO2" then
                      charactercmd.setweapon(capo, 17) -- semihandgun
                      else
                      charactercmd.setweapon(capo, 3) -- handgun
                      end
                      end


                      return capo
                      end


                      把这段里的数字替换即可。


                      IP属地:山东11楼2023-01-09 19:49
                      回复
                        for id, player in tPlayers do
                        local idx = 4
                        -- GetPositionIdx() * 4 -- Get random unique
                        local tx = tStartingPositions[idx] -- x map coord
                        local ty = tStartingPositions[idx+2] -- z map coord
                        local x, y = map.getnearestaccessible(tx,ty)
                        local tPlayerinfo = family.getplayerinfo(player)










                        如果想固定出场的安全屋的位置,可以自己给idx赋值,至于 local idx = ?
                        需要自己试一试,不同的地图是不一样的。固定这个值后,每次进这个地图,都是固定的安全屋,这样的好处是可以1vs7的时候,让自己的基地尽量远离敌人,设置一些缓冲区。


                        IP属地:山东12楼2023-01-09 20:14
                        回复
                          添加成员到控制格子里,普通成员的格子最多20个,但实际最多能控制应该是32个。
                          超级单位的格子一共8个。能不能增加更多格子,这个没发现办法


                          family.addmember(player, world.activatecharacter("SONNY"))
                          这句可以把桑尼作为普通兵种添加到普通成员的格子里
                          family.addsuperunitmember(player, world.activatecharacter("SONNY"))
                          这句可以把桑尼作为普通兵种添加到超级单位的格子里


                          IP属地:山东13楼2023-01-10 09:14
                          回复
                            摸索了一下
                            用下面这段代码,可以实现初始就驻守4个机枪兵




                            if safehouse~=nil then
                            -- Place the capo in the chair
                            charactercmd.inoffice(player, capo, safehouse)
                            start_x, start_y = building.buildingtoworld(safehouse,5,5)
                            for i=0,3 do
                            soldier[i] = world.activatecharacter("HENCHMAN")
                            family.addsoldier(player, soldier[i])
                            charactercmd.setposition(soldier[i], start_x, start_y)
                            charactercmd.fortify(player, soldier[i], safehouse)
                            charactercmd.setnpcbosscontrolled(soldier[i], false);
                            family.addmember(player, soldier[i])
                            end
                            end




                            IP属地:山东14楼2023-01-10 16:33
                            回复


                              如何把次主角放到格子里去?
                              摸索了一下。主角的四个大格子,其实应该是6个。还有两个不知道为什么不显示。
                              我尝试在前四个格子,放下柯里昂四兄弟,然后再放两个女儿,但不显示。
                              然后我再放一个女儿、一个文森佐、一个律师,就可以显示在小格子里了。
                              因此我猜测,游戏设定的就是6个主角位置,只有占满6个主角位置,才可以占用小格子




                              local SONNY=world.activatecharacter("SONNY")
                              family.addsoldier(player,SONNY)
                              family.addsuperunitmember(player, SONNY)
                              charactercmd.setposition(SONNY, soldierstart_x, soldierstart_y)
                              -- charactercmd.patrolclick(player,SONNY, soldierstart_x, soldierstart_y, true)
                              charactercmd.setweapon(SONNY,11)




                              local ROMANO=world.activatecharacter("ROMANO")
                              family.addsoldier(player,ROMANO)
                              family.addsuperunitmember(player, ROMANO)
                              charactercmd.setposition(ROMANO, soldierstart_x+1, soldierstart_y)
                              -- charactercmd.patrolclick(player,SONNY, soldierstart_x, soldierstart_y, true)
                              charactercmd.setweapon(ROMANO,22)




                              local ANGELO=world.activatecharacter("ANGELO")
                              family.addsoldier(player,ANGELO)
                              family.addsuperunitmember(player, ANGELO)
                              charactercmd.setposition(ANGELO, soldierstart_x+2, soldierstart_y)
                              -- charactercmd.patrolclick(player,ANGELO, soldierstart_x, soldierstart_y, true)
                              charactercmd.setweapon(ANGELO,8)


                              local soldier = hireSoldier(player, "Seductress: 2",soldierstart_x, soldierstart_y ,false,false)


                              local NPCBOSS=world.activatecharacter("NPCBOSS")
                              family.addsoldier(player,NPCBOSS)
                              family.addsuperunitmember(player, NPCBOSS)
                              charactercmd.setposition(NPCBOSS, soldierstart_x+2, soldierstart_y)
                              -- charactercmd.patrolclick(player,NPCBOSS, soldierstart_x, soldierstart_y, true)
                              charactercmd.setweapon(NPCBOSS,19)












                              local Seductress=world.activatecharacter("Seductress")
                              family.addsoldier(player,Seductress)
                              family.addsuperunitmember(player, Seductress)
                              charactercmd.setposition(Seductress, soldierstart_x+2, soldierstart_y)
                              -- charactercmd.patrolclick(player,Seductress, soldierstart_x, soldierstart_y, true)


                              local Lawyer=world.activatecharacter("Lawyer")
                              family.addsoldier(player,Lawyer)
                              family.addsuperunitmember(player, Lawyer)
                              charactercmd.setposition(Lawyer, soldierstart_x+2, soldierstart_y)
                              -- charactercmd.patrolclick(player,Lawyer, soldierstart_x, soldierstart_y, true)


                              IP属地:山东15楼2023-01-11 09:24
                              回复