iFlomaster
Ученик
Вобщем при обмене домами (если у обоих игроков дом есть, идет обмен) все нормально, но если у одного нету, то продать второй ему не может.
Детально выглядит так -
Вот сама система -
Детально выглядит так -
PHP:
/changehouse 2 250000
Вы предложили *НИК_Нейм* Купить ваш дома за ***
Введите /ac house чтобы подтвердить сделку
*НИК* предложил обменяться домами *ник*
--вводим /ac house за того кто предложил---
Вы подтвердили сделку!
Второму показывает :
Игрок подтвердил сделку, введие /ac house для продолжения
Вводишь - ничего не происходит.
PHP:
CMD:changehouse(playerid, params[])
{
if(PTEMP[playerid][pLogin] == 0) return true;
if(!HGet(playerid)) return SCM(playerid, COLOR_GREY, "Ó Âàñ íåò äîìà!");
new bouse = PTEMP[playerid][pPHouseKey];
if(sscanf(params, "ud", params[0],params[1])) return SCM(playerid, COLOR_WHITE, " Ââåäèòå: /changehouse [id] [öåíà]");
if(params[1] < 1 || params[0] > 100000000) return SCM(playerid, COLOR_GREY, "Íå ìåíåå 1 è íå áîëåå 100000000 âèðò!");
if(!ProxDetectorS(8.0, playerid, params[0])) return SCM(playerid, COLOR_GREY,"Èãðîê äîëæåí íàõîäèòüñÿ ðÿäîì ñ âàìè!");
if(GetPVarInt(playerid,"changehouse")) return SCM(playerid,COLOR_GREY,"Âû óæå ïðåäëîæèëè êîìó òî êóïèòü âàø äîì!");
if(GetPVarInt(params[0],"_changehouse")) return SCM(playerid,COLOR_GREY,"Ýòîìó èãðîêó óæå ïðåäëîæèëè êóïèòü äîì!");
if(params[0] == playerid) return SCM(playerid, COLOR_GREY, "Âû íå ìîæåòå ïðîäàòü äîì ñàìîìó ñåáå!");
if((!PlayerToPoint(10, playerid,HouseInfo[bouse][hExitx], HouseInfo[bouse][hExity], HouseInfo[bouse][hExitz]) || GetPlayerVirtualWorld(playerid) != bouse+50) && !PlayerToPoint(2.0, playerid, HouseInfo[bouse][hEntrancex], HouseInfo[bouse][hEntrancey], HouseInfo[bouse][hEntrancez])) return SCM(playerid,COLOR_GREY,"Âû äîëæíû íàõîäèòüñÿ âîçëå, èëè âíóòðè âàøåãî äîìà");
if(HGet(params[0]))
{
SendMes(playerid,0x6495EDFF,"Âû ïðåäëîæèëè %s îáìåíÿòüñÿ äîìàìè. Äîïëàòà: [%i âèðò]",PTEMP[params[0]][pName], params[1]);
SendMes(params[0],0x6495EDFF,"%s ïðåäëàãàåò âàì îáìåíÿòüñÿ äîìàìè. Âàøà äîïëàòà: [%i âèðò]",PTEMP[playerid][pName], params[1]);
}
else
{
SendMes(playerid,0x6495EDFF,"Âû ïðåäëîæèëè %s êóïèòü âàø äîì. Ñòîèìîñòü: [%i âèðò]",PTEMP[params[0]][pName], params[1]);
SendMes(params[0],0x6495EDFF,"%s ïðåäëàãàåò âàì êóïèòü åãî äîì. Ñòîèìîñòü: [%i âèðò]",PTEMP[playerid][pName], params[1]);
}
SCM(playerid,0x6495EDFF,"(( Ââåäèòå /(ac)cept house äëÿ ïîäòâåðæäåíèÿ ñäåëêè! ))");
format(YCMDstr, sizeof(YCMDstr), "%s ïðåäëîæèë(à) îáìåíÿòüñÿ äîìàìè %s.",Name(playerid) ,Name(params[0]));
ProxDetector(30.0, playerid, YCMDstr, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
SetPVarInt(playerid,"changehouse",params[0]+1);
SetPVarInt(playerid,"changehouse_price",params[1]);
SetPVarInt(params[0],"_changehouse",playerid+1);
DeletePVar(params[0],"changehouse_h");
return true;
}
PHP:
else if(strcmp(x_job, "house",true) == 0)
{
if(GetPVarInt(playerid,"changehouse"))
{
new i = GetPVarInt(playerid,"changehouse")-1;
if(!HGet(playerid)) return SCM(playerid,COLOR_GREY,"У вас нет дома!"), DeletePVar(playerid,"changehouse_price"), DeletePVar(playerid,"changehouse_"), DeletePVar(i,"_changehouse"), DeletePVar(playerid,"changehouse");
if(GetPVarInt(playerid,"changehouse_")) return SCM(playerid,COLOR_GREY,"Вы уже подтвердили сделку!");
SetPVarInt(playerid,"changehouse_",1);
SCM(playerid,0x6495EDFF,"Вы подтвердили сделку!");
SCM(i,0x6495EDFF,"Игрок подтвердил сделку!");
SCM(i,0x6495EDFF,"(( Введите /(ac)cept house для продолжения! ))");
return true;
}
else if(GetPVarInt(playerid,"_changehouse"))
{
new i = GetPVarInt(playerid,"_changehouse")-1;
if(!GetPVarInt(i,"changehouse_")) return SCM(playerid,COLOR_GREY,"Игрок ещё не подтвердил сделку!");
if(!HGet(i)) return SCM(playerid,COLOR_GREY,"У игрока нет дома!"), DeletePVar(i,"changehouse"), DeletePVar(i,"changehouse_price"), DeletePVar(i,"changehouse_"), DeletePVar(playerid,"_changehouse");
HGet(playerid);
new str[10], str_[10];
switch(HouseInfo[PTEMP[playerid][pPHouseKey]][hKlass])
{
case 0: str = "Nope"; case 1: str = "D"; case 2: str = "C";
case 3: str = "B"; case 4: str = "A"; default: str = "S";
}
switch(HouseInfo[PTEMP[i][pPHouseKey]][hKlass])
{
case 0: str_ = "Nope"; case 1: str_ = "D"; case 2: str_ = "C";
case 3: str_ = "B"; case 4: str_ = "A"; default: str_ = "S";
}
if(HGet(playerid) && HGet(i))
{
format(string,250,"Вы собираетесь обменяться домами с %s\n\nВаш дом:\n\tНомер дома: [%i]\n\tКласс дома: [%s]\n\nДом игрока:\n\tНомер дома: [%i]\n\tКласс дома: [%s]\n\tДоплата: [%i вирт]",PTEMP[playerid][pName],PTEMP[i][pPHouseKey],str_,PTEMP[playerid][pPHouseKey],str,GetPVarInt(i,"changehouse_price"));
ShowPlayerDialog(i,0, 0,"Обмен домами",string,"Закрыть","");
format(string,250,"Вы собираетесь обменяться домами с %s\n\nВаш дом:\n\tНомер дома: [%i]\n\tКласс дома: [%s]\n\nДом игрока:\n\tНомер дома: [%i]\n\tКласс дома: [%s]\n\tВаша доплата: [%i вирт]",PTEMP[i][pName],PTEMP[playerid][pPHouseKey],str,PTEMP[i][pPHouseKey],str_,GetPVarInt(i,"changehouse_price"));
ShowPlayerDialog(playerid,1565, 0,"Обмен домами",string,"Обмен","Отмена");
SetPVarInt(playerid,"changehouse_h",1);
}
else if(HGet(playerid) && !HGet(i))
{
format(string,250,"Вы собираетесь продать дом %s\n\n\tНомер дома: [%i]\n\tКласс дома: [%s]\n\tДоплата: [%i вирт]",PTEMP[playerid][pName],PTEMP[i][pPHouseKey],str,GetPVarInt(i,"changehouse_price"));
ShowPlayerDialog(i,0, 0,"Продажа дома",string,"Закрыть","");
format(string,250,"Вы собираетесь купить дом у %s\n\n\tНомер дома: [%i]\n\tКласс дома: [%s]\n\tВаша доплата: [%i вирт]\n\nКупить дом?",PTEMP[i][pName],PTEMP[playerid][pPHouseKey],str_,GetPVarInt(i,"changehouse_price"));
ShowPlayerDialog(playerid,1565, 0,"Продажа дома",string,"Купить","Отмена");
}
return true;
}
}
PHP:
case 1565:
{
new i = GetPVarInt(playerid,"_changehouse")-1;
if(!GetPVarInt(playerid,"_changehouse")) return true;
if(!response) return SCM(playerid,COLOR_GREY," Âû îòêàçàëèñü îò ñäåëêè"), SCM(i,COLOR_GREY," Èãðîê îòêàçàëñÿ îò ñäåëêè"), DeletePVar(i,"changehouse"), DeletePVar(i,"changehouse_price"), DeletePVar(i,"changehouse_"), DeletePVar(playerid,"_changehouse");
if(!HGet(i)) return SCM(playerid,COLOR_GREY," Ó èãðîêà íåò äîìà!"), DeletePVar(i,"changehouse"), DeletePVar(i,"changehouse_price"), DeletePVar(i,"changehouse_"), DeletePVar(playerid,"_changehouse");
new h = PTEMP[i][pPHouseKey];
if(!ProxDetectorS(8.0, playerid, i)) return SCM(playerid, COLOR_GREY, " Èãðîê ñëèøêîì äàëåêî îò âàñ!"), DeletePVar(i,"changehouse"), DeletePVar(i,"changehouse_price"), DeletePVar(i,"changehouse_"), DeletePVar(playerid,"_changehouse");
if(PTEMP[playerid][pCash] < GetPVarInt(i,"changehouse_price"))return SCM(playerid, COLOR_GREY, " Ó âàñ íåò ñòîëüêî äåíåã íà ðóêàõ!"), DeletePVar(i,"changehouse"), DeletePVar(i,"changehouse_price"), DeletePVar(i,"changehouse_"), DeletePVar(playerid,"_changehouse");
if(GetPVarInt(playerid,"changehouse_h"))
{
if(!HGet(playerid)) return SCM(playerid,COLOR_GREY," Ó âàñ íåò äîìà!"), DeletePVar(i,"changehouse"), DeletePVar(i,"changehouse_price"), DeletePVar(i,"changehouse_"), DeletePVar(playerid,"_changehouse");
strmid(HouseInfo[PTEMP[playerid][pPHouseKey]][hOwner],PTEMP[i][pName], 0, strlen(PTEMP[i][pName]), 32);
SendMes(playerid,0x6495EDFF,"Âû îáìåíÿëèñü äîìàìè ñ %s. Âàøà äîïëàòà %i âèðò!",PTEMP[i][pName], GetPVarInt(i,"changehouse_price"));
SendMes(i,0x6495EDFF,"Âû îáìåíÿëèñü äîìàìè ñ %s. Äîïëàòà %i âèðò!",PTEMP[playerid][pName], GetPVarInt(i,"changehouse_price"));
BuyHouse(PTEMP[playerid][pPHouseKey]);
}
else SendMes(playerid,0x6495EDFF,"Âû êóïèëè äîì ó %s. Ñòîèìîñòü %i âèðò!",PTEMP[i][pName], GetPVarInt(i,"changehouse_price")), SendMes(i,0x6495EDFF,"Âû ïðîäàëè äîì %s. Ñòîèìîñòü %i âèðò!",PTEMP[playerid][pName], GetPVarInt(i,"changehouse_price"));
strmid(HouseInfo[h][hOwner],PTEMP[playerid][pName], 0, strlen(PTEMP[playerid][pName]), 32);
if(house_car[i] != -1 && !HGet(i)) DestroyVehicle(house_car[i]), house_car[i] = -1;
PTEMP[playerid][pCash] -= GetPVarInt(i,"changehouse_price");
PTEMP[i][pCash] += GetPVarInt(i,"changehouse_price");
BuyHouse(h);
HGet(i), HGet(playerid);
DeletePVar(i,"changehouse");
DeletePVar(i,"changehouse_price");
DeletePVar(i,"changehouse_");
return DeletePVar(playerid,"_changehouse");
}
Последнее редактирование:
