Szerző Téma: Pont Rendszer + Hozzátartozó Jutalmak  (Megtekintve 2171 alkalommal)

Pont Rendszer + Hozzátartozó Jutalmak
« Dátum: 2014. március 07. - 16:33:29 »
+1 Show voters
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.
« Utoljára szerkesztve: 2014. március 10. - 15:15:18 írta RaySurenos »

Nem elérhető ZSOLTI99

  • 1827
    • Profil megtekintése
Pont Rendszer + Hozzátartozó Jutalmak
« Válasz #1 Dátum: 2014. március 08. - 09:12:26 »
0 Show voters
Kösz a publikálást fel fogom használni!

Pont Rendszer + Hozzátartozó Jutalmak
« Válasz #2 Dátum: 2014. március 08. - 11:05:33 »
0 Show voters
Tetszik. Dm map helyere ugy gondolom jol jon. :D mert ott ugyis mindenki egyfolytaba oldokol.

Pont Rendszer + Hozzátartozó Jutalmak
« Válasz #3 Dátum: 2014. március 08. - 11:31:48 »
0 Show voters
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.
« Utoljára szerkesztve: 2014. március 09. - 23:17:06 írta RaySurenos »

Pont Rendszer + Hozzátartozó Jutalmak
« Válasz #4 Dátum: 2015. július 06. - 13:51:50 »
0 Show voters
Csak nekem erroros?

Pont Rendszer + Hozzátartozó Jutalmak
« Válasz #5 Dátum: 2015. július 06. - 14:04:46 »
0 Show voters
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 :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal