[Ajuda] Dъvida em relaзгo a atribuiзгo de stock
#1

Olб users, bom dia, gostaria de saber se posso adicionar uma stock como localizaзгo em uma linha de comando...
Eu explico:

Criei uma stock na qual armazenei a localizaзгo de diversos postos de combustнvel, e gostaria de adicionar uma Text3DLabel em todos eles, entгo gostaria de saber se tem como poupar esse trabalho todo, jб que serгo mais de 20 postos.

Resumindo, teria como eu colocar a stock para recolher todas as coordenadas que contйm dentro da mesma, e adicionar em uma sу Create3DTextLabel?

STOCK:

PHP код:
stock NoPosto(playerid) {
    if(
IsPlayerInRangeOfPoint(playerid15.01943.1350, -1772.830913.3906) || IsPlayerInRangeOfPoint(playerid15.01094.2903, -2460.502923.4729)) return 1;
    return 
0;

3DLabel:

PHP код:
format(quantGas128,"{FFFFFF}Posto de Combustнvel\n/Abastecer\n{FF0000}Disponнvel: %i L"gasDisponivel);
GasTOTAL Create3DTextLabel(quantGas, -1, -947.3876, -505.830625.96095000); 
Poderiam me ajudar? Grato desde jб.
Reply
#2

Seu mйtodo й muito ruim. Faзa assim:

Код:
new Float:posto_pos[][] =
{
	{0.0, 0.0, 0.0},
	{1.1, 1.1, 1.1},
	{2.2, 2.2, 2.2}
	// Adicione mais coordenadas
};
new Text3D:GasTOTAL[20 /*nъmero de labels*/];

stock NoPosto(playerid)
{
	for(new i = 0; i < sizeof posto_pos; ++ i)
	{
		if(IsPlayerInRangeOfPoint(playerid, 15.0, posto_pos[i][0], posto_pos[i][1], posto_pos[i][2]))
			return true;
	}

	return false;
}

stock CriarPostoTxtLabel() // OnGameModeInit
{
	for(new i = 0; i < sizeof GasTOTAL; ++ i)
		GasTOTAL[i] = Create3DTextLabel(quantGas, -1, posto_pos[i][0], posto_pos[i][1], posto_pos[i][2], 50, 0, 0); 

	return true;
}
Reply
#3

Quote:
Originally Posted by F1N4L
Посмотреть сообщение
Seu mйtodo й muito ruim. Faзa assim:

Код:
new Float:posto_pos[][] =
{
	{0.0, 0.0, 0.0},
	{1.1, 1.1, 1.1},
	{2.2, 2.2, 2.2}
	// Adicione mais coordenadas
};
new GasTOTAL[20 /*nъmero de labels*/];

stock NoPosto(playerid)
{
	for(new i = 0; i < sizeof posto_pos; ++ i)
	{
		if(IsPlayerInRangeOfPoint(playerid, 15.0, posto_pos[i][0], posto_pos[i][1], posto_pos[i][2]))
			return true;
	}

	return false;
}

stock CriarPostoTxtLabel() // OnGameModeInit
{
	for(new i = 0; i < sizeof GasTOTAL; ++ i)
		GasTOTAL[i] = Create3DTextLabel(quantGas, -1, posto_pos[i][0], posto_pos[i][1], posto_pos[i][2], 50, 0, 0); 

	return true;
}
Precisa de algumas mudanзas.. Pode se utilizar assim

Код:
new Text3D:GasTOTAL[sizeof(posto_pos)];
Sobre sua dъvida, vocк nгo precisa definir STOCK, geralmente й definido stock em includes, pois a funзгo pode nгo ser usada, e se for STOCK, ela nгo acusarб warning no compilador. Se vocк tem certeza que a funзгo serб usada em seu gamemode, nгo precisa deixar como STOCK.
Reply
#4

Quote:
Originally Posted by Locky_
Посмотреть сообщение
Precisa de algumas mudanзas.. Pode se utilizar assim

Код:
new Text3D:GasTOTAL[sizeof(posto_pos)];
Bem lembrado. Obrigado.
Reply
#5

Se quiser mandar texto pro jogador usa essa include do Y-Less #include <YSI\y_areas.inc> https://sampwiki.blast.hk/wiki/YSI:Areas
Reply
#6

Quote:
Originally Posted by F1N4L
Посмотреть сообщение
Seu mйtodo й muito ruim. Faзa assim:

Код:
new Float:posto_pos[][] =
{
	{0.0, 0.0, 0.0},
	{1.1, 1.1, 1.1},
	{2.2, 2.2, 2.2}
	// Adicione mais coordenadas
};
new Text3D:GasTOTAL[20 /*nъmero de labels*/];

stock NoPosto(playerid)
{
	for(new i = 0; i < sizeof posto_pos; ++ i)
	{
		if(IsPlayerInRangeOfPoint(playerid, 15.0, posto_pos[i][0], posto_pos[i][1], posto_pos[i][2]))
			return true;
	}

	return false;
}

stock CriarPostoTxtLabel() // OnGameModeInit
{
	for(new i = 0; i < sizeof GasTOTAL; ++ i)
		GasTOTAL[i] = Create3DTextLabel(quantGas, -1, posto_pos[i][0], posto_pos[i][1], posto_pos[i][2], 50, 0, 0); 

	return true;
}
Sobre sua dъvida, vocк nгo precisa definir STOCK, geralmente й definido stock em includes, pois a funзгo pode nгo ser usada, e se for STOCK, ela nгo acusarб warning no compilador. Se vocк tem certeza que a funзгo serб usada em seu gamemode, nгo precisa deixar como STOCK.
Olб Final, obrigado pela ajuda. Sу pude visualizar sua mensagem agora e fiz o procedimento e funcionou. Porйm com um probleminha...

Fiz um comando para testar a adiзгo de combustнvel, para somar em todos os postos. Porйm, a quantia no database nгo bate com o valor das Label, por exemplo, na Label bate 5 litros, no .ini bate 22 litros.

Poderia me ajudar?
PHP код:
new Entrega_Gas// Valor Dinвmico Combustнvel
#define Quantia_Gas  "TotalGasolina.ini" 
PHP код:
for(new 0sizeof posto_pos; ++ i// OnGameMode
{
        new 
quantGas[80];
        
format(quantGas128,"{FFFFFF}Posto de Combustнvel\n/Abastecer\n{00FF7F}Disponнvel: %i L"Entrega_Gas);
        
GasTOTAL[i] = Create3DTextLabel(quantGas, -1posto_pos[i][0], posto_pos[i][1], posto_pos[i][2], 5000);
}
CarregarGasolina(); 
PHP код:
stock CarregarGasolina() {
    if(
DOF2_FileExists(Quantia_Gas)) {
        
Entrega_Gas DOF2_GetInt(Quantia_Gas"Entrega_Gas");
        
printf("[GAS] Ha um total de %i litros de combustivel nos postos.\r\n"Entrega_Gas);
    }
    else if(!
DOF2_FileExists(Quantia_Gas)) {
        
DOF2_CreateFile(Quantia_Gas);
        
DOF2_SetInt(Quantia_Gas"Entrega_Gas"200);
        
DOF2_SaveFile();
    }
    return 
1;
}
stock SalvarGasolina() {
    if(
DOF2_FileExists(Quantia_Gas))
    {
        
DOF2_SetInt(Quantia_Gas"Entrega_Gas"Entrega_Gas);
        
DOF2_SaveFile();
    }
    else if(!
DOF2_FileExists(Quantia_Gas))
    {
        
DOF2_CreateFile(Quantia_Gas);
        
DOF2_SetInt(Quantia_Gas"Entrega_Gas"200);
        
DOF2_SaveFile();
    }
    
CarregarGasolina();
    return 
1;

No comando, eu utilizei para adicionar 1 litro no posto, e ele automaticamente vai para 22 (Sim, por conta do total de postos que contйm na float que adicionei. Sem problemas). Mas no Label nгo marca 22, e sim 5 litros.
Estou usando a atribuiзгo como:
PHP код:
Entrega_Gas++; 
Agradeзo desde jб.
Reply
#7

Talvez seja bobagem, mas como nгo conheзo o cуdigo completo e sua lуgica, pode ser algo.

Код:
for(new i = 0; i < sizeof posto_pos; ++ i) // OnGameMode 
{ 
        new quantGas[80]; 
        format(quantGas, 128,"{FFFFFF}Posto de Combustнvel\n/Abastecer\n{00FF7F}Disponнvel: %i L", Entrega_Gas); 
        GasTOTAL[i] = Create3DTextLabel(quantGas, -1, posto_pos[i][0], posto_pos[i][1], posto_pos[i][2], 50, 0, 0); 
} 
CarregarGasolina();
Na sua resposta vocк descreve que o valor da label nгo bate com o valor no arquivo .ini.
No cуdigo acima, a funзгo responsбvel por carregar o valor da variбvel Entrega_Gas (CarregarGasolina) vem depois que a variбvel jб foi utilizada.

Vocк disse que estб atribuindo valor а Entrega_Gas, mas nгo mostrou isso no seu cуdigo (acredito nгo ser o problema). Entгo suponho que vocк estб usando a funзгo Update3DTextLabelText para atualizar a label.

Enfim, acredito que o problema esteja na ordem lуgica do cуdigo e nгo necessariamente no cуdigo...
Reply
#8

Bem mano to entrando aqui de paraquedas rsrs,isso que vou dizer pode ter nada haver,mas olhando sua funзгo me deparei com isso:
PHP код:
stock CarregarGasolina() { 
    if(
DOF2_FileExists(Quantia_Gas)) { 
        
Entrega_Gas DOF2_GetInt(Quantia_Gas"Entrega_Gas"); 
        
printf("[GAS] Ha um total de %i litros de combustivel nos postos.\r\n"Entrega_Gas); 
    } 
    else  if(!
DOF2_FileExists(Quantia_Gas)){ 
        
DOF2_CreateFile(Quantia_Gas); 
        
DOF2_SetInt(Quantia_Gas"Entrega_Gas"200); 
        
DOF2_SaveFile(); 
    } 
    return 
1

Vocк verificou na primeira condiзгo se existe o arquivo Quantia_Gas e se existir vai fazer a funзгo que vocк definiu,
Mas em baixo vocк usou outra condicional
PHP код:
else if(!DOF2_FileExists(Quantia_Gas)) { 
        
DOF2_CreateFile(Quantia_Gas); 
        
DOF2_SetInt(Quantia_Gas"Entrega_Gas"200); 
        
DOF2_SaveFile(); 
    } 
Nгo й necessбrio no meu entender,fazer outra verificaзгo,basta usar deste modo:
PHP код:
    else{ 
        
DOF2_CreateFile(Quantia_Gas); 
        
DOF2_SetInt(Quantia_Gas"Entrega_Gas"200); 
        
DOF2_SaveFile(); 
    } 
Bem espero ter ajudado de alguma forma.
Reply
#9

Quote:
Originally Posted by FerrariL
Посмотреть сообщение
Bem mano to entrando aqui de paraquedas rsrs,isso que vou dizer pode ter nada haver,mas olhando sua funзгo me deparei com isso:
PHP код:
stock CarregarGasolina() { 
    if(
DOF2_FileExists(Quantia_Gas)) { 
        
Entrega_Gas DOF2_GetInt(Quantia_Gas"Entrega_Gas"); 
        
printf("[GAS] Ha um total de %i litros de combustivel nos postos.\r\n"Entrega_Gas); 
    } 
    else  if(!
DOF2_FileExists(Quantia_Gas)){ 
        
DOF2_CreateFile(Quantia_Gas); 
        
DOF2_SetInt(Quantia_Gas"Entrega_Gas"200); 
        
DOF2_SaveFile(); 
    } 
    return 
1

Vocк verificou na primeira condiзгo se existe o arquivo Quantia_Gas e se existir vai fazer a funзгo que vocк definiu,
Mas em baixo vocк usou outra condicional
PHP код:
else if(!DOF2_FileExists(Quantia_Gas)) { 
        
DOF2_CreateFile(Quantia_Gas); 
        
DOF2_SetInt(Quantia_Gas"Entrega_Gas"200); 
        
DOF2_SaveFile(); 
    } 
Nгo й necessбrio no meu entender,fazer outra verificaзгo,basta usar deste modo:
PHP код:
    else{ 
        
DOF2_CreateFile(Quantia_Gas); 
        
DOF2_SetInt(Quantia_Gas"Entrega_Gas"200); 
        
DOF2_SaveFile(); 
    } 
Bem espero ter ajudado de alguma forma.
Obrigado pela observaзгo Ferraril, mas creio que nгo irб solucionar meu problema. Mas agradeзo pela atenзгo
Reply
#10

@RESOLVIDO
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)