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
Upload na git ako imas ili pastebin
Citat: inquisitiveemmett poslato Avgust 09, 2020, 00:18:59 PRE PODNE
Upload na git ako imas ili pastebin
https://pastebin.com/DT7LpPrv
Evo druze .pwn na pastebinu ako oces .php upload cu
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
Čemu tquery? ???
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.
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.
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
Nigde nisam napisao da je lose, ali proseravanje o tome i forsiranje toga na filterskripti koju je covek izbacio kako bi samo pokazao nacin kako se radi nije potrebno.
PawnPlus jeste dobar, ali i sam znas njegovu brzinu i perfomanse i sta tacno radi. Taskovi i threadovi su mala maca sta pp moze sve da radi, ali o tome niko ne prica. Ponekad treba preispitati prioritete i potrebe, a ne gurati nesto cemu nije mesto tu.
Citat: XACK poslato Avgust 09, 2020, 18:18:35 POSLE PODNE
Nigde nisam napisao da je lose, ali proseravanje o tome i forsiranje toga na filterskripti koju je covek izbacio kako bi samo pokazao nacin kako se radi nije potrebno.
PawnPlus jeste dobar, ali i sam znas njegovu brzinu i perfomanse i sta tacno radi. Taskovi i threadovi su mala maca sta pp moze sve da radi, ali o tome niko ne prica. Ponekad treba preispitati prioritete i potrebe, a ne gurati nesto cemu nije mesto tu.
Ma znam brate, dobro je da se ti nisi nadrkao, svaka cast na tome. Jeste, da, ali ono nikad ne znas sto su napisali. Ni ja ne volim pola ovog foruma se svodi na DOBAR GM BRAVO AH, jednostavno tako ne treba, vise cenim kad se neko prosere o necemu iako ne valja, bar je diskusija dobra. Hvala ti što nisi primitivan i skontao kao uvredu
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!!!
O__o
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.
Da, sigurno ću da koristim ono što vi koristite pa da na 250 igrača mi server ima 40 tickova umesto 120 jer sve gomilate na isti thread kao da imate autizam
Veliki pozdrav za omera i zaru ;)
EDIT: Sada sam pročitao i ostalo proseravanje...
Ja PP koristim samo za dinamične containere jer za sve ostalo koristim YSI jer je PP mnogo sporiji od njega a razlika nije velika osim što containeri dinamično alociraju memoriju i uopšte ne moraš da imaš neku varijablu kreiranu pre nego što ti treba... :)