GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Szkript kérések => A témát indította: immortal1876 - 2016. május 18. - 19:21:04

Cím: Pénz adás(+,-,=)
Írta: immortal1876 - 2016. május 18. - 19:21:04
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.
Cím: Pénz adás(+,-,=)
Írta: whadez - 2016. május 18. - 19:29:33
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.
Cím: Pénz adás(+,-,=)
Írta: immortal1876 - 2016. május 18. - 19:45:02
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ő.
Cím: Pénz adás(+,-,=)
Írta: $Supra$ - 2016. május 18. - 19:51:24
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:
Cím: Pénz adás(+,-,=)
Írta: immortal1876 - 2016. május 18. - 20:05:25
Ú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
Cím: Pénz adás(+,-,=)
Írta: $Supra$ - 2016. május 18. - 20:08:42
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:
Cím: Pénz adás(+,-,=)
Írta: whadez - 2016. május 18. - 20:19:43
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.
Cím: Pénz adás(+,-,=)
Írta: immortal1876 - 2016. május 18. - 20:45:16
É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.
Cím: Pénz adás(+,-,=)
Írta: impreZZa - 2016. május 18. - 20:50:11
Í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..
Cím: Pénz adás(+,-,=)
Írta: immortal1876 - 2016. május 18. - 20:51:38
Igen, pont így akarom. Nem tudtam hogy írjam le :D sryyy mindenkitől
Cím: Pénz adás(+,-,=)
Írta: Brian Harris - 2016. május 18. - 21:15:44
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)
Cím: Pénz adás(+,-,=)
Írta: immortal1876 - 2016. május 18. - 21:34:19
Ez eddig okés, egyébként azért akartam úgy +,-,=-sen mivel mindegyikhez külön szöveget akarok, az ezzel megoldható valahogy?
Cím: Pénz adás(+,-,=)
Írta: impreZZa - 2016. május 19. - 00:37:24
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;
}
Cím: Pénz adás(+,-,=)
Írta: whadez - 2016. május 19. - 01:03:47
Idézetet írta: impreZZa date=1463611044\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"60461\" data-ipsquote-contentclass=\"forums_Topic
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  :-[
Cím: Pénz adás(+,-,=)
Írta: immortal1876 - 2016. május 19. - 15:16:55
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: ....
Cím: Pénz adás(+,-,=)
Írta: impreZZa - 2016. május 19. - 15:34:28
Na. Beraktam tesztelni a Malibu modba, nálam működik. :-[
Cím: Pénz adás(+,-,=)
Írta: immortal1876 - 2016. május 19. - 15:41:49
Háát én ugyan úgy bemásoltam, ahogy elküldted csak a jatekosinfot állítottam át mivel azóta átraktam pInfora és nem jó.
Cím: Pénz adás(+,-,=)
Írta: Pedró - 2016. május 19. - 15:54:35
nekem is tökéletesen működik grandlarcben, még át sem kellett írnom a kódot. nálad nem jó valami
Cím: Pénz adás(+,-,=)
Írta: immortal1876 - 2016. május 19. - 16:06:01
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.  :-[