Продолжаю натыкаться на свои работы по всему интернету... В этот раз в теме представлена заготовка скрипта для кастомных сообщений о смерти. Красноречивее слов скажут скрины:
Вариант 1
Автор: OKStyle
Вариант 2
Автор: OKStyle
Чуть доработал, убрав код вида:
и устаревшие циклы.
P.S. Для русских сообщений нужен плагин Romanius'а или Криптодена для русских ников (на крэкнутом сервере не проверял).
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Вариант 1
PHP:
public OnFilterScriptInit()
{
ConnectNPC("Killer", "blank"); // в папке npcmodes должен лежать blank.amx (пустой файл бота)
return 1;
}
public OnFilterScriptExit()
{
new PlayerName[MAX_PLAYER_NAME];
for(new i = GetPlayerPoolSize(); i != -1; i--)
{
if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
GetPlayerName(i, PlayerName, sizeof(PlayerName));
if(!strcmp(PlayerName, "Killer", true)) Kick(i);
}
return 1;
}
public OnPlayerSpawn(playerid)
{
if(IsPlayerNPC(playerid))
{
new KillerName[MAX_PLAYER_NAME];
GetPlayerName(playerid, KillerName, sizeof(KillerName));
if(!strcmp(KillerName, "Killer", true)) SetPlayerColor(playerid, 0xFFFFFF00);
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid == INVALID_PLAYER_ID)
{
new KillerName[MAX_PLAYER_NAME];
for(new i = GetPlayerPoolSize(); i != -1; i--)
{
if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
GetPlayerName(i, KillerName, sizeof(KillerName));
if(!strcmp(KillerName, "Killer", true))
{
killerid = i;
break;
}
}
switch(reason)
{
case 49: SetPlayerName(killerid, "SbitMashinoy");
case 50: SetPlayerName(killerid, "RazrublenVintami");
case 51: SetPlayerName(killerid, "Vzorvalsa");
case 53: SetPlayerName(killerid, "Utonul");
case 54: SetPlayerName(killerid, "Razbilsa");
case 200: SetPlayerName(killerid, "Podkluchilsa");
case 201: SetPlayerName(killerid, "Otkluchilsa");
default: SetPlayerName(killerid, "Ue*alsa");
}
SendDeathMessage(playerid, killerid, reason);
SetPlayerName(killerid, "Killer");
}
else SendDeathMessage(killerid, playerid, reason);
return 1;
}
Вариант 2
PHP:
public OnFilterScriptInit()
{
ConnectNPC("SbitMashinoy", "blank");
ConnectNPC("RazrublenVintami", "blank");
ConnectNPC("Vzorvalsa", "blank");
ConnectNPC("Utonul", "blank");
ConnectNPC("Razbilsa", "blank");
ConnectNPC("Podkluchilsa", "blank");
ConnectNPC("Otkluchilsa", "blank");
ConnectNPC("Ue*alsa", "blank");
return 1;
}
public OnFilterScriptExit()
{
new PlayerName[MAX_PLAYER_NAME];
for(new i = GetPlayerPoolSize(); i != -1; i--)
{
if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
GetPlayerName(i, PlayerName, sizeof(PlayerName));
if(!strcmp(PlayerName, "SbitMashinoy", true)
|| !strcmp(PlayerName, "RazrublenVintami", true)
|| !strcmp(PlayerName, "Vzorvalsa", true)
|| !strcmp(PlayerName, "Utonul", true)
|| !strcmp(PlayerName, "Razbilsa", true)
|| !strcmp(PlayerName, "Podkluchilsa", true)
|| !strcmp(PlayerName, "Otkluchilsa", true)
|| !strcmp(PlayerName, "Ue*alsa", true)) Kick(i);
else continue;
}
return 1;
}
public OnPlayerSpawn(playerid)
{
if(IsPlayerNPC(playerid))
{
new KillerName[MAX_PLAYER_NAME];
GetPlayerName(playerid, KillerName, sizeof(KillerName));
if(!strcmp(PlayerName, "SbitMashinoy", true)
|| !strcmp(PlayerName, "RazrublenVintami", true)
|| !strcmp(PlayerName, "Vzorvalsa", true)
|| !strcmp(PlayerName, "Utonul", true)
|| !strcmp(PlayerName, "Razbilsa", true)
|| !strcmp(PlayerName, "Podkluchilsa", true)
|| !strcmp(PlayerName, "Otkluchilsa", true)
|| !strcmp(PlayerName, "Ue*alsa", true)) SetPlayerColor(playerid, 0xFFFFFF00);
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid == INVALID_PLAYER_ID)
{
new KillerName[MAX_PLAYER_NAME];
switch(reason)
{
case 49:
{
for(new i = GetPlayerPoolSize(); i != -1; i--)
{
if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
GetPlayerName(i, KillerName, sizeof(KillerName));
if(!strcmp(KillerName, "SbitMashinoy", true))
{
killerid = i;
break;
}
}
}
case 50:
{
for(new i = GetPlayerPoolSize(); i != -1; i--)
{
if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
GetPlayerName(i, KillerName, sizeof(KillerName));
if(!strcmp(KillerName, "RazrublenVintami", true))
{
killerid = i;
break;
}
}
}
case 51:
{
for(new i = GetPlayerPoolSize(); i != -1; i--)
{
if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
GetPlayerName(i, KillerName, sizeof(KillerName));
if(!strcmp(KillerName, "Vzorvalsa", true))
{
killerid = i;
break;
}
}
}
case 53:
{
for(new i = GetPlayerPoolSize(); i != -1; i--)
{
if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
GetPlayerName(i, KillerName, sizeof(KillerName));
if(!strcmp(KillerName, "Utonul", true))
{
killerid = i;
break;
}
}
}
case 54:
{
for(new i = GetPlayerPoolSize(); i != -1; i--)
{
if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
GetPlayerName(i, KillerName, sizeof(KillerName));
if(!strcmp(KillerName, "Razbilsa", true))
{
killerid = i;
break;
}
}
}
case 200:
{
for(new i = GetPlayerPoolSize(); i != -1; i--)
{
if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
GetPlayerName(i, KillerName, sizeof(KillerName));
if(!strcmp(KillerName, "Podkluchilsa", true))
{
killerid = i;
break;
}
}
case 201:
{
for(new i = GetPlayerPoolSize(); i != -1; i--)
{
if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
GetPlayerName(i, KillerName, sizeof(KillerName));
if(!strcmp(KillerName, "Otkluchilsa", true))
{
killerid = i;
break;
}
}
default:
{
for(new i = GetPlayerPoolSize(); i != -1; i--)
{
if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
GetPlayerName(i, KillerName, sizeof(KillerName));
if(!strcmp(KillerName, "Ue*alsa", true))
{
killerid = i;
break;
}
}
}
SendDeathMessage(playerid, killerid, reason);
}
else SendDeathMessage(killerid, playerid, reason);
return 1;
}
Чуть доработал, убрав код вида:
PHP:
if(strcmp(KillerName, "Ue*alsa", true) != 0) continue;
else if(strcmp(KillerName, "Ue*alsa", true) == 0)
P.S. Для русских сообщений нужен плагин Romanius'а или Криптодена для русских ников (на крэкнутом сервере не проверял).