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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => A témát indította: Marlk1 - 2013. május 23. - 16:52:44

Cím: Regisztráció
Írta: Marlk1 - 2013. május 23. - 16:52:44
Sziasztok!
 
Ugyebár kezdõ scripterként gyakorolgatok, és gondoltam, publikálom is a készítményeket, hogy megkapjam az építõ jellegû kritikákat!  :thumbsup:
Ez most egy regisztráló script lenne, amely tartalmazza a regisztrálást és a bejelentkezést(egyértelmûen), és, hogy ne lehessen spawnolni amíg be nem jelentkezik az illetõ!
Tehát az adatok:
Készítõ: Én (Marlk1)
Készítési idõ: kb. 10 perc
sorok száma: ~106sor
Letöltés(pwn): -
 
// Ez az egyik elsõ munkám
// A playereket nem mysql-ba hanem simán szöveges dokumentumba menti
//Regisztráló script, készítette: Marlk1 (Sergio White)
#define FILTERSCRIPT
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <dini>
#include <dubd>
#include <dutils>
#if defined FILTERSCRIPT
#define COLOR_RED 0xAA3333AA
#define COLOR_GREEN 0x33AA33AA
new Bejelentkezve[MAX_PLAYERS];
new file [128];
 
CMD:register(playerid, params[])
{
new PlayerName[MAX_PLAYER_NAME];
new jelszo[64];
GetPlayerName(playerid, PlayerName, MAX_PLAYER_NAME);
if(Bejelentkezve[playerid] = 0)
{
    if(sscanf(params, \"s[64]\", jelszo)) return SendClientMessage(playerid, COLOR_RED, \"használat: /register [jelszó]\");
    else
{
    dini_Create(file, \"Scriptfiles/jatekosok/%.ini\");
    dini_IntSet(file, \"Jelszó\", udb_hash(jelszo));
    dini_IntSet(file, \"Pénz\", GetPlayerMoney(playerid));
    dini_IntSet(file, \"Pont\", GetPlayerScore(playerid));
   
    SendClientMessage(playerid, COLOR_GREEN, \"Sikeresen regisztráltál! Mostmár bejelentkezhetsz! (/login)\");
}
else
{
    SendClientMessage(playerid, COLOR_RED, \"Ezzel a névvel már valaki regisztrálva van!\");
}
return 1;
}
//--------------------------regisztrálós rész vége--------------------Jön a Bejelentkezés rész-------------------------------//
CMD:login(playerid, params[])
{
new PlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid, PlayerName, MAX_PLAYER_NAME);
if(Bejelentkezve[playerid] == 0);
{
    new jelszo[64];
   
  if(sscanf(params, \"s[64]\", jelszo)) return SendClientMessage(playerid, COLOR_GREEN, \"Elõbb jelentkezz be! /login\");
  else
  {
    format(file, sizeoff(file), \"Scriptfiles/jatekosok/%.ini\", PlayerName);
    if(dini_Exists(file))
    {
        if(strval(dini_Get(file, \"Jelszó\")) == udb_hash(jelszo))
       
       
     {
       GivePlayerMoney(playerid, dini_IntSet(file, \"Pénz\"));
       GivePlayerScore(playerid, dini_IntSet(file, \"Pont\"));
       Bejelentkezve[playerid] == 1;
       SendClientMessage(playerid, COLOR_GREEN, \"Sikeresen Bejelentkeztél!\");
     }
     else
     {
       SendClientMessage(playerid, COLOR_RED, \"Rossz jelszó!\");
     }
}
}
else
{
    SendClientMessage(playerid, COLOR_RED, \"Elõször regisztrálj! /register\");
}
return 1;
}
//Most mentse a játékos adatait amikor kilép
public OnPlayerDisconnect(playerid, reason)
{
dini_IntSet(file, \"Pénz\", GetPlayerMoney(playerid));
dini_IntSet(file, \"Pont\", GetPlayerScore(palyerid));
Bejelentkezve(playerid) == 0;
return 1;
}
//és most nem spawnolhat addig amíg be nem jelentkezik
public OnPlayerRequestSpawn(playerid)
{
if(Bejelentkezve[playerid] == 0)
{
    SendClientMessage(playerid, COLOR_RED, \"Elõször jelentkezz be!\");
    Kick(playerid);
    return 1;
}
}
#endif
//remélem tetszik :D
Cím: Regisztráció
Írta: Csabesz - 2013. május 23. - 17:13:53
Te ezt letesztelted?
Cím: Regisztráció
Írta: Marlk1 - 2013. május 23. - 17:15:34
Igen
Cím: Regisztráció
Írta: Csabesz - 2013. május 23. - 17:31:10
Nem fogok regényeket írni, meg igazán ki se elemeztem a kódot, de ami rögtön szembe tûnik, hogy csak loginnál adtad meg a file pontos elérési útját.
Regisztrációnál nem fogja tudni a szerver, hogy hova hozza létre a fájlt.
 

//és most nem spawnolhat addig amíg be nem jelentkezik
public OnPlayerSpawn(playerid)
{
        if(Bejelentkezve[playerid] == 0)
        {
            SendClientMessage(playerid, COLOR_RED, \"Elõször jelentkezz be!\");
            return 1;
        }
}

 
Ettõl a kódtól még le fog tudni spawnolni, csak ki fogja írni hogy \"Elõször jelentkezz be!\" ha nem vagy bejelentkezve.
Cím: Regisztráció
Írta: Marlk1 - 2013. május 23. - 17:42:21
Javítottam, remélem jól, ha mégsem, kérlek szóljatok! :)
Cím: Regisztráció
Írta: krisk - 2013. május 23. - 17:44:12
Nem teszteltem le én sem a kódot, de te írtál egy direktívás feltételt (#if defined FILTERSCRIPT ... #endif), viszont semmilyen #define FILTERSCRIPT nincsen a kódban. Ez, így elsõ ránézésre, úgy ahogy van le se fog fordulni, legalább is semmilyen értelmes kódot nem fogsz belõle kapni (a két fent említett direktíva közti részlet úgy az egyben ki fog maradni).
E1: a Kick függvényt nagybetûvel kell írni.
Cím: Regisztráció
Írta: Marlk1 - 2013. május 23. - 17:56:37
Javítva!
Cím: Regisztráció
Írta: Csabesz - 2013. május 24. - 11:28:37
Nem. http://wiki.sa-mp.com/wiki/OnPlayerRequestSpawn
Ezt használd -OnPlayerSpawn helyett, mert ez akkor hívódik meg mikor a karakterkiválasztóba rákattint a \'Spawn\'-ra.
A file pontos elérési útját még mindig nem adtad meg mindenhol tökéletesen.
Cím: Regisztráció
Írta: Marlk1 - 2013. május 29. - 19:36:36
Remélem mostmár véglegesen, javítva!  :thumbsup:
Cím: Regisztráció
Írta: [JSZL]Bencuskaa - 2013. június 02. - 07:44:23
Kélrek segítsetek én már nem jövök rá  :wall:
Ez mért van ?
 
D:\\Bencus Dolgai Nagygép\\gamemodes\\sonteszt.pwn(87) : error 012: invalid function call, not a valid address
D:\\Bencus Dolgai Nagygép\\gamemodes\\sonteszt.pwn(87) : warning 215: expression has no effect
D:\\Bencus Dolgai Nagygép\\gamemodes\\sonteszt.pwn(87) : error 001: expected token: \";\", but found \")\"
D:\\Bencus Dolgai Nagygép\\gamemodes\\sonteszt.pwn(87) : error 029: invalid expression, assumed zero
D:\\Bencus Dolgai Nagygép\\gamemodes\\sonteszt.pwn(87) : fatal error 107: too many error messages on one line

 
87. Sorom
 
Bejelentkezve(playerid) == 0;

 
Gamemodeba raktam bele!
Cím: Regisztráció
Írta: Carloska002 - 2013. június 03. - 13:46:02
Na? Senki? Pls ..
Cím: Regisztráció
Írta: [JSZL]Bencuskaa - 2013. június 03. - 13:49:47
Idézetet írta: Carloska002 date=1370259962\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"37723\" data-ipsquote-contentclass=\"forums_Topic
Na? Senki? Pls ..
 
Mibajodvanneked?  ;D
Cím: Regisztráció
Írta: padart - 2013. június 24. - 10:46:37
Jó script lenne kezdésnek pedig...
Cím: Regisztráció
Írta: BoOy - 2013. június 24. - 16:38:01
Bencuskaa\" post=\"430541\" timestamp=\"1370151863\"]
Kélrek segítsetek én már nem jövök rá  :wall:
Ez mért van ?
 
D:\\Bencus Dolgai Nagygép\\gamemodes\\sonteszt.pwn(87) : error 012: invalid function call, not a valid address
D:\\Bencus Dolgai Nagygép\\gamemodes\\sonteszt.pwn(87) : warning 215: expression has no effect
D:\\Bencus Dolgai Nagygép\\gamemodes\\sonteszt.pwn(87) : error 001: expected token: \";\", but found \")\"
D:\\Bencus Dolgai Nagygép\\gamemodes\\sonteszt.pwn(87) : error 029: invalid expression, assumed zero
D:\\Bencus Dolgai Nagygép\\gamemodes\\sonteszt.pwn(87) : fatal error 107: too many error messages on one line

 
87. Sorom
 
Bejelentkezve(playerid) == 0;

 
Gamemodeba raktam bele!
 
[/quote]
Tess:
 
Bejelentkezve[playerid] = 0;
Cím: Regisztráció
Írta: kundlam - 2013. augusztus 15. - 21:01:09
Helló bocs hogy késõn írok de nem vágom a dinit és kérdezném hogy ez miért van? :
 
D:\\AGTA Szerverek\\aTESZT SZERVER\\gamemodes\\headbreak.pwn(728) : warning 215: expression has no effect
D:\\AGTA Szerverek\\aTESZT SZERVER\\gamemodes\\headbreak.pwn(732) : warning 225: unreachable code
D:\\AGTA Szerverek\\aTESZT SZERVER\\gamemodes\\headbreak.pwn(749) : warning 211: possibly unintended assignment
D:\\AGTA Szerverek\\aTESZT SZERVER\\gamemodes\\headbreak.pwn(754) : warning 202: number of arguments does not match definition
D:\\AGTA Szerverek\\aTESZT SZERVER\\gamemodes\\headbreak.pwn(760) : warning 217: loose indentation
D:\\AGTA Szerverek\\aTESZT SZERVER\\gamemodes\\headbreak.pwn(760) : error 029: invalid expression, assumed zero
D:\\AGTA Szerverek\\aTESZT SZERVER\\gamemodes\\headbreak.pwn(766) : warning 217: loose indentation
D:\\AGTA Szerverek\\aTESZT SZERVER\\gamemodes\\headbreak.pwn(766) : error 029: invalid expression, assumed zero
D:\\AGTA Szerverek\\aTESZT SZERVER\\gamemodes\\headbreak.pwn(766) : error 017: undefined symbol \"cmd_login\"
D:\\AGTA Szerverek\\aTESZT SZERVER\\gamemodes\\headbreak.pwn(766) : error 029: invalid expression, assumed zero
D:\\AGTA Szerverek\\aTESZT SZERVER\\gamemodes\\headbreak.pwn(766) : fatal error 107: too many error messages on one line

 

Dupla hozzászólás automatikusan összefûzve. ( 2013. augusztus 16. - 08:52:01 )

Valaki tudna akkor segíteni? Fontos lenne