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

-LeXuS-

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

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

	SetMenuExitButton(menu, true);
	DisplayMenu(menu, client, 15);
}

public Credits_Transfer_Select(Handle:menu, MenuAction:action, client, option)
{
	if (action == MenuAction_Select) 
	{
		decl String:userid[15], String:c_name[32];
		GetMenuItem(menu, option, userid, 15);
		GetClientName(client, c_name, 32);

		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;
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
GetCredits(userid) + g_CreditsCount[client];
PrintToChat(userid, "Вы получили И кредитов.");
Одно прибавил с другим, а ни к чему не приравнял или не вывел, как инфу.
if(killcount[client] == 2)
PHP:
PFD(GetEventInt(E, "userid"), 1100, {200, 0, 0, 51});

PFD(u, d, const f[])
{
	new c = GetClientOfUserId(u);
	if (c)
	{
		new Handle:m = 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).
Points = Kills + Assists;
PHP:
Points = Kills + RoundToZero(Assists);
Оффтоп
 

-LeXuS-

Участник
Сообщения
120
Реакции
60
Спасибо.

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

-LeXuS-

Участник
Сообщения
120
Реакции
60
Переменной userid не существует в коде.А что вообще хотел? Вывести результат в чат?
PHP:
PrintToChat(client, "Вы получили %i кредитов.", GetCredits(client) + g_CreditsCount[client]);

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

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Клиент выбирает в менюшке игрока
PHP:
public Credits_Transfer_Select(Handle:menu, MenuAction:action, client, option) 
{
	switch(action)
	{
		case MenuAction_Select:
		{
			decl String:userid[15];
			GetMenuItem(menu, option, userid, 15);
			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_Cancel, MenuCancel_ExitBack:CloseHandle(menu);
	}
}
Нативы SHOPа сам разбирай.
 

-LeXuS-

Участник
Сообщения
120
Реакции
60
Всем привет. Подскажите, пожалуйста.
Файл имеет такую структуру:
C-подобный:
"Admins"
{
    "LeXuS™"
    {
        "auth"        "steam"
        "identity"        "STEAM_6:6:66666666"
        "flags"        "ast"
        "expires"        "1465572006"
    }
}

Как сделать чтобы в менюшке поле expires определялось по стиму?
C-подобный:
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);
}

При выстреле нет никаких эффектов, только дамаг, как исправить? И как сделать чтобы дамаг не наносился овнеру и его тиме? И можно ли как-то сделать отталкивание врагов от взрыва?
C-подобный:
#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;
}
 

FurFur

Участник
Сообщения
153
Реакции
85
if(KvJumpToKey(kv, steamid))

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

Если не хочешь ее менять,то попробуй изменить код на такой:

C-подобный:
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);
}
 
Сверху Снизу