tban.inc |
dini_1_6.zip #if defined _tban_included
#endinput
#endif
#define _tban_included
#include <dini>
// By: GameStar
stock second(time)
{
time = time * 1000;
return time;
}
stock minute(time) return time;
stock hour(time)
{
time = time*60;
return time;
}
stock day(time)
{
time = hour(time) * 24;
return time;
}
#define MAX_BANN 100
new BannTime[MAX_BANN];
forward b_OnGameModeInit();
forward Banntimers(banid);
public b_OnGameModeInit()
{
new bf[128];
for(new b; b<=MAX_BANN; b++)
{
format(bf,128,\"/BannTime/%d.ini\",b);
if(dini_Exists(bf))
{
BannTime = dini_Int(bf,\"time\");
SetTimerEx(\"Banntimers\",60000,1,\"i\",b);
}
}
return 1;
}
stock TBan(playerid,type,time)
{
new ip[128],b[128];
new nextb = NextBan();
format(b,128,\"/BannTime/%d.ini\",nextb);
dini_Create(b);
dini_Set(b,\"Name\",GetName(playerid));
GetPlayerIp(playerid,ip,sizeof(ip));
dini_Set(b,\"IP\",ip);
if(type == 1)
{
minute(time);
}
if(type == 2)
{
hour(time);
}
if(type == 3)
{
day(time);
}
dini_IntSet(b,\"time\",time);
BannTime[nextb] = time;
SetTimerEx(\"Banntimers\",60000,1,\"i\",nextb);
Ban(playerid);
return 1;
}
stock TBanEx(playerid,reason[],type,time)
{
new b[128],ip[128];
new nextb = NextBan();
format(b,128,\"/BannTime/%d\",nextb);
dini_Create(b);
dini_Set(b,\"Name\",GetName(playerid));
GetPlayerIp(playerid,ip,sizeof(ip));
dini_Set(b,\"IP\",ip);
if(type == 1)
{
minute(time);
}
if(type == 2)
{
hour(time);
}
if(type == 3)
{
day(time);
}
dini_IntSet(b,\"time\",time);
BannTime[nextb] = time;
SetTimerEx(\"Banntimers\",60000,1,\"i\",nextb);
BanEx(playerid,reason);
return 1;
}
stock GetName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
}
public Banntimers(banid)
{
new b[128];
format(b,128,\"/BannTime/%d.ini\",banid);
if(dini_Exists(b))
{
BannTime[banid] -= 1;
dini_IntSet(b,\"time\",BannTime[banid]);
if(dini_Int(b,\"time\") == 0) return UnBan(b);
}
return 1;
}
stock UnBan(file[])
{
new ub[128];
if(dini_Exists(file))
{
format(ub,128,\"unbanip %s\",dini_Get(file,\"IP\"));
SendRconCommand(ub);
dini_Remove(file);
}
return 1;
}
stock NextBan()
{
new b[128];
for(new bc; bc<=MAX_BANN; bc++)
{
format(b,128,\"/BannTime/%d.ini\",bc);
if(bc != 0 && !dini_Exists(b)) return bc;
}
return 1;
}
Teszt script #include <a_samp>
#include <tban>
#include <zcmd>
#include <sscanf2>
CMD:tban(playerid,params[])
{
new p,time;
if(sscanf(params,\"ui\",p,time)) return 1;
TBan(p,2,time); //óra
return 1;
}
CMD:tbanex(playerid,params[])
{
new p,time;
if(sscanf(params,\"ui\",p,time)) return 1;
TBanEx(p,\"asd\",2,time); //óra
return 1;
}
A retkes g3ci TP-Link router miatt nem tudok semmi leszedni solidfilesrõl.
Amugy jónak tûnik.
Ott a kód spoilerbe :)
E: Ment pastebinre is.
Köszkösz.
Amugy elsõ függvénykönyvtárad?
Mert függvénykönyvtárakba nem szokás beágyazni az alap a_samp függvénykönyvtárat.
Köszkösz.
Amugy elsõ függvénykönyvtárad?
Mert függvénykönyvtárakba nem szokás beágyazni az alap a_samp függvénykönyvtárat.
Nem, sokadik. De, sokszor és sokan ágyazzák be, mert egyes funkciók csak úgy mûködnek. Egyébként nem tesz keresztbe semminek és senkinek :)
Nem hiszem hogy tesztelted volna a függvénykönyvtárat.
Köszkösz.
Amugy elsõ függvénykönyvtárad?
Mert függvénykönyvtárakba nem szokás beágyazni az alap a_samp függvénykönyvtárat.
Nem, sokadik. De, sokszor és sokan ágyazzák be, mert egyes funkciók csak úgy mûködnek. Egyébként nem tesz keresztbe semminek és senkinek :)
[/quote]
Ha elõtte be van ágyazva (mint minden normális script elején, amit használni akarsz) akkor nem kell. Maximum, ha a függvénykönytárból akarsz scriptet csinálni.
Most, hogy átnézem, van benne pár hiba.
stock NextBan()
{
new b[128];
for(new bc; bc<=MAX_BANN; bc++)
{
format(b,128,\"\\BannTime\\%d.ini\",bc);
if(!dini_Exists(b)) return bc;
return 1;
}
stock GetName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
}
public Bantimers()
{
new b[128];
for(new bc; bc<=MAX_BANN; bc++)
{
format(b,128,\"\\BannTime\\%d.ini\",bc);
if(dini_Exists(b))
{
BannTime[bc] -= 1;
dini_IntSet(b,\"time\",BannTime[bc]);
if(dini_Int(b,\"time\") == 0) return UnBan(b);
}
}
return 1;
}
stock UnBan(file[])
{
new ub[128];
if(dini_Exists(file))
{
format(ub,128,\"unbanip %s\",dini_Get(file,\"IP\"));
SendRCONCommand(ub);
dini_Remove(file);
}
return 1;
}
Tesztelted is?
Nem. Kösz , hogy szóltál, javítva.
Sajnos nem tudom tesztelni, ha valaki talál benne még hibát szóljon, javítom.
a 36-41. sorig levan hagyva a \" ; \" (pontos vesszõ) jel a dini.dtest -ben :)
Szerintem a \"ban\" angol szót egy \"n\"-el írják. Illetve nem hiszem hogy tesztelve lett ez a script.
Sajnos nem tudom tesztelni, ha valaki talál benne még hibát szóljon, javítom.
a 36-41. sorig levan hagyva a \" ; \" (pontos vesszõ) jel a dini.dtest -ben :)
[/quote]
???
Idézek, csak neked a Szabályzatból:
NE publikálj nem mûködõ scriptet [WRONG] tagek-kel SEM![/quote]
Illetve vonatkozik azokra a scriptekre, gyûjteményekre, gamemodokra, amely nem lett tesztelve!
Idézek, csak neked a Szabályzatból:
NE publikálj nem mûködõ scriptet [WRONG] tagek-kel SEM!
Illetve vonatkozik azokra a scriptekre, gyûjteményekre, gamemodokra, amely nem lett tesztelve!
[/quote]
Ha hazaérek fogom tesztelni.
Dupla hozzászólás automatikusan összefûzve. ( 2012. június 17. - 13:33:23 )
Javított 1.2-es verzió hozzáadva.