[Tutorial] Criando Sistema de Team-Killer
#1

Bem hoje decidi fazer um sistema de team-killer, muito facil; Sistema simples mais bem util.

Primeiramente criaremos essas stock:

pawn Код:
static PlayerTeamFix[MAX_PLAYERS] = {NO_TEAM,...};
stock GetPlayerTeamFixGANG(playerid)
{
    return PlayerTeamFixGANG[playerid];
}


stock SetPlayerTeamGANG(playerid,team)
{
    PlayerTeamFix[playerid] = team;
    SetPlayerTeam(playerid,team);
}
• Explicaзгo:
Ele quer dizer que SetPlayerTeam para team-kill quando configurado para o mesmo time que um outro jogador (o que significa que nгo pode prejudicar as pessoas estabelecem na equipe mesmo que vocк). No entanto, hб um problema com ele onde ele аs vezes ainda permite team-kill.

pawn Код:
new
string[128],
plname[MAX_PLAYER_NAME],
Gang[MAX_PLAYERS]
;
String[128] - Irб definir o numero de caracters de uma menssagem.

plname[MAX_PLAYER_NAME] - Irб definir o numero maximo de caracters do nome do player.

Gang[MAX_PLAYERS] - Variavel usada para Verificara se os players sгo da mesma gang.

pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    if(Gang[killerid] == Gang[playerid]) {
        GetPlayerName(killerid, plname, MAX_PLAYER_NAME);
        format(string, sizeof(string), "(TEAM-KILLER): %s cometeu Team-Killer e perdeu -5 de score.", plname);
        SendClientMessageToAll(-1,string);
        SetPlayerScore(killerid, GetPlayerScore(killerid) -5);
        GameTextForPlayer(killerid,"~y~VOCE COMETEU TEAM-KILLER SEU ~w~EMO",5000,3);
    }
    return 1;
}
• if(Gang[killerid] == Gang[playerid]) - Isso й, caso o player fizer TK(Team-Kill) acontecerб as linhas abaixo.

• GetPlayerName(killerid, plname, MAX_PLAYER_NAME); - Aqui irб pegar o nome do player que fez o TK(Killerid) ou seja oque matou.

• format(string, sizeof(string), "(TEAM-KILLER): %s cometeu Team-Killer e perdeu -5 de score.", plname); - Isso irб formatar a menssagem, plname = serб exibido o nome do player.

• SendClientMessageToAll(-1,string); - Mandara uma a todos os players.

• SetPlayerScore(killerid, GetPlayerScore(killerid) -5); - O player que fez TK(Team-Kill) Perderб -5 de score.

• GameTextForPlayer(killerid,"~y~VOCE COMETEU TEAM-KILLER SEU ~w~EMO",5000,3); - Mandara uma menssagem na tela.

Bem й um simples sistema Dъvidas/Bugs/Erros? poste aqui e estarei a ajuda vocк.
Reply
#2

SetPlayerTeam
Reply
#3

Bem legal acho que vou usar aqui funfo diboa
Reply
#4

Comeзa a identar os cуdigos cara...
Reply
#5

Quote:
Originally Posted by Viniborn
Посмотреть сообщение
Comeзa a identar os cуdigos cara...
Pois й lek vo comeзar a identar sim muinta genta ja falou isso .
Reply
#6

Eu jб criei um sistema desse utilizando OPSP (OnPlayerShootPlayer), que й utilizada pra detectar quando um jogador atacar outro, daн se o jogador dar um atй um "murro" no player, o Clan perdia score.
Mas ficou bem legal tambйm
Reply
#7

Quote:
Originally Posted by iansinho
Посмотреть сообщение
Eu jб criei um sistema desse utilizando OPSP (OnPlayerShootPlayer), que й utilizada pra detectar quando um jogador atacar outro, daн se o jogador dar um atй um "murro" no player, o Clan perdia score.
Mas ficou bem legal tambйm
...
Reply
#8

Bem leegal ,,,
Reply
#9

Quote:
Originally Posted by Viniborn
Посмотреть сообщение
Comeзa a identar os cуdigos cara...
Vini, ele nгo indenta por que й control c, rs.

Muito melhor desta forma, poupa atй mais linhas.

pawn Код:
new string[128], plname[MAX_PLAYER_NAME], Gang[MAX_PLAYERS];

public OnPlayerDeath(playerid, killerid, reason)
{
    if(Gang[killerid] == Gang[playerid])
    {
        GetPlayerName(killerid, plname, MAX_PLAYER_NAME);
        format(string, sizeof(string), "(TEAM-KILLER): %s cometeu Team-Killer e perdeu -5 de score.", plname), SendClientMessageToAll(-1,string);
        SetPlayerScore(killerid, GetPlayerScore(killerid) -5);
        GameTextForPlayer(killerid,"~y~VOCE COMETEU TEAM-KILLER SEU ~w~EMO",5000,3);
    }
    return 1;
}

stock SetPlayerTeamGANG(playerid,team)
{
    return PlayerTeamFix[playerid] = team, SetPlayerTeam(playerid,team);
}
Nгo sabe indentar ? Search, que o Garfild/caroline resolve seu problema, existe tуpico dele sobre isso e bem explicado.
Reply
#10

Puts velho esses sistemas sгo foda, funcionou perfeitamente comigo na versгo 0.3c mas quando atualizei pra 0.3d, fica dando um crash sinistro o.O

pawn Код:
[11:07:19] Script[gamemodes\tsl.amx]: During execution of OnPlayerDeath():
[11:07:19] Script[gamemodes\tsl.amx]: Run time error 4: "Array index out of bounds"
[11:07:19] Error information:
[11:07:19]   Array max index is 499 but accessing an element at 65535
[11:07:19] Call stack (most recent call first):
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)