How can I add a timer to make it so players cant get armor every second?
#1

It's kind of hard to explain. I want to make it so players can get weapons without a timer, but not the armor. This is my current code:
pawn Код:
COMMAND:getweapons(playerid, cmdtext)
{
    if (!IsPlayerInRangeOfPoint(playerid, 7.0, 2196.2363,-3319.5674,192) && !IsPlayerInRangeOfPoint(playerid, 7.0, 2160.5581,-3017.5974,191))
    {
        SendClientMessage(playerid, 0xFF0000FF, "You're not near the weapon crates"); return 1;
    }
    ShowPlayerDialog(playerid, 32, DIALOG_STYLE_LIST, "Pick a weapon:", "Deagle\nCombat Shotgun\nAK47\nTearGas\nChainsaw\nSniper\nMinigun\nFlamethrower\nVest", "Pick", "Close");
    return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 32)
    {
        if(!response) return 1; // if he clicked the other button, stop the code
        switch(listitem) // Switch trough all list items
        {
            case 0: GivePlayerWeapon(playerid, 24, 100);
            case 1: GivePlayerWeapon(playerid, 27, 100);
            case 2: GivePlayerWeapon(playerid, 30, 200);
            case 3: GivePlayerWeapon(playerid, 17, 10);
            case 4: GivePlayerWeapon(playerid, 9, 1);
            case 5: GivePlayerWeapon(playerid, 34, 100);
            case 6: GivePlayerWeapon(playerid, 38, 500);
            case 7: GivePlayerWeapon(playerid, 37, 500);
            case 8: SetPlayerArmour(playerid, 100); // I want this to have a timer
        }
    }
    return 1;
}
If you don't get what I mean, just ask. Thanks for the help
Reply
#2

new gotarmour[500];

As soon as the player buys the armour. Which is at case 8, do this: "case 8:{SetPlayerArmour(playerid, 100); gotarmour[playerid] = 1;SetTimerEx("ArmourUpdate", 300000, 0, "i", playerid);};
forward ArmourUpdate(playerid);
public ArmourUpdate(playerid)
{
if(gotarmour[playerid] == 1)gotarmour[playerid] = 0;
}
public OnPlayerDisconnect(playerid)
{
gotarmour[playerid] = 0;
}
Reply
#3

Quote:
Originally Posted by RelaxCafe
Посмотреть сообщение
new gotarmour[500];

As soon as the player buys the armour. Which is at case 8, do this: "case 8:{SetPlayerArmour(playerid, 100); gotarmour[playerid] = 1;SetTimerEx("ArmourUpdate", 300000, 0, "i", playerid);};
forward ArmourUpdate(playerid);
public ArmourUpdate(playerid)
{
if(gotarmour[playerid] == 1)gotarmour[playerid] = 0;
}
public OnPlayerDisconnect(playerid)
{
gotarmour[playerid] = 0;
}
I get these errors.
Quote:

C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(326) : error 017: undefined symbol "gotarmour"
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(326) : warning 215: expression has no effect
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(326) : error 001: expected token: ";", but found "]"
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(326) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(326) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


4 Errors.

Edit: Hold on, forgot to do one thing
Reply
#4

These are the errors after I added
pawn Код:
new gotarmour[500];
Quote:

C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(329) : error 002: only a single statement (or expression) can follow each "case"
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(331) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(331) : error 017: undefined symbol "ArmourUpdate"
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(332) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(332) : error 017: undefined symbol "ArmourUpdate"
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(336) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(336) : error 004: function "OnPlayerDisconnect" is not implemented
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(341) : warning 209: function "OnDialogResponse" should return a value
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(342) : error 010: invalid function or declaration
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


8 Errors.

Reply
#5

https://sampwiki.blast.hk/wiki/SetTimerEx
Reply
#6

pawn Код:
new ArmorTime[MAX_PLAYERS];
COMMAND:getweapons(playerid, cmdtext)
{
    if (!IsPlayerInRangeOfPoint(playerid, 7.0, 2196.2363,-3319.5674,192) && !IsPlayerInRangeOfPoint(playerid, 7.0, 2160.5581,-3017.5974,191))
    {
        SendClientMessage(playerid, 0xFF0000FF, "You're not near the weapon crates"); return 1;
    }
    ShowPlayerDialog(playerid, 32, DIALOG_STYLE_LIST, "Pick a weapon:", "Deagle\nCombat Shotgun\nAK47\nTearGas\nChainsaw\nSniper\nMinigun\nFlamethrower\nVest", "Pick", "Close");
    return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 32)
    {
        if(!response) return 1; // if he clicked the other button, stop the code
        switch(listitem) // Switch trough all list items
        {
            case 0: GivePlayerWeapon(playerid, 24, 100);
            case 1: GivePlayerWeapon(playerid, 27, 100);
            case 2: GivePlayerWeapon(playerid, 30, 200);
            case 3: GivePlayerWeapon(playerid, 17, 10);
            case 4: GivePlayerWeapon(playerid, 9, 1);
            case 5: GivePlayerWeapon(playerid, 34, 100);
            case 6: GivePlayerWeapon(playerid, 38, 500);
            case 7: GivePlayerWeapon(playerid, 37, 500);
            case 8:
            {
                if(ArmorTime[playerid] > gettime()) return SendClientMessage(playerid, -1, "You already got armor recently!");
                SetPlayerArmour(playerid, 100); // I want this to have a timer
                ArmorTime[playerid] = gettime() + 15000;
            }
        }
    }
    return 1;
}
Reply
#7

Quote:
Originally Posted by PrawkC
Посмотреть сообщение
pawn Код:
new ArmorTime[MAX_PLAYERS];
COMMAND:getweapons(playerid, cmdtext)
{
    if (!IsPlayerInRangeOfPoint(playerid, 7.0, 2196.2363,-3319.5674,192) && !IsPlayerInRangeOfPoint(playerid, 7.0, 2160.5581,-3017.5974,191))
    {
        SendClientMessage(playerid, 0xFF0000FF, "You're not near the weapon crates"); return 1;
    }
    ShowPlayerDialog(playerid, 32, DIALOG_STYLE_LIST, "Pick a weapon:", "Deagle\nCombat Shotgun\nAK47\nTearGas\nChainsaw\nSniper\nMinigun\nFlamethrower\nVest", "Pick", "Close");
    return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 32)
    {
        if(!response) return 1; // if he clicked the other button, stop the code
        switch(listitem) // Switch trough all list items
        {
            case 0: GivePlayerWeapon(playerid, 24, 100);
            case 1: GivePlayerWeapon(playerid, 27, 100);
            case 2: GivePlayerWeapon(playerid, 30, 200);
            case 3: GivePlayerWeapon(playerid, 17, 10);
            case 4: GivePlayerWeapon(playerid, 9, 1);
            case 5: GivePlayerWeapon(playerid, 34, 100);
            case 6: GivePlayerWeapon(playerid, 38, 500);
            case 7: GivePlayerWeapon(playerid, 37, 500);
            case 8:
            {
                if(ArmorTime[playerid] > gettime()) return SendClientMessage(playerid, -1, "You already got armor recently!");
                SetPlayerArmour(playerid, 100); // I want this to have a timer
                ArmorTime[playerid] = gettime() + 15000;
            }
        }
    }
    return 1;
}
It compiles, but in game when I do /getweapons and choose vest, I dont get a vest, and when I try to get a vest again I dont get a message saying that I cant.

pawn Код:
COMMAND:getweapons(playerid, cmdtext)
{
    if (!IsPlayerInRangeOfPoint(playerid, 7.0, 2196.2363,-3319.5674,192) && !IsPlayerInRangeOfPoint(playerid, 7.0, 2160.5581,-3017.5974,191))
    {
        SendClientMessage(playerid, 0xFF0000FF, "You're not near the weapon crates"); return 1;
    }
    ShowPlayerDialog(playerid, 32, DIALOG_STYLE_LIST, "Pick a weapon:", "Deagle\nCombat Shotgun\nAK47\nTearGas\nChainsaw\nSniper\nMinigun\nFlamethrower\nVest", "Pick", "Close");
    return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 32)
    {
        if(!response) return 1; // if he clicked the other button, stop the code
        switch(listitem) // Switch trough all list items
        {
            case 0: GivePlayerWeapon(playerid, 24, 100);
            case 1: GivePlayerWeapon(playerid, 27, 100);
            case 2: GivePlayerWeapon(playerid, 30, 200);
            case 3: GivePlayerWeapon(playerid, 17, 10);
            case 4: GivePlayerWeapon(playerid, 9, 1);
            case 5: GivePlayerWeapon(playerid, 34, 100);
            case 6: GivePlayerWeapon(playerid, 38, 500);
            case 7: GivePlayerWeapon(playerid, 37, 500);
            case 8:
            {
                if(ArmorTime[playerid] > gettime()) return SendClientMessage(playerid, COLOR_RED, "You already got armor recently!");
                SetPlayerArmour(playerid, 100); // I want this to have a timer
                ArmorTime[playerid] = gettime() + 15000;
            }
        }
    }
    return 1;
}
If I add
pawn Код:
SetPlayerArmour(playerid, 100);
To Case 8. I get 4 errors.
Quote:

C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(327) : error 017: undefined symbol "GivePlayerArmour"
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(32 : error 002: only a single statement (or expression) can follow each "case"
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(333) : warning 209: function "OnDialogResponse" should return a value
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(334) : error 054: unmatched closing brace ("}")
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(335) : error 010: invalid function or declaration
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


4 Errors.

Reply
#8

Quote:
Originally Posted by rangerxxll
Посмотреть сообщение
It compiles, but in game when I do /getweapons and choose vest, I dont get a vest, and when I try to get a vest again I dont get a message saying that I cant.

pawn Код:
COMMAND:getweapons(playerid, cmdtext)
{
    if (!IsPlayerInRangeOfPoint(playerid, 7.0, 2196.2363,-3319.5674,192) && !IsPlayerInRangeOfPoint(playerid, 7.0, 2160.5581,-3017.5974,191))
    {
        SendClientMessage(playerid, 0xFF0000FF, "You're not near the weapon crates"); return 1;
    }
    ShowPlayerDialog(playerid, 32, DIALOG_STYLE_LIST, "Pick a weapon:", "Deagle\nCombat Shotgun\nAK47\nTearGas\nChainsaw\nSniper\nMinigun\nFlamethrower\nVest", "Pick", "Close");
    return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 32)
    {
        if(!response) return 1; // if he clicked the other button, stop the code
        switch(listitem) // Switch trough all list items
        {
            case 0: GivePlayerWeapon(playerid, 24, 100);
            case 1: GivePlayerWeapon(playerid, 27, 100);
            case 2: GivePlayerWeapon(playerid, 30, 200);
            case 3: GivePlayerWeapon(playerid, 17, 10);
            case 4: GivePlayerWeapon(playerid, 9, 1);
            case 5: GivePlayerWeapon(playerid, 34, 100);
            case 6: GivePlayerWeapon(playerid, 38, 500);
            case 7: GivePlayerWeapon(playerid, 37, 500);
            case 8:
            {
                if(ArmorTime[playerid] > gettime()) return SendClientMessage(playerid, COLOR_RED, "You already got armor recently!");
                SetPlayerArmour(playerid, 100); // I want this to have a timer
                ArmorTime[playerid] = gettime() + 15000;
            }
        }
    }
    return 1;
}
If I add
pawn Код:
SetPlayerArmour(playerid, 100);
To Case 8. I get 4 errors.
Its because there's no such thing as GivePlayerArmour, its SetPlayerArmour, remove the line that says GivePlayerArmour, or change it to SetPlayerArmour
Reply
#9

Quote:
Originally Posted by G4M3Ov3r
Посмотреть сообщение
Its because there's no such thing as GivePlayerArmour, its SetPlayerArmour, remove the line that says GivePlayerArmour, or change it to SetPlayerArmour
Oh, my mistake. Testing now.
Reply
#10

Now I get
Quote:

C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(32 : error 002: only a single statement (or expression) can follow each "case"
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(333) : warning 209: function "OnDialogResponse" should return a value
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(334) : error 054: unmatched closing brace ("}")
C:\Documents and Settings\Lucas\Desktop\Serverstuff\MyTestServerV1. 0\filterscripts\minigame.pwn(335) : error 010: invalid function or declaration
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


3 Errors.

Code:
pawn Код:
COMMAND:getweapons(playerid, cmdtext)
{
    if (!IsPlayerInRangeOfPoint(playerid, 7.0, 2196.2363,-3319.5674,192) && !IsPlayerInRangeOfPoint(playerid, 7.0, 2160.5581,-3017.5974,191))
    {
        SendClientMessage(playerid, 0xFF0000FF, "You're not near the weapon crates"); return 1;
    }
    ShowPlayerDialog(playerid, 32, DIALOG_STYLE_LIST, "Pick a weapon:", "Deagle\nCombat Shotgun\nAK47\nTearGas\nChainsaw\nSniper\nMinigun\nFlamethrower\nVest", "Pick", "Close");
    return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 32)
    {
        if(!response) return 1; // if he clicked the other button, stop the code
        switch(listitem) // Switch trough all list items
        {
            case 0: GivePlayerWeapon(playerid, 24, 100);
            case 1: GivePlayerWeapon(playerid, 27, 100);
            case 2: GivePlayerWeapon(playerid, 30, 200);
            case 3: GivePlayerWeapon(playerid, 17, 10);
            case 4: GivePlayerWeapon(playerid, 9, 1);
            case 5: GivePlayerWeapon(playerid, 34, 100);
            case 6: GivePlayerWeapon(playerid, 38, 500);
            case 7: GivePlayerWeapon(playerid, 37, 500);
            case 8: SetPlayerArmour(playerid, 100);
            {
                if(ArmorTime[playerid] > gettime()) return SendClientMessage(playerid, COLOR_RED, "You already got armor recently!");
                SetPlayerArmour(playerid, 100); // I want this to have a timer
                ArmorTime[playerid] = gettime() + 15000;
            }
        }
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)