-
Sziasztok, igen tudom-tudom, hogy már kezdtek engemet is unni. :facepalm:
Nah de térjünk is a lényegre, mint ahogy a címben látható olyan scriptért fordulok most felétek aminek a lényege pénz adás. Csak annyi kell még pluszba, hogy a parancs így nézzen ki: /penz [id/név] [összeg] [paraméter] paraméterei a téma címben is látható gondolom ez egyértelmű. + : hozzá ad, - : elvesz, = : annyira rakja
Ha ez segít így kéri le, hogy a játékos admin-e: [pawn]if(JatekosInfo[playerid][AdminSzint] >= 6)[/pawn]
ahogy pénzt ad neki: [pawn]JatekosInfo[playerid][Penz] +=500[/pawn] ide most csak beírtam valamit.
Előre is köszönöm.
-
Szia, nem akarlak téged bántani, meg semmi, de ha mindig tőlünk kérdezel dolgokat, soha semmit nem fogsz tanulni. Hidd el nagyobb kedvet kapsz az egész dologtól ha te jössz rá a dolgokra, és nem pedig más mutatja meg.
Ha +=-t használsz, és - értéket írsz paraméternek, akkor minuszba teszi az összeget.
Innentől már neked is menni fog.
-
Nem fogok megsértődni mivel tudom, hogy igazad van. De arra sose fogok rájönni, azt hol kell meghatározni ha pl: +-t ír be vagy ha =-t és annál mi történjen.
Pl hogy értsétek, hogy én mit nem értek :facepalm: :D
if(params,+) <- ide csak hülyeséget írtam be.
és ez alá már sztem megtudnám csinálni a többit.
Remélem érthető.
-
Ittvan pár link, próbálj onnan nézni valamit.
https://wiki.sa-mp.com/wiki/GivePlayerMoney
https://wiki.sa-mp.com/wiki/GetPlayerMoney
Részletesen le van írva, példákkal bemutatva is.
EDIT: Talán itt is találsz valamit : https://wiki.sa-mp.com/wiki/Fast_Commands
EDIT (RE): Meg itt 1 kód, talán..
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(givecash, 8, cmdtext);
return 0;
}
dcmd_givecash(playerid, params[])
{
new
giveplayerid,
amount;
if (sscanf(params, \"ud\", giveplayerid, amount)) SendClientMessage(playerid, 0xFF0000AA, \"Usage: /givecash [playerid/partname] [amount]\");
else if (giveplayerid == INVALID_PLAYER_ID) SendClientMessage(playerid, 0xFF0000AA, \"Player not found\");
else if (amount > GetPlayerMoney(playerid)) SendClientMessage(playerid, 0xFF0000AA, \"Insufficient Funds\");
else
{
GivePlayerMoney(giveplayerid, amount);
GivePlayerMoney(playerid, 0 - amount);
SendClientMessage(playerid, 0x00FF00AA, \"Money sent\");
SendClientMessage(giveplayerid, 0x00FF00AA, \"Money received\");
}
return 1;
}
Remélem ez segít.
Peace :smokin:
-
Úgy látszik nem érted, hogy én mit nem tudok megcsinálni. Ez nekem már mind \"alap\" én azt nem tudom megcsinálni hogy lekérdezze, hogy az most + vagy - . Hogy is írjam le, hogy értsd/értsétek. Szóval az úgy nézne ki szerintem(nembiztos) hogy megvan adva hogy például:
[pawn]
if(+)
{
Ide tudom mi kell
}
if(-)
{
Ide tudom mi kell
}[/pawn]
remélem így már érthető. csak mivel nem tudom hogy kell ezért nem is tudom elmagyarázni és ezért én kérek elnézést tőletek, hogy 1 balfaszzal több a fórumon :D
-
Rendben, hogy neked ez alap nem tudtam. :D
Ha van egy kis időm akkor leírom, viszont most dolgom van..
Vagy esetleg majd privátban leírom..
Addig is sok sikert, hátha megoldódik.
Peace :smokin:
-
Figyelj, a programozás nem egy olyan nehéz dolog. Az egész logikán alapszik, a pawn-t legalább is bárki megtanulhatja.
---
++ [A változó értékhez ad hozzá 1 értéket (Nem ajánlatos használni, sokkal lassabb mint a += 1;)]
-- [A változó értékéből von ki 1-et. (Nem ajánlatos használni, sokkal lassabb mint a -= 1;))
+= [A változó jelenlegi értékéhez ad hozzá az általad meghatározott értéket.]
-= [ugyan ez, csak kivonja]
Nincs ilyen hogy if(+), meg if(-).
Te egy meglévő változónak az értékét szeretnéd módosítani.
Ha a +=-be - értéket írsz be, akkor kivonja belőle.
Ezért csinálod úgy hogy :
pInfo[p][JatekosPenze] += strval(params);. (strval(params) -> A paraméternek a decimális értéke).
Írok egy példa parancsot.
CMD:adokpenzt(playerid, params[]) {
pInfo[playerid][JatekosPenze] += strval(params);
return 1;
}
Ez a parancs neked fog adni pénzt. Ha szeretnél játékos id-t is targetelni, akkor sscanf-ra lesz szükséged, és így kell kinéznie:
CMD:adokpenzt(playerid, params[]) {
new targetid, osszeg;
if(sscanf(params, \"ui\", targetid, osszeg)) return SendClientMessage(playerid, -1, \"Használat: /adokpenzt [Parameter 1] [Parameter 2]\");
if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, -1, \"A játékos nincs fent a szerveren te majom!\"); // Megnézzük hogy a játékos fent-e van, mivel ! van ott, ezért azt csekkoljuk hogy NINCS-e fent. Tehát ha NINCS fent, akkor nem fut le a parancs
// És mivel már csekkoltuk hogy a játékos fent van, ezért a változóját módosíthatjuk, mivel be van neki töltetve, és mentve.
pInfo[targetid][JatekosPenze] += osszeg;
}
}
UI: Amiket Supra le írt ne legyenek még alapok, ha az alap logikai menetel nincs meg.
Be írsz a második paraméternek egy értéket. Például -> -666
És ezt nem tudod lekérdezni?
if(osszeg < 0) // Ha az érték minusz
else // Ha az érték nem minusz.
-
És ha azt mondom, hogy olyasmit akarok mint s***g módjába? Tudom, hogy tiltott elnézést kérek de már tényleg nem tudom, hogy írjam.
-
Így akarja használni a parancsot.
/penz Kulka_Janos 5000 + -> Hozzáad 5000-et a jelenlegi pénzéhez
/penz Kulka_Janos 5000 - -> Elvesz 5000-et a jelenlegi pénzéből
/penz Kulka_Janos 5000 = -> A pénzét beállítja 5000-re
Nektek ez túlbonyolítás lehet, az is, de erre gondol. maybe..
-
Igen, pont így akarom. Nem tudtam hogy írjam le :D sryyy mindenkitől
-
CMD:penz(playerid, params[])
{
new jatekos,osszeg;
if (sscanf(params, \"ud\", jatekos,osszeg))
return SendClientMessage(playerid, -1, \"Használat: /pénz [Játékos] [Összeg]\");
if(jatekos == INVALID_PLAYER_ID)
return SendClientMessage(playerid, -1, \"Nincs ilyen játékos!\");
/* ide még a nevet be tudod illeszteni*/
if(mennyit < 0) printf(\"[Pénz]: Levonás: %d | Maradt: %d\",osszeg, pInfo[playerid][pForint]-osszeg);
if(mennyit > 0) printf(\"[Pénz]: Hozzáadas: %d | Maradt: %d\",osszeg, pInfo[playerid][pForint]+osszeg);
pInfo[playerid][pForint] += osszeg;
return true;
}
Magyarázat: ha le akarsz vonni akkor az összeg - legyen (pl: -5000) ha hozzáadni sima szám pl(5000)
-
Ez eddig okés, egyébként azért akartam úgy +,-,=-sen mivel mindegyikhez külön szöveget akarok, az ezzel megoldható valahogy?
-
Annyira nem beszélek pawnul, de ennek elvileg jónak kell lennie.
CMD:penz(playerid, params[]) {
new targetid, amount, operation[2];
if(JatekosInfo[playerid][AdminSzint] < 6)
return SendClientMessage(playerid, -1, \"Nincs jogosultságod a parancs használatához!\");
if(sscanf(params, \"uds[2]\", targetid, amount, operation))
return SendClientMessage(playerid, -1, \"Használat: /penz [iD] [Összeg] [+/-/=]\");
if(targetid == INVALID_PLAYER_ID)
return SendClientMessage(playerid, -1, \"Hibás ID!\");
if(!strcmp(operation, \"+\")) {
//GivePlayerMoney(targetid, amount);
JatekosInfo[targetid][Penz] += amount;
}
else if(!strcmp(operation, \"-\")) {
//GivePlayerMoney(targetid, -amount);
JatekosInfo[targetid][Penz] -= amount;
}
else if(!strcmp(operation, \"=\")) {
//ResetPlayerMoney(targetid);
//GivePlayerMoney(targetid, amount);
JatekosInfo[targetid][Penz] = amount;
}
else
SendClientMessage(playerid, -1, \"Hibás művelet!\");
return 1;
}
-
Annyira nem beszélek pawnul, de ennek elvileg jónak kell lennie.
CMD:penz(playerid, params[]) {
new targetid, amount, operation[2];
if(JatekosInfo[playerid][AdminSzint] < 6)
return SendClientMessage(playerid, -1, \"Nincs jogosultságod a parancs használatához!\");
if(sscanf(params, \"uds[2]\", targetid, amount, operation))
return SendClientMessage(playerid, -1, \"Használat: /penz [iD] [Összeg] [+/-/=]\");
if(targetid == INVALID_PLAYER_ID)
return SendClientMessage(playerid, -1, \"Hibás ID!\");
if(!strcmp(operation, \"+\")) {
//GivePlayerMoney(targetid, amount);
JatekosInfo[targetid][Penz] += amount;
}
else if(!strcmp(operation, \"-\")) {
//GivePlayerMoney(targetid, -amount);
JatekosInfo[targetid][Penz] -= amount;
}
else if(!strcmp(operation, \"=\")) {
//ResetPlayerMoney(targetid);
//GivePlayerMoney(targetid, amount);
JatekosInfo[targetid][Penz] = amount;
}
else
SendClientMessage(playerid, -1, \"Hibás művelet!\");
return 1;
}
Jól beszéltél pawnul szerintem. :OO :-[
-
Ez mind szép és jó, pont ilyet akartam csak az a gondom vele, hogy akárhogy akármit írok akkor is a használatát írja ki. szóval beíram /penz 0 500 + és kiírja, hogy használat: ....
-
Na. Beraktam tesztelni a Malibu modba, nálam működik. :-[
-
Háát én ugyan úgy bemásoltam, ahogy elküldted csak a jatekosinfot állítottam át mivel azóta átraktam pInfora és nem jó.
-
nekem is tökéletesen működik grandlarcben, még át sem kellett írnom a kódot. nálad nem jó valami
-
Háát akkor tényleg nem értem, mikor pedig paraméterek(operation : +,-,=) nélkül csinálom akkor meg jó :wall: Mostmár picit kezd idegesíteni. :-[