Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <YSI\y_commands>
- #include <YSI\y_ini>
- // Defines Dialog
- #define Dialog_ShipMenu (121)
- #define Dialog_CreateShip (122)
- #define Dialog_EditShip (123)
- #define Dialog_EditMoney (124)
- #define Dialog_DeleteShip (125)
- // Defines Dialog
- #define SendFormatMessage(%0,%1,%2,%3) format(M_str,sizeof(M_str),%2,%3); SendClientMessage(%0,%1,M_str)
- // -------------------------------------------------
- #define MAX_SHIP 500
- enum Data_Ship
- {
- MID,
- Money,
- SFile[60],
- Float:Pos[6],
- Float:MPos[3]
- };
- new Ships[MAX_SHIP][Data_Ship],
- Float:pPos[3],
- LastId,
- M_str[128],
- TimerShips,
- Count = 0;
- CMD:menuship(playerid,params[])
- {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xFF0000FF,"ERROR: You are not admin !");
- ShowPlayerDialog(playerid,Dialog_ShipMenu,DIALOG_STYLE_LIST,"Money Ship - by I Love it","Create Ship\nEdit Ship","OK","Cancel");
- return 1;
- }
- public OnFilterScriptInit()
- {
- TimerShips = SetTimer("MoneyShips",1000*3,true);
- for(new i = 0, j = sizeof(Ships); i != j;i++)
- {
- format(Ships[i][SFile],60,"Ships/%d.ini",i);
- if(fexist(Ships[i][SFile])) INI_ParseFile(Ships[i][SFile], "LoadShips", .bExtra = true, .extra = i);
- if(Ships[i][MID] <= 0 || Ships[i][Pos][0] == 0.0) continue;
- CreateObject(8493,Ships[i][Pos][0],Ships[i][Pos][1],Ships[i][Pos][2],Ships[i][Pos][3],Ships[i][Pos][4],Ships[i][Pos][5]) ,Count ++;
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new i, j = sizeof(Ships); i != j;i++)
- {
- DestroyObject(Ships[i][MID]);
- if(Ships[i][MID] <= 0 || Ships[i][Pos][0] == 0.0) continue;
- format(Ships[i][SFile],60,"Ships/%d.ini",i);
- new INI:ini = INI_Open(Ships[i][SFile]);
- INI_WriteInt(ini,"ID",Ships[i][MID]);
- INI_WriteInt(ini,"Money",Ships[i][Money]);
- INI_WriteFloat(ini,"Pos0",Ships[i][Pos][0]);
- INI_WriteFloat(ini,"Pos1",Ships[i][Pos][1]);
- INI_WriteFloat(ini,"Pos2",Ships[i][Pos][2]);
- INI_WriteFloat(ini,"Pos3",Ships[i][Pos][3]);
- INI_WriteFloat(ini,"Pos4",Ships[i][Pos][4]);
- INI_WriteFloat(ini,"Pos5",Ships[i][Pos][5]);
- INI_WriteFloat(ini,"MPos0",Ships[i][Pos][0]);
- INI_WriteFloat(ini,"MPos1",Ships[i][Pos][1]);
- INI_WriteFloat(ini,"MPos2",Ships[i][Pos][2]);
- INI_Close(ini);
- }
- KillTimer(TimerShips);
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == Dialog_ShipMenu && response)
- {
- switch(listitem)
- {
- case 0:
- {
- GetPlayerPos(playerid,pPos[0],pPos[1],pPos[2]);
- new id = CreateObject(8493,pPos[0],pPos[1],pPos[2],0.0,0.0,0.0);
- Count++;
- if(Count > MAX_SHIP) return SendClientMessage(playerid,0xFF0000FF,"You have reached the maximum ships Money"),DestroyObject(id);
- Ships[Count][MID] = id;
- Ships[Count][Pos][0] = pPos[0];
- Ships[Count][Pos][1] = pPos[1];
- Ships[Count][Pos][2] = pPos[2];
- EditObject(playerid,id);
- }
- case 1: SelectObject(playerid), SendClientMessage(playerid,0xFF0000FF,"Select Ship to edit !");
- }
- }
- if(dialogid == Dialog_EditShip && response)
- {
- switch(listitem)
- {
- // Edit Pos of Ship
- case 0: EditObject(playerid,Ships[LastId][MID]);
- case 1: // Change the area for to get the money
- {
- GetPlayerPos(playerid,pPos[0],pPos[1],pPos[2]);
- Ships[LastId][MPos][0] = pPos[0];
- Ships[LastId][MPos][1] = pPos[1];
- Ships[LastId][MPos][2] = pPos[2];
- SendClientMessage(playerid,0xFF0000FF,"Changed the area for to get the money for where you stand");
- }
- // Edit Money
- case 2: ShowPlayerDialog(playerid,Dialog_EditMoney,DIALOG_STYLE_INPUT,"Edit Money","Write the money for receive every 3 seconds","OK","Cancel");
- // Delete Ship
- case 3: ShowPlayerDialog(playerid,Dialog_DeleteShip,DIALOG_STYLE_INPUT,"Delete Ship","For delete this ship, type \"Yes\"","OK","Cancel");
- }
- }
- if(dialogid == Dialog_EditMoney && response) // Edit Money
- {
- if(!IsNumeric(inputtext)) return ShowPlayerDialog(playerid,Dialog_EditMoney,DIALOG_STYLE_INPUT,"Edit Money","Write the money for receive every 3 seconds\n Error : Write Only Numbers !","OK","Cancel");
- Ships[LastId][Money] = strval(inputtext);
- SendFormatMessage(playerid,0xFF0000FF,"You Are Changed the Money for recive every 3 seconds to : %d",strval(inputtext));
- }
- if(dialogid == Dialog_DeleteShip && response) // Delete Ship
- {
- if(!strcmp(inputtext,"Yes",true))
- {
- SendClientMessage(playerid,0xFF0000FF,"You Are Delete this ship");
- format(Ships[LastId][SFile],60,"Ships/%d.ini",LastId);
- if(fexist(Ships[LastId][SFile])) fremove(Ships[LastId][SFile]);
- DestroyObject(Ships[LastId][MID]);
- Ships[LastId][MID] = -1;
- Ships[LastId][Money] = 0;
- }
- }
- return 1;
- }
- public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ)
- {
- for(new i = 0,j = sizeof(Ships);i != j;i++) if(objectid == Ships[i][MID]) LastId = i;
- if(type == SELECT_OBJECT_GLOBAL_OBJECT && modelid == 8493 && Ships[LastId][MID] == objectid)
- {
- ShowPlayerDialog(playerid,Dialog_EditShip,DIALOG_STYLE_LIST,"Edit Ship - By I Love it","Edit Pos of Ship\nChange the area for to get the money\nEdit Money\nDelete Ship","OK","Cancel");
- CancelSelectTextDraw(playerid);
- }
- return 1;
- }
- public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
- {
- if(response == EDIT_RESPONSE_FINAL)
- {
- Ships[LastId][Pos][0] = fX;
- Ships[LastId][Pos][1] = fY;
- Ships[LastId][Pos][2] = fZ;
- Ships[LastId][Pos][3] = fRotX;
- Ships[LastId][Pos][4] = fRotY;
- Ships[LastId][Pos][5] = fRotZ;
- }
- if(response == EDIT_RESPONSE_CANCEL)
- {
- SetObjectPos(Ships[LastId][MID], Ships[LastId][Pos][0], Ships[LastId][Pos][1], Ships[LastId][Pos][2]);
- SetObjectRot(Ships[LastId][MID],Ships[LastId][Pos][3],Ships[LastId][Pos][4],Ships[LastId][Pos][5]);
- }
- }
- forward LoadShips_data(Ship, name[], value[]);
- public LoadShips_data(Ship, name[], value[])
- {
- INI_Int("ID",Ships[Ship][MID]);
- INI_Int("Money",Ships[Ship][Money]);
- INI_Float("Pos0",Ships[Ship][Pos][0]);
- INI_Float("Pos1",Ships[Ship][Pos][1]);
- INI_Float("Pos2",Ships[Ship][Pos][2]);
- INI_Float("Pos3",Ships[Ship][Pos][3]);
- INI_Float("Pos4",Ships[Ship][Pos][4]);
- INI_Float("Pos5",Ships[Ship][Pos][5]);
- INI_Float("MPos0",Ships[Ship][Pos][0]);
- INI_Float("MPos1",Ships[Ship][Pos][1]);
- INI_Float("MPos2",Ships[Ship][Pos][2]);
- return 1;
- }
- forward MoneyShips(playerid);
- public MoneyShips(playerid)
- {
- for(new i, j = sizeof(Ships); i != j;i++)
- {
- if(Ships[i][MID] <= 0 || Ships[i][Pos][0] == 0.0) continue;
- if(IsPlayerInRangeOfPoint(playerid, 10, Ships[i][MPos][0], Ships[i][MPos][1], Ships[i][MPos][2]))
- GivePlayerMoney(playerid,Ships[i][Money]);
- }
- return 1;
- }
- stock IsNumeric(string[])
- {
- for(new i = 0; i < strlen(string); i++) if(string[i] > '9' || string[i] < '0') return false;
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment