[HELP] Virtual World Not Changing!
#1

Hello, i set player's virtual world different for different duel rooms, but it not works..

the player in duel arena can see the other players (who have different virtual world), though i changed the worlds

Here is my CODE:-
PHP код:
COMMAND:acceptduel(playeridparams[])
{
    new 
string[256];
    
    if(
PlayerInfo[playerid][pSpawned] == 1)
    {
    
    if(
InDuel[playerid] == 1)
    {
    
SendClientMessage(playerid,COLOR_ERROR,"You Are Already in Duel Challenge.");
    return 
1;
    }
    if(
DuelOffer[playerid] == 1)
    {
    
    if(
DuelRoom1 == 1)
    {
    
    
format(stringsizeof(string), "[DUEL] The Duel Between %s (%d) and %s (%d) Has Started. (Bet: $%d)"PlayerInfo[DuelPlayer1][pName], DuelPlayer1PlayerInfo[DuelPlayer2][pName], DuelPlayer2DuelRoomBet1);
    
SendClientMessageToAll(COLOR_SERVER_HELP_MSGstring);
   
/*
    SetPlayerPosEx(DuelPlayer1,DuelPlace1,199.2980,16,2);
    SetPlayerPosEx(DuelPlayer2,DuelPlace2,23.5397, 16,2);*/
    
SetPlayerVirtualWorld(DuelPlayer122);
    
SetPlayerVirtualWorld(DuelPlayer222);
    
SetPlayerPos(DuelPlayer1DuelPlace1);
    
SetPlayerPos(DuelPlayer2DuelPlace2);
    
SetPlayerInterior(DuelPlayer116);
    
SetPlayerInterior(DuelPlayer216);
    
SetPlayerFacingAngle(DuelPlayer1199.2980);
    
SetPlayerFacingAngle(DuelPlayer223.5397);
    
    
SetPlayerHealth(DuelPlayer1100);
    
SetPlayerHealth(DuelPlayer2100);
    
SetPlayerArmour(DuelPlayer1100);
    
SetPlayerArmour(DuelPlayer2100);
    
    
format(stringsizeof(string), "In Duel Challenge");
    
strmid(PlayerInfo[DuelPlayer1][pInteriorName], string0strlen(string), 256);
    
strmid(PlayerInfo[DuelPlayer1][pLocation], string0strlen(string), 256);
    
    
format(stringsizeof(string), "In Duel Challenge");
    
strmid(PlayerInfo[DuelPlayer2][pInteriorName], string0strlen(string), 256);
    
strmid(PlayerInfo[DuelPlayer2][pLocation], string0strlen(string), 256);
    
    
GiveCash(DuelPlayer1DuelRoomBet1);
    
GiveCash(DuelPlayer2DuelRoomBet1);
    
    
TogglePlayerControllable(DuelPlayer1false);
    
TogglePlayerControllable(DuelPlayer2false);
    
    
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"10001);
    
KillTimer(declinedueltimer);
    
DUEL_TIMER SetTimer("TIMEUP"60000*30);
    }
    
    else if(
DuelRoom2 == 1)
    {
    
format(stringsizeof(string), "[DUEL] The Duel Between %s (%d) and %s (%d) Has Started. (Bet: $%d)"PlayerInfo[DuelPlayer1][pName], DuelPlayer1PlayerInfo[DuelPlayer2][pName], DuelPlayer2DuelRoomBet2);
    
SendClientMessageToAll(COLOR_SERVER_HELP_MSGstring);
    
SetPlayerVirtualWorld(DuelPlayer133);
    
SetPlayerVirtualWorld(DuelPlayer233);
    
SetPlayerPos(DuelPlayer1DuelPlace1);
    
SetPlayerPos(DuelPlayer2DuelPlace2);
    
SetPlayerInterior(DuelPlayer116);
    
SetPlayerInterior(DuelPlayer216);
    
SetPlayerFacingAngle(DuelPlayer1199.2980);
    
SetPlayerFacingAngle(DuelPlayer223.5397);
    
SetPlayerHealth(DuelPlayer1100);
    
SetPlayerHealth(DuelPlayer2100);
    
SetPlayerArmour(DuelPlayer1100);
    
SetPlayerArmour(DuelPlayer2100);
    
format(stringsizeof(string), "In Duel Challenge");
    
strmid(PlayerInfo[DuelPlayer1][pInteriorName], string0strlen(string), 256);
    
strmid(PlayerInfo[DuelPlayer1][pLocation], string0strlen(string), 256);
    
format(stringsizeof(string), "In Duel Challenge");
    
strmid(PlayerInfo[DuelPlayer2][pInteriorName], string0strlen(string), 256);
    
strmid(PlayerInfo[DuelPlayer2][pLocation], string0strlen(string), 256);
    
GiveCash(DuelPlayer1DuelRoomBet2);
    
GiveCash(DuelPlayer2DuelRoomBet2);
    
TogglePlayerControllable(DuelPlayer1false);
    
TogglePlayerControllable(DuelPlayer2false);
    
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"10001);
    
KillTimer(declinedueltimer);
    
DUEL_TIMER SetTimer("TIMEUP"60000*30);
    }
    
    else if(
DuelRoom3 == 1)
    {
    
format(stringsizeof(string), "[DUEL] The Duel Between %s (%d) and %s (%d) Has Started. (Bet: $%d)"PlayerInfo[DuelPlayer1][pName], DuelPlayer1PlayerInfo[DuelPlayer2][pName], DuelPlayer2DuelRoomBet3);
    
SendClientMessageToAll(COLOR_SERVER_HELP_MSGstring);
    
SetPlayerVirtualWorld(DuelPlayer144);
    
SetPlayerVirtualWorld(DuelPlayer244);
    
SetPlayerPos(DuelPlayer1DuelPlace1);
    
SetPlayerPos(DuelPlayer2DuelPlace2);
    
SetPlayerInterior(DuelPlayer116);
    
SetPlayerInterior(DuelPlayer216);
    
SetPlayerFacingAngle(DuelPlayer1199.2980);
    
SetPlayerFacingAngle(DuelPlayer223.5397);
    
SetPlayerHealth(DuelPlayer1100);
    
SetPlayerHealth(DuelPlayer2100);
    
SetPlayerArmour(DuelPlayer1100);
    
SetPlayerArmour(DuelPlayer2100);
    
format(stringsizeof(string), "In Duel Challenge");
    
strmid(PlayerInfo[DuelPlayer1][pInteriorName], string0strlen(string), 256);
    
strmid(PlayerInfo[DuelPlayer1][pLocation], string0strlen(string), 256);
    
format(stringsizeof(string), "In Duel Challenge");
    
strmid(PlayerInfo[DuelPlayer2][pInteriorName], string0strlen(string), 256);
    
strmid(PlayerInfo[DuelPlayer2][pLocation], string0strlen(string), 256);
    
GiveCash(DuelPlayer1DuelRoomBet3);
    
GiveCash(DuelPlayer2DuelRoomBet3);
    
TogglePlayerControllable(DuelPlayer1false);
    
TogglePlayerControllable(DuelPlayer2false);
    
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"10001);
    
KillTimer(declinedueltimer);
    
DUEL_TIMER SetTimer("TIMEUP"60000*30);
    }
    
    else if(
DuelRoom4 == 1)
    {
    
format(stringsizeof(string), "[DUEL] The Duel Between %s (%d) and %s (%d) Has Started. (Bet: $%d)"PlayerInfo[DuelPlayer1][pName], DuelPlayer1PlayerInfo[DuelPlayer2][pName], DuelPlayer2DuelRoomBet4);
    
SendClientMessageToAll(COLOR_SERVER_HELP_MSGstring);
    
SetPlayerVirtualWorld(DuelPlayer155);
    
SetPlayerVirtualWorld(DuelPlayer255);
    
SetPlayerPos(DuelPlayer1DuelPlace1);
    
SetPlayerPos(DuelPlayer2DuelPlace2);
    
SetPlayerInterior(DuelPlayer116);
    
SetPlayerInterior(DuelPlayer216);
    
SetPlayerFacingAngle(DuelPlayer1199.2980);
    
SetPlayerFacingAngle(DuelPlayer223.5397);
    
SetPlayerHealth(DuelPlayer1100);
    
SetPlayerHealth(DuelPlayer2100);
    
SetPlayerArmour(DuelPlayer1100);
    
SetPlayerArmour(DuelPlayer2100);
    
format(stringsizeof(string), "In Duel Challenge");
    
strmid(PlayerInfo[DuelPlayer1][pInteriorName], string0strlen(string), 256);
    
strmid(PlayerInfo[DuelPlayer1][pLocation], string0strlen(string), 256);
    
format(stringsizeof(string), "In Duel Challenge");
    
strmid(PlayerInfo[DuelPlayer2][pInteriorName], string0strlen(string), 256);
    
strmid(PlayerInfo[DuelPlayer2][pLocation], string0strlen(string), 256);
    
GiveCash(DuelPlayer1DuelRoomBet4);
    
GiveCash(DuelPlayer2DuelRoomBet4);
    
TogglePlayerControllable(DuelPlayer1false);
    
TogglePlayerControllable(DuelPlayer2false);
    
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"10001);
    
KillTimer(declinedueltimer);
    
DUEL_TIMER SetTimer("TIMEUP"60000*30);
    }
    }else{
    
SendClientMessage(playerid,COLOR_ERROR,"You Cannot Accept Duel, No One Sent You Duel Challenge.");
    }
    }else{
    
SendClientMessage(playeridCOLOR_ERROR"You Cannot Use This Command While You're Dead.");
    }
    return 
1;

Please help me, what wrong im doing?
How can player see each other, if i changed the virtual worlds?

As You can see the worlds are different i.e 22, 33, 44, 55 for four different rooms but still when i test, all players in duel arena at the same time can see each other why why?
Reply
#2

The reason is because you always use DuelPlayer1 and DuelPlayer2. Avoid code duplication, and don't use variables with number after them when you can use arrays instead. This is not complete as I don't have your code:
pawn Код:
#define MAX_DUEL_ROOMS (5)
;
new
    bool:DuelRoomsTaken[MAX_DUEL_ROOMS],
    DuelRoomBet[MAX_DUEL_ROOMS],
    Float:DuelRoomPlace[MAX_DUEL_ROOMS][3],
    DuelPlayer[MAX_DUEL_ROOMS][2]
;

/*
* In your command for starting a duel set DuelOffer to duel room id. Also use DuelRoomsTaken to indicate which rooms are already taken
*/


COMMAND:acceptduel(playerid, params[])
{
    new
        string[256],
        room = DuelOffer[playerid] - 1
    ;

    if(!PlayerInfo[playerid][pSpawned]) return SendClientMessage(playerid,COLOR_ERROR,"You Cannot Accept Duel, while you're not spawned");  
    if(room == -1) return SendClientMessage(playerid, COLOR_ERROR, "You Cannot Use This Command if there is no duel offser"); ;
    if(InDuel[playerid]) return SendClientMessage(playerid,COLOR_ERROR,"You Are Already in Duel Challenge.");

    format(string, sizeof(string), "[DUEL] The Duel Between %s (%d) and %s (%d) Has Started. (Bet: $%d)", PlayerInfo[DuelPlayer[room][0]][pName], DuelPlayer[room][0], PlayerInfo[DuelPlayer[room][0]][pName], DuelPlayer[1], DuelRoomBet[room]);
    SendClientMessageToAll(COLOR_SERVER_HELP_MSG, string);

    for (new i = 0; i != 2; ++i) {
        new player = DuelPlayer[room][i];

        SetPlayerVirtualWorld(player, 22);
        SetPlayerPos(player, DuelPlace[room][0], DuelPlace[room][1], DuelPlace[room][2]);
        SetPlayerInterior(player, 16);
        SetPlayerFacingAngle(DuelPlayer[room][0], 199.2980);

        SetPlayerHealth(player, 100);
        SetPlayerArmour(player, 100);

        format(string, sizeof(string), "In Duel Challenge");
        strcat(string, PlayerInfo[player][pInteriorName], 256);
        strcat(string, PlayerInfo[player][pLocation], 256);

        GiveCash(player, DuelRoomBet1);
        TogglePlayerControllable(player, false);
        SetCameraBehindPlayer(player);

        InDuel[player] = 1;
        PlayerInfo[player][pDrugsTime] = 0;
        ON_DRUGS[player] = 0;
        DrugsTaken[player] = 0;
    }

    Progress = 2;
    GiveDuelWeapons(DuelType);

    CD = 6;
    CDTimer = SetTimer("CountDown", 1000, 1);
    KillTimer(declinedueltimer);
    DUEL_TIMER = SetTimer("TIMEUP", 60000*3, 0);

    return 1;
}
Reply
#3

http://pastiebin.com/55001fb6ea93b

This is my full duel code, can u help me making it in virtual worlds..
means there can be unlimited duels which can be taken place per time...

In this code, it is only 1 which can be done at time.
Reply
#4

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;
}
Reply
#5

I'll test it, thanks red_hunter..

app pakistan si ho? me b! kesa ho jani.. :<3

btw, i remove "Progress == 2" From /duel cmd? cuz it says "Other Duel is in Progress"

Also, My function of setplayerpos is
PHP код:
stock SetPlayerPosEx(playerid,Float:x,Float:y,Float:z,Float:angle,interior,world)
{
    
SetPlayerPos(playerid,x,y,z);
    
SetPlayerFacingAngle(playerid,angle);
    
SetPlayerInterior(playerid,interior);
    
SetPlayerVirtualWorld(playerid,world);
    
    
SetCameraBehindPlayer(playerid);
    return 
1;

So in the Code, its SetPlayerPosEx(DuelPlayer2,DuelPlace2,23.5397, 16,0);
Means virtual world is set to "0".. so ur coding will work "++;" ??
Reply
#6

np, don't forget to +rep me xd
yea pakistan sey hoon (Urdu), btw if u need any help again pm me
Reply
#7

tell it will work? if on 1st code virtual world is set "0" then vworld++; ?
Reply
#8

OP, glancing over your code it seems it will fail if there's more than one duel. Let's say one duel is started, then another one begins. If player from first duel kills the other one, players from next duel will be respawned... Your DuelPlayer1 and DuelPlayer2 are shared between all duels.
Reply
#9

so.. how to fix it?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)