Assalto em gangue -
[BR]Michael - 31.08.2012
Olб galera... Estou desenvolvendo um sistema de assalto em gangue para meu RPG...
1є Primeiro, nгo tб vindo dinheiro para a mгo do assaltante...
2є Ele fica roubando e mesmo dando a ъltima mensagem para fugir, ele volta a roubar novamente, acho que deve ser algum problema no loop... Entгo tб aqui o cуdigo:
pawn Код:
COMMAND:realizarassalto(playerid, params[])
{
new tmp[128];
if(sscanf(params, "s", tmp))
{
return SendClientMessage(playerid, COLOR_GRAY, "USO: /realizarassalto [loja]");
}
if(!IsPlayerInGang(playerid)){
SendClientMessage(playerid, COLOR_GRAY, "Vocк nгo pertence a nenhuma gang nгo poderб fazer assaltos.");
return 1;
}
if(pStats[playerid][GangueCargo] > 3){
SendClientMessage(playerid, COLOR_GRAY, "Vocк nгo pode realizar assaltos em quadrilhas, apenas: Traficante, Torre, Braзo-Direito e Lнder podem iniciar.");
return 1;
}
new string[128];
new gangueiros = 0;
for(new i = 0; i < MAX_SLOTS; i++){
if(GetDistanceBetweenPlayers(playerid,i) < 80){
if(compare(pStats[playerid][GangueNome], pStats[i][GangueNome])){
gangueiros++;
}
}
}
if(gangueiros < 3){
SendClientMessage(playerid, COLOR_GRAY, "Para realizar um assalto й necessбrio no mнnimo 3 Gangsters.");
return 1;
}
if(IniciandoAssalto[playerid] != 0){
SendClientMessage(playerid, COLOR_GRAY, "Vocк jб estб realizando um assalto.");
return 1;
}
if(CalmaAssalto[playerid] != 0){
SendClientMessage(playerid, COLOR_GRAY, "O Tempo para assaltar nгo passou tenha calma!");
return 1;
}
if(compare(tmp, "banco"))
{
if(PlayerArea[playerid] == AreaBanco)
{
IniciandoAssalto[playerid] = 1;
GameTextForPlayer(playerid, "~r~ Assaltando...", 5000,0);
SendClientMessage(playerid, COLOR_ASSALTANTE, "Assalto em andamento...");
SendClientMessage(playerid, COLOR_ASSALTANTE, "Assalto em andamento, fiquem prуximo para que o assalto nгo seja cancelado, mнnimo 2 gangsters.");
for(new i = 0; i < MAX_SLOTS; i++)
{
if(GetDistanceBetweenPlayers(playerid,i) < 80)
{
if(compare(pStats[playerid][GangueNome], pStats[i][GangueNome]))
{
IniciandoAssalto[i] = 1;
GameTextForPlayer(i, "~r~ Assaltando...", 5000,0);
}
}
}
SetTimerEx("AssaltoGang",5000,0,"dd",playerid, IniciandoAssalto[playerid]);
}
}
else if(compare(tmp, "pizzaria"))
{
if(PlayerArea[playerid] == AreaPizzaria)
{
IniciandoAssalto[playerid] = 2;
GameTextForPlayer(playerid, "~r~ Assaltando...", 5000,0);
SendClientMessage(playerid, COLOR_ASSALTANTE, "Assalto em andamento...");
SendClientMessage(playerid, COLOR_ASSALTANTE, "Assalto em andamento, fiquem prуximo para que o assalto nгo seja cancelado, mнnimo 2 gangsters.");
for(new i = 0; i < MAX_SLOTS; i++)
{
if(GetDistanceBetweenPlayers(playerid,i) < 80)
{
if(compare(pStats[playerid][GangueNome], pStats[i][GangueNome]))
{
IniciandoAssalto[i] = 2;
GameTextForPlayer(i, "~r~ Assaltando...", 5000,0);
}
}
}
SetTimerEx("AssaltoGang",5000,0,"dd",playerid, IniciandoAssalto[playerid]);
}
}
else if(compare(tmp, "posto"))
{
if(PlayerArea[playerid] == AreaPosto)
{
IniciandoAssalto[playerid] = 3;
GameTextForPlayer(playerid, "~r~ Assaltando...", 5000,0);
SendClientMessage(playerid, COLOR_ASSALTANTE, "Assalto em andamento...");
SendClientMessage(playerid, COLOR_ASSALTANTE, "Assalto em andamento, fiquem prуximo para que o assalto nгo seja cancelado, mнnimo 2 gangsters.");
for(new i = 0; i < MAX_SLOTS; i++)
{
if(GetDistanceBetweenPlayers(playerid,i) < 80)
{
if(compare(pStats[playerid][GangueNome], pStats[i][GangueNome]))
{
IniciandoAssalto[i] = 3;
GameTextForPlayer(i, "~r~ Assaltando...", 5000,0);
}
}
}
format(string, sizeof string, "Para ganhar mais dinheiro no %s, fique o maior tempo possнvel.", tmp);
SendClientMessage(playerid, COLOR_ASSALTANTE, string);
SetTimerEx("AssaltoGang",5000,0,"dd",playerid, IniciandoAssalto[playerid]);
}
}
return 1;
}
public AssaltoGang(playerid, loja){
new string[128];
if(loja == 1){
if(PlayerArea[playerid] == AreaBanco){
ValuerMaximo[playerid] = 3000;
new rand = random(5);
if(rand == 1 || rand == 2){
if(pickupbancoselecionada[playerid] == 1){
format(string, sizeof(string), "Assalto a Banco ( Banco de Little Mexico )");
}
else if(pickupbancoselecionada[playerid] == 2){
format(string, sizeof(string), "Assalto a Banco ( Banco de Temple )");
}
else if(pickupbancoselecionada[playerid] == 3){
format(string, sizeof(string), "Assalto a Banco ( Banco de Rodeo )");
}
else if(pickupbancoselecionada[playerid] == 4){
format(string, sizeof(string), "Assalto a Banco ( Banco de East Beach )");
}
if(IsPlayerTransparent(playerid)){
SendClientMessageToAll(COLOR_PINK,"New Paper's Life:");
SendClientMessageToAll(COLOR_WHITE, "[JORNAL] O Alarme de algum banco foi acionado, a polнcia foi avisada.");
format(string, sizeof(string), "Suspeitos: Gang desconhecida.");
SendClientMessageToAll(COLOR_JUIZ, string);
SendClientMessage(playerid, COLOR_ASSALTANTE, "Saia daн o mais rбpido possнvel, a polнcia pode estar chegando.");
AcusacaoCrime(playerid, "Alarme do Banco", "NONE" , string , 0, 0, 0, 0);
} else {
SendClientMessageToAll(COLOR_PINK,"New Paper's Life:");
SendClientMessageToAll(COLOR_WHITE, "[JORNAL] O Alarme de algum banco foi acionado, a polнcia foi avisada.");
format(string, sizeof(string), "Suspeitos: Gangue %s.", pStats[playerid][GangueNome]);
SendClientMessageToAll(COLOR_JUIZ, string);
SendClientMessage(playerid, COLOR_ASSALTANTE, "Saia daн o mais rбpido possнvel, a polнcia pode estar chegando.");
AcusacaoCrime(playerid, "Alarme do Banco", "NONE" , string , 3, 0, 0, 0);
}
}
SendClientMessage(playerid, COLOR_ASSALTANTE, "E O SHOW VAI COMEЗAR, TODOS NO CHГO.");
if(QtLoopAssalto[playerid] > 0){
format(string, sizeof(string), "Vocкs tem mais de $%d00 roubados do banco.", QtLoopAssalto);
SendClientMessage(playerid, COLOR_WHITE, string);
}
new vlr = random(10)+1;
QtLoopAssalto[playerid] = QtLoopAssalto[playerid] + vlr;
SetTimerEx("AssaltoGang",10000,0,"dd",playerid, loja);
}
}
else if(loja == 2){
if(PlayerArea[playerid] == AreaPizzaria){
ValuerMaximo[playerid] = 1500;
SendClientMessage(playerid, COLOR_ASSALTANTE, "Passem o dinheiro, nada de pizzas quero dinheiro!");
if(QtLoopAssalto[playerid] > 0){
format(string, sizeof(string), "Vocкs tem mais de $%d00 roubados da pizzaria.", QtLoopAssalto);
SendClientMessage(playerid, COLOR_WHITE, string);
}
new vlr = random(4)+1;
QtLoopAssalto[playerid] = QtLoopAssalto[playerid] + vlr;
SetTimerEx("AssaltoGang",10000,0,"dd",playerid, loja);
}
}
else if(loja == 3){
if(PlayerArea[playerid] == AreaPosto){
ValuerMaximo[playerid] = 2000;
SendClientMessage(playerid, COLOR_ASSALTANTE, "Й UM ASSALTO, MГOS AO ALTO NEGADA!");
if(QtLoopAssalto[playerid] > 0){
format(string, sizeof(string), "Vocкs tem mais de $%d00 roubados do posto de gasolina.", QtLoopAssalto);
SendClientMessage(playerid, COLOR_WHITE, string);
}
new vlr = random(6)+1;
QtLoopAssalto[playerid] = QtLoopAssalto[playerid] + vlr;
SetTimerEx("AssaltoGang",10000,0,"dd",playerid, loja);
}
}
if(QtLoopAssalto[playerid] >= ValuerMaximo[playerid]){
AddPlayerMoney(playerid,QtLoopAssalto[playerid],3);
QtLoopAssalto[playerid] = 0;
format(string, sizeof(string), "Assalto realizado! Vocкs conseguiram levar $%d00 dуlares do assalto, CORRAM!", QtLoopAssalto);
SendClientMessage(playerid, COLOR_WHITE, string);
CalmaAssalto[playerid] = 1;
SetTimerEx("LimparTempoAssalto",600000,0,"d",playerid);
if(loja == 1){
if(pickupbancoselecionada[playerid] == 1){
SetPlayerVirtualWorld(playerid, 0);
SetPlayerInterior(playerid,0);
SetPlayerFacingAngle(playerid,260.9407);
SetPlayerPos(playerid,1771.7144,-1655.8201,14.4236);
}
else if(pickupbancoselecionada[playerid] == 2){
SetPlayerVirtualWorld(playerid, 0);
SetPlayerInterior(playerid,0);
SetPlayerFacingAngle(playerid,260.9407);
SetPlayerPos(playerid,1386.0540,-1015.7602,26.6676);
}
else if(pickupbancoselecionada[playerid] == 3){
SetPlayerVirtualWorld(playerid, 0);
SetPlayerInterior(playerid,0);
SetPlayerFacingAngle(playerid,260.9407);
SetPlayerPos(playerid,419.7245,-1428.6298,32.4797);
}
else if(pickupbancoselecionada[playerid] == 4){
SetPlayerVirtualWorld(playerid, 0);
SetPlayerInterior(playerid,0);
SetPlayerFacingAngle(playerid,260.9407);
SetPlayerPos(playerid,2862.3201,-1440.2727,10.9410);
}
}
}
}
public LimparTempoAssalto(playerid){
CalmaAssalto[playerid] = 0;
}
public Assalto(playerid){
TempoAssalto[playerid]=0;
SendClientMessage(playerid,COLOR_TRAFICANTE, "A poeira baixou, jб й possнvel que vocк realize outro Assalto.");
}
Re: Assalto em gangue -
victormelo - 31.08.2012
Eu posso estar falando besteira (nгo entendo taaaanto assim), mas serб q n й pq vc usou o mesmo nome para duas funзхes? tipo:
Код:
if(QtLoopAssalto[playerid] >= ValuerMaximo[playerid]){
AddPlayerMoney(playerid,QtLoopAssalto[playerid],3);
QtLoopAssalto[playerid] = 0;
format(string, sizeof(string), "Assalto realizado! Vocкs conseguiram levar $%d00 dуlares do assalto, CORRAM!", QtLoopAssalto);
SendClientMessage(playerid, COLOR_WHITE, string);
CalmaAssalto[playerid] = 1;
SetTimerEx("LimparTempoAssalto",600000,0,"d",playerid);
O QtLoopAssalto ta fazendo duas funзхes, a primeira й a que ele faz no if(QtLoopAssalto[playerid] >= ValuerMaximo[playerid]), assim, quando o valor do roubo chegar no mбximo, vai executar o que estб embaixo, porйm, ali em baixo estб QtLoopAssalto[playerid] = 0, fazendo com que, quando o valor chegar no mбximo, ele volte para o Zero (foi oq eu entendi). Te aconselho a tentar mudar esse segundo QtLoopAssalto, por algum outro nome qualquer (assim, terб um nome pra cada funзгo). Ae ve se funciona xD
Pra tentar resolver o segundo problema (de continuar assaltando), defina o segundo QtLoopAssalto, com um nome igual ao CalmaAssalto (crie um novo nome, e substitua ele por esses dois), vou tentar fazer aqui pra ti, vк se da:
Код:
COMMAND:realizarassalto(playerid, params[])
{
new tmp[128];
if(sscanf(params, "s", tmp))
{
return SendClientMessage(playerid, COLOR_GRAY, "USO: /realizarassalto [loja]");
}
if(!IsPlayerInGang(playerid)){
SendClientMessage(playerid, COLOR_GRAY, "Vocк nгo pertence a nenhuma gang nгo poderб fazer assaltos.");
return 1;
}
if(pStats[playerid][GangueCargo] > 3){
SendClientMessage(playerid, COLOR_GRAY, "Vocк nгo pode realizar assaltos em quadrilhas, apenas: Traficante, Torre, Braзo-Direito e Lнder podem iniciar.");
return 1;
}
new string[128];
new gangueiros = 0;
for(new i = 0; i < MAX_SLOTS; i++){
if(GetDistanceBetweenPlayers(playerid,i) < 80){
if(compare(pStats[playerid][GangueNome], pStats[i][GangueNome])){
gangueiros++;
}
}
}
if(gangueiros < 3){
SendClientMessage(playerid, COLOR_GRAY, "Para realizar um assalto й necessбrio no mнnimo 3 Gangsters.");
return 1;
}
if(IniciandoAssalto[playerid] != 0){
SendClientMessage(playerid, COLOR_GRAY, "Vocк jб estб realizando um assalto.");
return 1;
}
if(Assaltando[playerid] != 1){
SendClientMessage(playerid, COLOR_GRAY, "O Tempo para assaltar nгo passou tenha calma!");
return 1;
}
if(compare(tmp, "banco"))
{
if(PlayerArea[playerid] == AreaBanco)
{
IniciandoAssalto[playerid] = 1;
Assaltando[playerid] = 1;
GameTextForPlayer(playerid, "~r~ Assaltando...", 5000,0);
SendClientMessage(playerid, COLOR_ASSALTANTE, "Assalto em andamento...");
SendClientMessage(playerid, COLOR_ASSALTANTE, "Assalto em andamento, fiquem prуximo para que o assalto nгo seja cancelado, mнnimo 2 gangsters.");
for(new i = 0; i < MAX_SLOTS; i++)
{
if(GetDistanceBetweenPlayers(playerid,i) < 80)
{
if(compare(pStats[playerid][GangueNome], pStats[i][GangueNome]))
{
IniciandoAssalto[i] = 1;
Assaltando[playerid] = 1;
GameTextForPlayer(i, "~r~ Assaltando...", 5000,0);
}
}
}
SetTimerEx("AssaltoGang",5000,0,"dd",playerid, IniciandoAssalto[playerid]);
}
}
else if(compare(tmp, "pizzaria"))
{
if(PlayerArea[playerid] == AreaPizzaria)
{
IniciandoAssalto[playerid] = 2;
Assaltando[playerid] = 1;
GameTextForPlayer(playerid, "~r~ Assaltando...", 5000,0);
SendClientMessage(playerid, COLOR_ASSALTANTE, "Assalto em andamento...");
SendClientMessage(playerid, COLOR_ASSALTANTE, "Assalto em andamento, fiquem prуximo para que o assalto nгo seja cancelado, mнnimo 2 gangsters.");
for(new i = 0; i < MAX_SLOTS; i++)
{
if(GetDistanceBetweenPlayers(playerid,i) < 80)
{
if(compare(pStats[playerid][GangueNome], pStats[i][GangueNome]))
{
IniciandoAssalto[i] = 2;
Assaltando[playerid] = 1;
GameTextForPlayer(i, "~r~ Assaltando...", 5000,0);
}
}
}
SetTimerEx("AssaltoGang",5000,0,"dd",playerid, IniciandoAssalto[playerid]);
}
}
else if(compare(tmp, "posto"))
{
if(PlayerArea[playerid] == AreaPosto)
{
IniciandoAssalto[playerid] = 3;
Assaltando[playerid] = 1;
GameTextForPlayer(playerid, "~r~ Assaltando...", 5000,0);
SendClientMessage(playerid, COLOR_ASSALTANTE, "Assalto em andamento...");
SendClientMessage(playerid, COLOR_ASSALTANTE, "Assalto em andamento, fiquem prуximo para que o assalto nгo seja cancelado, mнnimo 2 gangsters.");
for(new i = 0; i < MAX_SLOTS; i++)
{
if(GetDistanceBetweenPlayers(playerid,i) < 80)
{
if(compare(pStats[playerid][GangueNome], pStats[i][GangueNome]))
{
IniciandoAssalto[i] = 3;
Assaltando[playerid] = 1;
GameTextForPlayer(i, "~r~ Assaltando...", 5000,0);
}
}
}
format(string, sizeof string, "Para ganhar mais dinheiro no %s, fique o maior tempo possнvel.", tmp);
SendClientMessage(playerid, COLOR_ASSALTANTE, string);
SetTimerEx("AssaltoGang",5000,0,"dd",playerid, IniciandoAssalto[playerid]);
}
}
return 1;
}
public AssaltoGang(playerid, loja){
new string[128];
if(loja == 1){
if(PlayerArea[playerid] == AreaBanco){
ValuerMaximo[playerid] = 3000;
new rand = random(5);
if(rand == 1 || rand == 2){
if(pickupbancoselecionada[playerid] == 1){
format(string, sizeof(string), "Assalto a Banco ( Banco de Little Mexico )");
}
else if(pickupbancoselecionada[playerid] == 2){
format(string, sizeof(string), "Assalto a Banco ( Banco de Temple )");
}
else if(pickupbancoselecionada[playerid] == 3){
format(string, sizeof(string), "Assalto a Banco ( Banco de Rodeo )");
}
else if(pickupbancoselecionada[playerid] == 4){
format(string, sizeof(string), "Assalto a Banco ( Banco de East Beach )");
}
if(IsPlayerTransparent(playerid)){
SendClientMessageToAll(COLOR_PINK,"New Paper's Life:");
SendClientMessageToAll(COLOR_WHITE, "[JORNAL] O Alarme de algum banco foi acionado, a polнcia foi avisada.");
format(string, sizeof(string), "Suspeitos: Gang desconhecida.");
SendClientMessageToAll(COLOR_JUIZ, string);
SendClientMessage(playerid, COLOR_ASSALTANTE, "Saia daн o mais rбpido possнvel, a polнcia pode estar chegando.");
AcusacaoCrime(playerid, "Alarme do Banco", "NONE" , string , 0, 0, 0, 0);
} else {
SendClientMessageToAll(COLOR_PINK,"New Paper's Life:");
SendClientMessageToAll(COLOR_WHITE, "[JORNAL] O Alarme de algum banco foi acionado, a polнcia foi avisada.");
format(string, sizeof(string), "Suspeitos: Gangue %s.", pStats[playerid][GangueNome]);
SendClientMessageToAll(COLOR_JUIZ, string);
SendClientMessage(playerid, COLOR_ASSALTANTE, "Saia daн o mais rбpido possнvel, a polнcia pode estar chegando.");
AcusacaoCrime(playerid, "Alarme do Banco", "NONE" , string , 3, 0, 0, 0);
}
}
SendClientMessage(playerid, COLOR_ASSALTANTE, "E O SHOW VAI COMEЗAR, TODOS NO CHГO.");
if(QtLoopAssalto[playerid] > 0){
format(string, sizeof(string), "Vocкs tem mais de $%d00 roubados do banco.", QtLoopAssalto);
SendClientMessage(playerid, COLOR_WHITE, string);
}
new vlr = random(10)+1;
QtLoopAssalto[playerid] = QtLoopAssalto[playerid] + vlr;
SetTimerEx("AssaltoGang",10000,0,"dd",playerid, loja);
}
}
else if(loja == 2){
if(PlayerArea[playerid] == AreaPizzaria){
ValuerMaximo[playerid] = 1500;
SendClientMessage(playerid, COLOR_ASSALTANTE, "Passem o dinheiro, nada de pizzas quero dinheiro!");
if(QtLoopAssalto[playerid] > 0){
format(string, sizeof(string), "Vocкs tem mais de $%d00 roubados da pizzaria.", QtLoopAssalto);
SendClientMessage(playerid, COLOR_WHITE, string);
}
new vlr = random(4)+1;
QtLoopAssalto[playerid] = QtLoopAssalto[playerid] + vlr;
SetTimerEx("AssaltoGang",10000,0,"dd",playerid, loja);
}
}
else if(loja == 3){
if(PlayerArea[playerid] == AreaPosto){
ValuerMaximo[playerid] = 2000;
SendClientMessage(playerid, COLOR_ASSALTANTE, "Й UM ASSALTO, MГOS AO ALTO NEGADA!");
if(QtLoopAssalto[playerid] > 0){
format(string, sizeof(string), "Vocкs tem mais de $%d00 roubados do posto de gasolina.", QtLoopAssalto);
SendClientMessage(playerid, COLOR_WHITE, string);
}
new vlr = random(6)+1;
QtLoopAssalto[playerid] = QtLoopAssalto[playerid] + vlr;
SetTimerEx("AssaltoGang",10000,0,"dd",playerid, loja);
}
}
if(QtLoopAssalto[playerid] >= ValuerMaximo[playerid]){
AddPlayerMoney(playerid,QtLoopAssalto[playerid],3);
format(string, sizeof(string), "Assalto realizado! Vocкs conseguiram levar $%d00 dуlares do assalto, CORRAM!", QtLoopAssalto);
SendClientMessage(playerid, COLOR_WHITE, string);
Assaltando[playerid] = 0;
SetTimerEx("LimparTempoAssalto",600000,0,"d",playerid);
if(loja == 1){
if(pickupbancoselecionada[playerid] == 1){
SetPlayerVirtualWorld(playerid, 0);
SetPlayerInterior(playerid,0);
SetPlayerFacingAngle(playerid,260.9407);
SetPlayerPos(playerid,1771.7144,-1655.8201,14.4236);
}
else if(pickupbancoselecionada[playerid] == 2){
SetPlayerVirtualWorld(playerid, 0);
SetPlayerInterior(playerid,0);
SetPlayerFacingAngle(playerid,260.9407);
SetPlayerPos(playerid,1386.0540,-1015.7602,26.6676);
}
else if(pickupbancoselecionada[playerid] == 3){
SetPlayerVirtualWorld(playerid, 0);
SetPlayerInterior(playerid,0);
SetPlayerFacingAngle(playerid,260.9407);
SetPlayerPos(playerid,419.7245,-1428.6298,32.4797);
}
else if(pickupbancoselecionada[playerid] == 4){
SetPlayerVirtualWorld(playerid, 0);
SetPlayerInterior(playerid,0);
SetPlayerFacingAngle(playerid,260.9407);
SetPlayerPos(playerid,2862.3201,-1440.2727,10.9410);
}
}
}
}
public LimparTempoAssalto(playerid){
Assaltando[playerid] = 1;
}
public Assalto(playerid){
TempoAssalto[playerid]=0;
SendClientMessage(playerid,COLOR_TRAFICANTE, "A poeira baixou, jб й possнvel que vocк realize outro Assalto.");
}
Se eu tiver errado, entгo n sei :/
Re: Assalto em gangue -
[BR]Michael - 31.08.2012
A hora que eu chegar em casa eu vou testar, obrigado amigo.