Grey83
не пишу плагины с весны 2022
- Сообщения
- 8,805
- Реакции
- 5,254
@Yurka_Bear, SM какой версии, 1.5?
1.6.3@Yurka_Bear, SM какой версии, 1.5?
#pragma semicolon 1
#define BONUS_TAG "hlmod.net" // Тег в нике, за который выдаётся бонусные здоровье и броня
#define BONUS_HP 110 // Количество здоровья при спавне игрока, у которого присутствует тег в нике
#define BONUS_AP 110 // Количество брони при спавне игрока, у которого присутствует тег в нике
new String:sBuffer[MAX_NAME_LENGTH];
public OnPluginStart()
{
HookEvent("player_spawn", Event_Spawn);
}
public Event_Spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(client && IsClientInGame(client) && !IsFakeClient(client) && GetClientTeam(client) > 1
&& GetClientName(client, sBuffer, sizeof(sBuffer)) && StrContains(sBuffer, BONUS_TAG, true) != -1)
{
SetEntityHealth(client, BONUS_HP);
SetEntProp(client, Prop_Send, "m_ArmorValue", BONUS_AP);
}
}
#pragma semicolon 1
#pragma newdecls required
static const char
BONUS_TAG[] = "hlmod.net"; // Тег в нике, за который выдаётся бонусные здоровье и броня
static const int
BONUS_HP = 110, // Количество здоровья при спавне игрока, у которого присутствует тег в нике
BONUS_AP = 110; // Количество брони при спавне игрока, у которого присутствует тег в нике
char
sBuffer[MAX_NAME_LENGTH];
public void OnPluginStart()
{
HookEvent("player_spawn", Event_Spawn);
}
public void Event_Spawn(Event event, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(event.GetInt("userid"));
if(client && IsClientInGame(client) && !IsFakeClient(client) && GetClientTeam(client) > 1
&& GetClientName(client, sBuffer, sizeof(sBuffer)) && StrContains(sBuffer, BONUS_TAG, true) != -1)
{
SetEntityHealth(client, BONUS_HP);
SetEntProp(client, Prop_Send, "m_ArmorValue", BONUS_AP);
}
}
Хп добавляет, только вот модуль sm_spawn_protection его перебивает, и обнуляет спустя секундку( столько стоит у меня защита при спавне) попробовал вообще убрать защиту, перестало хп давать вообще(. И броня кстати не работает, не выдает. Только 100Ну и на новом синтаксисе:SM1.6.3:#pragma semicolon 1 #define BONUS_TAG "hlmod.net" // Тег в нике, за который выдаётся бонусные здоровье и броня #define BONUS_HP 110 // Количество здоровья при спавне игрока, у которого присутствует тег в нике #define BONUS_AP 110 // Количество брони при спавне игрока, у которого присутствует тег в нике new String:sBuffer[MAX_NAME_LENGTH]; public OnPluginStart() { HookEvent("player_spawn", Event_Spawn); } public Event_Spawn(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event, "userid")); if(client && IsClientInGame(client) && !IsFakeClient(client) && GetClientTeam(client) > 1 && GetClientName(client, sBuffer, sizeof(sBuffer)) && StrContains(sBuffer, BONUS_TAG, true) != -1) { SetEntProp(client, Prop_Send, "m_iHealth", BONUS_HP); SetEntProp(client, Prop_Send, "m_iArmor", BONUS_AP); } }
SM1.8+:#pragma semicolon 1 #pragma newdecls required static const char BONUS_TAG[] = "hlmod.net"; // Тег в нике, за который выдаётся бонусные здоровье и броня static const int BONUS_HP = 110, // Количество здоровья при спавне игрока, у которого присутствует тег в нике BONUS_AP = 110; // Количество брони при спавне игрока, у которого присутствует тег в нике char sBuffer[MAX_NAME_LENGTH]; public void OnPluginStart() { HookEvent("player_spawn", Event_Spawn); } public void Event_Spawn(Event event, const char[] name, bool dontBroadcast) { int client = GetClientOfUserId(event.GetInt("userid")); if(client && IsClientInGame(client) && !IsFakeClient(client) && GetClientTeam(client) > 1 && GetClientName(client, sBuffer, sizeof(sBuffer)) && StrContains(sBuffer, BONUS_TAG, true) != -1) { SetEntProp(client, Prop_Send, "m_iHealth", BONUS_HP); SetEntProp(client, Prop_Send, "m_iArmor", BONUS_AP); } }
С хп разобрался, вот брони так и нет(Ну и на новом синтаксисе:SM1.6.3:#pragma semicolon 1 #define BONUS_TAG "hlmod.net" // Тег в нике, за который выдаётся бонусные здоровье и броня #define BONUS_HP 110 // Количество здоровья при спавне игрока, у которого присутствует тег в нике #define BONUS_AP 110 // Количество брони при спавне игрока, у которого присутствует тег в нике new String:sBuffer[MAX_NAME_LENGTH]; public OnPluginStart() { HookEvent("player_spawn", Event_Spawn); } public Event_Spawn(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event, "userid")); if(client && IsClientInGame(client) && !IsFakeClient(client) && GetClientTeam(client) > 1 && GetClientName(client, sBuffer, sizeof(sBuffer)) && StrContains(sBuffer, BONUS_TAG, true) != -1) { SetEntProp(client, Prop_Send, "m_iHealth", BONUS_HP); SetEntProp(client, Prop_Send, "m_iArmor", BONUS_AP); } }
SM1.8+:#pragma semicolon 1 #pragma newdecls required static const char BONUS_TAG[] = "hlmod.net"; // Тег в нике, за который выдаётся бонусные здоровье и броня static const int BONUS_HP = 110, // Количество здоровья при спавне игрока, у которого присутствует тег в нике BONUS_AP = 110; // Количество брони при спавне игрока, у которого присутствует тег в нике char sBuffer[MAX_NAME_LENGTH]; public void OnPluginStart() { HookEvent("player_spawn", Event_Spawn); } public void Event_Spawn(Event event, const char[] name, bool dontBroadcast) { int client = GetClientOfUserId(event.GetInt("userid")); if(client && IsClientInGame(client) && !IsFakeClient(client) && GetClientTeam(client) > 1 && GetClientName(client, sBuffer, sizeof(sBuffer)) && StrContains(sBuffer, BONUS_TAG, true) != -1) { SetEntProp(client, Prop_Send, "m_iHealth", BONUS_HP); SetEntProp(client, Prop_Send, "m_iArmor", BONUS_AP); } }
замениХп добавляет, только вот модуль sm_spawn_protection его перебивает, и обнуляет спустя секундку( столько стоит у меня защита при спавне) попробовал вообще убрать защиту, перестало хп давать вообще(. И броня кстати не работает, не выдает. Только 100
Сообщения автоматически склеены:
С хп разобрался, вот брони так и нет(
Спасибо большое). Теперь все работает.замени
SetEntProp(client, Prop_Send, "m_iArmor", BONUS_AP);
на
SetEntProp(client, Prop_Send, "m_ArmorValue", BONUS_AP);
Просто админки или именно флага?Всем добрый вечер, дайте пожалуйста рабочий код для проверки на наличие у игрока флага администратора
Лучше флага, но можно и админкиПросто админки или именно флага?
Изучай Проверка является ли игрок администратором.Лучше флага, но можно и админки
Видел это, не работает абсолютно.
А что, если я скажу обратное?Видел это, не работает абсолютно.
сейчас еще раз попробую тогда, мб я пропустил что-тоА что, если я скажу обратное?
Проверка на конкретный флаг Проверка является ли игрок администратором.
Проверка в целом, является ли игрок админом Проверка является ли игрок администратором.
Cпасибо, все работаетА что, если я скажу обратное?
Проверка на конкретный флаг Проверка является ли игрок администратором.
Проверка в целом, является ли игрок админом Проверка является ли игрок администратором.
ArrayList word = CreateArray(64);
char temp[3], abs[256];
for(int i = 0; i < strlen(sWord);)
{
temp[0] = sWord[i];
if(IsCharMB(sWord[i]))
{
temp[1] = sWord[i+1];
i+=IsCharMB(sWord[i]);
}
else i++;
word.PushString(temp);
}
word.Sort(Sort_Random, Sort_String);
for(int i = 0; i < word.Length; i++)
{
temp = NULL_STRING;
word.GetString(i, temp, sizeof(temp));
StrCat(abs, sizeof(abs), temp);
}
PrintToChatAll("%s", abs);
Рабочий вариант, уверен можно сделать лучшеПри разделении таких слов számítógép на символы, после чего преобразуя их в строки, учитывая что некоторые из символов многобайтовые, перемешиваю их - получаю у части символов потерю части кода символа, насколько я понял
На выходе:
Посмотреть вложение 112838
Причем эти вопросы только у букв которые находятся слева символов и всегда именно у них(m, g, p, t), возможно есть и другие буквы, но я проверяю только это слово
C-подобный:ArrayList word = CreateArray(64); char temp[3], abs[256]; for(int i = 0; i < strlen(sWord);) { temp[0] = sWord[i]; if(IsCharMB(sWord[i])) { temp[1] = sWord[i+1]; i+=IsCharMB(sWord[i]); } else i++; word.PushString(temp); } word.Sort(Sort_Random, Sort_String); for(int i = 0; i < word.Length; i++) { temp = NULL_STRING; word.GetString(i, temp, sizeof(temp)); StrCat(abs, sizeof(abs), temp); } PrintToChatAll("%s", abs);
void SortRandomString(char[] szText)
{
int iTextLen = strlen(szText);
int[] iTextSymbolPos = new int[iTextLen];
int iSymbols = 0;
char[] szTextSorted = new char[iTextLen];
for(int i = 0; i < iTextLen;)
{
iTextSymbolPos[iSymbols++] = i;
i += GetCharBytes(szText[i]);
}
SortIntegers(iTextSymbolPos, iSymbols, Sort_Random);
for(int i = 0, k = 0; i < iSymbols; i++)
{
int iBytes = GetCharBytes(szText[iTextSymbolPos[i]]);
for(int u = 0; u < iBytes; u++)
{
szTextSorted[k++] = szText[iTextSymbolPos[i] + u];
}
}
strcopy(szText, iTextLen + 1, szTextSorted);
}
public Action:GAP_TimerTell(Handle:timer)
{
TT = 0;
CT = 0;
for (new iClient = 1; i <= MaxClients; iClient++)
{
if (IsClientInGame(iClient) && IsPlayerAlive(iClient) && GetClientTeam(iClient) == 2)
{
TT++;
}
else
{
for (; iClient <= MaxClients; iClient++)
{
if (IsClientInGame(iClient) && IsPlayerAlive(iClient) && GetClientTeam(iClient) == 3)
{
CT++;
}
break;
}
}
}
if (CM_IsClientModUser(iClient))
{
char sMessage[MAX_HUD_MESSAGE_LENGTH*2];
CFormatHudText(sMessage, sizeof(sMessage), "{gold}T{pink}: {orange}%d {aqua}| {blue}CT: {fullblue}%d", TT, CT);
{
Handle hBuffer = StartMessageOne("HudMsg", iClient);
if (hBuffer)
{
BfWriteByte(hBuffer, 1); //channel
BfWriteFloat(hBuffer, -1.0); //x
BfWriteFloat(hBuffer, 0.80); //y
BfWriteByte(hBuffer, 255); //r
BfWriteByte(hBuffer, 0); //g
BfWriteByte(hBuffer, 0); //b
BfWriteByte(hBuffer, 255); //a
BfWriteByte(hBuffer, 0); //r
BfWriteByte(hBuffer, 255); //g
BfWriteByte(hBuffer, 0); //b
BfWriteByte(hBuffer, 255); //a
BfWriteByte(hBuffer, 0); //effect
BfWriteFloat(hBuffer, 0.0); //fadein
BfWriteFloat(hBuffer, 2.0); //fadeout
BfWriteFloat(hBuffer, 3.0); //holdtime
BfWriteFloat(hBuffer, 0.0); //fxtime
BfWriteString(hBuffer, sMessage);
EndMessage();
}
}
}
else
{
PrintHintTextToAll("T: %d | CT: %d", TT, CT);
}
return Plugin_Continue;
}
Что записать то?Всем добрый день, подскажите пожалуйста, как это правильно записать, не могу понять как правильно это сделать
Код:public Action:GAP_TimerTell(Handle:timer) { TT = 0; CT = 0; for (new iClient = 1; i <= MaxClients; iClient++) { if (IsClientInGame(iClient) && IsPlayerAlive(iClient) && GetClientTeam(iClient) == 2) { TT++; } else { for (; iClient <= MaxClients; iClient++) { if (IsClientInGame(iClient) && IsPlayerAlive(iClient) && GetClientTeam(iClient) == 3) { CT++; } break; } } } if (CM_IsClientModUser(iClient)) { char sMessage[MAX_HUD_MESSAGE_LENGTH*2]; CFormatHudText(sMessage, sizeof(sMessage), "{gold}T{pink}: {orange}%d {aqua}| {blue}CT: {fullblue}%d", TT, CT); { Handle hBuffer = StartMessageOne("HudMsg", iClient); if (hBuffer) { BfWriteByte(hBuffer, 1); //channel BfWriteFloat(hBuffer, -1.0); //x BfWriteFloat(hBuffer, 0.80); //y BfWriteByte(hBuffer, 255); //r BfWriteByte(hBuffer, 0); //g BfWriteByte(hBuffer, 0); //b BfWriteByte(hBuffer, 255); //a BfWriteByte(hBuffer, 0); //r BfWriteByte(hBuffer, 255); //g BfWriteByte(hBuffer, 0); //b BfWriteByte(hBuffer, 255); //a BfWriteByte(hBuffer, 0); //effect BfWriteFloat(hBuffer, 0.0); //fadein BfWriteFloat(hBuffer, 2.0); //fadeout BfWriteFloat(hBuffer, 3.0); //holdtime BfWriteFloat(hBuffer, 0.0); //fxtime BfWriteString(hBuffer, sMessage); EndMessage(); } } } else { PrintHintTextToAll("T: %d | CT: %d", TT, CT); } return Plugin_Continue; }
Ошибки забыл скинутьЧто записать то?
// D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\include\menus.inc(372) : warning 219: local variable "i" shadows a variable at a preceding level
// D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\include\halflife.inc(442) : warning 219: local variable "i" shadows a variable at a preceding level
// D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\include\clientmod/colors/morecolors.inc(254) : warning 219: local variable "i" shadows a variable at a preceding level
// D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\include\clientmod/colors/morecolors.inc(367) : warning 219: local variable "i" shadows a variable at a preceding level
// D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\include\clientmod/colors/colors.inc(399) : warning 219: local variable "i" shadows a variable at a preceding level
// D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\Team_Info.sp(52) : warning 219: local variable "iClient" shadows a variable at a preceding level
// D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\Team_Info.sp(52) : error 017: undefined symbol "i"
// D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\Team_Info.sp(52) : error 100: function prototypes do not match
// D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\Team_Info.sp(72) : warning 217: loose indentation
// D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\Team_Info.sp(72) : error 017: undefined symbol "iClient"
// D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\Team_Info.sp(77) : error 017: undefined symbol "iClient"
// D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\Team_Info.sp(114) : warning 217: loose indentation
//
// 4 Errors.
//
// Compilation Time: 0,52 sec
// ----------------------------------------
И каким образом понять где ошибки? Когда ошибки идут с фулл файла, а нам скидываешь вырезкуОшибки забыл скинуть
Ошибки:// D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\include\menus.inc(372) : warning 219: local variable "i" shadows a variable at a preceding level // D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\include\halflife.inc(442) : warning 219: local variable "i" shadows a variable at a preceding level // D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\include\clientmod/colors/morecolors.inc(254) : warning 219: local variable "i" shadows a variable at a preceding level // D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\include\clientmod/colors/morecolors.inc(367) : warning 219: local variable "i" shadows a variable at a preceding level // D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\include\clientmod/colors/colors.inc(399) : warning 219: local variable "i" shadows a variable at a preceding level // D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\Team_Info.sp(52) : warning 219: local variable "iClient" shadows a variable at a preceding level // D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\Team_Info.sp(52) : error 017: undefined symbol "i" // D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\Team_Info.sp(52) : error 100: function prototypes do not match // D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\Team_Info.sp(72) : warning 217: loose indentation // D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\Team_Info.sp(72) : error 017: undefined symbol "iClient" // D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\Team_Info.sp(77) : error 017: undefined symbol "iClient" // D:\Desktop\╩юьяшы ЄюЁ√\1.9 scripting\Team_Info.sp(114) : warning 217: loose indentation // // 4 Errors. // // Compilation Time: 0,52 sec // ----------------------------------------
Спасибо, сам справилсяИ каким образом понять где ошибки? Когда ошибки идут с фулл файла, а нам скидываешь вырезку