cyziek Napisano 21 Kwietnia 2020 Szukam pluginu na spadochron dla osób z daną flagą, jednak bez zbędnych modeli. Samo zwolnienie "upadania". Czy ktoś miałby taki plugin? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Sqower Napisano 22 Kwietnia 2020 Trzymaj Spoiler #include <sourcemod>#include <sdktools>#define PARACHUTE_VERSION "2.5.1"//Parachute Model//#define PARACHUTE_MODEL "parachute_carbon"//Parachute Textures//#define PARACHUTE_PACK "pack_carbon"//#define PARACHUTE_TEXTURE "parachute_carbon"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 bool:hasAccess[MAXPLAYERS+1];new Parachute_Ent[MAXPLAYERS+1];public Plugin:myinfo ={ name = "SM Parachute", author = "SWAT_88 edited by pTu", description = "To use your parachute press and hold your E(+use) button while falling.", version = PARACHUTE_VERSION, url = "http://www.sourcemod.net/Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!"};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","0"); 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_version, PARACHUTE_VERSION); InitGameMode(); RegConsoleCmd("say",HandleSay,"",FCVAR_GAMEDLL); RegConsoleCmd("say_team",HandleSay,"",FCVAR_GAMEDLL); HookEvent("player_death",PlayerDeath); HookEvent("player_spawn",PlayerSpawn); HookConVarChange(g_enabled, CvarChange_Enabled); HookConVarChange(g_linear, CvarChange_Linear); HookConVarChange(g_cost, CvarChange_Cost); HookConVarChange(g_model, CvarChange_Model); HookConVarChange(g_button, CvarChange_Button); //CreateTimer(5.0, Timer_Copy, _, TIMER_REPEAT); }public Action:Timer_Copy(Handle:timer){ PrintToChatAll("\x01[\x04DEMO\x01]\x04 PLUGIN DEMO PLUGIN DEMOPLUGIN DEMOPLUGIN DEMO");} 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 InitGameMode(){ GetGameFolderName(g_game, 29); 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; hasAccess[client] = false; g_maxplayers = GetMaxClients(); CreateTimer (20.0, WelcomeMsg, client);}public OnClientPostAdminCheck(client){ hasAccess[client] = IsPlayerGenericAdmin(client);}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.0, RoundMsg, client); } 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:timer, any: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)== 1 && hasPara[client]) || (GetConVarInt(g_enabled) == 1 && GetConVarInt(g_cost) == 0)){ fallspeed = GetConVarFloat(g_fallspeed)*(-1.0); GetEntDataVector(client, g_iVelocity, velocity); 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(client, NULL_VECTOR, NULL_VECTOR, velocity); SetEntDataVector(client, g_iVelocity, velocity); SetEntityGravity(client,0.1); if(open) OpenParachute(client); } }}public EndPara(client){ if(GetConVarInt(g_enabled)== 1 ){ 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.0, 0.0, 0.0}; GetClientAbsOrigin(client,Client_Origin); GetClientAbsAngles(client,Client_Angles); Parachute_Angles[1] = Client_Angles[1]; TeleportEntity(Parachute_Ent[client], Client_Origin, Parachute_Angles, NULL_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)== 1 ){ GetEntDataVector(client,g_iVelocity,speed); cl_flags = GetEntityFlags(client); if(speed[2] >= 0 || (cl_flags & FL_ONGROUND)) EndPara(client); }}public OnGameFrame(){ if(GetConVarInt(g_enabled) == 0) return; for (x = 1; x <= g_maxplayers; x++) { if (IsClientInGame(x) && IsPlayerAlive(x) && hasAccess[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(client, String:text[], any:...){ new String:message[192]; VFormat(message,191,text, 2); 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); if (GetUserMessageType() == UM_Protobuf) PbSetString(HintMessage, "text", message); else { BfWriteByte(HintMessage,-1); BfWriteString(HintMessage,message); } EndMessage();}public PrintMsg(client,String:msg[]){ new String:translation[256]; if(GetConVarInt(g_enabled) == 0) return; Format(translation, 255, "%T", msg, LANG_SERVER, ButtonText); 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:menu, MenuAction:action, param1, param2){}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(client, args){ 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:timer, any:client){ if(GetConVarInt(g_enabled) == 0) return Plugin_Continue; if (GetConVarInt (g_welcome) == 1 && 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 = 1; client <= g_maxplayers; client++){ 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 = 1; client <= g_maxplayers; client++){ 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 = 1; client <= g_maxplayers; client++){ 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 = 1; client <= g_maxplayers; client++){ 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) != 0) SetConVarInt(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 = 1; client <= g_maxplayers; client++){ 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"; }}/*@param client idreturn bool*/bool:IsPlayerGenericAdmin(client){ if(CheckCommandAccess(client, "", ADMFLAG_CUSTOM6)) { return true; } return false;} " if(CheckCommandAccess(client, "", ADMFLAG_CUSTOM6))" tu zmieniasz flage Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
cyziek Napisano 22 Kwietnia 2020 Chodziło mi raczej o to żeby zrobić to najprościej jak tylko się da, bez zbędnych napisów, kupowania spadochronu itd. Jeśli gracz posiada flagi "o" lub "s" to kiedy naciśnie E podczas spadania- będzie spadał wolniej. To wszystko 😄 Dałoby radę? @Sqower Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Sqower Napisano 22 Kwietnia 2020 11 minut temu, cyziek napisał: Chodziło mi raczej o to żeby zrobić to najprościej jak tylko się da, bez zbędnych napisów, kupowania spadochronu itd. Jeśli gracz posiada flagi "o" lub "s" to kiedy naciśnie E podczas spadania- będzie spadał wolniej. To wszystko 😄 Dałoby radę? @Sqower Spoiler #include <sourcemod>#include <sdktools>#define PARACHUTE_VERSION "2.5.1"//Parachute Model//#define PARACHUTE_MODEL "parachute_carbon"//Parachute Textures//#define PARACHUTE_PACK "pack_carbon"//#define PARACHUTE_TEXTURE "parachute_carbon"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 bool:hasAccess[MAXPLAYERS+1];new Parachute_Ent[MAXPLAYERS+1];public Plugin:myinfo ={ name = "SM Parachute", author = "SWAT_88 edited by pTu", description = "To use your parachute press and hold your E(+use) button while falling.", version = PARACHUTE_VERSION, url = "http://www.sourcemod.net/Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!"};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","0"); g_roundmsg = CreateConVar("sm_parachute_roundmsg","0"); g_version = CreateConVar("sm_parachute_version", PARACHUTE_VERSION, "SM Parachute Version", FCVAR_NOTIFY); g_model = CreateConVar("sm_parachute_model","0"); 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_version, PARACHUTE_VERSION); InitGameMode(); RegConsoleCmd("say",HandleSay,"",FCVAR_GAMEDLL); RegConsoleCmd("say_team",HandleSay,"",FCVAR_GAMEDLL); HookEvent("player_death",PlayerDeath); HookEvent("player_spawn",PlayerSpawn); HookConVarChange(g_enabled, CvarChange_Enabled); HookConVarChange(g_linear, CvarChange_Linear); HookConVarChange(g_cost, CvarChange_Cost); HookConVarChange(g_model, CvarChange_Model); HookConVarChange(g_button, CvarChange_Button); //CreateTimer(5.0, Timer_Copy, _, TIMER_REPEAT); }public Action:Timer_Copy(Handle:timer){ PrintToChatAll("\x01[\x04DEMO\x01]\x04 PLUGIN DEMO PLUGIN DEMOPLUGIN DEMOPLUGIN DEMO");} 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 InitGameMode(){ GetGameFolderName(g_game, 29); 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; hasAccess[client] = false; g_maxplayers = GetMaxClients(); CreateTimer (20.0, WelcomeMsg, client);}public OnClientPostAdminCheck(client){ hasAccess[client] = IsPlayerGenericAdmin(client);}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.0, RoundMsg, client); } 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:timer, any: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)== 1 && hasPara[client]) || (GetConVarInt(g_enabled) == 1 && GetConVarInt(g_cost) == 0)){ fallspeed = GetConVarFloat(g_fallspeed)*(-1.0); GetEntDataVector(client, g_iVelocity, velocity); 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(client, NULL_VECTOR, NULL_VECTOR, velocity); SetEntDataVector(client, g_iVelocity, velocity); SetEntityGravity(client,0.1); if(open) OpenParachute(client); } }}public EndPara(client){ if(GetConVarInt(g_enabled)== 1 ){ 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.0, 0.0, 0.0}; GetClientAbsOrigin(client,Client_Origin); GetClientAbsAngles(client,Client_Angles); Parachute_Angles[1] = Client_Angles[1]; TeleportEntity(Parachute_Ent[client], Client_Origin, Parachute_Angles, NULL_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)== 1 ){ GetEntDataVector(client,g_iVelocity,speed); cl_flags = GetEntityFlags(client); if(speed[2] >= 0 || (cl_flags & FL_ONGROUND)) EndPara(client); }}public OnGameFrame(){ if(GetConVarInt(g_enabled) == 0) return; for (x = 1; x <= g_maxplayers; x++) { if (IsClientInGame(x) && IsPlayerAlive(x) && hasAccess[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(client, String:text[], any:...){ new String:message[192]; VFormat(message,191,text, 2); 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); if (GetUserMessageType() == UM_Protobuf) PbSetString(HintMessage, "text", message); else { BfWriteByte(HintMessage,-1); BfWriteString(HintMessage,message); } EndMessage();}public PrintMsg(client,String:msg[]){ new String:translation[256]; if(GetConVarInt(g_enabled) == 0) return; Format(translation, 255, "%T", msg, LANG_SERVER, ButtonText); 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:menu, MenuAction:action, param1, param2){}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(client, args){ 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:timer, any:client){ if(GetConVarInt(g_enabled) == 0) return Plugin_Continue; if (GetConVarInt (g_welcome) == 1 && 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 = 1; client <= g_maxplayers; client++){ 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 = 1; client <= g_maxplayers; client++){ 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 = 1; client <= g_maxplayers; client++){ 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 = 1; client <= g_maxplayers; client++){ 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) != 0) SetConVarInt(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 = 1; client <= g_maxplayers; client++){ 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"; }}/*@param client idreturn bool*/bool:IsPlayerGenericAdmin(client){ if(CheckCommandAccess(client, "", ADMFLAG_CUSTOM1, ADMFLAG_CUSTOM5)) { return true; } return false;} spadachrono.smxHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
cyziek Napisano 22 Kwietnia 2020 Brakuje tylko plików translacyjnych, a przy wejściu na serwer pobierają się niepotrzebne modele Spoiler Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.mdl Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.sw.vtx.bz2. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.sw.vtx.bz2 Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.sw.vtx. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.sw.vtx Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vvd.bz2. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vvd.bz2 Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vvd. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vvd Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.xbox.vtx.bz2. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.xbox.vtx.bz2 Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.xbox.vtx. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.xbox.vtx Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vmt.bz2. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vmt.bz2 Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vmt. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vmt Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vtf.bz2. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vtf.bz2 Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vtf. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vtf Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Sqower Napisano 22 Kwietnia 2020 19 minut temu, cyziek napisał: Brakuje tylko plików translacyjnych, a przy wejściu na serwer pobierają się niepotrzebne modele Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Pokaż ukrytą zawartość Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.mdl Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.sw.vtx.bz2. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.sw.vtx.bz2 Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.sw.vtx. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.sw.vtx Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vvd.bz2. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vvd.bz2 Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vvd. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vvd Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.xbox.vtx.bz2. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.xbox.vtx.bz2 Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.xbox.vtx. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.xbox.vtx Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vmt.bz2. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vmt.bz2 Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vmt. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vmt Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vtf.bz2. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vtf.bz2 Downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vtf. Error downloading http://k7543_s17212.fastdl1.livs.pl/s17212/.vtf Spoiler #include <sourcemod>#include <sdktools>#define PARACHUTE_VERSION "2.5.1"//Parachute Model//#define PARACHUTE_MODEL "parachute_carbon"//Parachute Textures//#define PARACHUTE_PACK "pack_carbon"//#define PARACHUTE_TEXTURE "parachute_carbon"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 bool:hasAccess[MAXPLAYERS+1];new Parachute_Ent[MAXPLAYERS+1];public Plugin:myinfo ={ name = "SM Parachute", author = "SWAT_88 edited by pTu", description = "To use your parachute press and hold your E(+use) button while falling.", version = PARACHUTE_VERSION, url = "http://www.sourcemod.net/Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!"};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","0"); g_roundmsg = CreateConVar("sm_parachute_roundmsg","0"); g_version = CreateConVar("sm_parachute_version", PARACHUTE_VERSION, "SM Parachute Version", FCVAR_NOTIFY); g_model = CreateConVar("sm_parachute_model","0"); 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_version, PARACHUTE_VERSION); InitGameMode(); RegConsoleCmd("say",HandleSay,"",FCVAR_GAMEDLL); RegConsoleCmd("say_team",HandleSay,"",FCVAR_GAMEDLL); HookEvent("player_death",PlayerDeath); HookEvent("player_spawn",PlayerSpawn); HookConVarChange(g_enabled, CvarChange_Enabled); HookConVarChange(g_linear, CvarChange_Linear); HookConVarChange(g_cost, CvarChange_Cost); HookConVarChange(g_model, CvarChange_Model); HookConVarChange(g_button, CvarChange_Button); //CreateTimer(5.0, Timer_Copy, _, TIMER_REPEAT); }public Action:Timer_Copy(Handle:timer){ PrintToChatAll("\x01[\x04DEMO\x01]\x04 PLUGIN DEMO PLUGIN DEMOPLUGIN DEMOPLUGIN DEMO");} 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 InitGameMode(){ GetGameFolderName(g_game, 29); if(StrEqual(g_game,"tf",false)){ SetConVarInt(g_button,2); SetButton(2); } else{ SetButton(1); }}public OnMapStart(){ //new String:path[256];}public OnEventShutdown(){ UnhookEvent("player_death",PlayerDeath); UnhookEvent("player_spawn",PlayerSpawn);}public OnClientPutInServer(client){ inUse[client] = false; hasPara[client] = false; hasModel[client] = false; hasAccess[client] = false; g_maxplayers = GetMaxClients(); CreateTimer (20.0, WelcomeMsg, client);}public OnClientPostAdminCheck(client){ hasAccess[client] = IsPlayerGenericAdmin(client);}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.0, RoundMsg, client); } 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:timer, any: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)== 1 && hasPara[client]) || (GetConVarInt(g_enabled) == 1 && GetConVarInt(g_cost) == 0)){ fallspeed = GetConVarFloat(g_fallspeed)*(-1.0); GetEntDataVector(client, g_iVelocity, velocity); 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(client, NULL_VECTOR, NULL_VECTOR, velocity); SetEntDataVector(client, g_iVelocity, velocity); SetEntityGravity(client,0.1); if(open) OpenParachute(client); } }}public EndPara(client){ if(GetConVarInt(g_enabled)== 1 ){ 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.0, 0.0, 0.0}; GetClientAbsOrigin(client,Client_Origin); GetClientAbsAngles(client,Client_Angles); Parachute_Angles[1] = Client_Angles[1]; TeleportEntity(Parachute_Ent[client], Client_Origin, Parachute_Angles, NULL_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)== 1 ){ GetEntDataVector(client,g_iVelocity,speed); cl_flags = GetEntityFlags(client); if(speed[2] >= 0 || (cl_flags & FL_ONGROUND)) EndPara(client); }}public OnGameFrame(){ if(GetConVarInt(g_enabled) == 0) return; for (x = 1; x <= g_maxplayers; x++) { if (IsClientInGame(x) && IsPlayerAlive(x) && hasAccess[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(client, String:text[], any:...){ new String:message[192]; VFormat(message,191,text, 2); 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); if (GetUserMessageType() == UM_Protobuf) PbSetString(HintMessage, "text", message); else { BfWriteByte(HintMessage,-1); BfWriteString(HintMessage,message); } EndMessage();}public PrintMsg(client,String:msg[]){ new String:translation[256]; if(GetConVarInt(g_enabled) == 0) return; Format(translation, 255, "%T", msg, LANG_SERVER, ButtonText); 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:menu, MenuAction:action, param1, param2){}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(client, args){ 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:timer, any:client){ if(GetConVarInt(g_enabled) == 0) return Plugin_Continue; if (GetConVarInt (g_welcome) == 1 && 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 = 1; client <= g_maxplayers; client++){ 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 = 1; client <= g_maxplayers; client++){ 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 = 1; client <= g_maxplayers; client++){ 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 = 1; client <= g_maxplayers; client++){ 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) != 0) SetConVarInt(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 = 1; client <= g_maxplayers; client++){ 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"; }}/*@param client idreturn bool*/bool:IsPlayerGenericAdmin(client){ if(CheckCommandAccess(client, "", ADMFLAG_CUSTOM1, ADMFLAG_CUSTOM5)) { return true; } return false;} sm_parachute.phrases.txtHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! pog.smxHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
cyziek Napisano 22 Kwietnia 2020 3 godziny temu, Sqower napisał: Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Pokaż ukrytą zawartość #include <sourcemod>#include <sdktools>#define PARACHUTE_VERSION "2.5.1"//Parachute Model//#define PARACHUTE_MODEL "parachute_carbon"//Parachute Textures//#define PARACHUTE_PACK "pack_carbon"//#define PARACHUTE_TEXTURE "parachute_carbon"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 bool:hasAccess[MAXPLAYERS+1];new Parachute_Ent[MAXPLAYERS+1];public Plugin:myinfo ={ name = "SM Parachute", author = "SWAT_88 edited by pTu", description = "To use your parachute press and hold your E(+use) button while falling.", version = PARACHUTE_VERSION, url = "http://www.sourcemod.net/Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!"};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","0"); g_roundmsg = CreateConVar("sm_parachute_roundmsg","0"); g_version = CreateConVar("sm_parachute_version", PARACHUTE_VERSION, "SM Parachute Version", FCVAR_NOTIFY); g_model = CreateConVar("sm_parachute_model","0"); 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_version, PARACHUTE_VERSION); InitGameMode(); RegConsoleCmd("say",HandleSay,"",FCVAR_GAMEDLL); RegConsoleCmd("say_team",HandleSay,"",FCVAR_GAMEDLL); HookEvent("player_death",PlayerDeath); HookEvent("player_spawn",PlayerSpawn); HookConVarChange(g_enabled, CvarChange_Enabled); HookConVarChange(g_linear, CvarChange_Linear); HookConVarChange(g_cost, CvarChange_Cost); HookConVarChange(g_model, CvarChange_Model); HookConVarChange(g_button, CvarChange_Button); //CreateTimer(5.0, Timer_Copy, _, TIMER_REPEAT); }public Action:Timer_Copy(Handle:timer){ PrintToChatAll("\x01[\x04DEMO\x01]\x04 PLUGIN DEMO PLUGIN DEMOPLUGIN DEMOPLUGIN DEMO");} 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 InitGameMode(){ GetGameFolderName(g_game, 29); if(StrEqual(g_game,"tf",false)){ SetConVarInt(g_button,2); SetButton(2); } else{ SetButton(1); }}public OnMapStart(){ //new String:path[256];}public OnEventShutdown(){ UnhookEvent("player_death",PlayerDeath); UnhookEvent("player_spawn",PlayerSpawn);}public OnClientPutInServer(client){ inUse[client] = false; hasPara[client] = false; hasModel[client] = false; hasAccess[client] = false; g_maxplayers = GetMaxClients(); CreateTimer (20.0, WelcomeMsg, client);}public OnClientPostAdminCheck(client){ hasAccess[client] = IsPlayerGenericAdmin(client);}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.0, RoundMsg, client); } 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:timer, any: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)== 1 && hasPara[client]) || (GetConVarInt(g_enabled) == 1 && GetConVarInt(g_cost) == 0)){ fallspeed = GetConVarFloat(g_fallspeed)*(-1.0); GetEntDataVector(client, g_iVelocity, velocity); 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(client, NULL_VECTOR, NULL_VECTOR, velocity); SetEntDataVector(client, g_iVelocity, velocity); SetEntityGravity(client,0.1); if(open) OpenParachute(client); } }}public EndPara(client){ if(GetConVarInt(g_enabled)== 1 ){ 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.0, 0.0, 0.0}; GetClientAbsOrigin(client,Client_Origin); GetClientAbsAngles(client,Client_Angles); Parachute_Angles[1] = Client_Angles[1]; TeleportEntity(Parachute_Ent[client], Client_Origin, Parachute_Angles, NULL_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)== 1 ){ GetEntDataVector(client,g_iVelocity,speed); cl_flags = GetEntityFlags(client); if(speed[2] >= 0 || (cl_flags & FL_ONGROUND)) EndPara(client); }}public OnGameFrame(){ if(GetConVarInt(g_enabled) == 0) return; for (x = 1; x <= g_maxplayers; x++) { if (IsClientInGame(x) && IsPlayerAlive(x) && hasAccess[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(client, String:text[], any:...){ new String:message[192]; VFormat(message,191,text, 2); 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); if (GetUserMessageType() == UM_Protobuf) PbSetString(HintMessage, "text", message); else { BfWriteByte(HintMessage,-1); BfWriteString(HintMessage,message); } EndMessage();}public PrintMsg(client,String:msg[]){ new String:translation[256]; if(GetConVarInt(g_enabled) == 0) return; Format(translation, 255, "%T", msg, LANG_SERVER, ButtonText); 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:menu, MenuAction:action, param1, param2){}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(client, args){ 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:timer, any:client){ if(GetConVarInt(g_enabled) == 0) return Plugin_Continue; if (GetConVarInt (g_welcome) == 1 && 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 = 1; client <= g_maxplayers; client++){ 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 = 1; client <= g_maxplayers; client++){ 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 = 1; client <= g_maxplayers; client++){ 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 = 1; client <= g_maxplayers; client++){ 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) != 0) SetConVarInt(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 = 1; client <= g_maxplayers; client++){ 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"; }}/*@param client idreturn bool*/bool:IsPlayerGenericAdmin(client){ if(CheckCommandAccess(client, "", ADMFLAG_CUSTOM1, ADMFLAG_CUSTOM5)) { return true; } return false;} sm_parachute.phrases.txt 4 kB · 1 pobranie Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! pog.smx 14 kB · 0 pobrań Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Niestety plugin jest uruchomiony lecz nie działa spadochron. W konsoli nie zauważyłem błędów. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Sqower Napisano 22 Kwietnia 2020 2 godziny temu, cyziek napisał: Niestety plugin jest uruchomiony lecz nie działa spadochron. W konsoli nie zauważyłem błędów. Mi wszystko działa ustawiłeś sobie flage ? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach