Swimzoring by IzNoGod:


PHP Code:
#include std\player;

swim()
{
    
swimspeed 200;
    
swimfactor 0.05;
    
swimcorrection 35.5//experimental random number (do not change)
    
if(isdefined(self.swim_running) && self.swim_running)
        return; 
//dont double-start thread
    
waters getentarray("water""targetname");
    
touching false;
    
wastouching false;
    while(
isdefined(self) && isdefined(self.sessionstate) && self.sessionstate == "playing")
    {
        
wastouching touching;
        
touching false;
        for(
0waters.sizei++)
        {
            if(
self istouching(waters[i]))
            {
                
touching true;
                break;
            }
        }
        
vec = (000);
        if(
touching || wastouching)
        {
            
fw anglestoforward(self getplayerangles());
            
rg anglestoright(self getplayerangles());
            if(
self leftButtonPressed())
                
vec -= rg;
            if(
self rightButtonPressed())
                
vec += rg;
            if(
self forwardButtonPressed())
                
vec += fw;
            if(
self backButtonPressed())
                
vec -= fw;
            if(
self leanleftButtonPressed())
                
vec -= (001);
            if(
self leanrightButtonPressed())
                
vec += (001);
            
vec vectornormalize(vec);
            
vec maps\mp\_utility::vectorScale(vecswimspeed);
        }
        if(
touching)
        {
            
currentspeed self getVelocity();
            
speed_diff vec currentspeed;
            
speed = (speed_diff[0] * swimfactorspeed_diff[1] * swimfactorspeed_diff[2] * swimfactor swimcorrection * (0.5 self isonground()));
            
self addVelocity(speed);
        }
        else if(
wastouching && (vec[2] > swimspeed/10 || self jumpButtonPressed()))
        {
            
currentspeed self getVelocity();
            
currentspeed = (currentspeed[0], currentspeed[1], 250);
            
self setvelocity(currentspeed);
        }
        
wait 0.05;
    }
    if(
isdefined(self))
        
self.swim_running false;