23.05.2018, 06:17
PHP код:
#define DUELDIALOG 6246
#define DUELINVITE 6247
new induel[MAX_PLAYERS];
new induelinvite[MAX_PLAYERS];
new target;
new dueler;
new Float:duelHealth[MAX_PLAYERS];
new Float:duelArmour[MAX_PLAYERS];
PHP код:
public OnPlayerDeath(playerid, killerid, reason)
{
if(induel[playerid] == 1 && induel[killerid] == 1)
{
GetPlayerHealth(playerid, duelHealth[playerid]);
GetPlayerArmour(playerid, duelArmour[playerid]);
SetPlayerVirtualWorld(playerid, 0);
SetPlayerVirtualWorld(killerid, 0);
SetPlayerPos(playerid, 0.0, 0.0, 0.0);
SpawnPlayer(playerid);
SetPlayerPos(killerid, 0.0, 0.0, 0.0);
SpawnPlayer(killerid);
new string[128];
format(string, 128, "%s has won 1 vs 1 duel againts %s and still has %d health and %d armour", pName(killerid), pName(playerid), duelHealth[playerid], duelArmour[playerid]);
SendClientMessageToAll(orange, string);
}
...
PHP код:
CMD:duel(playerid,params[])
{
new player1;
if(sscanf(params,"ui",player1)) return SendClientMessage(playerid,0xFF0000FF,"Usage: /duel [playerid]");
if(!IsPlayerConnected(player1) || player1 == playerid) return SendClientMessage(playerid,0xFF0000FF,"ERROR: Player is not connected or is yourself");
if(induelinvite[player1] == 1) return SendClientMessage(playerid, red, "ERROR: This player has another duel invitation");
if(induel[playerid] == 1) return SendClientMessage(playerid, red, "ERROR: You are already in duel");
if(induel[player1] == 1) return SendClientMessage(playerid, red, "ERROR: This player is already in duel");
//if(betprice < 1) return SendClientMessage(playerid,0xFF0000FF,"ERROR: Invalid bet price");
player1 = target;
playerid = dueler;
//if(GetPlayerMoney(playerid) < betprice) return SendClientMessage(playerid,0xFF0000FF,"ERROR: You don't own this bet price");
ShowPlayerDialog(playerid, DUELDIALOG, DIALOG_STYLE_LIST, "{00FF00}Choose Weapon ", "Desert Eagle\nSawn-Off Shotgun", "Select", "Cancel");
induelinvite[target] = 1;
return 1;
}
PHP код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DUELDIALOG)
{
if(response)
{
if(listitem == 0)
{
//ShowPlayerDialog(playerid, DUELDIALOG+1, DIALOG_STYLE_LIST, "Choose Place", "Stadium\nVice Stadium\nWare House", "Select", "Back");
SendClientMessage(dueler, blue, "You have challenge %s to duel. Please wait for him to accept");
new string[128];
format(string, 128, "%s has challenge you to duel using Desert Eagle", pName(dueler));
ShowPlayerDialog(target, DUELINVITE+1, DIALOG_STYLE_MSGBOX, string, "Accept", "Reject");
}
if(listitem == 1)
{
//ShowPlayerDialog(playerid, DUELDIALOG+2, DIALOG_STYLE_LIST, "Choose Place", "Stadium\nVice Stadium\nWare House", "Select", "Back");
SendClientMessage(dueler, blue, "You have challenge %s to duel. Please wait for him to accept");
new string[128];
format(string, 128, "%s has challenge you to duel using Sawn-Off Shotgun", pName(dueler));
ShowPlayerDialog(target, DUELINVITE+2, DIALOG_STYLE_MSGBOX, string, "Accept", "Reject");
}
}
}
if(dialogid == DUELINVITE+1)
{
if(response)
{
//------------
SetPlayerPos(dueler,1368.0883,-19.5623,1000.9219);
SetPlayerFacingAngle(dueler,266.5214);
SetPlayerHealth(dueler,100);
SetPlayerArmour(dueler,100);
SetPlayerInterior(dueler,1);
SetPlayerVirtualWorld(dueler,dueler+88);
//------------
SetPlayerPos(target,1368.0883,-19.5623,1000.9219);
SetPlayerFacingAngle(target,266.5214);
SetPlayerHealth(target,100);
SetPlayerArmour(target,100);
SetPlayerInterior(target,1);
SetPlayerVirtualWorld(target,dueler+88);
//------------
GivePlayerWeapon(dueler, 24, 999999);
GivePlayerWeapon(target, 24, 999999);
new string[128];
format(string, 128, "Duel Between %s and %s has started [Desert Eagle] [Ware House]", pName(target), pName(dueler));
SendClientMessageToAll(green, string);
induel[target] = 1;
induel[dueler] = 1;
if(cdt[dueler] == 6) {
GameTextForPlayer(dueler, "~p~Duel Starting...", 1000, 6); GameTextForPlayer(target, "~p~Duel Starting...", 1000, 6);
}
cdt[dueler]--;
if(cdt[dueler] == 0)
{
TogglePlayerControllable(dueler, 1); TogglePlayerControllable(target, 1);
PlayerPlaySound(dueler, 1057, 0.0, 0.0, 0.0); PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
GameTextForPlayer(dueler, "~g~GO~ r~!", 1000, 6); GameTextForPlayer(target, "~g~GO~ r~!", 1000, 6);
return 0;
}
else
{
new text[7]; format(text, sizeof(text), "~w~%d", cdt[target]);
PlayerPlaySound(dueler, 1056, 0.0, 0.0, 0.0); PlayerPlaySound(target, 1056, 0.0, 0.0, 0.0);
TogglePlayerControllable(dueler, 0); TogglePlayerControllable(target, 0);
GameTextForPlayer(dueler, text, 1000, 6); GameTextForPlayer(target, text, 1000, 6);
}
SetTimerEx("Duel", 1000, 0, "dd", dueler, target);
}
if(!response)
{
induelinvite[target] = 0;
new string[128];
format(string, 128, "%s has rejected your duel invitation", pName(target));
SendClientMessage(dueler, red, string);
}
}
if(dialogid == DUELINVITE+2)
{
if(response)
{
SetPlayerPos(dueler,1368.0883,-19.5623,1000.9219);
SetPlayerFacingAngle(dueler,266.5214);
SetPlayerHealth(dueler,100);
SetPlayerArmour(dueler,100);
SetPlayerInterior(dueler,1);
SetPlayerVirtualWorld(dueler,dueler+88);
//------------
SetPlayerPos(target,1368.0883,-19.5623,1000.9219);
SetPlayerFacingAngle(target,266.5214);
SetPlayerHealth(target,100);
SetPlayerArmour(target,100);
SetPlayerInterior(target,1);
SetPlayerVirtualWorld(target,dueler+88);
//------------
GivePlayerWeapon(dueler, 26, 999999);
GivePlayerWeapon(target, 26, 999999);
new string[128];
format(string, 128, "Duel Between %s and %s has started [Sawn-Off Shotgun] [Ware House]", pName(target), pName(dueler));
SendClientMessageToAll(green, string);
induel[target] = 1;
induel[dueler] = 1;
if(cdt[dueler] == 6) {
GameTextForPlayer(dueler, "~p~Duel Starting...", 1000, 6); GameTextForPlayer(target, "~p~Duel Starting...", 1000, 6);
}
cdt[dueler]--;
if(cdt[dueler] == 0)
{
TogglePlayerControllable(dueler, 1); TogglePlayerControllable(target, 1);
PlayerPlaySound(dueler, 1057, 0.0, 0.0, 0.0); PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
GameTextForPlayer(dueler, "~g~GO~ r~!", 1000, 6); GameTextForPlayer(target, "~g~GO~ r~!", 1000, 6);
return 0;
}
else
{
new text[7]; format(text, sizeof(text), "~w~%d", cdt[target]);
PlayerPlaySound(dueler, 1056, 0.0, 0.0, 0.0); PlayerPlaySound(target, 1056, 0.0, 0.0, 0.0);
TogglePlayerControllable(dueler, 0); TogglePlayerControllable(target, 0);
GameTextForPlayer(dueler, text, 1000, 6); GameTextForPlayer(target, text, 1000, 6);
}
SetTimerEx("Duel", 1000, 0, "dd", dueler, target);
}
if(!response)
{
induelinvite[target] = 0;
new string[128];
format(string, 128, "%s has rejected your duel invitation", pName(target));
SendClientMessage(dueler, red, string);
}
}
...
Please guys
![Smiley](images/smilies/smile.png)
EDIT: Can I make the codes more efficient?