[AJUDA] Sistema Hitman
#1

Bom, eu meio que dei uma ajeitada em uma Org Hitman que peguei, jб que ela nгo estava completa .. Mas ainda estб bem bugado, e queria ajudar para desbugб-lo ..

Vou falar os problemas notбveis:

- Quando eu mato o contrato, eu nгo ganho dinheiro

- Nгo mostra que cumpri o contrato, na verdade nem cumpre, mesmo eu matando ele continua na lista de contratos

- Dб pra colocar contrato em Hitman

- Hitman pode colocar contrato, oq nгo deveria..

Esses foram os que notei atй agora.. Se puderem ajudar, agradeзo !


Comando /contrato :

Код:
if(strcmp(cmd, "/contrato", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	   	{
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				SendClientMessage(playerid, COLOR_GRAD1, "USE: /contrato [ID do Jogador] [Quantidade]");
				return 1;
			}
			giveplayerid = ReturnUser(tmp);
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				SendClientMessage(playerid, COLOR_GRAD1, "USE: /contrato [ID do Jogador] [Quantidade]");
				return 1;
			}
			moneys = strval(tmp);
			if(moneys < 10000 || moneys > 500000) { SendClientMessage(playerid, COLOR_GREY, "   Seu contrato nгo pode ser menor que 10000 e maior que 500000"); return 1; }
			if(PlayerInfo[playerid][pLevel] < 2)
			{
				SendClientMessage(playerid, COLOR_GRAD1, "Level 2 no Minimo para por um Contrato.");
				return 1;
			}
			if (IsPlayerConnected(giveplayerid))
			{
			    if(giveplayerid != INVALID_PLAYER_ID)
			    {
				    if(PlayerInfo[giveplayerid][pMembro] == 8 && PlayerInfo[playerid][pMembro] == 8)
				    {
				        SendClientMessage(playerid, COLOR_GREY, "   Nгo pode por contrato ee sua propria agencia!");
				        return 1;
				    }
				    else if(PlayerInfo[giveplayerid][pLider] == 8 && PlayerInfo[playerid][pMembro] == 8)
				    {
				        SendClientMessage(playerid, COLOR_GREY, "   Nгo pode por contratos em sua propria agencia!");
				        return 1;
				    }
				    else if(PlayerInfo[giveplayerid][pMembro] == 8||PlayerInfo[giveplayerid][pLider] == 8)
				    {
				        SendClientMessage(playerid, COLOR_GREY, "   Nгo pode contratar um assassino !");
				        return 1;
				    }
				    if(gTeam[giveplayerid] == 2 && moneys != 300000)
				    {
				        SendClientMessage(playerid, COLOR_GREY, "   Somente 300000 Pode ser posto em contratos com os COPS !");
				        return 1;
				    }
				    if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Vocк nгo pode se contratar!"); return 1; }
					GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
					GetPlayerName(playerid, sendername, sizeof(sendername));
					playerdinheiro = GetPlayerMoneyEx(playerid);
					if (moneys > 0 && playerdinheiro >= moneys)
					{
						GivePlayerMoneyEx(playerid, (0 - moneys));
						PlayerInfo[giveplayerid][pHeadValue]+=moneys;
						format(string, sizeof(string), "%s Botou um contrato em %s, por R$%d.",sendername, giveplayer, moneys);
						SendFamilyMessage(8, COLOR_YELLOW, string);
						format(string, sizeof(string), "* Vocк botou um contrato em %s, por R$%d.",giveplayer, moneys);
						SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
						PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
					}
					else
					{
						SendClientMessage(playerid, COLOR_GRAD1, "   Nъmero Invalido.");
					}
				}
			}
			else
			{
				format(string, sizeof(string), "   %d is not an active player.", giveplayerid);
				SendClientMessage(playerid, COLOR_GRAD1, string);
			}
		}
		return 1;
}
Reply
#2

pawn Код:
if(strcmp(cmd, "/contrato", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD1, "USE: /contrato [ID do Jogador] [Quantidade]");
                return 1;
            }
            giveplayerid = ReturnUser(tmp);
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD1, "USE: /contrato [ID do Jogador] [Quantidade]");
                return 1;
            }
            moneys = strval(tmp);
            if(moneys < 10000 || moneys > 500000) { SendClientMessage(playerid, COLOR_GREY, "   Seu contrato nгo pode ser menor que 10000 e maior que 500000"); return 1; }
            if(PlayerInfo[playerid][pLevel] < 2)
            {
                SendClientMessage(playerid, COLOR_GRAD1, "Level 2 no Minimo para por um Contrato.");
                return 1;
            }
            if (IsPlayerConnected(giveplayerid))
            {
                if(giveplayerid != INVALID_PLAYER_ID)
                {
                    if(gTeam[giveplayerid] == 2 && moneys != 300000)
                    {
                        SendClientMessage(playerid, COLOR_GREY, "   Somente 300000 Pode ser posto em contratos com os COPS !");
                        return 1;
                    }
                    if(PlayerInfo[playerid][pMembro] == 8)
                    {
                        print("Algum Hitman estб tentando colocar um contrato");
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_GREY, "Vocк й um Hitman!! Nгo pode colocar contrato!!");
                        return 1;
                    }
                    if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Vocк nгo pode se contratar!"); return 1; }
                    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                    GetPlayerName(playerid, sendername, sizeof(sendername));
                    playerdinheiro = GetPlayerMoneyEx(playerid);
                    if (moneys > 0 && playerdinheiro >= moneys)
                    {
                        GivePlayerMoneyEx(playerid, (0 - moneys));
                        PlayerInfo[giveplayerid][pHeadValue]+=moneys;
                        format(string, sizeof(string), "%s Botou um contrato em %s, por R$%d.",sendername, giveplayer, moneys);
                        SendFamilyMessage(8, COLOR_YELLOW, string);
                        format(string, sizeof(string), "* Vocк botou um contrato em %s, por R$%d.",giveplayer, moneys);
                        SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                        PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_GRAD1, "   Nъmero Invalido.");
                    }
                }
            }
            else
            {
                format(string, sizeof(string), "   %d is not an active player.", giveplayerid);
                SendClientMessage(playerid, COLOR_GRAD1, string);
            }
        }
        return 1;
}

Espero ter Ajudado
Reply
#3

Tambйm estou com problemas semelhantes,

esperando respostas...
Reply
#4

Quote:
Originally Posted by bruno-style
Посмотреть сообщение
pawn Код:
if(strcmp(cmd, "/contrato", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD1, "USE: /contrato [ID do Jogador] [Quantidade]");
                return 1;
            }
            giveplayerid = ReturnUser(tmp);
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD1, "USE: /contrato [ID do Jogador] [Quantidade]");
                return 1;
            }
            moneys = strval(tmp);
            if(moneys < 10000 || moneys > 500000) { SendClientMessage(playerid, COLOR_GREY, "   Seu contrato nгo pode ser menor que 10000 e maior que 500000"); return 1; }
            if(PlayerInfo[playerid][pLevel] < 2)
            {
                SendClientMessage(playerid, COLOR_GRAD1, "Level 2 no Minimo para por um Contrato.");
                return 1;
            }
            if (IsPlayerConnected(giveplayerid))
            {
                if(giveplayerid != INVALID_PLAYER_ID)
                {
                    if(gTeam[giveplayerid] == 2 && moneys != 300000)
                    {
                        SendClientMessage(playerid, COLOR_GREY, "   Somente 300000 Pode ser posto em contratos com os COPS !");
                        return 1;
                    }
                    if(PlayerInfo[playerid][pMembro] == 8)
                    {
                        print("Algum Hitman estб tentando colocar um contrato");
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_GREY, "Vocк й um Hitman!! Nгo pode colocar contrato!!");
                        return 1;
                    }
                    if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Vocк nгo pode se contratar!"); return 1; }
                    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                    GetPlayerName(playerid, sendername, sizeof(sendername));
                    playerdinheiro = GetPlayerMoneyEx(playerid);
                    if (moneys > 0 && playerdinheiro >= moneys)
                    {
                        GivePlayerMoneyEx(playerid, (0 - moneys));
                        PlayerInfo[giveplayerid][pHeadValue]+=moneys;
                        format(string, sizeof(string), "%s Botou um contrato em %s, por R$%d.",sendername, giveplayer, moneys);
                        SendFamilyMessage(8, COLOR_YELLOW, string);
                        format(string, sizeof(string), "* Vocк botou um contrato em %s, por R$%d.",giveplayer, moneys);
                        SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                        PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_GRAD1, "   Nъmero Invalido.");
                    }
                }
            }
            else
            {
                format(string, sizeof(string), "   %d is not an active player.", giveplayerid);
                SendClientMessage(playerid, COLOR_GRAD1, string);
            }
        }
        return 1;
}

Espero ter Ajudado
Ajudou em parte, fico grato.. Ajudou na parte de que quando vocк cumpria o contrato, o seu contrato ainda continuava na lista de contratos, agora jб nгo acontece mais isso ..

Porйm, quando cumpro o contrato nгo ganho o dinheiro de recompensa e nem aparece a mensagem: Um Hitman cumpriu seu contrato em "tal"..

Mas a parte da mensagem й relativamente fбcil, o problema й que o hitman continua nгo ganhando o dinheiro ..

Se possнvel gostaria que me ajudassem e colocassem pra aparecer a mensagem, nгo sу pra todos do servidor, mas tambйm uma mensagem para o contrato, explicando: Um Hitman cumpriu contrato em vocк, nгo foi DM.

Algo do tipo ..

Agradeзo desde jб !

E bruno, te reputei por prestar ajuda :] Obrigadгo msmo
Reply
#5

post a onplayerdeath
Reply
#6

Quote:
Originally Posted by Cristhian
Посмотреть сообщение
post a onplayerdeath
Sim, й justamente aн que estou na duvida sobre o code..

Como faria para quando player morrer aparecer uma mensagem para ele e para mim.. E eu ganhar o dinheiro automaticamente quando ele morrer..
Reply
#7

@Edited.

vou tentar fazer aqui:
pawn Код:
new bool:contrato[MAX_PLAYERS];//topo
new moneys //topo, delete o new moneys do comando!
adicione isso na parte do cуdigo:
pawn Код:
if (moneys > 0 && playerdinheiro >= moneys)
                    {
                        GivePlayerMoneyEx(playerid, (0 - moneys));
                        PlayerInfo[giveplayerid][pHeadValue]+=moneys;
                        format(string, sizeof(string), "%s Botou um contrato em %s, por R$%d.",sendername, giveplayer, moneys);
                        SendFamilyMessage(8, COLOR_YELLOW, string);
                        format(string, sizeof(string), "* Vocк botou um contrato em %s, por R$%d.",giveplayer, moneys);
                        SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                        contrato[giveplayerid] = true;
                        PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
                    }
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    if(contrato[playerid])
    {
        if(PlayerInfo[killerid][pMembro] == 8)
        {
            SendClientMessage(playerid, -1, "Vocк foi morto por contrato!");
            GivePlayerMoney(killerid, moneys);
            SendClientMessage(killerid, -1, "Vocк cumpriu o contrato!");
            return 1;
        }
        return 1;
    }
    return 1;
}
Reply
#8

pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    if(contrato[playerid])
    {
        if(PlayerInfo[killerid][pMembro] == 8)
        {
            SendClientMessage(playerid,"[ATENЗГO] Vocк foi pego por um Hitman!! Isto nгo foi DM, e Sim um Contrato!");
            GivePlayerMoney(killerid, moneys);
            SendClientMessage(killerid, -1, "Parabens!! Contrato Cumprido");
            return 1;
        }
        return 1;
    }
    return 1;
}
Espero ter te Ajudado
Reply
#9

Quote:
Originally Posted by bruno-style
Посмотреть сообщение
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    if(contrato[playerid])
    {
        if(PlayerInfo[killerid][pMembro] == 8)
        {
            SendClientMessage(playerid,"[ATENЗГO] Vocк foi pego por um Hitman!! Isto nгo foi DM, e Sim um Contrato!");
            GivePlayerMoney(killerid, moneys);
            SendClientMessage(killerid, -1, "Parabens!! Contrato Cumprido");
            return 1;
        }
        return 1;
    }
    return 1;
}
Espero ter te Ajudado
cara, vocк ta usando DORGAS ? Pegou meu cуdigo, editou e editou errado..
INCORRETO:
pawn Код:
SendClientMessage(playerid,"[ATENЗГO] Vocк foi pego por um Hitman!! Isto nгo foi DM, e Sim um Contrato!");
CORRETO:
pawn Код:
SendClientMessage(playerid, -1, "[ATENЗГO] Vocк foi pego por um Hitman!! Isto nгo foi DM, e Sim um Contrato!"); //no caso -1 irб ser a cor da mensagem, ou seja, branca
OBS: eu sei que sua intenзгo era mudar a menssagem
OBSІ: nгo quero lhe ofender
OBSі: Nenhum animal foi machucado durante o post. /zuei DDD
Reply
#10

pawn Код:
if(strcmp(cmd, "/contrato", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD1, "USE: /contrato [ID do Jogador] [Quantidade]");
                return 1;
            }
            giveplayerid = ReturnUser(tmp);
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD1, "USE: /contrato [ID do Jogador] [Quantidade]");
                return 1;
            }
            moneys = strval(tmp);
            if(moneys < 10000 || moneys > 500000) { SendClientMessage(playerid, COLOR_GREY, "   Seu contrato nгo pode ser menor que 10000 e maior que 500000"); return 1; }
            if(PlayerInfo[playerid][pLevel] < 2)
            {
                SendClientMessage(playerid, COLOR_GRAD1, "Level 2 no Minimo para por um Contrato.");
                return 1;
            }
            if (IsPlayerConnected(giveplayerid))
            {
                if(giveplayerid != INVALID_PLAYER_ID)
                {
                    if(PlayerInfo[giveplayerid][pMembro] == 8 && PlayerInfo[playerid][pMembro] == 8)
                    {
                        SendClientMessage(playerid, COLOR_GREY, "   Nгo pode por contrato em sua propria agencia!");
                        return 1;
                    }
                    else if(PlayerInfo[giveplayerid][pLider] == 8 && PlayerInfo[playerid][pMembro] == 8)
                    {
                        SendClientMessage(playerid, COLOR_GREY, "   Nгo pode por contratos em sua propria agencia!");
                        return 1;
                    }
                    else if(PlayerInfo[giveplayerid][pMembro] == 8||PlayerInfo[giveplayerid][pLider] == 8)
                    {
                        SendClientMessage(playerid, COLOR_GREY, "   Nгo pode contratar um assassino !");
                        return 1;
                    }
                    if(gTeam[giveplayerid] == 2 && moneys != 300000)
                    {
                        SendClientMessage(playerid, COLOR_GREY, "   Somente 300000 Pode ser posto em contratos com os COPS !");
                        return 1;
                    }
                    if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Vocк nгo pode se contratar!"); return 1; }
                    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                    GetPlayerName(playerid, sendername, sizeof(sendername));
                    playerdinheiro = GetPlayerMoneyEx(playerid);
                    if (moneys > 0 && playerdinheiro >= moneys)
                    {
                    public OnPlayerDeath(playerid, killerid, reason)
                    {
                    if(contrato[playerid])
                    {
                    if(PlayerInfo[killerid][pMembro] == 8)
                    {
                    SendClientMessage(playerid, -1, "Vocк foi morto por um Hitman, nгo foi DM!");
                    GivePlayerMoney(killerid, moneys);
                    SendClientMessage(killerid, -1, "Vocк cumpriu o contrato!");
                    return 1;
                    }
                    return 1;
                    }
                    return 1;
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_GRAD1, "   Nъmero Invalido.");
                    }
                }
            }
            else
            {
                format(string, sizeof(string), "   %d is not an active player.", giveplayerid);
                SendClientMessage(playerid, COLOR_GRAD1, string);
            }
        }
        return 1;
    }
Ficaria assim entгo?

@off

Lк a MP se der, Christian ;]. Obrigado
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)