Merlin
Умник
Всем привет , вот вырезал ещё в 2013 работу с Rezone систему ATM , НУ и валяется у меня вот решил выложить.
К new
В команды добавим.
В public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ) ПОЛНОСТЬЮ
В Конце мода добавим
В начале мода :
В public OnGameModeInit()//события, когда загружается мод
Ну в принцепе всё , тока создать файл cfg и указать его.
Автор Вырезки : Merlin
К new
PHP:
new TOTALATM;
В команды добавим.
PHP:
if(strcmp(cmd, "/addatm", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 6)
{
SetPVarInt(playerid, "addatm", 1);
TOTALATM++;
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
new obj;
obj = CreateObject(2754, X+1, Y+1, Z+1, 0.0,0.0,0.0);
EditObject(playerid, obj);
}
return true;
}
PHP:
public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
{
if(GetPVarInt(playerid, "addatm") !=1)
{
if(GetPVarInt(playerid, "ModelID") !=0)
{
if(response == 1)
{
SPD(playerid, DIALOG_SAVE_1, DIALOG_STYLE_MSGBOX, "Объект изменён",\
"Желаете ли вы сохранить объект в файл?\n\nФайл с объектами находится в {FFFFFF}scriptfiles/soe/*.txt",\
"Сохранить...","Отмена");
O[foX] = fX;
O[foY] = fY;
O[foZ] = fZ;
O[roX] = fRotX;
O[roY] = fRotY;
O[roZ] = fRotZ;
}
}
}
else
{
if(response == 1)
{
ATMInfo[TOTALATM][aid]= TOTALATM;
ATMInfo[TOTALATM][aX]= fX;
ATMInfo[TOTALATM][aY]= fY;
ATMInfo[TOTALATM][aZ]= fZ;
ATMInfo[TOTALATM][arZ]= fRotZ;
LABELATM[TOTALATM] = Create3DTextLabel("Нажмите 'ENTER'",COLOR_GREEN, fX,fY,fZ+1,20.0,0,1);
saveatm();
}
}
}
PHP:
stock saveatm()
{
new idx;
new File: file2;
while (idx < sizeof(ATMInfo))
{
if(ATMInfo[idx][aid] !=0)
{
new coordsstring[256];
format(coordsstring, sizeof(coordsstring), "%d|%f|%f|%f|%f\n",
ATMInfo[idx][aid],
ATMInfo[idx][aX],
ATMInfo[idx][aY],
ATMInfo[idx][aZ],
ATMInfo[idx][arZ]);
if(idx == 0)
{
file2 = fopen("logs/atm.cfg", io_write);
}
else
{
file2 = fopen("logs/atm.cfg", io_append);
}
fwrite(file2, coordsstring);
fclose(file2);
}
idx++;
}
}
stock LoadATM()
{
new arrCoords[5][64];
new strFromFile2[256];
new File: file = fopen("logs/atm.cfg", io_read);
new idx;
if(file)
{
while(idx < sizeof(ATMInfo))
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, '|');
if(strval(arrCoords[0]) != 0)
{
ATMInfo[idx][aid]= strval(arrCoords[0]);
ATMInfo[idx][aX]= floatstr(arrCoords[1]);
ATMInfo[idx][aY]= floatstr(arrCoords[2]);
ATMInfo[idx][aZ]= floatstr(arrCoords[3]);
ATMInfo[idx][arZ]= floatstr(arrCoords[4]);
TOTALATM++;
ATM[idx] = CreateDynamicObject(2754, ATMInfo[idx][aX], ATMInfo[idx][aY], ATMInfo[idx][aZ], 0.0, 0.0, ATMInfo[idx][arZ]);
LABELATM[idx] = Create3DTextLabel("Нажмите 'ENTER'",COLOR_GREEN, ATMInfo[idx][aX],ATMInfo[idx][aY],ATMInfo[idx][aZ]+1,20.0,0,1);
}
idx++;
}
}
printf("%d банкоматов было успешно загружено!", TOTALATM);
fclose(file);
return 1;
}
PHP:
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#define MAX_ATM 50
enum atm
{
aid,
Float:aX,
Float:aY,
Float:aZ,
Float:arZ
};
new ATMInfo[MAX_ATM][atm];
new ATM[MAX_ATM];
new Text3D:LABELATM[MAX_ATM];
enum SavedEnums {
Float:foX,
Float:foY,
Float:foZ,
Float:roX,
Float:roY,
Float:roZ
};
new O[SavedEnums];
PHP:
LoadATM();// Загружаем банкоматы
Автор Вырезки : Merlin
