Bebras prieš 9 metus
Žvelgiant į šią paysera dokumentaciją tau reikės atlikti šiuos veiksmus:
- Pakeisti simbolius "-" į "+", "_" į "/"
- Iškoduoti eilutę, naudojant base64 kodavimą
- Gauti duomenų masyvą iš rezultato, kuris yra URL-encoded parametrų rinkinys
Su PHP tai atrodo taip(taip pat iš paysera dokumentacijos)
$params = array();
parse_str(base64_decode(strtr($_GET['data'], array('-' => '+', '_' => '/'))), $params);
$params
bus užpildytas atkoduotais duomenimis, paysera dokumentacijoje yra ir sąrašas kokie duomenis tam masyve bus, tavo atveju reikalingas sms
:
$amount = $params['amount']/100; // Paysera sumą pateikia centais.
$text= strstr($params['sms'], " "); // Gražins viską NUO ir ĮSKAITANT tarpą
if(text !== false) // Jeigu žinutės tekste buvo rastas tarpas.
$name = trim($text); // $text su tavo pavyzdžiu būtų " erlis", kad atsikratytume tarpų, naudojame trim funkciją.
Bebras prieš 9 metus
Na tau reikės pasižymėti KUR vartotojas užlipo, žinoma tam reikės kokio nors kintamojo:
enum E_KAZKAS
{
Pinigai,
Ginklai,
};
new E_KAZKAS:KaDarytiPasirinkusKazkaTD[MAX_PLAYERS];
public OnPlayerPIckUpPickup(playerid, pickupid)
{
if(pickupid == Pinigupickupas)
{
KaDarytiPasirinkusKazkaTD[playerid] = Pinigai;
ShowTextDrawForPlayer(...);
}
else if(pickupid == GinkluPickupas)
{
KaDarytiPasirinkusKazkaTD = Ginklai;
ShowTextDrawForPlayer(...);
}
}
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(clickedid == tas td)
{
switch(KaDarytiPasirinkusKazkaTD[playerid])
{
case Ginklai: GivePlayerWeapon(playerid, 38, 500);
case Pinigai: GivePlayerMoney(playerid, random(10));
}
}
}
Kintamųjų pavadinimai nekokie, bet esmę turėtum suprasti. Žinoma enum irgi nebūtinas, gali naudoti define arba tiesiog priskirti kokį nors skaičių.
Bebras prieš 9 metus
bool pirminis(int n)
{
int dalikliuKiekis = 0;
for(int i=1; i < n; i++)
{
if (n % i == 0)
{
dalikliuKiekis++;
}
}
if(dalikliuKiekis < 2)
{
return true;
}
else
{
return false;
}
dalikliuKiekis = 0;
}
Bėda čia:
if(dalikliuKiekis < 2)
Visi skaičiai išskyrus vienetą, turi bent du daliklius, t.y. vienetą ir save patį. Tas pats 3
jis dalinasi iš 3
ir iš 1
. Todėl tikrink ar dalikliu kiekis mažesnis ar lygus dviems.
Bebras prieš 9 metus
Apie kokį Test kintamąjį ir kokį padidinimą tu kalbi?
Formatuodamas naudok %f
...kaip ir visiems float tipo kintamiesiems...
Bebras prieš 9 metus
Yra funkcijų tam skirtų:
// Autorius "Simon" iš forum.sa-mp.com
stock Float:floatrandom(Float:max) {
return floatmul(floatdiv(float(random(cellmax)), float(cellmax - 1)), max);
}
Tai tavo komanda atrodytų taip:
CMD:random(playerid)
{
new string[16];
format(string ,sizeof(string), "Gavai %.2f", floatrandom(10.0));
SendClientMessage(playerid, -1, string);
}
Ši komanda duos nedidesnį skaičių nei 10.0.
Bebras prieš 9 metus
Tai į masyvą reikėtų prisidėti kokį nors darbo ID ir žaidėjui bandant atidaryti vartus tikrinti ar jo darbo ID sutampa su tų vartų prie kurių jis stovi.