Akeno Napisano 4 Stycznia 2019 Witam, Poszukuję pluginu na Spadochron dla VIP. Dotychczas korzystałem z pluginu: https://github.com/n00b32/sourcemod-parachuteHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! jednakże w pewnym momencie plugin się "popsuł" i spadochron mają tylko osoby posiadające flagę t oraz flagę admina. Czy ma ktoś może jakiś inny plugin ? lub zna jakąś alternatywę dla owego pluginu. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
szogun Napisano 4 Stycznia 2019 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Akeno Napisano 4 Stycznia 2019 48 minut temu, szogun napisał: Wrzuciłem na serwer ale niestety osoby nie posiadające flagi również mogą korzystać ze spadochronu: "AdvancedParachute" { "Wlasciciel / Opiekun Serwera" { "model" "models/parachute/gargoyle.mdl" "default" "0" "flag" "q" } "Spadochron dla Premium" { "model" "models/parachute/parachute_ice_v2.mdl" "default" "1" "flag" "r" } "Spadochron dla Admina" { "model" "models/parachute/parachute_rainbow.mdl" "default" "0" "flag" "a" } "Waxon" { "model" "models/parachute/waxon_big2.mdl" "default" "0" "flag" "o" } } Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Bioły Napisano 4 Stycznia 2019 20 minut temu, Akeno|AdvancedNet napisał: "Spadochron dla Premium" { "model" "models/parachute/parachute_ice_v2.mdl" "default" "1" "flag" "r" } nie jestem pewien, ale przy default chyba powinno być "0" Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
szogun 1 Napisano 4 Stycznia 2019 Jak nie zadziała, sposób wyżej możesz spróbować Znajdź w sp if(CheckCommandAccess(client, "", iFlags, true) == false) Zamień na if(CheckCommandAccess(client, "sm_spadochron", iFlags, true) == false) Następnie do pliku admin_overrides.cfg dodaj "sm_spadochron" "flaga" Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Akeno Napisano 4 Stycznia 2019 11 minut temu, szogun napisał: Jak nie zadziała, sposób wyżej możesz spróbować Znajdź w sp if(CheckCommandAccess(client, "", iFlags, true) == false) Zamień na if(CheckCommandAccess(client, "sm_spadochron", iFlags, true) == false) Następnie do pliku admin_overrides.cfg dodaj "sm_spadochron" "flaga" Twój sposób zadziałał ten wyżej wywalał error logiem. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
MAGNET Napisano 4 Stycznia 2019 Czyli problem rozwiązany? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Akeno Napisano 4 Stycznia 2019 1 godzinę temu, MAGNET napisał: Czyli problem rozwiązany? Niestety jednak znowu przestało działać ? po dłuższym korzystaniu przez graczy nadal bez flagi mają dostęp. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
szogun Napisano 5 Stycznia 2019 Dnia 4.01.2019 o 23:34, Akeno|AdvancedNet napisał: Niestety jednak znowu przestało działać ? po dłuższym korzystaniu przez graczy nadal bez flagi mają dostęp. W jakim sensie przestało działać? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Akeno Napisano 6 Stycznia 2019 12 godzin temu, szogun napisał: W jakim sensie przestało działać? Wydawało mi się że dostęp dostał zablokowany lecz w następnej mapie jeden z "normalnych" graczy użył spadochronu. Wycinki z kodu: public Action Command_Parachute(int client, int args) { Menu menu = new Menu(h_parachutemenu); menu.SetTitle("Wybierz Spadochron:"); for(int i = 0 ; i < arParachuteList.Length; i++) { char sSectionName[64]; char sBuffer[512]; char sBufferExploded[2][512]; arParachuteList.GetString(i, sSectionName, sizeof(sSectionName)); smParachutes.GetString(sSectionName, sBuffer, sizeof(sBuffer)); ExplodeString(sBuffer, ";", sBufferExploded, sizeof(sBufferExploded), sizeof(sBufferExploded[])); int iFlags = ReadFlagString(sBufferExploded[1]); char sClientPrefs[12]; GetClientCookie(client, g_hParachute, sClientPrefs, sizeof(sClientPrefs)); if(strlen(sBufferExploded[1]) != 0) { if(CheckCommandAccess(client, "sm_advspadochron", iFlags, true)) { menu.AddItem(sSectionName, sSectionName, StrEqual(sSectionName, sClientPrefs, false) == true?ITEMDRAW_DISABLED:ITEMDRAW_DEFAULT); } } else { menu.AddItem(sSectionName, sSectionName, StrEqual(sSectionName, sClientPrefs, false) == true?ITEMDRAW_DISABLED:ITEMDRAW_DEFAULT); } } menu.ExitButton = true; menu.Display(client, MENU_TIME_FOREVER); } public void OnClientPostAdminCheck(int client) { if(IsValidClient(client)) { g_iParachuteEnt[client] = 0; char sDefaultParachute[64]; arParachuteList.GetString(g_iDefaultPar, sDefaultParachute , sizeof(sDefaultParachute)); char sBuffer[64]; char sParachute[512]; char sParachuteExploded[2][512]; GetClientCookie(client, g_hParachute, sBuffer, sizeof(sBuffer)); smParachutes.GetString(sBuffer, sParachute, sizeof(sParachute)); ExplodeString(sParachute, ";", sParachuteExploded, sizeof(sParachuteExploded), sizeof(sParachuteExploded[])); int iFlags = ReadFlagString(sParachuteExploded[1]); if(StrEqual(sBuffer, "", false)) { SetClientCookie(client, g_hParachute, sDefaultParachute); } else { if(arParachuteList.FindString(sBuffer) == -1) { SetClientCookie(client, g_hParachute, sDefaultParachute); } else { if(CheckCommandAccess(client, "sm_advspadochron", iFlags, true) == false) { SetClientCookie(client, g_hParachute, sDefaultParachute); } } } } } Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
szogun Napisano 6 Stycznia 2019 (edytowane) Jak wygląda plugin od strony serwera? Gracze mają od razu spadochron czy muszą w menu ustawić domyślny a potem dopiero mają spadochron? Na pewno masz wszystko dobrze dodane w admin_overrides ? Edytowane 6 Stycznia 2019 przez szogun Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Akeno Napisano 6 Stycznia 2019 (edytowane) 1 godzinę temu, szogun napisał: Jak wygląda plugin od strony serwera? Gracze mają od razu spadochron czy muszą w menu ustawić domyślny a potem dopiero mają spadochron? Na pewno masz wszystko dobrze dodane w admin_overrides ? Mają odrazu po wejściu na serwer. admin_overrides ustawione jest, co do wypowiedzi @TenTaki jeśli zmienię default "1" na 0 to wtedy plugin totalnie przestaje działać ? Edytowane 6 Stycznia 2019 przez Akeno|AdvancedNet Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
szogun Napisano 6 Stycznia 2019 To zamiast zero daj jeden a dodaj tylko wymaganą flagę od vipa i zobacz co się stanie tylko pamietaj aby wprowadzone zmiany cofnac z tego posta Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Akeno Napisano 8 Stycznia 2019 (edytowane) Przerzuciłem się na oryginalny SM Parachute by SWAT po lekkiej modyfikacji jednakże nadal nie działa dla osób z flagą "r" Kod pluginu: Spoiler #include <sourcemod> #include <sdktools> #define PARACHUTE_VERSION "2.5" //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", 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_version, PARACHUTE_VERSION); InitModel(); 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); } 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_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] = CheckCommandAccess(client, "sm_spadochron", ADMFLAG_CUSTOM4); } 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,"Otrzymałeś darmowy spadochron dla Premium !"); } 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"; } } Edytowane 8 Stycznia 2019 przez Akeno|AdvancedNet Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Bosz3K Napisano 29 Października 2020 @Akeno i jak masz jakieś rozwiązanie? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach