Hi,
wie kann ich machen, dass bei einen DM GM nach einer bestimmten Anzahl nachdem man gekillt wurde wo anders spawnt als normal?
Mfg Dru
Hi,
wie kann ich machen, dass bei einen DM GM nach einer bestimmten Anzahl nachdem man gekillt wurde wo anders spawnt als normal?
Mfg Dru
probier es so ka obs richtig ist (aus dem kopf)
new kills[MAX_PLAYERS];
//OnPlayerDeath
kills[killerid] +=1;
//Dann halt abfrage
if(kills[playerid] >=3)
{
//Blabla SetPlayerPos text oder so :D
Ich denke es sollte gehen
kills[killerid] +=1; das kannst du auch so schreiben kills[killerid] ++;
Wo muss ich es genau und wie einfügen?
#include <a_samp>
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
#else
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
#endif
public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnPlayerConnect(playerid)
{
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
public OnPlayerSpawn(playerid)
{
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
public OnPlayerPrivmsg(playerid, recieverid, text[])
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}
public OnPlayerInfoChange(playerid)
{
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}
public OnRconCommand(cmd[])
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
#include <a_samp>
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
#if defined FILTERSCRIPT
new kills[MAX_PLAYERS];
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
#else
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
#endif
public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnPlayerConnect(playerid)
{
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
public OnPlayerSpawn(playerid)
{
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
kills[killerid] +=1;
if(kills[playerid] >=3)
{
//blabla
}
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
public OnPlayerPrivmsg(playerid, recieverid, text[])
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}
public OnPlayerInfoChange(playerid)
{
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}
public OnRconCommand(cmd[])
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
new kills[MAX_PLAYERS]; ganz oben
und das andere bei OnPlayerDeath rein
Was is da falsch?
Genau wie es da steht hab ich es drin:
...
public OnPlayerDeath(playerid, killerid, reason)
{
kills[killerid] +=1;
if(kills[playerid] >=3)
//blabla
}
SendClientMessage(playerid, rot, "Du wurdest gekillt!");
return 1;
}
...
public OnPlayerDeath(playerid, killerid, reason)
{
kills[killerid] ++;
if(kills[playerid] >=3)
{ //Die Klammer hat gefehlt ;)
//blabla
}
SendClientMessage(playerid, rot, "Du wurdest gekillt!");
return 1;
}
Muss ich dann Setplayerspawn oder was anderes benutzen?
nein SetPlayerPos(playerid,x,y,z);
SetPlayerPos in OnPlayerDeath, würde ich nicht empfehlen. Dein
kills[playerid]++;
normal in OnPlayerDeath,
deine Abfrage
if(kills[playerid] == 3) // Warum > wenn man es in dieser Klammer wieder zurücksetzt? Ein == reicht dort
{
// SetPlayerPos ...
kills[playerid] = 0;
}
in OnPlayerSpawn
das hier kann ja auch in OnPlayerDeath rein if(kills[playerid] == 3) // Warum > wenn man es in dieser Klammer wieder zurücksetzt? Ein == reicht dort
{
// SetPlayerPos ...
kills[playerid] = 0;
}
wieso soll das in OnPlayerSpawn rein
Ich habe die Erfahrung gemacht, dass dies Timeouts provoziert. Bei allen meinen gestestetn Sachen bin ich bei einem SetPlayerPos in einem OnPlayerDeath nicht immer, aber jedes 2. oder spätestens 3. mal gecrasht, auch bei einem "leeren" Script, es lag also nicht an dem Gamemode...
Mir ist es persönlich egal, wo er es reinmacht, ich wollte ihn nur darauf hinweisen, allerdings frage ich mich, was es für einen Sinn macht gleich bei OnPlayerDeath (wird noch bei der "Todesanimation" aufgerufen) SetPlayerPos zu verwenden... ergibt für mich keinen Sinn