Jump to content
  • 0

pomoc prosim opravte kod


scrofly

Dotaz

Ahoj

 

Prosím vás zjistil jsme pár chyb ve své registraci :

 

1) Chtěl bych , aby v ni bylo 3x za zadání spatneho hesla kick ze serveru. tim ze zmizi dialog na login a nahore v chatu bude napsano neco 3x zadane neuspesne prihlaseni na server.

2) kdyz nezadam do registrace heslo a dam cancel ,tak chci ,abych mel closed connection tedy zase odpojeni, v mem pripade se jde normalne do hry.

3) kdyz se registruju a prijdu znova , tak se musim na stejnym ucte znova registrovat ,neuklada to hesla.

 

Prosím kdyby byl nekdo tk hodny a opravil mi ten kod , aby v nem bylo tohle co jsem napsal budu moc vdecny.

#include <a_samp>
#include <file>
#include  <dini>
#include <dudb>
#include <dutils>




#define SCM SendClientMessage
#define SendMessage SendClientMessage
// TERAZ MOZES POUZIVAT AJ SendMessage aj len SCM


//#define
#define modra 0x4778C9
#define MODRA 0x0000BBAA
#define MODRA2 0x4682B4AA
#define MODRA3 0x4169FFAA
#define SVMODRA 0x33CCFFAA
#define ZELENA 0x008000AA
#define CYAN 0x00FFFFAA
#define TMAVACYAN 0x008B8BAA
#define BILA 0xFFFFFFAA
#define ZLUTA 0xFFFF00AA
#define HNEDA 0xA52A2AAA
#define HNEDA2 0xBC8F8FAA
#define COKOLADA 0xD2691EAA
#define CERVENA 0xFF0000AA
#define SEDA 0x808080AA
#define FIALOVA 0x800080AA
#define RUZOVA 0xFFC0CBAA
#define CHARTR 0x7FFF00AA
#define ORANZCERV 0xFF4500AA
#define ORANZOVA 0xFF8C00AA
#define NEVIDITE 0x4682B400
#define B_SEDA 0x808080FF //seda barva
#define B_CERV 0xA40000FF //cervena barva
#define B_BILA 0xFFFFFFFF //bila barva
#define B_ZELE 0x00A400FF //zelena barva

#define REG_DIALOG 0
#define LOG_DIALOG 1

enum PLAYER_INFO// - něco jako databaze odkud bere informace proměná Informace
{
bool:Login // pokud už enum máte stačí do něj přidat toto (bool: logická porměnná, true or false)
}

new Informace[MAX_PLAYERS][PLAYER_INFO]; // info o hráč, využívá seznam z enumu

stock Jmeno(playerid) // zjištění jména
{
new pName[MAX_PLAYER_NAME]; //proměnná na zapsání jména

if(IsPlayerConnected(playerid)) //pokud je hráč připojen
{
if(!IsPlayerNPC(playerid)) // a pokud to není NPC
{
GetPlayerName(playerid, pName, sizeof(pName)); //zjistí jeho jméno
}
}
return pName; //odešle jméno
}

main()
{
print("\n----------------------------------");
print("Real.Play1.1");
print("----------------------------------\n");
}


public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Real.Play1.1");
AddPlayerClass(105,2118.1868,1284.3336,8.6268,86.0900,0,0,0,0,0,0);
AddPlayerClass(103,2118.1868,1284.3336,8.6268,86.0900,0,0,0,0,0,0);
AddPlayerClass(106,2118.1868,1284.3336,8.6268,86.0900,0,0,0,0,0,0);
AddPlayerClass(107,2118.1868,1284.3336,8.6268,86.0900,0,0,0,0,0,0);
return 1;
}

public OnGameModeExit()
{
return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
if(!Informace[playerid][Login]) // kontrola jestli neni prihlasen
{
if(udb_Exists(Jmeno(playerid))) // pokud je zaregistrován
{
new message[256]; // proměnná pro zprávu
format(message, sizeof(message), "Vitej zpatky, %s!\n\n\nDole vypln heslo!\n\n\n", Jmeno(playerid)); //připraví zprávu¨s parametrem do dialogu
ShowPlayerDialog(playerid, LOG_DIALOG, DIALOG_STYLE_INPUT, "Prihlaseni", message, "OK", "Konec"); // otevře přihlašovací dialog s kolonkou na heslo
}
else // ale pokud nemá účet
{
new message[256]; // připraví proměnnou pro zprávu
format(message, sizeof(message), "Zaregistruj se %s!\n\n\nDole vypln heslo!\n\n\n", Jmeno(playerid)); // formát zprávy s parametrem
ShowPlayerDialog(playerid, REG_DIALOG, DIALOG_STYLE_INPUT, "Registrace", message, "OK", "Konec"); // pošle hráči registrační dialog s kolonkou pro heslo
}
}

SetPlayerPos(playerid, 2118.1868,1284.3336,8.6268);
SetPlayerCameraPos(playerid, 2120.1868,1284.3336,8.6268);
SetPlayerCameraLookAt(playerid,2118.1868,1284.3336,8.6268);
return 1;
}
public OnPlayerConnect(playerid)
{
Informace[playerid][Login] = false; //nejdřív se musí přihlásit
SendClientMessage(playerid,ZELENA, "Vytaj Na RoelPlay-Servery,RealPlay1.1");
return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
if(Informace[playerid][Login] == true) //pokud je přihlášen
{
dUserSetINT(Jmeno(playerid)).("Penize",GetPlayerMoney(playerid)); //zjistí peníze a uloží je to na váš účet
Informace[playerid][Login] = false; //aby nebyl přiští hráč již přihlášen
}
return 1;
}

public OnPlayerSpawn(playerid)
{
SetPlayerPos(playerid,2118.1868,1284.3336,8.6268);
return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
SetPlayerPos(playerid, -2630.0396,700.8793,27.9495);
SendClientMessage(playerid,ZELENA, "Zomrel si!");
return 1;
}

public OnVehicleSpawn(vehicleid)
{
return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}

public OnPlayerText(playerid, text[])
{
return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}

public OnRconCommand(cmd[])
{
return 1;
}

public OnPlayerRequestSpawn(playerid)
{
return 1;
}

public OnObjectMoved(objectid)
{
return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}

public OnPlayerExitedMenu(playerid)
{
return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}

public OnPlayerUpdate(playerid)
{
return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == REG_DIALOG && response) //pokud je to registrační dialog
{
if(strlen(inputtext) == 0) //pokud nezadá heslo
{
SendClientMessage(playerid, B_CERV, "[ ! ] Moc kratke heslo!"); //napíše informaci
new message[256]; //proměnná pro zprávu
format(message, sizeof(message), "Zaregistruj se %s!\n\n\nDole vypln heslo!\n\n\n", Jmeno(playerid)); //příprava zprávy s parametrem
ShowPlayerDialog(playerid, REG_DIALOG, DIALOG_STYLE_INPUT, "Registrace", message, "OK", "Konec"); //odešle znova reg. dialog
}
else //ppokud zadal heslo
{
if (udb_Create(Jmeno(playerid),inputtext)) //pokud se podaří zaregistrovat
{
new message[256]; // proměnná pro zprávu
format(message, sizeof(message), "Prihlas se %s!\n\n\nDole vypln heslo!\n\n\n", Jmeno(playerid)); //formát zprávy s parametrem
ShowPlayerDialog(playerid, LOG_DIALOG, DIALOG_STYLE_INPUT, "Prihlaseni", message, "OK", "Konec"); //odešle log. dialog
}
else
{
new message[256]; //proměnná pro zprávu
format(message, sizeof(message), "Zaregistruj se %s!\n\n\nDole vypln heslo!\n\n\n", Jmeno(playerid)); //příprava zprávy s parametrem
ShowPlayerDialog(playerid, REG_DIALOG, DIALOG_STYLE_INPUT, "Registrace", message, "OK", "Konec"); //odešle znova reg. dialog
}
}
}

if(dialogid == LOG_DIALOG) // pokud je to přihlašovací dialog
{
if(response==1)
{
if (udb_CheckLogin(Jmeno(playerid),inputtext)) //pokud se povede přihlásit
{
//zde dávejte věci které se provedou po přihlášení - nahrání peněz atp.
GivePlayerMoney(playerid,dUserINT(Jmeno(playerid)).("Penize")-GetPlayerMoney(playerid)); //nahraje uložené peníze
//sem davejte veci ktere chcete nacist!
Informace[playerid][Login] = true; // že už je přihlášen
new message[256]; //proměnná na uložení zprávy
format(message, sizeof(message), "[ * ] Vitej ve hre %s!", Jmeno(playerid)); // zpráva s parametrem
SendMessage(playerid, B_ZELE, message); //odeslání zprávy
SendMessage(playerid, B_BILA, "[ * ] Mel by jsi si zaridit obcansky prukaz."); //informace při přihlášení
SendMessage(playerid, B_BILA, "[ * ] Bez neho si nic neporidis, ani se nezamestnas."); //informace při přihlášení
SendMessage(playerid, B_BILA, "[ * ] Napis /commads pro seznam prikazu."); //informace při přihlášení
SendMessage(playerid, B_BILA, "[ * ] Napis /help pokud neco nevis."); //informace při přihlášení
}
else // pokud dal špatné heslo
{
SendMessage(playerid, B_CERV, "[ ! ] Spatne heslo!"); //napíše informaci
new message[256]; //proměnná pro zprávu
format(message, sizeof(message), "Prihlas se %s!\n\n\nDole vypln heslo!\n\n\n", Jmeno(playerid)); //zpráva s parametrem Jmeno
ShowPlayerDialog(playerid, LOG_DIALOG, DIALOG_STYLE_INPUT, "Prihlaseni", message, "OK", "Konec"); //pošle znova přihlašovací dialog
}
}
else //pokud zmáčkne talčítko Konec
{
SendMessage(playerid, B_CERV, "[ ! ] Prihlaseni je povinne!"); //napíše informaci
new message[256]; //proměnná pro zprávu
format(message, sizeof(message), "Prihlas se %s!\n\n\nDole vypln heslo!\n\n\n", Jmeno(playerid)); // zpráva
ShowPlayerDialog(playerid, LOG_DIALOG, DIALOG_STYLE_INPUT, "Prihlaseni", message, "OK", "Konec"); //zobrazí znova log. dialog s zprávou
}
}
return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
Link to comment
Share on other sites

11 odpovědí na tuto otázku

Recommended Posts

  • 0

V tom kódu se nedá vyznat, takže to po mě nechěj.

 

 

1) Chtěl bych , aby v ni bylo 3x za zadání spatneho hesla kick ze serveru. tim ze zmizi dialog na login a nahore v chatu bude napsano neco 3x zadane neuspesne prihlaseni na server.

 

Vytvoř si globální proměnnou

new LoginAttempts[MAX_PLAYERS];

 

A při kontrolování správnosti hesla:

 

if(...) //podmínka, že je heslo špatně
{
   LoginAttempts[playerid]++;
   if(LoginAttempts[playerid] == 3)
   {
      //vyhodit ze serveru
   }
}
Do OnPlayerConnect pak dej

LoginAttempts[playerid] = 0;

 

 

2) kdyz nezadam do registrace heslo a dam cancel ,tak chci ,abych mel closed connection tedy zase odpojeni, v mem pripade se jde normalne do hry.

Do příslušného dialogid v OnDialogResponse (na začátek)

 

if(!response || !strlen(inputtext))
{
   //vyhodit ze serveru
}
Link to comment
Share on other sites

  • 0

prosim mohl bys ty nebo nekdo jiny to dosadit do toho modu ?

 

udělal jsem to jak si me radil a porad errors :(

 

Nebo nejlepsi co kdyby sem nekdo dal odkaz na registraci a login system v dialogu , dke bude.

1) Registrace

2) potvrzeni hesla

3) 3x spatne zadane heslo kick

4) pri prihlaseni v dialogu login/closed - dám closed ,aby me to kiclo ze serveru a neslo abych mohl dat spawn .

Link to comment
Share on other sites

  • 0

A?... Hladaj dalej...

Ja som teraz 4 dni v kuse riesil port kompileru a tiez som si po 30 min nezalozil topic...

Tak isto som riesil jednu chybu 2,5 mesiaca a?

 

V programovani ide o to to skutocne pochopit a nieco vytvorit. Ak to spravi niekdo za teba, nic sa nenaucis a akurad budes marnit druhych cas...

Link to comment
Share on other sites

  • 0

Už dlhšie pozerám čo tu píšeš, zo začiatku som si myslel, že si nato pawno talentovaný, tak rýchlo robiť registračku, ale teraz viem, že to všetko kopíruješ, ako písali ostatní tu vyššie, kopírovaním nič nezískaš, bude to prepadák ako ostatné. Treba byť originálny, a hlavne tie popisky si tam vymaž, vyzerá to veľmi neprofesionálne keď je to vidno, ako je to skopírované.  :p

Link to comment
Share on other sites

  • 0

Je ťažké niesť kritiku keď vieš že majú pravdu však ?

Akai ti poradil,ak si myslíš že ty sem napíšeš že chcem toto a toto tak všetcí hneď budú utekať ?

Začni sa už snažiť riešiť problémy sám inak to nedotiahneš nikde.

Link to comment
Share on other sites

  • 0
dík danny tvuj koment me opravdu pomuze, super diky

 

 

Tyvole ja te potkat tak te kopnu do hlavy ty negre ******** bez otravovat nekoho jineho tyvole lidi ti ty kody davaji malem az do analniho otvoru a porad jeste chces kdyz to neumis proc to ku*va oteviras? ??? Proc nejdes na samp forum a stahuj si odtamat scripty tady te to nikdo nenauci az budes neco umet Bro tak se vrat a pak ti pomuzem ale kdyz ani zakladni vec neumis tak sorry ale to mi skoc na pero...

Link to comment
Share on other sites

  • 0

Topic se jmenuje "Opravte...", ale spíš po nás chceš aby jsme něco udělali ta tebe.

Když už si opravdu nevíš rady, tak sem dej aspoň jen tu část kodů, kde je chyba a ne třicet dalších zbytečných publiců, které v tom dělaj chaos.

Chyba je na nějakém řádku? Tak nám ten řádek LASKAVĚ označ a hned se to bude řešit lépe.

Jsi ve správné sekci, kde ti někdo může pomoct, ale pokud neuděláš ani to nejmenší ohledně značení, tak se ti na to řada lidí ani nepodívá.

Link to comment
Share on other sites

  • 0

The%20Janeway%20Facepalm.jpg

Prosimtě, jestli tu hodláš něco řešit, tak v první řadě si založ nový téma, tady už toho moc nečekej.
Laskavě vypiš kód, označ řádky, jsou-li tam chyby (vzhledem k tomu že říkáš že s tim co jsem ti poslal jsou tam errory) a rozhodně po nikom nechtěj, aby ti něco někam dosadil. Jestli nevíš, co s tim, kam s tim, co jsem ti poradil, tak se laskavě zeptej, a nebuď línej.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...