SA-MP Forums Archive
[Tutorial] How to make a weapon system in a TDM/DM server, which you can buy from anywhere - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Tutorials (https://sampforum.blast.hk/forumdisplay.php?fid=70)
+---- Thread: [Tutorial] How to make a weapon system in a TDM/DM server, which you can buy from anywhere (/showthread.php?tid=396295)



How to make a weapon system in a TDM/DM server, which you can buy from anywhere - Alcatraz Gaming - 30.11.2012


So, did you ever wanted to create a command where every player wants to buy a gun anywhere in a DM/TDM/Freeroam/etc. server? It's very simple, error-less and fun to make one!

STEP 1

Add the normal include

pawn Код:
#include <a_samp>
a_samp is the basic include file needed for making a Filter-script/Game-mode.

STEP 2

Add
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
This is needed to ensure/make the command ( /weaponlist ) work. For eg., /help

below the includes

STEP 3

Now, we have to add the command ( /weaponlist ) below OnPlayerCommandText so that the script shows what weapon the player can buy

pawn Код:
{
    if(!strcmp(cmdtext, "/weaponlist"))
    {
    ShowPlayerDialog(playerid, 67, DIALOG_STYLE_LIST, "Weapon shop", "Knife - 100$\nChainsaw - 100$\nGrenade - 1500$\nMolotov Cocktail - 2000$\nDesert Eagle - 1150$\nSawnoff Shotgun - 1000$\nMicro SMG - 1000$/Uzi - 500$\nMP5 - 500$\nSniper Rifle - 1000$\nFlamethower - 2000$\nSatchel Charge - 5000$\nFire Extinguisher - 5000$\nNight Vis Goggles - 1050$\nThermal Goggles - 1200$\nParachute - 100$", "Buy", "Cancel");
    return 1;
    }
    return 0;
    }
/n shows the line where what weapon you want to buy now. If you cancel, it returns nothing ( return 0; ). If you click on a weapon, it returns back ( return 1; )

Note - You can also edit this line.

STEP 4

This is a code which responds to the dialog, when you click on the weapon you want to buy. Without this code, the dialog would be a waste of time

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == 67)
    {
    if(!response)
    return 1;
    switch(listitem)
{
If the player responses ( what i mean by response, click on a weapon ), the code goes to the case codes

Note - You saw there isn't 3 } to complete the dialog response code, it will come in the end.

STEP 4 - Final step

Now, you add the weapon to be given to the player if player has bought it, and the required money is gone from him

pawn Код:
{
    case 0:
    {
        if(GetPlayerMoney(playerid) < 100)
    return SendClientMessage(playerid, 0x0000FFAA, "You don't have enough cash to buy this Weapon.");
    GivePlayerMoney(playerid, -100);
    GivePlayerWeapon(playerid, 4, 1);
    SendClientMessage(playerid, 0x0000FFAA, "You have succesfully buyed your weapon.");
    }
    case 1:
    {
    if(GetPlayerMoney(playerid) < 100)
    return SendClientMessage(playerid, 0x33FF00AA, "You don't have enough cash to buy this Weapon.");
    GivePlayerMoney(playerid, -100);
    GivePlayerWeapon(playerid, 9, 1);
    SendClientMessage(playerid, 0x33FF00AA, "You have succesfully buyed your weapon.");
    }
    case 2:
    {
    if(GetPlayerMoney(playerid) < 1500)
    return SendClientMessage(playerid, 0x00FFFFAA, "You don't have enough cash to buy this Weapon.");
    GivePlayerMoney(playerid, -1500);
    GivePlayerWeapon(playerid, 16, 100);
    SendClientMessage(playerid, 0x00FFFFAA, "You have succesfully buyed your weapon.");
    }
    case 3:
    {
    if(GetPlayerMoney(playerid) < 2000)
    return SendClientMessage(playerid, 0x6600FFAA, "You don't have enough cash to buy this Weapon.");
    GivePlayerMoney(playerid, -2000);
    GivePlayerWeapon(playerid, 18, 20);
    SendClientMessage(playerid, 0x6600FFAA, "You have succesfully buyed your weapon.");
    }
    case 4:
    {
    if(GetPlayerMoney(playerid) < 1150)
    return SendClientMessage(playerid, 0x99FF00AA, "You don't have enough cash to buy this Weapon.");
    GivePlayerMoney(playerid, -1150);
    GivePlayerWeapon(playerid, 24, 100);
    SendClientMessage(playerid, 0x99FF00AA, "You have succesfully buyed your weapon.");
    }
    case 5:
    {
    if(GetPlayerMoney(playerid) < 1000)
    return SendClientMessage(playerid, 0x999999AA, "You don't have enough cash to buy this Weapon.");
    GivePlayerMoney(playerid, -1000);
    GivePlayerWeapon(playerid, 26, 3000);
    SendClientMessage(playerid, 0x999999AA, "You have succesfully buyed your weapon.");
    }
    case 6:
    {
    if(GetPlayerMoney(playerid) < 1000)
    return SendClientMessage(playerid, 0xCC0000AA, "You don't have enough cash to buy this Weapon.");
    GivePlayerMoney(playerid, -1000);
    GivePlayerWeapon(playerid, 28, 7000);
    SendClientMessage(playerid, 0xCC0000AA, "You have succesfully buyed your weapon.");
    }
    case 7:
    {
    if(GetPlayerMoney(playerid) < 500)
    return SendClientMessage(playerid, 0xFF00FFAA, "You don't have enough cash to buy this Weapon.");
    GivePlayerMoney(playerid, -500);
    GivePlayerWeapon(playerid, 29, 1050);
    SendClientMessage(playerid, 0xFF00FFAA, "You have succesfully buyed your weapon.");
    }
    case 8:
    {
    if(GetPlayerMoney(playerid) < 1000)
    return SendClientMessage(playerid, 0xCCFF00AA, "You don't have enough cash to buy this Weapon.");
    GivePlayerMoney(playerid, -1000);
    GivePlayerWeapon(playerid, 34, 500);
    SendClientMessage(playerid, 0xCCFF00AA, "You have succesfully buyed your weapon.");
    }
    case 9:
    {
    if(GetPlayerMoney(playerid) < 2000)
    return SendClientMessage(playerid, 0xFFFFFFAA, "You don't have enough cash to buy this Weapon.");
    GivePlayerMoney(playerid, -2000);
    GivePlayerWeapon(playerid, 37, 9000);
    SendClientMessage(playerid, 0xFFFFFFAA, "You have succesfully buyed your weapon.");
    }
    case 10:
    {
    if(GetPlayerMoney(playerid) < 5000)
    return SendClientMessage(playerid, 0xCC3300AA, "You don't have enough cash to buy this Weapon.");
    GivePlayerMoney(playerid, -5000);
    GivePlayerWeapon(playerid, 39, 20);
    SendClientMessage(playerid, 0xCC3300AA, "You have succesfully buyed your weapon.");
    }
    case 11:
    {
    if(GetPlayerMoney(playerid) < 5000)
    return SendClientMessage(playerid, 0x66FF99AA, "You don't have enough cash to buy this Weapon.");
    GivePlayerMoney(playerid, -5000);
    GivePlayerWeapon(playerid, 42, 5050);
    SendClientMessage(playerid, 0x66FF99AA, "You have succesfully buyed your weapon.");
    }
    case 12:
    {
    if(GetPlayerMoney(playerid) < 1050)
    return SendClientMessage(playerid, 0xFF9966AA, "You don't have enough cash to buy this Weapon.");
    GivePlayerMoney(playerid, -1050);
    GivePlayerWeapon(playerid, 44, 1);
    SendClientMessage(playerid, 0xFF9966AA, "You have succesfully buyed your weapon.");
    }
    case 13:
    {
    if(GetPlayerMoney(playerid) < 1200)
    return SendClientMessage(playerid, 0x9900FFAA, "You don't have enough cash to buy this Weapon.");
    GivePlayerMoney(playerid, -1200);
    GivePlayerWeapon(playerid, 45, 1);
    SendClientMessage(playerid, 0x9900FFAA, "You have succesfully buyed your weapon.");
    }
    case 14:
    {
    if(GetPlayerMoney(playerid) < 100)
    return SendClientMessage(playerid, 0x33CCFFAA, "You don't have enough cash to buy this Weapon.");
        GivePlayerMoney(playerid, -100);
        GivePlayerWeapon(playerid, 46, 1);
        SendClientMessage(playerid, 0x33CCFFAA, "You have succesfully buyed your weapon.");
        }
        }
        }
        return 1;
        }
GetPlayerMoney checks if the player has the required money.
GivePlayerMoney gives/takes the money from the player away. If take away, it must be -100. If it to give, it must be 100
GivePlayerWeapon is to give a player the money. It will give the weapon ID and the ammunition for the weapon
After all, SendClientMessage gives a message that the player has successfully bought the weapon

Note - As i didn't do the 3 } in Step 3, it will be present here

That's the end of this tutorial!

This is a simple tutorial for beginners, hope you learned something from this!

IMPORTANT NOTES

-- If you want to add more weapons, you just

Add the same thing on the code in Step 3, with

pawn Код:
\n\\Your weapon - \\Weapon price$
Then, after case 14
pawn Код:
{
    if(GetPlayerMoney(playerid) < //The weapon price)
    return SendClientMessage(playerid, 0x9900FFAA, "You don't have enough cash to buy this Weapon.");
    GivePlayerMoney(playerid, //The same in GetPlayerMoney(playerid)'s money, just with a - behind each number, like -1200);
    GivePlayerWeapon(playerid, //Weapon ID, //Ammos ( can be edited ));
    SendClientMessage(playerid, 0x9900FFAA, "You have succesfully buyed your weapon.");
    }
WARNING - You have to add each case for each weapon you make, for example, case 15, chainsaw, case 16, dildo

Done! It's as simple as it is!

If you have any troubles, please reply back.


Re: How to make a weapon system in a TDM/DM server, which you can buy from anywhere - Lordzy - 30.11.2012

You must explain the code well before considering this as a tutorial.


Re: How to make a weapon system in a TDM/DM server, which you can buy from anywhere - XtremeR - 30.11.2012

Agree with lordz, explain it!


Re: How to make a weapon system in a TDM/DM server, which you can buy from anywhere - Alcatraz Gaming - 30.11.2012

Explained some of the codes ( like OnPlayerCommandText, and other commands. )

I have to leave now, sorry. I will explain more if i get more ideas, since i have a blank mind now


Re: How to make a weapon system in a TDM/DM server, which you can buy from anywhere - Djole1337 - 30.11.2012

I have to tell you again, learn to hit tab.


Re: How to make a weapon system in a TDM/DM server, which you can buy from anywhere - Alcatraz Gaming - 30.11.2012

I know how to hit tab -.-


Re: How to make a weapon system in a TDM/DM server, which you can buy from anywhere - zProfessional - 30.11.2012

well good explain is better


Re: How to make a weapon system in a TDM/DM server, which you can buy from anywhere - Alcatraz Gaming - 30.11.2012

Thank you


Re: How to make a weapon system in a TDM/DM server, which you can buy from anywhere - Vince - 30.11.2012

Quote:
Originally Posted by Vinnie Robardo
Посмотреть сообщение
I know how to hit tab -.-
Either you or the forum software screwed up the indentation. But you should use variables to minimize duplicated code.

pawn Код:
new price, weaponid, ammo;

    switch(listitem)
    {
        case 0: { price = 100, weaponid = 4, ammo = 1; }
        case 1: { price = 100, weaponid = 9, ammo = 1; }
        case 2: { price = 1500, weaponid = 16, ammo = 100; }
        // etc, etc
    }
   
    if(GetPlayerMoney(playerid) < price)
        return SendClientMessage(playerid, 0x0000FFAA, "You don't have enough cash to buy this weapon.");

    GivePlayerMoney(playerid, -price);
    GivePlayerWeapon(playerid, weaponid, ammo);
    SendClientMessage(playerid, 0x00FFFFAA, "You have succesfully bought your weapon.");
Much shorter, much more maintainable.


Re: How to make a weapon system in a TDM/DM server, which you can buy from anywhere - Alcatraz Gaming - 30.11.2012

Quote:
Originally Posted by Vince
Посмотреть сообщение
Either you or the forum software screwed up the indentation. But you should use variables to minimize duplicated code.

pawn Код:
new price, weaponid, ammo;

    switch(listitem)
    {
        case 0: { price = 100, weaponid = 4, ammo = 1; }
        case 1: { price = 100, weaponid = 9, ammo = 1; }
        case 2: { price = 1500, weaponid = 16, ammo = 100; }
        // etc, etc
    }
   
    if(GetPlayerMoney(playerid) < price)
        return SendClientMessage(playerid, 0x0000FFAA, "You don't have enough cash to buy this weapon.");

    GivePlayerMoney(playerid, -price);
    GivePlayerWeapon(playerid, weaponid, ammo);
    SendClientMessage(playerid, 0x00FFFFAA, "You have succesfully bought your weapon.");
Much shorter, much more maintainable.
Thanks, Vince. Just so you know, i am not a PAWN legend like you, so i am like a intermediate scripter

I will also try to use your code, it looks short enough