Portal SAMP
[Ajuda] Localizar caixinha - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Localizar caixinha (/showthread.php?tid=4088)



Localizar caixinha - L10motos - 17/10/2023

O que vocês acharam, funcional?

Código PHP:
CMD:localizarcaixa(playerid, const params[]) {
    if(!IsPlayerLogged(playerid))
        return 1;
                     new Float:p[3];
        
            for(new 0MAX_PLAYERSi++) { if(IsPlayerConnected(i)) { if(PlayerInfo[i][pTimerRobATM] != 0GetPlayerPos(ip[0], p[1], p[2]); } }
        
            
                    SetPlayerCheckpoint
(playeridp[0], p[1], p[2], 2.0);
       SCM(playeridCOLOR_GREY"debug");
                return 
1;




RE: Localizar caixinha - pushline - 17/10/2023

Funcionar até funciona... Mas se tiver 50 caixas sendo roubado, ele só vai setar o checkpoint no último player que estiver roubando.
E não se esqueça de desativar o checkpoint ao entrar nele (DisablePlayerCheckpoint).


RE: Localizar caixinha - L10motos - 17/10/2023

(17/10/2023 16:39)pushline Escreveu: Mas se tiver 50 caixas sendo roubado, ele só vai setar o checkpoint no último player que estiver roubando.

Preciso ficar preocupado com isso? Como eu faço pra não sentar para o ultimo player, ser aleatório?

Me ajuda a otimizar, organizar esse codigo?

Código PHP:
CMD:localizarcaixa(playerid, const params[]) {
    if(!IsPlayerLogged(playerid))
        return 1;
        
    
//if(!Police(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Você não é um policial para poder continuar.");
    //if(OnDuty[playerid] != 1) return SCM(playerid, COLOR_GREY, "Para continuar você precisa bater o seu cartão.");

    
new Float:p[3], vacancies 0;
    for(new 
0MAX_PLAYERSi++) { if(IsPlayerConnected(i)) { if(PlayerInfo[i][pTimerRobATM] != 0GetPlayerPos(ip[0], p[1], p[2]), vacancies++; } }

    if(
vacancies >= 1)
    {
        SetPlayerCheckpoint(playeridp[0], p[1], p[2], 2.0);
        SCM(playeridCOLOR_GREY"debug");
    }
    else SCM(playeridCOLOR_GREY"Não há roubo de caixas eletrônicos.");
    return 
1;




RE: Localizar caixinha - pushline - 17/10/2023

Código PHP:
CMD:localizarcaixa(playerid, const params[])
{
    if(!
IsPlayerLogged(playerid))
        return 
1;
            
    
//if(!Police(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Você não é um policial para poder continuar.");
    //if(OnDuty[playerid] != 1) return SCM(playerid, COLOR_GREY, "Para continuar você precisa bater o seu cartão.");

    
new playersStealing 0randomPlayer[MAX_PLAYERS];
    for(new 
0MAX_PLAYERSi++) { 
        if(
IsPlayerConnected(i) && PlayerInfo[i][pTimerRobATM] != 0) {
            
randomPlayer[i] = i;
            
playersStealing++; 
        }
    }

    if(
playersStealing 0)
    {
        new 
targetid;
        for(new 
isizeof(randomPlayer); i++)
        {
            
targetid i;
            if(
targetid == playerid || PlayerInfo[targetid][pTimerRobATM] == 0
                continue;

            break;
        }

        new 
xyz;
        
GetPlayerPos(targetidxyz);

        
SetPlayerCheckpoint(playeridxyz2.0);
        
SCM(playeridCOLOR_GREY"debug");
    }
    else 
        
SCM(playeridCOLOR_GREY"Não há roubo de caixas eletrônicos.");

    return 
1;


Fiz rapidão, nem sei se funciona direito.


RE: Localizar caixinha - L10motos - 17/10/2023

[quote="pushline" pid="15807" dateline="1697574292"]
Código PHP:
COMMAND:entrarorg(playeridparams[]){
    if(!
IsPlayerLogged(playerid))
        return 
1;

    
//if(!Police(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Você não é um policial para poder continuar.");
    //if(OnDuty[playerid] != 1) return SCM(playerid, COLOR_GREY, "Para continuar você precisa bater o seu cartão.");

    
new megastring[2000], string[256], cont 0;
    
format(stringsizeof(string), " \tOrganização:\n");
    
strcat(megastringstring);

    for(new 
0MAX_PLAYERSi++){
        if(!
IsPlayerConnected(i))
            return 
1;

           for(new 
0sizeof(SBizzInfo); ++s){
            if(
PlayerToPoint(30.0iSBizzInfo[s][sbEntranceX], SBizzInfo[s][sbEntranceY], SBizzInfo[s][sbEntranceZ])){
                if(!
strcmp("caixa eletrônico"get_sbizz_typename(s), true) && PlayerInfo[i][pTimerRobATM] != 0){

                    
showtheft[playerid][cont] = i;
                    
cont++;

                    new 
location[MAX_ZONE_NAME];
                    
GetPlayer2DZoneEx(ilocationMAX_ZONE_NAME);
                    
format(stringsizeof(string), "%02d - %s\t(%s)\n"ilocationTeamName(gTeam[i]));
                    
strcat(megastringstring);

                }
            }
        }
    }
    if(
cont == 0SCM(playeridCOLOR_GREY"Não há roubo de caixas eletrônicos.");
    else 
ShowPlayerDialog(playeridDIALOG_THEFTDIALOG_STYLE_TABLIST_HEADERS"Roubos disponíveis"megastring"Confirmar""Fechar");
    return 
1//erro aqui


Quando digito o comando não mostra nada, nada aparece...


RE: Localizar caixinha - leonardos08bt - 17/10/2023

Uma opção:

Caso tenha em uma variável a criação do caixa ( Caixa[...] = CreateObject(...); ):

Código:
CMD:localizarcaixa(playerid, const params[]) {
    if(!IsPlayerLogged(playerid))
        return 1;
    new idcx = -1;
    if(sscanf(params, "d", idcx)) return SCM(playerid, -1, "/LocalizarCaixa [id]");

    if(!IsValidObject(Caixa[idcx]) return SCM(playerid, -1, "Este caixa não existe");

    //Verifique se o caixa está sendo roubado..

    new Float:p[3];

    GetObjectPos(Caixa[idcx], p[0], p[1], p[2]);
    SetPlayerCheckpoint(playerid, p[0], p[1], p[2], 2.0);
    SCM(playerid, COLOR_GREY, "debug");
    return 1;
Esse código é o seguinte, o polícial* precisa saber o id do caixa que está sendo roubado, ele digita o ID e a posição do caixa é marcada em seu mapa, isso é apenas uma opção/ideia.


RE: Localizar caixinha - L10motos - 17/10/2023

Vocês foram reputados!