[Ajuda] Passar essa FS pro GM
#1

To tentando passar essa FS de trocar de arma no carro como passageiro pra GM, mas to tendo uns problemas:
http://pastebin.com/yYhjqFq3

a variavel ta sendo declarada assim:
Код:
new pweapon[MAX_PLAYERS] = {0,...};
Mas ta dando erro
Код:
warning 215: expression has no effect
Na linha (em onplayerconnect):
Код:
pweapon[playerid] = 0, 1;
E essa parte eu acho que eu to fazendo merda, pq tem varias outras coisas no meu OnPlayerStateChange
Entгo eu nгo podia fazer como й lб:
Код:
public OnPlayerStateChange(playerid,newstate,oldstate) return newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER ? (pweapon[playerid] = GetPlayerWeapon(playerid),1) : 1;
Com um return, entгo eu fiz como eu achava que devia ser:
Код:
if((newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) ? (pweapon[playerid] = GetPlayerWeapon(playerid),1) : 1);
Mas ta dando esses erros
Код:
error 036: empty statement
Reply
#2

Код:
pweapon[playerid] = 0;
Код:
public OnPlayerStateChange(playerid,newstate,oldstate)
{
	if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
	{
		pweapon[playerid] = GetPlayerWeapon(playerid);
	}
	return 1;
}
Reply
#3

Quote:
Originally Posted by RodrigoMSR
Посмотреть сообщение
Код:
pweapon[playerid] = 0;
Код:
public OnPlayerStateChange(playerid,newstate,oldstate)
{
	if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
	{
		pweapon[playerid] = GetPlayerWeapon(playerid);
	}
	return 1;
}
Assim compila sem erros, mas na hora que eu to de G num carro e eu aperto E ou Q nada acontece

Eu fiz assim...

No topo do GM
Код:
// trocar_arma_passageiro 1
#define isAcceptedDBWeapon(%1) ((%1 >= 22 && %1 <= 34) || %1 == 38)
new pweapon[MAX_PLAYERS] = {0,...};
Em OnPlayerStateChange:
Код:
// trocar_arma_passageiro 2
if(newstate == PLAYER_STATE_PASSENGER) { pweapon[playerid] = GetPlayerWeapon(playerid); }
Em OnPlayerKeyStateChange:
Код:
// trocar_arma_passageiro 3
if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER && (newkeys & 64 || newkeys & 256) && IsPlayerUsingDB(playerid))
{
        new wd[13][2], w = pweapon[playerid], s = GetWeaponSlot(w), acceptedSlots[] = {2,3,4,5,6}, first = acceptedSlots[0], last = acceptedSlots[sizeof(acceptedSlots)-1];
        if(isAcceptedDBWeapon(w))
        {
                for(new i = 0; i < 13; i++) GetPlayerWeaponData(playerid,i,wd[i][0],wd[i][1]);
                new found = w;
                if(newkeys & 64) // next
                {
                        for(new i = s + 1; i <= last && found == w; i++) if(isAcceptedDBWeapon(wd[i][0])) found = wd[i][0];
                        if(found == w) for(new i = first; i < s && found == w; i++) if(isAcceptedDBWeapon(wd[i][0])) found = wd[i][0];
                        if(found != w)
                        {
                                SetPlayerArmedWeapon(playerid,found);
                                pweapon[playerid] = found;
                        }
                }
                else if(newkeys & 256) // previous
                {
                        for(new i = s - 1; i >= first && found == w; i--) if(isAcceptedDBWeapon(wd[i][0])) found = wd[i][0];
                        if(found == w) for(new i = last; i > s && found == w; i--) if(isAcceptedDBWeapon(wd[i][0])) found = wd[i][0];
                        if(found != w)
                        {
                                SetPlayerArmedWeapon(playerid,found);
                                pweapon[playerid] = found;
                        }
                }
        }
}
Nas stocks
Код:
// trocar_arma_passageiro 4
stock IsPlayerUsingDB(playerid,bool:withsomeone = false)
{
    if(GetPlayerState(playerid) != PLAYER_STATE_PASSENGER) return 0;
    new bool:hassomeone = false;
    if(withsomeone)
    {
            new v = GetPlayerVehicleID(playerid);
            for(new i = 0; i < MAX_PLAYERS && !hassomeone; i++) if(IsPlayerConnected(i) && IsPlayerInVehicle(i,v) && GetPlayerState(i) == PLAYER_STATE_DRIVER) hassomeone = true;
    }
    return GetPlayerCameraMode(playerid) == 55 && (!withsomeone || (withsomeone && hassomeone));
}
stock GetWeaponSlot(wid)
{
        switch(wid)
        {
                case 0, 1: return 0;
                case 2..9: return 1;
                case 22..24: return 2;
                case 25..27: return 3;
                case 28, 29, 32: return 4;
                case 30, 31: return 5;
                case 33, 34: return 6;
                case 35..38: return 7;
                case 16..19, 39: return 8;
                case 41..43: return 9;
                case 10..15: return 10;
                case 44..46: return 11;
                case 40: return 12;
                default: return -1;
        }
        return -1;
}
Reply
#4

Por que sу ta trocando a arma enquanto mira, tipo enquanto ta de H

Qnd ta sentado no carro normal sem arma na mгo, nгo troca...

Tem como trocar antes de mirar?
Reply
#5

Remova "IsPlayerUsingDB" da OnPlayerKeyStateChange.
Reply
#6

Consegui, quem quiser fazer a mesma coisa sem ter que ficar trocando a arma pra soco no meio do bagulho й sу colocar:
Код:
            new wd[13][2], w = pweapon[playerid], s = GetWeaponSlot(w), acceptedSlots[] = {2,3,4,5,6}, first = acceptedSlots[0], last = acceptedSlots[sizeof(acceptedSlots)-1];
            if(pweapon[playerid] == 0 || isAcceptedDBWeapon(w))
            {
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)