TotSamiiRodya
Участник
- Сообщения
- 246
- Реакции
- 107
Слушай,а если поставить плагин,который при входе пишет,ну как переписать "тип в нашей группе сейчас розгрыш",как это сделать? там просто посмотрел пишет тип с какой страны и т.п.
Слушай,а если поставить плагин,который при входе пишет,ну как переписать "тип в нашей группе сейчас розгрыш",как это сделать? там просто посмотрел пишет тип с какой страны и т.п.
А если мы создаем энтити, разве ее потом не нужно удалять?Поправил первый пост.
Хз. Я бы наверное реализовал так:Слушай,а если поставить плагин,который при входе пишет,ну как переписать "тип в нашей группе сейчас розгрыш",как это сделать? там просто посмотрел пишет тип с какой страны и т.п.
#include <sourcemod>
#include <sdktools>
#pragma semicolon 1
#pragma newdecls required
public void OnClientPutInServer(int client)
{
CreateTimer(5.0, TimerWelcome, client, TIMER_FLAG_NO_MAPCHANGE);
}
public Action TimerWelcome(Handle timer, int client)
{
int ent = CreateEntityByName("game_text");
if(IsClientInGame(client))
{
DispatchKeyValue(ent, "channel", "1");
DispatchKeyValue(ent, "color", "255 255 255");
DispatchKeyValue(ent, "color2", "0 0 0");
DispatchKeyValue(ent, "effect", "0");
DispatchKeyValue(ent, "fadein", "1.5");
DispatchKeyValue(ent, "fadeout", "0.5");
DispatchKeyValue(ent, "fxtime", "0.25");
DispatchKeyValue(ent, "holdtime", "5.0");
DispatchKeyValue(ent, "message", "В нашей группе конкурс!\nА ну быстро метнулся и поставил лайк!\nСсылка на группу: http://vk.com/...");
DispatchKeyValue(ent, "spawnflags", "0");
DispatchKeyValue(ent, "x", "0.25");
DispatchKeyValue(ent, "y", "0.3");
DispatchSpawn(ent);
SetVariantString("!activator");
AcceptEntityInput(ent, "display", client);
AcceptEntityInput(ent, "Kill");
return Plugin_Handled;
}
return Plugin_Continue;
}
Ой все.А если мы создаем энтити, разве ее потом не нужно удалять?
Сделай вот так:Хз. Я бы наверное реализовал так:
PHP:#include <sourcemod> #include <sdktools> #pragma semicolon 1 #pragma newdecls required public void OnClientPutInServer(int client) { CreateTimer(5.0, TimerWelcome, client, TIMER_FLAG_NO_MAPCHANGE); } public Action TimerWelcome(Handle timer, int client) { int ent = CreateEntityByName("game_text"); DispatchKeyValue(ent, "channel", "1"); DispatchKeyValue(ent, "color", "255 255 255"); DispatchKeyValue(ent, "color2", "0 0 0"); DispatchKeyValue(ent, "effect", "0"); DispatchKeyValue(ent, "fadein", "1.5"); DispatchKeyValue(ent, "fadeout", "0.5"); DispatchKeyValue(ent, "fxtime", "0.25"); DispatchKeyValue(ent, "holdtime", "5.0"); DispatchKeyValue(ent, "message", "В нашей группе конкурс!\nА ну быстро метнулся и поставил лайк !!!\nСсылка на группу: http://vk.com/..."); DispatchKeyValue(ent, "spawnflags", "0"); DispatchKeyValue(ent, "x", "0.25"); DispatchKeyValue(ent, "y", "0.3"); DispatchSpawn(ent); SetVariantString("!activator"); AcceptEntityInput(ent, "display", client); AcceptEntityInput(ent, "Kill"); return Plugin_Handled; }
Ой все.
Поправил #2.
Читаем мою подпись.
SetVariantString("OnUser1 !self:kill::5.1:1");
AcceptEntityInput(ent, "AddOutput");
AcceptEntityInput(ent, "FireUser1");
Да мне уже пофиг, мне и так сойдет :biggrin:Сделай вот так:
p.s. Не гори на меня :biggrin:C-подобный:SetVariantString("OnUser1 !self:kill::5.1:1"); AcceptEntityInput(ent, "AddOutput"); AcceptEntityInput(ent, "FireUser1");
Спасибо,все работает,ждем цветов)0Хз. Я бы наверное реализовал так:
PHP:#include <sourcemod> #include <sdktools> #pragma semicolon 1 #pragma newdecls required public void OnClientPutInServer(int client) { CreateTimer(5.0, TimerWelcome, client, TIMER_FLAG_NO_MAPCHANGE); } public Action TimerWelcome(Handle timer, int client) { int ent = CreateEntityByName("game_text"); if(IsClientInGame(client)) { DispatchKeyValue(ent, "channel", "1"); DispatchKeyValue(ent, "color", "255 255 255"); DispatchKeyValue(ent, "color2", "0 0 0"); DispatchKeyValue(ent, "effect", "0"); DispatchKeyValue(ent, "fadein", "1.5"); DispatchKeyValue(ent, "fadeout", "0.5"); DispatchKeyValue(ent, "fxtime", "0.25"); DispatchKeyValue(ent, "holdtime", "5.0"); DispatchKeyValue(ent, "message", "В нашей группе конкурс!\nА ну быстро метнулся и поставил лайк!\nСсылка на группу: http://vk.com/..."); DispatchKeyValue(ent, "spawnflags", "0"); DispatchKeyValue(ent, "x", "0.25"); DispatchKeyValue(ent, "y", "0.3"); DispatchSpawn(ent); SetVariantString("!activator"); AcceptEntityInput(ent, "display", client); AcceptEntityInput(ent, "Kill"); return Plugin_Handled; } return Plugin_Continue; }
Ой все.
Поправил #2.
Читаем мою подпись.
ОффтопУже 100500 раз забывал про проверку "есть ли игрок на сервере или нет"...
ОффтопДобавь в рекламу худ с выбором цветов
"Реклама"
{
"time" "5.0" // таймер рекламы
"map" // названия карт если невписать оно будет выводить название файла карты
{
"de_dust2" "Dust II"
"de_dust" "Dust"
"de_sugarcane" "Sugarcane"
}
"text"
{
"1" // вписать можно любое, главное, чтобы не повторялось
{
"S" " {PURPLE}Адрес нашого сервера {GREEN}{IP}{BLUE}:{GREEN}{PORT} - {PL}/30\nтест\nтест\nтест"
"HM"
{
"1" // номер канала от 1 до 6
{
"color" "255 0 0 255"
"color2" "245 251 40 255"
"effect" "2"
"fadein" "0.1"
"fadeout" "0.1"
"fxtime" "0.1"
"holdtime" "5.0"
"message" "КуКу :)\nАдрес нашого сервера {IP}"
"x", "0.25"
"y", "0.3"
}
"2"
{
"color" "0 0 255 255"
"color2" "0 0 0 0"
"effect" "0"
"fadein" "0.1"
"fadeout" "0.1"
"fxtime" "0.1"
"holdtime" "5.0"
"message" "КуКу 2 :)"
"x", "0.25"
"y", "0.8"
}
}
}
"2"
{
"V" "Текущее время {TIME}\nтик рейт сервера {TIC}"
}
}
}
ОффтопОффтопЯ уже работаю над этим
PHP:"Реклама" { "time" "5.0" // таймер рекламы "map" // названия карт если невписать оно будет выводить название файла карты { "de_dust2" "Dust II" "de_dust" "Dust" "de_sugarcane" "Sugarcane" } "text" { "1" // вписать можно любое, главное, чтобы не повторялось { "S" " {PURPLE}Адрес нашого сервера {GREEN}{IP}{BLUE}:{GREEN}{PORT} - {PL}/30\nтест\nтест\nтест" "HM" { "1" // номер канала от 1 до 6 { "color" "255 0 0 255" "color2" "245 251 40 255" "effect" "2" "fadein" "0.1" "fadeout" "0.1" "fxtime" "0.1" "holdtime" "5.0" "message" "КуКу :)\nАдрес нашого сервера {IP}" "x", "0.25" "y", "0.3" } "2" { "color" "0 0 255 255" "color2" "0 0 0 0" "effect" "0" "fadein" "0.1" "fadeout" "0.1" "fxtime" "0.1" "holdtime" "5.0" "message" "КуКу 2 :)" "x", "0.25" "y", "0.8" } } } "2" { "V" "Текущее время {TIME}\nтик рейт сервера {TIC}" } } }
Не сколько строк только \n цветов не знаю) вроде должны добавить)Возможно сделать вывод сообщения в несколько строк или рядов разного цвета? :ab:
Ну к примеру я сделал так...Возможно сделать вывод сообщения в несколько строк или рядов разного цвета? :ab:
#include <sourcemod>
#pragma semicolon 1
#pragma newdecls required
public void OnClientPutInServer(int client)
{
if(IsClientInGame(client))
{
CreateTimer(10.0, TimerWelcome, client, TIMER_FLAG_NO_MAPCHANGE);
}
}
public Action TimerWelcome(Handle timer, int client)
{
if(IsClientInGame(client))
{
SetHudTextParams(0.40, 0.80, 5.0, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255), 255, 0, 0.25, 1.0, 1.0);
ShowHudText(client, -1, "Добро пожаловать, %N", client);
// Создаем новый худ и меняем координаты(сделал чуть ниже)
SetHudTextParams(0.40, 0.83, 5.0, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255), 255, 0, 0.25, 1.0, 1.0);
ShowHudText(client, -1, "Вы играете на проекте 'HLMod.ru'");
CreateTimer(10.0, TimerWelcome2, client, TIMER_FLAG_NO_MAPCHANGE);
}
}
public Action TimerWelcome2(Handle timer, int client)
{
if(IsClientInGame(client))
{
Handle cvar = FindConVar("hostip");
int hostip = GetConVarInt(cvar);
Handle hostport = FindConVar("hostport");
char ServerIp[32];
char ServerPort[1024];
FormatEx(ServerIp, 32, "%u.%u.%u.%u", hostip >>> 24 & 255, hostip >>> 16 & 255, hostip >>> 8 & 255, hostip & 255);
GetConVarString(hostport, ServerPort, 1024);
SetHudTextParams(0.40, 0.80, 5.0, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255), 255, 0, 0.25, 1.0, 1.0);
ShowHudText(client, -1, "Наш ip: %s:%s", ServerIp, ServerPort);
CreateTimer(10.0, TimerWelcome3, client, TIMER_FLAG_NO_MAPCHANGE);
}
}
public Action TimerWelcome3(Handle timer, int client)
{
if(IsClientInGame(client))
{
SetHudTextParams(0.40, 0.80, 5.0, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255), 255, 0, 0.25, 1.0, 1.0);
ShowHudText(client, -1, "Контакты гл.администратора...\n\nВконтакте: vk.com/...");
}
}
Неплохой вариант, как положить сервер, когда нет защиты от перезаходов. Таймеры достаточно "большие", их необходимо убивать. Не говоря уже о том, что может выдать никнейм предыдущего игрока, а потом уже свой.я сделал так
Отличный вариант, как положить сервер, когда нет защиты от перезаходов. Таймеры достаточно большие, их необходимо убивать. Не говоря уже о том, что может выдать никнейм предыдущего игрока, а потом уже свой.
#include <sourcemod>
#pragma semicolon 1
#pragma newdecls required
Handle TW[MAXPLAYERS+1];
Handle TW2[MAXPLAYERS+1];
public void OnClientPutInServer(int client)
{
if(IsClientInGame(client))
{
CreateTimer(6.0, TimerWelcome, client, TIMER_FLAG_NO_MAPCHANGE);
}
}
public void OnClientDisconnect(int client)
{
if((TW[client]) != null)
{
KillTimer(TW[client]);
TW[client] = null;
}
if(TW2[client] != null)
{
KillTimer(TW2[client]);
TW2[client] = null;
}
}
public Action TimerWelcome(Handle timer, int client)
{
if(IsClientInGame(client))
{
SetHudTextParams(0.40, 0.80, 5.0, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255), 255, 0, 0.25, 1.0, 1.0);
ShowHudText(client, -1, "Добро пожаловать, %N", client);
SetHudTextParams(0.40, 0.83, 5.0, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255), 255, 0, 0.25, 1.0, 1.0);
ShowHudText(client, -1, "Вы играете на проекте 'HLMod.ru'");
TW[client] = CreateTimer(6.0, TimerWelcome2, client, TIMER_FLAG_NO_MAPCHANGE);
}
}
public Action TimerWelcome2(Handle timer, int client)
{
TW[client] = null;
if(IsClientInGame(client))
{
Handle cvar = FindConVar("hostip");
int hostip = GetConVarInt(cvar);
Handle hostport = FindConVar("hostport");
char ServerIp[32];
char ServerPort[1024];
FormatEx(ServerIp, 32, "%u.%u.%u.%u", hostip >>> 24 & 255, hostip >>> 16 & 255, hostip >>> 8 & 255, hostip & 255);
GetConVarString(hostport, ServerPort, 1024);
SetHudTextParams(0.40, 0.80, 5.0, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255), 255, 0, 0.25, 1.0, 1.0);
ShowHudText(client, -1, "Наш ip: %s:%s", ServerIp, ServerPort);
TW2[client] = CreateTimer(6.0, TimerWelcome3, client, TIMER_FLAG_NO_MAPCHANGE);
}
}
public Action TimerWelcome3(Handle timer, int client)
{
TW2[client] = null;
if(IsClientInGame(client))
{
SetHudTextParams(0.40, 0.80, 5.0, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255), 255, 0, 0.25, 1.0, 1.0);
ShowHudText(client, -1, "Контакты гл.администратора...\n\nВконтакте: vk.com/...");
}
}
Старый при этом никуда не девается, ведь у него есть несколько секунд для исполнения. А игрок может зайти вслед за вышедшем и за пару секунд. Или, пример ещё проще: сообщения нет, а игрок перезашёл - получит их уже два.когда новый игрок заходит на сервере, создается новый таймер
А тут кто делать будет?CreateTimer(6.0, TimerWelcome, client, TIMER_FLAG_NO_MAPCHANGE);
Ну у него же в подписи все написано.:biggrin:Неплохой вариант, как положить сервер, когда нет защиты от перезаходов. Таймеры достаточно "большие", их необходимо убивать. Не говоря уже о том, что может выдать никнейм предыдущего игрока, а потом уже свой.
Знаю. Оптимизация - его дело, но он предлагает хороший вариант "избавления от конкурентов", достаточно опасный. Это нельзя не упомянуть.у него же в подписи все написано