Просмотр полной версии : [Вопрос] По смерти игрока
После смерти игрок не сразу спавнится, а умирает еще раз, а только потом спавнится. Как это исправить?
OnPlayerDeath/OnPlayerSpawn покажите
OnPlayerDeath/OnPlayerSpawn покажите
public OnPlayerDeath(playerid, killerid, reason)
{
if(PlayerInfo[killerid][pLogin] == false) SCM(playerid, 0xFF6347AA, "Необходимо залогинется!"),KickWithMessage(playerid);
if(reason == 38) kod[playerid] = 3,AntiCheatNadpis(playerid);
if(PlayerInfo[playerid][pZone] != 6 && PlayerInfo[playerid][pTeam] == 0) SetPlayerHealthAC(killerid, 100);
if(PlayerInfo[playerid][pZone] == 6) SetPlayerHealthAC(killerid, 30);
new string[10];
PlayerInfo[killerid][pKill]++;
PlayerInfo[playerid][pSmert]++;
format(string, sizeof(string), "Убил %s", PN(killerid)), SetPlayerChatBubble(playerid, string, -1, 30.0, 3000);
SendDeathMessage(killerid, playerid, reason);
SetPlayerScore(killerid, PlayerInfo[killerid][pKill]);
UpdateStats(killerid);
ResetPlayerWeapons(playerid);
GameTextForPlayer(killerid, "~r~+1 Kill", 1000, 3);
OnPlayerSpawn(playerid);
return true;
}
- - - Добавлено - - -
public OnPlayerSpawn(playerid)
{
if(PlayerInfo[playerid][pLogin] == false) SCM(playerid, 0xFF6347AA, "Необходимо залогинется"),KickWithMessage(playerid);
ResetPlayerWeapons(playerid);
SetPlayerSkin(playerid,PlayerInfo[playerid][pSkin]);
if(PlayerInfo[playerid][pZone] == 6) SetPlayerHealthAC(playerid,30);
else SetPlayerHealthAC(playerid,100);
SetPlayerSpawn(playerid);
return true;
}
- - - Добавлено - - -
SetPlayerSpawn(playerid); Нужен?
Вот тут (и далее в массивах с killerid) будет выход за пределы массива, когда убийцы не будет существовать.
И OnPlayerSpawn не нужен в OnPlayerDeath. Ибо первый сам вызывается после обработки всего кода в OnPlayerDeath
public OnPlayerDeath(playerid, killerid, reason)
{
if(reason == 38) kod[playerid] = 3, AntiCheatNadpis(playerid);
new string[10];
ResetPlayerWeapons(playerid);
PlayerInfo[playerid][pSmert]++;
SendDeathMessage(killerid, playerid, reason);
if(killerid != INVALID_PLAYER_ID)
{
GameTextForPlayer(killerid, "~r~+1 Kill", 1000, 3);
UpdateStats(killerid);
SetPlayerScore(killerid, PlayerInfo[killerid][pKill]);
format(string, sizeof(string), "Убил %s", PN(killerid)), SetPlayerChatBubble(playerid, string, -1, 30.0, 3000);
PlayerInfo[killerid][pKill]++;
if(PlayerInfo[playerid][pZone] == 6) SetPlayerHealthAC(killerid, 30);
if(PlayerInfo[playerid][pZone] != 6 && PlayerInfo[playerid][pTeam] == 0) SetPlayerHealthAC(killerid, 100);
if(PlayerInfo[killerid][pLogin] == false) SCM(playerid, 0xFF6347AA, "Необходимо залогинется!"),KickWithMessage(playerid);
}
return true;
}
Код сами расположите в той последовательности, которая вам нужна. Я лишь показал структуру, по которой стоит формировать OnPlayerDeath
Вот тут (и далее в массивах с killerid) будет выход за пределы массива, когда убийцы не будет существовать.
И OnPlayerSpawn не нужен в OnPlayerDeath. Ибо первый сам вызывается после обработки всего кода в OnPlayerDeath
public OnPlayerDeath(playerid, killerid, reason)
{
if(reason == 38) kod[playerid] = 3, AntiCheatNadpis(playerid);
new string[10];
ResetPlayerWeapons(playerid);
PlayerInfo[playerid][pSmert]++;
SendDeathMessage(killerid, playerid, reason);
if(killerid != INVALID_PLAYER_ID)
{
GameTextForPlayer(killerid, "~r~+1 Kill", 1000, 3);
UpdateStats(killerid);
SetPlayerScore(killerid, PlayerInfo[killerid][pKill]);
format(string, sizeof(string), "Убил %s", PN(killerid)), SetPlayerChatBubble(playerid, string, -1, 30.0, 3000);
PlayerInfo[killerid][pKill]++;
if(PlayerInfo[playerid][pZone] == 6) SetPlayerHealthAC(killerid, 30);
if(PlayerInfo[playerid][pZone] != 6 && PlayerInfo[playerid][pTeam] == 0) SetPlayerHealthAC(killerid, 100);
if(PlayerInfo[killerid][pLogin] == false) SCM(playerid, 0xFF6347AA, "Необходимо залогинется!"),KickWithMessage(playerid);
}
return true;
}
Код сами расположите в той последовательности, которая вам нужна. Я лишь показал структуру, по которой стоит формировать OnPlayerDeath
А что значит "выход за пределы массива " можете скинуть урок, где об этом написано?
KakbeYura
09.06.2014, 16:12
А что значит "выход за пределы массива " можете скинуть урок, где об этом написано?
Это аксиома, зачем ещё урок?
У меня есть палка на метр, а я схватил её на втором метре (в воздухе) и хочу поднять. Она поднимется?
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot