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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: havasi2001 - 2013. július 01. - 19:52:23

Cím: XPRENDszer, hogy kezdjem
Írta: havasi2001 - 2013. július 01. - 19:52:23
Kérem aki tud segítsen!
A szerverembe szeretnék egy XPrendszer szerû HSSP nevû rendszert berakni! De nem tudom, hogy hogyan kezdjem! Elég lenne csak egy pár sor! Tudjátok, én még nagyon alapokon viszem a szkriptelést!
Cím: XPRENDszer, hogy kezdjem
Írta: ZyZu. - 2013. július 01. - 21:42:35
[mod]Nem PM -ben intézünk segítségkérési dolgokat hanem a fórumon itt a témában mivel másnak is jól jöhetnek ezek a dolgok.[/mod]
Cím: XPRENDszer, hogy kezdjem
Írta: tamas84 - 2013. július 02. - 05:44:33
Csak simán szeretnéd beleírni a játékmódodba?

Mert ha igen akkor természetesen segítek.. írj és itt megoldjuk.
Cím: XPRENDszer, hogy kezdjem
Írta: anorennia - 2013. július 02. - 10:15:26
Összedobtam egyet neked, remélem ilyenre gondoltál ;)
nem teszteltem, de írj, ha valami gond van :)
 
#include a_samp
#include dini
 
#define MAX_LVL      5 //kedvedre állítod be
new level_exp = 100; //itt úgy oldjuk meg, hogy ha egy leveles száz exp kell, majd levelenként szorozzuk be, folytatás lenn
enum items {
level,
exp,
registered
}
new accinfo[MAX_PLAYERS][items]; //mivel max_players-t adtunk meg az online játékosoknak külön tárolja az enumban lévõ dolgokat
 
public OnPlayerConnect(playerid)
{
accinfo[playerid][registered] = dini_Int(\"char.txt\", \"registered\");
if(accinfo[playerid][registered] == 1)//Ha regisztrált
{
accinfo[playerid][level] = dini_Int(\"char.txt\", \"level\");   //kiolvassa a szintet
accinfo[playerid][exp] = dini_Int(\"char.txt\", \"exp\");       //és az exp-t
}
else //ha még nem regisztrált
{
dini_IntSet(\"char.txt\", \"level\", 1);    //beállítja a kezdõ szintet (1)
dini_IntSet(\"char.txt\", \"exp\", 0);      //és az exp-t nullára
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)    //amikor egy játékos meghal
{
new string[64];
new gy_neve[64];
new h_neve[64];
GetPlayerName(playerid, h_neve, sizeof(h_neve));
GetPlayerName(killerid, gy_neve, sizeof(gy_neve));
give_exp(killerid, 5); //ha valaki (killerid) megöl valakit (playerid-t) akkor kap 5 exp-t
                        //ez bonyolíthatod elágazásokkal, hogy ha a gyilkos kisebb nagyobb szintû volt pl
format(string, sizeof(string), \"Mivel megölted õt: %s, ezért kaptál 5 exp-t\", h_neve);
SendClientMessage(killerid, -1, string);    //ezt a gyilkosnak küldjük
format(string, sizeof(string), \"%s megölt téged\", gy_neve);
SendClientMessage(playerid, -1, string);//ezt a halottnak küljök
      return 1;
}
 
stock give_exp(playerid, amount)
{
if(accinfo[playerid][exp] < max_exp(playerid)) //ha az exp kevesebb mint a max_exp,
{
accinfo[playerid][exp] = (accinfo[playerid][exp] + amount); // akkor hozzá adja a kapott exp-t
}
else // ha viszont egyenlõ, vagy nagyobb az exp a max expnél,
{
    accinfo[playerid][level] = (accinfo[playerid][level] + 1); //akkor kapsz +1 szintet
    accinfo[playerid][exp] = 0 + (accinfo[playerid][exp] - max_exp(playerid)); //Ez a végén azért fontos, mert ha esetleg a kapott exp-vel átllépte a max-ot akkor a következõ szinthet exp-jéhez hozzá adja
}
return 1;
}
//max exp meghatározása:
stock max_exp(playerid) //ezzel tudjuk lekérdezni menyi a jelenlegi max exp
{
new asd;
asd = (level_exp * accinfo[playerid][level]); //itt a levelenkénti exp-t szorozza meg a szinteddel
return asd; //a max_exp függvény ezzel az értékkel tér vissza
}