Skocz do zawartości

Rekomendowane odpowiedzi

Witam mam sobie o to taki kod 

Spoiler

#include <sourcemod>
#include <clientprefs>
#include <sdktools>
#include <cstrike>
#include <sdkhooks>
#include <autoexecconfig>
#include <emitsoundany>
#include <mystocks>
#include <colors>
#include <scp>

#define PAINTBALL_PREFIX " ★ \x02[VIP]\x04"

#pragma newdecls required

bool gb_spawn[MAXPLAYERS + 1] = false;
bool g_bHudMessage[MAXPLAYERS + 1];

int g_fLastButtons[MAXPLAYERS + 1];
int g_fLastFlags[MAXPLAYERS + 1];
int g_iJumps[MAXPLAYERS + 1];

public Plugin myinfo = 
{
    name = "", 
    author = "",
    description = "", 
    version = "", 
    url = ""
};

public void OnPluginStart()
{
    HookEvent("player_spawn", event_player_spawn);
    HookEvent("bomb_defused", event_bomb_defused);
    HookEvent("bomb_planted", event_bomb_planted);
    HookEvent("player_death", event_player_death);
    HookEvent("round_end", event_round_end);
    RegConsoleCmd("sm_vip", vip);
    RegConsoleCmd("sm_vipy", ShowOnlineVips);
    RegConsoleCmd("sm_vipsay", Hud_Command);
}

public Action vip(int client, int args) {
    Menu menu = new Menu(VIP_Handler);
    menu.SetTitle("[ VIP - MENU GŁÓWNE ]");
    menu.AddItem("1", "Co posiada VIP?");
    menu.AddItem("2", "Koszt VIP'a!");
    menu.AddItem("3", "Jak zakupić VIP'a!");
    menu.AddItem("4", "Darmowy VIP na 1 Dzień!");
    menu.AddItem("5", "VIP online");
  
 
    menu.Display(client, MENU_TIME_FOREVER);
}

public int VIP_Handler(Menu menu, MenuAction action, int client, int position)   {
 
    if(action == MenuAction_Select) {
    char Item[32];
    menu.GetItem(position, Item, sizeof(Item));
    
    if(StrEqual(Item, "1"))
    OVIP(client, 1); 
                
    else if(StrEqual(Item, "2"))
    CVIP(client, 1);
 
    else if(StrEqual(Item, "3"))
    BVIP(client, 1);
 
    else if(StrEqual(Item, "4"))
    ClientCommand(client,"sm_freevip");

    else if(StrEqual(Item, "5"))
    ClientCommand(client,"sm_vipy");
 
        
    else if(action == MenuAction_End)
    delete menu;
 
    }
}

public Action OVIP(int client, int args) {
    Menu omenu = new Menu(OVIP_Handler);
    omenu.SetTitle(""," [ VIP - FUNKCJE ]");
    omenu.AddItem("","Tag vip na czacie", ITEMDRAW_DISABLED);
    omenu.AddItem("","Darmowy defuse na start gry dla ct", ITEMDRAW_DISABLED);
    omenu.AddItem("","Duble jump", ITEMDRAW_DISABLED);
    omenu.AddItem("","500$ za rozbrojenie bomby", ITEMDRAW_DISABLED);
    omenu.AddItem("","300$ za zabicie", ITEMDRAW_DISABLED);
    omenu.AddItem("", "Brak DMG od upadku", ITEMDRAW_DISABLED);
    omenu.AddItem("","Rezerwacja slota.", ITEMDRAW_DISABLED);
    omenu.AddItem("","500$ za podłożenie bomby", ITEMDRAW_DISABLED);
    omenu.AddItem("","500$ na poczatek rundy", ITEMDRAW_DISABLED);
    omenu.AddItem("","Flash na początku rundy", ITEMDRAW_DISABLED);
    omenu.AddItem("","101hp na poczatku rundy", ITEMDRAW_DISABLED);
    omenu.AddItem("","Prefix [VIP] w tabeli", ITEMDRAW_DISABLED);
    omenu.AddItem("","Powiadomienie o dołączeniu VIPa z serwerem w HUD", ITEMDRAW_DISABLED);
    omenu.AddItem("","Informacje o vipach online pod !vipy", ITEMDRAW_DISABLED);
    omenu.AddItem("","2x więcej punktów dla vip'a", ITEMDRAW_DISABLED);
    omenu.AddItem("","Hud dla vip'a pod komendą !vipsay", ITEMDRAW_DISABLED);
    omenu.Display(client, MENU_TIME_FOREVER);
}

public int OVIP_Handler(Menu menu, MenuAction action, int client, int position) {
    if (action == MenuAction_End)
    delete menu;

}

public Action CVIP(int client, int args) {
    Menu cmenu = new Menu(CVIP_Handler);
    cmenu.SetTitle("","[ VIP - CENNIK ]");
    cmenu.AddItem("", "3ZŁ - na 7DNI", ITEMDRAW_DISABLED);
    cmenu.AddItem("", "6ZŁ - na 14DNI", ITEMDRAW_DISABLED);
    cmenu.AddItem("", "10ZŁ - na 31DNI", ITEMDRAW_DISABLED);
    cmenu.Display(client, MENU_TIME_FOREVER);
    cmenu.ExitButton = false;
    cmenu.ExitBackButton = true;
}

public int CVIP_Handler(Menu menu, MenuAction action, int client, int position) {

    if(action == MenuAction_End)
    delete menu;

}

public Action BVIP(int client, int args) {
    Menu bmenu = new Menu(BVIP_Handler);
    bmenu.SetTitle("","[ VIP - KUPNO ]");
    bmenu.AddItem("", "SKLEP: BRAK", ITEMDRAW_DISABLED);
    bmenu.AddItem("", "NICK: Doktorek*", ITEMDRAW_DISABLED);
    bmenu.AddItem("", "STEAM: 76561199007743295", ITEMDRAW_DISABLED);
    bmenu.AddItem("", "FORUM: BRAK", ITEMDRAW_DISABLED);
    bmenu.Display(client, MENU_TIME_FOREVER);

}

public int BVIP_Handler(Menu menu, MenuAction action, int client, int position) {
    if(action == MenuAction_End)
    delete menu;
}

public Action event_player_spawn(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));
    
    if (!IsPlayerVIP(client))
        return;
    
    if (gb_spawn[client])
        return;
    
    gb_spawn[client] = true;
    SetPlayerMonay(client, GetPlayerMonay(client) + 500);
    GivePlayerItem(client, "weapon_flashbang");
    SetEntityHealth(client, 101);
    
    if (GetClientTeam(client) == CS_TEAM_CT)
        SetEntProp(client, Prop_Send, "m_bHasDefuser", 1);
}

public Action event_bomb_defused(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));
    
    if (!IsPlayerVIP(client))
        return;
    SetPlayerMonay(client, GetPlayerMonay(client) + 500);
}

public Action event_bomb_planted(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));
    
    if (!IsPlayerVIP(client))
        return;
    
    SetPlayerMonay(client, GetPlayerMonay(client) + 500);
}

public Action event_player_death(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));
    int attacker = GetClientOfUserId(event.GetInt("attacker"));
    
    if (attacker == client)
        return;
    
    if (!IsValidPlayer(client) || !IsValidPlayer(attacker) || !IsPlayerVIP(attacker))
        return;
    
    SetPlayerMonay(attacker, GetPlayerMonay(attacker) + 300);
}

public Action event_round_end(Event event, const char[] name, bool dontBroadcast)
{
    for (int i = 0; i <= MAXPLAYERS; i++)
    {
        if (IsValidPlayer(i))
        {
            gb_spawn = false;
        }
    }
}

public void OnClientPutInServer(int client)
{    
    if (IsValidPlayer(client) && IsPlayerVIP(client))
    return;

    SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
    PrintToChatAll("╔════════════════════════════════════════╗");
    PrintToChatAll("%s %N właśnie wbił na serwer", PAINTBALL_PREFIX, client);
    PrintToChatAll("╚════════════════════════════════════════╝");
    gb_spawn[client] = false;
    g_bHudMessage[client] = true;

}

public Action Hud_Command(int client, int args)
{
    if (!IsPlayerVIP(client))
    {
        PrintToChat(client, "Tylko VIP może użyć tej komendy.");
        return Plugin_Handled;
    }
    
    if (args < 1)
    {
        ReplyToCommand(client, "[SM] Use: sm_hudsay <text>");
        return Plugin_Handled;
    }
    
    char text[192];
    GetCmdArgString(text, sizeof(text));
    
    for (int i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
        {
            SetHudTextParams(0.35, 0.225, 10.0, 0, 255, 0, 1, 0, 2.5, 2.0); //You can edit it 4fun idgaf
            ShowHudText(i, 5, "VIP: %N napisał: \n%s", client, text);

        }
    }
    
    g_bHudMessage[client] = false;
    CreateTimer(120.0, Timer_EnableMessage, client);
    
    return Plugin_Handled;
}

public Action OnChatMessage(int &author, Handle recipients, char[] name, char[] message)
{
    if (!IsValidPlayer(author) && !IsPlayerVIP(author))
        return Plugin_Continue;
    
    Format(name, MAXLENGTH_NAME, "%s", name);
    int MaxMessageLength = MAXLENGTH_MESSAGE - strlen(name) - 5;
    Format(name, MaxMessageLength, "[VIP] %s", name);
    return Plugin_Changed;
}

public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon)
{
    if (IsValidPlayer(client) && IsPlayerVIP(client))
    {
        int fCurFlags = GetEntityFlags(client);
        int fCurButtons = GetClientButtons(client);
        
        if (g_fLastFlags[client] & FL_ONGROUND)
        {
            if (!(fCurFlags & FL_ONGROUND) && !(g_fLastButtons[client] & IN_JUMP) && fCurButtons & IN_JUMP)
            {
                g_iJumps[client]++;
            }
        }
        else if (fCurFlags & FL_ONGROUND)
        {
            g_iJumps[client] = 0;
        }
        else if (!(g_fLastButtons[client] & IN_JUMP) && fCurButtons & IN_JUMP)
        {
            if (1 <= g_iJumps[client] < 2)
            {
                g_iJumps[client]++;
                float vVel[3];
                GetEntPropVector(client, Prop_Data, "m_vecVelocity", vVel);
                
                vVel[2] = 250.0;
                TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, vVel);
            }
        }
        g_fLastFlags[client] = fCurFlags;
        g_fLastButtons[client] = fCurButtons;
    }
    
}

public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype)
{
    if (damagetype & DMG_FALL)
    {
        return Plugin_Handled;
    }
    return Plugin_Continue;
}

public Action Timer_EnableMessage(Handle timer, any client)
{
    if (client)
        g_bHudMessage[client] = true;
}

public void SetPlayerMonay(int client, int monay)
{
    SetEntProp(client, Prop_Send, "m_iAccount", monay);
}

public int GetPlayerMonay(int client)
{
    int monay = GetEntProp(client, Prop_Send, "m_iAccount");
    
    return monay;
}

public Action ShowOnlineVips(int client, int args)
{
    int iCount = 0;
    
    Menu menu = new Menu(Menu_Handler);
    
    menu.SetTitle("Gracze VIP, którzy są aktualnie na serwerze");
    
    for (int i = 1; i < MaxClients; i++)
    {
        if (IsValidClient(i))
        {
            if (IsPlayerVIP(i) && IsClientInGame(i))
            {
                char format[128];
                char cid[16];
                char name[MAX_NAME_LENGTH + 1];
                
                IntToString(i, cid, sizeof cid);
                GetClientName(i, name, sizeof name);
                
                Format(format, sizeof format, "[VIP] » %s", name);
                menu.AddItem(cid, format, ITEMDRAW_DISABLED);
                iCount++;
            }
        }
    }
    
    menu.ExitButton = true;
    menu.Display(client, 0);
    
    return Plugin_Handled;
}

public int Menu_Handler(Menu menu, MenuAction action, int client, int itemNum)
{
    if (action == MenuAction_End)
        CloseHandle(menu);
}

bool IsPlayerVIP(int client)
{
    if (CheckCommandAccess(client, "generic_admin", ADMFLAG_CUSTOM6, false))
        return true;
    return false;
}

stock bool IsValidPlayer(int client)
{
    if (client >= 1 && client <= MaxClients && IsClientInGame(client) && IsClientConnected(client) && !IsFakeClient(client) && !IsClientSourceTV(client))
        return true;
    return false;
}

 

I nie wiem dlaczego ale gdy gracz łączy się na serwer pokazuje wiadomosc że vip łączy się z serwerem a gracz nie ma vipa. Ta sama sytuacja z brak dmg po upadku vip jak i gracz maja brak dmg od upadku. Próbowałem wielu sposobów ale nie wiem co mam zrobić by działało to odpowiednio

Edytowane przez Doktorekone
Odnośnik do odpowiedzi
Udostępnij na innych stronach
47 minut temu, Doktorekone napisał:

    if (IsValidPlayer(client) && IsPlayerVIP(client))
    return;

 

wtf

 

47 minut temu, Doktorekone napisał:

public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype)
{
    if (damagetype & DMG_FALL)
    {
        return Plugin_Handled;
    }
    return Plugin_Continue;
}

 

Nie sprawdzasz nawet czy gracz posiada flage.

Sygnatura użytkownika

ŁAJCIOR 😎🤙

 

» Steam

» Discord: MartinezMajkutez#0001
» PluginyCS.pl - Rynek pluginów SourceMod

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ostatnio przeglądający ten temat (5 użytkowników)

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
×
×
  • Dodaj nową pozycję...