Ich werde aus deinem Code nicht schlauer?
Du setzt an Stelle der x-Koordinate ein "i", welches von der Schleife ist.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Kleine frage:
Wie kann ich mehreren Objekten ( wände ) eine texture geben ohne jede wand einzelt zu setzen.Ich weiß zwar wie man texturen ändert aber leider nicht wie mehrer auf einmal z.b von 20 Wänden. Kann mir wer das erklären?
Entweder hier oder per pn oder per skype ( kleinkiko09 )
Thx im vorraus
-
Ich werde aus deinem Code nicht schlauer?
Du setzt an Stelle der x-Koordinate ein "i", welches von der Schleife ist.
das i übernimmt doch die Koordinaten der Mülltonnen? Oder ist die Schleife falsch? -
Kann man einen Bot erst starten wenn der spieler in der nähe ist ?
-
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. -
Erklär es mir bitte genauer: ich habe gerade etwas gebastelt nur das ist ürgendwie fail er startet nicht. #include <a_npc>
new gStoppedForTraffic = 0;
public ScanTimer();
#define SCAN_RADIUS 5.0
main(){}
public OnNPCModeInit()
{
SetTimer("ScanTimer",1,1);
}LookForAReasonToPause()
{
new x=0;while(x!=MAX_PLAYERS) {
if(IsPlayerInRangeOfPoint(x,2.0,2051.5762,-2285.0776,13.5513)) {
StartPlayback();
return 1;
}
x++;
}
return 0;
}//------------------------------------------
public ScanTimer()
{new ReasonToPause = LookForAReasonToPause();
if(ReasonToPause && !gStoppedForTraffic)
{
StartPlayback();
gStoppedForTraffic = 1;
}
else if(!ReasonToPause && gStoppedForTraffic)
{
PauseRecordingPlayback();
//StartPlayback();
gStoppedForTraffic = 0;
}
}//------------------------------------------
StartPlayback()
{
StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER,"neuerversuch");
gStoppedForTraffic = 0;
}//------------------------------------------
public OnRecordingPlaybackEnd()
{
// PauseRecordingPlayback();
SetTimer("ScanTimer",1,1);
}//------------------------------------------
public OnNPCEnterVehicle(vehicleid, seatid)
{
//StartPlayback();
PauseRecordingPlayback();
}//------------------------------------------
public OnNPCExitVehicle()
{
StopRecordingPlayback();
} -
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;
} -
es funzuniert nun. Hatte Resume........ vergessen
-
Gibt es eine Möglichkeit, die größe eines Arrays zu ändern.
Also ich erstelle ein Array:
new Array[MAX_PLAYERS][50];
nun möchte ich an einer anderen Stelle die größe ändern zu:
new Array[MAX_PLAYERS][25];
Dabei dürfen die Werte die bereits darin gespeichert sind aber nicht verloren gehen, also wenn ich was in Array[MAX_PLAYERS][0] - Array[MAX_PLAYERS][24] gespeichert habe, dürfen die Werte nicht verloren gehen. -
-
Simon: Ja, es gibt die Möglichkeit dazu. Die einzige Einschränkung ist, dass die Variable nicht beides mal "Array" heißen darf, das sollte aber klar sein.
Beispiel:
new Array1[MAX_PLAYERS][50];
new Array2[MAX_PLAYERS][25];
for(new i=0; i<MAX_PLAYERS; i++) for(new j=0; j<25; j++) Array2[i][j] = Array1[i][j];Das würde die ersten 25 Werte des Array1 für jeden Spieler in Array2 schreiben. Array2 wäre dann "voll".
Eine andere Methode ist mir nicht eingefallen, falls es eine bessere Möglichkeit gibt würde die mich auch interessieren.
-
Habs nun anders gelöst, ist zwar etwas doof, aber so wie ich es vorhatte würde es trotzdem nicht klappen.
Aber die Frage finde ich trotzdem weiterhin interessant, könnte man bestimmt irgentwo gut gebrauche.
Ich meinte ein bereits erstelles Array zu ändern. Oder auch einfach den Typ von einer Variablen zu ändern.Also das redefinieren von erstellten variabeln, ob typ, ob größe...
-
Ich meinte ein bereits erstelles Array zu ändern. Oder auch einfach den Typ von einer Variablen zu ändern.
Also das redefinieren von erstellten variabeln, ob typ, ob größe...
Nein, das ist (leider) nicht möglich. -
Hab mal ne kleine Frage, wie kann ich die Warnings los werden?
C:\Users\Syncid\Desktop\samp\pawno\include\streamer.inc(291) : warning 201: redefinition of constant/macro (symbol "OnPlayerConnect")
C:\Users\Syncid\Desktop\samp\pawno\include\streamer.inc(311) : warning 201: redefinition of constant/macro (symbol "OnPlayerDisconnect")Mir ist bewusst das OnPlayerConnect in der Streamer.inc neu definiert wird, bzw das sagt ja die Meldung aus ( oder? )
Ich verstehe jedoch nicht wie ich dies beheben kann, ist ein wenig seltsam -
Du könntest einfach versuchen die neuste streamer include zu verwenden.
Ansonsten vllt #pragma unused OnPlayerConnect
Ich weiß aber nicht ob das dabei funktionieren würde. -
Wie macht man am besten Fraktioncars?
-
am besten Dynamisch.
Dafür brauchst aber die grundlagen und sowas. -
Du könntest einfach versuchen die neuste streamer include zu verwenden.
Ansonsten vllt #pragma unused OnPlayerConnect
Ich weiß aber nicht ob das dabei funktionieren würde.Funktioniert leider nicht. Ausserdem nutze ich bereits die neuste inlcude und das neuste plugin
-
Funktioniert leider nicht. Ausserdem nutze ich bereits die neuste inlcude und das neuste plugin
Das was er geschrieben hat ist reiner bullshit der warning kommt daher das du ein define mit dem Namen OnPlayerConnect und OnPlayerDisconnect schon in deinem skript hast, also doppelt wo jeweils was anderes
definiert wird.
Beispiel wie dies entstehen kann
#define OnPlayerConnect 1
#define OnPlayerConnect 2Die Verwendung von #pragma unused macht daher kein sinn und bringt auch 0, da du #pragma unused bei dem warning
warning 203: symbol is never used: "hallo" nutzen kannst um somit den vllt nervenden warning zu entfernen.
jedoch kann man auch das keyword stock verwendennew stock hallo;
oder
new hallo;
#pragma unused hallo; -
Wie kann ich mehrere Objekten auf einmal eine neue texture geben? Weil ich habe keine lust bei ca 20+ Wänden immer oben im script: new wand1 ect zu machdn kann man das auch anders lösen?
Wie man einzelnen Wänden eine texture gibt weiß ich aber ich weiß nicht wie man mehreren eine Texture gibt ohne immer fürjede wand ein neues new macht
Freueich auf eine antwort m