Wysłany: 2015-10-26, 21:44
GreeN.
Wiek: 27 Na forum: 4652 dni Posty: 137
Nick w MP: GreeN.
Piwa : 50
Przy komplikacji mam takie errory:
Kod: C:\Users\Adrian\Desktop\vip.pwn(82) : error 017: undefined symbol "S_CZERWONY"
C:\Users\Adrian\Desktop\vip.pwn(82) : warning 215: expression has no effect
C:\Users\Adrian\Desktop\vip.pwn(82) : error 001: expected token: ";", but found "-identifier-"
C:\Users\Adrian\Desktop\vip.pwn(82) : error 017: undefined symbol "S_OLIWKOWY"
C:\Users\Adrian\Desktop\vip.pwn(82) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
linijka 82:
Kod: format(str, 200, S_CZERWONY "Admin %s (ID:%d) mianowa? cie VIP'em\n" S_OLIWKOWY "podaj has?o dzi?ki kt?remu b?dziesz m?g? si? logowa?\nhas?o musi mie? od 4-16 znak?w\nwielko?? liter b?dzie brana pod uwag?!", PlayerName(playerid), playerid);
Wysłany: 2015-10-26, 21:52
ToxiC.
Wiek: 28 Na forum: 5246 dni Posty: 3792
Piwa : 8590
Na ko?cu przed ; brakuje ) no i nie masz definicji kolor?w: S_CZERWONY, S_OLIWKOWY.
Wysłany: 2015-10-26, 21:59
GreeN.
Wiek: 27 Na forum: 4652 dni Posty: 137
Nick w MP: GreeN.
Piwa : 50
Wysłany: 2015-10-26, 23:18
ToxiC.
Wiek: 28 Na forum: 5246 dni Posty: 3792
Piwa : 8590
Kod: format(str, 200, "Admin %s (ID:%d) mianowa? cie VIP'em\npodaj has?o dzi?ki kt?remu b?dziesz m?g? si? logowa?\nhas?o musi mie? od 4-16 znak?w\nwielko?? liter b?dzie brana pod uwag?!", PlayerName(playerid), playerid);
Wysłany: 2015-10-27, 17:49
GreeN.
Wiek: 27 Na forum: 4652 dni Posty: 137
Nick w MP: GreeN.
Piwa : 50
Dopisa?em definicje, ale mam tak:
Kod: C:\Users\Adrian\Desktop\vip.pwn(273) : error 029: invalid expression, assumed zero
C:\Users\Adrian\Desktop\vip.pwn(273) : warning 215: expression has no effect
C:\Users\Adrian\Desktop\vip.pwn(273) : error 001: expected token: ";", but found ")"
C:\Users\Adrian\Desktop\vip.pwn(273) : error 029: invalid expression, assumed zero
C:\Users\Adrian\Desktop\vip.pwn(273) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Kod: SendClientMessage(playerid, ZLOTY, "Brak tego gracza na li?cie vip?w!");
Wysłany: 2015-10-27, 18:02
ToxiC.
Wiek: 28 Na forum: 5246 dni Posty: 3792
Piwa : 8590
daj ca?? komend?, bo nie w tej linijce jest b??d, tylko gdzie? wy?ej albo ni?ej
Wysłany: 2015-10-27, 18:29
GreeN.
Wiek: 27 Na forum: 4652 dni Posty: 137
Nick w MP: GreeN.
Piwa : 50
ca?y skrypt:
Kod: #include <a_samp>
#define FILTERSCRIPT
#define S_CZERWONY
#define S_OLIWKOWY
#define ZLOTY
#include <zcmd>
#include <dir> // dla funkcji Rename (zmiena nazwy pliku)
#include <tfile> // dla funkcji DeleteFileLine oraz denter
#include <sscanf2>
#include <colors>
#define VPLIK "listavip.txt" // plik z lista vip?w
#define CanGiveVip(%0) (IsPlayerAdmin(%0)) // kto mo?e dawa? vipa
//id dialog?w wykorzystanych
#define DIALOG1 55
#define DIALOG2 56
//pomocnicza definicja
#define register%0(%1) forward%0(%1);\
public%0(%1)
#define MAX_DNI 30 // maksymalna ilo?? dni vipa jak? mo?na nada? (zawsze mo?na da? -1 czyli nie?ko?czon?)
#define S_MAX_DNI "30" // to samo co wyzej, tyle ?e w formie tekstu dla wy?wietlania powiadomienia
new str[256]; // og?lna tablica dla skryptu przechowuj?ca r??ne warto?ci
public OnFilterScriptInit()
{
if(!fexist(VPLIK))
{
new File:x = fopen(VPLIK, io_write);
fwrite(x, "Lista VIP (Nick|Haslo|Time)\r\n");
fclose(x);
}
return 1;
}
public OnFilterScriptExit()
{
for(new i = GetMaxPlayers() - 1; i >= 0; i--)
{
KillTimer(GetPVarInt(i, "VIPTIMER"));
DeletePVar(i, "VIPTIMER");
}
return 1;
}
public OnPlayerConnect(playerid)
{
VipTest(playerid); // zwraca 1 je?li nick gracza jest tu jako vip
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
KillTimer(GetPVarInt(playerid, "VIPTIMER"));
DeletePVar(playerid, "VIPTIMER");
return 1;
}
//------------------------------------------------------------------------------
CMD:dajvipa(playerid, params[])
{
if(!CanGiveVip(playerid))
return SendClientMessage(playerid, CZERWONY, "Brak uprawnie?!");
new dni, giveid;
if(sscanf(params, "dd", dni, giveid))
return SendClientMessage(playerid, BIALY, "U?yj: /dajvipa [dni] [id gracza]");
if(!IsPlayerConnected(giveid))
return SendClientMessage(playerid, CZERWONY, "Z?e id brak tego gracza na serwerze!");
if(giveid == playerid)
return SendClientMessage(playerid, CZERWONY, "Nie mo?esz sam sobie da? rangi vip!");
if(GetPVarInt(giveid, "vip"))
return SendClientMessage(playerid, CZERWONY, "Ten gracz posiada ju? rang? vip!");
if(dni == 0 || dni > MAX_DNI)
return SendClientMessage(playerid, CZERWONY, "Z?a ilo?c dni, podaj warto?? od 1 do "S_MAX_DNI" lub -1 dla niesko?czonego");
format(str, 200, S_CZERWONY "Admin %s (ID:%d) mianowa? cie VIP'em\n" S_OLIWKOWY "podaj has?o dzi?ki kt?remu b?dziesz m?g? si? logowa?\nhas?o musi mie? od 4-16 znak?w\nwielko?? liter b?dzie brana pod uwag?!", PlayerName(playerid), playerid);
ShowPlayerDialog(giveid, DIALOG2, DIALOG_STYLE_PASSWORD, "Has?o Vip",str, "Ok", "Anuluj");
SetPVarInt(giveid, "VIPDNI", dni);
format(str, 128, "Wys?ano pro?b? o has?o do gracza %s(%d)", PlayerName(giveid), giveid);
SendClientMessage(playerid, ZIELONY, str);
return 1;
}
//------------------------------------------------------------------------------
CMD:dajvipanick(playerid, params[])
{
if(!CanGiveVip(playerid))
return SendClientMessage(playerid, CZERWONY, "Brak uprawnie?!");
new dni, nick[MAX_PLAYER_NAME], pass[18];
if(sscanf(params, "ds[24]s[18]", dni, nick, pass))
return SendClientMessage(playerid, BIALY, "U?yj: /dajvipanick [dni] [nick] [has?o]");
if(pass[3] == EOS || strlen(pass) > 16)
return SendClientMessage(playerid, CZERWONY, "Has?o musi mie? od 4 do 16 znak?w!");
if(dni == 0 || dni > MAX_DNI)
return SendClientMessage(playerid, CZERWONY, "Z?a ilo?c dni, podaj warto?? od 1 do "S_MAX_DNI" lub -1 dla niesko?czonego");
format(str, 64, "%s|%d|%d\r\n", nick, udb_hash(pass), gettime() + (dni * 86400));
new File:x = fopen(VPLIK, io_append);
if(!x)
return SendClientMessage(playerid, CZERWONY, "B??d! Nie mo?na otworzy? pliku vip?w!");
fwrite(x, str);
fclose(x);
format(str, 128, "Doda?e? do listy VIP gracza %s has?o: %s", nick, pass);
SendClientMessage(playerid, ZIELONY, str);
return 1;
}
//------------------------------------------------------------------------------
CMD:zabierzvipa(playerid, params[])
{
if(!CanGiveVip(playerid))
return SendClientMessage(playerid, CZERWONY, "Brak uprawnie?!");
if(isnull(params))
return SendClientMessage(playerid, BIALY, "U?yj: /zabierzvipa [id gracza]");
new giveid = strval(params);
if(!IsPlayerConnected(giveid))
return SendClientMessage(playerid, CZERWONY, "Z?e id! dla graczy niepod??czonych u?yj /zabierzvipanick");
if(!GetPVarInt(giveid, "vip"))
return SendClientMessage(playerid, CZERWONY, "Ten gracz nie posiada rangi vip!");
new ok, kreska, line, File:x = fopen(VPLIK, io_read);
if(!x)
{
SendClientMessage(playerid, CZERWONY, "Brak dost?pu do pliku vip?w! (prawdopodobnie nie istnieje)");
}
else
{
while(fread(x, str))
{
kreska = strfind(str, "|");
if(kreska < 2)
{
line++;
continue;
}
str[kreska] = EOS;
if(!strcmp(PlayerName(giveid), str))
{
ok = true;
break;
}
line++;
}
fclose(x);
if(ok)
DeleteFileLine(VPLIK, line);
}
format(str, 128, "Admin %s zabra? vip'a %s (ID:%d)", PlayerName(playerid), PlayerName(giveid), giveid);
SendClientMessageToAll(NIEBIESKI, str);
DeletePVar(giveid, "vip");
return 1;
}
//------------------------------------------------------------------------------
CMD:zabierzvipanick(playerid, params[])
{
if(!CanGiveVip(playerid))
return SendClientMessage(playerid, CZERWONY, "Brak uprawnie?!");
if(isnull(params))
return SendClientMessage(playerid, BIALY, "U?yj: /zabierzvipanick [nick]");
if(strlen(params) > MAX_PLAYER_NAME)
return SendClientMessage(playerid, CZERWONY, "Tak d?ugi nick nie mo?e istnie?!");
new ok, kreska, line, File:x = fopen(VPLIK, io_read);
if(!x)
return SendClientMessage(playerid, CZERWONY, "Brak dost?pu do pliku vip?w! (prawdopodobnie nie istnieje)");
while(fread(x, str))
{
kreska = strfind(str, "|");
if(kreska < 2)
{
line++;
continue;
}
str[kreska] = EOS;
if(!strcmp(params, str))
{
ok = true;
break;
}
line++;
}
fclose(x);
if(ok)
{
format(str, 64, "Wykasowa?e? z listy vipa o nicku %s", params);
DeleteFileLine(VPLIK, line);
}
else
format(str, 64, "Brak nick'u %s na li?cie vip!", params);
SendClientMessage(playerid, ZIELONY, str);
return 1;
}
//------------------------------------------------------------------------------
CMD:checkvip(playerid, params[])
{
if(!CanGiveVip(playerid))
return SendClientMessage(playerid, CZERWONY, "Brak uprawnie?!");
if(isnull(params))
return SendClientMessage(playerid, BIALY, "U?yj: /checkvip [nick lub id]");
new nick[MAX_PLAYER_NAME];
if(isNumeric(params))
{
GetPlayerName(strval(params), nick, MAX_PLAYER_NAME);
if(!nick[0])
return SendClientMessage(playerid, CZERWONY, "Z?e id gracza!");
}
else
{
strcat(nick, params);
}
new File:x = fopen(VPLIK, io_read);
if(!x)
return SendClientMessage(playerid, CZERWONY, "B??d, brak dost?pu do pliku vip?w!");
new kreska;
while(fread(x, str))
{
denter(str);
kreska = strfind(str, "|");
if(kreska < 2)
continue;
str[kreska] = EOS;
if(!strcmp(nick, str))
{
fclose(x);
kreska++;
for(new len = strlen(str[kreska]) + kreska; kreska < len; kreska++)
if(str[kreska] == '|')
break;
new time = strval(str[kreska + 1]);
if(time == -1)
return SendClientMessage(playerid, ZIELONY, "Ten gracz posiada nielimitowane konto vip!");
if(time < gettime())
return SendClientMessage(playerid, ZIELONY, "Konto gracza istnieje, lecz ju? wygas?o!");
time -= gettime();
new dni, godzin, minut;
dni = time / 86400;
time -= dni * 86400;
godzin = time / 3600;
time -= godzin * 3600;
minut = time / 60;
time -= minut * 60;
format(str, 128, "Gracz %s ma konto aktywne jeszcze przez %d dni i %02d:%02d:%02d (g:m:s)", nick, dni, godzin, minut, time);
SendClientMessage(playerid, ZIELONY, str);
return 1;
}
}
fclose(x);
SendClientMessage(playerid, ZLOTY, "Brak tego gracza na li?cie vip?w!");
return 1;
}
//------------------------------------------------------------------------------
CMD:myvip(playerid, params[])
{
if(!GetPVarInt(playerid, "vip"))
return SendClientMessage(playerid, CZERWONY, "Nie posiadasz rangi vip!");
new nick[MAX_PLAYER_NAME];
GetPlayerName(playerid, nick, MAX_PLAYER_NAME);
new File:x = fopen(VPLIK, io_read);
if(!x)
return SendClientMessage(playerid, CZERWONY, "B??d, brak dost?pu do pliku vip?w!");
new kreska;
while(fread(x, str))
{
denter(str);
kreska = strfind(str, "|");
if(kreska < 2)
continue;
str[kreska] = EOS;
if(!strcmp(nick, str))
{
fclose(x);
kreska++;
for(new len = strlen(str[kreska]) + kreska; kreska < len; kreska++)
if(str[kreska] == '|')
break;
new time = strval(str[kreska + 1]);
if(time == -1)
return SendClientMessage(playerid, ZIELONY, "Posiadasz nielimitowane konto vip!");
if(time < gettime())
return SendClientMessage(playerid, ZIELONY, "B??d, twoje konto ju? wygas?o? zg?o? sie do admina!");
time -= gettime();
new dni, godzin, minut;
dni = time / 86400;
time -= dni * 86400;
godzin = time / 3600;
time -= godzin * 3600;
minut = time / 60;
time -= minut * 60;
format(str, 128, "Twoje konto jest aktywne jeszcze przez %d dni i %02d:%02d:%02d (g:m:s)", dni, godzin, minut, time);
SendClientMessage(playerid, ZIELONY, str);
return 1;
}
}
fclose(x);
SendClientMessage(playerid, ZLOTY, "Nie znaleziono ciebie na li?cie graczy vip, zg?o? si? do admina!");
return 1;
}
//------------------------------------------------------------------------------
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG1)
{
if(response)
{
if(inputtext[0] && udb_hash(inputtext) == GetPVarInt(playerid, "Vpass"))
{
SetPVarInt(playerid, "vip", true);
DeletePVar(playerid, "logvip");
format(str, 90, "Gracz %s pomy?lnie zalogowa? si? na VIP'a", PlayerName(playerid));
SendClientMessageToAll(ZLOTY, str);
return 1;
}
else
{
SetPVarInt(playerid, "logvip", GetPVarInt(playerid, "logvip") + 1);
SendClientMessage(playerid, CZERWONY, "Z?e has?o, pami?taj ?e wielko?? liter te? ma znaczenie!");
}
if(GetPVarInt(playerid, "logvip") >= 3)
{
format(str, 90, "Gracz %s zosta? wyrzucony za podanie z?ego has?a VIP'a", PlayerName(playerid));
SendClientMessageToAll(CZERWONY, str);
Kick(playerid);
return 1;
}
ShowPlayerDialog(playerid, DIALOG1, DIALOG_STYLE_PASSWORD, "Logowanie VIP", "Z?e has?o! po 3 z?ych logowaniach zostaniesz wyrzucony z serwera!\nby na nim gra? musisz poda? has?o\nje?li nie jeste? osob? o randze VIP, wyjd? i zmien sw?j nick", "OK", "Kick");
}
else
Kick(playerid);
return 1;
}
if(dialogid == DIALOG2)
{
if(!response)
{
DeletePVar(playerid, "VIPDNI");
return 1;
}
if(strlen(inputtext) < 4 || strlen(inputtext) > 16)
{
SendClientMessage(playerid, CZERWONY, "Has?o musi mie? od 4-16 znak?w!");
ShowPlayerDialog(playerid, DIALOG2, DIALOG_STYLE_PASSWORD, "Has?o Vip", "Z?e has?o\nmusi mie? od 4-16 znak?w", "Ok", "Anuluj");
return 1;
}
format(str, 64, "%s|%d|%d\r\n", PlayerName(playerid), udb_hash(inputtext), (GetPVarInt(playerid, "VIPDNI") <= 0) ? (-1) : (gettime() + (GetPVarInt(playerid, "VIPDNI") * 86400)));
new File:x = fopen(VPLIK, io_append);
if(!x)
return SendClientMessage(playerid, CZERWONY, "Wynik? powa?ny b??d z plikiem vip?w!");
fwrite(x, str);
fclose(x);
SetPVarInt(playerid, "vip", true);
format(str, 128, "Gracz %s pomy?lnie zalogowa? si? na VIP'a", PlayerName(playerid));
SendClientMessageToAll(ZLOTY, str);
return 1;
}
return 1;
}
VipTest(playerid)
{
new File:x = fopen(VPLIK,io_read);
if(!x)
return false;
new nick[MAX_PLAYER_NAME], time, pass, line;
while(fread(x, str))
{
denter(str);
if(sscanf(str, "p<|>s[24]dd", nick, pass, time))
continue;
if(!strcmp(PlayerName(playerid), nick))
{
if(time == -1)
{}
else if(time < gettime())
{
fclose(x);
DeleteFileLine(VPLIK, line);
return false;
}
else if((time - gettime()) < 86400)
SetPVarInt(playerid, "VIPTIMER", SetTimerEx("ZabierzVipa", (time - gettime()) * 1000, false, "d", playerid));
SetPVarInt(playerid, "Vpass", pass);
ShowPlayerDialog(playerid, DIALOG1, DIALOG_STYLE_PASSWORD, "Logowanie VIP", "Ten nick jest tu zarejestrowany jako vip\nby na nim gra? musisz poda? has?o\nw innym razie opu?? serwer", "OK", "Kick");
fclose(x);
return true;
}
line++;
}
fclose(x);
return false;
}
stock PlayerName(playerid)
{
new Name[MAX_PLAYER_NAME];
GetPlayerName(playerid, Name, sizeof Name);
return Name;
}
stock udb_hash(buf[])
{
new s1 = 1, s2;
for(new n, len = strlen(buf); n < len; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}
stock isNumeric(const string[])
{
for(new i = strlen(string) - 1; i >= 0; i--)
if (string[i] > '9' || string[i] < '0')
return false;
return true;
}
register ZabierzVipa(playerid)
{
SendClientMessage(playerid, OLIWKOWY, "Uwaga! twoje konto vip w?a?nie wygas?o!");
DeletePVar(playerid, "vip");
DeletePVar(playerid, "VIPTIMER");
return 1;
}
[ Dodano : 2015-10-28, 10:34 ]
heh, ca?y kod wraz z t? linijk?::
Kod: CMD:checkvip(playerid, params[])
{
if(!CanGiveVip(playerid))
return SendClientMessage(playerid, CZERWONY, "Brak uprawnie?!");
if(isnull(params))
return SendClientMessage(playerid, BIALY, "U?yj: /checkvip [nick lub id]");
new nick[MAX_PLAYER_NAME];
if(isNumeric(params))
{
GetPlayerName(strval(params), nick, MAX_PLAYER_NAME);
if(!nick[0])
return SendClientMessage(playerid, CZERWONY, "Z?e id gracza!");
}
else
{
strcat(nick, params);
}
new File:x = fopen(VPLIK, io_read);
if(!x)
return SendClientMessage(playerid, CZERWONY, "B??d, brak dost?pu do pliku vip?w!");
new kreska;
while(fread(x, str))
{
denter(str);
kreska = strfind(str, "|");
if(kreska < 2)
continue;
str[kreska] = EOS;
if(!strcmp(nick, str))
{
fclose(x);
kreska++;
for(new len = strlen(str[kreska]) + kreska; kreska < len; kreska++)
if(str[kreska] == '|')
break;
new time = strval(str[kreska + 1]);
if(time == -1)
return SendClientMessage(playerid, ZIELONY, "Ten gracz posiada nielimitowane konto vip!");
if(time < gettime())
return SendClientMessage(playerid, ZIELONY, "Konto gracza istnieje, lecz ju? wygas?o!");
time -= gettime();
new dni, godzin, minut;
dni = time / 86400;
time -= dni * 86400;
godzin = time / 3600;
time -= godzin * 3600;
minut = time / 60;
time -= minut * 60;
format(str, 128, "Gracz %s ma konto aktywne jeszcze przez %d dni i %02d:%02d:%02d (g:m:s)", nick, dni, godzin, minut, time);
SendClientMessage(playerid, ZIELONY, str);
return 1;
}
}
fclose(x);
SendClientMessage(playerid, ZLOTY, "Brak tego gracza na li?cie vip?w!"); <<< to ta linijka 273
return 1;
}
a tu drugi kod pod t? linijk?:
Kod: //------------------------------------------------------------------------------
CMD:myvip(playerid, params[])
{
if(!GetPVarInt(playerid, "vip"))
return SendClientMessage(playerid, CZERWONY, "Nie posiadasz rangi vip!");
new nick[MAX_PLAYER_NAME];
GetPlayerName(playerid, nick, MAX_PLAYER_NAME);
new File:x = fopen(VPLIK, io_read);
if(!x)
return SendClientMessage(playerid, CZERWONY, "B??d, brak dost?pu do pliku vip?w!");
new kreska;
while(fread(x, str))
{
denter(str);
kreska = strfind(str, "|");
if(kreska < 2)
continue;
str[kreska] = EOS;
if(!strcmp(nick, str))
{
fclose(x);
kreska++;
for(new len = strlen(str[kreska]) + kreska; kreska < len; kreska++)
if(str[kreska] == '|')
break;
new time = strval(str[kreska + 1]);
if(time == -1)
return SendClientMessage(playerid, ZIELONY, "Posiadasz nielimitowane konto vip!");
if(time < gettime())
return SendClientMessage(playerid, ZIELONY, "B??d, twoje konto ju? wygas?o? zg?o? sie do admina!");
time -= gettime();
new dni, godzin, minut;
dni = time / 86400;
time -= dni * 86400;
godzin = time / 3600;
time -= godzin * 3600;
minut = time / 60;
time -= minut * 60;
format(str, 128, "Twoje konto jest aktywne jeszcze przez %d dni i %02d:%02d:%02d (g:m:s)", dni, godzin, minut, time);
SendClientMessage(playerid, ZIELONY, str);
return 1;
}
}
fclose(x);
SendClientMessage(playerid, ZLOTY, "Nie znaleziono ciebie na li?cie graczy vip, zg?o? si? do admina!");
return 1;
}
Tagi: vip
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: