Zieh dir hier einfach das neuste Serverpack und tausche die Includes aus dem neusten Archiv mit deinen alten aus.
Beiträge von Mike Toreno
-
-
Erstellst du auch Logos in verschiedenen Größen und Farbvariationen?
Kannst dich ja mal per PN melden, hätte großes Interesse.
LG
-
Da du es ja jeden zweiten PayDay haben willst, musst du zusätzlich noch eine neue Zeile für die Speicherung anlegen. Ich gehe mal davon aus, dass du auf Dateien (Standard GF-Speicherung?) und nicht MySQL basierst.
Unter enum pInfo:
pPayTime
Unter OnPlayerRegister zu den anderen fwrite(hFile, var); dann folgendes:
format(var, 32, "PayTime=%d\n",PlayerInfo[playerid][pPayTime]);fwrite(hFile, var);
Unter OnPlayerLogin zu den anderen ini_GetValue( Data ); folgendes:
if( strcmp( key , "PayTime" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pPayTime] = strval( val ); }
Unter die zwischenspeicherung (GF meist OnPlayerUpdate) zu den anderen fwrites:
format(var, 32, "PayTime=%d\n",PlayerInfo[playerid][pPayTime]);fwrite(hFile, var);
Zu deinem PayDay Timer:
Entferne die Zeile:
PlayerInfo[i][pExp]++;
und füge zeitgleich folgendes hinzu:
if(PlayerInfo[playerid][pDonateRank] == 1)
{
PlayerInfo[playerid][pPayTime]++;
if(PlayerInfo[playerid][pPayTime] > 1)
{
PlayerInfo[playerid][pPayTime] = 0;
PlayerInfo[playerid][pExp] += 2;
}
}
else PlayerInfo[playerid][pExp] += 2; -
Ich weiß nicht wie dein public für den PayDay heißt.
Dann such mal nach dem Text, der beim PayDay erscheint und poste den Inhalt hier.
-
Dafür brauch ich dann deinen public PayDay(playerid) ^^.
-
Ja, sicher.
Entferne die Zeile:
GivePlayerMoney(giveplayerid, 200000); // 350k
und tausche diese mit diesen aus:
if(value == 1)
GivePlayerMoney(giveplayerid,350000);
else //im Grunde dann alles über Donator 2
GivePlayerMoney(giveplayerid,750000); -
Bis zu der Zahl, die vom Befehl genehmigt wird (idF. kein Limit^^).
Wenn du willst kannst du dir auch ein Limit setzen, füge dann einfach unter value = strval(tmp); folgendes ein:
if(value < 1 || value > 5) return SendClientMessage(playerid,COLOR_GREY,"FEHLER: Du kannst nur Ränge von 1-5 vergeben!");
-
Warum denn mit einem Timer? Ist doch Käse und zieht Unmengen unnötige Ressourcen!
Zeig mal deinen Edit-Befehl für die Häuser her, dann besser ich es dir dementsprechend aus.
-
Mal abgesehen davon, dass der vorherig gepostete Code recht schlampig geschrieben wurde... Bitte:
if(strcmp(cmd, "/giveDonator", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] >= 1450)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "BENUTZUNG: /giveDonator [playerid/SpielerName] [donatorrank]");
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "BENUTZUNG: /giveDonator [playerid/SpielerName] [donatorrank]");
new value;
value = strval(tmp);
GetPlayerName(playerid, sendername, sizeof(sendername));
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
format(string, sizeof(string), "* Du hast Spieler %s den Donator-Rang4 gegeben *",giveplayer);
SendClientMessage(playerid, COLOR_YELLOW, string);
format(string, sizeof(string), "* Admin %s hat dir deinen Donator Rang4 gegeben.",sendername);
SendClientMessage(giveplayerid, COLOR_YELLOW, string);
format(string, sizeof(string), "* Herzlichen glückwunsch! Du hast nun einen Donator-Rang! Siehe unter /donatorhelp zu sehen was er dir für Vorteile bringt.",sendername);
SendClientMessage(giveplayerid, COLOR_YELLOW, string);
GivePlayerMoney(giveplayerid, 200000); // 350k
PlayerInfo[giveplayerid][pExp] += 12 ; // 12 RP
PlayerInfo[giveplayerid][pCoins] += 100; // 100 Coins
PlayerInfo[giveplayerid][pDonateRank] = value; // Premium Rang
new iyear, imonth,iday;
getdate(iyear, imonth, iday);
format(string, sizeof(string), "AdmCmd: %s hat %s den Donator-Rang gegeben! (%d.%d.%d)", sendername, giveplayer,iday,imonth,iyear);
ABroadCast(COLOR_LIGHTRED, string, 1);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD2, " Das kann nur der Serverleiter!");
return 1;
}
}
return 1;
}Sorry, der Browser rückt alles falsch ein.
-
Ich habe dir auch einige Fehler ausgebessert und diverse Korrekturen vorgenommen.
if(strcmp(cmd, "/advertise", true) == 0 || strcmp(cmd, "/ad", true) == 0)
{
if(PlayerInfo[playerid][pLevel] >= 2)
{
if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_GREY, " Du bist noch nicht eingeloggt !");
if(PlayerInfo[playerid][pGangJailed] == 1 || PlayerTied[playerid] >= 1) return SendClientMessage(playerid, COLOR_GRAD1, "Du kannst jetzt keine Werbung schreiben!");
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx, result[128];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result)) return SendClientMessage(playerid, COLOR_GRAD2, "Benutzung: (/ad)vertise [text]");
if ((!adds) && (PlayerInfo[playerid][pAdmin] < 1))
{
format(string, sizeof(string), "Bitte Versuch es Später wieder %d sekunden zwischen einer Werbung!", (addtimer/1000));
return SendClientMessage(playerid, COLOR_GRAD2, string);
}
new payout = idx * 10;
if(GetPlayerMoney(playerid) < payout)
{
format(string, sizeof(string), "* Du hast %d Zeichen benutzt, das kostet $%d, du hast nicht genug dabei.", offset, payout);
return SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
}
GivePlayerMoney(playerid, - payout);
SBizzInfo[5][sbTill] += payout/3;
ExtortionSBiz(5, payout);
format(string, sizeof(string), "Werbung: %s, Kontakt: %s, Telefonnummer: %d", result, sendername,PlayerInfo[playerid][pPnumber]);
OOCNews(TEAM_Grove_COLOR,string);
format(string, sizeof(string), "~r~Rechnung: $%d~n~~w~Nachricht hatte: %d Zeichen.", payout, idx);
GameTextForPlayer(playerid, string, 5000, 5);
if (PlayerInfo[playerid][pAdmin] < 1)
{
SetTimer("AddsOn", addtimer, 0);
adds = 0;
}
} else SendClientMessage(playerid,COLOR_RED,"Du brauchst Level 2 um eine Werbung zu schreiben.");
return 1;
} -
Der Schlüssel wird gesetzt und auch ordentlich ausgelesen.
Bist du dir sicher, dass du die Spieler richtig abspeicherst? Das wäre im Moment das einzigst plausible, auf Anhieb sehe ich da keine größeren Fehler.
Basierst du auf Dateien oder MySQL?
LG
-
Und einmal /open oder /spawnchange.
Wo stürzt der Server ab? Direkt beim Start?
-
In Ordnung.
Die Diskussion würde eigentlich in ein anderes Thema gehören, aber
abschließen noch eine kurze Frage von meiner Seite her:Brauchst Du Icognitos Object Streamer um das "Login-Script" zu laden?
Ich nicht...
Das war ein generelles Beispiel, Pappnase.
-
In dem von dir geposteten Code ist die Zeile doch noch vorhanden?
Probiers mal so.
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(tban,4,cmdtext);
dcmd(tunban,6,cmdtext);new string[128],
playermoney,
sendername[MAX_PLAYER_NAME],
giveplayer[MAX_PLAYER_NAME],
playername[MAX_PLAYER_NAME],
cmd[128],
tmp[128],
giveplayerid,
moneys,
idx;
cmd = strtok(cmdtext, idx);
GetPlayerName(playerid,sendername,sizeof(sendername));// ANTI CMD SPAM
CMDSpams[playerid]++;
if(CMDSpams[playerid] >= 8 && PlayerInfo[playerid][pAdmin] == 0 && PlayerCuffed[playerid] == 0 && PlayerTied[playerid] == 0)
{
format(string, sizeof(string), "%s wurde vom System gekickt. Grund: Command-Spam",sendername);
SendClientMessageToAll(M_BOT_COLOR, string);
Kick(playerid);
return 1;
} -
Quatsch - sollte das der Fall sein, meckert der Server offentlich herum.
In den meisten Fällen ist dem so, bei Streamern wie dem von Icognito allerdings nicht. Warum auch? Wenn nichts in der Server.cfg steht gibts auch nichts zu meckern.
GF-Edits (so wie er es auch geschrieben hat) nutzen vom Hause aus schon keine externen Filterscripts, warum sollte er dann ein Login-Filterscript nutzen?
Ist aber alles nur reine Spekulation und trägt hier auch nichts zum Thema bei.
-
Entferne mal test-weise die Zeile M_OnPlayerCommandText unter OnPlayerCommandText.
Ist ein typischer Fehler bei LoH-Scripten. Ansonsten mal nach der m_bot include suchen, findet man hier haufenweise.
Zudem falsch gewählter Bereich...
-
Hast Du vielleicht vergessen ein Filterscript oder ein Plugin hochzuladen?
Das musst Du ja unbedingt beachten...
Filterscript nicht unbedingt, hast du statt den Windows-Plugins auch die richtigen Linux-Plugins hochgeladen und in der server.cfg die .so Endung an die Plugins angehängt?
LG
-
Hi,
unter OnPlayerDeath die Position mit 3 Floats abfragen, eine Variable erstellen und diese auf 1 setzen (eventuell noch ein Totenkopf-Pickup o.ä. hinzufügen), beim Befehl /wiederbeleben die Position abfragen und nach dem der Timer abgelaufen ist das Pickup löschen und die zuvor auf 1 gesetzte Variable wieder auf 0 setzen.
Wenn du willst, schreibe ich dir demnächst ein kleines Beispiel.
Edit: Warum erstellst du zwei mal das selbe Thema? Sinnlos.
-
Deine ServerLog bringt hier relativ wenig. Da du ein Godfather nutzt, sollte die Variable pPhousekey für das zuweisen der Schlüssel genutzt werden (so lautete die glaube ich).
Zeig mal deine Zeilen vom /buyhouse.
-
Irgendwie sinnlos... Warum setzt du einem stock ein forward? Das wird doch garnicht benötigt und erzeugt nur unnötige Warnungen!
public hackgate()
{
MoveObject (lspdinside, 239.69999694824, 116.59999847412, 1004.9000244141,3);
SendClientMessage(playerid,COLOR_BLUE,"Du hast geschafft, das Tor zu öffnen!");
OnPlayerCommandText(playerid,"/me beendet das Hack-Programm");
lspdvar1 = 1;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsACop(i))
{
SendClientMessage(i,COLOR_RED,"HQ: Achtung der Einbrecher ist bereits im LSPD!!! ");
}
}
}return 1;
}Poste mal die Zeile, in der dem Tor die Variable "lspdinside" zugewiesen wird. Eventuell hast du es mit dem Streamer erstellt und nur nicht angepasst. Benutzt du denn einen Objektstreamer? Zudem sehe ich nicht wirklich einen Sinn in der lspdvar1-Variable. Wo nutzt du die? In deinem Code setzt du sie unnötig auf 1.