12.01.2014, 10:28
(
Последний раз редактировалось EmpireSk; 12.01.2014 в 15:12.
)
Hi, How would I do this storage system through the House Y_INI? Help me ..
Код:
#include <a_samp> #include <icons_streamer.pwn> #include <TDB> #define B_MODRA 0x4169FFAA #define COLOR_GREEN 0x4169FFAA #define MAX_HOUSES 50 #define MAX_HOUSES_NAME 20 enum HOUSE_DATA { HouseName[MAX_HOUSES_NAME], Float:p_X, Float:p_Y, Float:p_Z, Float:i_X, Float:i_Y, Float:i_Z, iin, Cena, Vlastnik, Dialog, Zamek, WiW, Float:auto_x, Float:auto_y, Float:auto_z, Float:auto_face, auto_dialog }; new HouseInfo[MAX_HOUSES][HOUSE_DATA]; new HouseCount = 0; new MajitelDomu[MAX_HOUSES][MAX_PLAYERS]; new AutoDomu[MAX_HOUSES]; //--------[ Forwards ]--------| forward GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z); forward IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius); forward AddHouse(const h_Name[], Float:pX, Float:pY, Float:pZ, Float:iX, Float:iY, Float:iZ, ii, Cenik, iddialogu, VW, Float:a_x, Float:a_y, Float:a_z, Float:a_face, a_dialog); //______________________________________________________________________________ public IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius) { if(GetPlayerDistanceToPointEx(playerid,x,y,z) < radius) return 1; return 0; } //============================================================================== public GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z) { new Float:x1,Float:y1,Float:z12,Float:tmpdis; GetPlayerPos(playerid,x1,y1,z12); tmpdis = floatsqroot(floatpower(floatabs(floatsub(x,x1)),2) +floatpower(floatabs(floatsub(y,y1)),2)+floatpower(floatabs(floatsub(z,z12)),2)); return floatround(tmpdis); } //============================================================================== public AddHouse(const h_Name[], Float:pX, Float:pY, Float:pZ, Float:iX, Float:iY, Float:iZ, ii, Cenik, iddialogu, VW, Float:a_x, Float:a_y, Float:a_z, Float:a_face, a_dialog) { if(HouseCount < MAX_HOUSES) { format(HouseInfo[HouseCount][HouseName] , MAX_HOUSES_NAME, "%s", h_Name); HouseInfo[HouseCount][p_X] = pX; HouseInfo[HouseCount][p_Y] = pY; HouseInfo[HouseCount][p_Z] = pZ; HouseInfo[HouseCount][i_X] = iX; HouseInfo[HouseCount][i_Y] = iY; HouseInfo[HouseCount][i_Z] = iZ; HouseInfo[HouseCount][iin] = ii; HouseInfo[HouseCount][Cena] = Cenik; HouseInfo[HouseCount][WiW] = VW; HouseInfo[HouseCount][Vlastnik] = 0; HouseInfo[HouseCount][Zamek] = 0; CreatePickup(1273,1,pX, pY, pZ); HouseInfo[HouseCount][Dialog] = iddialogu; HouseInfo[HouseCount][auto_x] = a_x; HouseInfo[HouseCount][auto_y] = a_y; HouseInfo[HouseCount][auto_z] = a_z; HouseInfo[HouseCount][auto_face] = a_face; HouseInfo[HouseCount][auto_dialog] = a_dialog; HouseCount ++; }else{ print("<!-- Kapacita AddHouse prekrocena, dum nebyl vytvoren !-->"); } return 1; } //============================================================================== public OnFilterScriptInit() { TdOnGameModeInt(); AddHouse("Dum 1", 2126.6511,-1319.9645,26.6240, 225.8965,1022.1873,1084.0156, 7, 35010, 681, 24, 2136.1165,-1318.8456,24.6143,0.2171, 680); return 1; } //============================================================================== public OnPlayerConnect(playerid) { for(new h=0;h<HouseCount;h++) { CreateMapIcon(31, COLOR_GREEN, HouseInfo[h][p_X],HouseInfo[h][p_Y],HouseInfo[h][p_Z]); } return 1; } //============================================================================== public OnPlayerDisconnect(playerid, reason) { ResetMapIconVariables(playerid); for(new h=0;h<HouseCount;h++) { new buyyng[150]; format(buyyng, 150, "Cena: %d",HouseInfo[h][Cena]); Create3DTextLabel(buyyng,0x00FF00FF,HouseInfo[h][p_X],HouseInfo[h][p_Y],HouseInfo[h][p_Z] + 3,80.0,0); } return 1; } //============================================================================== public OnPlayerPickUpPickup(playerid, pickupid) { for(new h=0;h<HouseCount;h++) { if(IsPlayerInSphere(playerid,HouseInfo[h][p_X],HouseInfo[h][p_Y],HouseInfo[h][p_Z],2) == 1) { ShowPlayerDialog(playerid,HouseInfo[h][Dialog],DIALOG_STYLE_LIST,"Dům","Koupit\nProdat\nZamknout\nOdemknout\nInformace o domu\nVstoupit\nKoupit / Zmenit auto","Pouћнt","Nic"); } } return 1; } //============================================================================== public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if((newkeys & (KEY_WALK | KEY_SPRINT)) == (KEY_WALK | KEY_SPRINT)) { for(new h=0;h<HouseCount;h++) { if(IsPlayerInSphere(playerid,HouseInfo[h][i_X],HouseInfo[h][i_Y],HouseInfo[h][i_Z],10) == 1) { if(GetPlayerVirtualWorld(playerid) == HouseInfo[h][WiW]) { SetPlayerPos(playerid,HouseInfo[h][p_X],HouseInfo[h][p_Y],HouseInfo[h][p_Z]); SetPlayerInterior(playerid,0); SetPlayerVirtualWorld(playerid, 0); } } } } return 1; } //============================================================================== public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { for(new h=0;h<HouseCount;h++) { if(dialogid == HouseInfo[h][Dialog]) { if(response == 1) { if(listitem == 0) { if(GetPlayerMoney(playerid) <= HouseInfo[h][Cena]) return SendClientMessage(playerid, 0xFFFFFFFF, "Mбљ mбlo peněz !"); if(HouseInfo[h][Vlastnik] == 1) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům jiћ někdo vlastnн !"); HouseInfo[h][Vlastnik] = 1; MajitelDomu[h][playerid] = 1; GivePlayerMoney(playerid, -HouseInfo[h][Cena]); SendClientMessage(playerid, 0xFFFFFFFF, "Pořidil jsi si dům !"); } else if(listitem == 1) { new cena[150]; if(MajitelDomu[h][playerid] == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům nenн tvůj !"); HouseInfo[h][Vlastnik] = 0; MajitelDomu[h][playerid] = 0; GivePlayerMoney(playerid, HouseInfo[h][Cena]); format(cena, sizeof(cena), "Dům prodбn, bylo ti vrбceno zpět %d$ !",HouseInfo[h][Cena]); SendClientMessage(playerid, 0xFFFFFFFF, cena); } else if(listitem == 2) { if(MajitelDomu[h][playerid] == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům nenн tvůj !"); HouseInfo[h][Zamek] = 0; SendClientMessage(playerid, 0xFFFFFFFF, "Dům zamknut !"); } else if(listitem == 3) { if(MajitelDomu[h][playerid] == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům nenн tvůj !"); SendClientMessage(playerid, 0xFFFFFFFF, "Dům odemknut !"); HouseInfo[h][Zamek] = 1; } else if(listitem == 4) { SendClientMessage(playerid, 0xFFFFFFFF, "Informace o domu:"); if(HouseInfo[h][Zamek] == 0) { SendClientMessage(playerid,0xFFFFFFFF,"Zбmek: Zamknutэ."); }else{ SendClientMessage(playerid,0xFFFFFFFF,"Zбmek: Odemknutэ."); } if (HouseInfo[h][Vlastnik] == 0) { SendClientMessage(playerid,0xFFFFFFFF,"K Prodeji: Ano"); }else{ SendClientMessage(playerid,0xFFFFFFFF,"K Prodeji: Ne"); } } else if(listitem == 5) { if(MajitelDomu[h][playerid] == 1) { SetPlayerPos(playerid, HouseInfo[h][i_X],HouseInfo[h][i_Y],HouseInfo[h][i_Z]); SetPlayerInterior(playerid, HouseInfo[h][iin]); SetPlayerVirtualWorld(playerid, HouseInfo[h][WiW]); SendDrawMessage(playerid, "Dum opustis ~r~L.ALT~w~ + ~r~Mezernik~w~ !"); return 0; } else if(HouseInfo[h][Zamek] == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům je zamknut !"); SetPlayerPos(playerid, HouseInfo[h][i_X],HouseInfo[h][i_Y],HouseInfo[h][i_Z]); SetPlayerInterior(playerid, HouseInfo[h][iin]); SetPlayerVirtualWorld(playerid, HouseInfo[h][WiW]); SendDrawMessage(playerid, "Dum opustis ~r~L.ALT~w~ + ~r~Mezernik~w~ !"); } else if(listitem == 6) { if(MajitelDomu[h][playerid] == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "Tento dům nenн tvůj !"); ShowPlayerDialog(playerid,HouseInfo[h][auto_dialog],DIALOG_STYLE_LIST,"Koupit auto k domu","Admiral - 200$\nPCJ-600 - 150$\nTornado - 350$\nGreenwood - 250$\nHustler - 130$\nClover - 150$","Koupit","Nic"); } } } if(dialogid == HouseInfo[h][auto_dialog]) { if(response == 1) { if(listitem == 0) { if(GetPlayerMoney(playerid) < 200) return SendClientMessage(playerid, 0xFFFFFFFF, "Potřebujeљ 200$ !"); DestroyVehicle(AutoDomu[h]); AutoDomu[h] = AddStaticVehicle(445,HouseInfo[h][auto_x],HouseInfo[h][auto_z],HouseInfo[h][auto_z],HouseInfo[h][auto_face],35,35); } else if(listitem == 1) { if(GetPlayerMoney(playerid) < 150) return SendClientMessage(playerid, 0xFFFFFFFF, "Potřebujeљ 150$ !"); DestroyVehicle(AutoDomu[h]); AutoDomu[h] = AddStaticVehicle(522,HouseInfo[h][auto_x],HouseInfo[h][auto_z],HouseInfo[h][auto_z],HouseInfo[h][auto_face],35,35); } else if(listitem == 2) { if(GetPlayerMoney(playerid) < 350) return SendClientMessage(playerid, 0xFFFFFFFF, "Potřebujeљ 350$ !"); DestroyVehicle(AutoDomu[h]); AutoDomu[h] = AddStaticVehicle(576,HouseInfo[h][auto_x],HouseInfo[h][auto_z],HouseInfo[h][auto_z],HouseInfo[h][auto_face],35,35); } else if(listitem == 3) { if(GetPlayerMoney(playerid) < 250) return SendClientMessage(playerid, 0xFFFFFFFF, "Potřebujeљ 250$ !"); DestroyVehicle(AutoDomu[h]); AutoDomu[h] = AddStaticVehicle(492,HouseInfo[h][auto_x],HouseInfo[h][auto_z],HouseInfo[h][auto_z],HouseInfo[h][auto_face],35,35); } else if(listitem == 4) { if(GetPlayerMoney(playerid) < 130) return SendClientMessage(playerid, 0xFFFFFFFF, "Potřebujeљ 130$ !"); DestroyVehicle(AutoDomu[h]); AutoDomu[h] = AddStaticVehicle(545,HouseInfo[h][auto_x],HouseInfo[h][auto_z],HouseInfo[h][auto_z],HouseInfo[h][auto_face],35,35); } else if(listitem == 5) { if(GetPlayerMoney(playerid) < 150) return SendClientMessage(playerid, 0xFFFFFFFF, "Potřebujeљ 150$ !"); DestroyVehicle(AutoDomu[h]); AutoDomu[h] = AddStaticVehicle(542,HouseInfo[h][auto_x],HouseInfo[h][auto_z],HouseInfo[h][auto_z],HouseInfo[h][auto_face],122,113); } } } } return 1; }