/*
-------------------------------[Aucuns merites]--------------------------------
Je ne me permeterais pas de dire que ce script est de moi car une bonne partie de celui-ci est copie des tutoriels du Wiki Sa:-Mp
et des scripts partages par la communaute Anglophone sur le forum Sa:Mp.
Les ajustements apportes aux codes copies sont minimes.
Je vais tacher de regrouper les "sources" ici.
Jujuv.*/
/*----------------------[Conseilles aux debutants]---------------
Il n'y a pas de mal a debuter, a avoir du mal, a ne pas comprendre, [...], mais il ne faut pas bruler les etapes !
Ainsi copier un code sans y apporter de reel modifications n'est pas une mauvaise chose mais copier un code sans le comprendre est une erreur classique et tragique !!
Je me suis permis de copier des codes que je comprenais et lorsque ce n'etais pas le cas, je me suis arrete 5 a 10 minutes pour lire les tutoriels ou articles suceptibles de m'aider et je n'ai pas utilise
le code copie tant que je ne le comprenais pas integralement.
De plus, je n'ai copie que des codes basiques et libres de droits !
Il est tout de même possible que j'ai copie un code sans me rendre compte qu'il ete sous licence, si tel est le cas : contactez moi (jujuv.samp {AT} hotmail [DOT] fr)
Je debute moi même ;-)
Deuxieme conseille : n'utilisez pas l'IDE de base fourni avec le serveur (Pawno) , preferez en choisir un plus avance (voir http://wiki.sa-mp.com/wiki/Scripting_Editors)
Perssonelement, j'utilise SAMP Editor.
A ce propos, un troisieme conseille : ne vous tromper pas dans votre vocabulaire quand vous parler de /scripting/ !
Ceux qui ne comprenent pas vous croiront doue mais ceux qui ont un niveau plus eleve vous prendront pour un imbecile !
Ainsi il y a une erreur courrante pour les debutants : ne confondez pas Pawn et Pawno !!
Pawn est un langage de programmation très haut niveau pour perssonaliser les serveurs Sa:Mp; Pawno , lui est un IDE fourni par la /team Sa:Mp/ avec le logiciel serveur pour Windows !
/!\Pour la base de la base de la programmation voir : http://www.siteduzero.com/tutoriel-3-361996-par-ou-commencer.html#ss_part_3 (partie 3 uniquement) et http://www.siteduzero.com/tutoriel-3-13920-ayez-les-bons-outils.html#ss_part_1 (Partie 1 du Chapitre 2 de la 1er partie du tutoriel seulement)
Vous pouvez-vous passer de ces conaissances mais ce serais une grande perte !
Vous ne comprendriez pas completement ce que vous faites et auriez du mal a passer a un langage informatique plus /difficile/.
*/
/*-----------------[Message to English scripters]----------------------
This script is constituted of many basics scripts found on wiki.sa-mp.com and/or forum.sa-mp.com.
If you are the owner of one or/and if you have a licence for the one , you should contact me at jujuv.games {AT} hotmail [DOT] fr
You know that internet is realy big and free so you should know that i can't ensure that i can stop the difusion of your code.
/\
/ \
/ \
/ ! \
-------- The email i gived is an Hotmail Alias so i can delete it if i get too many spams !
*/
/*
-------------------------------[Sources]--------------------------------
Pour de l'aide, voir : forum.sa-mp.com ou wiki.sa-mp.com
*Anti Spawn-Kill System : http://forum.sa-mp.com/showthread.php?p=1568257
*Bases : http://wiki.sa-mp.com/wiki/PAWN_tutorial
*Bases : http://wiki.sa-mp.com/wiki/Scripting_Basics
*HeadShot System : http://forum.sa-mp.com/showthread.php?p=802102
*/
#include <a_samp>
//Forwards :
forward AntiSpawnkill(playerid);
forward GivePlayerScore(playerid, earnedScore);
forward GetOutPlayerScore(playerid, lostScore);
//Fin de la liste des Forwards
//Constantes :
#define TEAM_TERRO 1
#define TEAM_COPS 2
#define TEAM_TERRO_COLOR 0x53555d //Light Black
#define TEAM_COPS_COLOR 0x0042dc //Blue
//Fin de la liste des constantes
//Variables globales
//Fin de la liste des variables globales
//Tableaux globales
//Fin de la liste des tableaux globales
//Debut du script (Callbacks & Fonctions)
main()
{
print("\n----------------------------------");
print("Team Death Match Basique");
print("----------------------------------\n");
}
public OnGameModeInit()
{
SetGameModeText("Testing Script");
AddPlayerClass(285, 2288.2563,2465.1045,10.8203,102.7608, 31, 250, 23, 1000, 28, 500);
AddPlayerClass(73 ,1605.4473, 1178.2816, 14.2204, 13.3720, 30, 250, 23, 1000, 32, 500);
//Cops vehicles
AddStaticVehicle(598,2277.7202,2478.3662,10.8203,183.91503, 0, 1); //Patrouilleuse
AddStaticVehicle(598,2273.8252,2478.6213,10.8203,176.1986, 0, 1); //Patrouilleuse
AddStaticVehicle(598,2268.9844,2478.6133,10.8203,177.1387, 0, 1); //Patrouilleuse
AddStaticVehicle(599,2259.8948,2459.2444,10.8203,1.6704, 0, 1); // Rancher
AddStaticVehicle(599,2256.4390,2461.1797,10.8203,177.4520, 0, 1); //Rancher
AddStaticVehicle(599,2251.8328,2461.1943,10.8203,204.7123, 0, 1); //Rancher
AddStaticVehicle(427 , 2260.4639,2445.9924,10.8203,355.7169, 0, 1); //Enforcer
AddStaticVehicle(427 , 2277.7449,2443.4890,10.8203,1.0436, 0, 1); //Enforcer
//Terrorists Vehicles
AddStaticVehicle(577, 1572.3068,1188.3766,11.1875,359.8749, 57, 57);// AT400 (Avion)
AddStaticVehicle(405, 1631.3560,1321.8704,11.1921,359.4152, 57, 57);// sentinel
AddStaticVehicle(470, 1306.2106,1278.8822,11.2249,2.8879, 57, 57); // Patriot (Humvee)
AddStaticVehicle(470, 1321.5038,1279.4181,11.1953,357.7491, 57, 57); // Patriot (Humvee)
AddStaticVehicle(400, 1633.3799,1267.7129,11.1875,91.6029, 57, 57); // Burito
AddStaticVehicle(482, 1631.0444,1245.0631,11.1875,92.9941, 57, 57); // Burito
AddStaticVehicle(482, 1630.5090,1299.4934,11.1876,94.6110, 57, 57); // Burito
AddStaticVehicle(482, 1518.8230,1221.3069,11.1875,359.7036, 57, 57); // Burito
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
/*
Flemme de prendre les positions :-'
*/
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerTeamFromClass(playerid, classid);
return 1;
}
public OnPlayerConnect(playerid)
{
PlayAudioStreamForPlayer(playerid, "http://jujuv.rd-h.fr/upload/songs/game1.ogg", 0, 0, 0, 0, 0 );
new pName[MAX_PLAYER_NAME], joinMessage[30 + MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
format(joinMessage, sizeof(joinMessage), "%s a rejoint le serveur !", pName);
SendClientMessageToAll(0xcc0000, joinMessage);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new pName[MAX_PLAYER_NAME], leaveMsg[39 + MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
switch(reason)
{
case 0: format(leaveMsg, sizeof(leaveMsg), "%s a bogue/crashe", pName);
case 1: format(leaveMsg, sizeof(leaveMsg), "%s a quitte(e) le serveur", pName);
case 2: format(leaveMsg, sizeof(leaveMsg), "%s a ete expluse(e) du serveur", pName);
}
SendClientMessageToAll(0xAAAAAAAA, leaveMsg);
return 1;
}
public OnPlayerSpawn(playerid)
{
SetPlayerToTeamColor(playerid);
SetPlayerHealth(playerid, 10000.0);
SendClientMessage(playerid, 0xFF0000AA, "[INFO]: Vous etes protege par l'Anti-SpawnKill pour 10 secondes");
SetPlayerChatBubble(playerid, "[INFO]: Joueur protege contre le SpawnKill", 0xFF0000AA, 100.0, 10000);
SetTimerEx("AntiSpawnkill",10000,0,"i",playerid);
return 1;
}
public AntiSpawnkill(playerid)
{
SetPlayerHealth(playerid, 100.0);
SendClientMessage(playerid, 0xFF0000AA, "[INFO]: Session Anti-SpawnKill termine.Vous etes dorenavent vulnerable.");
return 1;
}
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid)
{
new pName[MAX_PLAYER_NAME];
GetPlayerName(issuerid, pName, sizeof(pName));
HeadShot(playerid, issuerid);
AntiTeamKill(playerid, issuerid);
AntiNoFP(playerid, issuerid, weaponid);
if(weaponid == 35 || weaponid == 36 || weaponid == 37 || weaponid == 38 || weaponid == 39 || weaponid == 40 || weaponid == 47 || weaponid == 27 || weaponid == 18 || weaponid == 16)
{
BanEx(issuerid, "Cheat/Hack Arme");
new Float:pHealth;
GetPlayerHealth(playerid, pHealth);
new Float:pArmor;
GetPlayerArmour(playerid, pArmor);
if(pHealth == 100 && pArmor < 100 && pArmor + amount < 100.1)
{
SetPlayerArmour(playerid, pArmor + amount);
}
else if(pHealth < 100 && pArmor <= 0)
{
if(pHealth + amount <= 100)
{
SetPlayerHealth(playerid, pHealth + amount);
}
else if(pHealth + amount > 100)
{
new Float:pLostHealth = 100 - pHealth;
SetPlayerHealth(playerid, 100.0);
SetPlayerArmour(playerid, amount - pLostHealth);
}
}
else
{
printf("%s a pris des degats par un cheater mais a 100% de vie est de blindage", pName);
SendClientMessage(playerid, 0xFF0000AA, "Une erreur innatendue est survenue.Vos point de vies ou d'armure n'ont pu vous être restituer");
}
}
}
public GivePlayerScore(playerid, earnedScore)
{
new oldScore = GetPlayerScore(playerid);
SetPlayerScore(playerid, oldScore + earnedScore);
return 1;
}
public GetOutPlayerScore(playerid, lostScore)
{
new oldScore = GetPlayerScore(playerid);
SetPlayerScore(playerid, oldScore - lostScore);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid != INVALID_PLAYER_ID)
{
GetOutPlayerScore(playerid, 1);
GivePlayerScore(killerid, 3);
}
PlayAudioStreamForPlayer(playerid, "http://jujuv.rd-h.fr/upload/songs/game2.ogg", 0, 0, 0, 0, 0 );
if(reason == 35 || reason == 36 || reason == 37 || reason == 38 || reason == 39 || reason == 40 || reason == 47 || reason == 27 || reason == 18 || reason == 16)
{
BanEx(killerid, "Cheat/Hack Arme");
}
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/kill", cmdtext, true, 10) == 0)
{
SetPlayerHealth(playerid, 0.0);
return 1;
}
return 0;
}
SetPlayerTeamFromClass(playerid, classid)
{
if (classid == 0)
{
SetPlayerTeam(playerid, TEAM_TERRO);
}
else
{
SetPlayerTeam(playerid, TEAM_COPS);
}
}
SetPlayerToTeamColor(playerid)
{
if (GetPlayerTeam(playerid) == TEAM_TERRO)
{
SetPlayerColor(playerid, TEAM_TERRO_COLOR);
GameTextForPlayer(playerid, "~l~Terroristes !", 4000, 0);
}
else if (GetPlayerTeam(playerid) == TEAM_COPS)
{
SetPlayerColor(playerid, TEAM_COPS_COLOR);
GameTextForPlayer(playerid, "~b~Policiers !", 4000, 0);
}
}
HeadShot(playerid, issuerid)
{
new pAnim = GetPlayerAnimationIndex(playerid);
if(pAnim == 1173 || pAnim == 1175 || pAnim == 1177 || pAnim == 1178)
{
GameTextForPlayer(playerid, "~r~HeadShoted !", 4000, 0);
SetPlayerHealth(playerid, 0.0);
GameTextForPlayer(issuerid, "~g~HeadShot !", 2000, 0);
GivePlayerScore(issuerid, 5);
GetOutPlayerScore(playerid, 3);
}
}
AntiTeamKill(playerid, issuerid)
{
if(GetPlayerTeam(issuerid) == GetPlayerTeam(playerid))
{
SendClientMessageToAll(0xcc0000, "Admin-Bot : le tire-ami est strictement interdis !");
SetPlayerHealth(issuerid, 0.0);
GetOutPlayerScore(issuerid, 5);
}
}
AntiNoFP(playerid, issuerid, weaponid)
{
/*
Weapon id 50 : Helli-Kill
Weapon id 49 : Car-kill
(ou inverssement ...)
*/
new pName[MAX_PLAYER_NAME];
GetPlayerName(issuerid, pName, sizeof(pName));
if(weaponid == 50 || weaponid == 49)
{
new badKillMsg[100];
format(badKillMsg, sizeof(badKillMsg), "%s a ete expulse du serveur : l'HelliKill et le car-kill sont strictement interdit !", pName);
SetPlayerScore(issuerid, GetPlayerScore(issuerid) / 2);
SendClientMessageToAll(0xcc0000, badKillMsg);
Kick(issuerid);
SetPlayerHealth(playerid, 100.0);
GivePlayerScore(playerid, 3);
}
}
Comments
0 B
|👍
/👎