Szerző Téma: Reaction test,ha nem oldják meg új indul  (Megtekintve 750 alkalommal)

Reaction test,ha nem oldják meg új indul
« Dátum: 2014. január 26. - 18:12:44 »
0 Show voters
Azt kéne megcsinálni ha senki nem oldja meg a reakció tesztet akkor kiirja hogy mivel senki nem oldotta meg a reakció tesztet új indul x idõ múlva
itt a kód
[pawn]#include <a_samp>
#define TIMING 120 // hány másodpercenként adjon új feladatot
#define wMAX 5000 // A megnyerhetõ összeg felsõ határa
#define wMIN 1000 // A megnyerhetõ összeg alsó határa [NEM LEHET 0]
#define rdiff 10 // A beírandó szöveg hosszúsága (MAX 64)
#define sMAX 3 //A megnyerhetõ pont felsõ határa
#define sMIN 1 // A megnyerhetõ pont alsó határa
#define INVALID_NAME \"¢°²`ÿ\"
new rtimer,rtick,rname[MAX_PLAYER_NAME],rtask[64],rwin,rswin;
public OnFilterScriptInit()
{
print(\"\\n..loading-----------------------------\");
rname = INVALID_NAME;
rtick = 0;
rwin = 0;
rtimer = SetTimer(\"StartReact\",1000*TIMING,true);
print(\"- eReaction -  Epsilon\'s Reaction Tester\");
print(\"-------------------------------loaded.\\n\");
return 1;
}
public OnFilterScriptExit()
{
print(\"\\n..loading-----------------------------\");
print(\"- eReaction -  Epsilon\'s Reaction Tester\");
    KillTimer(rtimer);
print(\"-----------------------------unloaded.\\n\");
return 1;
}
forward StartReact();
public StartReact()
{
if(rwin!=0) return 0;
KillTimer(rtimer);
new str[160];
format(rtask,sizeof(rtask),\"1\",0);
rwin = random(wMAX-wMIN)+wMIN;
rswin = random(sMAX-sMIN)+sMIN;
rname = INVALID_NAME;
rtick = 0;
for(new i = 0; i < rdiff; i++) if(i%2) rtask = 65+random(90-65); else rtask = 97+random(122-97);

SendClientMessageToAll(0xADF200FF,\"Reakció teszt! {F7E600}Aki a {E9FF00}leggyorsabban {F7E600}beírja az alábbi {0098E5}feladatot {F7E600}megnyerheti a {F27100}nyereményt{F7E600}!\");


format(str,160,\"{F27100}nyeremény{F7E600}: {FFFFFF}%d$,%d Pont{FF0000}| {0098E5}feladat{F7E600}: {FFFFFF}%s\",rwin,rswin,rtask);


SendClientMessageToAll(0xFFFFFFFF,str);


rtick = GetTickCount();


return 0;


}


public OnPlayerText(playerid, text[])


{


    if(rwin != 0)


{


    if(!strcmp(text,rtask))


    {


        if(!strcmp(rname,INVALID_NAME))


        {


               new str[128];


            format(str,128,\"{FFD700}%s\",rtask);


            SendPlayerMessageToAll(playerid,str);


            str = \"\\0\";


            GetPlayerName(playerid,str,MAX_PLAYER_NAME);


            GivePlayerMoney(playerid,rwin);


            SetPlayerScore(playerid, GetPlayerScore(playerid) + rswin);


            format(str,128,\"{0098E5}%s megnyerte a {F27100}%d dollárt,%d pontot{0098E5}! ({F27100}%.2f másodperc{0098E5})\",str,rwin,rswin,float((GetTickCount()-rtick)/1000));


            SendClientMessageToAll(0xFFFFFFFF,str);


            rwin = 0;


            rswin = 0;


            rtimer = SetTimer(\"StartReact\",1000*TIMING,false);


               return 0;


            }


        }


    }


return 1;


}


public OnPlayerCommandText(playerid, cmdtext[])


{


if (strcmp(\"/startrtest\", cmdtext, true) == 0) if(IsPlayerAdmin(playerid))


{


   StartReact();


   return 1;


}


return 0;


}[/pawn]


már próbálkoztam de nem sikerült :(

Nem elérhető Lucio

  • 232
    • Profil megtekintése
Reaction test,ha nem oldják meg új indul
« Válasz #1 Dátum: 2014. január 26. - 20:09:18 »
0 Show voters
Ennek jónak kell lennie
 
#include <a_samp>
#define TIMING 120 // hány másodpercenként adjon új feladatot
#define wMAX 5000 // A megnyerhetõ összeg felsõ határa
#define wMIN 1000 // A megnyerhetõ összeg alsó határa [NEM LEHET 0]
#define rdiff 10 // A beírandó szöveg hosszúsága (MAX 64)
#define sMAX 3 //A megnyerhetõ pont felsõ határa
#define sMIN 1 // A megnyerhetõ pont alsó határa
#define INVALID_NAME \"¢°²`ÿ\"
new rtimer,rtick,rname[MAX_PLAYER_NAME],rtask[64],rwin,rswin, bool:megfejtve = false, CheckTimer;
public OnFilterScriptInit()
{
        print(\"\\n..loading-----------------------------\");
        rname = INVALID_NAME;
        rtick = 0;
        rwin = 0;
        rtimer = SetTimer(\"StartReact\",1000*TIMING,true);
        print(\"- eReaction -  Epsilon\'s Reaction Tester\");
        print(\"-------------------------------loaded.\\n\");
        return 1;
}
public OnFilterScriptExit()
{
        print(\"\\n..loading-----------------------------\");
        print(\"- eReaction -  Epsilon\'s Reaction Tester\");
    KillTimer(rtimer);
        print(\"-----------------------------unloaded.\\n\");
        return 1;
}
forward StartReact();
public StartReact()
{
        if(rwin!=0) return 0;
megfejtve = false;
CheckTimer = SetTimer(\"CheckFejtes\", 60000 * 5, 0); //5 perc múlva megvizsgálja, hogy beírta-e valaki
        KillTimer(rtimer);
        new str[160];
        format(rtask,sizeof(rtask),\"1\",0);
        rwin = random(wMAX-wMIN)+wMIN;
        rswin = random(sMAX-sMIN)+sMIN;
        rname = INVALID_NAME;
        rtick = 0;
        for(new i = 0; i < rdiff; i++) if(i%2) rtask = 65+random(90-65); else rtask = 97+random(122-97);
        SendClientMessageToAll(0xADF200FF,\"Reakció teszt! {F7E600}Aki a {E9FF00}leggyorsabban {F7E600}beírja az alábbi {0098E5}feladatot {F7E600}megnyerheti a {F27100}nyereményt{F7E600}!\");
        format(str,160,\"{F27100}nyeremény{F7E600}: {FFFFFF}%d$,%d Pont{FF0000}| {0098E5}feladat{F7E600}: {FFFFFF}%s\",rwin,rswin,rtask);
        SendClientMessageToAll(0xFFFFFFFF,str);
        rtick = GetTickCount();
        return 0;
}
forward CheckFejtes();
public CheckFejtes()
{
if(megfejtve == false)
{
SendClientMessageToAll(-1, \"Mivel senki nem fejtette meg a reakciótesztet ezért 1 perc múlva újraindul.\");
SetTimer(\"StartReact\", 60000, false);
}
return 1;
}
public OnPlayerText(playerid, text[])
{
    if(rwin != 0)
        {
            if(!strcmp(text,rtask))
            {
                if(!strcmp(rname,INVALID_NAME))
                {
                            new str[128];
                                        format(str,128,\"{FFD700}%s\",rtask);
                                        SendPlayerMessageToAll(playerid,str);
                                        str = \"\\0\";
                                        GetPlayerName(playerid,str,MAX_PLAYER_NAME);
                                        GivePlayerMoney(playerid,rwin);
                                        SetPlayerScore(playerid, GetPlayerScore(playerid) + rswin);
                                        format(str,128,\"{0098E5}%s megnyerte a {F27100}%d dollárt,%d pontot{0098E5}! ({F27100}%.2f másodperc{0098E5})\",str,rwin,rswin,float((GetTickCount()-rtick)/1000));
                                        SendClientMessageToAll(0xFFFFFFFF,str);
                        megfejtve = true;
                        KillTimer(CheckTimer); // Mivel megoldotta valaki, leállítjuk a timert.
                                        rwin = 0;
                                        rswin = 0;
                                        rtimer = SetTimer(\"StartReact\",1000*TIMING,false);
                            return 0;
            }
        }
    }
        return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
        if (strcmp(\"/startrtest\", cmdtext, true) == 0) if(IsPlayerAdmin(playerid))
        {
                StartReact();
                return 1;
        }
        return 0;
}

Reaction test,ha nem oldják meg új indul
« Válasz #2 Dátum: 2014. január 29. - 22:56:41 »
0 Show voters
addig jó hogy 5perc múlva kiirja nem oldották meg és új indul de 10 perc múlva se indult új :S

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal