[Help] Using Dini
#1

Hello. I seem to be having an issue with using Dini. I think its simple, I just don't know enough about it.

My script:

pawn Код:
// <censored>
// Written By: <censored>

// Includes
#include <a_samp>
#include <colors>
#include <streamer>
#include <sscanf2>
#include <dini>
#include <zcmd>

new IsLogged[MAX_PLAYERS];
new file[128];

// Leave This Alone...
main(){}

// On-Game-Mode-Init
public OnGameModeInit()
{
    SetGameModeText("FG-RP");
    return 1;
}

public OnGameModeExit()
{
    return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
  SetPlayerInterior(playerid, 5);
    SetPlayerPos(playerid, 323.4,305.6,999.1);
    SetPlayerFacingAngle(playerid, 90.0);
    SetPlayerCameraPos(playerid, 323.4-1.5-1.0,305.6,999.1+0.7);
    SetPlayerCameraLookAt(playerid, 323.4-1.0,305.6,999.1+0.7);
    return 1;
}

public OnPlayerConnect(playerid)
{
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
  SavePlayer(playerid);
    return 1;
}

public OnPlayerSpawn(playerid)
{
    SetPlayerInterior(playerid, 0);
    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;
}

CMD:gmx(playerid, params[])// Server Restart Command
{
    SendRconCommand("gmx");
  return 1;
}

CMD:cgoto(playerid, params[])// Go-To-Cord Command
{
    new Float:x, Float:y, Float:z;
    if (sscanf(params, "fff", x, y, z)) SendClientMessage(playerid, 0xFF0000AA, "Usage: /gotocoord <X Float> <Y Float> <Z Float>");
    else
    {
      new string[64];
      SetPlayerPos(playerid, x, y, z);
      format(string, sizeof(string), "New Position: %f, %f, %f", x, y, z);
      SendClientMessage(playerid, COLOR_ORANGE, string);
    }
    return 0;
}

CMD:register(playerid, params[])
{
    new PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, PlayerName, MAX_PLAYER_NAME);
    if(IsLogged[playerid] == 0)
    {
        if(sscanf(params, "s", password)) return SendClientMessage(playerid, 0xFF0000AA, "SERVER USAGE: /register <Password>");
        else
        {
            format(file, sizeof(file), "%s.ini", PlayerName);
            if(!dini_Exists(file))
            {
                dini_Create(file);
                dini_IntSet(file, "Password", udb_hash(password));
                dini_IntSet(file, "AdminLevel", 0);
                dini_IntSet(file, "Money", GetPlayerMoney(playerid));
                dini_IntSet(file, "Score", GetPlayerScore(playerid));
                dini_IntSet(file, "Skin", GetPlayerSkin(playerid));
                SendClientMessage(playerid, 0xFF00FF00, "SERVER: You have succesfully registered the name, you can now /login");
            }
            else
            {
              SendClientMessage(playerid, 0xFF0000AA, "SERVER: That name is already registered, reconnect with another name if it isnt your account!");
            }
              }
            }
            else
            {
              SendClientMessage(playerid, 0xFF0000AA, "SERVER: You are already logged in!");
            }
    return 1;
}

CMD:login(playerid, params[])// Login Command
{
    new PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, PlayerName, MAX_PLAYER_NAME);
    if(IsLogged[playerid] == 0)
    {
        if(sscanf(params, "s", password)) return SendClientMessage(playerid, 0xFF0000AA, "SERVER USAGE: /login <Password>");
        else
        {
            format(file, sizeof(file), "%s.ini", PlayerName);
            if(dini_Exists(file))
            {
                if(strval(dini_Int(file, "Password")) == udb_hash(password))
                {
                    GivePlayerMoney(playerid, dini_Int(file, "Money"));
                    SetPlayerScore(playerid, dini_Int(file, "Score"));
                    SetPlayerSkin(playerid, dini_Int(file, "Skin"));
                    IsLogged[playerid] = 1;
                }
                else
                {
              SendClientMessage(playerid, 0xFF0000AA, "SERVER: Wrong password!");
                }
                }
                else
                {
                    SendClientMessage(playerid, 0xFF0000AA, "SERVER: That user isnt registered, please use /register");
                }
                }
                }
                else
                {
                  SendClientMessage(playerid, 0xFF0000AA, "SERVER: You are already logged in!");
                }
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    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 OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    return 1;
}

SavePlayer(playerid)
{
    if(IsLogged[playerid] == 1)
    {
      dini_IntSet(file, "Money", GetPlayerMoney(playerid));
      dini_IntSet(file, "Score", GetPlayerScore(playerid));
      dini_IntSet(file, "Skin", GetPlayerSkin(playerid));
      IsLogged[playerid] = 0;
    }
    return 1;
}
Yes, its a very simple game-mode.

The errors:

Код:
C:\Other Servers\Future Gaming Testing Server\gamemodes\FG-RP2.pwn(103) : error 017: undefined symbol "password"
C:\Other Servers\Future Gaming Testing Server\gamemodes\FG-RP2.pwn(110) : error 017: undefined symbol "udb_hash"
C:\Other Servers\Future Gaming Testing Server\gamemodes\FG-RP2.pwn(136) : error 017: undefined symbol "password"
C:\Other Servers\Future Gaming Testing Server\gamemodes\FG-RP2.pwn(142) : error 035: argument type mismatch (argument 1)
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


4 Errors.
Reply
#2

you need to include dudb for udb_hash i guess
Код:
#include <dudb>
and then you need in the login command, insted of
Код:
new PlayerName[MAX_PLAYER_NAME];
then
Код:
new PlayerName[MAX_PLAYER_NAME], password[24];
24 if 24 is the max of the password, you can change.
Reply
#3

Okay, I did that.

New script:

pawn Код:
// <censored>
// Written By:

// Includes
#include <a_samp>
#include <colors>
#include <streamer>
#include <sscanf2>
#include <dini>
#include <dudb>
#include <zcmd>

new IsLogged[MAX_PLAYERS];
new file[128];

// Leave This Alone...
main(){}

// On-Game-Mode-Init
public OnGameModeInit()
{
    SetGameModeText("FG-RP");
    return 1;
}

public OnGameModeExit()
{
    return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
  SetPlayerInterior(playerid, 5);
    SetPlayerPos(playerid, 323.4,305.6,999.1);
    SetPlayerFacingAngle(playerid, 90.0);
    SetPlayerCameraPos(playerid, 323.4-1.5-1.0,305.6,999.1+0.7);
    SetPlayerCameraLookAt(playerid, 323.4-1.0,305.6,999.1+0.7);
    return 1;
}

public OnPlayerConnect(playerid)
{
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
  SavePlayer(playerid);
    return 1;
}

public OnPlayerSpawn(playerid)
{
    SetPlayerInterior(playerid, 0);
    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;
}

CMD:gmx(playerid, params[])// Server Restart Command
{
    SendRconCommand("gmx");
  return 1;
}

CMD:cgoto(playerid, params[])// Go-To-Cord Command
{
    new Float:x, Float:y, Float:z;
    if (sscanf(params, "fff", x, y, z)) SendClientMessage(playerid, 0xFF0000AA, "Usage: /gotocoord <X Float> <Y Float> <Z Float>");
    else
    {
      new string[64];
      SetPlayerPos(playerid, x, y, z);
      format(string, sizeof(string), "New Position: %f, %f, %f", x, y, z);
      SendClientMessage(playerid, COLOR_ORANGE, string);
    }
    return 0;
}

CMD:register(playerid, params[])
{
    new PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, PlayerName, MAX_PLAYER_NAME);
    if(IsLogged[playerid] == 0)
    {
        if(sscanf(params, "s", password)) return SendClientMessage(playerid, 0xFF0000AA, "SERVER USAGE: /register <Password>");
        else
        {
            format(file, sizeof(file), "%s.ini", PlayerName);
            if(!dini_Exists(file))
            {
                dini_Create(file);
                dini_IntSet(file, "Password", udb_hash(password));
                dini_IntSet(file, "AdminLevel", 0);
                dini_IntSet(file, "Money", GetPlayerMoney(playerid));
                dini_IntSet(file, "Score", GetPlayerScore(playerid));
                dini_IntSet(file, "Skin", GetPlayerSkin(playerid));
                SendClientMessage(playerid, 0xFF00FF00, "SERVER: You have succesfully registered the name, you can now /login");
            }
            else
            {
              SendClientMessage(playerid, 0xFF0000AA, "SERVER: That name is already registered, reconnect with another name if it isnt your account!");
            }
              }
            }
            else
            {
              SendClientMessage(playerid, 0xFF0000AA, "SERVER: You are already logged in!");
            }
    return 1;
}

CMD:login(playerid, params[])// Login Command
{
    new PlayerName[MAX_PLAYER_NAME], password[24];
    GetPlayerName(playerid, PlayerName, MAX_PLAYER_NAME);
    if(IsLogged[playerid] == 0)
    {
        if(sscanf(params, "s", password)) return SendClientMessage(playerid, 0xFF0000AA, "SERVER USAGE: /login <Password>");
        else
        {
            format(file, sizeof(file), "%s.ini", PlayerName);
            if(dini_Exists(file))
            {
                if(strval(dini_Int(file, "Password")) == udb_hash(password))
                {
                    GivePlayerMoney(playerid, dini_Int(file, "Money"));
                    SetPlayerScore(playerid, dini_Int(file, "Score"));
                    SetPlayerSkin(playerid, dini_Int(file, "Skin"));
                    IsLogged[playerid] = 1;
                }
                else
                {
              SendClientMessage(playerid, 0xFF0000AA, "SERVER: Wrong password!");
                }
                }
                else
                {
                    SendClientMessage(playerid, 0xFF0000AA, "SERVER: That user isnt registered, please use /register");
                }
                }
                }
                else
                {
                  SendClientMessage(playerid, 0xFF0000AA, "SERVER: You are already logged in!");
                }
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    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 OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    return 1;
}

SavePlayer(playerid)
{
    if(IsLogged[playerid] == 1)
    {
      dini_IntSet(file, "Money", GetPlayerMoney(playerid));
      dini_IntSet(file, "Score", GetPlayerScore(playerid));
      dini_IntSet(file, "Skin", GetPlayerSkin(playerid));
      IsLogged[playerid] = 0;
    }
    return 1;
}
The errors:

Код:
C:\Other Servers\Future Gaming Testing Server\gamemodes\FG-RP2.pwn(104) : error 017: undefined symbol "password"
C:\Other Servers\Future Gaming Testing Server\gamemodes\FG-RP2.pwn(111) : error 017: undefined symbol "password"
C:\Other Servers\Future Gaming Testing Server\gamemodes\FG-RP2.pwn(143) : error 035: argument type mismatch (argument 1)
C:\Other Servers\Future Gaming Testing Server\gamemodes\FG-RP2.pwn(294) : warning 203: symbol is never used: "ret_memcpy"
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


3 Errors.
*Sorry about the other post, didn't realize you posted here, until afterwards.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)