Podaci sa servera na web stranici

Započeo Prcko97, Avgust 08, 2020, 23:54:14 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.

Tip: Filterscripta
Slike ili Video: https://imgur.com/a/onnB35h    
Opis i dodatne informacije: Za pocetak da pozdravim sve clanove ovog foruma, naime vratio sam se skriptanju posle velike pauze od jula 2017 godine, hteo sam cisto malo da obnovim znanje i pomognem nekome kome je ovakva vrsta skripte potrebna. Necu otkrivati svoje staro ime na sampu, koga bas zanima nek iskoci pm. Da predjemo na sitsem, da bi ga koristili morate imate minimalno znanje mysql-a znaci ja sam uradio neku osnovu upisivanje rekorda i broja online igraca u bazu i ispisivanje istih na improvizovanom 'portalu'. Znaci imate neku predstavu kako bilo koji podatak sa servera uneste na vas portal sve je urednu uradjeno po crtama i nekom ce podluziti da uradi nesto svoje po mom kodu ili da ubaci ovo kao filterscriptu i koristi.. U pakovanju dobijate .pwn i .amx .sql(bazu sa tablicom) i 'portalcic' u kome je sve to ispisano (zanemarite dizajn jer je u ovom slucaju nebitan). Nadam se da ce nekom pomoci ovaj FS a, i ja sam se malo podsetio pawna  ;) Svaka kritika i savet su dobrodosli  :)
Download link: https://www.sendspace.com/file/jhyvnw
Scan link: https://www.virustotal.com/gui/url/80d5b3c52d1800e25e8580f96391ff1eef90a66c1ee1440cf34268fee532ce9c/detection
Credits: Prcko97



Nije loša ideja, ali da vidimo kod :D, ja sam dole samo editovao tvoj, tj napisao sam sve al ajd..


TVOJ KOD
[pawn]
#include <a_samp>
#include <a_mysql>

static const SQL_HOST[10] = "localhost";
static const SQL_USER[5] = "root";
static const SQL_PASS[1] = "";
static const SQL_DB[6] = "testt";

enum PI { rekord, online }
new PortalInfo[PI];
new MySQL:sql;

public OnFilterScriptInit() {
    sql = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB);
   if(mysql_errno(sql) != 0 || sql == MYSQL_INVALID_HANDLE) {
        print("Konekcija sa databazom nije uspesna.");
        SendRconCommand("exit");
        return true; }
   mysql_tquery(sql, "SELECT * FROM `test`", "UcitajRekord");
   return true;
}

public OnFilterScriptExit() {
   mysql_close(sql);
   return true;
}

public OnPlayerConnect(playerid) {
   PortalInfo[online] ++;
   static query[128];
   mysql_format(sql, query, sizeof(query), "UPDATE `test`\
       SET `online`='%d'\
        WHERE `sqlid`= '1'", PortalInfo[online]);
   mysql_tquery(sql, query);
   RekordProvera();
   return true;
}

public OnPlayerDisconnect(playerid, reason) {
   PortalInfo[online] --;
   static query[128];
   mysql_format(sql, query, sizeof(query), "UPDATE `test`\
       SET `online`='%d'\
        WHERE `sqlid`= '1'", PortalInfo[online]);
   mysql_tquery(sql, query);
   return true;
}

forward public UcitajRekord();
public UcitajRekord() { if(cache_num_rows() > 0) { cache_get_value_int(0, "rekord", PortalInfo[rekord]); } }

static stock RekordProvera() {
   if(PortalInfo[rekord] < PortalInfo[online]) {
       PortalInfo[rekord] = PortalInfo[online];
      static query[128];
      mysql_format(sql, query, sizeof(query), "UPDATE `test`\
          SET `rekord`='%d'\
           WHERE `sqlid`= '1'", PortalInfo[online]);
      mysql_tquery(sql, query);
       return true; }
   return true;
}
[/pawn]




MOJ KOD
[pawn]
/*
   OVO JE SAMO EDIT TVOG KODA, SKORO NIŠTA NE RADIM KAO OVDE
   ČISTO DA SE ZNA :D
*/


#include <a_samp>
#include <a_mysql>


#define SQL_HOST       "localhost"
#define SQL_USER       "root"
#define SQL_PASS       ""
#define SQL_DB          "testt"


new
   rekord,
   online,

   MySQL: sql;



/*
  *
  * Inače ja ovako ne pravim konekcije, već koristim pawn-env itd...
  *
*/
public OnFilterScriptInit()
{
   sql = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB);


   if(mysql_errno(sql) != 0)
   {
      print("Konekcija sa databazom nije uspesna.");
      SendRconCommand("exit");

      return 0;
   }

   mysql_tquery(sql, "SELECT * FROM `test`", "UcitajRekord");

   return 1;
}


public OnFilterScriptExit()
{
   mysql_close(sql);
   return 1;
}


public OnPlayerConnect(playerid)
{
   ++online;


   static
      query[80];


   mysql_format(
      sql, query, sizeof query,
      "UPDATE \
         `test` \
      SET \
         `online` = '%d' \
      WHERE \
         `sqlid` = '1'", online
   );
   mysql_tquery(sql, query);

   RekordProvera();

   return 1;
}


public OnPlayerDisconnect(playerid, killerid, reason)
{
   --online;


   static
      query[80];


   mysql_format(
      sql, query, sizeof query,
      "UPDATE \
         `test` \
      SET \
         `online` = '%d' \
      WHERE \
         `sqlid` = '1'", online
   );
   mysql_tquery(sql, query);

   return 1;
}


/*
  *
  * Takođe ni učitavanja ne pravim ovako već koristim taskove i pawnplus, pp mysql itd...
  *
*/
forward UcitajRekord();
public UcitajRekord()
{
   if(cache_num_rows() > 0)
   {
      cache_get_value_int(0, "rekord", rekord);
   }

   return 1;
}


stock RekordProvera()
{
   if(rekord < online)
   {
      rekord = online;

      
      static
         query[80];


      mysql_format(
         sql, query, sizeof query,
         "UPDATE \
            `test` \
         SET \
            `rekord` = '%d' \
         WHERE \
            `sqlid` = '1'", online
      );
      mysql_tquery(sql, query);

      return 1;
   }

   return 1;
}
[/pawn]

naravno tab je sjeban ovde, ja stavim 4 on stavi 8 al nbtn, čisto da ti dam do znanja šta je uredan kod xD

Citat: inquisitiveemmett poslato Avgust 09, 2020, 00:50:59 PRE PODNE
Nije loša ideja, ali da vidimo kod :D, ja sam dole samo editovao tvoj, tj napisao sam sve al ajd..


TVOJ KOD
[pawn]
#include <a_samp>
#include <a_mysql>

static const SQL_HOST[10] = "localhost";
static const SQL_USER[5] = "root";
static const SQL_PASS[1] = "";
static const SQL_DB[6] = "testt";

enum PI { rekord, online }
new PortalInfo[PI];
new MySQL:sql;

public OnFilterScriptInit() {
    sql = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB);
   if(mysql_errno(sql) != 0 || sql == MYSQL_INVALID_HANDLE) {
        print("Konekcija sa databazom nije uspesna.");
        SendRconCommand("exit");
        return true; }
   mysql_tquery(sql, "SELECT * FROM `test`", "UcitajRekord");
   return true;
}

public OnFilterScriptExit() {
   mysql_close(sql);
   return true;
}

public OnPlayerConnect(playerid) {
   PortalInfo[online] ++;
   static query[128];
   mysql_format(sql, query, sizeof(query), "UPDATE `test`\
       SET `online`='%d'\
        WHERE `sqlid`= '1'", PortalInfo[online]);
   mysql_tquery(sql, query);
   RekordProvera();
   return true;
}

public OnPlayerDisconnect(playerid, reason) {
   PortalInfo[online] --;
   static query[128];
   mysql_format(sql, query, sizeof(query), "UPDATE `test`\
       SET `online`='%d'\
        WHERE `sqlid`= '1'", PortalInfo[online]);
   mysql_tquery(sql, query);
   return true;
}

forward public UcitajRekord();
public UcitajRekord() { if(cache_num_rows() > 0) { cache_get_value_int(0, "rekord", PortalInfo[rekord]); } }

static stock RekordProvera() {
   if(PortalInfo[rekord] < PortalInfo[online]) {
       PortalInfo[rekord] = PortalInfo[online];
      static query[128];
      mysql_format(sql, query, sizeof(query), "UPDATE `test`\
          SET `rekord`='%d'\
           WHERE `sqlid`= '1'", PortalInfo[online]);
      mysql_tquery(sql, query);
       return true; }
   return true;
}
[/pawn]




MOJ KOD
[pawn]
/*
   OVO JE SAMO EDIT TVOG KODA, SKORO NIŠTA NE RADIM KAO OVDE
   ČISTO DA SE ZNA :D
*/


#include <a_samp>
#include <a_mysql>


#define SQL_HOST       "localhost"
#define SQL_USER       "root"
#define SQL_PASS       ""
#define SQL_DB          "testt"


new
   rekord,
   online,

   MySQL: sql;



/*
  *
  * Inače ja ovako ne pravim konekcije, već koristim pawn-env itd...
  *
*/
public OnFilterScriptInit()
{
   sql = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB);


   if(mysql_errno(sql) != 0)
   {
      print("Konekcija sa databazom nije uspesna.");
      SendRconCommand("exit");

      return 0;
   }

   mysql_tquery(sql, "SELECT * FROM `test`", "UcitajRekord");

   return 1;
}


public OnFilterScriptExit()
{
   mysql_close(sql);
   return 1;
}


public OnPlayerConnect(playerid)
{
   ++online;


   static
      query[80];


   mysql_format(
      sql, query, sizeof query,
      "UPDATE \
         `test` \
      SET \
         `online` = '%d' \
      WHERE \
         `sqlid` = '1'", online
   );
   mysql_tquery(sql, query);

   RekordProvera();

   return 1;
}


public OnPlayerDisconnect(playerid, killerid, reason)
{
   --online;


   static
      query[80];


   mysql_format(
      sql, query, sizeof query,
      "UPDATE \
         `test` \
      SET \
         `online` = '%d' \
      WHERE \
         `sqlid` = '1'", online
   );
   mysql_tquery(sql, query);

   return 1;
}


/*
  *
  * Takođe ni učitavanja ne pravim ovako već koristim taskove i pawnplus, pp mysql itd...
  *
*/
forward UcitajRekord();
public UcitajRekord()
{
   if(cache_num_rows() > 0)
   {
      cache_get_value_int(0, "rekord", rekord);
   }

   return 1;
}


stock RekordProvera()
{
   if(rekord < online)
   {
      rekord = online;

      
      static
         query[80];


      mysql_format(
         sql, query, sizeof query,
         "UPDATE \
            `test` \
         SET \
            `rekord` = '%d' \
         WHERE \
            `sqlid` = '1'", online
      );
      mysql_tquery(sql, query);

      return 1;
   }

   return 1;
}
[/pawn]

naravno tab je sjeban ovde, ja stavim 4 on stavi 8 al nbtn, čisto da ti dam do znanja šta je uredan kod xD


Ne vidim da si ista uradio sem sto si enum izbacio i pisao obicne varijable sto je nebitno skroz, drugo zasto bi koristio define za paramtre konekcije kada se pozivaju samo jednom i onda je prakticnije koristiti statican const, trece zagrade si "tabovao' sto je isto nebitno ali u svakom slucaju podrzavam trud  :)

EDIT: statican stock je isto namerno postavljen jer se poziva samo jednom
Poslednja Izmena: Avgust 09, 2020, 01:00:42 PRE PODNE od Prcko97


Citat: Prcko97 poslato Avgust 09, 2020, 00:57:47 PRE PODNE

Ne vidim da si ista uradio sem sto si enum izbacio i pisao obicne varijable sto je nebitno skroz, drugo zasto bi koristio define za paramtre konekcije kada se pozivaju samo jednom i onda je prakticnije koristiti statican const, trece zagrade si "tabovao' sto je isto nebitno ali u svakom slucaju podrzavam trud  :)
Pa nisam ja ni hteo da nešto poboljšam kod, ako hoćeš uradiću na način na koji ja radim ali trebaće malo vremena, što mi se ne da realno, ja sam tu samo preuredio kod, da se zna šta je šta, da se vidi sve lepo, pregledno..

Citat: Alhemičar v2 poslato Avgust 09, 2020, 01:08:53 PRE PODNE
Čemu tquery? ???
Kolko se secam od pre (izlapeo sam) tquery se koristi za manje qverije kao u ovom slucaju apdejt jedne kolone, a pquery za vece operacije jer je brzi  :) izvini ako gresim

Citat: Prcko97 poslato Avgust 09, 2020, 01:16:12 PRE PODNE
Kolko se secam od pre (izlapeo sam) tquery se koristi za manje qverije kao u ovom slucaju apdejt jedne kolone, a pquery za vece operacije jer je brzi  :) izvini ako gresim
Nene, ne pričam o tome, ja koristim totalno drugačije nešto ali evo za tvoj pimer
Konkretno ovde
mysql_tquery(sql, "SELECT * FROM `test`", "UcitajRekord");

Pod recimo da je OnGameModeInit ja bih uvek isao sa mysql_query jer mysql_query ZAMRZNE GLAVNI THREAD sto i jeste poenta kod UCITAVANJA!!!

Citat: Alhemičar v2 poslato Avgust 09, 2020, 01:19:52 PRE PODNE
Nene, ne pričam o tome, ja koristim totalno drugačije nešto ali evo za tvoj pimer
Konkretno ovde
mysql_tquery(sql, "SELECT * FROM `test`", "UcitajRekord");

Pod recimo da je OnGameModeInit ja bih uvek isao sa mysql_query jer mysql_query ZAMRZNE GLAVNI THREAD sto i jeste poenta kod UCITAVANJA!!!

Prihvatam savet, kazem ti 3 godine nisam pipnuo samp kamoli pawn ali popravljam se polako :)

Lepo sto si se vratio, ako stvarno nisi radio 3 godine ipak ti je ostalo odlicno znanje.
Ima ovde malo ovih koji "sve rade drugacije  :D" neki pawnplusovi, taskovi, threadovi, picke materine, al jbg.

Slazem se da mysql_query treba koristiti kod vecih ucitavanja u OnGameModeInit, ali ovde ipak updatuje podatke tokom runtime-a tako da je tquery odlican izbor.


Those parts of the system that you can hit with a hammer (not advised) are called hardware; those program instructions that you can only curse at are called software

Citat: XACK poslato Avgust 09, 2020, 02:05:06 PRE PODNE
Lepo sto si se vratio, ako stvarno nisi radio 3 godine ipak ti je ostalo odlicno znanje.
Ima ovde malo ovih koji "sve rade drugacije  :D" neki pawnplusovi, taskovi, threadovi, picke materine, al jbg.

Slazem se da mysql_query treba koristiti kod vecih ucitavanja u OnGameModeInit, ali ovde ipak updatuje podatke tokom runtime-a tako da je tquery odlican izbor.
Ty brate, sto se tice qverija nem pojma uvek sam stavljao tquery za ucitavanje mislim uopsteno sam koristio tquery pqeury jedino ako mi je qveri preko 500 sto je veoma retko  :)

Citat: XACK poslato Avgust 09, 2020, 02:05:06 PRE PODNE
Lepo sto si se vratio, ako stvarno nisi radio 3 godine ipak ti je ostalo odlicno znanje.
Ima ovde malo ovih koji "sve rade drugacije  :D" neki pawnplusovi, taskovi, threadovi, picke materine, al jbg.


Pa sta ako momci koriste taskove, pawnplusove, threadove? Je l' sramota koristiti nesto sto je bolje? Sta, pawnplus ne valja? Jeste, ja ga ne koristim, ne jer ne znam kako se koristi ili nesto, ali to ne znaci da je .inc sranje, da su oni nesto posebni da koriste to, pp bih preporucio svakome ko radi svoj mod, iako ga ja ne koristim. Odlicna je stvar.
- open.mp regional coordinator -

Citat: Mergevos poslato Avgust 09, 2020, 10:33:18 PRE PODNE
Pa sta ako momci koriste taskove, pawnplusove, threadove? Je l' sramota koristiti nesto sto je bolje? Sta, pawnplus ne valja? Jeste, ja ga ne koristim, ne jer ne znam kako se koristi ili nesto, ali to ne znaci da je .inc sranje, da su oni nesto posebni da koriste to, pp bih preporucio svakome ko radi svoj mod, iako ga ja ne koristim. Odlicna je stvar.

Bez rasprave molicu :D :D

Druze nema ovde rasprave, samo pitam momka s razlogom, on ce meni isto tako odgovoriti ako skonta na pravi način, da ne pomisli da ga vredjam
- open.mp regional coordinator -