[Ajuda] ajeita essa filterscript para logs ao entrar
#1

tenho essa filterscript
porйm queria que o serial salvasse imediatamente quando o player entrasse no servidor na pasta scriptfiles/logs
Код:
#include <a_samp>
#include <zcmd>
#include <SII>

#define COLOR_GREY      0x969696FF
#define COLOR_BAN               0xA9C4E4FF
#define DialogBoxEx 1

#define Kick(%0) SetTimerEx("Kicka", 100, false, "i", %0)

forward Kicka(p); public Kicka(p) {
    #undef Kick
    Kick(p);
    #define Kick(%0) SetTimerEx("Kicka", 100, false, "i", %0)
    return 1;
}

#define Ban(%0) SetTimerEx("Bana", 100, false, "i", %0)

forward Bana(p); public Bana(p) {
    #undef Ban
    Ban(p);
    #define Ban(%0) SetTimerEx("Bana", 100, false, "i", %0)
    return 1;
}

native gpci(playerid, const serial[ ], maxlen);

public OnPlayerConnect(playerid)
{
        if(fexist(GetPlayerSerialINI(playerid))) {
                new str[500];
                SendClientMessage(playerid,COLOR_BAN," » Seu serial estб banido do servidor!");
                format(str, sizeof(str), "{B22222}Seu serial estб banido do servidor! \n{B22222}Serial:{FFFFFF} %s \n{B22222}Se acha que isso й um engano, tire uma Print Screen(F8) desse Ban \nEntre em nosso fуrum: {FFFFFF}forum.com \n{B22222}E crie uma revisгo.", GetPlayerSerial(playerid));
                ShowPlayerDialog(playerid, DialogBoxEx, DIALOG_STYLE_MSGBOX, "Serial Banido!", str, "Ok", "Cancelar");
				Kick(playerid);
        }
        return 1;
}

CMD:sbanserial(playerid,params[])
{
        new targetid,reason[256];
        if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,0xC20000FF,"| ERRO | Comando inexistente!");
        if(sscanf(params,"us",targetid,reason))return SendClientMessage(playerid,0xFFA300FF, "USO: /sban [ID] [Motivo]");
        if(!IsPlayerConnected(targetid))return SendClientMessage(playerid,0xC20000FF," » Este jogador nгo estб conectado!");
        if(INI_Open(GetPlayerSerialINI(targetid))) {
            INI_WriteInt("Banned",1);
            INI_Save();
            INI_Close();
        }
        new playername[MAX_PLAYER_NAME],targetname[MAX_PLAYER_NAME],string[256];
        GetPlayerName(playerid,playername,sizeof(playername));
        GetPlayerName(targetid,targetname,sizeof(targetname));
        format(string,sizeof(string),"O Administador %s baniu o jogador %s ( Motivo: %s )",playername,targetname,reason);
        SendClientMessageToAll(0xC5242DFF,string);
        Ban(targetid);
        return 1;
}
CMD:seriais(playerid,params[])
{
        if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,0xC20000FF,"| ERRO | Comando inexistente!");
        SendClientMessage(playerid,COLOR_GREY,"-- Serial de todos os jogadores --");
        for(new i = 0; i < MAX_PLAYERS; i++) {
                if(IsPlayerConnected(i)) {
            new playername[MAX_PLAYER_NAME],str[256];
            GetPlayerName(i,playername,sizeof(playername));
            format(str,sizeof(str),"~~ %s - %s ~~",playername,GetPlayerSerial(i));
            SendClientMessage(playerid,COLOR_GREY,str);
                }
        }
        return 1;
}

stock GetPlayerSerial(playerid)
{
        new serial[512];
        gpci(playerid,serial,sizeof(serial));
        return serial;
}

stock GetPlayerSerialINI(playerid)
{
        new serialini[512];
        format(serialini,sizeof(serialini),"Serialbans/%s.sb",GetPlayerSerial(playerid));
        return serialini;
}

stock sscanf(string[], format[], {Float,_}:...)
{
        #if defined isnull
                if (isnull(string))
        #else
                if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
        #endif
                {
                        return format[0];
                }
        #pragma tabsize 4
        new
                formatPos = 0,
                stringPos = 0,
                paramPos = 2,
                paramCount = numargs(),
                delim = ' ';
        while (string[stringPos] && string[stringPos] <= ' ')
        {
                stringPos++;
        }
        while (paramPos < paramCount && string[stringPos])
        {
                switch (format[formatPos++])
                {
                        case '\0':
                        {
                                return 0;
                        }
                        case 'i', 'd':
                        {
                                new
                                        neg = 1,
                                        num = 0,
                                        ch = string[stringPos];
                                if (ch == '-')
                                {
                                        neg = -1;
                                        ch = string[++stringPos];
                                }
                                do
                                {
                                        stringPos++;
                                        if ('0' <= ch <= '9')
                                        {
                                                num = (num * 10) + (ch - '0');
                                        }
                                        else
                                        {
                                                return -1;
                                        }
                                }
                                while ((ch = string[stringPos]) > ' ' && ch != delim);
                                setarg(paramPos, 0, num * neg);
                        }
                        case 'h', 'x':
                        {
                                new
                                        num = 0,
                                        ch = string[stringPos];
                                do
                                {
                                        stringPos++;
                                        switch (ch)
                                        {
                                                case 'x', 'X':
                                                {
                                                        num = 0;
                                                        continue;
                                                }
                                                case '0' .. '9':
                                                {
                                                        num = (num << 4) | (ch - '0');
                                                }
                                                case 'a' .. 'f':
                                                {
                                                        num = (num << 4) | (ch - ('a' - 10));
                                                }
                                                case 'A' .. 'F':
                                                {
                                                        num = (num << 4) | (ch - ('A' - 10));
                                                }
                                                default:
                                                {
                                                        return -1;
                                                }
                                        }
                                }
                                while ((ch = string[stringPos]) > ' ' && ch != delim);
                                setarg(paramPos, 0, num);
                        }
                        case 'c':
                        {
                                setarg(paramPos, 0, string[stringPos++]);
                        }
                        case 'f':
                        {

                                new changestr[16], changepos = 0, strpos = stringPos;
                                while(changepos < 16 && string[strpos] && string[strpos] != delim)
                                {
                                        changestr[changepos++] = string[strpos++];
                                }
                                changestr[changepos] = '\0';
                                setarg(paramPos,0,_:floatstr(changestr));
                        }
                        case 'p':
                        {
                                delim = format[formatPos++];
                                continue;
                        }
                        case '\'':
                        {
                                new
                                        end = formatPos - 1,
                                        ch;
                                while ((ch = format[++end]) && ch != '\'') {}
                                if (!ch)
                                {
                                        return -1;
                                }
                                format[end] = '\0';
                                if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
                                {
                                        if (format[end + 1])
                                        {
                                                return -1;
                                        }
                                        return 0;
                                }
                                format[end] = '\'';
                                stringPos = ch + (end - formatPos);
                                formatPos = end + 1;
                        }
                        case 'u':
                        {
                                new
                                        end = stringPos - 1,
                                        id = 0,
                                        bool:num = true,
                                        ch;
                                while ((ch = string[++end]) && ch != delim)
                                {
                                        if (num)
                                        {
                                                if ('0' <= ch <= '9')
                                                {
                                                        id = (id * 10) + (ch - '0');
                                                }
                                                else
                                                {
                                                        num = false;
                                                }
                                        }
                                }
                                if (num && IsPlayerConnected(id))
                                {
                                        setarg(paramPos, 0, id);
                                }
                                else
                                {
                                        #if !defined foreach
                                                #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
                                                #define __SSCANF_FOREACH__
                                        #endif
                                        string[end] = '\0';
                                        num = false;
                                        new
                                                name[MAX_PLAYER_NAME];
                                        id = end - stringPos;
                                        foreach (Player, playerid)
                                        {
                                                GetPlayerName(playerid, name, sizeof (name));
                                                if (!strcmp(name, string[stringPos], true, id))
                                                {
                                                        setarg(paramPos, 0, playerid);
                                                        num = true;
                                                        break;
                                                }
                                        }
                                        if (!num)
                                        {
                                                setarg(paramPos, 0, INVALID_PLAYER_ID);
                                        }
                                        string[end] = ch;
                                        #if defined __SSCANF_FOREACH__
                                                #undef foreach
                                                #undef __SSCANF_FOREACH__
                                        #endif
                                }
                                stringPos = end;
                        }
                        case 's', 'z':
                        {
                                new
                                        i = 0,
                                        ch;
                                if (format[formatPos])
                                {
                                        while ((ch = string[stringPos++]) && ch != delim)
                                        {
                                                setarg(paramPos, i++, ch);
                                        }
                                        if (!i)
                                        {
                                                return -1;
                                        }
                                }
                                else
                                {
                                        while ((ch = string[stringPos++]))
                                        {
                                                setarg(paramPos, i++, ch);
                                        }
                                }
                                stringPos--;
                                setarg(paramPos, i, '\0');
                        }
                        default:
                        {
                                continue;
                        }
                }
                while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
                {
                        stringPos++;
                }
                while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
                {
                        stringPos++;
                }
                paramPos++;
        }
        do
        {
                if ((delim = format[formatPos++]) > ' ')
                {
                        if (delim == '\'')
                        {
                                while ((delim = format[formatPos++]) && delim != '\'') {}
                        }
                        else if (delim != 'z')
                        {
                                return delim;
                        }
                }
        }
        while (delim > ' ');
        return 0;
}
Reply
#2

Vocк quer dizer que deseja salvб-lo no arquivo do jogador, basta salvar a string gpci e inseri-la como uma string no arquivo ini usando ini, pois este й o seu sistema de arquivos. Tal como: OnPlayerConnect:
PHP код:
new string[80];
gpci(playeridstringsizeof(string));
INI_WriteString(ini"SERIAL"string); 
Reply
#3

deu erro
Quote:

D:\Easy DM\filterscripts\sban.pwn(54) : error 017: undefined symbol "ini"
D:\Easy DM\filterscripts\sban.pwn(56) : error 021: symbol already defined: "string"
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

Reply
#4

Quote:
Originally Posted by helpmesamp
Посмотреть сообщение
deu erro
Aquilo foi apenas um exemplo! vocк nгo deve colocб-lo como estб.

De qualquer forma, ficaria assim em seu cуdigo:

PHP код:
new stringserial[80];
gpci(playeridstringserialsizeof(stringserial));
INI_WriteString(GetPlayerSerialINI(playerid), "SERIAL"stringserial); 
Reply
#5

Como colocaria na filterscript isso pra salvar na pasta seriais ?
Como faзo me ajuda so novato no pawno
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)