http://forum.sa-mp.com/showthread.php?t=273529
[ SCRIPTING ] Race Checkpoint(s) [Für Anfänger]
Siehe auch: http://lmgtfy.com/?q=tutorial+samp+races - Google ist dein Freund.
http://forum.sa-mp.com/showthread.php?t=273529
[ SCRIPTING ] Race Checkpoint(s) [Für Anfänger]
Siehe auch: http://lmgtfy.com/?q=tutorial+samp+races - Google ist dein Freund.
Du hast nicht ernsthaft einen Timer mit 1 Millisekunde erstellt???
Alle:SetTimer("ScanTimer",1,1);
zu:
SetTimer("ScanTimer",1000,1);
reicht völlig, von mir aus auch 500ms, weniger ist unnötig, wenn man bedenkt, dass die Reaktionszeit des Menschen im Durchschnitt bei 1 Sekunde (1000ms) liegt. Da würde ich lieber den Radius etwas größer machen. Aber einen 1ms Timer brennt deine CPU durch.
LookForAReasonToPause()
{
new x=0;
while(x!=MAX_PLAYERS)
{
if(IsPlayerInRangeOfPoint(x,2.0,2051.5762,-2285.0776,13.5513))
{
return 1;
}
x++;
}
return 0;
}
switch(zaehler)
{
case 0: farbe = 0x00000000;
case 1: farbe = 0x00000001;
case 2: farbe = 0x00000002;
case 3: farbe = 0x00000003;
case 4: farbe = 0x00000004;
case 5: farbe = 0x00000005;
case 6: farbe = 0x00000006;
case 7: farbe = 0x00000007;
case 8: farbe = 0x00000008;
case 9: farbe = 0x00000009;
case 10: farbe = 0x0000000A;
case 11: farbe = 0x0000000B;
case 12: farbe = 0x0000000C;
case 13: farbe = 0x0000000D;
case 14: farbe = 0x0000000E;
case 15: farbe = 0x0000000F;
case 16: farbe = 0x00000010;
case 17: farbe = 0x00000011;
//usw...
case 255: farbe = 0x000000FF;
}
Oder eben so wie Sharpadox: geschrieben hat, da haste die Funktion die dir das berechnet. Wenn du das nicht verstehst, nimm den switch.
Timer nehmen (35ms damit es flüssig ist) und das Alpha Level der Farbe ändern.
Von 0x00000000 (Transparenz) bis 0x000000FF (Schwarz).
Das wären 256 verschiedene Transparenzstufen, die kannst du entweder mit einem switch-case aufrufen, oder du bastelst Dir eine Funktion die das berechnen kann. Einfacher ist der switch alle mal, ist halt aufwändig alle 256 durchzugehen.
Kann man einen Bot erst starten wenn der spieler in der nähe ist ?
Ja.
Timer erstellen
Durch alle Spieler loopen
Wenn ein Spieler in der Area ist den Bot connecten lassen, die schleife beenden und den Timer killen.
Trotzdem bleibt der parameter "playerid" in sscanf ein u und kein d
Das ist falsch. Du kannst mit u zwar die playerid bekommen, genausogut kannst du sie aber mit d oder i bekommen.
Um das klarzustellen:
d = Funktioniert wenn die ID eingegeben wird.
i = Funktioniert wenn die ID eingegeben wird.
u = Funktioniert wenn die ID oder der Name eingegeben wird.
Wenn er nicht möchte, dass der Name eingegeben werden kann, dann muss er sogar d/i benutzen.
Je nach dem was gewollt ist.
playerid ist in sscanf also nicht zwangsläufig mit u zu definieren.
Um deine Frage zu beantworten:
new pID, time, reason[30], String[128];
//Und hier:
if(sscanf(params,"dds[30]",pID,time,reason)){
reason muss ein Array sein, da es eine Zeichenkette ist.
An die Posts oben: Traurig, dass keiner annähernd versucht hat die Frage zu beantworten. Wenn er es So machen will, dann lasst es ihn doch so machen. Es hat vielleicht einen Grund!
Wenn ich frage warum meine Pizza im Ofen verbrannt ist, und die Antwort "mach doch Nudeln" bekomme, was hilft mir das bezüglich meiner Frage? Nichts.
@Post oben: Das reicht nicht immer, je nach Serverkonfiguration müssen noch mehr Dinge eingestellt werden.
Siehe hier:
Streamer Plugin Streamrate
Das war die selbe Frage. ![]()
Eckige Klammern geben Sterne aus.
Runde Klammern geben eckige Klammern aus.
Also nutze ( ) für [ ].
if(AbfrageName == "Flash")
zu:
if(!strcmp(AbfrageName, "Flash"))
Strings werden mit strcmp verglichen. Es gibt 0 (!) zurück, wenn die Strings gleich sind.
Das debuggen ergibt nichts, stimmt eigentlich alles mit dem stock IsObjectInArea?
Debuggen sollte schon helfen, wenn du wirklich alles prüfst.
Ja, das stimmt.
Es wird dann wohl irgendwo eine Variable falsch übergeben. Da hilft nur debuggen und suchen.
if(IsObjectInArea(oInfo[playerid][object][objectID], -2095.3132, -2012.2899, -103.7980, -266.0243))
zu:
if(IsObjectInArea(oInfo[playerid][object][objectID], -2095.3132, -2012.2899, -266.0243, -103.7980))
-266 ist kleiner als -103.
nutz doch die streamer funktion
*facepalm*
Weißt du was ein Streamer macht? ...
Cydia:
Das sollte dir helfen: http://forum.sa-mp.com/showthread.php?t=250174
Wenn es Checkpoints gibt, die nicht durch die Map fallen, dann sind die die einzige Chance.
Das sollte Dir helfen:
Ein Browser für alle Sprites.
http://forum.sa-mp.com/showthread.php?t=291722
In dem Fall egal.
Aber Achtung:
Wie du es hast ist es falsch:
format(query,sizeof query,"UPDATE ´Accounts` SET UserLevel='%i' WHERE UserName='%s'",
Richtig:
format(query,sizeof query,"UPDATE ´Accounts´ SET UserLevel='%i' WHERE UserName='%s'",
Hier steht wann es nicht egal ist:
http://dev.mysql.com/doc/refman/5.1/de/legal-names.html
So wie ich es geschrieben habe. Wenn du das nicht verstehst ist das schlecht.
Hier die "Idiotensichere Variante":
forward oamttor ();
zu:
forward oamttor_Timer();
SetTimer("oamttor",5000,false);
zu:
SetTimer("oamttor_Timer",5000,false);
public oamttor ()
public oamttor ()
{
MoveObject(oamttor,925.29999,-1220.80005,19.5,0,0,90);
return 1;
}
zu:
public oamttor_Timer()
public oamttor_Timer()
{
MoveObject(oamttor,925.29999,-1220.80005,19.5,0,0,90);
return 1;
}
Was oben steht jeweils mit dem drunter ersetzen.
Ja das geht.
1) Du zeigst dem Spieler den Dialog der Regeln an der Stelle des Register Dialogs an, den Register Dialog entfernst du an seiner jetzigen Stelle.
2) Bei OnDialogResponse fragst du dann ab:
if(dialogid == RegelnDialogID)
{
if(response)
{
//Er hat OK gedrückt, hier zeigst du dann den Register Dialog an (das was du zuvor weg gemacht hast kommt hier hin).
}
else
{
//Er hat nicht OK gedrückt, du kickst Ihn.
}
}
Benenne dein Objekt um. Es hat den selben Namen wie der Timer.
new oamttor_objekt;
oamttor_objekt = CreateObject(971, 925.29999, -1220.80005, 19.5, 0, 0, 90);
MoveObject(oamttor_objekt,971, 925.29999, -1220.80005,09.5,0,0,90);
MoveObject(oamttor_objekt,925.29999,-1220.80005,19.5,0,0,90);