if (strcmp("/leihen", cmdtext, true, 10) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,15.0, 160.1029,-1932.5166,3.7734))
{
if(rollerhaben[playerid] == 1)
{
ShowPlayerDialog(playerid,DIALOG_VERLEIH,DIALOG_STYLE_MSGBOX,"Neulingshilfe","Willst du einen Roller für €50 Mieten?","Mieten","Abbrechen");
}
else
{
SendClientMessage(playerid, Rot, "Du bist nicht beim Verleih!");
}
}
else
{
SendClientMessage(playerid, Rot, "Du kannst erst in 15 Minuten einen Roller erneut");
}
return 1;
}
Beiträge von NicoAiko
-
-
Wenn du den Text _ lässt sieht man nichts.
Du musst schon etwas eingeben -
Danke NicoAiko, das wusste ich nicht , das Textdraws ohne text nicht angezeigt werden auch wenn sie später deklariert werden.
Lg Melbatt
*Closed*
Wenn der Text leer ist, dann crasht der Server "normalerweise".
Von daher immer daran denken, wenigstens ein "_" reinzumachenEdit: Danke [FoR]Hardcore, ich war ein paar Millisekunden später dran
-
Ich zitiere mal aus der Wiki:
Zitat
TextDrawCreateImportant Notes:
Maximum length of textdraw is 800 characters. Longer text will crash the client.
If you use color codes (such as ~R~ ~G~) beyond 255th character the client will crash trying to display the textdraw.
If you choose values for y that are less than 1, the first text row will be invisible and only the shadow is visible.
text[] must NOT be empty or the server will crash! If you need a textdraw that shows nothing, use " " (a space) or _ (underscore)
If the last character in the text is a space (" "), the text will all be blank.
If part of the text is off-screen, the colour of the text will not show, only the shadow (if enabled) will.Suche deinen Fehler im Textdraw
€:
So ein Quatsch
strcmp vergleicht beide Strings!
Selbst in der Wiki steht das so... *Selfown* (nicht böse gemeint ^^)
-
Um es einfach auszudrücken, es ist ein Drosselsystem mit Gängen.
-
So nach langer Zeit ist mal ein Update draußen!
Siehe im 1. Post!
Testserver biete ich evtl. bald an.
Ich werde in der 0.4 (falls ich sie demnächst mache) ein Paar weitere Änderungen vornehmen.MfG
-
Dank Hiroshi(ひろし) bekam ich auch son scheiß -_-
Musste ihn erstmal blockieren... -
Mal ne Frage, zum Thema das man die Lizens nur für 1 PC nutzen kann, ich benutze zB. 2 PC´s auf denen ich scripte, kann man das nich so machen das wenn mna in einem haushalt sprich ne ähnliche IP hat das man die Lizens auch für nen 2. PC Nutzen kann?
währe genial
ich fänds besser wenn man die Lizenzen für mehrere PCs gleichzeitig benutzen kann, oder sie irgendwie kostenfrei anmelden kann... -
Dessen bin ich mir bewusst
Jedoch ist es nicht so, wenn ein "&" vor der variable steht, wird sie an die andere übergeben?
sprich
stock IsPlayerInDatabase(playerid)
{
new query[100+MAX_PLAYER_NAME],playername[MAX_PLAYER_NAME],result; <-- // result = 0
GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
mysql_format(true,query,"SELECT COUNT(*) as count FROM `User` WHERE `Name` = '%e'",playername);
mysql_function_query(connectionHandle,query,true,"OnLoadMySQL","dd",MySQL_IsPlayerInDatabase,result); <-- // result müsste 1 wegen &result bei OnLoadMySQL
if(result) return 1;
else return 0;
}public OnLoadMySQL(loadid,&result) <--- &result
ist doch dasselbe wie bei GetPlayerPos oder?
Da ist doch auch GetPlayerPos(playerid,&Float:x,&Float:y,&Float:z)
-
Hallo, ich wollte mal nachfragen, wie ich mit der R7 Version eine COUNT Abfrage mache...
Denn die Sache ist die: Ab R7 hat man Threaded Queries, daher kann ich caches nur in einem seperaten Callback holen.
Und da besteht das Problem, denn wie returne / gebe ich das Ergebnis des COUNTs zurück zur Original Abfrage?Momentan sieht es so aus:
stock IsPlayerInDatabase(playerid)
{
new query[100+MAX_PLAYER_NAME],playername[MAX_PLAYER_NAME],result;
GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
mysql_format(true,query,"SELECT COUNT(*) as count FROM `User` WHERE `Name` = '%e'",playername);
mysql_function_query(connectionHandle,query,true,"OnLoadMySQL","dd",MySQL_IsPlayerInDatabase,result);
if(result) return 1;
else return 0;
}
public OnLoadMySQL(loadid,&result)
{
switch(loadid)
{
case MySQL_IsPlayerInDatabase:
{
new count[5];
cache_get_field_content(0,"count",count,connectionHandle);
if(strval(count)) result = 1;
else result = 0;
return 1;
}
}
return 1;
}kann mir da jemand weiterhelfen?
Edit: Habs mal geprintet und es ist folgendes dabei rausgekommen:
Count wird richtig benutzt (Print im Callback OnLoadMySQL gibt 1 bei count raus), nur die result im IsPlayerInDatabase wird nicht gesetzt oO d.h. die variable wird nicht gesetzt, wie kann ich das ändern?
Liegt es evtl. daran, dass das nicht schnell genug gesetzt wird? -
Sehr schön
Wann gedenkst du, es zum Download / Kauf zu stellen?
-
Ähm gibts ein neues Update, oder warum zeigt der Mir Update an?
-
Ich finde auch 9,99€ recht angemessen...
Wenn es auch so funktioniert wie es soll -
Die Include wird auch so nicht funktionieren, das garantiere ich
Es wird Meldungen wegen des Callbacks geben, da nicht gehooked wurde
Setz dich mal mit dem Thema auseinander und mach außerdem einen Timer im Kick rein sonst sieht der den Kickgrund nicht
MfG
-
Warum eig unter OnVehicleSpawn?
Machs doch direkt nach der Erstellung (und ich empfehle dir übrigens AddStaticVehicle(Ex falls du die Respawnzeit haben willst), sprich nach dem Erstellen in OnGameModeInit
Edit: Piet_Meier war schneller
-
This callback is called when a vehicle respawns.
Quelle: http://wiki.sa-mp.com/wiki/OnVehicleSpawn
Lösung: Lass die Fahrzeuge am Ende von OnGameModeInit (oder whatever) die respawnt werden müssen einfach respawnen.
-
Also die Vorstellung ist eher schwach...
Wenn ihr ein Selfmade vorstellt, dann solltet ihr auch dessen Features erwähnen, ansonsten sehr ihr kaum Leute.
Ich, als Betrachter wäre nicht besonders angeregt, euren Server zu testen, da ihr keine "Spannung" aufbringt...Überarbeitet die Vorstellung am Besten nochmal und erwähnt die Vorzüge!
Das Forum sieht für mich recht schick aus
-
Kick schon getestet?
Bei mir funktioniert es nur mit Timer!
Bei den meisten (unter anderem auch ein Thread im eng. Forum) funktioniert es auch nur noch mit Timer.Die Reihenfolge spielt in dem Fall keine Rolle, bei einem Kick entscheidet sich der Client keine anderen Signale mehr entgegenzunehmen, und kappt sofort die Verbindung (so wie ich das jetzt verstanden habe)
-
oder kick ihn direkt ohne Timer
ocmd:kick(playerid,params[])
{
new pID,Grund[50],string[128];
if(sscanf(params,"us",pID,Grund)) return SendClientMessage(playerid,ROT,"FEHLER: /kick [playerid] [grund]");
if(IsPlayerConnected(pID))
{
format(string,sizeof(string),"[AdmCmd]: %s wurde von %s vom Server gekickt, [Grund: %s]",SpielerName(pID),SpielerName(playerid),Grund);
SendClientMessageToAll(ROT,string);
Kick(pID);
return 1;
}
else return SendClientMessage(playerid,ROT,"Der Spieler ist nicht online!");
}
Das mit dem Kicken würde zwar klappen, leider wäre aber der Gekickte in dem Fall "gearscht", da er den Grund nicht erfährtSeit 0.3x muss man Timer zum Kicken und Bannen benutzen, weil der Client sonst keine weiteren Signale annimmt
Edit:
Wie steht es denn nun mit dem Code?
Wenn nichts passiert, hat das eine Ursache oO
Was gibst du denn ein?
Kommt keine Nachricht?
Und die wirklich GANZ DUMME FRAGE: sieht dein #define ROT evtl so aus?
#define ROT 0xFF000000
Wenn ja mach das so: #define ROT 0xFF0000AA -
Ich dachte, ich habe es in dem anderen Thread bereits erklärt:
ocmd:kick(playerid,params[])
{
new pID,Grund[50],string[128];
if(sscanf(params,"us",pID,Grund)) return SendClientMessage(playerid,ROT,"FEHLER: /kick [playerid] [grund]"); // Wenn nicht alle Eingaben getätigt wurden
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,ROT,"Der Spieler ist nicht online!"); // Wenn die eingegebene ID nicht online ist
format(string,sizeof(string),"[AdmCmd]: %s wurde von %s vom Server gekickt, Grund: %s",SpielerName(pID),SpielerName(playerid),Grund);
SendClientMessageToAll(ROT,string);
SetTimerEx("kicktimer",500,0,"i",pID); // Kickbefehl wird versendet
return 1;
}//Stocks
stock SpielerName(playerid)
{
new GetName[MAX_PLAYER_NAME];
GetPlayerName(playerid,GetName,sizeof(GetName));
return GetName;
}
//TIME KICK ECT
forward kicktimer(pID);
public kicktimer(pID)
{
Kick(pID);
return 1;
}Edit:
Ich würde dir empfehlen, erst das Negative abzufragen, zum Beispiel, ob der Spieler (pID) NICHT online ist, denn dann brauchst du bloß eine return SendClientMessage schicken und ersparst dir ein "else" und für dich evtl. komplizierte Klammersetzung.
Ich rate dir, setz dich mit den Funktionen auseinander und versuch etwas mehr auf die Klammersetzung zu achten.