Tumba
Специалист
Видео системы:
Писал эту систему для своего мода.Решил поделиться с вами.
Моя система не будет ориентирована конкретно под какой то мод.Пишу все объясняя, самим придется немного подумать.
Итак, начнем.
Для начала нам нужно добиться сохранения идов скинов.Для этого в enum с переменными аккаунта(в разных модах он имеет разные имена, но в основном enum pInfo добавим три новые переменные.Это будет выглядить примерно так.
skin1,skin2 и skin3 это у нас будут иды скинов 1, 2 и 3 соответственно.
Ну, надеюсь добавили?Идем дальше.
Теперь нам надо обеспечить сохранение и загрузку этих трех переменных.
Как я уже говорил моды бывают разные и я рассмотрю самый распространенный случай.
Сначала создадим загрузку этих 3 переменных.
Ищим паблик OnPlayerLogin ну если он у вас имеет другое название, вам придется поискать.
Ищим в нем примерно вот такой текст:
И продолжите его следующими записями.
В моем случае это будет выглядить так:
Ну теперь перейдем к сохранению этих самых переменных.В основном паблик сохранения игрока имеет название OnPlayerUpdate, так что ищим его.Дальше находим в нем примерно вот такие строчки:
И снижу продолжаем этот код следующими записями:
В моем случае это будет выглядить так:
Так, загрузку и сохранение переменных мы обеспечили.
Теперь нам нужно сделать так, чтобы эти три переменные к чему то присваивались, верно?
Вам придется найти код покупки одежды.Ищите тот текст, который вам пишется после покупки одежды.И там вставляйте следующее:
Ну если у вас вас возникнут вопросы по этому пункту, пишите мне в скайп kirill_kill2.
Ну теперь мы обеспечили присвоение этим трем переменным.Сделаем команду вызова диалога со сменой одежды.В паблик OnPlayerComandText
Также вы можете здесь добавить проверку, например если игрок находится дома, иначе нельзя.
Ну теперь нам надо обозначить действия для этого диалога.Ищим паблик OnPlayerDialogResponse и добавляем туда:
Теперь после этого добавляем второй диалог:
Для мода на основе РЛС
Так и быть объясню как это делать для рлс.В начале делаем все как написано в первом посту.Потом начиная от:
Ищим:
Нашли?Хорошо, и там дальше ищим:
Вот как раз сюда это и нужно было вставить.Точно также вставите для женской раздевалки, она немного ниже.
Ах, да и для мода рлс везде в моем мануале
заменяете на
Еще раз повторяю система не ориентирована конкретно под какой то мод.Если будут проблемы с переменными, или еще какие-нибудь пишите, помогу.
Моя система не будет ориентирована конкретно под какой то мод.Пишу все объясняя, самим придется немного подумать.
Итак, начнем.
Для начала нам нужно добиться сохранения идов скинов.Для этого в enum с переменными аккаунта(в разных модах он имеет разные имена, но в основном enum pInfo добавим три новые переменные.Это будет выглядить примерно так.
PHP:
enum pInfo
{
тут ваши переменные,
тут ваши переменные,
тут ваши переменные,
skin1,
skin2,
skin3
};
Ну, надеюсь добавили?Идем дальше.
Теперь нам надо обеспечить сохранение и загрузку этих трех переменных.
Как я уже говорил моды бывают разные и я рассмотрю самый распространенный случай.
Сначала создадим загрузку этих 3 переменных.
Ищим паблик OnPlayerLogin ну если он у вас имеет другое название, вам придется поискать.
Ищим в нем примерно вот такой текст:
PHP:
iniGetInt(File,"UpgradePoints",PlayerInfo[playerid][gPupgrade]);
iniGetInt(File,"ConnectTime",PlayerInfo[playerid][pConnectTime]);
iniGetInt(File,"Registered",PlayerInfo[playerid][pReg]);
iniGetInt(File,"Sex",PlayerInfo[playerid][pSex]);
iniGetInt(File,"Age",PlayerInfo[playerid][pAge]);
iniGetInt(File,"Origin",PlayerInfo[playerid][pOrigin]);
iniGetInt(File,"CK",PlayerInfo[playerid][pCK]);
iniGetInt(File,"Vig",PlayerInfo[playerid][pVig]);
iniGetInt(File,"Muted",PlayerInfo[playerid][pMuted]);
iniGetInt(File,"Respect",PlayerInfo[playerid][pExp]);
iniGetInt(File,"Money",PlayerInfo[playerid][pCash]);
iniGetInt(File,"Bank",PlayerInfo[playerid][pAccount]);
iniGetInt(File,"Crimes",PlayerInfo[playerid][pCrimes]);
iniGetInt(File,"Kills",PlayerInfo[playerid][pKills]);
iniGetInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
PHP:
iniGetInt(File,"Skin1",PlayerInfo[playerid][skin1]);
iniGetInt(File,"Skin2",PlayerInfo[playerid][skin2]);
iniGetInt(File,"Skin3",PlayerInfo[playerid][skin3]);
PHP:
iniGetInt(File,"UpgradePoints",PlayerInfo[playerid][gPupgrade]);
iniGetInt(File,"ConnectTime",PlayerInfo[playerid][pConnectTime]);
iniGetInt(File,"Registered",PlayerInfo[playerid][pReg]);
iniGetInt(File,"Sex",PlayerInfo[playerid][pSex]);
iniGetInt(File,"Age",PlayerInfo[playerid][pAge]);
iniGetInt(File,"Origin",PlayerInfo[playerid][pOrigin]);
iniGetInt(File,"CK",PlayerInfo[playerid][pCK]);
iniGetInt(File,"Vig",PlayerInfo[playerid][pVig]);
iniGetInt(File,"Muted",PlayerInfo[playerid][pMuted]);
iniGetInt(File,"Respect",PlayerInfo[playerid][pExp]);
iniGetInt(File,"Money",PlayerInfo[playerid][pCash]);
iniGetInt(File,"Bank",PlayerInfo[playerid][pAccount]);
iniGetInt(File,"Crimes",PlayerInfo[playerid][pCrimes]);
iniGetInt(File,"Kills",PlayerInfo[playerid][pKills]);
iniGetInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
iniGetInt(File,"Skin1",PlayerInfo[playerid][skin1]);
iniGetInt(File,"Skin2",PlayerInfo[playerid][skin2]);
iniGetInt(File,"Skin3",PlayerInfo[playerid][skin3]);
PHP:
iniSetInt(File,"CK",PlayerInfo[playerid][pCK]);
iniSetInt(File,"Vig",PlayerInfo[playerid][pVig]);
iniSetInt(File,"Muted",PlayerInfo[playerid][pMuted]);
iniSetInt(File,"Respect",PlayerInfo[playerid][pExp]);
PHP:
iniSetInt(File,"Skin1",PlayerInfo[playerid][skin1]);
iniSetInt(File,"Skin2",PlayerInfo[playerid][skin2]);
iniSetInt(File,"Skin3",PlayerInfo[playerid][skin3]);
PHP:
iniSetInt(File,"CK",PlayerInfo[playerid][pCK]);
iniSetInt(File,"Vig",PlayerInfo[playerid][pVig]);
iniSetInt(File,"Muted",PlayerInfo[playerid][pMuted]);
iniSetInt(File,"Respect",PlayerInfo[playerid][pExp]);
iniSetInt(File,"Skin1",PlayerInfo[playerid][skin1]);
iniSetInt(File,"Skin2",PlayerInfo[playerid][skin2]);
iniSetInt(File,"Skin3",PlayerInfo[playerid][skin3]);
Теперь нам нужно сделать так, чтобы эти три переменные к чему то присваивались, верно?
Вам придется найти код покупки одежды.Ищите тот текст, который вам пишется после покупки одежды.И там вставляйте следующее:
PHP:
if(PlayerInfo[playerid][skin1] == 0)//Если скин 1 равен 0
{
PlayerInfo[playerid][skin1] = PlayerInfo[playerid][pModel];//То присваиваем ему значение иду скина, который сейчас одет на нас
SendClientMessage(playerid, COLOR_RED , "Вы можете еще сделать две покупки");
}
else if(PlayerInfo[playerid][skin2] == 0)//Если скин 2 равен 0
{
PlayerInfo[playerid][skin2] = PlayerInfo[playerid][pModel];//То присваиваем ему значение иду скина, который сейчас одет на нас
SendClientMessage(playerid, COLOR_RED , "Вы можете еще сделать одну покупку");
}
else if(PlayerInfo[playerid][skin3] == 0)//Если скин 3 равен 0
{
PlayerInfo[playerid][skin3] = PlayerInfo[playerid][pModel];//То присваиваем ему значение иду скина, который сейчас одет на нас
}
Ну теперь мы обеспечили присвоение этим трем переменным.Сделаем команду вызова диалога со сменой одежды.В паблик OnPlayerComandText
PHP:
if(strcmp(cmd,"/odejda",true) == 0)
{
ShowPlayerDialog(playerid,534,DIALOG_STYLE_LIST,"Сменить одежду","Одежда №1\Одежда №2\Одежда №3","ОК","Отмена");
return 1;
}
Ну теперь нам надо обозначить действия для этого диалога.Ищим паблик OnPlayerDialogResponse и добавляем туда:
PHP:
case 534:
{
if(response)
{
switch(listitem)
{
case 0://Если игрок жмет на первый пункт в списке
{
if(PlayerInfo[playerid][skin1] == 0) return SendClientMessage(playerid, COLOR_GREY, "У вас нет одежды под номером 1");//Если у игрока переменная skin1 равна 0, то ясный перец, у него нет этой одежды)))
SetPVarInt(playerid, "PlayerSkin", 1);//эту переменную мы присвоили специально для следующего диалога
ShowPlayerDialog(playerid,535,DIALOG_STYLE_LIST,"Опции","Одеть\nСнять\nВыбросить","ОК","Отмена");
}
case 1://Если игрок жмет на второй пункт в списке
{
if(PlayerInfo[playerid][skin2] == 0) return SendClientMessage(playerid, COLOR_GREY, "У вас нет одежды под номером 2");//Если у игрока переменная skin2 равна 0, то ясный перец, у него нет этой одежды)))
SetPVarInt(playerid, "PlayerSkin", 2);//эту переменную мы присвоили специально для следующего диалога
ShowPlayerDialog(playerid,535,DIALOG_STYLE_LIST,"Опции","Одеть\nСнять\nВыбросить","ОК","Отмена");
}
case 2://Если игрок жмет на третий в списке
{
if(PlayerInfo[playerid][skin3] == 0) return SendClientMessage(playerid, COLOR_GREY, "У вас нет одежды под номером 3");//Если у игрока переменная skin3 равна 0, то ясный перец, у него нет этой одежды)))
SetPVarInt(playerid, "PlayerSkin", 3);//эту переменную мы присвоили специально для следующего диалога
ShowPlayerDialog(playerid,535,DIALOG_STYLE_LIST,"Опции","Одеть\nСнять\nВыбросить","ОК","Отмена");
}
}
}
else
{
}
}
PHP:
case 535:
{
if(response)
{
switch(listitem)
{
case 0://если игрок выбирает пункт одеть
{
if(GetPVarInt(playerid,"PlayerSkin") == 1)//Я же говорил она нам пригодится.То есть мы делаем проверку, какой скин он выбрал в прошлом диалоге
{
if(GetPlayerSkin(playerid) == PlayerInfo[playerid][skin1]) return SendClientMessage(playerid, COLOR_RED, "Эта одежда уже одета на вас!");
PlayerInfo[playerid][pModel] = PlayerInfo[playerid][skin1];
SetPlayerSkin(playerid,PlayerInfo[playerid][pModel]);
SendClientMessage(playerid, COLOR_GREY, "Вы переоделись в одежду под номером 1");
SetPVarInt(playerid,"PlayerSkin",0);
}
else if(GetPVarInt(playerid,"PlayerSkin") == 2)//Я же говорил она нам пригодится.То есть мы делаем проверку, какой скин он выбрал в прошлом диалоге
{
if(GetPlayerSkin(playerid) == PlayerInfo[playerid][skin2]) return SendClientMessage(playerid, COLOR_RED, "Эта одежда уже одета на вас!");
PlayerInfo[playerid][pModel] = PlayerInfo[playerid][skin2];
SetPlayerSkin(playerid,PlayerInfo[playerid][pModel]);
SendClientMessage(playerid, COLOR_GREY, "Вы переоделись в одежду под номером 2");
SetPVarInt(playerid,"PlayerSkin",0);
}
else if(GetPVarInt(playerid,"PlayerSkin") == 3)//Я же говорил она нам пригодится.То есть мы делаем проверку, какой скин он выбрал в прошлом диалоге
{
if(GetPlayerSkin(playerid) == PlayerInfo[playerid][skin3]) return SendClientMessage(playerid, COLOR_RED, "Эта одежда уже одета на вас!");
PlayerInfo[playerid][pModel] = PlayerInfo[playerid][skin3];
SetPlayerSkin(playerid,PlayerInfo[playerid][pModel]);
SendClientMessage(playerid, COLOR_GREY, "Вы переоделись в одежду под номером 3");
SetPVarInt(playerid,"PlayerSkin",0);
}
}
case 1://если игрок выбирает пункт снять
{
if(GetPVarInt(playerid,"PlayerSkin") == 1)
{
if(GetPlayerSkin(playerid) != PlayerInfo[playerid][skin1]) return SendClientMessage(playerid, COLOR_RED, "На вас не одета одежда по номером 1");//Если скин игрока не равняется переменной skin1, то оповещаем игрока
if(PlayerInfo[playerid][pSex] == 1) PlayerInfo[playerid][pModel] = 252;//если он мужик то скин 252
else PlayerInfo[playerid][pModel] = 140;// иначе скин 140
SetPlayerSkin(playerid,PlayerInfo[playerid][pModel]);
SendClientMessage(playerid, COLOR_GREY, "Вы сняли с себя одежду");
}
else if(GetPVarInt(playerid,"PlayerSkin") == 2)
{
if(GetPlayerSkin(playerid) != PlayerInfo[playerid][skin2]) return SendClientMessage(playerid, COLOR_RED, "На вас не одета одежда по номером 2");//Если скин игрока не равняется переменной skin2, то оповещаем игрока
if(PlayerInfo[playerid][pSex] == 1) PlayerInfo[playerid][pModel] = 252;//если он мужик то скин 252
else PlayerInfo[playerid][pModel] = 140;// иначе скин 140
SetPlayerSkin(playerid,PlayerInfo[playerid][pModel]);
SendClientMessage(playerid, COLOR_GREY, "Вы сняли с себя одежду");
}
else if(GetPVarInt(playerid,"PlayerSkin") == 3)
{
if(GetPlayerSkin(playerid) != PlayerInfo[playerid][skin3]) return SendClientMessage(playerid, COLOR_RED, "На вас не одета одежда по номером 3");//Если скин игрока не равняется переменной skin3, то оповещаем игрока
if(PlayerInfo[playerid][pSex] == 1) PlayerInfo[playerid][pModel] = 252;//если он мужик то скин 252
else PlayerInfo[playerid][pModel] = 140;// иначе скин 140
SetPlayerSkin(playerid,PlayerInfo[playerid][pModel]);
SendClientMessage(playerid, COLOR_GREY, "Вы сняли с себя одежду");
}
SetPVarInt(playerid,"PlayerSkin",0);
}
case 2://если игрок выбирает пункт выкинуть
{
if(GetPVarInt(playerid,"PlayerSkin") == 1)
{
if(GetPlayerSkin(playerid) == PlayerInfo[playerid][skin1]) return SendClientMessage(playerid, COLOR_RED, "Сначала снемите эту одежду");
PlayerInfo[playerid][skin1] = 0;//обнуляем переменную
SendClientMessage(playerid, COLOR_GREY, "Вы выкинули одежду номер 1");
}
else if(GetPVarInt(playerid,"PlayerSkin") == 2)
{
if(GetPlayerSkin(playerid) == PlayerInfo[playerid][skin2]) return SendClientMessage(playerid, COLOR_RED, "Сначала снемите эту одежду");
PlayerInfo[playerid][skin2] = 0;//обнуляем переменную
SendClientMessage(playerid, COLOR_GREY, "Вы выкинули одежду номер 2");
}
else if(GetPVarInt(playerid,"PlayerSkin") == 3)
{
if(GetPlayerSkin(playerid) == PlayerInfo[playerid][skin3]) return SendClientMessage(playerid, COLOR_RED, "Сначала снемите эту одежду");
PlayerInfo[playerid][skin3] = 0;//обнуляем переменную
SendClientMessage(playerid, COLOR_GREY, "Вы выкинули одежду номер 3");
}
SetPVarInt(playerid,"PlayerSkin",0);
}
}
}
else
{
}
}
Так и быть объясню как это делать для рлс.В начале делаем все как написано в первом посту.Потом начиная от:
PHP:
if(PlayerInfo[playerid][skin1] == 0)//Если скин 1 равен 0
{
PlayerInfo[playerid][skin1] = PlayerInfo[playerid][pModel];//То присваиваем ему значение иду скина, который сейчас одет на нас
SendClientMessage(playerid, COLOR_RED , "Вы можете еще сделать две покупки");
}
else if(PlayerInfo[playerid][skin2] == 0)//Если скин 2 равен 0
{
PlayerInfo[playerid][skin2] = PlayerInfo[playerid][pModel];//То присваиваем ему значение иду скина, который сейчас одет на нас
SendClientMessage(playerid, COLOR_RED , "Вы можете еще сделать одну покупку");
}
else if(PlayerInfo[playerid][skin3] == 0)//Если скин 3 равен 0
{
PlayerInfo[playerid][skin3] = PlayerInfo[playerid][pModel];//То присваиваем ему значение иду скина, который сейчас одет на нас
}
PHP:
else if(Current == skinshopmagaz[0])
PHP:
CharPrice[playerid] = 0;
PlayerInfo[playerid][pCash]-=CharPrice[playerid];
SetPlayerPos(playerid ,209.4333,-7.9053,1001.2109);
TogglePlayerControllable(playerid,1);
SetPlayerVirtualWorld(playerid,0);
PlayerInfo[playerid][pChar] = ChosenSkin[playerid];
SetCameraBehindPlayer(playerid);
SelectCharPlace[playerid] = 0;
SelectCharID[playerid] = 0;
SelectChar[playerid] = 0;
SetPlayerSkin(playerid, PlayerInfo[playerid][pChar]);
Ах, да и для мода рлс везде в моем мануале
PHP:
PlayerInfo[playerid][pModel]
PHP:
PlayerInfo[playerid][pChar]
Последнее редактирование:
