Nein ists nicht sonst denkt der Server, dass die dialogid gefunden wurde und prüft erst gar nicht die Filterscripts.
Die Filterscripts werden aber vor dem Gamemode überprüft ![]()
mfg. ![]()
Nein ists nicht sonst denkt der Server, dass die dialogid gefunden wurde und prüft erst gar nicht die Filterscripts.
Die Filterscripts werden aber vor dem Gamemode überprüft ![]()
mfg. ![]()
ja ist doch richtig oder nicht?
Nein ![]()
Nimm das return und die Klammer da weg, dann funktioniert es ![]()
Nochdazu soltle OnDialogResponse 0 returnen
Im GameMode ist das egal ![]()
Da:
Bei dir Zeile 60-62:
return 1;
}
Da beendest du schon den Callback ![]()
mfg. ![]()
Guten Morgen liebe Community,
also ich wollte euch heute nochmal ein wenig die Directives näher bringen, da ich leider immernoch in einigen Threads sowas sehe:
#include <a_samp>
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
//Hier der entscheidene Code
}
#endif
und dann wundern sich die Leute warum ihr Code nicht aufgerufen wurde
Also, dann fangen wir mal mit dem ersten Directive an:
#define, #undef
Mit #define können wir einen statischen Wert definieren sprich:
#define Butter 1
Jetzt besitzt Butter den Wert 1. Das ist die Einfachste Form einer Definition.
Wir können aber noch viel viel weiter gehen und z.B. eine Funktion auf eine andere schreiben:
#define SCM SendClientMessage
Nun müssen wir nicht immer SendClientMessage(...); schreiben, sondern nur SCM(...);
Aber man kann noch einen Schritt weiter gehen und Makros erstellen mit unterschiedlichen Parametern:
So, nehmen wir nun eine andere Funktion, sagen wir mal printf und wir tauschen jetzt die Parameter sprich von:
printf("Text", rest);
machen wir:
PP(rest, "Text");
Sowas sieht dann so aus:
#define PP(%1,%0) \
printf(%0, %1)
Was auch noch eine Möglichkeit wäre ist, ganze Funktionen bzw Codeschnipsel in so ein Define zu schreiben, quasi sowas:
#define Loop \
new i; i<MAX_PLAYERS; i++) \
if(IsPlayerConnected(i)
//Anwendung:
for(Loop) {
//Hier dann was passieren soll, wenn die Schleife durchläuft.
}
Der char "\" bedeutet, dass das Makro in einer neuen Zeile weitergeht.
So und nun zu der letzten Verwendung für #define (die ich vorstelle es gibt natürlich noch viel mehr), wir bauen uns eine Funktion ![]()
Und die machen wir ganz simpel so:
#define Sum(%0,%1) \
((%0) + (%1))
//Verwendung:
printf("%d", Sum(1, 2));//Hier würde 3 geprintet werden
Natürlich gibt es auch Makros die schon in einer Include Datei stehen und die wir nicht für unser Script weiter benutzen wollen und dann machen wir z.B. sowas:
#undef MAX_PLAYERS //Hier wird das Makro entfernt
#define MAX_PLAYERS 50 //Hier mit dem neuen Wert 50 definiert
So nun zu den nächsten Directives:
#if, #error, #else, #endif, #endinput
Dieses Directive macht das selbe wie if(...) nur mit Directive Werten ![]()
Sprich:
#define Butter 1
#if Butter == 1
#error Butter ist ja 1
#endif
Dann würde halt im Compiler der Error erscheinen durch #error, dass Butter 1 ist ![]()
Natürlich geht das noch ein wenig Komplexer:
#define Butter 10
#if Butter > 10 //Fragt ab ob Butter größer 10 ist
#error Das werden wir nicht sehen//wenn ja das hier
#elseif Butter == 9//oder wenn Butter == 9
#error das werden wir auch nicht sehen//wenn Butter 9 wäre das hier
#else//Wenn nicht
#error das werden wir sehen//dann das hier
#endif//if-Abfrage beendet
Kommen wir nun zu einer wichtigen Verwendung im Zusammenhang mit Includes !
#include <test>//Wir includen eine Include Datei names test
#if defined _TEST_INC
#endinput
#endif
#define _TEST_INC
So verhindern wir, dass eine Include Datei 2x included wird ![]()
#assert
Ja, assert ist ein schönes Directive, wenn die Bedingung nicht zutrifft, failt der Compiler und spuckt einen Fatal Error aus, sprich sowas:
#define test 1
#assert test > 10
Da würde das rauskommen: 
Das waren erstmal die einfachen Directives, vielleicht werde ich ein 2. Tutorial machen für Leute, die schon etwas besser scripten können, wo ich dann auf #emit und #pragma eingehe ![]()
//Edit: Hier geht es zu [ SCRIPTING ] #pragma & #emit
mfg.
ein # zu viel gemacht...
Wie nutze ich jetzt "SetPlayerScore();" Richtig ?
SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
mfg. ![]()
Schreibe es so:
if (strcmp("/umkleiden", cmdtext, true) == 0) {
if(IsPlayerInRangeOfPoint(playerid, 2.0, x,y,z))
{
ForceClassSelection(playerid);
SetPlayerHealth(playerid, 0);
}
return 1;
}
mfg. ![]()
wo ist der fehler?
Der Name wird zu ein Intger aus der datenbank etc..
Du hast das vergessen vor den ersten string zu setzen
{i}
Ich hab mich doch schon lange verbessert ![]()
Dann brauch ich aber kein enum mehr oder ?
Natürlich brauchst du ein enum, auf welche Variablen willst du denn sonst die Werte von deiner Datenbank schreiben lassen ![]()
Das mit dem <e> kannte ich noch gar nicht, ist in der neuen Sscanf Version erst erschienen ![]()
Das ist natürlich noch praktischer habe es mir gerade angeschaut, schreibe es dann einfach so:
sscanf(Query, "p<|>e<is[24]s[64]iddd>",PlayerInfo[playerid]);
mfg. ![]()
Probiere mal den Code aus:
ApplyAnimation(playerid, "PED", "IDLE_CHAT", 4.0, 1, 0, 0, 1, 1);
mfg. ![]()
enum struktur postest
Entscheidender wäre allerdings die Tabellen Struktur von seiner MySQL-Tabelle ![]()
Wozu dienen die ` ?
Es sind Hash Codes, sie dienen zur Verschlüsselung der Daten und machen sie so vor "Hackern" sicher.
http://de.wikipedia.org/wiki/Hashfunktion
Danke
Jetzt müsste ich nur noch wissen, wie man das mit der eindeutigen User-ID macht.
Gruss
Vince
Dazu erstellst du eine neue Spalte in deiner MySQL-Tabelle und nennst diese id, id = Integer und klicke auf den Haken bei Auto_Increment, damit die Zahl für jeden neuen Eintrag hoch geht ![]()
und dann kannst du damit arbeiten:
$id = mysql_query("SELECT id FROM `$tbl_name` WHERE username='$username' and password_md5='$password'");
so und jetzt kannst du immer id verwenden, sprich sowas:
$sql="SELECT * FROM $tbl_name WHERE id='$id'";
mfg. ![]()
Kaliber das wäre aber auch nicht gerade die perfekte Lösung wenn er bei ertrinken gekickt wird
Bei deinem Code passiert das selbe ![]()
IPrototypeI
Nunja, das ist aber auch nur teilweise gut, denn wenn einer mit N00bbeit z.B. F3 1x Drückt stirbt er auch und das könntest du mit einem Timer nicht bemerken ![]()
Alles anzeigen
new Float:pHealthFake[MAX_PLAYERS];
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid != INVALID_PLAYER_ID)
{
if(Spieler[killerid][AdminLevel] == 0)
{
if(GetPlayerWeapon(killerid)!=reason)
{
GetPlayerHealth(playerid,pHealthFake[playerid]);
if(pHealthFake[playerid]>0)
{
Kick(playerid);
}
}
}
}
return 1;
}
Bittesehr
Was für ein Blödsinn ![]()
Der Callback OnPlayerDeath wird nur dann aufgerufen, wenn ein Spieler ein Leben von 0 hat, also ist GetPlayerHealth(playerid,pHealthFake[playerid]);
if(pHealthFake[playerid]>0)
totaler Quatsch ![]()
Probiere es doch einfach mal so:
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid == playerid) Kick(playerid); //Das ist ein nicht richtiger Kill, er würde hier auch gekickt werden, wenn er von einer Klippe springt oder sich im Wasser ertränkt...
return 1;
}
Unteranderem tauchen dann nicht mehr fragen auf wie "Suche gutes GF Script" dann haben die Leute alles direkt in einer Liste und können sich diese Scripts in Ruhe anschauen.
Ehm...und was ist das: [ LISTE ] Aller Gamemodes
mfg. ![]()
Mach deine Augen auf ob mir jemand den Befehl macht ich versteh das nicht.....
Mach deine Augen selber auf, lPrototypel war doch so freundlich:
ocmd:faster(playerid)
{
if(playerspeed == false){
morespeed = SetTimerEx("test",1000,true,"i",playerid);
playerspeed = true;
SendClientMessage(playerid,-1,"Der Speedboost ist an");
}else{
playerspeed = false;
SendClientMessage(playerid,-1,"Der Speedboost ist aus");
}
return 1;
}
Function test(playerid)
{
new Float:Pos[3];
if(playerspeed){
GetPlayerVelocity(playerid,Pos[0],Pos[1],Pos[2]);
SetPlayerVelocity(playerid,floatmul(Pos[0],10.0),floatmul(Pos[1],10.0),Pos[2]);
SetPlayerHealth(playerid,100);
}else {
KillTimer(morespeed);
}
return 1;
}
mfg. ![]()

Gleich habe ich die Antwort...
Nein doch nicht
Poste mal ein bisschen Code ![]()
mfg. ![]()
Schau doch einfach mal im Showroom das ist ja fast das selbe ![]()
Ich bin gegen so eine Datenbank...ist ja okay, wenn man sich durch Beiträge inspirieren lässt, aber C&P nur noch finde ich irgendwie blöd ![]()
mfg. ![]()
Darauf warte ich aber schon 1-2 Wochen
Dann ist das halt so ![]()
Wenn mich nicht alles täuscht gibt es eine Funktion im Browser wo ihr euren gespeicherten Passwörter nachschauen könnt ![]()
und wenn ihr die Admins aufmerksam machen wollt, macht z.B. sowas: @Blackace
Jetzt wird sich Blackace wenn er online kommt sich das hier anschauen ![]()
mfg. ![]()
Darf ich das
Nein, Multiaccount ist strengstens verboten !
Du musst warten bis ein Administrator online kommt und dir dein Kennwort mitteilt ![]()
mfg. ![]()