11.03.2015, 11:50
pawn Код:
#define dueldialog 242
#define DuelPlace1 -1401.5426,1267.2721,1039.8672
#define DuelPlace2 -1388.0773,1225.5911,1039.8672
new DuelOffer[MAX_PLAYERS];
new counttime[MAX_PLAYERS] = -1;
new DuelType, Bet, InDuel[MAX_PLAYERS], declinedueltimer, DuelPlayer1, DuelPlayer2, Progress, DUEL_TIMER;
new vWorld = 0;
new DuelWeaponName[128];
public OnPlayerDisconnect(playerid, reason)
{
if(InDuel[playerid] == 1)
{
new msg[128];
format(msg, sizeof(msg), "Duel Between %s (%d) and %s (%d) Has Ended. Reason: {ff0000}Disconnected!", PlayerInfo[DuelPlayer1][pName], DuelPlayer1, PlayerInfo[DuelPlayer2][pName], DuelPlayer2);
SendClientMessageToAll(COLOR_SERVER_HELP_MSG, msg);
Progress = 0;
InDuel[DuelPlayer1] = 0;
InDuel[DuelPlayer2] = 0;
KillTimer(DUEL_TIMER);
vWorld--;
SpawnPlayer(DuelPlayer1);
SetPlayerVirtualWorld(DuelPlayer1, 0);
SetPlayerVirtualWorld(DuelPlayer1, 0);
SpawnPlayer(DuelPlayer2);
SetPlayerVirtualWorld(DuelPlayer2, 0);
SetPlayerVirtualWorld(DuelPlayer2, 0);
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(InDuel[playerid] == 1 && InDuel[killerid] != 1)
{
new msg[128];
format(msg, sizeof(msg), "Duel Between %s (%d) and %s (%d) Has Ended. Reason: {ff0000}Player Died!", PlayerInfo[DuelPlayer1][pName], DuelPlayer1, PlayerInfo[DuelPlayer2][pName], DuelPlayer2);
SendClientMessageToAll(COLOR_SERVER_HELP_MSG, msg);
Progress = 0;
InDuel[DuelPlayer1] = 0;
InDuel[DuelPlayer2] = 0;
KillTimer(DUEL_TIMER);
vWorld--;
SpawnPlayer(DuelPlayer1);
SetPlayerVirtualWorld(DuelPlayer1, 0);
SpawnPlayer(DuelPlayer2);
SetPlayerVirtualWorld(DuelPlayer2, 0);
}
if(InDuel[playerid] == 1 && InDuel[killerid] == 1)
{
GiveCash(killerid, 2*Bet);
new Float:Health, Float:Armour1, string1[128];
GetPlayerArmour(killerid, Armour1);
GetPlayerHealth(killerid, Health);
format(string1, sizeof(string1), "[DUEL] %s (%d) Has Won The Duel From %s (%d) And Still Has %.2f {ff0000}Health Left.", PlayerInfo[killerid][pName], killerid, PlayerInfo[playerid][pName], playerid, Health);
SendClientMessageToOthers(killerid,COLOR_SERVER_HELP_MSG, string1);
new str[128];
format(str, sizeof(str), "[DUEL]: You Have Won The Duel Against %s (%d) And Gained {ff0000}$%d.", PlayerInfo[playerid][pName], playerid, Bet);
SendClientMessage(killerid, COLOR_SERVER_HELP_MSG, str);
PlayerInfo[killerid][pDuelsWon] ++;
PlayerInfo[playerid][pDuelsLost] ++;
vWorld--;
SpawnPlayer(killerid);
SetPlayerVirtualWorld(playerid, 0);
SetPlayerVirtualWorld(killerid, 0);
Progress = 0;
InDuel[playerid] = 0;
InDuel[killerid] = 0;
SetPlayerVirtualWorld(playerid, 0);
SetPlayerVirtualWorld(killerid, 0);
KillTimer(DUEL_TIMER);
return 1;
}
return 1;
}
COMMAND:acduel(playerid, params[]) return cmd_acceptduel(playerid, params);
COMMAND:deduel(playerid, params[]) return cmd_deduel(playerid, params);
COMMAND:duel(playerid, params[])
{
new TargetID, DuelBet;
if(sscanf(params, "ui", TargetID, DuelBet)) return SendClientMessage(playerid, COLOR_ERROR,"USAGE: /duel [PlayerID] [Bet]");
if(!IsPlayerConnected(TargetID) || TargetID == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_ERROR, "That Player Is Not Connected.");
if(InSniper[playerid] == 1) return SendClientMessage(playerid,COLOR_ERROR,"You Cannot Use This Command In Sniper DM.");
if(DuelAllowed[playerid] == 0) return SendClientMessage(playerid, COLOR_ERROR, "You Must Have to Allow Duels In Order To Invite Some 1 For Duel.");
if(DuelAllowed[TargetID] == 0) return SendClientMessage(playerid, COLOR_ERROR, "That Player Has His Duel Invitations OFF.");
if(Progress == 2) return SendClientMessage(playerid, COLOR_ERROR, "Another Duel Is In Progress");
if(GetPlayerCash(playerid) < DuelBet && DuelBet != 0) return
SendClientMessage(playerid, COLOR_ERROR, "You Don't Have That Much Money.");
if(GetPlayerCash(TargetID) < DuelBet && DuelBet != 0) return SendClientMessage(playerid, COLOR_ERROR, "That Player Doesn't Have That Much Amount of Money!");
if(DuelBet < 1000 || DuelBet > 250000) return SendClientMessage(playerid, COLOR_ERROR, "Bet Range: $1000 - 250000.");
if(TargetID == playerid) return SendClientMessage(playerid, COLOR_ERROR, "You Cannot Duel Yourself.");
DuelPlayer2 = TargetID;
DuelPlayer1 = playerid;
Bet = DuelBet;
Progress = 1;
ShowPlayerDialog(playerid, dueldialog + 1 , DIALOG_STYLE_LIST, "{00ff2a}Duel Weapons:", "{FFFFFF}Sawn-off ShotgunnDesert EaglenTEC-9nM4nAk47nColt-45 / 9mmnSawn-off Shotgun + TEC-9 + DeaglenM4 + DeaglenSniper + M4", "Choose", "Cancel");
return 1;
}
COMMAND:acceptduel(playerid, params[])
{
new string[256];
if(PlayerInfo[playerid][pSpawned] != 1) return SendClientMessage(playerid, COLOR_ERROR, "You Cannot Use This Command While You're Dead.");
if(InDuel[playerid] == 1) return SendClientMessage(playerid,COLOR_ERROR,"You Are Already in Duel Challenge.");
if(DuelOffer[playerid] != 1) return SendClientMessage(playerid,COLOR_ERROR,"You Cannot Accept Duel, No One Sent You Duel Challenge.");
format(string, sizeof(string), "[DUEL] The Duel Between %s (%d) and %s (%d) Has Started. (Bet: $%d)", PlayerInfo[DuelPlayer1][pName], DuelPlayer1, PlayerInfo[DuelPlayer2][pName], DuelPlayer2, Bet);
SendClientMessageToAll(COLOR_SERVER_HELP_MSG, string);
SetPlayerPosEx(DuelPlayer1,DuelPlace1,199.2980,16,0);
SetPlayerPosEx(DuelPlayer2,DuelPlace2,23.5397, 16,0);
SetPlayerHealth(DuelPlayer1, 100);
SetPlayerHealth(DuelPlayer2, 100);
SetPlayerArmour(DuelPlayer1, 100);
SetPlayerArmour(DuelPlayer2, 100);
format(string, sizeof(string), "In Duel Challenge");
strmid(PlayerInfo[DuelPlayer1][pInteriorName], string, 0, strlen(string), 256);
strmid(PlayerInfo[DuelPlayer1][pLocation], string, 0, strlen(string), 256);
format(string, sizeof(string), "In Duel Challenge");
strmid(PlayerInfo[DuelPlayer2][pInteriorName], string, 0, strlen(string), 256);
strmid(PlayerInfo[DuelPlayer2][pLocation], string, 0, strlen(string), 256);
GiveCash(DuelPlayer1, -Bet);
GiveCash(DuelPlayer2, -Bet);
vWorld++;
SetPlayerVirtualWorld(DuelPlayer1, vWorld);
SetPlayerVirtualWorld(DuelPlayer2, vWorld);
TogglePlayerControllable(DuelPlayer1, false);
TogglePlayerControllable(DuelPlayer2, false);
SetCameraBehindPlayer(DuelPlayer1);
SetCameraBehindPlayer(DuelPlayer2);
InDuel[DuelPlayer1] = 1;
InDuel[DuelPlayer2] = 1;
Progress = 2;
GiveDuelWeapons(DuelType);
PlayerInfo[DuelPlayer1][pDrugsTime] = 0;
PlayerInfo[DuelPlayer2][pDrugsTime] = 0;
ON_DRUGS[DuelPlayer1] = 0;
ON_DRUGS[DuelPlayer2] = 0;
DrugsTaken[DuelPlayer1] = 0;
DrugsTaken[DuelPlayer2] = 0;
CD = 6;
CDTimer = SetTimer("CountDown", 1000, 1);
KillTimer(declinedueltimer);
DUEL_TIMER = SetTimer("TIMEUP", 60000*3, 0);
return 1;
}
COMMAND:refuseduel(playerid, params[])
{
if(PlayerInfo[playerid][pSpawned] != 1) return SendClientMessage(playerid, COLOR_ERROR, "You Cannot Use This Command While You're Dead.");
if(DuelOffer[playerid] != 1) return SendClientMessage(playerid,COLOR_ERROR,"You Cannot Refuse Duel, No One Sent You Duel Challenge.");
DuelDeclined();
return 1;
}
stock GiveDuelWeapons(Type)
{
if(Type == 0)
{
ResetPlayerWeapons(DuelPlayer1);
ResetPlayerWeapons(DuelPlayer2);
GivePlayerWeapon(DuelPlayer1, 26, 5000);
GivePlayerWeapon(DuelPlayer2, 26, 5000);
}
if(Type == 1)
{
ResetPlayerWeapons(DuelPlayer1);
ResetPlayerWeapons(DuelPlayer2);
GivePlayerWeapon(DuelPlayer1, 24, 5000);
GivePlayerWeapon(DuelPlayer2, 24, 5000);
}
if(Type == 2)
{
ResetPlayerWeapons(DuelPlayer1);
ResetPlayerWeapons(DuelPlayer2);
GivePlayerWeapon(DuelPlayer1, 32, 5000);
GivePlayerWeapon(DuelPlayer2, 32, 5000);
}
if(Type == 3)
{
ResetPlayerWeapons(DuelPlayer1);
ResetPlayerWeapons(DuelPlayer2);
GivePlayerWeapon(DuelPlayer1, 31, 5000);
GivePlayerWeapon(DuelPlayer2, 31, 5000);
}
if(Type == 4)
{
ResetPlayerWeapons(DuelPlayer1);
ResetPlayerWeapons(DuelPlayer2);
GivePlayerWeapon(DuelPlayer1, 30, 5000);
GivePlayerWeapon(DuelPlayer2, 30, 5000);
}
if(Type == 5)
{
ResetPlayerWeapons(DuelPlayer1);
ResetPlayerWeapons(DuelPlayer2);
GivePlayerWeapon(DuelPlayer1, 22, 5000);
GivePlayerWeapon(DuelPlayer2, 22, 5000);
}
if(Type == 6)
{
ResetPlayerWeapons(DuelPlayer1);
ResetPlayerWeapons(DuelPlayer2);
GivePlayerWeapon(DuelPlayer1, 32, 5000);
GivePlayerWeapon(DuelPlayer1, 26, 5000);
GivePlayerWeapon(DuelPlayer1, 24, 5000);
GivePlayerWeapon(DuelPlayer2, 32, 5000);
GivePlayerWeapon(DuelPlayer2, 26, 5000);
GivePlayerWeapon(DuelPlayer2, 24, 5000);
}
if(Type == 7)
{
ResetPlayerWeapons(DuelPlayer1);
ResetPlayerWeapons(DuelPlayer2);
GivePlayerWeapon(DuelPlayer1, 31, 5000);
GivePlayerWeapon(DuelPlayer1, 24, 5000);
GivePlayerWeapon(DuelPlayer2, 24, 5000);
GivePlayerWeapon(DuelPlayer2, 31, 5000);
}
if(Type == 8)
{
ResetPlayerWeapons(DuelPlayer1);
ResetPlayerWeapons(DuelPlayer2);
GivePlayerWeapon(DuelPlayer1, 34, 5000);
GivePlayerWeapon(DuelPlayer1, 31, 5000);
GivePlayerWeapon(DuelPlayer2, 31, 5000);
GivePlayerWeapon(DuelPlayer2, 34, 5000);
}
return 1;
}
forward DuelOffered();
public DuelOffered()
{
new str[256];
if(DuelPlayer2 > -10)
{
format(str, sizeof(str), "You Have Been Challenged for 1v1 Duel By %s. This Invite will be Cancelled in 30 Seconds.", PlayerInfo[DuelPlayer1][pName]);
SendClientMessage(DuelPlayer2, COLOR_SERVER_HELP_MSG,str);
format(str, sizeof(str), "Duel Weapons: "YELLOW"%s, "LIGHTBLUE"Bet: "YELLOW"$%d.", DuelWeaponName, Bet);
SendClientMessage(DuelPlayer2, COLOR_SERVER_HELP_MSG,str);
SendClientMessage(DuelPlayer2, COLOR_SERVER_HELP_MSG,"Type "YELLOW"/acduel"LIGHTBLUE" to Accept or "YELLOW"/refuseduel"LIGHTBLUE" to Refuse Duel Challenge.");
}
DuelOffer[DuelPlayer2] = 1;
declinedueltimer = SetTimer("DuelDeclined", 30*1000, 0);
return 1;
}
forward TIMEUP();
public TIMEUP()
{
if(Progress > 0)
{
new msg[128];
format(msg, sizeof(msg), "Duel Between %s (%d) and %s (%d) Has Ended. Reason: Time UP!", PlayerInfo[DuelPlayer1][pName], DuelPlayer1, PlayerInfo[DuelPlayer2][pName], DuelPlayer2);
SendClientMessageToAll(COLOR_SERVER_HELP_MSG, msg);
Progress =0;
InDuel[DuelPlayer1] = 0;
InDuel[DuelPlayer2] = 0;
SpawnPlayer(DuelPlayer1);
SpawnPlayer(DuelPlayer2);
DuelOffer[DuelPlayer1] = 0;
DuelOffer[DuelPlayer2] = 0;
ResetPlayerWeapons(DuelPlayer1);
ResetPlayerWeapons(DuelPlayer2);
}
return 1;
}
forward DuelDeclined();
public DuelDeclined()
{
new string[128];
format(string, sizeof(string), "%s (%d) Has Refused Your Duel Challenge.", PlayerInfo[DuelPlayer2][pName], DuelPlayer2);
SendClientMessage(DuelPlayer1, COLOR_SERVER_HELP_MSG, string);
SendClientMessage(DuelPlayer2, COLOR_SERVER_HELP_MSG, "You Have Refused The Duel Challenge.");
DuelOffer[DuelPlayer1] = 0;
DuelOffer[DuelPlayer2] = 0;
Progress = 0;
InDuel[DuelPlayer1] = 0;
InDuel[DuelPlayer2] = 0;
KillTimer(declinedueltimer);
return 1;
}