GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => A témát indította: RaySurenos - 2014. Március 07. - 16:33:29

Cím: Pont Rendszer + Hozzátartozó Jutalmak
Írta: RaySurenos - 2014. Március 07. - 16:33:29
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.
Cím: Pont Rendszer + Hozzátartozó Jutalmak
Írta: ZSOLTI99 - 2014. Március 08. - 09:12:26
Kösz a publikálást fel fogom használni!
Cím: Pont Rendszer + Hozzátartozó Jutalmak
Írta: Tamas1324 - 2014. Március 08. - 11:05:33
Tetszik. Dm map helyere ugy gondolom jol jon. :D mert ott ugyis mindenki egyfolytaba oldokol.
Cím: Pont Rendszer + Hozzátartozó Jutalmak
Írta: RaySurenos - 2014. Március 08. - 11:31:48
Persze ezt még lehet fejleszteni, csak nem tudtam mit kitalálni.

Dupla hozzászólás automatikusan összefûzve. ( 2014. Március 09. - 23:17:06 )

Pár hibát javítottam, mert egy kettõ helyen elnéztem, vpiros szín nem volt definiálva, + a szuksegesnel átírtam a fegyver árakra.
+ a pack parancs máshogy.
Cím: Pont Rendszer + Hozzátartozó Jutalmak
Írta: KingstonX - 2015. Július 06. - 13:51:50
Csak nekem erroros?
Cím: Pont Rendszer + Hozzátartozó Jutalmak
Írta: blackdog476 - 2015. Július 06. - 14:04:46
Szép munka, azt azonban elmondanám, hogy nem szükséges egyetlen egy váltózóra \"enumot létrehozni\", simán használhatod a
new Pont[MAX_PLAYERS];

 
létrehozást is. (Ráadásul itt csak számot ment el :) )
Valamint azt is hozzáírhattad volna a kezdőknek, hogy hogyan lehet bővíteni jutalmakkal :)