[Pedido] Quantia
#1

Bem, eu fiz um sistema de inventбrio no qual o id dos items sгo armazenados na variavel pItemSlot, funciona mais ou menos assim:

PHP код:
pInv[playerid][pItemSlot][numero do slot] = id do item;
Exemplo:
pInv[playerid][pItemSlot][0] = 3// setei o valor da variavel no slot 0 com o id do item, no caso o item 3 corresponde ao item de kit medico
pInv[playerid][pItemSlot][1] = 9// setei o valor da variavel do slot 1 para o item id 9
pInv[playerid][pItemSlot][2] = 25// setei o valor do slot 2 para 25
// e assim por diante 
Bem, eu estou precisando fazer uma funзгo para checar se o jogador possui 1 ou mais do mesmo item, porйm nгo faзo a minima ideia de como fazer isso

Exemplo: se eu quero saber se o jogador tem dois items id: 3

PHP код:
if(CheckItem(playeridid do item) == quantidade// Aqui ele checa se o jogador tem dois items iguais no inventбrio
if(CheckItem(playerid3) == 2// aqui ele verifica se o jogador tem 2 items do id 3 
Reply
#2

faзa um loop sobre os slots verificando os ids
Reply
#3

Quote:
Originally Posted by Whoo
Посмотреть сообщение
faзa um loop sobre os slots verificando os ids
Assim?

PHP код:
stock CheckItem(playeriditemid)
{
    for(new 
iMAX_SLOTSi++) // faz o loop em todos os slots
    
{
        if(
pInv[playerid][pItemSlot][i] == itemid// checa se o item no slot for igual ao item desejado
        
{
            return 
true// retorna verdadeiro
        
}
    }
    return 
false;

esse cуdigo ele sу checa se tem o id e nгo a quantidade dele no inventбrio
Reply
#4

Код:
stock QuantItem(playerid, itemid)
{
	new numeros_itens ;
	
    for(new i; i < MAX_SLOTS; i++) // faz o loop em todos os slots
    {
        if(pInv[playerid][pItemSlot][i] == itemid) numeros_itens++;
    }
    return numeros_itens;
}

printf("Vocк tem %d itens do mesmo id.", numeros_itens);
Reply
#5

Quote:
Originally Posted by Whoo
Посмотреть сообщение
Код:
stock QuantItem(playerid, itemid)
{
	new numeros_itens ;
	
    for(new i; i < MAX_SLOTS; i++) // faz o loop em todos os slots
    {
        if(pInv[playerid][pItemSlot][i] == itemid) numeros_itens++;
    }
    return numeros_itens;
}

printf("Vocк tem %d itens do mesmo id.", numeros_itens);
Vou tentar aqui, obrigado

@EDIT

Nooosa, funcionou direitinho, agora poderei fazer meu sistema de craft
Reply
#6

Outra coisa, eu fiz essa funзгo de adicionar item ao inventбrio

PHP код:
stock AddItem(playeriditemid)
{
    for(new 
iMAX_SLOTSi++) 
    {
        if(
pInv[playerid][pItemSlot][i] == 0// checa se tem um slot disponivel para colocar o item
        
{
            
pInv[playerid][pItemSlot][i] = itemid// seta o id do item na variavel do slot
            
break; // quebra o loop
        
}
    }
    return 
1;

essa funзгo ela adiciona apenas 1 item ao inventбrio, ou seja, se eu precisar colocar 2 items iguais eu teria que fazer assim

AddItem(playerid, 1);
AddItem(playerid, 1);

repetir a funзгo, mas eu gostaria de fazer assim AddItem(playerid, id do item, quantidade);

AddItem(playerid, 1, 2); // Adiciona 2 items id 1

como eu poderia fazer assim?
Reply
#7

Quote:

stock AddItem(playerid, itemid)
{
for(new i; i < MAX_SLOTS; i++)
{
if(pInv[playerid][pItemSlot][i] == 0) // checa se tem um slot disponivel para colocar o item
{
pInv[playerid][pItemSlot][i] = itemid; // seta o id do item na variavel do slot
break; // quebra o loop
}
}
return 1;
}

Pelo o que eu entendi voce vai adicionar o item para todos slots

@edit: ok ate ai certo !

Quote:

stock AddItemToSlot(&varslot, itemid)
{
varslot = itemid;
}

e

Quote:

stock AddQuantItem(playerid, slot, n)
{
if(slot > MAX_SLOTS)return Printf("ERRO VAR SLOTS NUMBER %d", slot);
Inv[playerid][QuantItem][slot] = n;
}

Reply
#8

Quote:
Originally Posted by BykiLler
Посмотреть сообщение
Pelo o que eu entendi voce vai adicionar o item para todos slots



ou
Nгo , ele nгo seta todos os slots, ele checa se tem um disponivel e depois seta o item no slot disponivel e quebra o loop, o cуdigo estб funcionando corretamente, sу gostaria de saber como adicionar mais de 1 item com essa funзгo
Reply
#9

se entendi seria isso.
Код:
stock AddItem(playerid, itemid, quantia)
{
	for(new i; i < MAX_SLOTS; i++)
	{
		if(quantia > 0)
		{
			if(pInv[playerid][pItemSlot][i] == 0)
			{
				pInv[playerid][pItemSlot][i] = itemid;
				quantia --;
			}
		}
		else break;
	}
	return 1;
}
Reply
#10

Quote:
Originally Posted by Whoo
Посмотреть сообщение
se entendi seria isso.
Код:
stock AddItem(playerid, itemid, quantia)
{
	for(new i; i < MAX_SLOTS; i++)
	{
		if(quantia > 0)
		{
			if(pInv[playerid][pItemSlot][i] == 0)
			{
				pInv[playerid][pItemSlot][i] = itemid;
				quantia --;
			}
		}
		else break;
	}
	return 1;
}
Nossa Whoo, funcionou perfeitamente

mas poderia me explicar o por que da quantia--; e do else break ?

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)