[TuT] Jednostavni sistem bolesti by Lazarevic

Započeo lv
6. Avg. 2014. Zaključano
1,556
pregleda
6
postova
Vukasin
4
Made Man
6. Avg. 2014.
Pozdrav svima, danas cu vam pokazati kako napraviti jednostavan sistem bolesti.. Znaci sa 3 komande /kupilek /izlecime /startujbolest
Potrebno nam je :
Y_INI
YCMD
Foreach


TREBA ZNATI: Morate znati kako idu varijable za Y_Ini spremanje , to vas necu uciti ! Takodje, necu praviti FS, jer to morate prilagoditi svom modu !



Znaci, prvo pod vas eNum pInfo morate dodati sledece stvari:

pBolest, // Govori da li je igrac bolestan
pLek // Govori koliko igrac ima lekova

Sledece sto treba jeste da pod OnPlayerConnect stavimo varijablu koja ce resetovati igracu lekove i bolest.. jer ce LoadUser_%s to sam ucitati.. Da ne bi bagovalo, znaci pod OnPlayerConnect stavimo ovako

PlayerInfo = 0; // Resetuje igracevu bolest na 0 !
PlayerInfo = 0; // Resetuje igraceve lekove na 0 !

Ok, sredili smo eNum, OnPlayerConnect.. Sada odmah krecemo na komande.. Znaci FS nece imati tajmere, vec ce admin da pokrece bolest, jednostavnom komandom /startujbolest
Znaci, odabrali smo YCMD procesor komandi.. u proslom tutorijalu (sastavljanje sistema za kreiranje 3dTextova IG) sam vas naucio kako da sastavite YCMD komandu.. Evo opet cu.. Znaci izgleda ovako, mnogo jednostavnije od strcmp-a

YCMD:komanda(playerid, params[], help)
{
  // Ovde ispisujemo to sto treba
  return 1;
}

Tako se sastavlja YCMD komanda. Mi cemo koristiti ForEach, i neke PlayerInfo funkcije za to 🙂
Znaci.. Sastavimo komandu /startujbolest ..

YCMD:startujbolest(playerid, params[], help)
{

Sledece sto treba jeste da namestimo odobrenje.. Posto ne znam kakve vi admin sisteme imate, ja cu koristiti RCON admin sistem.. znaci ovako idemo

if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "{FF0000}ERROR:{FFFFFF} Nisi ovlascen !");

Dakle to treba ovako da izgleda

YCMD:startujbolest(playerid, params[], help)
{
  if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "{FF0000}ERROR:{FFFFFF} Nisi ovlascen !");

Sada cemo malo raditi sa Foreachom, znaci foreach radi sa SVIM igracima .. Ako imate na serveru npr.. 10 igraca, on ce svima desetorici dati nesto, oduzeti nesto, poslati nesto..
Umesto onog for(new i= 0< MAX_PLAYERS i++) (nemojte mi zameriti, ne znam ni ja kako to ide), koristimo jednostavnu funkciju

foreach(Player, i)
{

Znaci , za sada cela komanda /startujbolest treba da izgleda ovako

YCMD:startujbolest(playerid, params[], help)
{
  if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "{FF0000}ERROR:{FFFFFF} Nisi ovlascen !");
  foreach(Player, i)
  {

Oke, sada cemo da radimo da svima stavi pBolest na 1 , i da svima posalje poruku da je bolestan.. Znaci to je jednostavno dodeljivanje i SendClientMessage.. Ovako treba da izgleda

PlayerInfo = 1; // Dodeljuje SVIM online igracima bolest na 1 .. koristimo I umesto playerid, jer smo radili sa foreach-om
SCMTA(-1,"Bolestan si ! Idi do apoteke i kupi lek kako bi se izlecio"); // Salje svima poruku da su bolesni, da trebaju da kupe lek

Kao sto ste videli, pre jednostavno je .. Ovako treba da izgleda

YCMD:startujbolest(playerid, params[], help)
{
  if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "{FF0000}ERROR:{FFFFFF} Nisi ovlascen !");
  foreach(Player, i)
  {
        PlayerInfo = 1;
        SCMTA(-1,"Bolestan si ! Idi do apoteke i kupi lek kako bi se izlecio"); // Salje obavestenje da su bolesni
  }
  return 1;
}

Komanda /startujbolest je zavrsena, sada krecemo na komandu /kupilek
Znaci sastavljamo komandu

YCMD:kupilek(playerid, params[], help)
{

E sada, morate podesiti da igrac moze da kupi lek samo u apoteci, ja ne znam koordinate vase apoteke, pa cu umesto brojeva upisati samo X,y,Z.. Pa vi to zamenite sa vasim koordinatama, dacu vam example funkcije:

if(!IsPlayerInRangeOfPoint(playerid, 8.0, X,Y,Z)) return SCM(playerid,-1,"GRESKA: Nisi u apoteci");

Za sada komanda /kupilek izgleda ovako:

YCMD:kupilek(playerid, params[], help)
{
if(!IsPlayerInRangeOfPoint(playerid, 8.0, X,Y,Z)) return SCM(playerid,-1,"GRESKA: Nisi u apoteci");

E, sada, moramo dodeliti igracu lek, poslati mu poruku da ga je kupio, i oduzeti mu novac, ja cu oduzeti $200, a vi radite kako hocete...
To izgleda ovako

PlayerInfo += 1; // Dodeljujemo igracu +1 lek ...
GivePlayerMoney(playerid, -200); // Oduzimamo igracu 200$
new string; // definisemo string
new lekovi = PlayerInfo; // Definisemo broj lekova.. Znaci lekovi = pLek ...
format(string, sizeof(string)" Kupio si lek, platio si  $200 ! Sada imas %d lekova", lekovi); // "Stringujemo" poruku koju cemo poslati
SCM(playerid, -1, string); // Saljemo "stringovanu" poruku

I komanda treba da izgleda ovako

YCMD:kupilek(playerid, params[], help)
{
    if(!IsPlayerInRangeOfPoint(playerid, 8.0, X,Y,Z)) return SCM(playerid,-1,"GRESKA: Nisi u apoteci");
    PlayerInfo += 1; // Dodeljujemo igracu +1 lek ...
    GivePlayerMoney(playerid, -200); // Oduzimamo igracu 200$
    new string; // definisemo string
    new lekovi = PlayerInfo; // Definisemo broj lekova.. Znaci lekovi = pLek ...
    format(string, sizeof(string)" Kupio si lek, platio si  $200 ! Sadhttp://balkan-samp.com/forum/Smileys/noviset/undecided.gifa imas %d lekova", lekovi); // "Stringujemo" poruku koju cemo    poslati
    SCM(playerid, -1, string); // Saljemo "stringovanu" poruku
    return 1;
}

Sada krecemo na konacnu komandu /izlecime ... Pravimo proveru da li je igrac bolestan, da li ima lekove, i sada mu oduzimamo jedan lek, stavljamo bolest na 0 , saljemo mu obavestenje ...
Odradicu odmah komandu, pa cu vam u komentarima objasniti sta je za sta

YCMD:izlecime(playerid, params[], help)
{
  if(PlayerInfo == 0) return SCM(playerid, -1, " Nisi bolestan"); // Ukoliko je igracu bolest na 0 da mu posalje poruku da nije bolestan
  if(PlayerInfo == 0) return SCM(playerid, -1, " Nemas lekove"); // Ukoliko su igracevi lekovi na 0 da mu posalje poruku da nema lekove
  PlayerInfo -= 1; // Dodeljuje igracu -1 lek
  PlayerInfo = 0; // Dodeljuje igracu bolest na 0
  new lekovi = PlayerInfo; // Definisemo da "lekovi" gleda broj igracevih lekova iz fajla
  new string; // Definisemo string koji ima max. 256 znakova
  format(string, sizeof(string), "Zalecio si se , vise nisi bolestan ! Imas jos %d lekova", lekovi);// "stringujemo" poruku igracu
  SCM(playerid, -1, string); // saljemo igracu "stringovanu" poruku..
  return 1;
}

To je bio kraj TuT-a 🙂 Hvala vam sto ste pogledali moj tutorial 🙂
CREDITS: Y_Less | YCMD, Y_INI , Foreach
Madafaker
4
Enforcer
9. Avg. 2014.
koliko ja vidim ovo samo salje scm da sam bolestan i da ne kupim lijek i ne izlijecim se nista se nece promijeniti stavi da skida hp ili nesto...ostalo odlicno si objasnio (y)
RolePlay
3
Hustler
10. Avg. 2014.
Ja mislim ipak da je bolje da ima tajmere i da mu svako odredeno vrijeme ako je bolestan skida 5-10 healta - ovo uopce nije tesko za napraviti a sluzilo bi jer ovako bez toga ovaj tut nema svrhe, ostalo je sve lijepo objasnjeno
BelMiNN
4
Shot Caller
11. Avg. 2014.
odlicno si objasnio,bravo!
[HC]Sonatio
5
Kingpin
25. Avg. 2014.
Nije loÅ¡e. Moglo je bolje al et 😄
denis_lapi
5
Godfather
25. Avg. 2014.
Otvaras temu stariju od 10 dana  😮 LOCK

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava

© 2026 SmartShark. All rights reserved.

Powered by Momentum|v2026.3.001 Alpha