11.07.2013, 15:48
(
Last edited by Tee7even; 11/07/2013 at 08:14 PM.
)
Раз уж тема приподнялась то, чтобы не создавать новую тему, я пожалуй спрошу здесь.
Что здесь не правильно? Следующая функция выдает игроку в инвентарь предмет с расчитыванием того, сколько надо положить в каждый слот, чтобы не больше максимального значения.
В данном случае слотов 5 (INVENTORY_SLOTS). А максимальное количество в слот для предмета - 16. Когда я выдаю себе кол-во, которое больше всего инвентаря (больше 80) сервер выдает следущее:
И далее на все команды так реагирует...
EDIT:
Да, я эпичный долбо*б, величина стрингов это все дело и убила...
Что здесь не правильно? Следующая функция выдает игроку в инвентарь предмет с расчитыванием того, сколько надо положить в каждый слот, чтобы не больше максимального значения.
Code:
public GivePlayerItem(playerid,itemid,amount,param) { new stack; if(IsItemStackedMax(itemid)) stack = MAX_STACK; else if(IsItemStackedMedium(itemid)) stack = MEDIUM_STACK; else stack = MIN_STACK; new slot[256], amo[256], par[256]; for(new i;i<INVENTORY_SLOTS;i++) { format(slot, sizeof(slot), "sl%i", i); format(amo, sizeof(amo), "sl%iam", i); if ((GetPVarInt(playerid,slot)==itemid||GetPVarInt(playerid,slot)==0)&&GetPVarInt(playerid,amo)<stack) { format(par, sizeof(par), "sl%iparam", i); new a = stack-GetPVarInt(playerid,amo);//a - свободное место в слоте if (amount>a)//если количество предмета больше свободного места в слоте { new b = amount-a;//b - остаток предмета new p; SetPVarInt(playerid, slot,itemid); SetPVarInt(playerid, par,param); SetPVarInt(playerid, amo,GetPVarInt(playerid,amo)+a); p = GivePlayerItem(playerid,itemid,b,param); return p; } else if (amount<=a) { SetPVarInt(playerid, slot,itemid); SetPVarInt(playerid, par,param); SetPVarInt(playerid, amo,GetPVarInt(playerid,amo)+amount); return 0; } break; } } return amount; }
Quote:
SERVER: Unknown Command |
EDIT:
Да, я эпичный долбо*б, величина стрингов это все дело и убила...