Kannst mir da auch noch helfen ?
Da musst du sowas ungefähr machen:
#define MAX_MINES 100
enum e_Mines {
e_model,
Float:e__X,
Float:e__Y,
Float:e__Z
};
new mines[MAX_MINES][e_Mines],bool:mine_t[MAX_PLAYERS char];
ocmd:mine(playerid)
{
if(mine_t{playerid}) return SendClientMessage(playerid,-1,"Bitte warte einen kurzen Moment, bevor du die Nächste Mine erstellst!");
new m_idx = GetFreeMine();
if(m_idx == MAX_MINES) return SendClientMessage(playerid,-1,"Es wurde bereits die maximale Anzahl an Minen erstellt!");
new Float:p[4];
GetPlayerPos(playerid,p[0],p[1],p[2]),GetPlayerFacingAngle(playerid,p[3]);
const Float:distance = 0.75; //jetzt wäre die Bombe etwas weiter vorne
p[0] += (distance * floatsin(-p[3], degrees));
p[1] += (distance * floatcos(-p[3], degrees));
mine_t{playerid} = true;
mines[m_idx][e_model] = CreateObject(19602,p[0],p[1],p[2]-0.93,0,0,0);
mines[m_idx][e__X] = p[0],mines[m_idx][e__Y] = p[1],mines[m_idx][e__Z] = p[2];
ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.1,0,1,1,0,0,1);
SetTimerEx("@ta",1000*5,0,"i",playerid);
return 1;
}
@ta(i);@ta(i) return mine_t{i}=false;
//Du brauchst einen Timer (unter OnGameModeInit)
SetTimer("@Bomb",599,1);
//Dann irgendwo außerhalb von Callbacks..etc
@Bomb();@Bomb() {
for(new i; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i) || mine_t{i}) continue;
for(new b; b<MAX_MINES; b++) {
if(!mines[b][e_model]) continue;
if(IsPlayerInRangeOfPoint(i,2.5,mines[b][e__X],mines[b][e__Y],mines[b][e__Z])) { PlayerOnMine(i,b); break; }
}
}
return 1;
}
stock PlayerOnMine(playerid, b) {
//Hier ist halt die Explosion:
CreateExplosion(mines[b][e__X], mines[b][e__Y], mines[b][e__Z], 12, 10.0);
DestroyObject(mines[b][e_model]),mines[b][e_model]=0;
SendClientMessage(playerid,-1,"BOOOOOOOOM!");
return 1;
}
stock GetFreeMine() {
for(new i; i<MAX_MINES; i++) if(!mines[i][e_model]) return i;
return MAX_MINES;
}
mfg. ![]()
//Edit: Kleinigkeiten
Edit²:
So würde er aber schon beim erstellen der Mine, die Mine zum explodieren bringen
Ahaha danke, daran habe ich gar nicht gedacht #gefixxt ![]()