Szerző Téma: lotto sorsolás  (Megtekintve 1212 alkalommal)

lotto sorsolás
« Dátum: 2012. Május 07. - 11:10:16 »
+1 Show voters
van ez a lotto script:
 
#include <a_samp>
#include <zcmd>
#include< sscanf>
#define yellow                0xFFFF00AA
#define green               0x33FF33AA
#define white               0xFFFFFFAA
#define red                   0xFF0000AA
#define grgreen               0x33AA33AA
#define SORSOLASTIMER          120000     // 2 perc
new bool:SorsJegy[MAX_PLAYERS];
new NyeroSzamok[5][MAX_PLAYERS];
new KisorsoltSzamok[5];
new TimerKill[2];
forward Sorsolas();
public OnFilterScriptInit()
{
TimerKill[0] = SetTimer(\"Sorsolas\", SORSOLASTIMER, 1);
TimerKill[1] = SetTimer(\"LottoHirdetes\", 180000, 1);
return 1;
}
public OnPlayerConnect(playerid)
{
SorsJegy[playerid] = false;
}
 

CMD:gepilotto(playerid,params[])
{
#pragma unused params
new string[128];
if(SorsJegy[playerid] == true) return SendClientMessage(playerid, red, \"Már vettél lottót!\");
if(GetPlayerMoney(playerid) < 100) return SendClientMessage(playerid, red, \"Lottó ára $100, neked nincs annyi pénzed.\");
GivePlayerMoney(playerid, -100);
SorsJegy[playerid] = true;
GepiLottoSzamok(playerid);
format(string, sizeof(string), \"A lottó számaid a következõk: %d, %d, %d, %d, %d\", NyeroSzamok[0][playerid], NyeroSzamok[1][playerid], NyeroSzamok[2][playerid], NyeroSzamok[3][playerid], NyeroSzamok[4][playerid]);
SendClientMessage(playerid, yellow, string);
return 1;
}
CMD:lotto(playerid,params[])
{
if(SorsJegy[playerid] == true) return SendClientMessage(playerid, red, \"Már vettél lottót! /mylotto\");
if(GetPlayerMoney(playerid) < 100) return SendClientMessage(playerid, red, \"Lottó ára $100, neked nincs annyi pénzed.\");
new num[5],string[128];
if(sscanf(params, \"iiiii\",num[0], num[1], num[2], num[3], num[4])) return SendClientMessage(playerid, white, \"HASZNÁLAT: /lotto 5 db[szám] [1-90]\");
for(new p; p < 5; p++) if(num[p] > 90 || num[p] < 1) return SendClientMessage(playerid, white,\"Lottószámokat [1-90] lehet megadni.\");
// Ellenõrzés a megadott számok 1 tõl 45 ig terjednek-e ha nem akkor üzenet kiírása
// A megadott lottószámok összehasonlítása van-e két azonos szám:
/* Ilyen volt:
for(new n = 1; n < 5; n++) if(num[0] == num[n]) return SendClientMessage(playerid, white,\"Nem adhatsz meg egyforma számokat.\");
for(new n = 2; n < 5; n++) if(num[1] == num[n]) return SendClientMessage(playerid, white,\"Nem adhatsz meg egyforma számokat.\");
for(new n = 3; n < 5; n++) if(num[2] == num[n]) return SendClientMessage(playerid, white,\"Nem adhatsz meg egyforma számokat.\");
if(num[3] == num[4]) return SendClientMessage(playerid, white,\"Nem adhatsz meg egyforma számokat.\");*/
// ilyen lett:
for(new f = 0; f < 4; f++) for(new c = f+1; c < 5; c++) { if(num[f] == num[c]) return SendClientMessage(playerid, white,\"Nem adhatsz meg azonos számokat.\");}
NyeroSzamok[0][playerid] = num[0];
NyeroSzamok[1][playerid] = num[1];
NyeroSzamok[2][playerid] = num[2];
NyeroSzamok[3][playerid] = num[3];
NyeroSzamok[4][playerid] = num[4];
GivePlayerMoney(playerid, -100);
SorsJegy[playerid] = true;
format(string, sizeof(string), \"A te lottó számaid a következõk: %d, %d, %d, %d, %d\", NyeroSzamok[0][playerid], NyeroSzamok[1][playerid], NyeroSzamok[2][playerid], NyeroSzamok[3][playerid], NyeroSzamok[4][playerid]);
SendClientMessage(playerid, yellow, string);
return 1;
}
CMD:mylotto(playerid,params[])
{
#pragma unused params
new string[128];
if(SorsJegy[playerid] == false) return SendClientMessage(playerid, red, \"Nem vettél még lottó-t. Vegyél egyet írd be /gepilotto vagy /lotto [$100]\");
format(string, sizeof(string), \"A lottó számaid a következõk: %d, %d, %d, %d, %d\", NyeroSzamok[0][playerid], NyeroSzamok[1][playerid], NyeroSzamok[2][playerid], NyeroSzamok[3][playerid], NyeroSzamok[4][playerid]);
SendClientMessage(playerid, yellow, string);
return 1;
}
CMD:lottotest(playerid,params[])
{
#pragma unused params
if(IsPlayerAdmin(playerid))
{
Sorsolas();
} else SendClientMessage(playerid,red,\"NEM rcon admin vagy.\");
return 1;
}
forward Sorsolas();
public Sorsolas()
{   // lottószám sorsolás:
for(new f = 0; f < 5; f++) KisorsoltSzamok[f] = random(91); // azért 91 mert csak így kapunk 90-es lottószámot mivel a random az 0-tól kezdõdik és akkor pl.:10-es szám már a 11-dik!!!
for(new f = 0; f < 4; f++) for(new c = f+1; c < 5; c++) { if(KisorsoltSzamok[f] == KisorsoltSzamok[c] || KisorsoltSzamok[f] < 1 || KisorsoltSzamok[4] < 1) return Sorsolas(); }
// A kisorsolt számok ellenõrzése egyezés vagy 0 értéknél újra sorsolás.
for(new f = 0; f < 4; f++) for(new c = f+1; c < 5; c++) { if(KisorsoltSzamok[f] == KisorsoltSzamok[c]) return SendClientMessageToAll(red,\"Figyelmeztetés azonos kihúzott lottószámok a sorsolás letiltva.\"); }
// Biztonsági ellenõrzés ha netalán mégis lenne egyezés akkor egy üzenettel letiltás. Újra sorsolni fog ahogy a timeridõzítése megvan adva. Elhanyagolható ez az ellenõrzés.
new Talalat[MAX_PLAYERS], string[128], Name[24];
for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i))
{
if(SorsJegy == true)
{
            for(new f = 0; f < 5; f++) for(new c = 0; c < 5; c++) { if(NyeroSzamok[f] == KisorsoltSzamok[c]) Talalat++;} // Egyezés keresés dupla ciklus segítségével, Egyezésnél: Talalat[playerid] változó értékének növelése.
           
   SendClientMessage(i, red, \" ========= Ötös Lottó 5/90 =========\");
   format(string, sizeof(string), \" A saját lottó számaid: %d, %d, %d, %d, %d\", NyeroSzamok[0], NyeroSzamok[1], NyeroSzamok[2], NyeroSzamok[3], NyeroSzamok[4]);
   SendClientMessage(i, yellow, string);
   format(string, sizeof(string), \" A nyertes lottó számok: %d, %d, %d, %d, %d\", KisorsoltSzamok[0], KisorsoltSzamok[1], KisorsoltSzamok[2], KisorsoltSzamok[3], KisorsoltSzamok[4]);
   SendClientMessage(i, grgreen, string);
   if(Talalat == 0) SendClientMessage(i, grgreen, \" Nem találtál el egy számot se.\");
   if(Talalat == 1) { SendClientMessage(i, grgreen, \" Találatok száma: 1 Nyereményed: $5500\"); GivePlayerMoney(i, 5500); }
   if(Talalat == 2) { SendClientMessage(i, grgreen, \" Találatok száma: 2 Nyereményed: $28000\"); GivePlayerMoney(i, 28000); }
   if(Talalat == 3) { SendClientMessage(i, grgreen, \" Találatok száma: 3 Nyereményed: $173000\"); GivePlayerMoney(i, 173000); }
   if(Talalat == 4) { SendClientMessage(i, grgreen, \" Találatok száma: 4 Nyereményed: $673,000\"); GivePlayerMoney(i, 673000); }
   if(Talalat == 5) {
      SendClientMessage(i, green, \"Teli Találat\");
      SendClientMessage(i, green, \"Nyereményed: $132,000,000\");
      GetPlayerName(i,Name,sizeof Name);
      format(string, sizeof(string),\"%s megnyerte a fõnyereményt $132.000.000.\",Name);
      SendClientMessageToAll(red, string);
      GivePlayerMoney(i, 132000000);
      BanEx(i,\"Ha most igaziból Ötös lottót játszanál akkor full gazdag lehetnél, de ez csak játék.\"); // Kérem a játékos unbannolását. Erre az esély \"1\" az \"5.273.912.160-hoz\" :D
   }
   SendClientMessage(i, red, \" ================================\");
   SorsJegy = false;
}
}
return 1;
}
GepiLottoSzamok(playerid)  // véletlenszerüen megad lottószámokat
{
for(new p = 0; p < 5; p++) NyeroSzamok[p][playerid] = random(91);
for(new f = 0; f < 4; f++) for(new c = f+1; c < 5; c++) { if(NyeroSzamok[f][playerid] == NyeroSzamok[c][playerid] || NyeroSzamok[f][playerid] < 1 || NyeroSzamok[4][playerid] < 1) return GepiLottoSzamok(playerid); }
// Azonosság keresés egyezés és 0 esetén ismétlés.
      for(new f = 0; f < 4; f++) for(new c = f+1; c < 5; c++) { if(NyeroSzamok[f][playerid] == NyeroSzamok[c][playerid]) return SendClientMessageToAll(red,\"Figyelmeztetés azonos gépilottószámok kérlek írd be újra /gepilotto.\"); }
// Biztonsági ellenõrzés ha netalán mégis lenne egyezés akkor egy üzenettel letiltás. Elhanyagolható ez az ellenõrzés.
return 1;
}
forward LottoHirdetes();
public LottoHirdetes()
{
SendClientMessageToAll(yellow,\"Vásárolj lottót a /lotto vagy a /gepilotto parancsal a szerencse bármikor bekopoghat, sorsolás 2 percenként.\");
}
 
public OnFilterScriptExit()
{
for (new p = 0; p < 2; p++) KillTimer(TimerKill[p]);
return 1;
}

 
és az érdekelne hogy valahogy meglehet-e nézni hogy milyen számokat fog kisorsolni

lotto sorsolás
« Válasz #1 Dátum: 2012. Május 07. - 11:24:45 »
0 Show voters
Érdekes, csak tudnám miért kell a készítõ nevét eltüntetni?
Amúgy ebben a verzióban nem lehet elõre tudni mik a nyertes számok, mivel akkor generálja õket, mikor éppen sorsol, sõt egyik verzióban se.
Meg elég sok javítani való is van benne, idõközben kiderült hogy sizeof eljárás funkciókba illesztve az enumerációs változóknál hamis eredményt adhat, ezért fordult elõ dupla azonos szám néha.
« Utoljára szerkesztve: 2012. Május 07. - 11:29:05 írta ɐʞzssǝlosz »

lotto sorsolás
« Válasz #2 Dátum: 2012. Május 07. - 11:35:20 »
+1 Show voters
oké akkor zárom

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal