Players se matam na cadeia e spawna fora da cadeia. - fear - 23/07/2021
bom dia.
como faço pra corrigir esse bug??
comando de cadeia:
Código PHP: CMD:cadeia(playerid, params[]) { if(ChecarPermissoes(playerid) || AdmServer(playerid, 1)) return 1;
new id, time, motive[55 + (MAX_PLAYER_NAME * 2) + 6 + 19 + 1];
if(sscanf(params, "uis[19]", id, time, motive)) return SendClientMessage(playerid, COLOR_YELLOW, "<!> {FFFFFF}Use: /Cadeia <id> <tempo em minutos> <motivo>");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_YELLOW, "<!> {FFFFFF}Esse jogador não está conectado!");
if(ContaPlayer[id][Level] > 0) return SendClientMessage(playerid, COLOR_YELLOW, "<!> {FFFFFF}Você não pode dar cadeia em administradores!");
if(IsPlayerInChainAdmin(id)) return SendClientMessage(playerid, COLOR_YELLOW, "<!> {FFFFFF}Esse jogador já está na cadeia admin! Para tira-lo Use: /Rcadeia <id> <motivo>");
PutPlayerInChainAdmin(id, time * 60);
format(motive, sizeof(motive), "Admin %s prendeu %s na CADEIA ADMIN por %d minuto%s. Motivo: %s.", Nome(playerid), Nome(id), time, (time == 1) ? ("") : ("s"), motive); MsgToAll(0xFF444499, motive); return 1; }
Talvez setar a vida infinita pra quem esta preso não se matar... só não sei como fazer
RE: Players se matam na cadeia e spawna fora da cadeia. - xbruno1000x - 23/07/2021
Crie uma bool: Preso[MAX_PLAYERS] e assinale como verdadeira ao prender alguém. Depois vá na OnPlayerSpawn e crie uma if(Preso[playerid] == true) SetPlayerPos(playerid, X,Y,Z);//Pos da cadeia aqui
RE: Players se matam na cadeia e spawna fora da cadeia. - fear - 23/07/2021
(23/07/2021 12:13)xbruno1000x Escreveu: Crie uma bool: Preso[MAX_PLAYERS] e assinale como verdadeira ao prender alguém. Depois vá na OnPlayerSpawn e crie uma if(Preso[playerid] == true) SetPlayerPos(playerid, X,Y,Z);//Pos da cadeia aqui
Não consigo fazer isso. mas acho que ja tem..
Código PHP: enum E_PLAYER_CHAIN_ADMIN { bool:E_PLAYER_IN_CHAIN, E_PLAYER_CHAIN_TIME }
Código PHP: static PutPlayerInChainAdmin(playerid, time) { time = gettime() + time;//(60 * time);
playerChainAdmin[playerid][E_PLAYER_IN_CHAIN] = true; playerChainAdmin[playerid][E_PLAYER_CHAIN_TIME] = time;
SetPlayerWantedLevel(playerid, 0);
if(IsPlayerCuffed(playerid)) UnshacklePlayer(playerid, REASON_NONE);
if(IsPlayerArrasted(playerid)) ChangePlayerArrestedState(playerid, GetPlayerArrastedMe(playerid), REASON_ADMIN);
if(IsPlayerApproached(playerid)) ChangePlayerApproachedState(playerid, GetPlayerApproachedMe(playerid), REASON_ADMIN);
TogglePlayerControllable(playerid, true);
SetPlayerTeam(playerid, TEAM_JAIL);
SetPlayerVirtualWorld(playerid, 6666); SetPlayerInterior(playerid, 6); SetPlayerPos(playerid, prisionPosition[0], prisionPosition[1], prisionPosition[2]); SetPlayerFacingAngle(playerid, prisionPosition[3]);
SetCameraBehindPlayer(playerid);
SetTimerEx("ShowPlayerPrisionTime", 900, false, "iii", playerid, time, 1);
}
o problema e quando se mata dentro e spawna fora talvez com o codigo tu consiga me dar a solução.. tentei do jeito que você falou acima e da muito erro.
RE: Players se matam na cadeia e spawna fora da cadeia. - Lightz/Conta nova - 23/07/2021
(23/07/2021 12:31)fear Escreveu: (23/07/2021 12:13)xbruno1000x Escreveu: Crie uma bool: Preso[MAX_PLAYERS] e assinale como verdadeira ao prender alguém. Depois vá na OnPlayerSpawn e crie uma if(Preso[playerid] == true) SetPlayerPos(playerid, X,Y,Z);//Pos da cadeia aqui
Não consigo fazer isso. mas acho que ja tem..
Código PHP: enum E_PLAYER_CHAIN_ADMIN { bool:E_PLAYER_IN_CHAIN, E_PLAYER_CHAIN_TIME }
Código PHP: static PutPlayerInChainAdmin(playerid, time) { time = gettime() + time;//(60 * time);
playerChainAdmin[playerid][E_PLAYER_IN_CHAIN] = true; playerChainAdmin[playerid][E_PLAYER_CHAIN_TIME] = time;
SetPlayerWantedLevel(playerid, 0);
if(IsPlayerCuffed(playerid)) UnshacklePlayer(playerid, REASON_NONE);
if(IsPlayerArrasted(playerid)) ChangePlayerArrestedState(playerid, GetPlayerArrastedMe(playerid), REASON_ADMIN);
if(IsPlayerApproached(playerid)) ChangePlayerApproachedState(playerid, GetPlayerApproachedMe(playerid), REASON_ADMIN);
TogglePlayerControllable(playerid, true);
SetPlayerTeam(playerid, TEAM_JAIL);
SetPlayerVirtualWorld(playerid, 6666); SetPlayerInterior(playerid, 6); SetPlayerPos(playerid, prisionPosition[0], prisionPosition[1], prisionPosition[2]); SetPlayerFacingAngle(playerid, prisionPosition[3]);
SetCameraBehindPlayer(playerid);
SetTimerEx("ShowPlayerPrisionTime", 900, false, "iii", playerid, time, 1);
}
o problema e quando se mata dentro e spawna fora talvez com o codigo tu consiga me dar a solução.. tentei do jeito que você falou acima e da muito erro. Deixa eu ver se entendi, você quer que quem tá preso fique com vida infinita para não morrer? Se for isso posso te ajudar.
RE: Players se matam na cadeia e spawna fora da cadeia. - zBL4CK - 23/07/2021
Acredito que o que ele quer dizer é que os players que estão presos quando morrem la na cadeia alem de spawnar dentro da cadeia spawna fora como um player normal.
se for isso faça uma verificação em OnPlayerDeath se o player ta com a var de preso para true ou seja
Código PHP: public OnPlayerDeath(playerid, killerid, reason) { if(playerpreso[playerid] == true) { SetPlayerPos(playerid, 0.0, 0.0, 0.0); // coloque aki a pos onde vc deseja que o player dê spawn apos a morte na prisao } return 1; }
RE: Players se matam na cadeia e spawna fora da cadeia. - xbruno1000x - 23/07/2021
Com o código completo fica mais prático.
Tente assim:
Código: static PutPlayerInChainAdmin(playerid, time)
{
time = gettime() + time;//(60 * time);
playerChainAdmin[playerid][E_PLAYER_IN_CHAIN] = true;
playerChainAdmin[playerid][E_PLAYER_CHAIN_TIME] = time;
SetPlayerWantedLevel(playerid, 0);
if(IsPlayerCuffed(playerid))
UnshacklePlayer(playerid, REASON_NONE);
if(IsPlayerArrasted(playerid))
ChangePlayerArrestedState(playerid, GetPlayerArrastedMe(playerid), REASON_ADMIN);
if(IsPlayerApproached(playerid))
ChangePlayerApproachedState(playerid, GetPlayerApproachedMe(playerid), REASON_ADMIN);
TogglePlayerControllable(playerid, true);
SetPlayerTeam(playerid, TEAM_JAIL);
SetPlayerVirtualWorld(playerid, 6666);
SetPlayerInterior(playerid, 6);
SetPlayerPos(playerid, prisionPosition[0], prisionPosition[1], prisionPosition[2]);
SetPlayerFacingAngle(playerid, prisionPosition[3]);
SetPlayerHealth(playerid, 99999.0);
SetCameraBehindPlayer(playerid);
SetTimerEx("ShowPlayerPrisionTime", 900, false, "iii", playerid, time, 1);
}
Dessa forma a vida ficará infinita na cadeia, não se esqueça de setar para 100 quando o player sair.
RE: Players se matam na cadeia e spawna fora da cadeia. - fear - 23/07/2021
(23/07/2021 14:22)xbruno1000x Escreveu: Com o código completo fica mais prático.
Tente assim:
Código: static PutPlayerInChainAdmin(playerid, time)
{
time = gettime() + time;//(60 * time);
playerChainAdmin[playerid][E_PLAYER_IN_CHAIN] = true;
playerChainAdmin[playerid][E_PLAYER_CHAIN_TIME] = time;
SetPlayerWantedLevel(playerid, 0);
if(IsPlayerCuffed(playerid))
UnshacklePlayer(playerid, REASON_NONE);
if(IsPlayerArrasted(playerid))
ChangePlayerArrestedState(playerid, GetPlayerArrastedMe(playerid), REASON_ADMIN);
if(IsPlayerApproached(playerid))
ChangePlayerApproachedState(playerid, GetPlayerApproachedMe(playerid), REASON_ADMIN);
TogglePlayerControllable(playerid, true);
SetPlayerTeam(playerid, TEAM_JAIL);
SetPlayerVirtualWorld(playerid, 6666);
SetPlayerInterior(playerid, 6);
SetPlayerPos(playerid, prisionPosition[0], prisionPosition[1], prisionPosition[2]);
SetPlayerFacingAngle(playerid, prisionPosition[3]);
SetPlayerHealth(playerid, 99999.0);
SetCameraBehindPlayer(playerid);
SetTimerEx("ShowPlayerPrisionTime", 900, false, "iii", playerid, time, 1);
}
Dessa forma a vida ficará infinita na cadeia, não se esqueça de setar para 100 quando o player sair.
@EDIT! resolvido. Obrigado.
|