Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const MAX_DUELS = 10;
- enum
- {
- dDuelShow,
- dDuelCreate,
- dDuelCreate2,
- dDuelCreate3
- }
- enum E_DUEL_DATA
- {
- d_createid,
- d_acceptid,
- d_weaponslot,
- d_map,
- d_money,
- d_started
- }
- new duel[MAX_DUELS][E_DUEL_DATA];
- enum E_DUEL_SPAWN_DATA
- {
- d_interior,
- Float:d_pos[8]
- }
- const MAX_DUEL_SPAWN = 1;
- new const map_set_position[MAX_DUEL_SPAWN][E_DUEL_SPAWN_DATA] =
- {
- {interior,{x,y,z,fa,x2,y2,z2,fa}}
- };
- new duel_map_name[MAX_DUEL_SPAWN][10] =
- {
- "название1"
- };
- const MAX_DUEL_WEAPON = 5;
- enum E_DUEL_WEAPON_DATA
- {
- d_weapid,
- d_weapname[8]
- }
- new duel_weapon_name[MAX_DUEL_WEAPON][E_DUEL_WEAPON_DATA] =
- {
- {24,"Deagle"},
- {25,"ShotGun"},
- {29,"MP5"},
- {30,"AK-47"},
- {31,"M4"}
- };
- stock ShowdDuelShow(playerid)
- {
- new str_duel[300],str_temp[MAX_PLAYER_NAME+11+10];
- strcat(str_duel,!"Игрок\tСумма\tОружие\tКарта");
- for(new i; i < MAX_DUELS; i++)
- {
- if(duel[i][d_createid] == INVALID_PLAYER_ID)
- {
- str_temp = "Слот пуст";
- }
- else
- {
- format(str_temp,sizeof str_temp,"%s\t$%i\t%s\t%s",GN(duel[i][d_createid]), // имя игрока
- duel[i][d_money],duel_weapon_name[duel[i][d_weaponslot]][d_weapname],duel_map_name[duel[i][d_map]]);
- }
- strcat(str_duel,str_temp);
- }
- ShowPlayerDialog(playerid,dDuelShow,DIALOG_STYLE_TABLIST_HEADERS,"Дуэли","","Выбрать","Отмена");
- }
- stock ShowdDuelCreate(playerid) return ShowPlayerDialog(playerid,dDuelCreate,DIALOG_STYLE_INPUT,"$","\n\nУкажите сумму ставки за победу\n\t от 1000 до 100000","Далее","Отмена");
- stock ShowdDuelCreate2(playerid)
- {
- return ShowPlayerDialog(playerid,dDuelCreate2,DIALOG_STYLE_INPUT,"Оружие","{FFFFFF}Deagle\nShotGun\nMP5\n\AK-47\nM4","Далее","Отмена");
- }
- stock ShowdDuelCreate3(playerid, type = 0)
- {
- static str_maps[50];
- if(type == 1)
- {
- for(new i; i < MAX_MAP_DUEL; i++)
- {
- strcat(str_maps,duel_map_name[i]);
- }
- return 1;
- }
- return ShowPlayerDialog(playerid,dDuelCreate3,DIALOG_STYLE_INPUT,"Карты",str_maps,"Далее","Отмена");
- }
- new player_create_duel_money[MAX_PLAYERS];
- new player_create_duel_weapslot[MAX_PLAYERS];
- new player_start_duel[MAX_PLAYERS];
- public OnPlayerConnect(playerid)
- {
- player_create_duel_money[playerid] = 0;
- player_create_duel_weapslot[playerid] = 0;
- player_start_duel[playerid] = -1;
- return 1;
- }
- public OnGameModeInit()
- {
- ShowdDuelCreate3(-1,1);
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case dDuelShow:
- {
- if(response)
- {
- new slot_duel = listitem-1;
- if(slot_duel < 0)
- {
- ShowdDuelCreate(playerid);
- }
- else
- {
- if(duel[slot_duel][d_createid] == playerid)
- {
- duel[slot_duel][d_createid] = INVALID_PLAYER_ID;
- GiveMoney(playerid,duel[slot_duel][d_money]);
- SendClientMessage(playerid,-1,!"Вы вернули деньги за дуэль, Ваша дуэль отменена");
- return 1;
- }
- if(duel[slot_duel][d_createid] == INVALID_PLAYER_ID) return ShowdDuelShow(playerid);
- if(player_start_duel[duel[slot_duel][d_createid]] != -1)
- {
- SendClientMessage(playerid,-1,!"Этот игрок в данный момент учавствует в дуэли");
- return ShowdDuelShow(playerid);
- }
- else if(duel[slot_duel][d_money] < PI[playerid][pMoney] return SendClientMessage(playerid,-1,!"У Вас нет столько денег");
- GiveMoney(playerid,-duel[slot_duel][d_money]);
- player_start_duel[duel[slot_duel][d_createid]] = slot_duel;
- player_start_duel[playerid] = slot_duel;
- SetPlayerHealth(duel[slot_duel][d_createid],100.0);
- SetPlayerArmour(duel[slot_duel][d_createid],0.0);
- SetPlayerHealth(playerid,100.0);
- SetPlayerArmour(playerid,0.0);
- SetPlayerPos(playerid,
- map_set_position[duel[slot_duel][d_map]][d_pos][0],
- map_set_position[duel[slot_duel][d_map]][d_pos][1],
- map_set_position[duel[slot_duel][d_map]][d_pos][2]);
- SetPlayerFacingAngle(playerid,map_set_position[duel[slot_duel][d_map]][d_pos][3]);
- SetPlayerInterior(playerid,map_set_position[duel[slot_duel][d_interior]]);
- SetCameraBehindPlayer(playerid);
- SetPlayerPos(duel[slot_duel][d_createid],
- map_set_position[duel[slot_duel][d_map]][d_pos][4],
- map_set_position[duel[slot_duel][d_map]][d_pos][5],
- map_set_position[duel[slot_duel][d_map]][d_pos][6]);
- SetPlayerFacingAngle(duel[slot_duel][d_createid],map_set_position[duel[slot_duel][d_map]][d_pos][7]);
- SetPlayerInterior(duel[slot_duel][d_createid],map_set_position[duel[slot_duel][d_interior]]);
- SetCameraBehindPlayer(duel[slot_duel][d_createid]);
- }
- }
- }
- case dDuelCreate:
- {
- if(response)
- {
- new duel_money = strval(inputtext);
- if(duel_money < 1000 || duel_money > 100000)
- {
- return ShowdDuelCreate(playerid);
- }
- player_create_duel_money[playerid] = duel_money;
- }
- ShowdDuelCreate2(playerid);
- }
- case ShowdDuelCreate2:
- {
- if(!response) return ShowdDuelCreate(playerid);
- player_create_duel_weapslot[playerid] = listitem;
- ShowdDuelCreate3(playerid);
- }
- case dDuelCreate3:
- {
- if(!response) return ShowdDuelCreate2(playerid);
- new pos_created = -1;
- for(new i; i < MAX_DUELS; i++)
- {
- if(duel[i][d_createid] == INVALID_PLAYER_ID)
- {
- pos_created = i;
- break;
- }
- }
- if(pos_created == -1) return SendClientMessage(playerid,-1,!"Нет доступных слотов для создания дуэли");
- if(player_create_duel_money[playerid] < PI[playerid][pMoney]) return SendClientMessage(playerid,-1,!"У Вас нет столько денег");
- GiveMoney(playerid,-player_create_duel_money[playerid]);
- duel[pos_created][d_createid] = playerid;
- duel[pos_created][d_acceptid] = INVALID_PLAYER_ID;
- duel[pos_created][d_weaponslot] = player_create_duel_weapslot[playerid];
- duel[pos_created][d_map] = listitem;
- duel[pos_created][d_money] = player_create_duel_money[playerid];
- duel[pos_created][d_started] = 1;
- SendClientMessage(playerid,-1,!"Вы создали новую дуэль, ждите пока кто-нибудь согласится");
- }
- }
- return 1;
- }
- if(player_start_duel[playerid] != 0) return SendClientMessage(playerid,-1,!"Вы не можете создать больше дуэль");
- public OnPlayerDeath(playerid, killerid, reason)
- {
- if(killerid != INVALID_PLAYER_ID)
- {
- if(player_start_duel[playerid] == player_start_duel[killerid])
- {
- SendClientMessage(playerid,-1,!"Вы проиграли дуэль");
- SendClientMessage(killerid,-1,!"Вы выйграли дуэль");
- GiveMoney(killerid,duel[player_start_duel[playerid]][d_money]*2);
- duel[player_start_duel[playerid]][d_createid] = INVALID_PLAYER_ID;
- }
- }
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- if(player_start_duel[playerid] != -1)
- {
- return ReturnPlayerDuel(playerid);
- }
- return 1;
- }
- stock ReturnPlayerDuel(playerid)
- {
- player_start_duel[playerid] = -1;
- SetPlayerPos(playerid,0,0,0); // телепорт из карты дуэли на старт где создают дуэль
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- for(new i; i < MAX_DUELS; i++)
- {
- if(duel[i][d_createid] == playerid)
- {
- duel[i][d_createid] = INVALID_PLAYER_ID;
- GiveMoney(playerid,duel[i][d_money]);
- }
- else if(duel[i][d_acceptid] == playerid)
- {
- if(duel[i][d_createid] != INVALID_PLAYER_ID && IsPlayerConnected(duel[i][d_createid]))
- {
- GiveMoney(duel[i][d_createid],duel[i][d_money]*2);
- SendClientMessage(duel[i][d_createid],-1,"Вы выйграли дуэль");
- player_start_duel[duel[i][d_createid]] = 0;
- SetPlayerHealth(duel[i][d_createid],100.0);
- ReturnPlayerDuel(duel[i][d_createid]);
- }
- duel[i][d_acceptid] = INVALID_PLAYER_ID;
- break;
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement