Ednostaven Matematika SIS

ZeXn.pwn Započeo Smith.amx
pre 5 godina
12,147
pregleda
86
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
ZeXn.pwn
Wheel Man
pre 5 godina
Tip: FS
Slike ili Video: Testiraj (Sta da slikam nz ..)
Opis i dodatne informacije: //
Download link: https://pastebin.com/DsE1Ah5T
Scan link: pastebin
Credits: ME
XACK
Hustler
pre 5 godina
Broj od 1 pa do 3 uopste ne trebas cuvati ni dodeljivati memoriju, jer igrac pogadja samo rezultat, a brojeve formatiraj lokalno.
tajmervreme takodje bespotrebno mada ako vec hoces definisi ga s #define.
Takodje bih ti preporucio da poradis na imenovanju varijabli i funkciju da to ima neku povezanost i da znas da su deo tog odredjenog sistema.
Bilo bi dobro da raslojavas provere da na primer ako kviz nije aktivan da uopste ne poziva strval.
GetPlayerName bi mogao pozvati samo pri konekciji igraca i onda koristiti sacuvano ime i update ga ako se slucajno promeni.
Kada saljes ClientMessage igracima ne moras na pocetak stringa dodavati {NEKA BOJA} vec samo iskoristi parametar iz funkcije koja ce sama na pocetak ubaciti boju.

Ovo su samo saveti koji se ne bi trebali smatrati kao uvreda vec nesto sto bi pomoglo nekome ko pravi slicne greske u nekim vecim stvarima.
Gospodin Leo
Enforcer
pre 5 godina
Kao što ti je rekao Xack, moraš poraditi na kodu. Napravio sam ti jedan primjer dole pa ako želiš pogledaj, također sam malo uredio tvoju skriptu ako netko želi koristiti. Nisam testirao niti compile jer nemam samp ni' pawno, ako netko želi koristiti a ima nekih grešaka neka mi se obrati preko PM-a.

Pastebin.
#include 
#include
#include

#define COLOR_WHITE (0xFFFFFFAA)

enum E_MATH_TEST {
m_result,
m_reward,
bool: m_active
}
new MathTest;

public OnGameModeInit() {

// reset math-test
    MathTest = (0);
MathTest = (false);
MathTest = (0);

return (true);
}

public OnPlayerText(playerid, text[]) {
if(strval(text) == MathTest && MathTest == (true)) {
new tmpString;

        format(tmpString, sizeof(tmpString), "[MATH-TEST]: Odgovorili ste tocno na math-pitanje (rezultat: %d) i zaradili ste %d$.", MathTest, MathTest);
        SendClientMessageToAll(COLOR_WHITE, (tmpString));

        GivePlayerMoney(playerid, MathTest);

    MathTest = (0);
MathTest = (false);
MathTest = (0);
    }
    return (true);
}

CMD:math(playerid, params[]) {

    if (!IsPlayerAdmin(playerid))
    return SendClientMessage(playerid, COLOR_WHITE, "Ne mozete koristiti ovu komandu.");

new reward;
if(sscanf(params, "d", reward))
return SendClientMessage(playerid, COLOR_WHITE, ": /math .");

new tmpString,
num1 = (0), num2 = (0), num3 = (0);
MathTest = (num1 = random(100)) + (num2 = random(100))-(num3 = random(100));
MathTest = (true);
MathTest = (reward);

format(tmpString, sizeof(tmpString), "[MATH-TEST]: Unesite rezultat od (%d+%d-%d), nagrada iznosi %d$.", num1, num2, num3, MathTest);
    SendClientMessageToAll(COLOR_WHITE, (tmpString));

return (true);
}
inquisitiveemmett
Shot Caller
pre 5 godina
L3o wrote on August 12, 2020, 12:26 am:
Kao što ti je rekao Xack, moraš poraditi na kodu. Napravio sam ti jedan primjer dole pa ako želiš pogledaj, također sam malo uredio tvoju skriptu ako netko želi koristiti. Nisam testirao niti compile jer nemam samp ni' pawno, ako netko želi koristiti a ima nekih grešaka neka mi se obrati preko PM-a.

Pastebin.
#include 
#include
#include

#define COLOR_WHITE (0xFFFFFFAA)

enum E_MATH_TEST {
m_result,
m_reward,
bool: m_active
}
new MathTest;

public OnGameModeInit() {

// reset math-test
    MathTest = (0);
MathTest = (false);
MathTest = (0);

return (true);
}

public OnPlayerText(playerid, text[]) {
if(strval(text) == MathTest && MathTest == (true)) {
new tmpString;

        format(tmpString, sizeof(tmpString), "[MATH-TEST]: Odgovorili ste tocno na math-pitanje (rezultat: %d) i zaradili ste %d$.", MathTest, MathTest);
        SendClientMessageToAll(COLOR_WHITE, (tmpString));

        GivePlayerMoney(playerid, MathTest);

    MathTest = (0);
MathTest = (false);
MathTest = (0);
    }
    return (true);
}

CMD:math(playerid, params[]) {

    if (!IsPlayerAdmin(playerid))
    return SendClientMessage(playerid, COLOR_WHITE, "Ne mozete koristiti ovu komandu.");

new reward;
if(sscanf(params, "d", reward))
return SendClientMessage(playerid, COLOR_WHITE, ": /math .");

new tmpString,
num1 = (0), num2 = (0), num3 = (0);
MathTest = (num1 = random(100)) + (num2 = random(100))-(num3 = random(100));
MathTest = (true);
MathTest = (reward);

format(tmpString, sizeof(tmpString), "[MATH-TEST]: Unesite rezultat od (%d+%d-%d), nagrada iznosi %d$.", num1, num2, num3, MathTest);
    SendClientMessageToAll(COLOR_WHITE, (tmpString));

return (true);
}


A šta kažeš na ovo? Nisam 100% prepravio kod naravno, mrzelo me, nemam živaca da radim, malo sam ga samo sredio i tjt.
Btw pola od ovoga ja ne koristim tako daa...

#include
#include
#include

enum E_MATH_TEST
{
m_result,
m_reward,

bool: m_active
};

new MathTest;

public OnGameModeInit()
{
// reset math-test
MathTest = false;
MathTest =
MathTest = 0;

return 1;
}

public OnPlayerText(playerid, text[])
{
if(strval(text) == MathTest && MathTest)
{
new tmpString;

format(
tmpString, sizeof(tmpString),
"[MATH-TEST]: Odgovorili ste tocno na math-pitanje (rezultat: %d) i zaradili ste %d$.",
MathTest, MathTest
);
SendClientMessageToAll(-1, (tmpString));

GivePlayerMoney(playerid, MathTest);

MathTest = false;
MathTest =
MathTest = 0;
}

return 1;
}

CMD:math(playerid, const params[])
{
if (!IsPlayerAdmin(playerid))
return SendClientMessage(playerid, -1, "Ne mozete koristiti ovu komandu.");

if (isnull(params))
return SendClientMessage(playerid, -1, ": /math .");

new
tmpString,

num1 = 0,
num2 = 0,
num3 = 0;

MathTest = (num1 = random(100)) + (num2 = random(100)) - (num3 = random(100));
MathTest = reward;
MathTest = true;

format(tmpString, sizeof(tmpString), "[MATH-TEST]: Unesite rezultat od (%d+%d-%d), nagrada iznosi %d$.", num1, num2, num3, MathTest);
SendClientMessageToAll(-1, (tmpString));

return 1;
}
XACK
Hustler
pre 5 godina
Totalno odudarate od koncepta koji je ovaj covek odradio.
Dzaba vam rad na drugaciji nacin ako ne pratite sta i kako radite.

Ako je filterskripta onda se po tom formatu i radi, callback break nedostaje, bespotrebne inicijalizacije, bespotrebno includanje sscanfa, da ne nabrajam dalje.

#define FILTERSCRIPT

/*
    @Dependencies
*/

#include
#include

/*
    @Configuration
*/

#define MATH_TEST_AUTOTIME (15)
#define MATH_TEST_AUTOREWARD (5000)

/*
    @Data
*/

enum E_MATH_TEST
{
m_result,
m_reward,
bool: m_active
};

new MathTest;

/*
@Prototypes
*/

forward MathTest_Auto();
stock MathTest_Start(reward);

/*
    @Native callbacks
*/

public OnFilterScriptInit()
{
SetTimer("MathTest_Auto", 60000 * MATH_TEST_AUTOTIME, true);
return 1;
}

public OnPlayerText(playerid, text[])
{
if(MathTest)
{
    if(strval(text) == MathTest)
{
new tmpString;

GetPlayerName(playerid, tmpString);

format(
tmpString, sizeof tmpString,
": %s je prvi dao tacan odgovor (rezultat: %d | nagrada: %d$)",
tmpString, MathTest, MathTest
);
SendClientMessageToAll(-1, tmpString);

GivePlayerMoney(playerid, MathTest);

MathTest = false;
MathTest =
MathTest = 0;
return 0;
}
}
return 1;
}
/*
    @Function bodies
*/
stock MathTest_Start(reward)
{
if(reward < 0)
{
    return 0;
}
new
tmpString,
num;

MathTest = (num = random(100)) + (num = random(100)) - (num = random(100));
MathTest = reward;
MathTest = true;

format(
tmpString, sizeof tmpString,
": Izracunajte (%d+%d-%d), nagrada iznosi %d$.",
  num, num, num, MathTest
  );
SendClientMessageToAll(-1, tmpString);
return 1;
}

public MathTest_Auto()
{
MathTest_Start(MATH_TEST_AUTOREWARD);
return 1;
}

/*
    @gяєєη ∂αу area
*/

CMD:math(playerid, const params[])
{
if(!IsPlayerAdmin(playerid))
{
return SendClientMessage(playerid, -1, "Ne mozete koristiti ovu komandu.");
}

if(isnull(params))
{
return SendClientMessage(playerid, -1, ": /math .");
}

MathTest_Start(strval(params));

return 1;
}
inquisitiveemmett
Shot Caller
pre 5 godina
XACK wrote on August 12, 2020, 9:53 am:
Totalno odudarate od koncepta koji je ovaj covek odradio.
Dzaba vam rad na drugaciji nacin ako ne pratite sta i kako radite.

Ako je filterskripta onda se po tom formatu i radi, callback break nedostaje, bespotrebne inicijalizacije, bespotrebno includanje sscanfa, da ne nabrajam dalje.

#define FILTERSCRIPT

/*
    @Dependencies
*/

#include
#include

/*
    @Configuration
*/

#define MATH_TEST_AUTOTIME (15)
#define MATH_TEST_AUTOREWARD (5000)

/*
    @Data
*/

enum E_MATH_TEST
{
m_result,
m_reward,
bool: m_active
};

new MathTest;

/*
@Prototypes
*/

forward MathTest_Auto();
stock MathTest_Start(reward);

/*
    @Native callbacks
*/

public OnFilterScriptInit()
{
SetTimer("MathTest_Auto", 60000 * MATH_TEST_AUTOTIME, true);
return 1;
}

public OnPlayerText(playerid, text[])
{
if(MathTest)
{
    if(strval(text) == MathTest)
{
new tmpString;

GetPlayerName(playerid, tmpString);

format(
tmpString, sizeof tmpString,
": %s je prvi dao tacan odgovor (rezultat: %d | nagrada: %d$)",
tmpString, MathTest, MathTest
);
SendClientMessageToAll(-1, tmpString);

GivePlayerMoney(playerid, MathTest);

MathTest = false;
MathTest =
MathTest = 0;
return 0;
}
}
return 1;
}
/*
    @Function bodies
*/
stock MathTest_Start(reward)
{
if(reward < 0)
{
    return 0;
}
new
tmpString,
num;

MathTest = (num = random(100)) + (num = random(100)) - (num = random(100));
MathTest = reward;
MathTest = true;

format(
tmpString, sizeof tmpString,
": Izracunajte (%d+%d-%d), nagrada iznosi %d$.",
  num, num, num, MathTest
  );
SendClientMessageToAll(-1, tmpString);
return 1;
}

public MathTest_Auto()
{
MathTest_Start(MATH_TEST_AUTOREWARD);
return 1;
}

/*
    @gяєєη ∂αу area
*/

CMD:math(playerid, const params[])
{
if(!IsPlayerAdmin(playerid))
{
return SendClientMessage(playerid, -1, "Ne mozete koristiti ovu komandu.");
}

if(isnull(params))
{
return SendClientMessage(playerid, -1, ": /math .");
}

MathTest_Start(strval(params));

return 1;
}

Ja sam rekao da nisam skroz sredio kod, samo ga malo sredio, uredio, i to, ništa ga nisam optimizovao i to. Tako da..
XACK
Hustler
pre 5 godina
inquisitiveemmett wrote on August 12, 2020, 10:08 am:
Ja sam rekao da nisam skroz sredio kod, samo ga malo sredio, uredio, i to, ništa ga nisam optimizovao i to. Tako da..

Problem je sto si ga jos vise zabrljavio, tj. ni ne moze se compile, komanda bi primala prazne parametre, nema returna u OPT itd..
Alhemičar v2
Shot Caller
pre 5 godina
Ja ću samo reći da se funkcija uvek piše ovako
main()
{
return;
}


Bez obzira da li se koristi ALLMAN ili K&R (ovako i jeste pravilno u K&Ru bez obzira što inače curly bracket ide u isti red u drugim slučajevima)

EDIT: Što se samog sistema tiče (ne pričam o kodu ne loži se) je mnogo jednostavan tako da sumnjam da bi bilo gde imao primenu kada je uvek nesto+nesto-nesto...
inquisitiveemmett
Shot Caller
pre 5 godina
XACK wrote on August 12, 2020, 10:12 am:
Problem je sto si ga jos vise zabrljavio, tj. ni ne moze se compile, komanda bi primala prazne parametre, nema returna u OPT itd..

Šta pričaš ti? Isto si uradio komandu kao i ja samo što si one stvari dole pobacao u funkciju i to je to  😕
EDIT: I dodao

// Umesto ovoga (mog)
if (!IsPlayerAdmin(playerid))
return SendClientMessage(playerid, -1, "Ne mozete koristiti ovu komandu.");

if (isnull(params))
return SendClientMessage(playerid, -1, ": /math .");

// Si dodao ovo
if(!IsPlayerAdmin(playerid))
{
return SendClientMessage(playerid, -1, "Ne mozete koristiti ovu komandu.");
}

if(isnull(params))
{
return SendClientMessage(playerid, -1, ": /math .");
}


Ne bodi se više pls

EDIT 2: Ja sam samo uredio kod, nisam ga ništa dodavao/oduzimao osim što sam obrisao COLOR_WHITE i zamenio sa -1...  🙄 Tako da, nije moj problem što neće da se compile, ne nameravam da sređujem tuđe kodove baš
XACK
Hustler
pre 5 godina
inquisitiveemmett wrote on August 12, 2020, 11:01 am:
Šta pričaš ti? Isto si uradio komandu kao i ja samo što si one stvari dole pobacao u funkciju i to je to  😕
EDIT: I dodao

// Umesto ovoga (mog)
if (!IsPlayerAdmin(playerid))
return SendClientMessage(playerid, -1, "Ne mozete koristiti ovu komandu.");

if (isnull(params))
return SendClientMessage(playerid, -1, ": /math .");

// Si dodao ovo
if(!IsPlayerAdmin(playerid))
{
return SendClientMessage(playerid, -1, "Ne mozete koristiti ovu komandu.");
}

if(isnull(params))
{
return SendClientMessage(playerid, -1, ": /math .");
}


Ne bodi se više pls

EDIT 2: Ja sam samo uredio kod, nisam ga ništa dodavao/oduzimao osim što sam obrisao COLOR_WHITE i zamenio sa -1...  🙄 Tako da, nije moj problem što neće da se compile, ne nameravam da sređujem tuđe kodove baš


Gle, prvenstveno, ovaj lik nije uopste napravio komandu vec tajmer koji automatski pokrece kviz svakih 15 minuta.
Ti si onda dosao i stavio komandu takvu da kada je upises uvek ce se slati prazan parametar.
Zapeo si za komandu, a ostalo nisi ni video gde si pogresio.
Navikli ste da includovi rade za vas, a sami ne znate proste stvari uraditi.

Svadje bez pls  😛
inquisitiveemmett
Shot Caller
pre 5 godina
XACK wrote on August 12, 2020, 11:20 am:
Gle, prvenstveno, ovaj lik nije uopste napravio komandu vec tajmer koji automatski pokrece kviz svakih 15 minuta.
Ti si onda dosao i stavio komandu takvu da kada je upises uvek ce se slati prazan parametar.
Zapeo si za komandu, a ostalo nisi ni video gde si pogresio.
Navikli ste da includovi rade za vas, a sami ne znate proste stvari uraditi.

Svadje bez pls  😛

Šta sam ja pogrešio ostalo kad nisam ništa radio osim kao što sam rekao promenio color white u -1 i rokao new line ??
XACK
Hustler
pre 5 godina
inquisitiveemmett wrote on August 12, 2020, 11:25 am:
Šta sam ja pogrešio ostalo kad nisam ništa radio osim kao što sam rekao promenio color white u -1 i rokao new line ??

Samim tim sto si odobrio pisanje takvog koda te kritikujuci mene za komandu na kojoj si ti napravio gresku.
Jeste da si sredio imenovanje, ali ostalo je isto kao kod ovog lika.
inquisitiveemmett
Shot Caller
pre 5 godina
XACK wrote on August 12, 2020, 11:27 am:
Samim tim sto si odobrio pisanje takvog koda te kritikujuci mene za komandu na kojoj si ti napravio gresku.
Jeste da si sredio imenovanje, ali ostalo je isto kao kod ovog lika.

Njegov kod sam editovao :=



L3o wrote on August 12, 2020, 12:26 am:
Kao što ti je rekao Xack, moraš poraditi na kodu. Napravio sam ti jedan primjer dole pa ako želiš pogledaj, također sam malo uredio tvoju skriptu ako netko želi koristiti. Nisam testirao niti compile jer nemam samp ni' pawno, ako netko želi koristiti a ima nekih grešaka neka mi se obrati preko PM-a.

Pastebin.
#include 
#include
#include

#define COLOR_WHITE (0xFFFFFFAA)

enum E_MATH_TEST {
m_result,
m_reward,
bool: m_active
}
new MathTest;

public OnGameModeInit() {

// reset math-test
    MathTest = (0);
MathTest = (false);
MathTest = (0);

return (true);
}

public OnPlayerText(playerid, text[]) {
if(strval(text) == MathTest && MathTest == (true)) {
new tmpString;

        format(tmpString, sizeof(tmpString), "[MATH-TEST]: Odgovorili ste tocno na math-pitanje (rezultat: %d) i zaradili ste %d$.", MathTest, MathTest);
        SendClientMessageToAll(COLOR_WHITE, (tmpString));

        GivePlayerMoney(playerid, MathTest);

    MathTest = (0);
MathTest = (false);
MathTest = (0);
    }
    return (true);
}

CMD:math(playerid, params[]) {

    if (!IsPlayerAdmin(playerid))
    return SendClientMessage(playerid, COLOR_WHITE, "Ne mozete koristiti ovu komandu.");

new reward;
if(sscanf(params, "d", reward))
return SendClientMessage(playerid, COLOR_WHITE, ": /math .");

new tmpString,
num1 = (0), num2 = (0), num3 = (0);
MathTest = (num1 = random(100)) + (num2 = random(100))-(num3 = random(100));
MathTest = (true);
MathTest = (reward);

format(tmpString, sizeof(tmpString), "[MATH-TEST]: Unesite rezultat od (%d+%d-%d), nagrada iznosi %d$.", num1, num2, num3, MathTest);
    SendClientMessageToAll(COLOR_WHITE, (tmpString));

return (true);
}
XACK
Hustler
pre 5 godina
inquisitiveemmett wrote on August 12, 2020, 11:30 am:
Njegov kod sam editovao :=



Svejedno je ciji je, ne radi kako bi trebalo da radi.
inquisitiveemmett
Shot Caller
pre 5 godina
XACK wrote on August 12, 2020, 11:33 am:
Svejedno je ciji je, ne radi kako bi trebalo da radi.

Pa to nije moj problem, nisam ja sjebao kod jer ga nisam ni radio, sjebao ga je L3o i ovaj što ga je napravio i objavio.. Ja niti imam samp na ovom kompu, niti gta, niti compiler, nemam baš ništa tako da me realno ne interesuje šta su radili, ja sam samo pokazao kako bi bilo da malo promeni stil pisanja koda, ništa više, ništa. Tako da nema potrebe da mi pričaš da ništa ne znam i tako to slično, et...

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava