Beiträge von RedDragon
-
-
Es geht leichter.
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/eis", cmdtext, true, 10) == 0)
{
for(new i = 0; i < MAX_VEHICLES; i++)
{
if(GetVehicleModel(i) == 423) // Mr. Whoopie
{
new Float:vX, Float:vY, Float:yZ;
GetVehiclePos(i, vX,vY,vZ);
if(IsPlayerInRangeOfPoint(playerid, 5.0, vX, vY, vZ) == 1)
{
SendClientMessage(playerid,0x05FF00FF, "Eis gekauft.");
// Was weiter passieren soll...
return 1;
}
}
}
SendClientMessage(playerid,0xFF0000FF, "Es ist kein Eiswagen in der Nähe.");
return 1;
}
return 0;
} -
SetPlayerRaceCheckpoint(playerid, type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, Float:size)
Für "type" 3 einsetzen, um Flugzeug-Checkpoints zu erstellen.
-
wie soll denn der server jemand geld geben der nicht online ist?
Klingt jetzt komisch, aber das tut er er sendet jedem SpielerSlot 100$, ob das Geld auch ankommt ist eine andere Frage.
-
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp("/sp",cmdtext,true) == 0)
{
status4 = 1;
GetPlayerPos(playerid,SaveX[playerid],SaveY[playerid],SaveZ[playerid]);
SendClientMessage(playerid,COLOR_GREEN,"Your Posesition has been saved! To load use /lp");
GetPlayerFacingAngle(playerid,SaveR[playerid]);
return 1;
}if(strcmp("/lp",cmdtext,true) == 0)
{
if(status4 == 1)
{
SetPlayerPos(playerid,SaveX[playerid],SaveY[playerid],SaveZ[playerid]);
SetPlayerFacingAngle(playerid,SaveR[playerid]);
new car = GetPlayerVehicleID(playerid);
SetVehiclePos(car, SaveX[playerid],SaveY[playerid],SaveZ[playerid]);
PutPlayerInVehicle(playerid,car,0);
TogglePlayerControllable(playerid,0);
SetTimerEx("Control1", 1000, 0, "i",playerid);
}
return 1;
}
return 0;
}forward Control1(playerid);
public Control1(playerid)
{
TogglePlayerControllable(playerid, 1);
return 1;
} -
Das ist überhaupt nicht unnötig, damit kann man dem Server ne Menge "Stress" ersparen. Zum Beispiel wenn du jedem Spieler 100$ geben willst, macht es Sinn nur denen zu geben, die auch connected sind.
-
Tja wenn es so einfach wäre, aber Spectaten ist nicht Beifahrer sein, [...]
Natürlich, Spectaten ist so gut wie dasselbe wie Beifahrer sein, der Beifahrer sieht ja im Normalfall das Fahrzeug wie es vom Fahrer gelenkt wird... Und ich finde meine Lösung ist da deutlich einfacher als irgendwelche Objekte an ein Fahrzeug zu heften...
-
Ich kann dir sagen wie du es selber scripten kannst, ist sehr einfach.
Wenn man G drückt, dann prüfe, ob sich in der Nähe des Spielers ein Cargobob befindet, wenn ja soll man den Cargobob spectaten. Wenn man wieder aussteigt sollte man dann noch zum Cargobob teleportiert werden.
-
Was soll er den machen? Das sind gewünschte Sachen von User, wie oben ganz oben beschrieben sind.
Stimmt, dass man mehrfarbige Nachrichten haben kann, ist das einzige was SA-Mp zur ultimativen Perfektion gefehlt hat, mal ganz im Ernst.
-
Ich find Kye sollte sich mal um's Wesentliche kümmern und nicht so unnötiges machen, ich mein verschiedene Farben in einer Nachricht? War das jetzt so wichtig? o_O
-
Vielleicht macht es ja einen Unterschied wenn du folgendes machst:
Attach3DTextLabelToVehicle(Text3D:label[i], i, 0.0, 0.0, 1.0);
ändern in:
Attach3DTextLabelToVehicle(label[i], i, 0.0, 0.0, 1.0); -
Um den Spawn eines Spielers zu verhindern kannst du folgendes machen:
public OnPlayerRequestSpawn(playerid) // Wenn jemand auf den "Spawn"-Button drückt...
{
if(!IsPlayerAdmin(playerid)) // falls der Spieler kein Admin ist...
{
SendClientMessage(playerid,COLOR_GREEN,"Du bist kein Admin und darfst nicht spawnen!");
return 0; // Spawn nicht gestatten.
}
return 1;
} -
Dieser Bug, dass Objekte buggen kann auftreten, wenn zuviele Objekte aneinander dran sind...
-
Versuch's mal so:
new ns[5], Text3D:label[MAX_VEHICLES];
for(new i = 0; i<MAX_VEHICLES; i++)
{
format(ns, sizeof(ns), "%d", i);
label[i] = Create3DTextLabel(ns, COLOR_RED, 0.0, 0.0, 0.0, 25.0, 0, 0);
Attach3DTextLabelToVehicle(Text3D:label[i], i, 0.0, 0.0, 1.0);
} -
Was du machen könntest: Anstatt SendDeathMessage, das per Textdraw zu machen wer wen tötet, und dann die Textdraw nur Admins anzeigen lassen.
-
Mit deiner if fragst du ab, ob jemand 100 Leben oder mehr und gleichzeitig weniger als 0 Leben hat oder -1 Leben hat, was nicht möglich ist. Man kann maximal 100 Leben haben. Bei der Variable Heal sind nur Werte von 0.0 bis 100.0 möglich.
-
Nein, ist leider nicht möglich, die können nur an alle gesendet werden.
-
Man gibt /repair ein, wird gefreezt und 3 Sekunden später wird man entfreezt und das Auto repariert.
#define rot 0xFF0000FF
#define blau 0x66FFCCpublic OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/repair", cmdtext, true, 10) == 0)
{
if(GetPlayerVehicleSeat(playerid) == 0)
{
TogglePlayerControllable(playerid,0);
SetTimerEx("Reparieren",3000,0, "i",playerid);
return 1;
}
return SendClientMessage(playerid,rot,"Du musst als Fahrer in einem Fahrzeug sitzen.");
}
return 0;
}forward Reparieren(playerid);
public Reparieren(playerid)
{
TogglePlayerControllable(playerid,1);
if(IsPlayerConnected(playerid) == 1 && GetPlayerVehicleSeat(playerid) == 0)
{
RepairVehicle(GetPlayerVehicleID(playerid));
SendClientMessage(playerid, blau, "Fahrzeug repariert!");
}
} -
Zitat
Der Client (Spieler) kommuniziert mit dem Server, vereinfacht, indem er kleine Datenpakete verschickt, die Informationen wie seine Position, Bewegung oder aktuell ausgerüstete Waffe enthalten. Der Server verschickt die Daten dann weiter an alle anderen Clients, so entsteht die Synchronisation --> Alle sehen dasselbe.
Jedesmal wenn der Server eines dieser Datenpakete empfängt, wird OnPlayerUpdate ausgeführt, also jedesmal wenn der Client den Server über seinen aktuellen Status informiert. Dies passiert sehr (!) oft, daher solltest du, wie KornChief schon gesagt hat, nicht viel Code in diesem Callback ausführen lassen.
Was lernen wir daraus? OnPlayerUpdate wird sehr oft in kurzer Zeit ausgeführt!!! Diese public ist nur mit Vorsicht zu benutzen.
-
Mach doch einfach:
Damit wird bei jedem Einsteigen in ein Fahrzeug wieder geprüft.
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_ONFOOT)
{
Motorschaden(playerid);
}
return 1;
}