[Ajuda] InteriorChange
#1

Olб galerinha, meu primeiro post no Fуrum Samp.

й o seguinte, eu fiz um pequeno codigo para retirar as armas do jogador, quando ele entra em um interior.
Quase tudo certinho, porйm, se entrar na ammo ele vai retirar as armas.. mas se o player comprar arma na ammo ele fica com a mesma dentro da ammo. espero que vocкs me ajudem. Desculpe pelos erros de PT.


Код:
public OnPlayerInteriorChange(playerid,newinteriorid,oldinteriorid)
{
	if(newinteriorid && !oldinteriorid)
	{
		for(new i = 0; i < 13; i ++)
		{
			GetPlayerWeaponData(playerid, i, Armas[playerid][i], Ammo[playerid][i]);
		}
		SetPVarInt(playerid, "Armas", 1);
		ResetPlayerWeapons(playerid);
		SendClientMessage(playerid, 0xFFFF00FF, "Suas armas foram retiradas, pois nгo й permitido usб-las em interior. Quando vocк sair, elas serгo devolvidas.");
	}
	else if(!newinteriorid)
	{
		if((GetPVarInt(playerid, "Armas")) && (!GetPVarInt(playerid, "Weapons")))
		{
			for(new i = 0; i < 13; i ++)
				GivePlayerWeapon(playerid, Armas[playerid][i], Ammo[playerid][i]);
			DeletePVar(playerid, "Armas");
			SendClientMessage(playerid, 0xFFFF00FF, "Suas armas foram reentregues.");
		}
		DeletePVar(playerid, "Weapons");
	}
	return 1;
}
Reply
#2

pawn Код:
public OnPlayerInteriorChange(playerid,newinteriorid,oldinteriorid)
{
    if(newinteriorid && !oldinteriorid)
    {
        for(new i = 0; i < 13; i ++)
        {
            GetPlayerWeaponData(playerid, i, Armas[playerid][i], Ammo[playerid][i]);
        }
                new reset;
        SetPVarInt(playerid, "Armas", 1);
        ResetPlayerWeapons(playerid);
                reset = SetTimerEx("resetar", 1000, true, "d", playerid);
        SendClientMessage(playerid, 0xFFFF00FF, "Suas armas foram retiradas, pois nгo й permitido usб-las em interior. Quando vocк sair, elas serгo devolvidas.");
    }
    else if(!newinteriorid)
    {
        if((GetPVarInt(playerid, "Armas")) && (!GetPVarInt(playerid, "Weapons")))
        {
            for(new i = 0; i < 13; i ++)
                GivePlayerWeapon(playerid, Armas[playerid][i], Ammo[playerid][i]);
            DeletePVar(playerid, "Armas");
                        KillTimer("reset");
            SendClientMessage(playerid, 0xFFFF00FF, "Suas armas foram reentregues.");
        }
        DeletePVar(playerid, "Weapons");
    }
    return 1;
}
pawn Код:
forward resetar(playerid);
public resetar(playerid)
{
    ResetPlayerWeapons(playerid);
    return 1;
}
Reply
#3

Ele nгo devolve as armas ao sair da ammo.
Reply
#4

Vocк pode armazenar o ID da arma comprada e a muniзгo da mesma nas variбveis Armas e Ammo de maneira que a arma que estava no slot da arma comprada seja substituнda por esta .



Bem, considerando que vocк se referiu а Ammunation e ao mйtodo padrгo de compra de armas, montei o cуdigo abaixo .



Para utilizб-lo coloque :


pawn Код:
//No OnGameModeInit:

SetTimer("NaAmmunation", 1000, true);


//No Final do GM:

forward NaAmmunation();
public NaAmmunation()
{
    for(new x, y = GetMaxPlayers(); x != y; x++)
    {
        if(GetPlayerWeapon(x) == 0 || GetPlayerInterior(x) != 1) continue; //Troque 1 pelo ID da Ammunation a qual vocк se referiu.
        new arma = GetPlayerWeapon(x);
        Armas[x][GetWeaponSlot(arma)] = arma;
        Ammo[x][GetWeaponSlot(arma)] = GetPlayerAmmo(x);
        ResetPlayerWeapons(x);
    }
    return true;
}



stock GetWeaponSlot(weaponid) //Autor dessa funзгo: Hiddos.
{
    new slot;
    switch(weaponid)
    {
        case 0,1: slot = 0;
        case 2 .. 9: slot = 1;
        case 10 .. 15: slot = 10;
        case 16 .. 18, 39: slot = 8;
        case 22 .. 24: slot =2;
        case 25 .. 27: slot = 3;
        case 28, 29, 32: slot = 4;
        case 30, 31: slot = 5;
        case 33, 34: slot = 6;
        case 35 .. 38: slot = 7;
        case 40: slot = 12;
        case 41 .. 43: slot = 9;
        case 44 .. 46: slot = 11;
    }
    return slot;
}

E por fim troque a public que vocк postou por esta :


pawn Код:
public OnPlayerInteriorChange(playerid,newinteriorid,oldinteriorid)
{
    if(newinteriorid && !oldinteriorid)
    {
        for(new i = 0; i < 13; i ++)
        {
            GetPlayerWeaponData(playerid, i, Armas[playerid][i], Ammo[playerid][i]);
        }
        SetPVarInt(playerid, "Armas", 1);
        ResetPlayerWeapons(playerid);
        SendClientMessage(playerid, 0xFFFF00FF, "Suas armas foram retiradas, pois nгo й permitido usб-las em interior. Quando vocк sair, elas serгo devolvidas.");
    }
    else if(!newinteriorid)
    {
        if((GetPVarInt(playerid, "Armas")) && (!GetPVarInt(playerid, "Weapons")))
        {
            ResetPlayerWeapons(playerid);
            for(new i = 0; i < 13; i ++)    GivePlayerWeapon(playerid, Armas[playerid][i], Ammo[playerid][i]);
            DeletePVar(playerid, "Armas");
            SendClientMessage(playerid, 0xFFFF00FF, "Suas armas foram reentregues.");
        }
        DeletePVar(playerid, "Weapons");
    }
    return 1;
}


Espero ter ajudado .
Reply
#5

Rjjj, estou com um problema parecido. Se fosse salvar as armas na conta do player, pra quando ele logasse no servidor novamente, devolvesse as armas, daria para fazer assim tambйm?
Reply
#6

Quote:
Originally Posted by Hardware
Посмотреть сообщение
Rjjj, estou com um problema parecido. Se fosse salvar as armas na conta do player, pra quando ele logasse no servidor novamente, devolvesse as armas, daria para fazer assim tambйm?
Nesse caso vocк teria apenas que :


1 - Criar variбveis para armazenar os IDs das armas de cada jogador e as muniзхes delas.

2 - Usar GetPlayerWeaponData para armazenar todas as armas e muniзхes em suas devidas variбveis. Isso deve ser feito no OnPlayerDisconnect.

3 - Salvar tudo na conta do jogador, ou seja, o ID e a muniзгo de cada arma do jogador no OnPlayerDisconnect a partir das variбveis.

4 - Carregar tudo quando o jogador voltar ao servidor, ou seja, fazer que com que as variбveis das armas e muniзхes fiquem da mesma forma que estavam antes dele sair pela ъltima vez, alйm de dar as armas de volta ao jogador.


Mas se vocк se referiu aos cуdigos que foram postados neste no tуpico, sim, vocк pode usб-los lembrando de que neles, os nomes das variбveis que guardam as armas e as balas sгo Armas e Ammo, respectivamente .



Espero ter ajudado .
Reply
#7

Obrigado rjjj.

Totalmente funcional. ^^ '
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)