Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include a_samp
- #include YSI\y_ini
- #include YSI\y_dialog
- #include ZCMD
- #include sscanf2
- //==== ID Dialogs =========
- #define DIALOG_IronDome 432
- #define DIALOG_IronDomeNotExist 433
- #define DIALOG_IronDomeExist 444
- #define DIALOG_SURE 445
- #define DIALOG_OnOff 446
- #define DIALOG_IDS 447
- //==== Defines ===========
- #define MAX_IronDome 500
- #define SendClientFormatMessage(%0,%1,%2,%3) format(g_string,128,%2,%3),SendClientMessage(%0,%1,g_string)
- enum data_IronDome
- {
- ID,
- File[64],
- Object,
- ObjectShoot,
- Float:Pos[6],
- Text3D:label[MAX_IronDome], // beacause i have a bug
- bool:On
- };
- new IronDome[MAX_IronDome][data_IronDome], bool:Attack[MAX_PLAYERS][MAX_IronDome];
- new LastID, g_string[128], Float:pPos[3], Timer;
- // ===================== IronDome Create ==========================
- CMD:irondome(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "על מנת לבצע פקודה זו, עלייך להתחבר לרקון");
- if(isnull(params)) return SendClientMessage(playerid, 0xFF0000FF, "Usage:/IronDome [Create / Edit]");
- if(!strcmp(params, "Create", true, 6))
- {
- if(sscanf(params[6],"d",LastID)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /IronDomeCreate [id]");
- if(LastID >= MAX_IronDome || !LastID) return SendClientFormatMessage(playerid, 0xFF0000FF, "%d-0 אתה יכול לעשות מספרים בין", MAX_IronDome);
- if(IronDome[LastID][ID]) return SendClientMessage(playerid, 0xFF0000FF, "האיידי תפוס, אנא נסה איידי אחר");
- format(g_string, 128, "? %d :האם ברצונך ליצור כיפת ברזל חדשה באיידי", LastID);
- return ShowPlayerDialog(playerid, DIALOG_IronDomeNotExist, DIALOG_STYLE_MSGBOX, "יצירת כיפת ברזל", g_string, "כן", "לא");
- }
- // ===================== IronDome Edit ==========================
- if(!strcmp(params, "Edit", true, 4))
- {
- SelectObject(playerid);
- return SendClientMessage(playerid, 0xFF0000FF, "לחץ על כיפת הברזל שברצונך לערוך");
- }
- return SendClientMessage(playerid, 0xFF0000FF, "Usage:/IronDome [Create / Edit]");
- }
- public OnPlayerConnect(playerid) for(new i;i<MAX_IronDome;i++) Attack[playerid][i] = false;
- public OnFilterScriptInit()
- {
- Timer = SetTimer("IronDomesShoot", 7*1000, true); // timer to shoot
- if(!fexist("IronDome/")) return print("You need create folder : \"IronDome\" in folter scriptfiles, to use with this filterscript!"), SendRconCommand("exit");
- for(new i; i < MAX_IronDome; i++)
- {
- format(IronDome[i][File], 64, "IronDome/%d.ini", i);
- if(!fexist(IronDome[i][File])) continue;
- INI_ParseFile(IronDome[i][File], "LoadIronDomes", .bExtra = true, .extra = i);
- IronDome[i][Object] = CreateObject(18848, IronDome[i][Pos][0], IronDome[i][Pos][1], IronDome[i][Pos][2], IronDome[i][Pos][3], IronDome[i][Pos][4], IronDome[i][Pos][5],300);
- format(g_string, 128, "[ID: %02d]כיפת ברזל", i);
- IronDome[i][label][i] = Create3DTextLabel(g_string, 0x008080FF, IronDome[i][Pos][0], IronDome[i][Pos][1], IronDome[i][Pos][2]+3, 300.0, 0, 0);
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- KillTimer(Timer);
- for(new i; i < MAX_IronDome; i++)
- {
- if(IronDome[i][ID])
- {
- format(IronDome[i][File], 64, "IronDome/%d.ini", i);
- new INI:file = INI_Open(IronDome[i][File]);
- INI_WriteInt(file, "ID", IronDome[i][ID]);
- for(new id = 0;id<6;id++)
- {
- format(g_string, 8, "Pos%d",id);
- INI_WriteFloat(file,g_string, IronDome[i][Pos][id]);
- }
- INI_WriteBool(file, "On", IronDome[i][On]);
- INI_Close(file);
- }
- DestroyObject(IronDome[i][Object]);
- Delete3DTextLabel(IronDome[i][label][i]);
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- //================== Dialog Create IronDome ===================================
- if(dialogid == DIALOG_IronDomeNotExist && response)
- {
- GetPlayerPos(playerid, IronDome[LastID][Pos][0], IronDome[LastID][Pos][1], IronDome[LastID][Pos][2]);
- IronDome[LastID][Object] = CreateObject(18848, IronDome[LastID][Pos][0], IronDome[LastID][Pos][1], IronDome[LastID][Pos][2], 0.0, 0.0,0.0, 300);
- IronDome[LastID][ID] = LastID;
- EditObject(playerid, IronDome[LastID][Object]);
- SendClientMessage(playerid, 0xFF0000FF, "הגדר מיקום כיפת ברזל");
- }
- //================== Dialog Setting IronDome ===================================
- if(dialogid == DIALOG_IronDomeExist && response)
- {
- switch(listitem)
- {
- case 0: ShowPlayerDialog(playerid, DIALOG_OnOff, DIALOG_STYLE_LIST, "הפעלה / כיבוי כיפת ברזל", "הפעל כיפת ברזל\nכבה כיפת ברזל", "אישור", "חזרה"); // On/Off IronDome
- case 1: EditObject(playerid, IronDome[LastID][Object]), SendClientMessage(playerid, 0xFF0000FF, "הגדר מיקום כיפת ברזל"); // Set pos of IronDome
- case 2: ShowDialogIDS(playerid);
- case 3: ShowPlayerDialog(playerid, DIALOG_SURE, DIALOG_STYLE_MSGBOX, "מחיקת כיפת ברזל", "?האם אתה בטוח שאתה רוצה למחוק כיפת ברזל זו", "כן", "לא"); // Delete IronDome
- }
- }
- //================== Dialog On / Off IronDome ===================================
- if(dialogid == DIALOG_OnOff)
- {
- if(!response) return ShowPlayerDialog(playerid, DIALOG_IronDomeExist, DIALOG_STYLE_LIST, "הגדרות כיפת ברזל", "הפעלת כיפת ברזל\nעריכת מיקום כיפת ברזל\nהגדרת אוייבים לכיפת ברזל\nמחיקת כיפת ברזל", "אישור", "ביטול");
- if(!listitem && IronDome[LastID][On] || listitem && !IronDome[LastID][On]) return SendClientMessage(playerid, 0xFF0000FF, listitem ? ( "כיפת ברזל כבר כבויה" ) : ("כיפת ברזל כבר מופעלת") ), ShowPlayerDialog(playerid, DIALOG_OnOff, DIALOG_STYLE_LIST, "הפעלה / כיבוי כיפת ברזל", "הפעל כיפת ברזל\nכבה כיפת ברזל", "אישור", "חזרה");
- SendClientMessage(playerid, !listitem ? 0x0DFF00FF : 0x5E5E5EFF, !listitem ? ("הפעלת את כיפת ברזל בהצלחה") : ("כיבית את כיפת ברזל בהצלחה") );
- IronDome[LastID][On] = !listitem ? true : false;
- }
- //================== Dialog sure delete IronDome ===================================
- if(dialogid == DIALOG_SURE)
- {
- if(!response) return ShowPlayerDialog(playerid, DIALOG_IronDomeExist, DIALOG_STYLE_LIST, "הגדרות כיפת ברזל", "הפעלת כיפת ברזל\nעריכת מיקום כיפת ברזל\nהגדרת אוייבים לכיפת ברזל\nמחיקת כיפת ברזל", "אישור", "ביטול");
- IronDome[LastID][ID] = 0, SendClientMessage(playerid, 0x0DFF00FF, "מחקת את כיפת הברזל בהצלחה");
- DestroyObject(IronDome[LastID][Object]), Delete3DTextLabel(IronDome[LastID][label][LastID]);
- for(new i, j = GetMaxPlayers();i<j;i++) if(Attack[i][LastID]) Attack[i][LastID] = false;
- }
- // Attack id
- if(dialogid == DIALOG_IDS)
- {
- if(!response) return ShowPlayerDialog(playerid, DIALOG_IronDomeExist, DIALOG_STYLE_LIST, "הגדרות כיפת ברזל", "הפעלת כיפת ברזל\nעריכת מיקום כיפת ברזל\nהגדרת אוייבים לכיפת ברזל\nמחיקת כיפת ברזל", "אישור", "ביטול");
- if(listitem == GetMaxPlayers() || listitem == GetMaxPlayers() + 1)
- {
- for(new i, j = GetMaxPlayers();i<j;i++) if(IsPlayerConnected(i)) Attack[i][LastID] = listitem == GetMaxPlayers() ? true : false;
- ShowDialogIDS(playerid);
- return SendClientMessage(playerid, 0x00FFF2FF, listitem == GetMaxPlayers() ? ("הגדרת את כולם אוייבים") : ("ביטלת את כל האוייבים") );
- }
- if(!IsPlayerConnected(listitem)) return SendClientMessage(playerid, 0xFF0000FF, "אתה לא יכול להגדיר אוייב לשחקן לא מחובר"), ShowDialogIDS(playerid);
- Attack[listitem][LastID] = !Attack[listitem][LastID];
- ShowDialogIDS(playerid);
- }
- return 0;
- }
- public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ)
- {
- for(new i = 0,j = MAX_IronDome;i != j;i++) if(objectid == IronDome[i][Object]) LastID = i;
- if(type == SELECT_OBJECT_GLOBAL_OBJECT && modelid == 18848 && IronDome[LastID][Object] == objectid)
- {
- ShowPlayerDialog(playerid, DIALOG_IronDomeExist, DIALOG_STYLE_LIST, "הגדרות כיפת ברזל", "הפעלת כיפת ברזל\nעריכת מיקום כיפת ברזל\nהגדרת אוייבים לכיפת ברזל\nמחיקת כיפת ברזל", "אישור", "ביטול");
- 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)
- {
- IronDome[LastID][Pos][0] = fX;
- IronDome[LastID][Pos][1] = fY;
- IronDome[LastID][Pos][2] = fZ;
- IronDome[LastID][Pos][3] = fRotX;
- IronDome[LastID][Pos][4] = fRotY;
- IronDome[LastID][Pos][5] = fRotZ;
- Delete3DTextLabel(IronDome[LastID][label][LastID]);
- format(g_string, 128, "[ID: %02d]כיפת ברזל", LastID);
- IronDome[LastID][label][LastID] = Create3DTextLabel(g_string, 0x008080FF, IronDome[LastID][Pos][0], IronDome[LastID][Pos][1], IronDome[LastID][Pos][2]+3, 300.0, 0, 0);
- SetObjectPos(IronDome[LastID][Object], IronDome[LastID][Pos][0], IronDome[LastID][Pos][1], IronDome[LastID][Pos][2]);
- SetObjectRot(IronDome[LastID][Object], IronDome[LastID][Pos][3], IronDome[LastID][Pos][4], IronDome[LastID][Pos][5]);
- }
- if(response == EDIT_RESPONSE_CANCEL)
- {
- Delete3DTextLabel(IronDome[LastID][label][LastID]);
- format(g_string, 128, "[ID: %02d]כיפת ברזל", LastID);
- IronDome[LastID][label][LastID] = Create3DTextLabel(g_string, 0x008080FF, IronDome[LastID][Pos][0], IronDome[LastID][Pos][1], IronDome[LastID][Pos][2]+3, 300.0, 0, 0);
- SetObjectPos(IronDome[LastID][Object], IronDome[LastID][Pos][0], IronDome[LastID][Pos][1], IronDome[LastID][Pos][2]);
- SetObjectRot(IronDome[LastID][Object], IronDome[LastID][Pos][3], IronDome[LastID][Pos][4], IronDome[LastID][Pos][5]);
- }
- }
- forward LoadIronDomes(Dome, name[], value[]);
- public LoadIronDomes(Dome, name[], value[])
- {
- INI_Int("ID", IronDome[Dome][ID]);
- for(new i = 0; i<6; i++)
- {
- format(g_string, 8, "Pos%d",i);
- INI_Float(g_string, IronDome[Dome][Pos][i]);
- }
- INI_Bool("On", IronDome[Dome][On]);
- return 1;
- }
- public OnObjectMoved(objectid)
- {
- for(new i; i < MAX_IronDome; i++) if(objectid == IronDome[i][ObjectShoot]) CreateExplosion(pPos[0],pPos[1],pPos[2], 6, 50), DestroyObject(IronDome[i][ObjectShoot]);
- return 1;
- }
- forward IronDomesShoot();
- public IronDomesShoot()
- {
- for(new i; i != MAX_IronDome; i++)
- {
- if(!IronDome[i][On]) continue;
- for(new playerid, Maxp = GetMaxPlayers(); playerid < Maxp ;playerid++)
- {
- if(!IsPlayerConnected(playerid) || !Attack[playerid][i]) continue;
- if(IsPlayerInRangeOfPoint(playerid, 300, IronDome[i][Pos][0], IronDome[i][Pos][1], IronDome[i][Pos][2]))
- {
- GetPlayerPos(playerid,pPos[0],pPos[1],pPos[2]);
- IronDome[i][ObjectShoot] = CreateObject(345, IronDome[i][Pos][0], IronDome[i][Pos][1], IronDome[i][Pos][2], IronDome[i][Pos][3] + 5, IronDome[i][Pos][4], IronDome[i][Pos][5], 300);
- MoveObject(IronDome[i][ObjectShoot], pPos[0],pPos[1],pPos[2], 40);
- }
- }
- }
- }
- stock ShowDialogIDS(playerid)
- {
- new DialogPlayers[2048]; // max dialog info
- for(new i,j=GetMaxPlayers();i<=j;i++)
- {
- if(i==j) format(DialogPlayers,2048,"%s\n{00FF2F}בחר הכל\nבטל הכל",DialogPlayers);
- else format(DialogPlayers,2048,"%s\n%s%d",DialogPlayers, Attack[i][LastID]?("{1AFF00}"):(""),i);
- }
- ShowPlayerDialog(playerid,DIALOG_IDS,DIALOG_STYLE_LIST,"איידי לתקיפה",DialogPlayers,"אישור","חזרה");
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment