[Ajuda] /Contratos
#1

Olб pessoal, estou criando um sistema de contrato para assassinos, atualmente sу tem o contrato e tal, queria criar um comando ex: /contratos em dialog onde apareceria os players que tem contrato, e ai o assassino clicava no nick deles e abriria uma caixa com o valor do contrato e um botгo pra aceitar ou recusar o contrato, mas nгo sei como fazer, poderiam me ajudar?

Comando /contrato:
Код:
CMD:contrato(playerid,params[])
{
    if(sscanf(params, "ud", giveid,grana))return SendClientMessage(playerid, COLOR_ERRO, "[ x ] Uso correto: /Contrato [ID do Alvo] [Grana]");
    if(grana > GetPlayerMoney(playerid)) return SendClientMessage(playerid, COLOR_ERRO, "[ x ] Vocк nгo tem esse dinheiro.");
    if(grana <= 500 || grana >= 10000)return  SendClientMessage(playerid, COLOR_ERRO, "[ x ] Valor entre 500 e 10000 R$");
    if(!IsPlayerConnected(giveid))return SendClientMessage(playerid, COLOR_ERRO, "[ x ] Player nгo conectado!");
    Valor[giveid]+=grana;
    GivePlayerMoney(playerid, -grana);
    GetPlayerName(giveid, vitima, sizeof(vitima));
    GetPlayerName(playerid, crioumatou, sizeof(crioumatou));
    format(_Str, sizeof(_Str), "[CONTRATO] {00FF66}%s {FFFFFF}colocou um contrato de {00FF66}R$%d {FFFFFF}em %s.", crioumatou, grana, Valor[giveid], vitima);
    SendClientMessageToAll(COLOR_AMARELO, _Str);
    format(_Str, sizeof(_Str), "[PERIGO] %s encomendou sua morte no valor de R$%d.", crioumatou, grana);
    SendClientMessage(giveid, COLOR_ERRO, _Str);
    return true;
}
Atй.
Reply
#2

Att.
Consegui criar o dialogo e tal, mas quando o assassino cumpre o contrato o nick da vitima continua no /Vitimas como mostra as prints a seguir


/Contrato:
Код:
CMD:contrato(playerid,params[])
{
    if(sscanf(params, "ud", giveid, grana)) return SendClientMessage(playerid, COLOR_ERRO, "[ x ] Uso correto: /Contrato [ID do Alvo] [Grana]");
    if(grana > GetPlayerMoney(playerid)) return SendClientMessage(playerid, COLOR_ERRO, "[ x ] Vocк nгo tem esse dinheiro.");
    if(grana <= 500 || grana >= 10000)return  SendClientMessage(playerid, COLOR_ERRO, "[ x ] Valor entre 500 e 10000 R$");
    if(!IsPlayerConnected(giveid))return SendClientMessage(playerid, COLOR_ERRO, "[ x ] Player nгo conectado!");
    Valor[giveid]+=grana;
    GivePlayerMoney(playerid, -grana);
    GetPlayerName(giveid, vitima, sizeof(vitima));
    GetPlayerName(playerid, crioumatou, sizeof(crioumatou));
    format(_Str, sizeof(_Str), "[CONTRATO] {00FF66}%s {FFFFFF}colocou um contrato de {00FF66}R$%d {FFFFFF}em %s.", crioumatou, grana, Valor[giveid], vitima);
    SendClientMessageToAll(COLOR_AMARELO, _Str);
    format(_Str, sizeof(_Str), "[PERIGO] %s encomendou sua morte no valor de R$%d.", crioumatou, grana);
    SendClientMessage(giveid, COLOR_ERRO, _Str);
    return true;
}
/Vitimas:
Код:
CMD:vitimas(playerid) 
{ 
	new String[128];
	new id;
    if(Player[playerid][Fundador] <= 0) return SendClientMessage(playerid, COLOR_ERRO, "[ x ] Vocк nгo й um Assassino!"); 
    format(String, sizeof(String), "Vitima: %s\tRecompensa: %d\tID: %d", vitima, grana, id);
    ShowPlayerDialog(playerid, Dialog_Contratos, DIALOG_STYLE_LIST, "CONTRATOS", String, "Fechar", #);
    return 1;
}
Reply
#3

Crie uma variбvel caso nгo tenha,para verificar se o jogador estб ou nгo com contrato. Quando um player colocar outro jogador na lista vocк da o valor 1 a variбvel Contrato. No OnPlayerDeath vocк faz uma condiзгo para verificar se o jogador morto estava de contrato e zera a variбvel Contrato. Na hora de mostrar o(s) contrato(s) vocк faz a verificaзгo se a variбvel contrato й igual a 1 caso seja verdadeiro vocк incrementa o nick dele a dialog. Este seu cуdigo /vitimas creio eu que nгo irб funcionar como esperado,vocк deve usar um looping para checar cada id do seu servidor... Tem muita coisa a ser corrigida neste teu cуdigo.
Reply
#4

Olб FerrariL, poderia me ajudar a reformular o comando /vitimas e o sistema em geral?
Reply
#5

Qual a funзгo responsбvel para atribuir um contrato no jogador?
E como vocк faz pra saber quem estб com contrato?
Reply
#6

Quote:
Originally Posted by ipsLuan
Посмотреть сообщение
Qual a funзгo responsбvel para atribuir um contrato no jogador?
E como vocк faz pra saber quem estб com contrato?
Vitima[alvoid] = 1; // Identifica se um player estб ou nгo com contrato

Novo /Contrato (https://sampforum.blast.hk/showthread.php?tid=479454 comecei a usar esse tуpico como base.)
Код:
CMD:contrato(playerid,params[])
{
    new alvoid, str[128], grana, Name[MAX_PLAYER_NAME], Name2[MAX_PLAYER_NAME];
	if(sscanf(params,"ui", alvoid, grana)) return SendClientMessage(playerid,-1,"[ x ] Uso correto: /Contrato [ Alvo ID ] [ Quantia ]");
	if(GetPlayerMoney(playerid)<grana) return SendClientMessage(playerid, COLOR_ERRO,"[ x ] Vocк nгo tem essa quantia!");
	if(grana < 500 || grana > 10000) return SendClientMessage(playerid, COLOR_ERRO, "[ x ] Mнnimo: 500R$ Mбximo: 15000R$");
	Vitima[alvoid] = 1;
	GetPlayerName(playerid, Name, sizeof(Name));
	GetPlayerName(alvoid, Name2, sizeof(Name2));
	format(str, sizeof(str),"{FFFFFF}%s[%d] {BDB76B}Colocou um contrato de {FFFFFF}%i {BDB76B}em {FFFFFF}%s[%d]", Name, playerid, grana, Name2, alvoid);
	SendClientMessageToAll(COLOR_MARROMCLARO, str);
	SetPVarInt(playerid, "hitmanmoney", grana);
	for(new i=0; i<MAX_PLAYERS; i++)
	{
	    if(i==playerid)
	    {
	        cAssassino[i] = 1;
	    }
	}
	return 1;
}
Reply
#7

Qual a sua dъvida agora?
Reply
#8

Criar um dialog de /Vitimas funcionavel, e que meio que mostrasse o numero do contrato, pra ai eu criar um comando pro assassino pegar o contrato, ex: dou /contrato no teu id, tu vai aparecer no dialog de vitimas, queria que aparecesse assim: Vitima: ipsLuan Recompensa: 5000 ID do contrato: 1

Ai o assassino usaria um comando ex: /Pegarcontrato 1, e ai era sу ele cumprir.
To em dъvida de como fazer o dialog, e quando o assassino cumprir o contrato a vitima nгo aparecer no /vitimas
Reply
#9

Para criar o comando /vitimas, vocк deve fazer uma verificaзгo com um loop e listar todos os ids que tem a variбvel true.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)