View Single Post
  #4  
Old 01-08-2012, 04:39 AM
DustyPorViva DustyPorViva is offline
Will work for food. Maybe
DustyPorViva's Avatar
Join Date: Sep 2003
Location: Maryland, USA
Posts: 9,589
DustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond repute
Send a message via AIM to DustyPorViva Send a message via MSN to DustyPorViva
Quote:
Originally Posted by iBeatz View Post
Ah, thanks for that death alternative.

I'm not great with projectiles, so I'll need a few pointers as to how to recreate the path taken by a thrown bush.
This is what I used, it's not exact but it was close enough for me:

shoot(player.x,player.y,2,dir*(pi/2)+(pi/2),.25,1.1,"ce_thrownobj",player.attr[3]);

Also read up on:
PHP Code:
 - new script command 'shoot' for shooting projectiles:
    
shoot x,y,z,angle,zangle,power,gani,ganiparams;
      
x,y and z - specify the starting position
      angle 
- shoot angle (when looking from the top): east is 0,
        
north 3.14/2, west is 3.14, south 3.14*3/2)
      
zangle - the angle in vertical direction, 0 means the
        projectile is shoot horizontal
, 3.14/2 means straight to the
        sun
      power 
- the shoot power which is used to shoot the projectile;
        if 
it's 0 then the projectile is shoot like an old arrow
        (doesn'
t fall down, moves 20 tiles each second)
      
gani - the animation that is used for the projectile; the
        animation can be multidirectional
, the engine automatically
        selects the best direction 
for the flying direction; the
        animation can have 1 step 
(not animated) or 7 steps, then the
        engine is automatically choosing the good animation step 
for
        
the projectile flying angle - when its raising then step 1 is
        taken
, when flying horizontal it is step 4, when it is short before
        the impact then the engine displays step 7
    When the projectile is landing 
or hitting an object then some actions
    are triggered
. With the command 'setshootparams <params>;' you can set
    the parameters that the called scripts get
, call 'setshootparams' before
    shooting the projectile
.
    
Client-side events:
      - 
actionprojectile:
        
is triggered when a projectile lands on the player/npc,
        
in #p(0), #p(1) etc. you have the parameters set with the
        
command setshootparams
    Server
-side events:
      - 
actionprojectile:
        
is triggered when a client has used the 'shoot' command to shoot a
        projectile 
and the projectile is landed; in #p(0) and #p(1) you have
        
the x and y position of the impact in case you want to place an explosion
        
or similar things on the ground (the control-npc is automatically warped
        to the level where the impact happened
); #p(2),#p(3) etc. contain the
        
params set with 'setshootparams' (before shooting the projectile)
      - 
actionsprojectile:
        
is triggered when a server-side script has shot a projectile and the projectile
        is landed
; in #p(0) and #p(1) you have the x and y position of the impact
        
(the control-npc is automatically warped to the level where the impact
        happened
); #p(2),#p(3) etc. contain the params set with 'setshootparams'
        
(before shooting the projectile)
    
Projectiles are easy to use and don't take a lot of bandwidth because only
    the shooting of the projectile needs to be sent, the movement is calculated on
    the different computers. The projectile is flying like a heavy object thrown
    through the air: the horizontal movement speed keeps the same (moves
    horzspeed=cos(zangle)*speed tiles all 0.05 seconds), the vertical speed is
    initialized as vertspeed=sin(zangle)*speed and is decreased by 0.1 all 0.05 seconds;
    then the new position (calculated all 0.05 seconds) is
    newx = x + cos(angle)*horzspeed, newy = y - sin(angle)*horzspeed,
    newz = z + vertspeed 
Reply With Quote