Несколько вопросов

Тема в разделе "Программирование / Скриптинг", создана пользователем -LeXuS-, 20 мар 2015.

  1. -LeXuS-

    -LeXuS-

    Сообщения:
    117
    Симпатии:
    51
    Всем привет. Подскажите, пожалуйста.
    PHP:
    Credits_Transfer(client)
    {
        new 
    Handle:menu CreateMenu(Credits_Transfer_Select);
        
    SetMenuTitle(menu"Выберите игрока:");

        
    decl String:userid[15], String:name[32];
        for (new 
    1<= MaxClientsi++)
        {
            if (
    IsClientInGame(i))
            {
                
    IntToString(GetClientUserId(i), userid15);
                
    GetClientName(iname32);
                
    AddMenuItem(menuuseridname);
            }
        }

        
    SetMenuExitButton(menutrue);
        
    DisplayMenu(menuclient15);
    }

    public 
    Credits_Transfer_Select(Handle:menuMenuAction:actionclientoption)
    {
        if (
    action == MenuAction_Select
        {
            
    decl String:userid[15], String:c_name[32];
            
    GetMenuItem(menuoptionuserid15);
            
    GetClientName(clientc_name32);

            
    GetCredits(client) - g_CreditsCount[client];
    PrintToChat(client"Вы передали И кредитов игроку.");
    GetCredits(userid) + g_CreditsCount[client];
            
    PrintToChat(userid"Вы получили И кредитов.");
            
    g_CreditsCount[client] = 0;

            
    Credits_Transfer(client);
        }
    }
    При компиляции пишет tag mismatch на эти строчки:
    PHP:
    GetCredits(userid) + g_CreditsCount[client];
    PrintToChat(userid"Вы получили И кредитов.");
    Так вот, как получить userid и ник игрока, которого выбрал в меню Credits_Transfer

    2. Можно ли сделать покраснение экрана у игрока в зависимости от убийств?
    PHP:
    if(killcount[client] == 1)
    Тут экран покраснел на 50%
    if(
    killcount[client] == 2)
    Тут экран покраснел на 75%
    3. Можно ли как-то сложить int + float?
    PHP:
    new Kiils 3;
    new 
    Float:Assists 0.5;
    new 
    Points;
    Points Kills Assists;
     
  2. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.586
    Симпатии:
    1.994
    Одно прибавил с другим, а ни к чему не приравнял или не вывел, как инфу.
    PHP:
    PFD(GetEventInt(E"userid"), 1100, {2000051});

    PFD(ud, const f[])
    {
        new 
    GetClientOfUserId(u);
        if (
    c)
        {
            new 
    Handle:StartMessageOne("Fade"c);
            
    PbSetInt(m"duration"d);
            
    PbSetInt(m"hold_time"0);
            
    PbSetInt(m"flags"0x0001|0x0010);
            
    PbSetColor(m"clr"f);
            
    EndMessage();
        }
    }
    Где PFD(c, 1100, {200, 0, 0, 51});:
    c - userid игрока, 1100 - продолжительность эффекта в секундах, {200, 0, 0, 51} - RGB цвет, а последнее и будет "яркость" покраснения (от 0 до 255).
    PHP:
    Points = Kills + RoundToZero(Assists);
    Оффтоп
     
    -LeXuS- и TWRP нравится это.
  3. -LeXuS-

    -LeXuS-

    Сообщения:
    117
    Симпатии:
    51
    Спасибо.

    Но тут я маленько ошибся пишет не tag mismatch, a error 035: argument type mismatch (argument 1)
    Уже все тут перепробывал, ничего не выходит.
     
  4. -LeXuS-

    -LeXuS-

    Сообщения:
    117
    Симпатии:
    51
    Клиент выбирает в менюшке игрока, которому хочет отправить свои кредиты
    PHP:
    GetCredits(client) - g_CreditsCount[client]; // Забираем кредиты у клиента
    PrintToChat(client"Вы передали И кредитов игроку."); // Сообщаем клиенту, что он передал кредиты
    GetCredits(userid) + g_CreditsCount[client]; // Даем кредиты клиента таргету
    PrintToChat(userid"Вы получили И кредитов."); // Сообщаем тагрету, что ему пришли кредиты от другого игрока
    Так вот действия с таргетом не выходят.
     
  5. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.586
    Симпатии:
    1.994
    PHP:
    public Credits_Transfer_Select(Handle:menuMenuAction:actionclientoption
    {
        switch(
    action)
        {
            case 
    MenuAction_Select:
            {
                
    decl String:userid[15];
                
    GetMenuItem(menuoptionuserid15);
                new 
    player StringToInt(userid);
                if(
    player)
                {
                    
    PrintToChat(client"Вы передали %i кредитов игроку %N."GetCredits(client)-g_CreditsCount[client], player);
                    
    PrintToChat(player"Вы получили %i кредитов от игрока %N."GetCredits(player)+g_CreditsCount[client], client);
                    
    g_CreditsCount[client] = 0;

                    
    Credits_Transfer(client);
                }else 
    PrintToChat(client"Игрока нет на сервере (дисконнект)!");
            }
            case 
    MenuAction_CancelMenuCancel_ExitBack:CloseHandle(menu);
        }
    }
    Нативы SHOPа сам разбирай.
     
    -LeXuS- и Petrovich нравится это.
  6. -LeXuS-

    -LeXuS-

    Сообщения:
    117
    Симпатии:
    51
    Всем привет. Подскажите, пожалуйста.
    Файл имеет такую структуру:
    Код:
    "Admins"
    {
        "LeXuS™"
        {
            "auth"        "steam"
            "identity"        "STEAM_6:6:66666666"
            "flags"        "ast"
            "expires"        "1465572006"
        }
    }
    Как сделать чтобы в менюшке поле expires определялось по стиму?
    Код:
    Menu(client)
    {
        Handle menu = CreateMenu(Menu_Select);
        char steamid[32];
        GetClientAuthId(client, AuthId_Steam2, steamid, sizeof(steamid));
    
        KvRewind(kv);
        if(KvJumpToKey(kv, steamid))
        {
            char buffer[50];
            int expires = KvGetNum(kv, "expires", 0);
            FormatTime(buffer, sizeof(buffer), "Time: %d/%m/%y - %H:%M", expires);
            SetMenuTitle(menu, buffer);
        }
    
        DrawPanelText(menu, "лол");
        DrawPanelText(menu, "лал");
    
        SetMenuExitBackButton(menu, true);
        SetMenuExitButton(menu, true);
        DisplayMenu(menu, client, 0);
    }
    При выстреле нет никаких эффектов, только дамаг, как исправить? И как сделать чтобы дамаг не наносился овнеру и его тиме? И можно ли как-то сделать отталкивание врагов от взрыва?
    Код:
    #include <sourcemod>
    #include <sdktools>
    
    public OnPluginStart()
    {
    	HookEvent("bullet_impact", Bullet_Impact);
    }
    
    public Bullet_Impact(Handle:event, const String:name[], bool:dontBroadcast)
    {
    	int client = GetClientOfUserId(GetEventInt(event, "userid"));
    	if(client)
    	{
    		float fpos[3];
    		GetLookPosition(client, fpos);
    		ExplosionEffect(client, fpos);
    	}
    }
    
    void ExplosionEffect(int client, float origin[3])
    {
    	int explosion = CreateEntityByName("env_explosion");
    
    	if(!IsValidEntity(explosion))
    		return;
    
    	#define EXP_NODECAL 16
    	#define EXP_NOSPARKS 32
    
    	int SpawnFlags = GetEntProp(explosion, Prop_Data, "m_spawnflags");
    	SpawnFlags = SpawnFlags | EXP_NODECAL | EXP_NOSPARKS;
    	SetEntProp(explosion, Prop_Data, "m_spawnflags", SpawnFlags);
    	SetEntProp(explosion, Prop_Data, "m_iMagnitude", 100);
    	SetEntProp(explosion, Prop_Data, "m_iRadiusOverride", 350);
    
    	DispatchKeyValueFloat(explosion,"DamageForce", 5.0);
    	SetEntPropEnt(explosion, Prop_Send, "m_hOwnerEntity", client); 
    	int team = GetEntProp(client, Prop_Send, "m_iTeamNum"); 
    	SetEntProp(explosion, Prop_Send, "m_iTeamNum", team);
    
    
    	DispatchKeyValue(explosion, "fireballsprite", "materials/sprites/xfireball3.vmt");
    	DispatchSpawn(explosion);
    	DispatchKeyValueVector(explosion, "origin", origin);
    	AcceptEntityInput(explosion, "Explode");
    	AcceptEntityInput(explosion, "Kill");
    }
    
    GetLookPosition(client, Float:fPos[3])
    {
    	decl Float:EyePosition[3], Float:EyeAngles[3], Handle:h_trace;
    	GetClientEyePosition(client, EyePosition);
    	GetClientEyeAngles(client, EyeAngles);
    	h_trace = TR_TraceRayFilterEx(EyePosition, EyeAngles, MASK_SOLID, RayType_Infinite, GetLookPosition_Filter, client);
    	TR_GetEndPosition(fPos, h_trace);
    	CloseHandle(h_trace);
    }
    
    public bool:GetLookPosition_Filter(ent, mask, any:client)
    {
    	return client != ent;
    }
     
  7. Крабос

    Крабос

    Сообщения:
    47
    Симпатии:
    21
    В твоем коде стим айди это параметр ключа. Что бы оно прыгало именно на стимы,то нужно поменять структуру примерно так:
    Код:
    "Admins"
    {
        "STEAM_6:6:66666666"
        {
            "name"        "LeXuS™"
            "flags"        "ast"
            "expires"        "1465572006"
        }
    }
    
    Если не хочешь ее менять,то попробуй изменить код на такой:

    Код:
    Menu(client)
    {
        Handle menu = CreateMenu(Menu_Select);
        decl stringx[32];
        GetClientName(client, stringx, 32);
    
        KvRewind(kv);
        if(KvJumpToKey(kv, stringx, false))
        {
            GetClientAuthId(client, AuthId_Steam2, stringx, 32);
            decl buffer[50];
            KvGetString(kv, "identity", buffer, 32);
            if (StrEqual(buffer, stringx))
            {
                int expires = KvGetNum(kv, "expires", 0);
                FormatTime(buffer, sizeof(buffer), "Time: %d/%m/%y - %H:%M", expires);
                SetMenuTitle(menu, buffer);
            }
        }
    
        DrawPanelText(menu, "лол");
        DrawPanelText(menu, "лал");
    
        SetMenuExitBackButton(menu, true);
        SetMenuExitButton(menu, true);
        DisplayMenu(menu, client, 0);
    }
     
    Саша Шеин и -LeXuS- нравится это.