Forum

> > Carnage Contest > Weapons error
Forums overviewCarnage Contest overviewLog in to reply

English Weapons error

6 replies
To the start Previous 1 Next To the start

old Weapons error

SRAN
User Off Offline

Quote
Hi guys, I almost finished my new weapon xm1014 but the problem is that the weapon launch backward bullets wich hits me and makes a flying glitch. I did not read tutorials because I'm not english and could not understand.

old Re: Weapons error

Nem
User Off Offline

Quote
post script here, we can NOT read your mind and see it >_>

old Re: Weapons error

SRAN
User Off Offline

Quote
Nemesis has written
post script here, we can NOT read your mind and see it >_>

Here I paste what's writen:

-- Script by 7agarrr
--------------------------------------------------------------------------------

-- Setup Tables
if cc==nil then cc={} end
cc.xm1014={}
cc.xm1014.bullet={}

-- Load & Prepare Ressources
cc.xm1014.gfx_wpn=loadgfx("weapons/xm1014.bmp")                         -- Weapon Image
setmidhandle(cc.xm1014.gfx_wpn)
cc.xm1014.gfx_pro=loadgfx("weapons/shot.bmp")                              -- Projectile Image
setmidhandle(cc.xm1014.gfx_pro)
cc.xm1014.sfx_attack=loadsfx("xm1014.wav")                              -- Attack Sound

--------------------------------------------------------------------------------
-- Weapon: xm1014
--------------------------------------------------------------------------------

cc.xm1014.id=addweapon("cc.xm1014","xm1014",cc.xm1014.gfx_wpn)     -- Add Weapon
cc.xm1014.ammo=7                                                                 -- 2 Shots (each 3 bullets)

function cc.xm1014.draw()                                                       -- Draw
     setblend(blend_alpha)
     setalpha(1)
     setcolor(255,255,255)
     drawinhand(cc.xm1014.gfx_wpn,6,0)
     -- HUD ammobar
     if cc.xm1014.ammo-weapon_shots>0 then
          hudammobar(cc.xm1014.ammo-weapon_shots,cc.xm1014.ammo)
     end
     -- HUD Crosshair
     if cc.xm1014.ammo-weapon_shots>0 then
          hudcrosshair(7,3)
     end
end

function cc.xm1014.attack(attack)                                             -- Attack
     -- Decrement timer
     if weapon_timer>0 then
          weapon_timer=weapon_timer-1
     end
     -- Attack
     if weapon_shots<cc.xm1014.ammo and weapon_timer<=0 and attack==1 then
          -- No more weapon switching!
          useweapon(0)
          -- Reset Timer
          weapon_timer=20
          -- Attack
          playsound(cc.xm1014.sfx_attack)
          weapon_shots=weapon_shots+1
          for i=-1,1,1 do
               id=createprojectile(cc.xm1014.bullet.id)
               projectiles[id]={}
               rot=getplayerrotation(0)+(i*5)
               -- Ignore collision with current player at beginning
               projectiles[id].ignore=playercurrent()
               -- Set initial position of projectile
               projectiles[id].x=getplayerx(0)+(7*getplayerdirection(0))-math.sin(math.rad(rot))*5.0
               projectiles[id].y=getplayery(0)+3+math.cos(math.rad(rot))*5.0
               -- Set speed of projectile
               projectiles[id].sx=math.sin(math.rad(rot))*25.0
               projectiles[id].sy=-math.cos(math.rad(rot))*25.0
               -- Initial movement
               projectiles[id].x=projectiles[id].x-projectiles[id].sx*1.5
               projectiles[id].y=projectiles[id].y-projectiles[id].sy*1.5
               for i=1,3,1 do
                    if cc.xm1014.bullet.move(id)==1 then
                         break
                    end
               end
          end
          -- Effects
          recoil(7)
          particle(p_muzzle,getplayerx(0)+(getplayerdirection(0)*7)+math.sin(math.rad(getplayerrotation(0)))*16,getplayery(0)+3-math.cos(math.rad(getplayerrotation(0)))*16)
          particle(p_smoke,getplayerx(0)+(getplayerdirection(0)*7)+math.sin(math.rad(getplayerrotation(0)))*16,getplayery(0)+3-math.cos(math.rad(getplayerrotation(0)))*16)
          particlespeed(-0.2+math.random()*0.4+getwind()*10.0,-1.0+math.random()*0.6)
          particlefadealpha(0.005)
          -- End Turn
          if (weapon_shots>=cc.xm1014.ammo) then
               endturn()
          end
     end
end

--------------------------------------------------------------------------------
-- Projectile: Bullet
--------------------------------------------------------------------------------

cc.xm1014.bullet.id=addprojectile("cc.xm1014.bullet")          -- Add Projectile

function cc.xm1014.bullet.draw(id)                                   -- Draw
     -- Setup draw mode
     setblend(blend_light)
     setalpha(1)
     setcolor(255,125,0)
     setscale(1,1)
     -- Calculate projectile rotation
     setrotation(math.deg(math.atan2(projectiles[id].sx,-projectiles[id].sy)))
     -- Draw projectile
     drawimage(cc.xm1014.gfx_pro,projectiles[id].x,projectiles[id].y)
     -- Draw Arrow if out of Screen
     outofscreenarrow(projectiles[id].x,projectiles[id].y)
end

function cc.xm1014.bullet.update(id)                              -- Update
     -- Wind + Gravity influence on speed
     projectiles[id].sx=projectiles[id].sx+getwind()*0.02
     projectiles[id].sy=projectiles[id].sy+getgravity()*0.75
     -- Move
     cc.xm1014.bullet.move(id)
end

function cc.xm1014.bullet.move(id)
     rot=math.deg(math.atan2(projectiles[id].sx,-projectiles[id].sy))
     -- Move (in substep loop for optimal collision precision)
     msubt=math.ceil(math.max(math.abs(projectiles[id].sx),math.abs(projectiles[id].sy))/3)
     msubx=projectiles[id].sx/msubt
     msuby=projectiles[id].sy/msubt
     for i=1,msubt,1 do
          projectiles[id].x=projectiles[id].x+msubx
          projectiles[id].y=projectiles[id].y+msuby          
          -- Collision
          if collision(col3x3,projectiles[id].x+math.sin(math.rad(rot))*20,projectiles[id].y-math.cos(math.rad(rot))*20,1,1)==1 then
               if terraincollision()==1 or playercollision()~=projectiles[id].ignore then
                    -- Cause damage
                    if playercollision()~=0 then
                         playerpush(playercollision(),projectiles[id].sx/10.0,projectiles[id].sy/10.0)
                         playerdamage(playercollision(),7)
                         blood(projectiles[id].x+math.sin(math.rad(rot))*20,projectiles[id].y-math.cos(math.rad(rot))*20)
                    end
                    -- Destroy terrain
                    terrainexplosion(projectiles[id].x+math.sin(math.rad(rot))*20,projectiles[id].y-math.cos(math.rad(rot))*20,12,0)
                    -- Effects
                    playsound(sfx_ricochet1)
                    particle(p_smoke,projectiles[id].x+math.sin(math.rad(rot))*21,projectiles[id].y-math.cos(math.rad(rot))*21)
                    particlefadealpha(0.004)
                    particle(p_muzzle,projectiles[id].x+math.sin(math.rad(rot))*21,projectiles[id].y-math.cos(math.rad(rot))*21)
                    -- Free projectile
                    freeprojectile(id)
                    return 1
               end
          else
               projectiles[id].ignore=0
          end
          -- Water
          if (projectiles[id].y)>getwatery()+5 then
               -- Effects
               particle(p_waterhit,projectiles[id].x,projectiles[id].y)
               if math.random(1,2)==1 then
                    playsound(sfx_hitwater2)
               else
                    playsound(sfx_hitwater3)
               end
               -- Free projectile
               freeprojectile(id)
               return 1
          end
     end
end
edited 3×, last 16.08.10 09:30:51 pm

old Re: Weapons error

Nem
User Off Offline

Quote
-- Projectile: Bullet

You may not post that, thats useless imo.
i am not good scripter, but i think something wrong maybe here:

id=createprojectile(cc.xm1014.bullet.id)
projectiles[id]={}
rot=getplayerrotation(0)+(i*5)


and try put less recoil (actually, dont sure about this)

old Re: Weapons error

SRAN
User Off Offline

Quote
Nemesis has written
-- Projectile: Bullet

You may not post that, thats useless imo.
i am not good scripter, but i think something wrong maybe here:

id=createprojectile(cc.xm1014.bullet.id)
projectiles[id]={}
rot=getplayerrotation(0)+(i*5)


and try put less recoil (actually, dont sure about this)

I already fixed this the error was in:
projectiles[id].sx=math.sin(math.rad(rot))*25.0
projectiles[id].sy=-math.cos(math.rad(rot))*25.0
I changed 25.0 into 15.0 and it worked to me.
You can test my script, and please tell me how to make images.
To the start Previous 1 Next To the start
Log in to replyCarnage Contest overviewForums overview