hlmod.hu
https://hlmod.hu/

Dinamikus array randomizálás adott feltétel alapján
https://hlmod.hu/viewtopic.php?f=9&t=30749
Oldal: 1 / 1

Szerző:  HellEnergY [ 2020.11.30. 02:01 ]
Hozzászólás témája:  Dinamikus array randomizálás adott feltétel alapján

Sziasztok!

Szeretnék kérdezni :xicon_e_biggrin:

Van egy adott dinamikus arrayem amibe beolvasom a skin nevét, elérését, eladási árát, hogy stattrak-e, és hogy hányadik ládából lehet kinyitni.

Ládanyitásnál szeretném randomizálni az adott ládaszám alapján hogy melyik ládából tudja kinyitni a skint.
Tehát van 100 skinem, ebből 20 csak a nulladik ládából nyitható ki az ini alabján, akkor ezeket hogyan tudom randomizáni?

Azért kérdezem mert az a 20 skin össze-vissza van az iniben, tehát lehet az első nulladik ládaskin az 5. elem, a második 0. ládaskin pedig 12. elem stb.

Valaki valami ötlet, hogyan lehetne ezt randomizálni?
Remélem érthetően megfogalmaztam mit szeretnék :lol:

Talán begyűjteni egy x nagyságú int tömbbe az elemeket és azt randomizáni, nem 0tól, hanem hogy az elemek közül random dobjon egy számot?
Tehát 5.elem, 12. elem belekerülne és aközött választana random egyet.
Ha így lehet, akkor a tömbből az elemek között hogy lehet randomizálni ?

UI: lényegretörőbb nevet nem találtam ki bocsánat!

Megoldva!
  1. public p_findskin(id, iNum)
  2. {
  3.     new eData[eReadWeap_Prop];
  4.     new iChestNum = -1, iCount;
  5.     new Array:aRandomArray;
  6.     aRandomArray = ArrayCreate(1);
  7.     new iSize = 0;
  8.  
  9.     switch(iNum)
  10.     {
  11.         case 0:
  12.         {
  13.             for(new i = 0; i < g_iLoadedSkins; i++)
  14.             {
  15.                 ArrayGetArray(g_aReadWeap, i, eData);
  16.                 iChestNum = str_to_num(eData[r_WeaponChest]);
  17.                
  18.                 if(iChestNum == 0)
  19.                 {
  20.                     ArrayPushCell(aRandomArray, i);
  21.                     iCount++;
  22.                 }
  23.             }
  24.  
  25.             iSize = random(iCount);
  26.             new iRnd = ArrayGetCell(aRandomArray, iSize);
  27.  
  28.             g_iAllSkins[id][iRnd]++;
  29.             ArrayGetArray(g_aReadWeap, iRnd, eData);
  30.             client_print_color(id, print_team_default, "%s Nyitottál az ^3Ezüst^1 ládából egy %s skint.", cChatPrefix, eData[r_WeaponName]);
  31.         }
  32.         case 1:
  33.         {
  34.             for(new i = 0; i < g_iLoadedSkins; i++)
  35.             {
  36.                 ArrayGetArray(g_aReadWeap, i, eData);
  37.                 iChestNum = str_to_num(eData[r_WeaponChest]);
  38.                
  39.                 if(iChestNum == 1)
  40.                 {
  41.                     ArrayPushCell(aRandomArray, i);
  42.                     iCount++;
  43.                 }
  44.             }
  45.  
  46.             iSize = random(iCount);
  47.             new iRnd = ArrayGetCell(aRandomArray, iSize);
  48.  
  49.             g_iAllSkins[id][iRnd]++;
  50.             ArrayGetArray(g_aReadWeap, iRnd, eData);
  51.             client_print_color(id, print_team_default, "%s Nyitottál az ^3Arany^1 ládából egy %s skint.", cChatPrefix, eData[r_WeaponName]);
  52.         }
  53.         case 2:
  54.         {
  55.             for(new i = 0; i < g_iLoadedSkins; i++)
  56.             {
  57.                 ArrayGetArray(g_aReadWeap, i, eData);
  58.                 iChestNum = str_to_num(eData[r_WeaponChest]);
  59.                
  60.                 if(iChestNum == 2)
  61.                 {
  62.                     ArrayPushCell(aRandomArray, i);
  63.                     iCount++;
  64.                 }
  65.             }
  66.  
  67.             iSize = random(iCount);
  68.             new iRnd = ArrayGetCell(aRandomArray, iSize);
  69.  
  70.             g_iAllSkins[id][iRnd]++;
  71.             ArrayGetArray(g_aReadWeap, iRnd, eData);
  72.             client_print_color(id, print_team_default, "%s Nyitottál a ^3Gyémánt^1 ládából egy %s skint.", cChatPrefix, eData[r_WeaponName]);
  73.         }
  74.  
  75.     }
  76.     ArrayDestroy(aRandomArray);
  77. }



Hátha valaki majd hasznát veszi

Oldal: 1 / 1 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/