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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Zsoma - 2010. Május 25. - 20:21:33

Cím: Fizetés
Írta: Zsoma - 2010. Május 25. - 20:21:33
Hello
Nekem olyan scriptem van, most lett kész, hogy bemész kocmsáb azt megnézed az árlistát és iszol..
igenám, de minden italnak más az ára...
pl vodka 250 ft...
és azt h lehetne megcsinni h ha beirja ugye h a vodkát veszi akkor leveszi a 250Ft-ot?
De neugy h akármennyi pénze van akkor minusz 250re állitja hanem pl a meglévö pénzéböl veszi el...
Lécci help 8)
Cím: Fizetés
Írta: Iceaac - 2010. Május 25. - 20:31:51
Mikor megveszi:
 
if (GetPlayerMoney(playerid) > 249)
{
GivePlayerMoney(playerid, -250);
// ide azt írd, hogy mi történik, ha megveszi(van rá pénze)!
 
}

 
Ezzel ellenorizzük, van e rá pénze (ha a pénze több mint 249 dollár, akkor van 250 dollárja! :) ) , ha van akkor adunk neki -250 dollárt, ami azt jelenti, hogy 250 dollár \"levonódik\" a pénzébol.
 
else SendClientMessage(playerid, szin, \"Nincs rá pénzed! ($250)\");

 
Hogyha nincs neki 250 dollárja, akkor jelezzük neki és nem kapja meg a vodkát. Ha gond van szólj!
Cím: Fizetés
Írta: Zsoma - 2010. Május 25. - 20:37:35
ÁÁHHHÁÁÁÁ
és mondjuk ha az ital 345 forint és neki annyinak kell lennie akkor meg igynézki?
 
if (GetPlayerMoney(playerid) > 344)
{
GivePlayerMoney(playerid, -345);
bebaszik xD
 
}
Cím: Fizetés
Írta: Iceaac - 2010. Május 25. - 20:39:50
Igen, de az \"else\" részt is tedd be, mert nem tudja szegény miért nem piálhat. =(
Cím: Fizetés
Írta: Zsoma - 2010. Május 25. - 20:48:35
igen igen aztmár megcsintam :D
Hát nagyon köszi :D:D
figyi még egy kérésem lenne.. de már nemnyitok több topicot:
azkéne h ha beirja h :D vagy xD akkor proxdetector modjára kiirja h röhög...
mint pl a sima beszédnél:
(az onplayertextnél)
 
public OnPlayerText(playerid, text[])
{
new string[256];
new sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string),\"%s mondja: %s\",sendername,text);
ProxDetector(10.0, playerid, string, COLOR_GRAD3,COLOR_GRAD3,COLOR_GRAD3,COLOR_GRAD3,COLOR_GRAD3);
return 0;
}
Cím: Fizetés
Írta: Iceaac - 2010. Május 25. - 21:25:53
Tess:
 
public OnPlayerText(playerid, text[])
{
new string[128];
new sendername[MAX_PLAYER_NAME];
if (strfind(text, \"XD\", true) != -1)
{
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, 128,\"* %s nevet.\",sendername);
ProxDetector(10.0, playerid, string, COLOR_GRAD3,COLOR_GRAD3,COLOR_GRAD3,COLOR_GRAD3,COLOR_GRAD3);
return 0;
}
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string),\"%s mondja: %s\",sendername,text);
ProxDetector(10.0, playerid, string, COLOR_GRAD3,COLOR_GRAD3,COLOR_GRAD3,COLOR_GRAD3,COLOR_GRAD3);
return 0;
}

 
A strfind függvénnyel rákeresünk az \"XD\"-re (nem függ kis és nagybetuktol tehát lehet xd, xD, Xd stb), ha benne van, azaz a visszatérési érték nem egyenlo -1el (a visszatérési érték a karakterláncon belüli pozíció, -1 ha nem található benne). Ha hiba van szólj és átcsekkolom! :)
Cím: Fizetés
Írta: Zsoma - 2010. Május 25. - 22:22:27
tökéletesen müködik, ez alapján megcsináltam csomoot.
már csak egy kellene...
ha beirja h /s és a szöveg akkor távolabbra mennyen a szöveg.. azt megtom csinni h távolabbra, de oooo
h h kell h parancsos legyen..
én igy probálkoztam :angel:
ha nemjo kérlek javitsatok ki:
 
   if (strfind(text, \"/s\", true) != -1)
{
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, 128,\"%s ordítja: %s\",sendername,text);
ProxDetector(30.0, playerid, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
return 0;
}

 
pawnoban lefut, serveren viszont unnamed command ..
ooo
meg més egy xD
csináltam adminszöveget..
csak admin tudja irni mindnekinek...
de amint beirom plh /parancs hi
akkor igy adja ki:
Admin Zsoma: hi
Unnamed command!
:O lécci segitsetek ebben a 2-ben még :-\\
Cím: Fizetés
Írta: Iceaac - 2010. Május 26. - 08:51:20
Ha parancsot szeretnél akkor strcmp függvény kell. Az OnPlayerCommandText-hez tedd be ne másik parancsba és a legvégén lévo \"return 0;\" fölé.
 
if (!strcmp(cmdtext, \"/s\", true))
{
new plname[24];
         GetPlayerName(playerid, plname, 24);
format(string, 128,\"%s ordítja: %s\", sendername, cmdtext[3]);
ProxDetector(60.0, playerid, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
}

 
Így ha minden igaz muködik, de ha csak annyit ír be, hogy /s, nem fogja \"elmondani\" a játékosnak h használat stb.. Ha az is kell, akkor megírom sscanf-al.
Cím: Fizetés
Írta: Zsoma - 2010. Május 26. - 11:55:37
most suliba vagyok de biztosan joo :D
nagyon köszönöm iceaac! nagyon sokat segitettél most nekem... :)
és ha mást akarok pl akarok ilyet h suttogás akkor ugyanezt akkor azt alá?
pligy:
 
public OnPlayerCommandText(blabla)
{
    if (!strcmp(cmdtext, \"/s\", true))
   {
new plname[24];
         GetPlayerName(playerid, plname, 24);
format(string, 128,\"%s ordítja: %s\", sendername, cmdtext[3]);
ProxDetector(60.0, playerid,colorcolorcolorcolorcolor...);
}
    if (!strcmp(cmdtext, \"/w\", true))
   {
new plname[24];
         GetPlayerName(playerid, plname, 24);
format(string, 128,\"%s suttogja: %s\", sendername, cmdtext[3]);
ProxDetector(60.0, playerid,colorcolorcolorcolorcolor...);
}
Cím: Fizetés
Írta: Iceaac - 2010. Május 26. - 12:08:46
Igen, de a ProxDetectornál a 60.0-t írd át! Ez a távolság.. Sima beszédnél 30, ordítás 60.. Suttogás 10 körül lehetne sztem. :)
Cím: Fizetés
Írta: Zsoma - 2010. Május 26. - 12:13:03
mert az kb mekkora érték?
pl a 10?
az h nézzem meg h mekkora? :D:D:D
pl az 10 lépés gyalog vagy mi?
Cím: Fizetés
Írta: Iceaac - 2010. Május 26. - 12:20:50
Idézetet írta: Zsoma date=1274868783\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1766\" data-ipsquote-contentclass=\"forums_Topic
mert az kb mekkora érték?
pl a 10?
az h nézzem meg h mekkora? :D:D:D
pl az 10 lépés gyalog vagy mi?
 
Asszem olyan 10 méter játékon belül.. :D Am úgy nézd, hogy ha sima beszéd 30, akkor a suttogás kb az 1 harmada lehet, hogy hallják is a közelben lévok.
Cím: Fizetés
Írta: Zsoma - 2010. Május 26. - 12:27:32
ahaaa
köszi :D
most gondolkoztam h olyan van h a proxdetectornál 5 sziintkell megadni..
az nem az h amien távol vagyok annál söttebb a szin? amivel mutatja?
pl igy: elotte még van vmi... haverom mutatta, de nem értem  :-\\
 
else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
         {
            SendClientMessage(i, col4, string);
         }
         else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
         {
            SendClientMessage(i, col5, string);
         }
Cím: Fizetés
Írta: Iceaac - 2010. Május 26. - 12:30:08
Igen, annyi az egész h a legvilágosabbtól sötétedik.. Így érzékelteti a távolságot, hogy honnan szóltak. Az alul lévo cucc felesleges hozzá. \"thumbup.gif\"
Cím: Fizetés
Írta: Zsoma - 2010. Május 26. - 13:45:58
ja akkor azmár alapbol olyan?
 ::|
Cím: Fizetés
Írta: Iceaac - 2010. Május 26. - 13:57:05
Idézetet írta: Zsoma date=1274874358\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1766\" data-ipsquote-contentclass=\"forums_Topic
ja akkor azmár alapbol olyan?
 ::|
 
Ahha.  ;D
Cím: Fizetés
Írta: Zsoma - 2010. Május 26. - 13:59:25
kis bibi:
modositanom kellett mert nemvolt definiálva a string meg ienek és mikor igy van:
 
   if (!strcmp(cmdtext, \"/s\", true))
{
new plname[24];
new string[256];
         GetPlayerName(playerid, plname, 24);
format(string, 128,\"%s ordítja: %s\", plname, cmdtext[3]);
ProxDetector(60.0, playerid, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
}

 
akkor beirom simán h /s akkor müködik csak de akkor is ugyadja kih:
Zsoma orditja: /s     
Unnamed command  vagymi...
vmit elszurtam?
Cím: Fizetés
Írta: Iceaac - 2010. Május 26. - 14:01:29
Én szúrtam el, nemsoká lesz idom és megírom rendesen sscanf-al.
Cím: Fizetés
Írta: Zsoma - 2010. Május 26. - 14:03:35
ja akkor azé\' :P ;)
köszi :D:D
szerk.: ja még annyi h van egy parancsom h /admond hi és akkor kiirja aztis h hi de azt is h
unnamed command :O
pedig jol le van zárva mindneütt  :-\\
Cím: Fizetés
Írta: Iceaac - 2010. Május 26. - 14:33:09
Kész! :)
Én még mindig a régi sscanf-ot használom amit 1 inc fájlba tettem, szóval a hsz végén adok egy linket ahonnan letöltheted és majd tedd be a pawno/include mappába.
Mód tetejére:
 

#include <sscanf>
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, \"\")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
new strz[128];

 
Mód legaljára:
 
dcmd_s(playerid, params[])
{
new str[128], plname[24];
if (sscanf(params, \"s\", str)) return SendClientMessage(playerid, 0xFF0000FF, \"Használat: /s [szöveg]\");
GetPlayerName(playerid, plname, 24);
format(strz, 128,\"%s ordítja: %s\", plname, str);
ProxDetector(60.0, playerid, strz, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
return 1;
}
dcmd_w(playerid, params[])
{
new str[128], plname[24];
if (sscanf(params, \"s\", str)) return SendClientMessage(playerid, 0xFF0000FF, \"Használat: /w [szöveg]\");
GetPlayerName(playerid, plname, 24);
format(strz, 128,\"%s suttogja: %s\", plname, str);
ProxDetector(10.0, playerid, strz, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
return 1;
}
dcmd_adminmond(playerid, params[])
{
new str[128], plname[24];
if (sscanf(params, \"s\", str)) return SendClientMessage(playerid, 0xFF0000FF, \"Használat: /adminmond [szöveg]\");
GetPlayerName(playerid, plname, 24);
format(strz, 128,\"Admin %s: %s\", plname, str);
SendClientMessageToAll(0xFF0000FF, strz);
return 1;
}

 
Ezek lesznek a parancsok, amiket dcmdvel csináltunk.. Ha nem értesz valamit belolük szólj.
És most az OnPlayerCommandText-nél \"használjuk\" a parancsokat:
 
   dcmd(s, 1, cmdtext);
dcmd(w, 1, cmdtext);
dcmd(adminmond, 9, cmdtext);

 
Az elso paraméter a parancs neve idézojelek nélkül, a második pedig az, hogy hány karakterbol áll a parancs.
Szerk: Elfelejtettem feltölteni az inc fájlt, várj 1 percet.. :D
Szerk2: Itt a link!
 

Letöltés
\"icoDownload.png\"
Cím: Fizetés
Írta: Zsoma - 2010. Május 26. - 15:01:25
TÖKÉLETES munka! TÖKÉLETES SEGITSÉG!
TÖKÉLETES segitökészség!
Ennyit mondok, barátom, hálásan köszi  :laugh: