kemperrr
Умник
Здравствуйте пользователи Pawno - Info
Перейдем сразу к делу
В pInfo
PHP:
pInventoryKol[20];
Ко всем stock
PHP:
stock SaveInv(playerid)
{
if(GetPVarInt(playerid,"gPlayerLogged") == 1)
{
new string[550];
for(new i; i < 20; i++)
{
format(PlayerInfo[playerid][pInvs],41, "%s%d,",PlayerInfo[playerid][pInvs],PlayerInfo[playerid][pInventory][i]);
}
for(new i; i < 20; i++)
{
format(PlayerInfo[playerid][pInvsKol], 128, "%s%d",PlayerInfo[playerid][pInvsKol],PlayerInfo[playerid][pInventoryKol][i]);
}
format(string,sizeof(string),"UPDATE `"TABLE_ACCOUNT"` SET `InvSlot` = '%s' , `InvKol` = '%s' WHERE `Name` = '%s'",PlayerInfo[playerid][pInvs],PlayerInfo[playerid][pInvsKol],GetName(playerid));
mysql_query(string, -1, 0, MysqlConnect);
}
return true;
}
Ищем public OnPlayerClickTextDraw
В паблике ищите
PHP:
for(new j = 0; j < 20; j++) // Цикл.
{
if(clickedid == InvTextObj[j][playerid])
{
if(ClickInv[playerid] == 21) // Если игрок не выделил объект то...
{
if(PlayerInfo[playerid][pInventory][j] != 0) // Если данная ячейка не пуста то..
{
ClickInv[playerid] = j; // Записываем в переменную ID иконки
TextDrawBackgroundColor(InvTextObj[j][playerid], 0x00000034); // Меняем цвет фона объекта.
TextDrawHideForPlayer(playerid,InvTextObj[j][playerid]); // Скрываем иконку. [Для обновления]
TextDrawShowForPlayer(playerid,InvTextObj[j][playerid]); // Показываем иконку. [Для обновления]
}
}
else // Если игрок уже выбрал объект то...
{
if(PlayerInfo[playerid][pInventory][j] == 0) // Если данная ячейка пуста то..
{
new ID = ClickInv[playerid];
PlayerInfo[playerid][pInventory][j] = PlayerInfo[playerid][pInventory][ID]; // Записываем новое значени.
PlayerInfo[playerid][pInventory][ID] = 0; // Обнуляем иконку которую выбрали изначально.
//==========================================================
TextDrawBackgroundColor(InvTextObj[ID][playerid], 103); // Меняем цвет фона объекта.
//==========================================================
InvUpdate(playerid, ID, PlayerInfo[playerid][pInventory][ID]); // Обновлем иконку.
InvUpdate(playerid, j, PlayerInfo[playerid][pInventory][j]); // Обновлем иконку.
ClickInv[playerid] = 21; // Обнуляем переменную.
PlayerPlaySound(playerid, 17803, 0.0, 0.0, 0.0); // Воспроизводим звук.
}
if(j == ClickInv[playerid]) // Если же объекты схожи то..
{
ClickInv[playerid] = 21; // Обнуляем переменную.
TextDrawBackgroundColor(InvTextObj[j][playerid], 103); // Меняем цвет фона объекта.
TextDrawHideForPlayer(playerid,InvTextObj[j][playerid]); // Скрываем иконку. [Для обновления]
TextDrawShowForPlayer(playerid,InvTextObj[j][playerid]); // Показываем иконку. [Для обновления]
}
}
}
}
if(clickedid == InvText[5][playerid]) // Кнопка DROP
{
new IDS = ClickInv[playerid];
if(IDS == 21) return SendClientMessage(playerid, COLOR_ERROR, "* Для начала выберете объект в инвентаре.");
new ID = PlayerInfo[playerid][pInventory][IDS];
DropsObject(playerid, ItemsInfo[ID][ItemModel], PlayerInfo[playerid][pInventory][IDS]);
ClickInv[playerid] = 21;
PlayerInfo[playerid][pInventory][IDS] = 0;
PlayerInfo[playerid][pInventoryKol][IDS] = 0;
TextDrawBackgroundColor(InvTextObj[ID][playerid], 103);
InvUpdate(playerid, IDS, PlayerInfo[playerid][pInventory][IDS]);
}
if(clickedid == InvText[6][playerid]) // Кнопка INFO
{
new ID = ClickInv[playerid];
if(ID == 21) return SendClientMessage(playerid, COLOR_ERROR, "* Для начала выберете объект в инвентаре.");
switch(PlayerInfo[playerid][pInventory][ID])
{
case 1: ShowPlayerDialog(playerid,9999,DIALOG_STYLE_MSGBOX,"{0065FD}Информация о предмете","{FFFFFF}Наименование: разнос с едой.\n\nОписание:\n{B3B300}Разнос с едой вы можете съесть и пополнить сытость\nВашего игрового персонажа.","Закрыть", "");
}
}
PHP:
for(new j = 0; j < 20; j++) // Цикл.
{
if(clickedid == InvTextObj[j][playerid])
{
if(ClickInv[playerid] == 21) // Если игрок не выделил объект то...
{
if(PlayerInfo[playerid][pInventory][j] != 0) // Если данная ячейка не пуста то..
{
ClickInv[playerid] = j; // Записываем в переменную ID иконки
TextDrawBackgroundColor(InvTextObj[j][playerid], 0x00000034); // Меняем цвет фона объекта.
TextDrawHideForPlayer(playerid,InvTextObj[j][playerid]); // Скрываем иконку. [Для обновления]
TextDrawShowForPlayer(playerid,InvTextObj[j][playerid]); // Показываем иконку. [Для обновления]
}
}
else // Если игрок уже выбрал объект то...
{
if(PlayerInfo[playerid][pInventory][j] == 0) // Если данная ячейка пуста то..
{
new IID = ClickInv[playerid];
PlayerInfo[playerid][pInventory][j] = PlayerInfo[playerid][pInventory][IID];
PlayerInfo[playerid][pInventoryKol][j] = PlayerInfo[playerid][pInventoryKol][IID]; // Записываем новое значени.
PlayerInfo[playerid][pInventory][IID] = 0; // Обнуляем иконку которую выбрали изначально.
PlayerInfo[playerid][pInventoryKol][IID] = 0;
//==========================================================
TextDrawBackgroundColor(InvTextObj[IID][playerid], 103); // Меняем цвет фона объекта.
//==========================================================
InvUpdate(playerid, IID, PlayerInfo[playerid][pInventory][IID]); // Обновлем иконку.
InvUpdate(playerid, j, PlayerInfo[playerid][pInventory][j]); // Обновлем иконку.
ClickInv[playerid] = 21; // Обнуляем переменную.
PlayerPlaySound(playerid, 17803, 0.0, 0.0, 0.0); // Воспроизводим звук.
}
if(j == ClickInv[playerid]) // Если же объекты схожи то..
{
ClickInv[playerid] = 21; // Обнуляем переменную.
TextDrawBackgroundColor(InvTextObj[j][playerid], 103); // Меняем цвет фона объекта.
TextDrawHideForPlayer(playerid,InvTextObj[j][playerid]); // Скрываем иконку. [Для обновления]
TextDrawShowForPlayer(playerid,InvTextObj[j][playerid]); // Показываем иконку. [Для обновления]
}
}
}
}
if(clickedid == InvText[4][playerid]) // Кнопка USE
{
new IDS = ClickInv[playerid];
if(IDS == 21) return SendClientMessage(playerid, COLOR_ERROR, "* Для начала выберете объект в инвентаре.");
new IID = PlayerInfo[playerid][pInventory][IDS];
UseItem(playerid, IDS, ItemsInfo[IID][ItemModel]); // Запускаем функцию и отправляем ей параметры.
}
if(clickedid == InvText[5][playerid]) // Кнопка DROP
{
new IDS = ClickInv[playerid];
if(IDS == 21) return SendClientMessage(playerid, COLOR_ERROR, "* Для начала выберете объект в инвентаре.");
new IID = PlayerInfo[playerid][pInventory][IDS];
DropsObject(playerid, ItemsInfo[IID][ItemModel], PlayerInfo[playerid][pInventory][IDS], PlayerInfo[playerid][pInventoryKol][IDS]);
ClickInv[playerid] = 21;
PlayerInfo[playerid][pInventory][IDS] = 0;
TextDrawBackgroundColor(InvTextObj[IID][playerid], 103);
InvUpdate(playerid, IDS, PlayerInfo[playerid][pInventory][IDS]);
}
if(clickedid == InvText[6][playerid]) // Кнопка INFO
{
new str[300];
new IID = ClickInv[playerid];
if(IID == 21) return SendClientMessage(playerid, COLOR_ERROR, "* Для начала выберете объект в инвентаре.");
switch(PlayerInfo[playerid][pInventory][IID])
{
case 1:
{
format(str, sizeof(str),"{FFFFFF}Наименование: Разнос с едой.\nКол - во:%i\n\nОписание:\n{B3B300}Разнос с едой вы можете съесть и пополнить сытость\nВашего игрового персонажа.",PlayerInfo[playerid][pInventoryKol][IID]);
ShowPlayerDialog(playerid,9999,DIALOG_STYLE_MSGBOX,"{FF8040}Информация о предмете",str,"Закрыть", "");
}
}
}
PHP:
stock SetItemInv(playerid, itemid, bool:drop, ids) // Функция добавления объекта в инвентарь
{
new full; // Переменная для записи занятых ячеек
for(new j = 0; j < 20; j++) // цикл
{
if(PlayerInfo[playerid][pInventory][j] == 0) // Если слот пустой то..
{
if(drop == true) // Если Drop true то...
{
DropInfo[ids][DropX] = 0.0; // Обнуляем координаты объекта X
DropInfo[ids][DropY] = 0.0; // Обнуляем координаты объекта Y
DropInfo[ids][DropZ] = 0.0; // Обнуляем координаты объекта Z
DropInfo[ids][DropModel] = 0; // Обнуляем id модели объекта
DestroyDynamicObject(DropObject[ids]); // Удаляем сам объект
DestroyDynamic3DTextLabel(DropInfo[ids][DropLabel]); // Удаляем 3dText
ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0); // Проигрываем анимацию поднятия предмета
}
PlayerInfo[playerid][pInventory][j] = itemid; // Записываем новый предмет
if(GetPVarInt(playerid, "gInv") == 1) InvUpdate(playerid, j, j); // Если инвентарь открыт то обновим ячейку
break;
}
else full++; // Если слот не пустой то прибавляем значение
}
if(full == 20) return SendClientMessage(playerid,COLOR_ERROR,"* В инвентаре нету больше места."); // Если все 20 слотов заняты то пишем текст игроку
return true;
}
PHP:
stock SetItemInv(playerid, item, amount)
{
new full; // Переменная для записи занятых ячеек
for(new i = 0; i < 20; i++)
{
if(PlayerInfo[playerid][pInventory][i] != item) continue;
PlayerInfo[playerid][pInventoryKol][i] += amount;
return true;
}
for(new i = 0; i < 20; i++)
{
if(PlayerInfo[playerid][pInventory][i] != 0) continue;
PlayerInfo[playerid][pInventory][i] = item;
PlayerInfo[playerid][pInventoryKol][i] = amount;
full++; // Если слот не пустой то прибавляем значение
if(GetPVarInt(playerid, "gInv") == 1) InvUpdate(playerid, i, i); // Если инвентарь открыт то обновим ячейку
return true;
}
if(full == 20) return SendClientMessage(playerid,COLOR_ERROR,"* В инвентаре нету больше места."); // Если все 20 слотов заняты то пишем текст игроку
return false;
}
PHP:
stock RefreshInv(playerid, slot)
{
ClickInv[playerid] = 21;
PlayerInfo[playerid][pInventory][slot] = 0;
TextDrawBackgroundColor(InvTextObj[slot][playerid], 103);
InvUpdate(playerid, slot, PlayerInfo[playerid][pInventory][slot]);
return true;
}
PHP:
stock RefreshInv(playerid, slot)
{
ClickInv[playerid] = 21;
if(PlayerInfo[playerid][pInventoryKol][slot] != 1)
{
PlayerInfo[playerid][pInventoryKol][slot] -= 1;
}
else
{
PlayerInfo[playerid][pInventory][slot] = 0;
PlayerInfo[playerid][pInventoryKol][slot] = 0;
}
TextDrawBackgroundColor(InvTextObj[slot][playerid], 103);
InvUpdate(playerid, slot, PlayerInfo[playerid][pInventory][slot]);
return true;
}
Ищем:
PHP:
stock DropsObject(playerid, model, ids)
{
new string[128];
for(new i = 0; i < sizeof(DropInfo); i++) // Цикл
{
if(DropInfo[i][DropX] == 0.0 && DropInfo[i][DropY] == 0.0 && DropInfo[i][DropZ] == 0.0) // Проверяем координаты
{
DropInfo[i][DropID] = ids; // Записываем значение
DropInfo[i][DropModel] = model; // Записываем значение
DropInfo[i][DropMir] = GetPlayerVirtualWorld(playerid); // Записываем виртуальный мир
DropInfo[i][DropInt] = GetPlayerInterior(playerid); // Записываем интерьер
GetPlayerPos(playerid, DropInfo[i][DropX], DropInfo[i][DropY], DropInfo[i][DropZ]); // Считываем позицию игрока и записываем
format(string, sizeof(string), "%s\n{408080}Чтобы поднять нажмите клавишу C",ItemsInfo[ids][ItemName]);
switch(model)
{
case 2223: DropObject[i] = CreateDynamicObject(DropInfo[i][DropModel], DropInfo[i][DropX], DropInfo[i][DropY], DropInfo[i][DropZ]-0.91, 0.0, 0.0, 0.0, DropInfo[i][DropMir], DropInfo[i][DropInt], -1, 25.0); // Создаем объект
}
DropInfo[i][DropLabel] = CreateDynamic3DTextLabel(string, 0xFFFFFFFF, DropInfo[i][DropX], DropInfo[i][DropY], DropInfo[i][DropZ]-0.91, 5.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, DropInfo[i][DropMir], DropInfo[i][DropInt], -1, 7.5); // Создаем 3DText
SetPlayerChatBubble(playerid,"положил(а) что-то на землю",COLOR_PURPLE,30.0,10000); // Пишем над головой персонажа текст
ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0); // Проигрываем анимацию
return true;
}
}
return true;
}
PHP:
stock DropsObject(playerid, model, ids, kol)
{
new string[128];
for(new i = 0; i < sizeof(DropInfo); i++) // Цикл
{
if(DropInfo[i][DropX] == 0.0 && DropInfo[i][DropY] == 0.0 && DropInfo[i][DropZ] == 0.0) // Проверяем координаты
{
DropInfo[i][DropID] = ids; // Записываем значение
DropInfo[i][DropKol] = kol;
DropInfo[i][DropModel] = model; // Записываем значение
DropInfo[i][DropMir] = GetPlayerVirtualWorld(playerid); // Записываем виртуальный мир
DropInfo[i][DropInt] = GetPlayerInterior(playerid); // Записываем интерьер
GetPlayerPos(playerid, DropInfo[i][DropX], DropInfo[i][DropY], DropInfo[i][DropZ]); // Считываем позицию игрока и записываем
format(string, sizeof(string), "%s\nКол - во: %i\n{408080}Чтобы поднять нажмите клавишу C",ItemsInfo[ids][ItemName],DropInfo[i][DropKol]);
switch(model)
{
case 2223: DropObject[i] = CreateDynamicObject(DropInfo[i][DropModel], DropInfo[i][DropX], DropInfo[i][DropY], DropInfo[i][DropZ]-0.91, 0.0, 0.0, 0.0, DropInfo[i][DropMir], DropInfo[i][DropInt], -1, 25.0); // Создаем объект
}
DropInfo[i][DropLabel] = CreateDynamic3DTextLabel(string, 0xFFFFFFFF, DropInfo[i][DropX], DropInfo[i][DropY], DropInfo[i][DropZ]-0.91, 5.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, DropInfo[i][DropMir], DropInfo[i][DropInt], -1, 7.5); // Создаем 3DText
SetPlayerChatBubble(playerid,"положил(а) что-то на землю",COLOR_PURPLE,30.0,10000); // Пишем над головой персонажа текст
ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0); // Проигрываем анимацию
return true;
}
}
return true;
}
В загрузку аккаунта
PHP:
cache_get_field_content(0, "InvSlot", maximum), sscanf(maximum, "p<,>a<i>[20]",PlayerInfo[playerid][pInventory]);
cache_get_field_content(0, "InvKol", maximum), sscanf(maximum, "p<,>a<i>[20]",PlayerInfo[playerid][pInventoryKol]);
Последнее редактирование:
