Score aumenta depois que o jogo й fechado. -
1Є - Depois de ter visto um tutorial de um Sistema de Registro(em SII) no fуrum, decidi reproduzir um que funcione parecidamente. Tudo anda normalmente a nгo ser o level que aumenta a cada vez que o player desloga do server. Vocкs verгo que no cуdigo pedi ao gamemode que entregasse ao player o level 1, o player loga e ganha level 1 porйm na segunda vez que ele loga ele ganha level 49 sem eu pedir. O que estб ocorrendo?
2Є - Eu na hora de registrar uma senha no mesmo sistema de registro descobri que й possнvel criar uma senha apenas com espaзos jб que espaзos tambйm sгo considerados caracteres. Eu gostaria de saber se й possнvel e como fazer para que pessoas nгo criem senhas com somente espaзos.
pawn Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <SII>
//------------------------------------------------------------------------------
#define DIALOG_REGISTRO 1
#define DIALOG_LOGIN 2
//------------------------------------------------------------------------------
new gPlayerName[MAX_PLAYERS][MAX_PLAYER_NAME];
enum pInfo
{
pSenha,
pScore,
pDinheiro,
pAdmin
}
new PlayerInfo[MAX_PLAYERS][pInfo];
main()
{
print("\n----------------------------------");
print(" Servidor Carregado com Sucesso! ");
print("----------------------------------\n");
}
public OnGameModeInit()
{
SetGameModeText("MC:BD V.1.0");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid, gPlayerName[playerid], MAX_PLAYER_NAME);
if(fexist(ObterINI(playerid)))
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Digite sua senha abaixo para efetuar login.", "Login", "Sair");
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Digite sua senha abaixo para registrar uma nova conta.", "Registrar", "Sair");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(INI_Open(ObterINI(playerid)))
{
INI_WriteInt("Score", PlayerInfo[playerid][pScore]);
INI_WriteInt("Dinheiro", GetPlayerMoney(playerid));
INI_WriteInt("Admin", PlayerInfo[playerid][pAdmin]);
INI_Save();
INI_Close();
}
return 1;
}
public OnPlayerSpawn(playerid)
{
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
//Comandos ---------------------------------------------------------------------
CMD:cv(playerid, params[])
{
new veiculo, ID, c1, c2;
if (sscanf(params, "ddd", ID, c1, c2))
{
SendClientMessage(playerid, -1, "Use: {FFFF00}/cv [ID] [Cor1] [Cor2].");
}
else
{
if (ID < 400 || ID > 611) return 1;
if (c1 > 400 || c2 > 611) return 1;
new Float: X, Float: Y, Float: Z, Float: A;
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, A);
veiculo = CreateVehicle(ID, X, Y, Z, A, c1, c2, -1);
PutPlayerInVehicle(playerid, veiculo, 0);
}
return 1;
}
CMD:teste(playerid, params[])
{
SetPlayerScore(playerid, 1008);
GivePlayerMoney(playerid, 9632);
SendClientMessage(playerid, -1, "Comando Efetuado!");
return 1;
}
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[])
{
switch(dialogid)
{
case DIALOG_REGISTRO:
{
if (!response) return Kick(playerid);
if (response)
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Vocк digitou uma senha invбlida.\nDigite sua senha abaixo para registrar uma nova conta.", "Registro", "Quit");
}
if(INI_Open(ObterINI(playerid)))
{
INI_WriteString("Senha", inputtext);
INI_WriteInt("Score", 1);
INI_WriteInt("Dinheiro", 5000);
INI_WriteInt("Admin", 0);
INI_Save();
INI_Close();
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Digite sua senha abaixo para efetuar login.", "Login", "Sair");
}
}
}
case DIALOG_LOGIN:
{
if (!response) return Kick(playerid);
if(response)
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Vocк digitou uma senha invбlida.\nDigite sua senha abaixo para efetuar login.", "Login", "Sair");
}
if(INI_Open(ObterINI(playerid)))
{
INI_ReadString(PlayerInfo[playerid][pSenha], "Senha", 20);
if(strcmp(inputtext,PlayerInfo[playerid][pSenha], false))
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login","Vocк digitou uma senha incorreta.\nDigite sua senha abaixo para efetuar login.", "Login", "Sair");
}
SetPlayerScore(playerid, INI_ReadInt("Score"));
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, INI_ReadInt("Dinheiro"));
PlayerInfo[playerid][pAdmin] = INI_ReadInt("Admin");
INI_Close();
SpawnPlayer(playerid);
}
}
}
}
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
stock ObterINI(playerid)
{
new conta[64];
format(conta, 30, "Contas/%s.ini", gPlayerName[playerid]);
return conta;
}
Sim, hб muitas callbacks sem ser utilizadas, isso por conta do gamemode estar em construзгo.
Re: Score aumenta depois que o jogo й fechado. -
Re: Score aumenta depois que o jogo й fechado. -
1 - No seu cуdigo, sу achei a criaзгo da variбvel pScore e a seguinte instruзгo em OnPlayerDisconnect.
Nгo encontrei onde vocк seta o Score para 1.
2 - Vocк pode usar strfind, ou fazer um loop para verificar cada caracter. Ex:
Re: Score aumenta depois que o jogo й fechado. -
Re: Score aumenta depois que o jogo й fechado. -
Man, tinha feito esse mesmo sistema de registro/login a um tempo atrбs na minha gm, ela realmente tem esse bug, eu estudei a usar o DOF2, й bem mais simples e sem bugs.