Ich würde es wie Manniac machen. Mithilfe von gettime(); den UNIX Timestamp holen, die Wartezeit in Sekunden addieren und beim Befehl überprüfen, ob gettime(); größer ist. Zur Erklärung: der UNIX Timestamp entspricht der aktuellen Zeit in Sekunden seit dem 1. Januar 1970 00:00.
Beiträge von Blacktaro
-
-
Du kannst schonmal nicht den Namen speichern lassen, wie du das da tust. wenn du durch einen Befehl den Namen änderst, kann die Datenbank das nicht speichern, weil du in der Speicherung WHERE `Name` stehen hast un der Datensatz dann nicht existiert, nach den du updaten willst. Außerdem speicherst du im SQL Befehl das Level doppelt ab. Ansonsten fällt mir nichts auf.
-
die Idee mit der _GET Veriable ist schonmal gut, so würde ich es auch machen.
wir brauchen erstmal eine anzahl von leuten pro seite. z.B. 20. du kannst nun also die Seite mal 20 nehmen und bekommst so einen Bereich, der angezeigt wird. Er geht von ((page*20)-19) bis (page*20). Nun musst du dort, wo die Datensätze ausgegeben werden eine Variable von 1 hochzählen lassen und mithilfe einer if-Abfrage abfragen, ob die Variable im Bereich liegt.
Unten musst du dann nur Links zu den Seiten einbauen, was du mithilfe der Anzahl-Variable machen kannst.MfG
-
es sollen auch Leader ausgelesen werden, die offline sind. Überschrift lesen hilft. So wie das Skript aufgebaut ist es nur schwer machbar, die offline auszulesen.
-
Es ist aber eine Möglichkeit und benötigt nicht unnötige Schleifen, um zu funktionieren.
-
Verbunden hat MySQL. Die benötigten Tabellen sind in der Datenbank nicht vorhanden. Sprich dein Kumpel muss dir, damit es klappt, noch die Datenbankstruktur geben(je nachdem auch den Inhalt davon).
//edit:
Dein Plugin scheint auch nicht ganz zu funktionieren...
Eventuell veraltet oder das falsche?
Arbeite dich am besten mal in die Grundlagen von MySQL ein.
Die brauchst du auf jeden Fall, wenn du damit arbeiten willst. -
Mach das mal unter OnVehicleStreamIn. Dann schließt er ab, wenn er in einem bestimmten Radius ist. Ansonsten wird das Fahrzeug wieder aufgeschlossen, wenn er weg geht und wieder her kommt.
public OnVehicleStreamIn (vehicleid, forplayerid)
{
SetVehicleParamsForPlayer (vehicleid, forplayerid, 1, 0);
} -
Schreibe mal bitte die Deklaration von TpInfo dazu. Es liegt bestimmt daran.
-
Gebe auf dieser Seite einfach alle angefragten Daten an. Dann richtest du die Satellitenschüssel einfach zur angegebenen Zeit zur Sonne aus. Hoffe ich konnte dir helfen
-
mach es mal so und probier es aus:
case DIALOG_ALTER:
{
if(!response)return 0;
else if(response)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,Gruen,"Du musst dein Alter Angeben!");
ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{FF8B00}*SENSIERT*","{FFFFFF}Nun sind wir beim Zweiten Schritt der Registration! Hier musst du dein Alter angeben!\n z.B. {FF0000}24","Bestätiegen","Abbruch");
return 1; //Damit unten das Alter nicht überschrieben wird.
}
if(INI_Open(getINI(playerid)))
{
INI_WriteInt("Alter",strval(inputtext));
INI_Save();
INI_Close();
SpielerInfo[playerid][sAlter] = strval(inputtext);
}
}
}//EDIT:
Jetzt habe ich den richtigen Fehler gesehen.
Er liegt darin, dass du die Variable "SpielerInfo[playerid][sAlter]" bei OnDialogResponse nicht setzt und sie beim Logout durch 0 ersetzt wird. siehe oben -
Nabend, ich arbeite gerade an meinem eigenen kleinen Pay'n'Spray.
Klappt alles super, nur die Tastenbelegung spinnt irgendwie..
Was habe ich vor?
Sobald der User in einem Fahrzeug ist, und an einem bestimmten Punkt, soll ein Tor nach oben gehen und sich auf "Alt links" Druck ein Dialog öffnen.
Was tut es?
Es öffnet bei Enter, W, A, S, D ..usw. den Dialog.Spoiler anzeigen public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys && KEY_WALK)
{
if(IsPlayerInRangeOfPoint(playerid,0.5,1003.0399,-1352.2534,13.0096))
{
if(!IsPlayerInAnyVehicle(playerid))return SCM(playerid,ROT,"Du bist in keinem Fahrzeug.");
{
MoveObject(pnstor, 0, 0, 10, 2.00);
ShowPlayerDialog(playerid,DIALOG_PNS,DIALOG_STYLE_LIST,"Pay'n'Spray - Nutzeroberfläche","Fahrzeug reparieren\nFarbe wählen","Ok","Abbrechen");
return 1;
}
}
}
}
Ich wüsste gern warum sich der Dialog einfach öffnet..
Unter OnGameModeInit kann ich das nicht packen, weil er playerid nicht erkennt..
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_WALK) //überprüfen ob newkeys dem define KEY_WALK entspricht
{
if(IsPlayerInRangeOfPoint(playerid,0.5,1003.0399,-1352.2534,13.0096))
{
if(!IsPlayerInAnyVehicle(playerid))return SCM(playerid,ROT,"Du bist in keinem Fahrzeug.");
else //das auch noch hinzufügen, nur um auf Nummer sicher zu gehen.
{
MoveObject(pnstor, 0, 0, 10, 2.00);
ShowPlayerDialog(playerid,DIALOG_PNS,DIALOG_STYLE_LIST,"Pay'n'Spray - Nutzeroberfläche","Fahrzeug reparieren\nFarbe wählen","Ok","Abbrechen");
return 1;
}
}
}
}
Ich hoffe, ich konnte dir helfen -
ich denke er würde keine anfrage hier schreiben wenn das script nicht auf mysql basiert bzw. auf file gehts auch aber ist umständlicher
ja, ich weiß, dass es auch auf File-Basis geht, nur auf MySQL läuft alles viel schneller und auch einfacher. Datenbankimport/-export. Und ich muss natürlich vorher fragen pb er das hat -
Ich würde dir ein Control Panel mit allen genannten Funktionen schreiben.
Dazu muss aber natürlich seitens des SAMP Skripts alles programmiert sein, also MySQL Datenbank etc.
Das ganze würde dich 50€ PaySafe kosten.
//edit: Es wäre hilfreich wenn ich mit dir über Teamspeak/Skype kommunizieren könnte... -
Die Webseiten, von denen ich gesprochen habe, sind momentan noch unzensiert, d.h. dort stehen noch Namen etc. der alten Auftraggeber
Und aus diesem Grund werde ich natürlich erstmal alles zensieren und auf eine "Test-Datenbank" legen, damit alles ohne Schaden getestet werden kann.//edit:
Die Referenzen sind jetzt unter diesem Link zu erreichen.//edit²:
Rechtschreibung -
?! WTF, ich kann deine Fragen nur beantworten, wenn du mir sagst, was du möchtest. Vorausgesetzt ich verstehe deinen Ausdruck
-
naja, ein Skript gleich dem von German RolePlay zu erwarten ist schon sehr heftig, die arbeiten da ja auch schon 4 Jahre hart dran. 50€ sind für die Menge an Arbeit sehr wenig.
-
Ich habe bisher schon folgende System mit MySQL und PHP gemacht:
- Login/Logout-System(Standart^^)
- Control Panel für SAMP-Server(Admin-CP mit Bannungen, Übersichten; User-CP mit Account-,Fahrzeug- und Fraktionsübersicht; Leader invite/uninvite/Rang-Change)
- Webseite mit Termin-Plänen, elektronischer Datenerfassung bestimmter Personen etc.
-
So wie du das da machen willst, ist das viel zu Aufwendig.
Die Schrift bekommst du schonmal nicht genauso hin, weil nur wenige Schriftarten verfügbar sind. -
Ich könnte dir eins machen, aber jeder würde sehen, dass es kopiert ist
Das ist natürlich nicht unbedingt das Ziel, das du verfolgst -
Du machst am besten so:
1. Du speicherst das Vermögen des Spielers in einer ganz normalen Spielerinfo. Entweder mit SetPVarInt oder einem enum.
Ich mache es mal mit SetPVarInt.
ganz oben als forward:
forward public moneycheat();
Bei OnGameModeInit:
SetTimer("moneycheat", 10000, 1);
Der Befehl bei OnPlayerCommandText:
if(strcmp(cmd, "/givemoney", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 5)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /givemoney [playerid/PartOfName] [money]");
return 1;
}
new playa;
new money;
playa = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
money = strval(tmp);
if (PlayerInfo[playerid][pAdmin] >= 5)
{
if(IsPlayerConnected(playa))
{
if(playa != INVALID_PLAYER_ID)
{
ConsumingMoney[playa] = 1;
SetPVarInt(playa, "Geld", GetPVarInt(playa, "Geld") + money);
GetPlayerName(playa, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "AdmCmd: %s hat %s €%d gegeben.",sendername,giveplayer,money);
ABroadCast(COLOR_RED,string,5);
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD2, "Das darfst du nicht tun!");
}
}
return 1;
}
Und schließlich die public function:
public moneycheat()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(isPlayerConnected(i))
{
ResetPlayerMoney(i);
GivePlayerMoney(i, GetPVarInt(i, "Geld"));
}
}
}So wird beim Geld geben immer nur die Variable verändert.
Da Cheatprogramme Servervariablen nicht verändern können, kann man sich auch kein Geld cheaten.
Nur bei jedem Geldtransfer(Banksystem etc.) musst du mit SetPVarInt(playerid, "Geld", wert); und GetPVarInt(playerid, "Geld"); arbeiten statt mit GivePlayerMoney.