Raised This Month: $12 Target: $400
 3% 

add sound to this plugin


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
generals
Senior Member
Join Date: Aug 2018
Old 03-04-2019 , 06:45   add sound to this plugin
Reply With Quote #1

hi guys..someone can add this sound to this plugin .. when i use para (play the sound)

PHP Code:
#include <sourcemod>
#include <sdktools>

#define PARACHUTE_VERSION     "2.5"

//Parachute Model
#define PARACHUTE_MODEL        "parachute_bf"

//Parachute Textures
#define PARACHUTE_PACK        "pack_carbon"
#define PARACHUTE_TEXTURE    "parachute_c"

new g_iVelocity = -1;
new 
g_iMoney = -1;
new 
g_maxplayers = -1;

new 
String:g_game[30];
new 
String:path_model[256];
new 
String:path_pack[256];
new 
String:path_texture[256];

new 
Handle:g_fallspeed INVALID_HANDLE;
new 
Handle:g_enabled INVALID_HANDLE;
new 
Handle:g_linear INVALID_HANDLE;
new 
Handle:g_msgtype INVALID_HANDLE;
new 
Handle:g_cost INVALID_HANDLE;
new 
Handle:g_payback INVALID_HANDLE;
new 
Handle:g_welcome INVALID_HANDLE;
new 
Handle:g_roundmsg INVALID_HANDLE;
new 
Handle:g_version INVALID_HANDLE;
new 
Handle:g_model INVALID_HANDLE;
new 
Handle:g_decrease INVALID_HANDLE;
new 
Handle:g_button INVALID_HANDLE;

new 
x;
new 
cl_flags;
new 
cl_buttons;
new 
Float:speed[3];
new 
bool:isfallspeed;

new 
USE_BUTTON;
new 
String:ButtonText[265];

new 
bool:inUse[MAXPLAYERS+1];
new 
bool:hasPara[MAXPLAYERS+1];
new 
bool:hasModel[MAXPLAYERS+1];
new 
Parachute_Ent[MAXPLAYERS+1];

public 
Plugin:myinfo =
{
    
name "SM Parachute",
    
author "SWAT_88",
    
description "To use your parachute press and hold your E(+use) button while falling.",
    
version PARACHUTE_VERSION,
    
url "http://www.sourcemod.net/"
};

public 
OnPluginStart()
{
    
LoadTranslations ("sm_parachute.phrases");

    
g_enabled CreateConVar("sm_parachute_enabled","1");
    
g_fallspeed CreateConVar("sm_parachute_fallspeed","100");
    
g_linear CreateConVar("sm_parachute_linear","1");
    
g_msgtype CreateConVar("sm_parachute_msgtype","1");
    
g_cost CreateConVar("sm_parachute_cost","0");
    
g_payback CreateConVar("sm_parachute_payback","75");
    
g_welcome CreateConVar("sm_parachute_welcome","1");
    
g_roundmsg CreateConVar("sm_parachute_roundmsg","1");
    
g_version CreateConVar("sm_parachute_version"PARACHUTE_VERSION,    "SM Parachute Version"FCVAR_NOTIFY);
    
g_model CreateConVar("sm_parachute_model","1");
    
g_decrease CreateConVar("sm_parachute_decrease","50");
    
g_button CreateConVar("sm_parachute_button","1");
    
g_iVelocity FindSendPropOffs("CBasePlayer""m_vecVelocity[0]");
    
g_iMoney FindSendPropOffs("CCSPlayer""m_iAccount");
    
g_maxplayers GetMaxClients();
    
SetConVarString(g_versionPARACHUTE_VERSION);
    
    
InitModel();
    
InitGameMode();
    
    
RegConsoleCmd("say",HandleSay,"",FCVAR_GAMEDLL);
    
RegConsoleCmd("say_team",HandleSay,"",FCVAR_GAMEDLL);
    
HookEvent("player_death",PlayerDeath);
    
HookEvent("player_spawn",PlayerSpawn);
    
HookConVarChange(g_enabledCvarChange_Enabled);
    
HookConVarChange(g_linearCvarChange_Linear);
    
HookConVarChange(g_costCvarChange_Cost);
    
HookConVarChange(g_modelCvarChange_Model);
    
HookConVarChange(g_buttonCvarChange_Button);
}

public 
OnPluginEnd(){
    
CloseHandle(g_fallspeed);
    
CloseHandle(g_enabled);
    
CloseHandle(g_linear);
    
CloseHandle(g_msgtype);
    
CloseHandle(g_cost);
    
CloseHandle(g_payback);
    
CloseHandle(g_welcome);
    
CloseHandle(g_roundmsg);
    
CloseHandle(g_version);
    
CloseHandle(g_model);
    
CloseHandle(g_decrease);
}

public 
InitModel(){
    
Format(path_model,255,"models/parachute/%s",PARACHUTE_MODEL);
    
Format(path_pack,255,"materials/models/parachute/%s",PARACHUTE_PACK);
    
Format(path_texture,255,"materials/models/parachute/%s",PARACHUTE_TEXTURE);
}

public 
InitGameMode(){
    
GetGameFolderName(g_game29);
    if(
StrEqual(g_game,"tf",false)){
        
SetConVarInt(g_button,2);
        
SetButton(2);
    }
    else{
        
SetButton(1);
    }
}

public 
OnMapStart(){
    new 
String:path[256];
    
    
strcopy(path,255,path_model);
    
StrCat(path,255,".mdl")
    
PrecacheModel(path,true);

    
strcopy(path,255,path_model);
    
StrCat(path,255,".dx80.vtx")
    
AddFileToDownloadsTable(path);

    
strcopy(path,255,path_model);
    
StrCat(path,255,".dx90.vtx")
    
AddFileToDownloadsTable(path);

    
strcopy(path,255,path_model);
    
StrCat(path,255,".mdl")
    
AddFileToDownloadsTable(path);

    
strcopy(path,255,path_model);
    
StrCat(path,255,".sw.vtx")
    
AddFileToDownloadsTable(path);
    
    
strcopy(path,255,path_model);
    
StrCat(path,255,".vvd")
    
AddFileToDownloadsTable(path);

    
strcopy(path,255,path_model);
    
StrCat(path,255,".xbox.vtx")
    
AddFileToDownloadsTable(path);

    
strcopy(path,255,path_pack);
    
StrCat(path,255,".vmt")
    
AddFileToDownloadsTable(path);
    
    
strcopy(path,255,path_pack);
    
StrCat(path,255,".vtf")
    
AddFileToDownloadsTable(path);
    
    
strcopy(path,255,path_texture);
    
StrCat(path,255,".vmt")
    
AddFileToDownloadsTable(path);
    
    
strcopy(path,255,path_texture);
    
StrCat(path,255,".vtf")
    
AddFileToDownloadsTable(path);
}

public 
OnEventShutdown()
{
    
UnhookEvent("player_death",PlayerDeath);
    
UnhookEvent("player_spawn",PlayerSpawn);
}

public 
OnClientPutInServer(client)
{
    
inUse[client] = false;
    
hasPara[client] = false;
    
hasModel[client] = false;
    
g_maxplayers GetMaxClients();
    
CreateTimer (20.0WelcomeMsgclient);
}

public 
OnClientDisconnect(client){
    
g_maxplayers GetMaxClients();
    
CloseParachute(client);
}

public 
Action:PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast){
    new 
client;
    
client GetClientOfUserId(GetEventInt(event"userid"));
    if (
GetConVarInt(g_cost) == 0){
        
CreateTimer (1.0RoundMsgclient);
    }
    return 
Plugin_Continue;
}

public 
Action:PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast){
    new 
client;
    
client GetClientOfUserId(GetEventInt(event"userid"));
    
hasPara[client] = false;
    
EndPara(client);
    return 
Plugin_Continue;
}

public 
Action:RoundMsg(Handle:timerany:client){
    if(
GetConVarInt(g_roundmsg) == 1){
        if(
IsClientConnected (client) && IsClientInGame(client))
            
PrintMsg(client,"Have Got Free Parachute");
    }
    return 
Plugin_Continue;
}

public 
StartPara(client,bool:open)
{
    
decl Float:velocity[3];
    
decl Float:fallspeed;
    if (
g_iVelocity == -1) return;
    if((
GetConVarInt(g_enabled)== && hasPara[client]) || (GetConVarInt(g_enabled) == && GetConVarInt(g_cost) == 0)){
        
fallspeed GetConVarFloat(g_fallspeed)*(-1.0);
        
GetEntDataVector(clientg_iVelocityvelocity);
        if(
velocity[2] >= fallspeed){
            
isfallspeed true;
        }
        if(
velocity[2] < 0.0) {
            if(
isfallspeed && GetConVarInt(g_linear) == 0){
            }
            else if((
isfallspeed && GetConVarInt(g_linear) == 1) || GetConVarFloat(g_decrease) == 0.0){
                
velocity[2] = fallspeed;
            }
            else{
                
velocity[2] = velocity[2] + GetConVarFloat(g_decrease);
            }
            
TeleportEntity(clientNULL_VECTORNULL_VECTORvelocity);
            
SetEntDataVector(clientg_iVelocityvelocity);
            
SetEntityGravity(client,0.1);
            if(
openOpenParachute(client);
        }
    }
}

public 
EndPara(client)
{
    if(
GetConVarInt(g_enabled)== ){
        
SetEntityGravity(client,1.0);
        
inUse[client]=false;
        
CloseParachute(client);
    }
}

public 
OpenParachute(client){
    
decl String:path[256];
    
strcopy(path,255,path_model);
    
StrCat(path,255,".mdl")
    
    if(
GetConVarInt(g_model) == 1){
        
Parachute_Ent[client] = CreateEntityByName("prop_dynamic_override");
        
DispatchKeyValue(Parachute_Ent[client],"model",path);
        
SetEntityMoveType(Parachute_Ent[client], MOVETYPE_NOCLIP);
        
DispatchSpawn(Parachute_Ent[client]);
        
        
hasModel[client]=true;
        
TeleportParachute(client);
    }
}

public 
TeleportParachute(client){
    if(
hasModel[client] && IsValidEntity(Parachute_Ent[client])){
        
decl Float:Client_Origin[3];
        
decl Float:Client_Angles[3];
        
decl Float:Parachute_Angles[3] = {0.00.00.0};
        
GetClientAbsOrigin(client,Client_Origin);
        
GetClientAbsAngles(client,Client_Angles);
        
Parachute_Angles[1] = Client_Angles[1];
        
TeleportEntity(Parachute_Ent[client], Client_OriginParachute_AnglesNULL_VECTOR);
    }
}

public 
CloseParachute(client){
    if(
hasModel[client] && IsValidEntity(Parachute_Ent[client])){
        
RemoveEdict(Parachute_Ent[client]);
        
hasModel[client]=false;
    }
}

public 
Check(client){
    if(
GetConVarInt(g_enabled)== ){
        
GetEntDataVector(client,g_iVelocity,speed);
        
cl_flags GetEntityFlags(client);
        if(
speed[2] >= || (cl_flags FL_ONGROUND)) EndPara(client);
    }
}

public 
OnGameFrame()
{
    if(
GetConVarInt(g_enabled) == 0) return;
    for (
1<= g_maxplayersx++)
    {
        if (
IsClientInGame(x) && IsPlayerAlive(x))
        {
            
cl_buttons GetClientButtons(x);
            if (
cl_buttons USE_BUTTON)
            {
                if (!
inUse[x])
                {
                    
inUse[x] = true;
                    
isfallspeed false;
                    
StartPara(x,true);
                }
                
StartPara(x,false);
                
TeleportParachute(x);
            }
            else
            {
                if (
inUse[x])
                {
                    
inUse[x] = false;
                    
EndPara(x);
                }
            }
            
Check(x);
        }
    }
}

stock GetNextSpaceCount(String:text[],CurIndex){
    new 
Count=0;
    new 
len strlen(text);
    for(new 
i=CurIndex;i<len;i++){
        if(
text[i] == ' ') return Count;
        else 
Count++;
    }
    return 
Count;
}

stock SendHintText(clientString:text[], any:...){
    new 
String:message[192];

    
VFormat(message,191,text2);
    new 
len strlen(message);
    if(
len 30){
        new 
LastAdded=0;
        
        for(new 
i=0;i<len;i++){
            if((
message[i]==' ' && LastAdded 30 && (len-i) > 10) || ((GetNextSpaceCount(text,i+1) + LastAdded)  > 34)){
                
message[i] = '\n';
                
LastAdded 0;
            }
            else 
LastAdded++;
        }
    }
    new 
Handle:HintMessage StartMessageOne("HintText",client);
    
BfWriteByte(HintMessage,-1);
    
BfWriteString(HintMessage,message);
    
EndMessage();
}

public 
PrintMsg(client,String:msg[]){
    new 
String:translation[256];
    if(
GetConVarInt(g_enabled) == 0) return;
    
Format(translation255"%T"msgLANG_SERVERButtonText);
    if(
GetConVarInt(g_msgtype) == 1){        
        
PrintToChat(client,"\x01\x04[SM Parachute]\x01 %s"translation);
    }
    else if(
GetConVarInt(g_msgtype) == 2) {
        new 
Handle:panel CreatePanel();
        
DrawPanelText(panel,translation);
        
SendPanelToClient(panel,client,PanelHandle,5);
    }
    else if(
GetConVarInt(g_msgtype) == 3){
        
SendHintText(client,translation);
    }
}

public 
PanelHandle(Handle:menuMenuAction:actionparam1param2){
}

public 
BuyParachute(client){
    new 
money;
    new 
cost;
    if (
g_iMoney == -1) return;
    if (
hasPara[client] == false){
        
money GetEntData(client,g_iMoney);
        
cost GetConVarInt(g_cost);
        if (
cost == 0){
            
PrintMsg(client,"Have Free Parachute");
        }
        else{
            if((
money cost)<0){
                
PrintMsg(client,"No Money");
            }
            else{
                
hasPara[client] = true;
                
SetEntData(client,g_iMoney,money-cost);
                
PrintMsg(client,"Have Bought Parachute");
            }
        }
    }
    else{
        
PrintMsg(client,"Have Parachute");
    }
    
}

public 
SellParachute(client){
    new 
money;
    new 
Float:payback;
    new 
String:pb[10];
    if (
g_iMoney == -1) return;
    if (
hasPara[client] == true){
        
money GetEntData(client,g_iMoney);
        
payback GetConVarInt(g_cost)*(GetConVarFloat(g_payback)/100);
        if ((
money payback) > 16000){
            
SetEntData(client,g_iMoney,16000);
        }
        else{
            
FloatToString(payback,pb,9);
            
SetEntData(client,g_iMoney,money+StringToInt(pb));
        }
        
hasPara[client] = false;
        
PrintMsg(client,"Sold Parachute");
    }
    else{
        if (
GetConVarInt(g_cost)==0){
            
PrintMsg(client,"Sell Free Parachute");
        }
        else{
            
PrintMsg(client,"No Parachute");
        }
    }
}

public 
Action:HandleSay(clientargs){
    new 
String:line[30];
    if(
GetConVarInt(g_enabled) == 0) return Plugin_Continue;
    if (
args 0){
        
GetCmdArg(1,line,sizeof(line));
        if (
strcmp(g_game,"cstrike",false)==0){
            if (
StrEqual(line"!bp"false) || StrEqual(line"!buy_parachute"false)) BuyParachute(client);
            else if(
StrEqual(line"!sp"false) || StrEqual(line"!sell_parachute"false)) SellParachute(client);
        }
        else{
            
SetConVarInt(g_cost,0);
            if (
StrEqual(line"!bp"false) || StrEqual(line"!buy_parachute"false)) PrintMsg(client,"Have Free Parachute");
            else if(
StrEqual(line"!sp"false) || StrEqual(line"!sell_parachute"false)) PrintMsg(client,"Sell Free Parachute");
        }
    }
    return 
Plugin_Continue;
}


public 
Action:WelcomeMsg (Handle:timerany:client)
{
    if(
GetConVarInt(g_enabled) == 0) return Plugin_Continue;

    if (
GetConVarInt (g_welcome) == && IsClientConnected (client) && IsClientInGame (client))
    {
        
PrintToChat(client,"\x01\x04[SM Parachute]\x01 %T""Welcome"LANG_SERVER);
        if (
GetConVarInt(g_cost)==0){
            
PrintToChat(client,"\x01\x04[SM Parachute]\x01 %T""Parachute For Everyone"LANG_SERVER);
        }
        else{
            
PrintToChat(client,"\x01\x04[SM Parachute]\x01 %T""Buy Help"LANG_SERVER);
            
PrintToChat(client,"\x01\x04[SM Parachute]\x01 %T""Sell Help"LANG_SERVER);
        }
    }
    return 
Plugin_Continue;
}


public 
CvarChange_Enabled(Handle:cvar, const String:oldvalue[], const String:newvalue[]){
    if (
StringToInt(newvalue) == 0){
        for (new 
client 1client <= g_maxplayersclient++){
            if (
IsClientInGame(client) && IsPlayerAlive(client)){
                if (
hasPara[client]){
                    
SetEntityGravity(client,1.0);
                    
SetEntityMoveType(client,MOVETYPE_WALK);
                    
SellParachuteOff(client,GetConVarInt(g_cost));
                }
                
PrintToChat(client,"\x01\x04[SM Parachute]\x01 %T""Disabled"LANG_SERVER);
            }
        }
    }
    else{
        for (new 
client 1client <= g_maxplayersclient++){
            if (
IsClientInGame(client) && IsPlayerAlive(client)){
                
PrintToChat(client,"\x01\x04[SM Parachute]\x01 %T""Enabled"LANG_SERVER);
                if (
GetConVarInt(g_cost)==0){
                    
PrintToChat(client,"\x01\x04[SM Parachute]\x01 %T""Parachute For Everyone"LANG_SERVER);
                }
                else{
                    
PrintToChat(client,"\x01\x04[SM Parachute]\x01 %T""Buy Help"LANG_SERVER);
                    
PrintToChat(client,"\x01\x04[SM Parachute]\x01 %T""Sell Help"LANG_SERVER);
                }
            }
        }
    }
}

public 
CvarChange_Linear(Handle:cvar, const String:oldvalue[], const String:newvalue[]){
    if (
StringToInt(newvalue) == 0){
        for (new 
client 1client <= g_maxplayersclient++){
            if (
IsClientInGame(client) && IsPlayerAlive(client) && hasPara[client]){
                
SetEntityMoveType(client,MOVETYPE_WALK);
            }
        }
    }
}

public 
CvarChange_Cost(Handle:cvar, const String:oldvalue[], const String:newvalue[]){
    if (
StringToInt(newvalue) == 0){
        for (new 
client 1client <= g_maxplayersclient++){
            if (
IsClientInGame(client) && IsPlayerAlive(client)){
                if (
hasPara[client]) SellParachuteOff(client,StringToInt(oldvalue));
                
PrintToChat(client,"\x01\x04[SM Parachute]\x01 %T""Parachute For Everyone"LANG_SERVER);
            }
        }
    }
    else{
        if (
strcmp(g_game,"cstrike",false) != 0SetConVarInt(g_cost,0);
    }
}

public 
CvarChange_Button(Handle:cvar, const String:oldvalue[], const String:newvalue[]){
    if (
StringToInt(newvalue) == 1){
        
SetButton(1);
    }
    else if(
StringToInt(newvalue) == 2){
        
SetButton(2);
    }
}

public 
CvarChange_Model(Handle:cvar, const String:oldvalue[], const String:newvalue[]){
    if (
StringToInt(newvalue) == 0){
        for (new 
client 1client <= g_maxplayersclient++){
            if (
IsClientInGame(client) && IsPlayerAlive(client)){
                
CloseParachute(client);
            }
        }
    }
}

public 
SellParachuteOff(client,cost){
    new 
money;
    new 
Float:payback;
    new 
String:pb[10];
    if (
g_iMoney == -1) return;
    if (
hasPara[client] == true){
        
money GetEntData(client,g_iMoney);
        
payback cost*(GetConVarFloat(g_payback)/100);
        if ((
money payback) > 16000){
            
SetEntData(client,g_iMoney,16000);
        }
        else{
            
FloatToString(payback,pb,9);
            
SetEntData(client,g_iMoney,money+StringToInt(pb));
        }
        
hasPara[client] = false;
    }
}

public 
SetButton(button){
    if (
button == 1){
        
USE_BUTTON IN_USE;
        
ButtonText "E";
    }
    else if(
button == 2){
        
USE_BUTTON IN_JUMP;
        
ButtonText "Space";
    }

thanks
Attached Files
File Type: zip parachute_sound.zip (37.9 KB, 23 views)

Last edited by generals; 03-04-2019 at 06:46.
generals is offline
Pilo
AlliedModders Donor
Join Date: Jan 2019
Location: Israel
Old 03-04-2019 , 10:07   Re: add sound to this plugin
Reply With Quote #2

Sure!, There you go
Just upload the zip and you ready!
Attached Files
File Type: zip sm-parachute.zip (57.5 KB, 31 views)
File Type: sp Get Plugin or Get Source (sm-parachute.sp - 29 views - 17.7 KB)
Pilo is offline
Pilo
AlliedModders Donor
Join Date: Jan 2019
Location: Israel
Old 03-04-2019 , 10:10   Re: add sound to this plugin
Reply With Quote #3

Btw only the one who activate the parachute hear the sound.
If you want to change it edit line 271 from
PHP Code:
EmitSoundToClient(client"misc/psound.mp3"); 
To
PHP Code:
EmitSoundToAll("misc/psound.mp3"); 
Have fun!

Last edited by Pilo; 03-04-2019 at 10:10.
Pilo is offline
Marttt
Veteran Member
Join Date: Jan 2019
Location: Brazil
Old 03-04-2019 , 10:57   Re: add sound to this plugin
Reply With Quote #4

Don't forget to precache the sound

Code:
PrecacheSound("misc/psound.mp3", true);

Last edited by Marttt; 03-04-2019 at 10:57.
Marttt is offline
generals
Senior Member
Join Date: Aug 2018
Old 03-04-2019 , 11:05   Re: add sound to this plugin
Reply With Quote #5

hi.. really thanks a lot..its worked
generals is offline
Pilo
AlliedModders Donor
Join Date: Jan 2019
Location: Israel
Old 03-04-2019 , 13:24   Re: add sound to this plugin
Reply With Quote #6

Quote:
Originally Posted by Marttt View Post
Don't forget to precache the sound

Code:
PrecacheSound("misc/psound.mp3", true);
Thanks.
Pilo is offline
Pilo
AlliedModders Donor
Join Date: Jan 2019
Location: Israel
Old 03-04-2019 , 13:24   Re: add sound to this plugin
Reply With Quote #7

Quote:
Originally Posted by generals View Post
hi.. really thanks a lot..its worked
You welcome ;)
Pilo is offline
generals
Senior Member
Join Date: Aug 2018
Old 03-06-2019 , 03:10   Re: add sound to this plugin
Reply With Quote #8

hi again

can someone add parachute menu to this plugin?

like this:

https://forums.alliedmods.net/showthread.php?p=2534158

when clients type !parachute - Open menu with available parachutes

Last edited by generals; 03-06-2019 at 03:11.
generals is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 04:40.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode