Hallo Brotfische, ich suche jemanden der mit eventuel über Teamviewer helfen kann mein Script zu erweiter.
Ich möchte es so machen das die admins Premium in Tagen einstellen können also zwischen 1-9999 Tagen nur leider komme ich nicht weiter
Premium auf Zeit
- Viper21
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Wo steckst du denn fest ? Einfach zu sagen, "Ich suche jemanden der mir das über Teamviewer macht" gibt es nicht und dafür ist das Forum auch nicht gedacht.
-
ich verstehe allgemein nicht wie ich das machen soll möchte jmd der mir das erklärt weil ich grad anfange mit dem scripten
-
WIe du ein Befehl mit Parametern machst, sollte dir klar sein. (Eigentlich)
Den Rest kann ich dir gerade nicht genauer erklären, da ich so etwas auch noch nie gemacht habe, jedoch eine Methode weiß, aber diese wahrscheinlich zu ressourcenfressend ist. -
ocmd:premium(playerid,params[])
{
new time, pid;
if(sscanf,"ui",pid,time) return SendClientMessage(playerid,Farbe,"/premium pid time");
new Name[MAX_PLAYERS_NAME], year,month, day, data[64];
Getdate(year,month,day);
GetPlayerName(pid,Name,sizeof(Name));
format(data,sizeof(data),"/Premium/%s",Name);
new Premium = day + time;
if(!dini_Exists(data))
{
dini_Create(data));
dini_Int(data,"PTime",Premium);
return 1;
}ACHTUNG: Das ist mit dem Handy gedchrieben, solltest du aber noch etwas überarbeiten und Abfragen ob die Zeit schon vergangen ist gerne schreib ichs dir Freitag alles auf dem Pc
Mfg
-
Ich hab des mit dcmd Gemacht
dcmd_setprem(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] >= 2000)
{
new pID, Rank, DonateTime;
if(sscanf(params, "uii", pID, Rank, DonateTime)) return SendClientMessage(playerid, COLOR_WHITE, "Befehl: /givedonator [Spieler-ID/Name] [Donatorrank] [Tage]");
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, COLOR_WHITE, "Der Spieler ist nicht Online.");
if(Rank==0||Rank >= 5) return SendClientMessage(playerid, COLOR_GREY, "Es gibt nur die Ränge 1-4.");
if(Rank == 1) {
GivePlayerMoney(pID, 50000);
PlayerInfo[pID][pExp] += 3;
}
else if(Rank == 2) {
GivePlayerMoney(pID, 100000);
PlayerInfo[pID][pExp] += 6;
}
else if(Rank == 3) {
GivePlayerMoney(pID, 150000);
PlayerInfo[pID][pExp] += 9;
}
else if(Rank == 4) {
GivePlayerMoney(pID, 350000);
PlayerInfo[pID][pExp] += 12;
}
PlayerInfo[pID][pDonateRank] = Rank;
PlayerInfo[pID][pDonateTime] = DonateTime*1440;
format(stringx, sizeof(stringx), "Herzlichen Glückwunsch! Du hast nub den Premium-Rang %d für %i Tage!", Rank, DonateTime);
SendClientMessage(pID, COLOR_LIGHTBLUE, stringx);
format(stringx, sizeof(stringx), "AdmCmd: Admin %s hat %s den Donator-Rang %d gegeben!", MeinName(playerid), MeinName(pID), Rank);
ABroadCast(COLOR_LIGHTRED, stringx, 1);
}
else return SendClientMessage(playerid, COLOR_WHITE, "Nur für Projektleiter/High Admins!");
return 1;
}Für den User eine variable gesetzt in der steht wie viele minuten er hat und pro minute wird im eins abgezogen.
if(PlayerInfo[i][pDonateTime] >= 1 && PlayerInfo[i][pDonateRank] > 0)
{
PlayerInfo[i][pDonateTime]--;
}
if(PlayerInfo[i][pDonateTime] == 0 && PlayerInfo[i][pDonateRank] > 0)
{
PlayerInfo[i][pDonateRank] = 0;
PlayerInfo[i][pDonateTime] = 0;
SendClientMessage(i, COLOR_RED,"ACHTUNG! Dein Donate Status ist abgelaufen!");
}Und bei den Stats steht halt wie viele Tage/Stunden/minuten er noch hat.
-
Ich hab des mit dcmd Gemacht
dcmd_setprem(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] >= 2000)
{
new pID, Rank, DonateTime;
if(sscanf(params, "uii", pID, Rank, DonateTime)) return SendClientMessage(playerid, COLOR_WHITE, "Befehl: /givedonator [Spieler-ID/Name] [Donatorrank] [Tage]");
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, COLOR_WHITE, "Der Spieler ist nicht Online.");
if(Rank==0||Rank >= 5) return SendClientMessage(playerid, COLOR_GREY, "Es gibt nur die Ränge 1-4.");
if(Rank == 1) {
GivePlayerMoney(pID, 50000);
PlayerInfo[pID][pExp] += 3;
}
else if(Rank == 2) {
GivePlayerMoney(pID, 100000);
PlayerInfo[pID][pExp] += 6;
}
else if(Rank == 3) {
GivePlayerMoney(pID, 150000);
PlayerInfo[pID][pExp] += 9;
}
else if(Rank == 4) {
GivePlayerMoney(pID, 350000);
PlayerInfo[pID][pExp] += 12;
}
PlayerInfo[pID][pDonateRank] = Rank;
PlayerInfo[pID][pDonateTime] = DonateTime*1440;
format(stringx, sizeof(stringx), "Herzlichen Glückwunsch! Du hast nub den Premium-Rang %d für %i Tage!", Rank, DonateTime);
SendClientMessage(pID, COLOR_LIGHTBLUE, stringx);
format(stringx, sizeof(stringx), "AdmCmd: Admin %s hat %s den Donator-Rang %d gegeben!", MeinName(playerid), MeinName(pID), Rank);
ABroadCast(COLOR_LIGHTRED, stringx, 1);
}
else return SendClientMessage(playerid, COLOR_WHITE, "Nur für Projektleiter/High Admins!");
return 1;
}Für den User eine variable gesetzt in der steht wie viele minuten er hat und pro minute wird im eins abgezogen.
if(PlayerInfo[i][pDonateTime] >= 1 && PlayerInfo[i][pDonateRank] > 0)
{
PlayerInfo[i][pDonateTime]--;
}
if(PlayerInfo[i][pDonateTime] == 0 && PlayerInfo[i][pDonateRank] > 0)
{
PlayerInfo[i][pDonateRank] = 0;
PlayerInfo[i][pDonateTime] = 0;
SendClientMessage(i, COLOR_RED,"ACHTUNG! Dein Donate Status ist abgelaufen!");
}Und bei den Stats steht halt wie viele Tage/Stunden/minuten er noch hat.
Wird das abgespeichert? und wenn ja wo muss ich den 2ten queltext einfügen?
-
Was meinste ?
-
Was meinste ?
Es wird abgespeichert jaif(PlayerInfo[i][pDonateTime] >= 1 && PlayerInfo[i][pDonateRank] > 0)
{
PlayerInfo[i][pDonateTime]--;
}
if(PlayerInfo[i][pDonateTime] == 0 && PlayerInfo[i][pDonateRank] > 0)
{
PlayerInfo[i][pDonateRank] = 0;
PlayerInfo[i][pDonateTime] = 0;
SendClientMessage(i, COLOR_RED,"ACHTUNG! Dein Donate Status ist abgelaufen!");
}wo ich das einfügen muss z.b. unter OnPlayerConnect
-
Du musst bei
enum pInfo
{am ende noch pDonateTime
machendanach wenn bei dir irgendwo PlayerInfo[playerid][pGesperrt] = 0;
dadrunter noch PlayerInfo[playerid][pDonateTime] = 0;
dann müsste format(var, 32, "Gesperrt=%d\n",PlayerInfo[playerid][pGesperrt]);fwrite(hFile, var); 2x vorhanden sein
unter beide dann dadrunter format(var, 32, "DonateTime=%d\n",PlayerInfo[playerid][pDonateTime]);fwrite(hFile, var);
dann if( strcmp( key , "Gesperrt" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pGesperrt] = strval( val ); } suchen
und if( strcmp( key , "DonateTime" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDonateTime] = strval( val ); } drunter tuhen
-
-
if(PlayerInfo[i][pDonateTime] >= 1 && PlayerInfo[i][pDonateRank] > 0)
{
PlayerInfo[i][pDonateTime]--;
}
if(PlayerInfo[i][pDonateTime] == 0 && PlayerInfo[i][pDonateRank] > 0)
{
PlayerInfo[i][pDonateRank] = 0;
PlayerInfo[i][pDonateTime] = 0;
SendClientMessage(i, COLOR_RED,"ACHTUNG! Dein Donate Status ist abgelaufen!");
}wo ich das einfügen muss z.b. unter OnPlayerConnect
Das musst du so einbauen das es alle 60Sekunden ausgeführt wird.
Wobei ich das ganze lieber anders machen würde. Einfach beim setzen den aktuellen Timestamp abfragen, auf diesen dann die Sekunden drauf rechnen bis der Status ablaufen soll und dann fragt man entweder vor jedem Payday ab ob der Donator Timestamp in der Vergangenheit liegt oder eben nicht. Und setzt dann den Status entsprechend auf Null.
Das unterscheidet sich jetzt nicht allzu dolle von den hier beschriebenen daher denke ich das du das auch so schaffst -
[MrM]Florian Hast recht mit dem Timestamp ist ne gute idee dann macht ers auch wenn er off ist dank dir
und im mom ist es in nem Timer drin der jede minute 1x läuftEs kann sein das bei euch net pGesperrt steht
pGesperrt ist nur der letzte eintrag der bei mir steht.
enum pInfo
{
pKey[128],
pLevel,
pMoney,
pAdmin,
pSupporter,
pDonateRank,
gPupgrade,
pConnectTime,
pReg,
pSex,
pAge,
pOrigin,
pCK,
pMuted,
pExp,
pCash,
pAccount,
pPlayerKreditDauer,
pPlayerKredit,
pCrimes,
pKills,
pDeaths,
pArrested,
pWantedDeaths,
pPhoneBook,
pLottoNr,
pFishes,
pBiggestFish,
pJob,
pPayCheck,
pRest,
pHeadValue,
pJailed,
pJailTime,
pGangJailed,
pMauled,
pMats,
pDrugs,
pLeader,
pMember,
pFMember,
pRank,
pChar,
pContractTime,
pDetSkill,
pSexSkill,
pBoxSkill,
pLawSkill,
pMechSkill,
pJackSkill,
pCarSkill,
pNewsSkill,
pDrugsSkill,
pCookSkill,
pFishSkill,
Float:pHealth,
Float:pSHealth,
pInt,
pLocal,
pTeam,
pModel,
pPnumber,
pPhousekey,
pPbiskey,
Float:pPos_x,
Float:pPos_y,
Float:pPos_z,
pCarLic,
pNewLic,
pFlyLic,
pBoatLic,
pFishLic,
pGunLic, //Definition des Scheines zb die Aufgabe später
pLKWLic,
pRollerLic,
pMotoLic,
pZig,
pKekse,
pZigSucht,
pGun1,
pGun2,
pGun3,
pGun4,
pAmmo1,
pAmmo2,
pAmmo3,
pAmmo4,
pCarTime,
pMulltime,
pPayDay,
pPayDayHad,
pCDPlayer,
pWins,
pLoses,
pAlcoholPerk,
pDrugPerk,
pMiserPerk,
pPainPerk,
pTraderPerk,
pTut,
pWarns,
Float:pGWD,
pAdjustable,
pFuel,
pMarried,
pMarriedTo[128],
pInvWeapon,
pInvAmmo,
pInvWeapon2,
pInvAmmo2,
pInvDrugs,
pInvMats,
pFlugTime,
pRoadblock,
pPlayMinutes,
pGesamtMinutes,
pMinutesSinceLogin,
pMinutesSinceAn,
pSFPASS,
pLVPASS,
pHandyGeld,
pHandyVer,
pUhrID,
pHandyID,
pOwnPerso,
pOwnAntrag,
pPersoStop,
pGehalt,
pFrakSperre,
pBoxMats,
pBoxDrugs,
pban,
Text:LetterboxTop,Text:LetterboxBottom2, Text:LetterboxBottom,
pTot,
pFarmTime,
pGDeaths,
pGKills,
pMeldung,
pPtankekey,
pZollPass,
pZollPassTime,
pGesperrt,
pDonateTime,
}; -
breadfish.de
Hat das Thema geschlossen.