Valóban sokkal egyszerûbben meg lehet oldani íme megírtam én is egy változatot, és nem teszteltem bízok annyira magamban hogy mûködik gond nélkül, persze a túlzott mennyiségû használt filterscript esetében 99.9% az esély arra hogy a beírt parancs nem mûködik.
(ezért javaslom meglévõ gamemódba helyezni annak aki használni kívánja, egyetlen egy parancsért egy darab filterscript az túlzás)
Íme:
#include <a_samp>
#define DIALOG_SCORE 6678
public
OnFilterScriptInit()
{
print(\"Készítõ neve és funkciójának megfelelõ filterscript név.\");
return 1;
}
public
OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(\"/score\", cmdtext, true) == 0)
{
ShowPlayerDialog(playerid, DIALOG_SCORE, DIALOG_STYLE_LIST, \"Pont vétel:\",\"\\
1 pont [10000$]\\n\\
2 pont [20000$]\\n\\
3 pont [30000$]\\n\\
4 pont [40000$]\\n\\
5 pont [50000$]\\n\\
6 pont [60000$]\\n\\
7 pont [70000$]\\n\\
8 pont [80000$]\\n\\
9 pont [90000$]\\n\\
10 pont [100000$]\",
\"Megvesz\", \"Mégse\");
return 1;
}
return 0;
}
public
OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_SCORE)
{
if(response)
{
new
price = 10000 * (listitem + 1), // tároljuk a price változóban azt hogy mennyibe kerül a kiválasztott score ez esetben szerencsénk van mivel 10 ezresenként növekszik az ára, így csak szorozni kell.
str[64];
if(GetPlayerMoney(playerid) < price)
{
format(str, sizeof str, \"%d score pont megvételéhez %d$ kell és neked nincs ennyi!\", (listitem + 1), price);
SendClientMessage(playerid, 0x0000FFAA, str);
} else {
SetPlayerScore(playerid, GetPlayerScore(playerid) + listitem + 1);
GivePlayerMoney(playerid, -price);
format(str, sizeof str, \"Vettél %d pontot magadnak. %d$ -ért\", listitem + 1, price);
SendClientMessage(playerid, 0xFF0000FF, str);
}
}
return 1;
}
return 0;
}
Természetesen ez esetben óriási szerencse hogy a score pontok ára 10 ezres nagyságrendekkel növekszik, így csak szorozni kell.
Viszont ez nem azt jelenti hogy csak így lehet megoldani mint látni lehet sokaknak más elképzelése van, csak egy ilyen egyszerû dolog esetében is.
Kicsit átláthatóbb formába próbáltam tenni, emellett minden meglévõ tulajdonságot megõrizni is, (kevés pénz esetében kiírni mennyibe kerül a kiválasztott score, tájékoztatni a játékost arról mit is vett meg és mennyiért) remélem sikerült.
Edit: jha igen és a biztató szavak, csak így tovább lesz ez még jobb is.