Helló.
Pont Rendszer, hozzátartozó Jutalmakkal.
A pontokat lementi a rendszer.
Pontokat ölésért lehet szerezni. (+1db/ölés)
Halálkor -1 pont, hogy azért ne legyen olyan egyszerû.
Nem teszteltem.
Készítõ: Ray Követelmények: Dini
ZCMD
Színkódok, include
#include <dini>
#include <a_samp>
#include <sscanf2>
#define COLOR_LIGHTRED 0xFF6347AA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_LIGHTGREEN 0x9ACD32AA
#define COLOR_ORANGE 0xFF8C00AA
#define COLOR_LIMEGREEN 0x32CD32AA
#define COLOR_YELLOW 0xFFFF00AA
#define vpiros 0xFF6347AA
#define COLOR_SPRINGGREEN 0x00FF7FAA
Lementés,egyéb:
enum pdata
{
Pont,//pontok száma
}
Belépéskor adatok ellenõrzése
public OnPlayerConnect(playerid)
{
new string[128],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),\"%s.ini\",name);
if(dini_Exists(string))
{
PlayerInfo[playerid][Pont] = dini_Int(string,\"Pont\");
}
else
{
dini_Create(string);
}
return 1;
}
Kilépéskor adatok lementése
public OnPlayerDisconnect(playerid, reason)
{
new string[128],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),\"%s.ini\",name);
if(dini_Exists(string))
{
dini_IntSet(\"Pont\", PlayerInfo[playerid][Pont]);
}
return 1;
}
Parancsok:
/pont - Pont Infók
CMD:pont(playerid, params[])
{
SendClientMessage(playerid, COLOR_YELLOW, \"================[ Pont Jutalmak ]================\");
SendClientMessage(playerid, COLOR_LIMEGREEN ,\"[50db]Új chatszín a játékosnak.\");
SendClientMessage(playerid, COLOR_LIMEGREEN, \"[100db]Letud hívni NRG-t (/nrg).\");
SendClientMessage(playerid, COLOR_LIMEGREEN, \"[150db]Fegyvereket tud lehívni (/pack).\");
return 1;
}
/pack - 150db ponttól, fegyverek lehívása, 2 féle fegyverpack.
CMD:pack(playerid, params[])
{
if(PlayerInfo[playerid][Pont] >= 150)
{
GivePlayerWeapon(playerid, 29, 1000);
GivePlayerWeapon(playerid, 31, 1000);
GivePlayerWeapon(playerid, 34, 1000);
GivePlayerWeapon(playerid, 27, 1000);
SendClientMessage(playerid, COLOR_LIGHTGREEN, \"[PACK] Combat, M4, Mp5, Sniper.\");
}
else
{
SendClientMessage(playerid, COLOR_LIGHTRED, \"Nincs elég pontod!\");
}
return 1;
}
/nrg - 100db ponttól a játékos letud hozni egy NRG-t
CMD:nrg(playerid, params[])
{
if(PlayerInfo[playerid][Pont] >= 100)
{
new vehicleid;
new Float:X,Float:Y,Float:Z,Float:Angle;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,Angle);
GetPlayerVehicleID(playerid);
vehicleid = CreateVehicle(522,X,Y,Z,Angle,-1,-1,600);
PutPlayerInVehicle(playerid, vehicleid, 0);
SendClientMessage(playerid, COLOR_SPRINGGREEN, \"Sikeresen lehívtad az NRG-500-ast!\");
}
else
{
SendClientMessage(playerid, vpiros, \"Nincs elég pontod!\");
}
return 1;
}
50db ponttól, új chatszín a játékosnak
public OnPlayerText(playerid, text[])
{
if(PlayerInfo[playerid][Pont] >= 50)
{
new textv2[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof (name));
format(textv2, sizeof (textv2), \"(%d) %s: %s\", playerid, name, text);
SendClientMessageToAll(COLOR_ORANGE, textv2);
SetPlayerChatBubble(playerid, textv2, COLOR_ORANGE, 100.0, 10000);
}
else
{
new textv2[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof (name));
format(textv2, sizeof (textv2), \"(%d) %s: %s\", playerid, name, text);
SendClientMessageToAll(COLOR_LIGHTGREEN, textv2);
SetPlayerChatBubble(playerid, textv2, COLOR_LIGHTGREEN, 100.0, 10000);
}
return 1;
}
Halálkor: (playerid) -1 pont, (killerid) +1 pont
public OnPlayerDeath(playerid, killerid, reason)
{
SendDeathMessage(killerid, playerid, reason);
PlayerInfo[playerid][Pont]--;
PlayerInfo[killerid][Pont]++;
SendClientMessage(playerid, COLOR_LIGHTBLUE, \"Meghaltál ezért csökkent 1-el a pontjaid száma!\");
SendClientMessage(killerid, COLOR_LIGHTBLUE, \"Kaptál +1 pontot!\");
GameTextForPlayer(killerid, \"~r~+1 pont\", 5000, 1);
return 1;
}
Textdraw hozzá, hogy a player lássa mennyi pontja van. Igazából a onplayerupdate, nagyon laggoltat, timerrel érdemes megoldani.
new Text:tdpontok;
new pontszam[128];
public OnGameModeInit()
{
tdpontok = TextDrawCreate(498, 120, \"~r~Pontok: ~y~0\");
TextDrawBackgroundColor(tdpontok, 0x050505AA);
TextDrawFont(tdpontok, 1);
TextDrawLetterSize(tdpontok, 0.4, 1);
TextDrawTextSize(tdpontok, 640, 480);
TextDrawColor(tdpontok, 0x32CD32AA);
TextDrawUseBox(tdpontok, 1);
TextDrawBoxColor(tdpontok, 0x05050566);
TextDrawSetOutline(tdpontok, 1);
TextDrawSetProportional(tdpontok, 1);
return 1;
}
public OnPlayerConnect(playerid)
{
format(pontszam, 128, \"~r~Pontok: ~y~%ddb\", PlayerInfo[playerid][Pont]);
TextDrawSetString(tdpontok, pontszam);
TextDrawShowForPlayer(playerid, tdpontok);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
TextDrawHideForPlayer(playerid, tdpontok);
return 1;
}
public OnPlayerSpawn(playerid)
{
TextDrawShowForPlayer(playerid, tdpontok);
return 1;
}
public OnPlayerUpdate(playerid)
{
new tdpontok2[128];
format(tdpontok2, 128, \"~r~Pontok: ~y~%ddb\", PlayerInfo[playerid][Pont]);
TextDrawHideForPlayer(playerid,tdpontok);
TextDrawSetString(tdpontok,tdpontok2);
TextDrawShowForPlayer(playerid, tdpontok);
return true;
}
Szóljatok hogyha valami gond van vele (error), lehet valamit kifelejtettem, nem volt idõm tesztelni.