Fala pessoal, estou com uns probelmas... Nгo estб verificando se o Player estб preso, se estб offline. E tambйm parece que sу manda para o ID 0 a mensagem pra aceita ou recusa o ajuste. Eu nгo sei se estб criado da melhor forma... mas se alguйm puder ajudar eu agradeзo.
PHP код:
new AdvId[MAX_PLAYERS];
new Preso_Dialog[MAX_PLAYERS][MAX_PLAYERS];
// OnPlayerConnect
AdvId[playerid] = 999;
//----------------------------------//
if(dialogid == D_AjusteP)
{
if(!response)
{
SendClientMessage(playerid, COLOR_GRAD2, "Voce cancelou o menu de advogados.");
return 1;
}
if(!strlen(inputtext)) return ShowAdvogado(playerid, GetPVarInt(playerid, "IDDialogPresos"));
if(!IsNumeric(inputtext)) return SendClientMessage(playerid, COLOR_GRAD1, "Digite apenas numeros !");
if(AdvId[Preso_Dialog[playerid][strlen(inputtext)]] != 999)
return SendClientMessage(playerid, COLOR_GRAD1, "Este preso ja esta negociando com um advogado.");
if(PlayerInfo[Preso_Dialog[playerid][strlen(inputtext)]][pAjustado])
return SendClientMessage(playerid, COLOR_GRAD1, "Este preso ja foi ajustado por outro advogado.");
if(!IsPlayerConnected(Preso_Dialog[playerid][strlen(inputtext)]))
return SendClientMessage(playerid, COLOR_GREY, " Este jogador esta Offline !");
if(PlayerInfo[Preso_Dialog[playerid][strlen(inputtext)]][pJailed] < 0)
return SendClientMessage(playerid, COLOR_GRAD1, "Este jogador nao esta preso !");
SetPVarInt(playerid, "list", strlen(inputtext));
AdvId[Preso_Dialog[playerid][strlen(inputtext)]] = playerid;
ShowPlayerDialog(playerid, D_AjusteP_2, DIALOG_STYLE_INPUT, "Quanto voce quer retirar da pena dele?",
"{E9ED19}OBS: Digite o numero equivalente a porcentagem\n\
que voce deseja retirar. (Exemplo: 10).\n\n\
{FFFFFF}Retirar: {59FA72}10 {FFFFFF}da pena\n\
Retirar: {59FA72}20 {FFFFFF}da pena\n\
Retirar: {59FA72}30 {FFFFFF}da pena\n\
Retirar: {59FA72}40 {FFFFFF}da pena\n\
Retirar: {59FA72}50 {FFFFFF}da pena\n\
Retirar: {59FA72}60 {FFFFFF}da pena\n\
Retirar: {59FA72}70 {FFFFFF}da pena\n",
"Continuar", " Sair");
return 1;
}
if(dialogid == D_AjusteP_2)
{
if(!response)
{
AdvId[Preso_Dialog[playerid][GetPVarInt(playerid, "list")]] = 999;
return SendClientMessage(playerid, COLOR_GRAD2, "Vocк cancelou o menu de advogados.");
}
if(response)
{
if(!strcmp(inputtext, "10"))
{
SetPVarInt(playerid, "ADV_Ajust", 10);
}
if(!strcmp(inputtext, "20"))
{
if(PlayerInfo[playerid][pLawSkill] < 20){return SendClientMessage(playerid, COLOR_GRAD1, "Suas habilidades de advogado ainda nao e suficientes, use: /habilidades"), AdvId[Preso_Dialog[playerid][GetPVarInt(playerid, "list")]] = 999;}
SetPVarInt(playerid, "ADV_Ajust", 20);
}
if(!strcmp(inputtext, "30"))
{
if(PlayerInfo[playerid][pLawSkill] < 40){return SendClientMessage(playerid, COLOR_GRAD1, "Suas habilidades de advogado ainda nao e suficientes, use: /habilidades"), AdvId[Preso_Dialog[playerid][GetPVarInt(playerid, "list")]] = 999;}
SetPVarInt(playerid, "ADV_Ajust", 30);
}
if(!strcmp(inputtext, "40"))
{
if(PlayerInfo[playerid][pLawSkill] < 80){return SendClientMessage(playerid, COLOR_GRAD1, "Suas habilidades de advogado ainda nao e suficientes, use: /habilidades"), AdvId[Preso_Dialog[playerid][GetPVarInt(playerid, "list")]] = 999;}
SetPVarInt(playerid, "ADV_Ajust", 40);
}
if(!strcmp(inputtext, "50"))
{
if(PlayerInfo[playerid][pLawSkill] < 160){return SendClientMessage(playerid, COLOR_GRAD1, "Suas habilidades de advogado ainda nao e suficientes, use: /habilidades"), AdvId[Preso_Dialog[playerid][GetPVarInt(playerid, "list")]] = 999;}
SetPVarInt(playerid, "ADV_Ajust", 50);
}
if(!strcmp(inputtext, "60"))
{
if(PlayerInfo[playerid][pLawSkill] < 190){return SendClientMessage(playerid, COLOR_GRAD1, "Suas habilidades de advogado ainda nao e suficientes, use: /habilidades"), AdvId[Preso_Dialog[playerid][GetPVarInt(playerid, "list")]] = 999;}
SetPVarInt(playerid, "ADV_Ajust", 60);
}
if(!strcmp(inputtext, "70"))
{
if(PlayerInfo[playerid][pLawSkill] < 200){return SendClientMessage(playerid, COLOR_GRAD1, "Suas habilidades de advogado ainda nao e suficientes, use: /habilidades"), AdvId[Preso_Dialog[playerid][GetPVarInt(playerid, "list")]] = 999;}
SetPVarInt(playerid, "ADV_Ajust", 70);
}
ShowPlayerDialog(playerid, D_AjusteP_3, DIALOG_STYLE_INPUT, "Quanto voce quer?", "Digite quanto voce quer para ajustar o preso", "Continuar", "");
}
return 1;
}
if(dialogid == D_AjusteP_3)
{
if(!response || !strval(inputtext) || strval(inputtext) < 1000 || strval(inputtext) > 200000)
{
ShowPlayerDialog(playerid, D_AjusteP_3, DIALOG_STYLE_INPUT, "Quanto voce quer?", "Digite quanto voce quer para ajustar o preso", "Continuar", "");
return SendClientMessage(playerid, COLOR_GRAD1, "Preзo de R$1.000 a R$200.000");
}
SetPVarInt(playerid, "ADV_Preco", strval(inputtext));
format(string, sizeof string,
"O advogado %s quer retirar %d por cento da sua pena\n\
por R$%s, voce aceita ou nao?",
NomePlayer(playerid), GetPVarInt(playerid, "ADV_Ajust"), ConvertMoney(GetPVarInt(playerid, "ADV_Preco")));
ShowPlayerDialog(Preso_Dialog[playerid][GetPVarInt(playerid, "list")], D_AjusteP_4, DIALOG_STYLE_MSGBOX, "Advogado", string, "Aceitar", "Recusar");
format(string, sizeof string, "* Voce quer livrar %s de %d por cento de sua pena por R$%s",
NomePlayer(Preso_Dialog[playerid][GetPVarInt(playerid, "list")]),
GetPVarInt(playerid, "ADV_Ajust"), ConvertMoney(strval(inputtext)));
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
return 1;
}
if(dialogid == D_AjusteP_4)
{
new id = AdvId[playerid];
if(!IsPlayerConnected(id) || PlayerInfo[id][pEmprego] != 2)return SendClientMessage(playerid, COLOR_LIGHTRED, "* Este advogado nao esta mais conectado ou nao e mais um advogado"), AdvId[playerid] = 999;
if(PlayerInfo[playerid][pJailTime] < 1)
return SendClientMessage(playerid, COLOR_GRAD1, "Voce nao esta mais preso!");
if(!response)
{
format(string, sizeof string, " * Voce recusou o advogado %s.", NomePlayer(id));
SendClientMessage(playerid, COLOR_LIGHTRED, string);
format(string, sizeof string, " * %s recusou seu pedido de ajuste de tempo de prisao.", NomePlayer(playerid));
SendClientMessage(id, COLOR_LIGHTRED, string);
AdvId[Preso_Dialog[playerid][GetPVarInt(playerid, "list")]] = 999;
return 1;
}
if(response)
{
if(GetPlayerMoney(playerid) < GetPVarInt(id, "ADV_Preco"))
{
SendClientMessage(playerid, COLOR_LIGHTRED, "Voce nao pode pagar o que o advogado pediu.");
format(string, sizeof string, " * o preso %s nao pode pagar o que voce pediu.", NomePlayer(playerid));
SendClientMessage(id, COLOR_LIGHTRED, string);
AdvId[playerid] = 999;
return 1;
}
format(string, sizeof string, " * O advogado %s retirou %d por cento da sua pena por R$%s.",
NomePlayer(id), GetPVarInt(id, "ADV_Ajust"),ConvertMoney(GetPVarInt(id, "ADV_Preco")));
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof string, " * Voce retirou %d por cento da pena de %s, por R$%s.", GetPVarInt(id, "ADV_Ajust"), NomePlayer(playerid), ConvertMoney(GetPVarInt(id, "ADV_Preco")));
SendClientMessage(id, COLOR_LIGHTBLUE, string);
GivePlayerMoney(playerid, -GetPVarInt(id, "ADV_Preco"));
GivePlayerMoney(id, GetPVarInt(id, "ADV_Preco"));
PlayerInfo[playerid][pAjustado] = true;
new time = PlayerInfo[playerid][pJailTime];
new ajust = GetPVarInt(id, "ADV_Ajust");
PlayerInfo[playerid][pJailTime] = (time) - (time*ajust/100);
PlayerInfo[id][pLawSkill] ++;
if(PlayerInfo[id][pLawSkill] == 20)
{
SendClientMessage(playerid, COLOR_YELLOW, "** Voce agora pode livrar presos em ate 30 por cento da pena **");
}
if(PlayerInfo[id][pLawSkill] == 40)
{
SendClientMessage(playerid, COLOR_YELLOW, "** Voce agora pode livrar presos em ate 40 por cento da pena **");
}
if(PlayerInfo[id][pLawSkill] == 100)
{
SendClientMessage(playerid, COLOR_YELLOW, "** Voce agora pode livrar presos em ate 50 por cento da pena **");
}
if(PlayerInfo[id][pLawSkill] == 150)
{
SendClientMessage(playerid, COLOR_YELLOW, "** Voce agora pode livrar presos em ate 60 por cento da pena **");
}
if(PlayerInfo[id][pLawSkill] == 250)
{
SendClientMessage(playerid, COLOR_YELLOW, "** Voce agora pode livrar presos em ate 70 por cento da pena **");
}
if(PlayerInfo[id][pLawSkill] == 370)
{
SendClientMessage(playerid, COLOR_YELLOW, "** Voce agora pode livrar presos em ate 80 por cento da pena **");
}
if(PlayerInfo[id][pLawSkill] == 500)
{
SendClientMessage(playerid, COLOR_YELLOW, "** Voce agora pode livrar presos em ate 90 por cento da pena **");
}
}
AdvId[playerid] = 999;
return true;
}
stock ShowAdvogado(playerid, delegacia)
{
if(PlayerInfo[playerid][pEmprego] == 2 && !PlayerInfo[playerid][pJailed])
{
new string[150];
new In_Preso = 0;
MEGAString[0] = EOS;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pJailed] == delegacia)
{
Preso_Dialog[playerid][In_Preso] = i;
format(string, sizeof string, "ID: %d Preso: %s\n", i, NomePlayer(i));
strcat(MEGAString, string);
In_Preso ++;
}
}
}
if(In_Preso == 0)return SendClientMessage(playerid, COLOR_GRAD1, "Ninguem esta preso nessa delegacia.");
ShowPlayerDialog(playerid, D_AjusteP, DIALOG_STYLE_INPUT, "Presos nessa delegacia", MEGAString, "Ajustar", "Fechar");
}
else SendClientMessage(playerid, COLOR_GRAD1, "Voce nao e um advogado.");
return true;
}