Jump to content
  • 0

pomoc VIP


Firess0

Dotaz

 

 

 

ako tu mam pridať mktime aby som dal /setvip [id] [koľko dni]

 

#include <a_samp>

#include <dini>

 

new Vip[MAX_PLAYERS];

new removevip[50];

new vipsave[50];

 

 

stock Meno(playerid)

{

new pName[MAX_PLAYER_NAME];

if(IsPlayerConnected(playerid))

{

GetPlayerName(playerid, pName, sizeof(pName));

}

return pName;

}

 

#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

 

 

public OnPlayerConnect(playerid)

{

format(vipsave, sizeof(vipsave), "/VIP/%s.vip", Meno(playerid));

Vip[playerid] = dini_Bool(vipsave, "VIP");

return 1;

}

 

public OnPlayerDisconnect(playerid, reason)

{

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;

}

 

public OnPlayerCommandText(playerid, cmdtext[])

{

dcmd(getvip,6,cmdtext);

dcmd(removevip,9,cmdtext);

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[])

{

return 1;

}

 

public OnPlayerClickPlayer(playerid, clickedplayerid, source)

{

return 1;

}

 

dcmd_getvip(playerid, params[])

{

new id = strval(params);

if (!strlen(params)) return SendClientMessage(playerid, -1, "Použitie: /getvip [iD]");

else if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "Hráč s takímto ID nieje práve na on-line.");

else if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Iba RCON admin môže nadstavovať VIP");

else if(Vip[id] == 1) return SendClientMessage(playerid, -1, "Tento hráč už vlastní VIP");

else

{

Vip[id] = 1;

new getvip[50];

format(getvip, sizeof(getvip), "Admin %s aktivoval hráčovy %s VIP.", Meno(playerid), Meno(id));

SendClientMessageForAll(-1, getvip);

format(vipsave, sizeof(vipsave), "/VIP/%s.vip", Meno(id));// Súbor sa bude ukladať do scriptfiles/VIP/meno.vip

if(!dini_Exists(vipsave))// ak hráčov súbor neexistuje

{

dini_Create(vipsave);// tak ho vytvoríme

dini_BoolSet(vipsave, "VIP", Vip[playerid]);// a uložíme VIP

}

return 1;

}

 

 

 

 

 

 

 

 

 

 

 

 

dcmd_removevip(playerid, params[])

{

new id = strval(params);

if (!strlen(params)) return SendClientMessage(playerid, -1, "Použitie: /removevip [iD]");

else if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "Hráč s takímto ID nieje práve na on-line.");

else if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Iba RCON admin môže odoberať VIP");

else if(Vip[id] == 0) return SendClientMessage(playerid, -1, "Tento hráč nevlastní VIP");

else

{

Vip[id] = 0;

format(removevip, sizeof(removevip), "Admin %s odobral hráčovi %s VIP", Meno(playerid), Meno(id));

SendClientMessageToAll(-1, removevip);

format(vipsave, sizeof(vipsave), "/VIP/%s.vip", Meno(id));// Budeme to ukladať do priečinku vip v Scriptfiles, prípomonu si možte zmeniť

if(dini_Exists(removevip))

{

dini_Remove(removevip); // Odstani hracov subor v /VIP/meno.vip

}

}

return 1;

}

Edited by Firess0
Link to comment
Share on other sites

20 odpovědí na tuto otázku

Recommended Posts

  • 0

Normálne mu uložíš do súboru hráča (tam kde ukladáš údaje pri odpojení) čas, kedy má VIP vypršať... Potom už len pri prihlásení kontroluješ či už ten čas bol alebo nie

 

:d ľahké jak facka...

 

PS: ak si to nedokážeš predstaviť, vykašli sa na to

Link to comment
Share on other sites

  • 0

ach bože.... TUTy sú od toho aby si sa z nich učil nie ich kopíroval a pi*u vedel čo robia...

 

poďme krok po kroku...

 

namiesto dini_BoolSet(vipsave, "VIP", Vip[playerid]);

použijeme dini_IntSet(vipsave, "VIP", gettime()+24*60*60*pocet_dni); // pocet_dni zmeň na číslo alias počet dní na ktoré bude mať hráč VIP

 

Gratulujem!! Práve si dokázal zmeniť permanentné VIP na časovo obmädzené VIP ;) a trvalo to až neuveritelných 5 sekund....

 

 

No ale že som kamarát tak ti ešte prihodím bonus aby ti to VIP fungovalo správne.

 

public OnPlayerConnect(playerid)

{
format(vipsave, sizeof(vipsave), "/VIP/%s.vip", Meno(playerid));
if(dini_Int(vipsave, "VIP") > gettime()){
Vip[playerid] = true;}else{Vip[playerid] = false;}

return 1;
}

 

a ako třešničku na torte ti dám TIP: hore máš new Vip[MAX_PLAYERS]; tak si to zmeň na new bool:Vip[MAX_PLAYERS];

 

________________________________________________________________________________________________________________

 

Zhodnotenie: je to funkčné ale má to 1 bug a to, že kým sa hráč neodhlási tak má VIP aj po uplinutí času :d dá sa to spraviť ale nechce sa mi ti to vysvetlovať

Link to comment
Share on other sites

  • 0

dakujem pekne ! :d


a keť chcem mu dať cez prikaz ?? :d


tieto dni ?


a ešte k tomu

 

C:\Users\Olik\Desktop\pawno\vipr.pwn(84) : error 017: undefined symbol "dcmd_removevip"

C:\Users\Olik\Desktop\pawno\vipr.pwn(229) : warning 213: tag mismatch
C:\Users\Olik\Desktop\pawno\vipr.pwn(232) : warning 213: tag mismatch
C:\Users\Olik\Desktop\pawno\vipr.pwn(235) : error 017: undefined symbol "SendClientMessageForAll"
C:\Users\Olik\Desktop\pawno\vipr.pwn(247) : warning 225: unreachable code
C:\Users\Olik\Desktop\pawno\vipr.pwn(247) : error 017: undefined symbol "dcmd_removevip"
C:\Users\Olik\Desktop\pawno\vipr.pwn(249) : warning 219: local variable "id" shadows a variable at a preceding level
C:\Users\Olik\Desktop\pawno\vipr.pwn(253) : warning 213: tag mismatch
C:\Users\Olik\Desktop\pawno\vipr.pwn(256) : warning 213: tag mismatch
C:\Users\Olik\Desktop\pawno\vipr.pwn(267) : error 030: compound statement not closed at the end of file (started at line 225)
Link to comment
Share on other sites

  • 0

Nemáš include dcmd.... A nemáš to odtabované.

Odkedy je INCLUDE od DCMD ? :d mne sa zdá .. že to je len jednoriadkovy DEFINE :d 

 

#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

Ale pre začiatok . DCMD :d je nahovno .. skus ZCMD .. fakt lahké

CMD:TVOJ CMD(playerid, params[])
{
     return 1;
​}

a žiadne .. počítanie .. čísiel a iných chujovín .. je to to isté len .. lepšie no , a ked si už tak lepší tak odporúčam YCMD :d

 

>>>ODKAZ AKO NA ZCMD<<<

Edited by eXpresS <- Ten uNNameD
Link to comment
Share on other sites

  • 0

Odkedy je INCLUDE od DCMD ? :d mne sa zdá .. že to je len jednoriadkovy DEFINE :d 

 

#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

Ale pre začiatok . DCMD :d je nahovno .. skus ZCMD .. fakt lahké

CMD:TVOJ CMD(playerid, params[])
{
     return 1;
​}

a žiadne .. počítanie .. čísiel a iných chujovín .. je to to isté len .. lepšie no , a ked si už tak lepší tak odporúčam YCMD :d

 

>>>ODKAZ AKO NA ZCMD<<<

"TVOJ CMD"

 

:DDD

Link to comment
Share on other sites

  • 0

Pomôžte mi z error pls

 

 

 

 

 

// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
 
#include <a_samp>
#include <Dini>
 
new bool:Vip[MAX_PLAYERS];
new removevip[50];
new vipsave[50];
 
stock Meno(playerid)
{
   new pName[MAX_PLAYER_NAME];
   if(IsPlayerConnected(playerid))
   {
         GetPlayerName(playerid, pName, sizeof(pName));
   }
   return pName;
}
 
#define FARBA -1
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
 
public OnFilterScriptInit()
{
return 1;
}
 
public OnGameModeInit()
{
return 1;
}
 
public OnGameModeExit()
{
return 1;
}
 
public OnPlayerRequestClass(playerid, classid)
{
return 1;
}
 
public OnPlayerConnect(playerid)
{
    format(vipsave, sizeof(vipsave), "/VIP/%s.vip", Meno(playerid));// Cesta k hráčovému súboru meno.vip
    Vip[playerid] = dini_Bool(vipsave, "VIP");// Zo súboru načítame VIP
return 1;
}
 
public OnPlayerDisconnect(playerid, reason)
{
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;
}
 
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
    dcmd(getvip,6,cmdtext);
        dcmd(removevip,9,cmdtext);
return 1;
}
return 0;
}
 
dcmd_getvip(playerid, params[])
{
    new id = strval(params);
if (!strlen(params)) return SendClientMessage(playerid, FARBA, "Použitie: /getvip [iD]");
else if(!IsPlayerConnected(id)) return SendClientMessage(playerid,  FARBA, "Hráč s takímto ID nieje práve na on-line.");
else if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, FARBA, "Iba RCON admin môže nadstavovať VIP");
else if(Vip[id] == 1) return SendClientMessage(playerid, FARBA, "Tento hráč už vlastní VIP");
else
{
Vip[id] = 1;
new getvip[50];
format(getvip, sizeof(getvip), "Admin %s aktivoval hráčovy %s VIP.", Meno(playerid), Meno(id));
format(vipsave, sizeof(vipsave), "/VIP/%s.vip", Meno(id));// Súbor sa bude ukladať do scriptfiles/VIP/meno.vip
if(!dini_Exists(vipsave))// ak hráčov súbor neexistuje
{
dini_Create(vipsave);// tak ho vytvoríme
dini_IntSet(vipsave, "VIP", gettime()+24*60*60*30);
}
}
    return 1;
}
 
 
dcmd_removevip(playerid, params[])
{
    new id = strval(params);
if (!strlen(params)) return SendClientMessage(playerid, -1, "Použitie: /removevip [iD]");
else if(!IsPlayerConnected(id)) return SendClientMessage(playerid,  -1, "Hráč s takímto ID nieje práve na on-line.");
else if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Iba RCON admin môže odoberať VIP");
else if(Vip[id] == 0) return SendClientMessage(playerid, -1, "Tento hráč nevlastní VIP");
else
{
Vip[id] = 0;
format(removevip, sizeof(removevip), "Admin %s odobral hráčovi %s VIP", Meno(playerid), Meno(id));
SendClientMessageToAll(FARBA, removevip);
format(vipsave, sizeof(vipsave), "/VIP/%s.vip", Meno(id));// Budeme to ukladať do priečinku vip v Scriptfiles, prípomonu si možte zmeniť
if(dini_Exists(removevip))
{
dini_Remove(removevip); // Odstani hracov subor v /VIP/meno.vip
}
}
return 1;
}
 
 
 
 
tu su errori 
C:\Users\Olik\Desktop\pawno\vipr.pwn(48) : warning 213: tag mismatch
C:\Users\Olik\Desktop\pawno\vipr.pwn(99) : warning 213: tag mismatch
C:\Users\Olik\Desktop\pawno\vipr.pwn(102) : warning 213: tag mismatch
C:\Users\Olik\Desktop\pawno\vipr.pwn(122) : warning 213: tag mismatch
C:\Users\Olik\Desktop\pawno\vipr.pwn(125) : warning 213: tag mismatch
Link to comment
Share on other sites

  • 0

Snad po mě nechceš abych ti to i odtaboval né? Začni něčím jednoduším než je vip script. Začni třeba jednoduchými příkazy jako je /zbran atd... Nevím proč začínáš hned VIP scriptem ... ;) Taky jsem takhle dříve začínal pak jsem začal používat zcmd a zkouším nové a nové věci...  Fakt bych ti nedoropučoval začínat s tím těžším.

Edited by PetrPaulik
Link to comment
Share on other sites

  • 0

Je pekné že požiadaš o pomoc a keď ti nejaký de*il (v tomto prípade ja) dá celý kód takaj ten doje*eš... Prečo si tam nehodil ten kód z OnPlayerConnect? Bez toho ti to nepobeží....

Link to comment
Share on other sites

  • 0
~> Změň oba includy, přesněji na dof2 a zcmd / i-zcmd. Počet návodů pro ně specializované je výrazně větší, jsou efektivnější a hlavně.. do háje pochopte už, že jsou lepší a že nejsou staré přes 7 let.
Link to comment
Share on other sites

  • 0
if(Vipko[playerid] == 0) return SendClientMessage(playerid, 0x2758B200, "Nevlastníš VIP. Iba VIP hráč môže použiť tento príkaz.");
~> Pokud ti to bude furt hlásit, tak máš blbě nebo blbě pracuješ s proměnnou.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...