[Tutorial] Pawn Development in macOS

Moderator: Leut.Adv

Locked
User avatar
CataLynHD
Membru
Membru
Posts: 381
Joined: 5 years ago
Location: Rm.Valcea
Has thanked: 0
Been thanked: 0
Zodiac:
Age: 20
Contact:
Status: Offline

5 years ago

Introduction: Hello Guys, this is my first tutorial, This will show you how to make a Simple C4 System Along time Ago i Searched For One but i couldn't find a Tutorial But a Filterscript so Now i've decided To Make My Own One


How It Works?:
When The Player Type Plantc4 Command Server Will check if playerid have at Least One C4 & If he have no already planted C4 Then With PlantingC4 function It wil Get the player Position And Create an Object at playerid's co-ordinates & Toggle Player Controllable (player won't be able to do anything while planting C4) And apply BOMB Animation And it will give the player -1 C4 Finally The timer will start (2.5 seconds)

When the time is out (Timer will stop), The player's controllable will be set to 1 (Player is no longer frozen)
And Finally playerid will receive a Msg (You have successful Planted c4) .


Now We Have Planted The C4 & Applied animation And finally Sent the player MSG & given him -1 C4
It's time For making a CMD to detonate it:
When the player will type detonate CMD, Server will Get C4object's position Then Create Explosion at it's co-ordinates
And finally the C4object will disappear And Player's plantedc4 will be set To 0 (so he ll be able to plant C4s again)

Easy right? :d This is my way to create a C4 System it's not the best or the worst one.

We Have an easy way To Create that System, now it's time for coding it:
CODE:
Includes: (in the Top of the script)
Code:
#include <a_samp>
#include <zcmd>
We Will Need some colors define: (on the top of the script)
Code:
//Instead of writing the color code each time, we can just Define a name for the colors
#define COLOR_RED 0xFF0000FF
#define COLOR_GREEN 0x15FF00FF
#define COLOR_BLUE 0x0000BBFF
Needed Variables: (after the includes)
Code:
new C4[MAX_PLAYERS]; //For The Player's C4s
new plantedC4[MAX_PLAYERS]; //To Get If There is an already PlantedC4
new C4Object[MAX_PLAYERS]; //For The C4 Object
new C4Timer[MAX_PLAYERS]; //Timer for explosion
new StopC4Timer[MAX_PLAYERS]; //When The C4 Explose :v
Forwards: (the top of the script After Includes too )
Code:
//Forwards Gives You the ability to Make the function wherever you want So There won't be a problem if u use Plantc4Timer After Or Before It's code
forward plantingC4(playerid);
forward PlantC4Timer(playerid);
We Will Have To Define Set Player's C4(Under OnplayerConnect):
Code:
public OnPlayerConnect(playerid)
{
C4[playerid] = 0; //When The Player Connects it Set his C4s to 0
return 1;
}
Now We Will Have to Give The Player a C4 When He spawns (Under OnPlayerSpawn):
Code:
OnPlayerSpawn(playerid)
{
C4[playerid] = 1; //To Set Player's C4s to 1 when he spawn
return 1;
}
We Have To Make a CMD For Planting a C4:
Code:
CMD:plantc4(playerid,params[])
{
if(C4[playerid] == 0) return SendClientMessage(playerid, COLOR_RED,"ERROR: You Do Not Have C4 You Can Buy Ones From Briefcase Or Wait For The Next Spawn"); //If the player don't have C4 send him an error msg
if(plantedC4[playerid] == 1) return SendClientMessage(playerid, COLOR_RED,"You Already Planted a C4 Use /Detonate To Detonate it!"); //if the player has already planted a C4 Send him an error Msg :v
plantingC4(playerid);
return 1;
}
We Will need a function For the planting C4 player
Code:
plantingC4(playerid)
{
if(plantedC4[playerid] == 0)
{
new Float:x,Float:y,Float:z; //x,y,z Position For The C4 object
GetPlayerPos(playerid,x,y,z); //Get The Player's Position
C4Object[playerid] = CreateDynamicObject(1252,x,y,z-0.90,270.0,0.0,0.0); //Will Make The C4 Object In The Player's Positon
plantedC4[playerid]++; //To set player's Planted C4 to 1 (Max C4 planted is 1)
C4[playerid]--; //Give the player -1 C4
TogglePlayerControllable(playerid, 0); //To Toggle Controllable player
ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 2500, 2000); //To Apply Bomber Animation For playerid
C4Timer[playerid] = SetTimerEx("PlantC4Timer",2500,1,"u",playerid); //To Set the toggled controllable player's delay
StopC4Timer[playerid] = 0; //Start the timer (read the other code for more explication)
}
}
Now Make This function which will Stop The PlantingC4 After 2.5 seconds
Code:
public PlantC4Timer(playerid)
{
if(StopC4Timer[playerid] == 0)
{
StopC4Timer[playerid]++; //To Stop the timer
TogglePlayerControllable(playerid, 1); //to toggle controllable back
SendClientMessage(playerid, COLOR_GREEN,"C4 Has Been Planted!"); //to Send player message
}
}
Now it's time for making a Cmd to detonate the C4
Code:

CMD:detonate(playerid,params[])
{
if(plantedC4[playerid] != 1) return SendClientMessage(playerid, COLOR_RED,"ERROR: You Have To Plant C4 To Detonate it!"); //if the player didn't plant a C4 send him an error msg

new Float:x,Float:y,Float:z; //This will be used to get the C4 object position
plantedC4[playerid]--; //To Set The plantedC4 of playerid 0
GetObjectPos(C4Object[playerid], x, y, z); //To Get the C4 object position
CreateExplosion(x,y,z,2,50.0); //to create explosion in C4 position
DestroyObject(C4Object[playerid]); //to destroy C4 object
SendClientMessage(playerid, COLOR_BLUE,"C4 Has Been Detonated!"); //Send player msg that he successfully detonated the C4
return 1;
}
Now We Have to make another command To Buy C4 with :
Code:
CMD:buyc4(playerid,params[])
{
if(GetPlayerMoney(playerid) < 5000) return SendClientMessage(playerid, COLOR_RED, "You Do Not Have Enough Money"); //To Get if the player have enough money
C4[playerid]++; //if player have enough money he ll get a C4
SendClientMessage(playerid, COLOR_BLUE,"You Have Bought a C4!"); // if player have enough money he ll receive a msg
return 1;
}
Hope this helps you

Credits:
-Adri1[4]Life For Coding This & For the tutorial
-Zeex For Zcmd [Please login or register to view this link]
-Kalcor & Samp Team For a_samp
Image
Image
Locked

Return to “Tutoriale”